feat: [2/n] Implement new Workflows List Table#1229
feat: [2/n] Implement new Workflows List Table#1229adhityamamallan merged 11 commits intocadence-workflow:masterfrom
Conversation
src/views/shared/workflows-list/config/workflows-list-columns.config.ts
Outdated
Show resolved
Hide resolved
280111b to
a2cac35
Compare
...red/workflows-list/helpers/__tests__/get-workflows-list-column-from-search-attribute.test.ts
Outdated
Show resolved
Hide resolved
bbd1b31 to
bf9a8b5
Compare
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
bf9a8b5 to
af431d6
Compare
src/views/domain-workflows/domain-workflows-list/domain-workflows-list.tsx
Show resolved
Hide resolved
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
There was a problem hiding this comment.
Pull request overview
Implements the new workflows list as a grid/table component with infinite-scroll pagination, and wires it into the domain workflows (default + archival) views via useListWorkflows.
Changes:
- Added
WorkflowsListgrid UI (header/rows/cells), scroll container styling, and footer infinite-scroll loader integration. - Introduced
getSearchAttributeValuehelper and updated column-generation/rendering to supportnullfor missing values (to enable placeholders). - Integrated
DomainWorkflowsListandDomainWorkflowsArchivalListwithuseListWorkflows, including loading/error states, plus added/updated unit tests and fixtures.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/views/shared/workflows-list/workflows-list.types.ts | Updates list component prop types (removes isLoading, adds pagination fetch state). |
| src/views/shared/workflows-list/workflows-list.tsx | Replaces placeholder with the new grid-based list UI and row linking + infinite scroll footer. |
| src/views/shared/workflows-list/workflows-list.styles.ts | Adds BaseUI styled components for grid layout, scrolling container, and placeholders. |
| src/views/shared/workflows-list/helpers/get-workflows-list-column-from-search-attribute.ts | Uses shared search-attribute value decoding and returns null for missing custom attributes. |
| src/views/shared/workflows-list/helpers/get-search-attribute-value.ts | New helper to decode/format search attribute payload values. |
| src/views/shared/workflows-list/helpers/tests/get-workflows-list-column-from-search-attribute.test.ts | Updates tests to use shared fixtures and to expect null when custom values are missing. |
| src/views/shared/workflows-list/helpers/tests/get-search-attribute-value.test.ts | Adds unit tests for decoding and missing-attribute behavior. |
| src/views/shared/workflows-list/config/workflows-list-columns.config.ts | Updates column renderers to return null for missing values and to use getSearchAttributeValue. |
| src/views/shared/workflows-list/tests/workflows-list.test.tsx | Adds component tests covering headers, rows, links, loader props, and null placeholder behavior. |
| src/views/shared/workflows-list/fixtures/mock-workflows-list-columns.ts | Adds reusable mock columns/column-config fixtures for tests. |
| src/views/domain-workflows/domain-workflows-list/domain-workflows-list.types.ts | Extends props to accept visibleColumns. |
| src/views/domain-workflows/domain-workflows-list/domain-workflows-list.tsx | Wires domain workflows list to useListWorkflows with loading/error handling and passes data into WorkflowsList. |
| src/views/domain-workflows/domain-workflows-list/tests/domain-workflows-list.test.tsx | Updates tests to cover loading and loaded states using MSW. |
| src/views/domain-workflows/domain-workflows-advanced/domain-workflows-advanced.tsx | Fetches visibleColumns via useWorkflowsListColumns and passes them into DomainWorkflowsList. |
| src/views/domain-workflows-archival/domain-workflows-archival.tsx | Fetches visibleColumns via useWorkflowsListColumns and passes them into archival list rendering. |
| src/views/domain-workflows-archival/domain-workflows-archival-list/domain-workflows-archival-list.types.ts | Extends props to accept visibleColumns. |
| src/views/domain-workflows-archival/domain-workflows-archival-list/domain-workflows-archival-list.tsx | Wires archival workflows list to useListWorkflows with loading/error handling and passes data into WorkflowsList. |
| src/views/domain-workflows-archival/domain-workflows-archival-list/tests/domain-workflows-archival-list.test.tsx | Updates tests to validate loaded state using MSW. |
Comments suppressed due to low confidence (1)
src/views/shared/workflows-list/config/workflows-list-columns.config.ts:103
- For datetime search-attribute columns, when the attribute is missing or unparseable
valueends up null and this code returns an empty string. That bypasses the table's "None" placeholder behavior (which is triggered bynull). Consider returningnullinstead whenvalueis null/empty or when parsing fails, so missing datetime values render consistently with other columns.
if (timestamp != null && !isNaN(timestamp)) {
return createElement(FormattedDate, { timestampMs: timestamp });
}
return String(value ?? '');
},
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| {hasWorkflows && | ||
| workflows.map((workflow, index) => ( | ||
| <styled.GridRow | ||
| key={`${workflow.workflowID}-${workflow.runID}-${index}`} |
There was a problem hiding this comment.
The React key includes index, which makes keys unstable if the list order changes (e.g., sorting/filter changes) and can cause unnecessary unmount/remount of rows. Prefer a stable unique key derived only from workflow identity (e.g., workflowID + runID).
| key={`${workflow.workflowID}-${workflow.runID}-${index}`} | |
| key={`${workflow.workflowID}-${workflow.runID}`} |
There was a problem hiding this comment.
Sorting/filter changes cause the entire table to re-render anyway, since new data is being loaded
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
...ws-archival/domain-workflows-archival-list/__tests__/domain-workflows-archival-list.test.tsx
Outdated
Show resolved
Hide resolved
...ws-archival/domain-workflows-archival-list/__tests__/domain-workflows-archival-list.test.tsx
Outdated
Show resolved
Hide resolved
src/views/domain-workflows/domain-workflows-list/__tests__/domain-workflows-list.test.tsx
Outdated
Show resolved
Hide resolved
Signed-off-by: Adhitya Mamallan <adhitya.mamallan@uber.com>
Code Review ✅ Approved 6 resolved / 6 findingsImplements the new Workflows List Table component with comprehensive fixes addressing datetime matching, test data alignment, null/undefined placeholder handling, loading state propagation, and array iteration logic. All identified issues have been resolved. ✅ 6 resolved✅ Bug: DATETIME type matcher will never match — wrong string value
✅ Bug: Test expects old DEFAULT_WORKFLOWS_LIST_COLUMN_WIDTH value
✅ Edge Case: Null placeholder not tested in new WorkflowsList tests
✅ Quality:
|
| Auto-apply | Compact |
|
|
Was this helpful? React with 👍 / 👎 | Gitar
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
WorkflowsListcomponent with grid layout, horizontal scrolling, and infinite scroll paginationDomainWorkflowsListandDomainWorkflowsArchivalListtouseListWorkflowshookTest plan
Unit tests + ran locally.
On narrow screens + a preview of the placeholder when value is absent
Screen.Recording.2026-04-01.at.15.12.31.mov