Skip to content

List View Component: Completion Report

Date: 2026-03-17 Branch: jmpicnic/list-view-management-620 Closes: management#620, management#565

New directories and files under src/components/canary/:

DirectoryFiles
atoms/grid/text/text-cell-display.tsx, text-cell-editor.tsx, index.ts, text.test.tsx, text.stories.tsx
atoms/grid/number/number-cell-display.tsx, number-cell-editor.tsx, index.ts, number.test.tsx, number.stories.tsx
atoms/grid/boolean/boolean-cell-display.tsx, boolean-cell-editor.tsx, index.ts, boolean.test.tsx, boolean.stories.tsx
atoms/grid/date/date-cell-display.tsx, date-cell-editor.tsx, index.ts, date.test.tsx, date.stories.tsx
atoms/grid/enum/enum-cell-display.tsx, enum-cell-editor.tsx, index.ts, enum.test.tsx, enum.stories.tsx
atoms/grid/memo/memo-cell-display.tsx, memo-cell-editor.tsx, memo-button-cell.tsx, create-memo-button-cell-editor.tsx, index.ts, memo.test.tsx, memo.stories.tsx
atoms/grid/color/color-cell-display.tsx, color-cell-editor.tsx, index.ts, color.test.tsx, color.stories.tsx
atoms/grid/action/action-cell-renderer.tsx, index.ts, action-cell-renderer.test.tsx, action-cell-renderer.stories.tsx
atoms/shared/formatters.ts
molecules/data-grid/data-grid.tsx, sort-menu-header.tsx, use-column-persistence.ts, index.ts, data-grid.test.tsx, data-grid.stories.tsx
organisms/shared/entity-data-grid/create-entity-data-grid.tsx, use-dirty-tracking.ts, index.ts, create-entity-data-grid.test.tsx, create-entity-data-grid.stories.tsx, use-dirty-tracking.test.ts
organisms/shared/entity-data-grid-shim/create-entity-data-grid-shim.tsx, index.ts, create-entity-data-grid-shim.test.tsx, create-entity-data-grid-shim.stories.tsx

New files under src/types/canary/:

  • pagination.tsPaginationData interface

New/modified files under src/styles/canary/:

  • ag-theme-arda.css — copied from root, with SortMenuHeader CSS classes appended

New files under src/canary-refactor/:

  • components/columnPresets.tsx — forked column definitions with canary atoms
  • components/ItemTableAGGrid.tsx — forked grid with canary DataGrid
  • components/ItemsPage.tsx — forked page with canary grid
  • components/ItemDetailPage.tsx — forked detail page wrapper
  • reference/items/items-grid.stories.tsx — updated to import from forked components
  • reference/items/item-detail.stories.tsx — updated to import from forked components

Files deleted:

  • src/components/canary/atoms/canary-placeholder/ (2 files)
  • src/components/canary/molecules/canary-placeholder/ (2 files)
  • src/components/canary/organisms/canary-placeholder/ (2 files)

Files modified outside canary directories:

  • src/canary.ts — barrel updated with all new exports, placeholders removed
  • src/types/canary.ts — added PaginationData export
  • eslint.config.mjs — added canary-to-extras boundary rule, canary AG Grid no-explicit-any relaxation, canary-refactor global ignore
  • tsconfig.json — excluded src/canary-refactor (uses @frontend/ alias)

Published Package (@arda-cards/design-system)

Section titled “Published Package (@arda-cards/design-system)”

New exports from canary entry point:

  • Cell atoms: TextCellDisplay, TextCellEditor, createTextCellEditor, NumberCellDisplay, NumberCellEditor, createNumberCellEditor, BooleanCellDisplay, BooleanCellEditor, createBooleanCellEditor, DateCellDisplay, DateCellEditor, createDateCellEditor, EnumCellDisplay, EnumCellEditor, createEnumCellEditor, MemoCellDisplay, MemoCellEditor, createMemoCellEditor, MemoButtonCell, createMemoButtonCellEditor, ColorCellDisplay, ColorCellEditor, createColorCellEditor, DEFAULT_COLOR_MAP, ActionCellRenderer
  • Molecule: DataGrid, GridImage, useColumnPersistence
  • Organisms: createEntityDataGrid, useDirtyTracking, createEntityDataGridShim
  • Types: PaginationData, ColorOption, RowAction, and all config/props/ref/handle types

Removed exports:

  • CanaryAtomPlaceholder, CanaryMoleculePlaceholder, CanaryOrganismPlaceholder

Section 2 — Components Replaced by Canary

Section titled “Section 2 — Components Replaced by Canary”
Vendored ComponentCanary ReplacementNotes
ArdaGrid<T>DataGrid<T> / createEntityDataGridShim<T>()Core grid infrastructure
SortMenuHeader (internal to ArdaGrid)SortMenuHeader (internal to DataGrid)Ported, same behavior
SelectAllHeaderComponentAG Grid native rowSelection configEliminated custom component
NotesCell / CardNotesCellMemoButtonCell + createMemoButtonCellEditor()Vendored-compatible pattern
ColorCellEditor (raw DOM class-based)ColorCellEditor (React forwardRef)React replacement
Color renderer (inline)ColorCellDisplayExtracted to atom
Simple text/number/boolean/date/enum renderers (inline)Canary {Type}CellDisplay atoms~15 columns migrated

Section 3 — Remaining Vendored Grid Components

Section titled “Section 3 — Remaining Vendored Grid Components”
ComponentRationale
9 Typeahead Cell Editors (Supplier, Unit, Type, SubType, UseCase, Facility, Department, Location, Sublocation)Domain-specific, requires API context (follow-up F1)
QuickActionsCellDomain-specific, requires kanban context (follow-up F2)
CardCountCellDomain-specific, requires lazy API fetch
itemsColumnDefs / itemsDefaultColDefForked into canary-refactor, not library
ItemTableAGGridForked into canary-refactor with hybrid canary+vendored imports
ItemsPage, ItemDetailPageForked into canary-refactor, page chrome retained vendored
ItemDetailsPanel, ItemFormPanelRetained vendored, not grid components
AppSidebar, AppHeader, SidebarProviderOut of scope (follow-up F4)

Section 4 — Features in Current Vendored Grid Not Supported in Canary

Section titled “Section 4 — Features in Current Vendored Grid Not Supported in Canary”
FeatureStatusReference
9 Typeahead cell editors (debounced API lookups)Out of scopeFollow-up F1
QuickActionsCell (kanban card operations)Out of scopeFollow-up F2
Draft lifecycle management (createDraftItem, auto-publish)Out of scopeFollow-up F3
Page chrome (AppSidebar, AppHeader, tabs, search)Out of scopeFollow-up F4
Image cell type (GridImage)Ported as utility, not as typed cell atomFollow-up F5
Currency/money cell type (formatCurrency)Not in scopeFollow-up F5
DateTime cell type (formatDateTime)Not in scopeFollow-up F5
Duration cell type (“N hours”)Not in scopeFollow-up F5
Multi-field rollup renderers (Classification, Location)Domain-specific, not generic

See Follow Up Projects and Column Definition Migration Map for full details.