@shipfox/client-workflows 12.0.2 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/preview.tsx +3 -3
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +56 -0
- package/dist/components/job-graph/job-duration-format.d.ts +2 -2
- package/dist/components/job-graph/job-duration-format.d.ts.map +1 -1
- package/dist/components/job-graph/job-duration-format.js +4 -2
- package/dist/components/job-graph/job-duration-format.js.map +1 -1
- package/dist/components/job-graph/job-node.d.ts +1 -1
- package/dist/components/job-graph/job-node.d.ts.map +1 -1
- package/dist/components/job-graph/job-node.js +5 -4
- package/dist/components/job-graph/job-node.js.map +1 -1
- package/dist/components/step-list/step-list.d.ts +2 -2
- package/dist/components/step-list/step-list.d.ts.map +1 -1
- package/dist/components/step-list/step-list.js.map +1 -1
- package/dist/components/workflow-run-list/job-status-strip.d.ts +21 -0
- package/dist/components/workflow-run-list/job-status-strip.d.ts.map +1 -0
- package/dist/components/workflow-run-list/job-status-strip.js +185 -0
- package/dist/components/workflow-run-list/job-status-strip.js.map +1 -0
- package/dist/components/workflow-run-list/run-display.d.ts +27 -3
- package/dist/components/workflow-run-list/run-display.d.ts.map +1 -1
- package/dist/components/workflow-run-list/run-display.js +78 -7
- package/dist/components/workflow-run-list/run-display.js.map +1 -1
- package/dist/components/workflow-run-list/types.d.ts +23 -24
- package/dist/components/workflow-run-list/types.d.ts.map +1 -1
- package/dist/components/workflow-run-list/types.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-filter-menu.d.ts +22 -0
- package/dist/components/workflow-run-list/workflow-run-filter-menu.d.ts.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-filter-menu.js +68 -0
- package/dist/components/workflow-run-list/workflow-run-filter-menu.js.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-filters.d.ts +18 -0
- package/dist/components/workflow-run-list/workflow-run-filters.d.ts.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-filters.js +236 -0
- package/dist/components/workflow-run-list/workflow-run-filters.js.map +1 -0
- package/dist/components/workflow-run-list/workflow-run-list-content.d.ts +8 -4
- package/dist/components/workflow-run-list/workflow-run-list-content.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-content.js +40 -12
- package/dist/components/workflow-run-list/workflow-run-list-content.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-states.d.ts +29 -2
- package/dist/components/workflow-run-list/workflow-run-list-states.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-states.js +103 -44
- package/dist/components/workflow-run-list/workflow-run-list-states.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-view.d.ts +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-view.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-view.js +60 -43
- package/dist/components/workflow-run-list/workflow-run-list-view.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list.d.ts +1 -1
- package/dist/components/workflow-run-list/workflow-run-list.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-list.js +20 -8
- package/dist/components/workflow-run-list/workflow-run-list.js.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-row.d.ts +19 -9
- package/dist/components/workflow-run-list/workflow-run-row.d.ts.map +1 -1
- package/dist/components/workflow-run-list/workflow-run-row.js +179 -112
- package/dist/components/workflow-run-list/workflow-run-row.js.map +1 -1
- package/dist/components/workflow-run-number-label.d.ts +15 -0
- package/dist/components/workflow-run-number-label.d.ts.map +1 -0
- package/dist/components/workflow-run-number-label.js +41 -0
- package/dist/components/workflow-run-number-label.js.map +1 -0
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.d.ts +3 -3
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.d.ts.map +1 -1
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.js +8 -7
- package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.js.map +1 -1
- package/dist/components/workflow-run-summary/workflow-run-summary.d.ts +3 -3
- package/dist/components/workflow-run-summary/workflow-run-summary.d.ts.map +1 -1
- package/dist/components/workflow-run-summary/workflow-run-summary.js +16 -7
- package/dist/components/workflow-run-summary/workflow-run-summary.js.map +1 -1
- package/dist/components/workflow-run-view/agent-config-failure-callout.d.ts +2 -2
- package/dist/components/workflow-run-view/agent-config-failure-callout.d.ts.map +1 -1
- package/dist/components/workflow-run-view/agent-config-failure-callout.js +4 -4
- package/dist/components/workflow-run-view/agent-config-failure-callout.js.map +1 -1
- package/dist/components/workflow-run-view/job-card.d.ts +2 -2
- package/dist/components/workflow-run-view/job-card.d.ts.map +1 -1
- package/dist/components/workflow-run-view/job-card.js +51 -32
- package/dist/components/workflow-run-view/job-card.js.map +1 -1
- package/dist/components/workflow-run-view/job-execution-switcher.d.ts +1 -1
- package/dist/components/workflow-run-view/job-execution-switcher.d.ts.map +1 -1
- package/dist/components/workflow-run-view/job-execution-switcher.js +20 -8
- package/dist/components/workflow-run-view/job-execution-switcher.js.map +1 -1
- package/dist/components/workflow-run-view/workflow-run-view.d.ts +3 -2
- package/dist/components/workflow-run-view/workflow-run-view.d.ts.map +1 -1
- package/dist/components/workflow-run-view/workflow-run-view.js +15 -11
- package/dist/components/workflow-run-view/workflow-run-view.js.map +1 -1
- package/dist/components/workflow-status/status-visuals.d.ts +4 -4
- package/dist/components/workflow-status/status-visuals.d.ts.map +1 -1
- package/dist/components/workflow-status/status-visuals.js +7 -0
- package/dist/components/workflow-status/status-visuals.js.map +1 -1
- package/dist/components/workflow-status/workflow-status-icon.d.ts +3 -4
- package/dist/components/workflow-status/workflow-status-icon.d.ts.map +1 -1
- package/dist/components/workflow-status/workflow-status-icon.js +6 -4
- package/dist/components/workflow-status/workflow-status-icon.js.map +1 -1
- package/dist/core/entities/job-execution.d.ts +10 -0
- package/dist/core/entities/job-execution.d.ts.map +1 -1
- package/dist/core/entities/job-execution.js +11 -0
- package/dist/core/entities/job-execution.js.map +1 -1
- package/dist/core/entities/job.d.ts +4 -2
- package/dist/core/entities/job.d.ts.map +1 -1
- package/dist/core/entities/job.js +8 -1
- package/dist/core/entities/job.js.map +1 -1
- package/dist/core/entities/workflow-run.d.ts +52 -4
- package/dist/core/entities/workflow-run.d.ts.map +1 -1
- package/dist/core/entities/workflow-run.js +22 -3
- package/dist/core/entities/workflow-run.js.map +1 -1
- package/dist/core/workflow-run.d.ts +6 -6
- package/dist/core/workflow-run.d.ts.map +1 -1
- package/dist/core/workflow-run.js +3 -3
- package/dist/core/workflow-run.js.map +1 -1
- package/dist/feature.d.ts +7 -7
- package/dist/feature.js +5 -5
- package/dist/feature.js.map +1 -1
- package/dist/hooks/api/workflow-run-mapper.d.ts +4 -3
- package/dist/hooks/api/workflow-run-mapper.d.ts.map +1 -1
- package/dist/hooks/api/workflow-run-mapper.js +31 -3
- package/dist/hooks/api/workflow-run-mapper.js.map +1 -1
- package/dist/hooks/api/workflow-runs.d.ts +4 -4
- package/dist/hooks/api/workflow-runs.d.ts.map +1 -1
- package/dist/hooks/api/workflow-runs.js +12 -4
- package/dist/hooks/api/workflow-runs.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/pages/project-workflows-page.js +46 -1
- package/dist/pages/project-workflows-page.js.map +1 -1
- package/dist/pages/workflow-run-detail-page.d.ts +11 -0
- package/dist/pages/workflow-run-detail-page.d.ts.map +1 -0
- package/dist/pages/workflow-run-detail-page.js +30 -0
- package/dist/pages/workflow-run-detail-page.js.map +1 -0
- package/dist/pages/workflow-run-list-page.d.ts +10 -0
- package/dist/pages/workflow-run-list-page.d.ts.map +1 -0
- package/dist/pages/workflow-run-list-page.js +43 -0
- package/dist/pages/workflow-run-list-page.js.map +1 -0
- package/dist/routes/inputs.d.ts +61 -5
- package/dist/routes/inputs.d.ts.map +1 -1
- package/dist/routes/inputs.js +150 -13
- package/dist/routes/inputs.js.map +1 -1
- package/dist/routes/project-route.d.ts +6 -0
- package/dist/routes/project-route.d.ts.map +1 -0
- package/dist/routes/project-route.js +25 -0
- package/dist/routes/project-route.js.map +1 -0
- package/dist/routes/run-detail.d.ts.map +1 -1
- package/dist/routes/run-detail.js +12 -7
- package/dist/routes/run-detail.js.map +1 -1
- package/dist/routes/runs.d.ts.map +1 -1
- package/dist/routes/runs.js +11 -6
- package/dist/routes/runs.js.map +1 -1
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +6 -5
- package/dist/routes/workflows.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/components/job-graph/job-duration-format.ts +11 -2
- package/src/components/job-graph/job-graph-view.test.tsx +19 -8
- package/src/components/job-graph/job-graph.stories.tsx +23 -19
- package/src/components/job-graph/job-node.stories.tsx +10 -5
- package/src/components/job-graph/job-node.test.tsx +55 -10
- package/src/components/job-graph/job-node.tsx +16 -9
- package/src/components/step-list/step-list.stories.tsx +2 -3
- package/src/components/step-list/step-list.tsx +3 -2
- package/src/components/workflow-run-list/job-status-strip.tsx +189 -0
- package/src/components/workflow-run-list/run-display.test.ts +169 -30
- package/src/components/workflow-run-list/run-display.ts +116 -9
- package/src/components/workflow-run-list/types.ts +21 -17
- package/src/components/workflow-run-list/workflow-run-filter-menu.tsx +100 -0
- package/src/components/workflow-run-list/workflow-run-filters.tsx +243 -0
- package/src/components/workflow-run-list/workflow-run-list-content.tsx +44 -16
- package/src/components/workflow-run-list/workflow-run-list-states.tsx +128 -27
- package/src/components/workflow-run-list/workflow-run-list-view.test.tsx +441 -104
- package/src/components/workflow-run-list/workflow-run-list-view.tsx +73 -43
- package/src/components/workflow-run-list/workflow-run-list.stories.tsx +140 -20
- package/src/components/workflow-run-list/workflow-run-list.tsx +20 -10
- package/src/components/workflow-run-list/workflow-run-row.tsx +173 -106
- package/src/components/workflow-run-number-label.test.tsx +45 -0
- package/src/components/workflow-run-number-label.tsx +47 -0
- package/src/components/workflow-run-summary/workflow-run-attempt-switcher.test.tsx +7 -8
- package/src/components/workflow-run-summary/workflow-run-attempt-switcher.tsx +13 -12
- package/src/components/workflow-run-summary/workflow-run-summary.stories.tsx +6 -8
- package/src/components/workflow-run-summary/workflow-run-summary.test.tsx +27 -2
- package/src/components/workflow-run-summary/workflow-run-summary.tsx +19 -9
- package/src/components/workflow-run-view/agent-config-failure-callout.stories.tsx +2 -3
- package/src/components/workflow-run-view/agent-config-failure-callout.tsx +4 -4
- package/src/components/workflow-run-view/job-card.stories.tsx +11 -10
- package/src/components/workflow-run-view/job-card.test.tsx +115 -0
- package/src/components/workflow-run-view/job-card.tsx +74 -35
- package/src/components/workflow-run-view/job-execution-switcher.tsx +31 -9
- package/src/components/workflow-run-view/workflow-run-view.test.tsx +88 -30
- package/src/components/workflow-run-view/workflow-run-view.tsx +24 -14
- package/src/components/workflow-status/status-visuals.test.ts +9 -0
- package/src/components/workflow-status/status-visuals.ts +6 -4
- package/src/components/workflow-status/workflow-status-icon.stories.tsx +10 -2
- package/src/components/workflow-status/workflow-status-icon.test.tsx +18 -0
- package/src/components/workflow-status/workflow-status-icon.tsx +17 -24
- package/src/core/entities/job-execution.ts +22 -0
- package/src/core/entities/job-status.test.ts +104 -0
- package/src/core/entities/job.ts +18 -3
- package/src/core/entities/workflow-run.ts +76 -7
- package/src/core/workflow-run.test.ts +24 -9
- package/src/core/workflow-run.ts +17 -2
- package/src/feature.ts +5 -5
- package/src/hooks/api/workflow-run-mapper.ts +30 -3
- package/src/hooks/api/workflow-runs.test.tsx +2 -0
- package/src/hooks/api/workflow-runs.ts +12 -7
- package/src/index.ts +7 -2
- package/src/page-harness-budget.test.ts +1 -1
- package/src/pages/project-workflows-page.test.tsx +59 -5
- package/src/pages/project-workflows-page.tsx +34 -1
- package/src/pages/workflow-run-detail-page.tsx +45 -0
- package/src/pages/workflow-run-list-page.tsx +65 -0
- package/src/pages/{workflow-run-page.test.tsx → workflow-run-pages.test.tsx} +211 -47
- package/src/routes/inputs.test.ts +193 -12
- package/src/routes/inputs.ts +170 -11
- package/src/routes/project-route.tsx +25 -0
- package/src/routes/run-detail.tsx +15 -8
- package/src/routes/runs.tsx +14 -7
- package/src/routes/workflows.tsx +5 -4
- package/test/fixtures/workflow-run.ts +76 -7
- package/test/pages.tsx +18 -8
- package/test/render.tsx +8 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/dist/components/workflow-run-list/workflow-run-list-header.d.ts +0 -10
- package/dist/components/workflow-run-list/workflow-run-list-header.d.ts.map +0 -1
- package/dist/components/workflow-run-list/workflow-run-list-header.js +0 -55
- package/dist/components/workflow-run-list/workflow-run-list-header.js.map +0 -1
- package/dist/pages/workflow-run-first-time-use.d.ts +0 -6
- package/dist/pages/workflow-run-first-time-use.d.ts.map +0 -1
- package/dist/pages/workflow-run-first-time-use.js +0 -17
- package/dist/pages/workflow-run-first-time-use.js.map +0 -1
- package/dist/pages/workflow-run-page.d.ts +0 -10
- package/dist/pages/workflow-run-page.d.ts.map +0 -1
- package/dist/pages/workflow-run-page.js +0 -90
- package/dist/pages/workflow-run-page.js.map +0 -1
- package/src/components/workflow-run-list/workflow-run-list-header.tsx +0 -53
- package/src/pages/workflow-run-first-time-use.tsx +0 -17
- package/src/pages/workflow-run-page.tsx +0 -94
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/workflow-run-list/workflow-run-list-states.tsx"],"sourcesContent":["import type {QueryLoadErrorQuery} from '@shipfox/client-ui';\nimport {Button} from '@shipfox/react-ui/button';\nimport {Callout} from '@shipfox/react-ui/callout';\nimport {EmptyState} from '@shipfox/react-ui/empty-state';\nimport {Skeleton} from '@shipfox/react-ui/skeleton';\nimport {Text} from '@shipfox/react-ui/typography';\n\nexport function WorkflowRunListSkeleton() {\n return (\n <div
|
|
1
|
+
{"version":3,"sources":["../../../src/components/workflow-run-list/workflow-run-list-states.tsx"],"sourcesContent":["import type {QueryLoadErrorQuery} from '@shipfox/client-ui';\nimport {Button} from '@shipfox/react-ui/button';\nimport {Callout} from '@shipfox/react-ui/callout';\nimport {EmptyState} from '@shipfox/react-ui/empty-state';\nimport {Skeleton} from '@shipfox/react-ui/skeleton';\nimport {Text} from '@shipfox/react-ui/typography';\nimport {Link} from '@tanstack/react-router';\n\nconst SKELETON_ROW_COUNT = 8;\n\n/**\n * Placeholder rows at the real row height, so the list does not resize under the cursor when\n * the first page lands. Only the initial load renders these: a refetch keeps the rows it has,\n * per the design system's rule against animating frequently-updating data.\n */\nexport function WorkflowRunListSkeleton() {\n return (\n <div\n className=\"@container divide-y divide-border-neutral-base border-t border-border-neutral-base\"\n role=\"status\"\n aria-label=\"Loading runs\"\n >\n {Array.from({length: SKELETON_ROW_COUNT}).map((_, index) => (\n <div\n // biome-ignore lint/suspicious/noArrayIndexKey: skeleton row, stable position\n key={index}\n className=\"flex items-center gap-10 px-12 py-8 @min-[976px]:h-44 @min-[976px]:py-0\"\n >\n <Skeleton className=\"size-14 shrink-0 rounded-full\" />\n <Skeleton className=\"h-12 w-[220px] max-w-[40%]\" />\n <Skeleton className=\"ml-auto hidden h-12 w-96 @min-[1040px]:block\" />\n <Skeleton className=\"h-12 w-48\" />\n <Skeleton className=\"h-12 w-48\" />\n </div>\n ))}\n </div>\n );\n}\n\n/**\n * Slim non-blocking banner shown when a background refetch fails after a prior success,\n * so the already-loaded rows stay on screen with the retry inline rather than being\n * replaced by a full-placeholder error.\n */\nexport function WorkflowRunListStaleError({query}: {query: QueryLoadErrorQuery}) {\n return (\n <div className=\"pb-8\">\n <Callout role=\"alert\" type=\"error\">\n <div className=\"flex items-center justify-between gap-8\">\n <Text size=\"xs\">Could not refresh workflow runs.</Text>\n <Button\n type=\"button\"\n size=\"2xs\"\n variant=\"secondary\"\n isLoading={query.isFetching}\n onClick={() => {\n void query.refetch();\n }}\n >\n Retry\n </Button>\n </div>\n </Callout>\n </div>\n );\n}\n\nexport function WorkflowRunListEmpty({\n workspaceSlug,\n projectSlug,\n}: {\n workspaceSlug?: string | undefined;\n projectSlug?: string | undefined;\n}) {\n return (\n <EmptyState\n icon=\"pulseLine\"\n title=\"No runs yet\"\n description=\"Runs from this project's workflows appear here the moment one is launched.\"\n action={\n workspaceSlug && projectSlug ? (\n <Button asChild type=\"button\" size=\"sm\" variant=\"primary\">\n <Link\n to=\"/w/$workspaceSlug/p/$projectSlug/workflows\"\n params={{workspaceSlug, projectSlug}}\n >\n View workflows\n </Link>\n </Button>\n ) : null\n }\n />\n );\n}\n\n/**\n * The filtered-empty state, deliberately distinct from the unfiltered one: someone who\n * filtered their way to nothing needs a way back out, not an onboarding call to action.\n *\n * Its reset is worded as its outcome rather than repeating the toolbar's \"Clear filters\"\n * verbatim, so the two controls on screen read as one action offered twice rather than two\n * different ones. It is also the only reset within reach below `md`, where the toolbar's\n * lives inside the filter sheet.\n */\nexport function WorkflowRunListNoMatches({\n onClear,\n hasNextPage,\n isFetchingNextPage,\n isFetchNextPageError,\n onLoadMore,\n}: {\n onClear: () => void;\n hasNextPage: boolean;\n isFetchingNextPage: boolean;\n isFetchNextPageError: boolean;\n onLoadMore?: () => void;\n}) {\n return (\n <div className=\"flex flex-col gap-8\">\n {isFetchNextPageError ? (\n <Callout role=\"alert\" type=\"error\">\n Could not load more workflow runs. Try again to continue searching older runs.\n </Callout>\n ) : null}\n <EmptyState\n icon=\"filterOffLine\"\n title={hasNextPage ? 'No matches in loaded history' : 'No matching runs'}\n description={\n hasNextPage\n ? 'No loaded run matches these filters. Load more to search further back.'\n : 'No run matches these filters.'\n }\n action={\n <div className=\"flex flex-wrap justify-center gap-8\">\n {hasNextPage && onLoadMore ? (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"primary\"\n isLoading={isFetchingNextPage}\n onClick={onLoadMore}\n >\n Load more runs\n </Button>\n ) : null}\n <Button type=\"button\" size=\"sm\" variant=\"secondary\" onClick={onClear}>\n Show all runs\n </Button>\n </div>\n }\n />\n </div>\n );\n}\n\nexport function WorkflowRunListLoadMore({\n hasNextPage,\n isFetchingNextPage,\n isFetchNextPageError,\n onLoadMore,\n}: {\n hasNextPage: boolean;\n isFetchingNextPage: boolean;\n isFetchNextPageError: boolean;\n onLoadMore?: () => void;\n}) {\n if (!hasNextPage || !onLoadMore) return null;\n\n return (\n <div className=\"flex flex-col items-center gap-8 border-t border-border-neutral-base py-12\">\n {isFetchNextPageError ? (\n <Callout role=\"alert\" type=\"error\">\n Could not load more workflow runs. Try again.\n </Callout>\n ) : null}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"secondary\"\n isLoading={isFetchingNextPage}\n onClick={onLoadMore}\n >\n Load more runs\n </Button>\n </div>\n );\n}\n"],"names":["Button","Callout","EmptyState","Skeleton","Text","Link","SKELETON_ROW_COUNT","WorkflowRunListSkeleton","div","className","role","aria-label","Array","from","length","map","_","index","WorkflowRunListStaleError","query","type","size","variant","isLoading","isFetching","onClick","refetch","WorkflowRunListEmpty","workspaceSlug","projectSlug","icon","title","description","action","asChild","to","params","WorkflowRunListNoMatches","onClear","hasNextPage","isFetchingNextPage","isFetchNextPageError","onLoadMore","WorkflowRunListLoadMore"],"mappings":";AACA,SAAQA,MAAM,QAAO,2BAA2B;AAChD,SAAQC,OAAO,QAAO,4BAA4B;AAClD,SAAQC,UAAU,QAAO,gCAAgC;AACzD,SAAQC,QAAQ,QAAO,6BAA6B;AACpD,SAAQC,IAAI,QAAO,+BAA+B;AAClD,SAAQC,IAAI,QAAO,yBAAyB;AAE5C,MAAMC,qBAAqB;AAE3B;;;;CAIC,GACD,OAAO,SAASC;IACd,qBACE,KAACC;QACCC,WAAU;QACVC,MAAK;QACLC,cAAW;kBAEVC,MAAMC,IAAI,CAAC;YAACC,QAAQR;QAAkB,GAAGS,GAAG,CAAC,CAACC,GAAGC,sBAChD,MAACT;gBAGCC,WAAU;;kCAEV,KAACN;wBAASM,WAAU;;kCACpB,KAACN;wBAASM,WAAU;;kCACpB,KAACN;wBAASM,WAAU;;kCACpB,KAACN;wBAASM,WAAU;;kCACpB,KAACN;wBAASM,WAAU;;;eAPfQ;;AAYf;AAEA;;;;CAIC,GACD,OAAO,SAASC,0BAA0B,EAACC,KAAK,EAA+B;IAC7E,qBACE,KAACX;QAAIC,WAAU;kBACb,cAAA,KAACR;YAAQS,MAAK;YAAQU,MAAK;sBACzB,cAAA,MAACZ;gBAAIC,WAAU;;kCACb,KAACL;wBAAKiB,MAAK;kCAAK;;kCAChB,KAACrB;wBACCoB,MAAK;wBACLC,MAAK;wBACLC,SAAQ;wBACRC,WAAWJ,MAAMK,UAAU;wBAC3BC,SAAS;4BACP,KAAKN,MAAMO,OAAO;wBACpB;kCACD;;;;;;AAOX;AAEA,OAAO,SAASC,qBAAqB,EACnCC,aAAa,EACbC,WAAW,EAIZ;IACC,qBACE,KAAC3B;QACC4B,MAAK;QACLC,OAAM;QACNC,aAAY;QACZC,QACEL,iBAAiBC,4BACf,KAAC7B;YAAOkC,OAAO;YAACd,MAAK;YAASC,MAAK;YAAKC,SAAQ;sBAC9C,cAAA,KAACjB;gBACC8B,IAAG;gBACHC,QAAQ;oBAACR;oBAAeC;gBAAW;0BACpC;;aAID;;AAIZ;AAEA;;;;;;;;CAQC,GACD,OAAO,SAASQ,yBAAyB,EACvCC,OAAO,EACPC,WAAW,EACXC,kBAAkB,EAClBC,oBAAoB,EACpBC,UAAU,EAOX;IACC,qBACE,MAAClC;QAAIC,WAAU;;YACZgC,qCACC,KAACxC;gBAAQS,MAAK;gBAAQU,MAAK;0BAAQ;iBAGjC;0BACJ,KAAClB;gBACC4B,MAAK;gBACLC,OAAOQ,cAAc,iCAAiC;gBACtDP,aACEO,cACI,2EACA;gBAENN,sBACE,MAACzB;oBAAIC,WAAU;;wBACZ8B,eAAeG,2BACd,KAAC1C;4BACCoB,MAAK;4BACLC,MAAK;4BACLC,SAAQ;4BACRC,WAAWiB;4BACXf,SAASiB;sCACV;6BAGC;sCACJ,KAAC1C;4BAAOoB,MAAK;4BAASC,MAAK;4BAAKC,SAAQ;4BAAYG,SAASa;sCAAS;;;;;;;AAQlF;AAEA,OAAO,SAASK,wBAAwB,EACtCJ,WAAW,EACXC,kBAAkB,EAClBC,oBAAoB,EACpBC,UAAU,EAMX;IACC,IAAI,CAACH,eAAe,CAACG,YAAY,OAAO;IAExC,qBACE,MAAClC;QAAIC,WAAU;;YACZgC,qCACC,KAACxC;gBAAQS,MAAK;gBAAQU,MAAK;0BAAQ;iBAGjC;0BACJ,KAACpB;gBACCoB,MAAK;gBACLC,MAAK;gBACLC,SAAQ;gBACRC,WAAWiB;gBACXf,SAASiB;0BACV;;;;AAKP"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { WorkflowRunListViewProps } from './types.js';
|
|
2
|
-
export declare function WorkflowRunListView({ runs, query,
|
|
2
|
+
export declare function WorkflowRunListView({ runs, query, workspaceSlug, projectSlug, className, search, onFiltersChange, onClearFilters, hasNextPage, isFetchingNextPage, isFetchNextPageError, onLoadMore, }: WorkflowRunListViewProps): import("react").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=workflow-run-list-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-run-list-view.d.ts","sourceRoot":"","sources":["../../../src/components/workflow-run-list/workflow-run-list-view.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-run-list-view.d.ts","sourceRoot":"","sources":["../../../src/components/workflow-run-list/workflow-run-list-view.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,YAAY,CAAC;AAMzD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,MAAqB,EACrB,eAAe,EACf,cAAc,EACd,WAAmB,EACnB,kBAA0B,EAC1B,oBAA4B,EAC5B,UAAU,GACX,EAAE,wBAAwB,+BA6D1B"}
|
|
@@ -1,67 +1,84 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { TimeTickerProvider } from '@shipfox/react-ui/time-ticker';
|
|
3
|
+
import { Header } from '@shipfox/react-ui/typography';
|
|
3
4
|
import { cn } from '@shipfox/react-ui/utils';
|
|
4
|
-
import { useState } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import { useId, useMemo, useState } from 'react';
|
|
6
|
+
import { applyWorkflowRunFilterPatch, clearWorkflowRunFilters, hasWorkflowRunFilters } from '#routes/inputs.js';
|
|
7
|
+
import { runMatchesFilters, workflowRunFacets } from './run-display.js';
|
|
8
|
+
import { WorkflowRunFilters } from './workflow-run-filters.js';
|
|
6
9
|
import { WorkflowRunListContent } from './workflow-run-list-content.js';
|
|
7
|
-
|
|
8
|
-
export function WorkflowRunListView({ runs, query,
|
|
10
|
+
const EMPTY_SEARCH = {};
|
|
11
|
+
export function WorkflowRunListView({ runs, query, workspaceSlug, projectSlug, className, search = EMPTY_SEARCH, onFiltersChange, onClearFilters, hasNextPage = false, isFetchingNextPage = false, isFetchNextPageError = false, onLoadMore }) {
|
|
12
|
+
const headingId = useId();
|
|
9
13
|
const [localSearch, setLocalSearch] = useState(search);
|
|
10
|
-
const [localStatusFilter, setLocalStatusFilter] = useState(statusFilter);
|
|
11
14
|
const currentSearch = onFiltersChange ? search : localSearch;
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const filteredRuns = useMemo(()=>runs.filter((run)=>runMatchesFilters(run, currentSearch)), [
|
|
16
|
+
runs,
|
|
17
|
+
currentSearch
|
|
18
|
+
]);
|
|
19
|
+
const facets = useMemo(()=>workflowRunFacets(runs, currentSearch), [
|
|
20
|
+
runs,
|
|
21
|
+
currentSearch
|
|
22
|
+
]);
|
|
23
|
+
const hasActiveFilters = hasWorkflowRunFilters(currentSearch);
|
|
24
|
+
function handleFiltersChange(patch) {
|
|
25
|
+
if (onFiltersChange) onFiltersChange(patch);
|
|
26
|
+
else setLocalSearch((previous)=>applyWorkflowRunFilterPatch(previous, patch));
|
|
27
|
+
}
|
|
17
28
|
function handleClearFilters() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
29
|
+
// Uncontrolled, the view owns the filters, so it clears them itself and still reports the
|
|
30
|
+
// change; a caller that passes only `onClearFilters` would otherwise see nothing happen.
|
|
31
|
+
if (!onFiltersChange) setLocalSearch(clearWorkflowRunFilters);
|
|
32
|
+
else if (!onClearFilters) onFiltersChange(CLEAR_ALL_FILTERS);
|
|
33
|
+
onClearFilters?.();
|
|
23
34
|
}
|
|
24
35
|
return /*#__PURE__*/ _jsx(TimeTickerProvider, {
|
|
25
36
|
intervalMs: 1000,
|
|
26
37
|
reducedMotionIntervalMs: 10_000,
|
|
27
|
-
children: /*#__PURE__*/ _jsxs("
|
|
28
|
-
|
|
29
|
-
|
|
38
|
+
children: /*#__PURE__*/ _jsxs("section", {
|
|
39
|
+
"aria-labelledby": headingId,
|
|
40
|
+
className: cn('flex min-h-0 min-w-0 flex-1 flex-col gap-12', className),
|
|
30
41
|
children: [
|
|
31
|
-
/*#__PURE__*/ _jsx(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
onStatusFilterChange: (next)=>{
|
|
44
|
-
if (onFiltersChange) onFiltersChange({
|
|
45
|
-
...currentSearch ? {
|
|
46
|
-
search: currentSearch
|
|
47
|
-
} : {},
|
|
48
|
-
status: next
|
|
49
|
-
});
|
|
50
|
-
else setLocalStatusFilter(next);
|
|
51
|
-
}
|
|
42
|
+
/*#__PURE__*/ _jsx(Header, {
|
|
43
|
+
id: headingId,
|
|
44
|
+
variant: "h1",
|
|
45
|
+
className: "sr-only",
|
|
46
|
+
children: "Workflow runs"
|
|
47
|
+
}),
|
|
48
|
+
/*#__PURE__*/ _jsx(WorkflowRunFilters, {
|
|
49
|
+
search: currentSearch,
|
|
50
|
+
facets: facets,
|
|
51
|
+
onChange: handleFiltersChange,
|
|
52
|
+
onClear: handleClearFilters,
|
|
53
|
+
hasActiveFilters: hasActiveFilters
|
|
52
54
|
}),
|
|
53
55
|
/*#__PURE__*/ _jsx(WorkflowRunListContent, {
|
|
54
56
|
query: query,
|
|
55
57
|
totalRuns: runs.length,
|
|
56
58
|
runs: filteredRuns,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
onClearFilters: handleClearFilters
|
|
59
|
+
workspaceSlug: workspaceSlug,
|
|
60
|
+
projectSlug: projectSlug,
|
|
61
|
+
hasActiveFilters: hasActiveFilters,
|
|
62
|
+
onClearFilters: handleClearFilters,
|
|
63
|
+
hasNextPage: hasNextPage,
|
|
64
|
+
isFetchingNextPage: isFetchingNextPage,
|
|
65
|
+
isFetchNextPageError: isFetchNextPageError,
|
|
66
|
+
...onLoadMore ? {
|
|
67
|
+
onLoadMore
|
|
68
|
+
} : {}
|
|
61
69
|
})
|
|
62
70
|
]
|
|
63
71
|
})
|
|
64
72
|
});
|
|
65
73
|
}
|
|
74
|
+
const CLEAR_ALL_FILTERS = {
|
|
75
|
+
search: undefined,
|
|
76
|
+
status: undefined,
|
|
77
|
+
branch: undefined,
|
|
78
|
+
actor: undefined,
|
|
79
|
+
event: undefined,
|
|
80
|
+
after: undefined,
|
|
81
|
+
before: undefined
|
|
82
|
+
};
|
|
66
83
|
|
|
67
84
|
//# sourceMappingURL=workflow-run-list-view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/workflow-run-list/workflow-run-list-view.tsx"],"sourcesContent":["import {TimeTickerProvider} from '@shipfox/react-ui/time-ticker';\nimport {cn} from '@shipfox/react-ui/utils';\nimport {useState} from 'react';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/workflow-run-list/workflow-run-list-view.tsx"],"sourcesContent":["import {TimeTickerProvider} from '@shipfox/react-ui/time-ticker';\nimport {Header} from '@shipfox/react-ui/typography';\nimport {cn} from '@shipfox/react-ui/utils';\nimport {useId, useMemo, useState} from 'react';\nimport {\n applyWorkflowRunFilterPatch,\n clearWorkflowRunFilters,\n hasWorkflowRunFilters,\n type WorkflowRunFilterPatch,\n type WorkflowRunsSearch,\n} from '#routes/inputs.js';\nimport {runMatchesFilters, workflowRunFacets} from './run-display.js';\nimport type {WorkflowRunListViewProps} from './types.js';\nimport {WorkflowRunFilters} from './workflow-run-filters.js';\nimport {WorkflowRunListContent} from './workflow-run-list-content.js';\n\nconst EMPTY_SEARCH: WorkflowRunsSearch = {};\n\nexport function WorkflowRunListView({\n runs,\n query,\n workspaceSlug,\n projectSlug,\n className,\n search = EMPTY_SEARCH,\n onFiltersChange,\n onClearFilters,\n hasNextPage = false,\n isFetchingNextPage = false,\n isFetchNextPageError = false,\n onLoadMore,\n}: WorkflowRunListViewProps) {\n const headingId = useId();\n const [localSearch, setLocalSearch] = useState<WorkflowRunsSearch>(search);\n const currentSearch = onFiltersChange ? search : localSearch;\n\n const filteredRuns = useMemo(\n () => runs.filter((run) => runMatchesFilters(run, currentSearch)),\n [runs, currentSearch],\n );\n const facets = useMemo(() => workflowRunFacets(runs, currentSearch), [runs, currentSearch]);\n const hasActiveFilters = hasWorkflowRunFilters(currentSearch);\n\n function handleFiltersChange(patch: WorkflowRunFilterPatch) {\n if (onFiltersChange) onFiltersChange(patch);\n else setLocalSearch((previous) => applyWorkflowRunFilterPatch(previous, patch));\n }\n\n function handleClearFilters() {\n // Uncontrolled, the view owns the filters, so it clears them itself and still reports the\n // change; a caller that passes only `onClearFilters` would otherwise see nothing happen.\n if (!onFiltersChange) setLocalSearch(clearWorkflowRunFilters);\n else if (!onClearFilters) onFiltersChange(CLEAR_ALL_FILTERS);\n onClearFilters?.();\n }\n\n return (\n <TimeTickerProvider intervalMs={1000} reducedMotionIntervalMs={10_000}>\n <section\n aria-labelledby={headingId}\n className={cn('flex min-h-0 min-w-0 flex-1 flex-col gap-12', className)}\n >\n {/* The tab strip above already reads \"Runs\", so the page heading is for structure and\n assistive tech rather than a second visible title competing with it. */}\n <Header id={headingId} variant=\"h1\" className=\"sr-only\">\n Workflow runs\n </Header>\n\n <WorkflowRunFilters\n search={currentSearch}\n facets={facets}\n onChange={handleFiltersChange}\n onClear={handleClearFilters}\n hasActiveFilters={hasActiveFilters}\n />\n\n <WorkflowRunListContent\n query={query}\n totalRuns={runs.length}\n runs={filteredRuns}\n workspaceSlug={workspaceSlug}\n projectSlug={projectSlug}\n hasActiveFilters={hasActiveFilters}\n onClearFilters={handleClearFilters}\n hasNextPage={hasNextPage}\n isFetchingNextPage={isFetchingNextPage}\n isFetchNextPageError={isFetchNextPageError}\n {...(onLoadMore ? {onLoadMore} : {})}\n />\n </section>\n </TimeTickerProvider>\n );\n}\n\nconst CLEAR_ALL_FILTERS: WorkflowRunFilterPatch = {\n search: undefined,\n status: undefined,\n branch: undefined,\n actor: undefined,\n event: undefined,\n after: undefined,\n before: undefined,\n};\n"],"names":["TimeTickerProvider","Header","cn","useId","useMemo","useState","applyWorkflowRunFilterPatch","clearWorkflowRunFilters","hasWorkflowRunFilters","runMatchesFilters","workflowRunFacets","WorkflowRunFilters","WorkflowRunListContent","EMPTY_SEARCH","WorkflowRunListView","runs","query","workspaceSlug","projectSlug","className","search","onFiltersChange","onClearFilters","hasNextPage","isFetchingNextPage","isFetchNextPageError","onLoadMore","headingId","localSearch","setLocalSearch","currentSearch","filteredRuns","filter","run","facets","hasActiveFilters","handleFiltersChange","patch","previous","handleClearFilters","CLEAR_ALL_FILTERS","intervalMs","reducedMotionIntervalMs","section","aria-labelledby","id","variant","onChange","onClear","totalRuns","length","undefined","status","branch","actor","event","after","before"],"mappings":";AAAA,SAAQA,kBAAkB,QAAO,gCAAgC;AACjE,SAAQC,MAAM,QAAO,+BAA+B;AACpD,SAAQC,EAAE,QAAO,0BAA0B;AAC3C,SAAQC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,QAAO,QAAQ;AAC/C,SACEC,2BAA2B,EAC3BC,uBAAuB,EACvBC,qBAAqB,QAGhB,oBAAoB;AAC3B,SAAQC,iBAAiB,EAAEC,iBAAiB,QAAO,mBAAmB;AAEtE,SAAQC,kBAAkB,QAAO,4BAA4B;AAC7D,SAAQC,sBAAsB,QAAO,iCAAiC;AAEtE,MAAMC,eAAmC,CAAC;AAE1C,OAAO,SAASC,oBAAoB,EAClCC,IAAI,EACJC,KAAK,EACLC,aAAa,EACbC,WAAW,EACXC,SAAS,EACTC,SAASP,YAAY,EACrBQ,eAAe,EACfC,cAAc,EACdC,cAAc,KAAK,EACnBC,qBAAqB,KAAK,EAC1BC,uBAAuB,KAAK,EAC5BC,UAAU,EACe;IACzB,MAAMC,YAAYxB;IAClB,MAAM,CAACyB,aAAaC,eAAe,GAAGxB,SAA6Be;IACnE,MAAMU,gBAAgBT,kBAAkBD,SAASQ;IAEjD,MAAMG,eAAe3B,QACnB,IAAMW,KAAKiB,MAAM,CAAC,CAACC,MAAQxB,kBAAkBwB,KAAKH,iBAClD;QAACf;QAAMe;KAAc;IAEvB,MAAMI,SAAS9B,QAAQ,IAAMM,kBAAkBK,MAAMe,gBAAgB;QAACf;QAAMe;KAAc;IAC1F,MAAMK,mBAAmB3B,sBAAsBsB;IAE/C,SAASM,oBAAoBC,KAA6B;QACxD,IAAIhB,iBAAiBA,gBAAgBgB;aAChCR,eAAe,CAACS,WAAahC,4BAA4BgC,UAAUD;IAC1E;IAEA,SAASE;QACP,0FAA0F;QAC1F,yFAAyF;QACzF,IAAI,CAAClB,iBAAiBQ,eAAetB;aAChC,IAAI,CAACe,gBAAgBD,gBAAgBmB;QAC1ClB;IACF;IAEA,qBACE,KAACtB;QAAmByC,YAAY;QAAMC,yBAAyB;kBAC7D,cAAA,MAACC;YACCC,mBAAiBjB;YACjBR,WAAWjB,GAAG,+CAA+CiB;;8BAI7D,KAAClB;oBAAO4C,IAAIlB;oBAAWmB,SAAQ;oBAAK3B,WAAU;8BAAU;;8BAIxD,KAACR;oBACCS,QAAQU;oBACRI,QAAQA;oBACRa,UAAUX;oBACVY,SAAST;oBACTJ,kBAAkBA;;8BAGpB,KAACvB;oBACCI,OAAOA;oBACPiC,WAAWlC,KAAKmC,MAAM;oBACtBnC,MAAMgB;oBACNd,eAAeA;oBACfC,aAAaA;oBACbiB,kBAAkBA;oBAClBb,gBAAgBiB;oBAChBhB,aAAaA;oBACbC,oBAAoBA;oBACpBC,sBAAsBA;oBACrB,GAAIC,aAAa;wBAACA;oBAAU,IAAI,CAAC,CAAC;;;;;AAK7C;AAEA,MAAMc,oBAA4C;IAChDpB,QAAQ+B;IACRC,QAAQD;IACRE,QAAQF;IACRG,OAAOH;IACPI,OAAOJ;IACPK,OAAOL;IACPM,QAAQN;AACV"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { WorkflowRunListProps } from './types.js';
|
|
2
|
-
export declare function WorkflowRunList({
|
|
2
|
+
export declare function WorkflowRunList({ projectId, workspaceSlug, projectSlug, className, search, onFiltersChange, onClearFilters, hasNextPage, isFetchingNextPage, isFetchNextPageError, onLoadMore, }: WorkflowRunListProps): import("react").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=workflow-run-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-run-list.d.ts","sourceRoot":"","sources":["../../../src/components/workflow-run-list/workflow-run-list.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAGrD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"workflow-run-list.d.ts","sourceRoot":"","sources":["../../../src/components/workflow-run-list/workflow-run-list.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAGrD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,aAAa,EACb,WAAW,EACX,SAAS,EACT,MAAM,EACN,eAAe,EACf,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,GACX,EAAE,oBAAoB,+BA0BtB"}
|
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from 'react';
|
|
2
|
+
import { useCallback, useMemo } from 'react';
|
|
3
3
|
import { useWorkflowRunsInfiniteQuery } from '#hooks/api/workflow-runs.js';
|
|
4
4
|
import { WorkflowRunListView } from './workflow-run-list-view.js';
|
|
5
|
-
export function WorkflowRunList({
|
|
5
|
+
export function WorkflowRunList({ projectId, workspaceSlug, projectSlug, className, search, onFiltersChange, onClearFilters, hasNextPage, isFetchingNextPage, isFetchNextPageError, onLoadMore }) {
|
|
6
6
|
const query = useWorkflowRunsInfiniteQuery(projectId, {});
|
|
7
|
+
const handleLoadMore = useCallback(()=>{
|
|
8
|
+
void query.fetchNextPage();
|
|
9
|
+
}, [
|
|
10
|
+
query.fetchNextPage
|
|
11
|
+
]);
|
|
7
12
|
const runs = useMemo(()=>query.data?.pages.flatMap((page)=>page.runs) ?? [], [
|
|
8
13
|
query.data
|
|
9
14
|
]);
|
|
10
15
|
return /*#__PURE__*/ _jsx(WorkflowRunListView, {
|
|
11
16
|
runs: runs,
|
|
12
17
|
query: query,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
selectedWorkflowRunId: selectedWorkflowRunId,
|
|
18
|
+
workspaceSlug: workspaceSlug,
|
|
19
|
+
projectSlug: projectSlug,
|
|
16
20
|
className: className,
|
|
17
|
-
search
|
|
18
|
-
|
|
21
|
+
...search ? {
|
|
22
|
+
search
|
|
23
|
+
} : {},
|
|
19
24
|
...onFiltersChange ? {
|
|
20
25
|
onFiltersChange
|
|
21
|
-
} : {}
|
|
26
|
+
} : {},
|
|
27
|
+
...onClearFilters ? {
|
|
28
|
+
onClearFilters
|
|
29
|
+
} : {},
|
|
30
|
+
hasNextPage: hasNextPage ?? query.hasNextPage,
|
|
31
|
+
isFetchingNextPage: isFetchingNextPage ?? query.isFetchingNextPage,
|
|
32
|
+
isFetchNextPageError: isFetchNextPageError ?? query.isFetchNextPageError,
|
|
33
|
+
onLoadMore: onLoadMore ?? handleLoadMore
|
|
22
34
|
});
|
|
23
35
|
}
|
|
24
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/workflow-run-list/workflow-run-list.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport type {WorkflowRunListItem} from '#core/workflow-run.js';\nimport {useWorkflowRunsInfiniteQuery} from '#hooks/api/workflow-runs.js';\nimport type {WorkflowRunListProps} from './types.js';\nimport {WorkflowRunListView} from './workflow-run-list-view.js';\n\nexport function WorkflowRunList({\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/workflow-run-list/workflow-run-list.tsx"],"sourcesContent":["import {useCallback, useMemo} from 'react';\nimport type {WorkflowRunListItem} from '#core/workflow-run.js';\nimport {useWorkflowRunsInfiniteQuery} from '#hooks/api/workflow-runs.js';\nimport type {WorkflowRunListProps} from './types.js';\nimport {WorkflowRunListView} from './workflow-run-list-view.js';\n\nexport function WorkflowRunList({\n projectId,\n workspaceSlug,\n projectSlug,\n className,\n search,\n onFiltersChange,\n onClearFilters,\n hasNextPage,\n isFetchingNextPage,\n isFetchNextPageError,\n onLoadMore,\n}: WorkflowRunListProps) {\n const query = useWorkflowRunsInfiniteQuery(projectId, {});\n const handleLoadMore = useCallback(() => {\n void query.fetchNextPage();\n }, [query.fetchNextPage]);\n const runs = useMemo<WorkflowRunListItem[]>(\n () => query.data?.pages.flatMap((page) => page.runs) ?? [],\n [query.data],\n );\n\n return (\n <WorkflowRunListView\n runs={runs}\n query={query}\n workspaceSlug={workspaceSlug}\n projectSlug={projectSlug}\n className={className}\n {...(search ? {search} : {})}\n {...(onFiltersChange ? {onFiltersChange} : {})}\n {...(onClearFilters ? {onClearFilters} : {})}\n hasNextPage={hasNextPage ?? query.hasNextPage}\n isFetchingNextPage={isFetchingNextPage ?? query.isFetchingNextPage}\n isFetchNextPageError={isFetchNextPageError ?? query.isFetchNextPageError}\n onLoadMore={onLoadMore ?? handleLoadMore}\n />\n );\n}\n"],"names":["useCallback","useMemo","useWorkflowRunsInfiniteQuery","WorkflowRunListView","WorkflowRunList","projectId","workspaceSlug","projectSlug","className","search","onFiltersChange","onClearFilters","hasNextPage","isFetchingNextPage","isFetchNextPageError","onLoadMore","query","handleLoadMore","fetchNextPage","runs","data","pages","flatMap","page"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,OAAO,QAAO,QAAQ;AAE3C,SAAQC,4BAA4B,QAAO,8BAA8B;AAEzE,SAAQC,mBAAmB,QAAO,8BAA8B;AAEhE,OAAO,SAASC,gBAAgB,EAC9BC,SAAS,EACTC,aAAa,EACbC,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,eAAe,EACfC,cAAc,EACdC,WAAW,EACXC,kBAAkB,EAClBC,oBAAoB,EACpBC,UAAU,EACW;IACrB,MAAMC,QAAQd,6BAA6BG,WAAW,CAAC;IACvD,MAAMY,iBAAiBjB,YAAY;QACjC,KAAKgB,MAAME,aAAa;IAC1B,GAAG;QAACF,MAAME,aAAa;KAAC;IACxB,MAAMC,OAAOlB,QACX,IAAMe,MAAMI,IAAI,EAAEC,MAAMC,QAAQ,CAACC,OAASA,KAAKJ,IAAI,KAAK,EAAE,EAC1D;QAACH,MAAMI,IAAI;KAAC;IAGd,qBACE,KAACjB;QACCgB,MAAMA;QACNH,OAAOA;QACPV,eAAeA;QACfC,aAAaA;QACbC,WAAWA;QACV,GAAIC,SAAS;YAACA;QAAM,IAAI,CAAC,CAAC;QAC1B,GAAIC,kBAAkB;YAACA;QAAe,IAAI,CAAC,CAAC;QAC5C,GAAIC,iBAAiB;YAACA;QAAc,IAAI,CAAC,CAAC;QAC3CC,aAAaA,eAAeI,MAAMJ,WAAW;QAC7CC,oBAAoBA,sBAAsBG,MAAMH,kBAAkB;QAClEC,sBAAsBA,wBAAwBE,MAAMF,oBAAoB;QACxEC,YAAYA,cAAcE;;AAGhC"}
|
|
@@ -1,14 +1,24 @@
|
|
|
1
|
-
import type
|
|
2
|
-
export declare function WorkflowRunRowList({ runs,
|
|
1
|
+
import { type WorkflowRunListItem } from '#core/workflow-run.js';
|
|
2
|
+
export declare function WorkflowRunRowList({ runs, workspaceSlug, projectSlug, }: {
|
|
3
3
|
runs: WorkflowRunListItem[];
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
selectedWorkflowRunId?: string | undefined;
|
|
4
|
+
workspaceSlug?: string | undefined;
|
|
5
|
+
projectSlug?: string | undefined;
|
|
7
6
|
}): import("react").JSX.Element;
|
|
8
|
-
|
|
7
|
+
/**
|
|
8
|
+
* One run at full width.
|
|
9
|
+
*
|
|
10
|
+
* A single 44px line once the list is at least 976px wide, reflowing to two lines below that:
|
|
11
|
+
* the identity and the numerics keep their places on line one, and the provenance metadata
|
|
12
|
+
* drops beneath. The numeric columns are fixed-width so duration and time form real columns
|
|
13
|
+
* down the list rather than tracking each row's name length.
|
|
14
|
+
*
|
|
15
|
+
* The thresholds are the container widths the spec's viewport breakpoints produce, given a
|
|
16
|
+
* column capped at 1120px with 24px of page padding on each side: a 1280px viewport leaves
|
|
17
|
+
* the row 1072px, and a 1024px viewport leaves it 976px.
|
|
18
|
+
*/
|
|
19
|
+
export declare function WorkflowRunRow({ run, workspaceSlug, projectSlug, }: {
|
|
9
20
|
run: WorkflowRunListItem;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
selected: boolean;
|
|
21
|
+
workspaceSlug?: string | undefined;
|
|
22
|
+
projectSlug?: string | undefined;
|
|
13
23
|
}): import("react").JSX.Element;
|
|
14
24
|
//# sourceMappingURL=workflow-run-row.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-run-row.d.ts","sourceRoot":"","sources":["../../../src/components/workflow-run-list/workflow-run-row.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-run-row.d.ts","sourceRoot":"","sources":["../../../src/components/workflow-run-list/workflow-run-row.tsx"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,mBAAmB,EAIzB,MAAM,uBAAuB,CAAC;AAI/B,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,aAAa,EACb,WAAW,GACZ,EAAE;IACD,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,+BAaA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,aAAa,EACb,WAAW,GACZ,EAAE;IACD,GAAG,EAAE,mBAAmB,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,+BAyFA"}
|