Skip to Content
StyleguideTemplatesRecord detail

Record detail

One record, opened from a list: purchase order PO-2041. The field layout follows CollectionForm / VForm: a two-column grid of half- and full-width fields with divider group headers. Around it sit the pieces that make a detail screen work: line items, files, the approval chain, a summary and the activity history. Scroll inside each frame to see the whole page.

What generates this

buildpad add collection-form gives you CollectionForm, which renders the field grid from your schema. The rest of this screen (header, line items, approval chain, context column) is a composition of the parts listed under Built from.

Editing, pending approval

PO-2041 as Daniel submitted it, waiting on Priya’s budget-owner review (step 2 of the Stepper). A default Request changes button and the ember Approve button sit next to an overflow Menu; its Delete order item opens the confirmation Modal. Edit quantities or prices and the line amounts and totals update.

New record

The create route that buildpad add content-routes generates: a blank CollectionForm with required asterisks and placeholders, one empty line item, an empty attachments drop area, an empty activity card and a sticky footer with Cancel, Save draft and the ember Create order.

Loading

The first paint while the record loads. Skeleton blocks take the shape of the header, the summary strip, the form grid and the activity column, so nothing jumps when the data arrives.

Approved, read-only

After approval the order is locked. A green Alert explains why. Fields become label–value pairs in the same half / full grid, the line items become a plain table, and every approval step is complete.

Unsaved changes and validation

Edits that fail validation. A red Alert lists each problem with a link to its field. Invalid fields show their error and a red left rule. Edited fields show an ember rule, as in VForm.css. Approve is disabled until the form is valid. The sticky save bar keeps Discard and the ink Save changes in view.

Built from

  • App shell with active="/orders" and title="PO-2041" in the header breadcrumb.
  • Page headers: Breadcrumbs, a Title order={2}, a status Badge from ORDER_STATUS and a meta line with an Avatar.
  • Forms: Select, TextInput, NumberInput (prefix="$", thousandSeparator) and Textarea in the VForm grid. The grid is [start] 1fr [half] 1fr [full], and Divider label="Delivery" is a group header.
  • Table in a Card.Section, with inline NumberInput hideControls cells and a <dl> for the totals.
  • Stepper with orientation="vertical" for the approval chain, and Timeline with avatar bullets for activity.
  • Banners: the green and red Alerts. Sticky footers: the save bar and the create footer.
  • Skeleton for the loading state.
  • Overlays: the overflow Menu, the delete Modal and Tooltips on the file actions.

Two fields are stand-ins here. Due date is a TextInput with a calendar icon and the drop area is a dashed box (--ds-gray-300 on --ds-gray-50). In your app, CollectionForm renders date fields with the datetime interface (the @mantine/dates pickers on Inputs) and file fields with the upload interface, a @mantine/dropzone drag-and-drop zone. The edited and invalid rules come from VForm.css: --ds-primary for edited fields and --ds-danger for invalid ones.

Last updated on