Skip to content

feat(identity): render drivers, customers, vehicles and places through the shared identity components - #120

Merged
roncodes merged 2 commits into
release/v0.4.25from
feat/shared-identity-components
Oct 9, 2026
Merged

roncodes merged 2 commits into
release/v0.4.25from
feat/shared-identity-components

Conversation

@roncodes

@roncodes roncodes commented Oct 9, 2026

Copy link
Copy Markdown
Member

What change does this PR introduce?

Phase one of the Storefront UX overhaul: every driver, customer, vehicle and place in Storefront now renders through the shared resource identity components instead of hand-rolled markup or the legacy driver-name and media-name cells. The descriptors and typed wrappers come from @fleetbase/fleetops-data (fleetbase/fleetops-data#86), the generic components from @fleetbase/ember-ui, so nothing here loads the FleetOps engine; clicking a driver or place loads it on demand.

Tables

  • Orders and network orders: the customer, pickup, dropoff and driver columns are table/cell/identity cells typed customer, place and driver. Each reads the loaded relation and otherwise builds an identity stub from the row's customer_name / pickupName / driver_name, so a row renders the name with the right tile even before the relation is loaded; the driver stub loads the driver by uuid on demand. Clicking a customer opens the Storefront customer page (a name-only stub opens nothing); clicking a driver or place opens its FleetOps panel. Empty cells say "No customer" / "No driver assigned" as before.
  • Customers and network customers: the name column is a customer identity cell that keeps opening the Storefront customer page or panel.

Pills replace the avatar-plus-name blocks in the order details and fulfillment panels, the order customer panel, the incoming-order modal, the orders and customers dashboard widgets, and the food-truck cards (<Vehicle::Pill>). The storefront-order-person--compact, __avatar, __meta, storefront-customer-cell and storefront-customer-avatar styles they replaced are removed; the store block keeps storefront-order-person and __name.

Select options: the assign-driver and order-ready-assign-driver modals, the food-truck vehicle select, the push-notification customer select, the alert user selects in store settings and network settings, and the category selects in the import-products and create-network-category modals now render <SelectOption::…> rows and compact selected items.

Also fixes the ru-ru.yaml entry from c8af413 that split a two-line value and broke the translations build.

Why was this change needed?

Storefront listed drivers, customers and places with plain text or hand-rolled avatars that differed from FleetOps and from each other, with no status dots, no hover summaries and no way to open the record. Reusing the shared identity components gives one rendering across the console, which the card and detail redesigns in the next phases build on.

Other information

Depends on fleetbase/fleetops-data#86 (and fleetbase/fleetops#379 for FleetOps itself). package.json now asks for fleetops-data ^0.2.3; bump to the release that ships #86 when it is published.

Validation, run locally against the linked fleetops-data branch:

pnpm run lint                 # clean (eslint, template-lint, stylelint, intl)
pnpm run build                # in progress at PR open; result posted in a follow-up comment
pnpm exec ember test          # see the follow-up comment: the dummy app does not boot under `ember test` on this branch or on release/v0.4.25 in this workspace, so the suite runs against a separate `ember build --environment=test` bundle

Tests added or updated: controller tests asserting the identity columns, their resource resolution and stub fallbacks, and the customer navigation; a rendering test proving the shared descriptors, pills and select options resolve inside Storefront; the order details test now checks the customer and driver pills (fallback and loaded); the customers widget test checks the pill.

No API, fleetbase/postman or fleetbase/fleetops.io documentation impact: the UI changes are internal to the console.

…translations build again

c8af413 inserted the split-tips label between the two lines of the
enable-multi-cart-checkout value, which js-yaml reads as a bad mapping entry
and the engine build fails.
…h the shared identity cells, pills and select options

The orders, network orders, customers and network customers tables use
table/cell/identity typed for the shared fleetops-data descriptors, reading
the loaded relation or an identity stub named after the row, so a row shows
the right tile and name before the relation loads. Clicking a customer opens
the storefront customer page; a driver or place opens its FleetOps panel,
loading the engine only then.

The order details, fulfillment and customer panels, the incoming-order
modal, the orders and customers widgets and the food-truck cards use
Customer::Pill, Driver::Pill and Vehicle::Pill in place of hand-rolled
avatar blocks, whose styles are removed. Driver, vehicle, customer, user and
category selects render SelectOption rows with compact selected items.

The fleetops-data range moves to ^0.2.3, the version the workspace links.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant