@exxatdesignux/ui 0.5.1 → 0.5.3
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/CHANGELOG.md +16 -0
- package/consumer-extras/cursor-rules/exxat-data-tables.mdc +8 -6
- package/consumer-extras/cursor-rules/exxat-ds-agents.mdc +2 -1
- package/consumer-extras/cursor-rules/exxat-hub-supported-views.mdc +54 -0
- package/consumer-extras/cursor-rules/exxat-nav-single-active.mdc +31 -0
- package/consumer-extras/cursor-skills/exxat-ds-skill/SKILL.md +8 -3
- package/consumer-extras/cursor-skills/exxat-ds-skill/references/data-table-pattern.md +15 -5
- package/consumer-extras/cursor-skills/exxat-token-economy/SKILL.md +11 -4
- package/consumer-extras/handbook/HANDBOOK.md +1 -1
- package/consumer-extras/handbook/reference-implementations.md +2 -2
- package/consumer-extras/patterns/data-views-pattern.md +6 -0
- package/consumer-extras/patterns/hub-supported-views-pattern.md +53 -0
- package/dist/components/data-table/filter-text-value-input.js +1 -1
- package/dist/components/data-table/filter-text-value-input.js.map +1 -1
- package/dist/components/data-table/index.js +16 -12
- package/dist/components/data-table/index.js.map +1 -1
- package/dist/components/data-table/pagination.js +16 -12
- package/dist/components/data-table/pagination.js.map +1 -1
- package/dist/components/data-views/data-row-list.js +1 -1
- package/dist/components/data-views/data-row-list.js.map +1 -1
- package/dist/components/data-views/hub-table.d.ts +8 -4
- package/dist/components/data-views/hub-table.js +31 -16
- package/dist/components/data-views/hub-table.js.map +1 -1
- package/dist/components/data-views/index.d.ts +1 -1
- package/dist/components/data-views/index.js +31 -16
- package/dist/components/data-views/index.js.map +1 -1
- package/dist/components/data-views/list-page-connected-view-body.d.ts +1 -1
- package/dist/components/data-views/list-page-connected-view-body.js +1 -0
- package/dist/components/data-views/list-page-connected-view-body.js.map +1 -1
- package/dist/components/table-properties/column-row.js +1 -1
- package/dist/components/table-properties/column-row.js.map +1 -1
- package/dist/components/table-properties/drawer-button.js +6 -5
- package/dist/components/table-properties/drawer-button.js.map +1 -1
- package/dist/components/table-properties/drawer.js +6 -5
- package/dist/components/table-properties/drawer.js.map +1 -1
- package/dist/components/table-properties/filter-card.js +2 -2
- package/dist/components/table-properties/filter-card.js.map +1 -1
- package/dist/components/table-properties/index.d.ts +1 -1
- package/dist/components/table-properties/index.js +6 -5
- package/dist/components/table-properties/index.js.map +1 -1
- package/dist/components/table-properties/sort-card.js +1 -1
- package/dist/components/table-properties/sort-card.js.map +1 -1
- package/dist/components/templates/index.d.ts +1 -1
- package/dist/components/templates/index.js +16 -6
- package/dist/components/templates/index.js.map +1 -1
- package/dist/components/templates/list-page.d.ts +4 -2
- package/dist/components/templates/list-page.js +16 -6
- package/dist/components/templates/list-page.js.map +1 -1
- package/dist/components/ui/banner.d.ts +2 -2
- package/dist/components/ui/banner.js +1 -1
- package/dist/components/ui/banner.js.map +1 -1
- package/dist/components/ui/coach-mark.js +1 -1
- package/dist/components/ui/coach-mark.js.map +1 -1
- package/dist/components/ui/context-menu.js +1 -1
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/date-picker-field.js +1 -1
- package/dist/components/ui/date-picker-field.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js +2 -2
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/export-drawer.js +3 -3
- package/dist/components/ui/export-drawer.js.map +1 -1
- package/dist/components/ui/hover-card.js +1 -1
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/key-metrics.js +6 -6
- package/dist/components/ui/key-metrics.js.map +1 -1
- package/dist/components/ui/page-header.js +1 -1
- package/dist/components/ui/page-header.js.map +1 -1
- package/dist/components/ui/popover.js +1 -1
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/select.js +1 -1
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/sheet.js +1 -1
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.d.ts +1 -1
- package/dist/components/ui/sidebar.js +3 -3
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/tip.js +1 -1
- package/dist/components/ui/tip.js.map +1 -1
- package/dist/components/ui/tooltip.js +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/view-segmented-control.js +1 -1
- package/dist/components/ui/view-segmented-control.js.map +1 -1
- package/dist/{data-list-view-registry-CyBoBML4.d.ts → data-list-view-registry-BstmlfQ3.d.ts} +16 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +151 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/data-list-view-registry.d.ts +1 -1
- package/dist/lib/data-list-view-registry.js +17 -1
- package/dist/lib/data-list-view-registry.js.map +1 -1
- package/dist/lib/data-list-view-surface.d.ts +1 -1
- package/dist/lib/data-list-view-surface.js +1 -0
- package/dist/lib/data-list-view-surface.js.map +1 -1
- package/dist/lib/list-page-table-properties.d.ts +1 -1
- package/dist/lib/list-page-table-properties.js +1 -0
- package/dist/lib/list-page-table-properties.js.map +1 -1
- package/dist/lib/nav-active.d.ts +38 -0
- package/dist/lib/nav-active.js +104 -0
- package/dist/lib/nav-active.js.map +1 -0
- package/package.json +1 -1
- package/src/components/data-table/index.tsx +25 -17
- package/src/components/data-views/data-row-list.tsx +1 -1
- package/src/components/data-views/hub-table.tsx +9 -3
- package/src/components/templates/list-page.tsx +9 -3
- package/src/components/ui/banner.tsx +0 -2
- package/src/components/ui/coach-mark.tsx +1 -2
- package/src/components/ui/context-menu.tsx +1 -1
- package/src/components/ui/dropdown-menu.tsx +2 -2
- package/src/components/ui/hover-card.tsx +1 -1
- package/src/components/ui/key-metrics.tsx +4 -4
- package/src/components/ui/popover.tsx +1 -1
- package/src/components/ui/select.tsx +1 -1
- package/src/components/ui/sheet.tsx +1 -1
- package/src/components/ui/sidebar.tsx +3 -3
- package/src/components/ui/tooltip.tsx +1 -1
- package/src/index.ts +1 -0
- package/src/lib/data-list-view-registry.ts +31 -0
- package/src/lib/nav-active.ts +162 -0
- package/template/.claude/skills/exxat-ds-skill/SKILL.md +2 -1
- package/template/AGENTS.md +16 -1
- package/template/components/columns-client.tsx +3 -2
- package/template/components/columns-showcase.tsx +22 -18
- package/template/components/exxat-product-logo.tsx +1 -1
- package/template/components/library-table.tsx +62 -23
- package/template/components/new-library-item-form.tsx +0 -7
- package/template/components/product-wordmark.tsx +1 -1
- package/template/components/sidebar/app-sidebar.tsx +14 -106
- package/template/components/sidebar/secondary-nav.tsx +22 -4
- package/template/components/tokens-hub-auxiliary-views.tsx +301 -0
- package/template/components/tokens-themes-client.tsx +44 -16
- package/template/docs/HANDBOOK.md +1 -1
- package/template/docs/data-views-pattern.md +6 -0
- package/template/docs/glossary.md +2 -1
- package/template/docs/hub-supported-views-pattern.md +53 -0
- package/template/docs/reference-implementations.md +2 -2
- package/template/lib/full-hub-supported-views.ts +8 -0
- package/template/lib/library-supported-views.ts +5 -12
- package/template/package.json +11 -0
- package/tokens/hooks-index.json +2 -2
|
@@ -90,7 +90,7 @@ function DataRowListVirtualized({
|
|
|
90
90
|
{
|
|
91
91
|
"data-index": vr.index,
|
|
92
92
|
ref: virtualizer.measureElement,
|
|
93
|
-
className: cn("absolute
|
|
93
|
+
className: cn("absolute start-0 top-0 w-full pb-2", rowClassName),
|
|
94
94
|
style: { transform: `translateY(${vr.start}px)` },
|
|
95
95
|
children: renderRow(row, vr.index)
|
|
96
96
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/data-views/data-row-list.tsx"],"names":[],"mappings":";;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACgBA,IAAM,4BAAA,GAA+B,GAAA;AACrC,IAAM,4BAAA,GAA+B,EAAA;AACrC,IAAM,gBAAA,GAAmB,CAAA;AA8BzB,IAAM,mBAAA,GAAsB,sDAAA;AAErB,SAAS,YAAkB,KAAA,EAA+B;AAC/D,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,mBAAA,GAAsB,4BAAA;AAAA,IACtB,kBAAA,GAAqB,4BAAA;AAAA,IACrB,SAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,IAAI,UAAA,IAAc,MAAM,OAAO,IAAA;AAC/B,IAAA,IAAI,OAAO,eAAe,QAAA,EAAU;AAClC,MAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAU,gCAAA,EACb,8BAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA,UAAA,EAAW,CAAA,EAC3D,CAAA;AAAA,IAEJ;AACA,IAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EAAkC,QAAA,EAAA,UAAA,EAAW,CAAA;AAAA,EACrE;AAEA,EAAA,IAAI,mBAAA,GAAsB,CAAA,IAAK,IAAA,CAAK,MAAA,IAAU,mBAAA,EAAqB;AACjE,IAAA,uBACE,GAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA;AAAA,QACA,kBAAA;AAAA,QACA,SAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAG,YAAA,EAAY,SAAA,EAAW,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,SAAS,CAAA,EACpE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAK,CAAA,qBACd,GAAA,CAAC,IAAA,EAAA,EAA0B,SAAA,EAAW,YAAA,EACnC,QAAA,EAAA,SAAA,CAAU,GAAA,EAAK,CAAC,CAAA,EAAA,EADV,QAAA,CAAS,GAAA,EAAK,CAAC,CAExB,CACD,CAAA,EACH,CAAA;AAEJ;AAQA,SAAS,sBAAA,CAA6B;AAAA,EACpC,IAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAQG;AACD,EAAA,MAAM,SAAA,GAAkB,aAA8B,IAAI,CAAA;AAK1D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAU,eAAS,CAAC,CAAA;AAExD,EAAA,MAAM,kBAAA,GAA2B,kBAAY,MAAM;AACjD,IAAA,MAAM,KAAK,SAAA,CAAU,OAAA;AACrB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,eAAA,CAAgB,EAAA,CAAG,qBAAA,EAAsB,CAAE,GAAA,GAAM,OAAO,OAAO,CAAA;AAAA,EACjE,CAAA,EAAG,EAAE,CAAA;AAEL,EAAM,sBAAgB,MAAM;AAC1B,IAAA,kBAAA,EAAmB;AACnB,IAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,kBAAkB,CAAA;AACpD,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,QAAA,EAAU,kBAAkB,CAAA;AAAA,EACtE,CAAA,EAAG,CAAC,kBAAA,EAAoB,IAAA,CAAK,MAAM,CAAC,CAAA;AAEpC,EAAA,MAAM,cAAc,oBAAA,CAAqB;AAAA,IACvC,OAAO,IAAA,CAAK,MAAA;AAAA,IACZ,cAAc,MAAM,kBAAA;AAAA,IACpB,QAAA,EAAU,gBAAA;AAAA,IACV,YAAA;AAAA,IACA,UAAA,EAAY,OAAK,MAAA,CAAO,QAAA,CAAS,KAAK,CAAC,CAAA,EAAG,CAAC,CAAC;AAAA,GAC7C,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,YAAY,YAAA,EAAa;AAE3C,EAAA,uBACE,GAAA,CAAC,SAAI,GAAA,EAAK,SAAA,EAAW,WAAW,EAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA,EACpE,QAAA,kBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,EAAK;AAAA,MAEjC,QAAA,EAAA,WAAA,CAAY,eAAA,EAAgB,CAAE,GAAA,CAAI,CAAA,EAAA,KAAM;AACvC,QAAA,MAAM,GAAA,GAAM,IAAA,CAAK,EAAA,CAAG,KAAK,CAAA;AACzB,QAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,QAAA,uBACE,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,cAAY,EAAA,CAAG,KAAA;AAAA,YACf,KAAK,WAAA,CAAY,cAAA;AAAA,YACjB,SAAA,EAAW,EAAA,CAAG,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/data-views/data-row-list.tsx"],"names":[],"mappings":"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","file":"data-row-list.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\n/**\n * DataRowList — generic vertical-stack list view used by every hub's \"list\"\n * tab (placements, team, compliance, sites, library, …). Replaces the\n * hand-rolled `<ul …flex-col gap-2 px-4 pb-8 pt-2 lg:px-6> {rows.map(<li>…)}`\n * shell that was duplicated across `*-list-view.tsx` files.\n *\n * Composition over inheritance: callers provide a `renderRow(row)` that\n * returns whatever ListPageBoardCard / link / chip-stack they need — this\n * component owns the chrome (spacing, empty state, virtualization), not the\n * row body.\n *\n * Auto-virtualises with `@tanstack/react-virtual` when the row count meets\n * `virtualizeThreshold` (default 100). Disable by passing `0`.\n */\n\nimport * as React from \"react\"\nimport { useWindowVirtualizer } from \"@tanstack/react-virtual\"\nimport { cn } from \"../../lib/utils\"\n\nconst DEFAULT_VIRTUALIZE_THRESHOLD = 100\nconst DEFAULT_ESTIMATED_ROW_HEIGHT = 96\nconst DEFAULT_OVERSCAN = 8\n\nexport interface DataRowListProps<TRow> {\n /** The filtered/sorted rows from `tableState.rows` (or wherever). */\n rows: readonly TRow[]\n /** Stable id used as the React `key` and (for virtualizer) the v-key. */\n getRowId: (row: TRow, index: number) => string | number\n /** Render the body of one row. Wrap with `<ListPageBoardCard layout=\"row\">` etc. */\n renderRow: (row: TRow, index: number) => React.ReactNode\n /**\n * Shown when `rows.length === 0`. Strings render as muted body copy; pass\n * a `ReactNode` for richer empty states (illustration, CTA, etc.).\n */\n emptyState?: React.ReactNode\n /**\n * Auto-virtualise when `rows.length >= virtualizeThreshold`. Default 100.\n * Pass `0` to never virtualise (preserves predictable layout for short\n * lists like dashboards / pinned tabs).\n */\n virtualizeThreshold?: number\n /** Hint for the virtualizer; clamps to measured size after first paint. */\n estimatedRowHeight?: number\n /** Override the default container padding / gap if needed. */\n className?: string\n /** Override the per-row `<li>` className (e.g. tighter spacing). */\n rowClassName?: string\n /** `aria-label` for the `<ul>` (screen-reader name for the list). */\n ariaLabel?: string\n}\n\nconst DEFAULT_OUTER_CLASS = \"flex list-none flex-col gap-2 px-4 pb-8 pt-2 lg:px-6\"\n\nexport function DataRowList<TRow>(props: DataRowListProps<TRow>) {\n const {\n rows,\n getRowId,\n renderRow,\n emptyState,\n virtualizeThreshold = DEFAULT_VIRTUALIZE_THRESHOLD,\n estimatedRowHeight = DEFAULT_ESTIMATED_ROW_HEIGHT,\n className,\n rowClassName,\n ariaLabel,\n } = props\n\n if (rows.length === 0) {\n if (emptyState == null) return null\n if (typeof emptyState === \"string\") {\n return (\n <div className=\"px-4 py-16 text-center lg:px-6\">\n <p className=\"text-sm text-muted-foreground\">{emptyState}</p>\n </div>\n )\n }\n return <div className=\"px-4 py-16 text-center lg:px-6\">{emptyState}</div>\n }\n\n if (virtualizeThreshold > 0 && rows.length >= virtualizeThreshold) {\n return (\n <DataRowListVirtualized\n rows={rows}\n getRowId={getRowId}\n renderRow={renderRow}\n estimatedRowHeight={estimatedRowHeight}\n className={className}\n rowClassName={rowClassName}\n ariaLabel={ariaLabel}\n />\n )\n }\n\n return (\n <ul aria-label={ariaLabel} className={cn(DEFAULT_OUTER_CLASS, className)}>\n {rows.map((row, i) => (\n <li key={getRowId(row, i)} className={rowClassName}>\n {renderRow(row, i)}\n </li>\n ))}\n </ul>\n )\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Virtualised variant — keeps the DOM short on long lists (e.g. 1000+ rows).\n// Uses `useWindowVirtualizer` so the page scroll drives row recycling; this\n// is the right tool for hub-level lists (not nested-scroll containers).\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction DataRowListVirtualized<TRow>({\n rows,\n getRowId,\n renderRow,\n estimatedRowHeight,\n className,\n rowClassName,\n ariaLabel,\n}: {\n rows: readonly TRow[]\n getRowId: (row: TRow, index: number) => string | number\n renderRow: (row: TRow, index: number) => React.ReactNode\n estimatedRowHeight: number\n className?: string\n rowClassName?: string\n ariaLabel?: string\n}) {\n const anchorRef = React.useRef<HTMLDivElement | null>(null)\n // `scrollMargin` is read by the virtualizer during render, so it has to\n // be state (not a ref). We measure with `useLayoutEffect` after the first\n // paint and on resize so window-scroll math stays accurate when the page\n // layout shifts (sidebar collapse, banner, etc.).\n const [scrollMargin, setScrollMargin] = React.useState(0)\n\n const updateScrollMargin = React.useCallback(() => {\n const el = anchorRef.current\n if (!el) return\n setScrollMargin(el.getBoundingClientRect().top + window.scrollY)\n }, [])\n\n React.useLayoutEffect(() => {\n updateScrollMargin()\n window.addEventListener(\"resize\", updateScrollMargin)\n return () => window.removeEventListener(\"resize\", updateScrollMargin)\n }, [updateScrollMargin, rows.length])\n\n const virtualizer = useWindowVirtualizer({\n count: rows.length,\n estimateSize: () => estimatedRowHeight,\n overscan: DEFAULT_OVERSCAN,\n scrollMargin,\n getItemKey: i => String(getRowId(rows[i], i)),\n })\n\n const totalSize = virtualizer.getTotalSize()\n\n return (\n <div ref={anchorRef} className={cn(\"px-4 pb-8 pt-2 lg:px-6\", className)}>\n <ul\n aria-label={ariaLabel}\n className=\"relative m-0 w-full list-none p-0\"\n style={{ height: `${totalSize}px` }}\n >\n {virtualizer.getVirtualItems().map(vr => {\n const row = rows[vr.index]\n if (!row) return null\n return (\n <li\n key={vr.key}\n data-index={vr.index}\n ref={virtualizer.measureElement}\n className={cn(\"absolute start-0 top-0 w-full pb-2\", rowClassName)}\n style={{ transform: `translateY(${vr.start}px)` }}\n >\n {renderRow(row, vr.index)}\n </li>\n )\n })}\n </ul>\n </div>\n )\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { ColumnDef } from '../data-table/types.js';
|
|
4
4
|
import { useTableState } from '../data-table/use-table-state.js';
|
|
5
5
|
import { DataListViewType } from '../../lib/data-list-view.js';
|
|
6
|
-
import { c as DataListViewRenderKind } from '../../data-list-view-registry-
|
|
6
|
+
import { c as DataListViewRenderKind } from '../../data-list-view-registry-BstmlfQ3.js';
|
|
7
7
|
import { DataListDisplayOptions } from '../../lib/data-list-display-options.js';
|
|
8
8
|
import { FilterFieldDef, ConditionalRule } from '../../lib/table-properties-types.js';
|
|
9
9
|
import { ListPageBoardColumnDef } from './list-page-board-template.js';
|
|
@@ -74,8 +74,12 @@ interface HubTableProps<TRow extends Record<string, unknown>> {
|
|
|
74
74
|
/** Active view from the `ListPageTemplate` tab. */
|
|
75
75
|
view: DataListViewType;
|
|
76
76
|
onViewChange?: (v: DataListViewType) => void;
|
|
77
|
-
/**
|
|
78
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Allowlist passed to `TablePropertiesDrawerButton` so Properties cannot offer unsupported views.
|
|
79
|
+
* Defaults to {@link FULL_HUB_SUPPORTED_VIEWS} when omitted — keep in sync with
|
|
80
|
+
* `ListPageTemplate.supportedViewTypes` on the same hub.
|
|
81
|
+
*/
|
|
82
|
+
supportedViewTypes?: readonly DataListViewType[];
|
|
79
83
|
/** Used by `ListPageViewNotConfigured` when a supported view has no renderer. */
|
|
80
84
|
hubLabel: string;
|
|
81
85
|
/** Shown below "Properties" in the drawer header. */
|
|
@@ -165,7 +169,7 @@ interface HubTableProps<TRow extends Record<string, unknown>> {
|
|
|
165
169
|
/** Empty column copy for the default board renderer. Defaults to "No items". */
|
|
166
170
|
boardEmptyColumnLabel?: string;
|
|
167
171
|
}
|
|
168
|
-
declare function HubTable<TRow extends Record<string, unknown>>({ rows, columns, view, onViewChange, supportedViewTypes, hubLabel, lifecycleTabLabel, searchAriaLabel, getRowId, getRowSelectionLabel, defaultSort, emptyState, renderers, bulkActionsSlot, boardGroupByColumnOptions, displayOptionsInit, renderFilterOptionValue, groupable, selectable, onRowClick, displayOptions: displayOptionsControlled, onDisplayOptionsChange: onDisplayOptionsChangeControlled, pagination, onPaginationChange, handleRef, tableRenderer, paginationOverride, paginationPageSizeOptions, paginationInitialPageSize, syncedSearchFromUrl, renderListRow, listAriaLabel, listEmptyState, listVirtualizeThreshold, listEstimatedRowHeight, renderBoardCard, boardGroups, boardColumnCountBadgeClassName, boardEmptyColumnLabel, }: HubTableProps<TRow>): react_jsx_runtime.JSX.Element;
|
|
172
|
+
declare function HubTable<TRow extends Record<string, unknown>>({ rows, columns, view, onViewChange, supportedViewTypes: supportedViewTypesProp, hubLabel, lifecycleTabLabel, searchAriaLabel, getRowId, getRowSelectionLabel, defaultSort, emptyState, renderers, bulkActionsSlot, boardGroupByColumnOptions, displayOptionsInit, renderFilterOptionValue, groupable, selectable, onRowClick, displayOptions: displayOptionsControlled, onDisplayOptionsChange: onDisplayOptionsChangeControlled, pagination, onPaginationChange, handleRef, tableRenderer, paginationOverride, paginationPageSizeOptions, paginationInitialPageSize, syncedSearchFromUrl, renderListRow, listAriaLabel, listEmptyState, listVirtualizeThreshold, listEstimatedRowHeight, renderBoardCard, boardGroups, boardColumnCountBadgeClassName, boardEmptyColumnLabel, }: HubTableProps<TRow>): react_jsx_runtime.JSX.Element;
|
|
169
173
|
declare namespace HubTable {
|
|
170
174
|
var displayName: string;
|
|
171
175
|
}
|
|
@@ -177,7 +177,7 @@ function TooltipContent({
|
|
|
177
177
|
"data-slot": "tooltip-content",
|
|
178
178
|
sideOffset,
|
|
179
179
|
className: cn(
|
|
180
|
-
"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
180
|
+
"z-50 inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
181
181
|
className
|
|
182
182
|
),
|
|
183
183
|
...props,
|
|
@@ -373,7 +373,7 @@ function DropdownMenuContent({
|
|
|
373
373
|
sideOffset,
|
|
374
374
|
align,
|
|
375
375
|
className: cn(
|
|
376
|
-
"z-50 max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
376
|
+
"z-50 max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:overflow-hidden data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
377
377
|
DROPDOWN_MENU_CONTENT_SURFACE_CLASS,
|
|
378
378
|
className
|
|
379
379
|
),
|
|
@@ -483,7 +483,7 @@ function PopoverContent({
|
|
|
483
483
|
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
484
484
|
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
485
485
|
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
486
|
-
"data-[side=left]:slide-in-from-
|
|
486
|
+
"data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2",
|
|
487
487
|
className
|
|
488
488
|
),
|
|
489
489
|
...props
|
|
@@ -2282,13 +2282,15 @@ function useBulkBarFixedToTableScrollEl(scrollRef, active, fullWidth) {
|
|
|
2282
2282
|
const scheduled = rafThrottle(apply);
|
|
2283
2283
|
const ro = new ResizeObserver(scheduled);
|
|
2284
2284
|
ro.observe(el);
|
|
2285
|
+
el.addEventListener("scroll", scheduled, { passive: true });
|
|
2285
2286
|
window.addEventListener("resize", scheduled, { passive: true });
|
|
2286
|
-
window.addEventListener("scroll", scheduled, { passive: true
|
|
2287
|
+
window.addEventListener("scroll", scheduled, { passive: true });
|
|
2287
2288
|
return () => {
|
|
2288
2289
|
scheduled.cancel();
|
|
2289
2290
|
ro.disconnect();
|
|
2291
|
+
el.removeEventListener("scroll", scheduled);
|
|
2290
2292
|
window.removeEventListener("resize", scheduled);
|
|
2291
|
-
window.removeEventListener("scroll", scheduled
|
|
2293
|
+
window.removeEventListener("scroll", scheduled);
|
|
2292
2294
|
};
|
|
2293
2295
|
}, [active, fullWidth, scrollRef]);
|
|
2294
2296
|
return style;
|
|
@@ -2455,11 +2457,13 @@ function DataTableInner({
|
|
|
2455
2457
|
};
|
|
2456
2458
|
update();
|
|
2457
2459
|
const scheduled = rafThrottle(update);
|
|
2458
|
-
|
|
2460
|
+
wrapEl.addEventListener("scroll", scheduled, { passive: true });
|
|
2461
|
+
window.addEventListener("scroll", scheduled, { passive: true });
|
|
2459
2462
|
window.addEventListener("resize", scheduled, { passive: true });
|
|
2460
2463
|
return () => {
|
|
2461
2464
|
scheduled.cancel();
|
|
2462
|
-
|
|
2465
|
+
wrapEl.removeEventListener("scroll", scheduled);
|
|
2466
|
+
window.removeEventListener("scroll", scheduled);
|
|
2463
2467
|
window.removeEventListener("resize", scheduled);
|
|
2464
2468
|
};
|
|
2465
2469
|
}, [showColumnHeaders, rows.length, displayCols.length]);
|
|
@@ -2896,11 +2900,11 @@ function DataTableInner({
|
|
|
2896
2900
|
const rowPy = rowHeight === "compact" ? "py-1" : rowHeight === "comfortable" ? "py-4" : "py-2.5";
|
|
2897
2901
|
const cs = cellStyle(col.key);
|
|
2898
2902
|
const tdBase = cn(
|
|
2899
|
-
`px-3 ${rowPy} align-middle`,
|
|
2903
|
+
`px-3 ${rowPy} align-middle max-w-0`,
|
|
2900
2904
|
showGridlines && !isEdgePin && "border-e border-border last:border-e-0",
|
|
2901
2905
|
"border-b border-border group-last/row:border-b-0",
|
|
2902
2906
|
isPinned && [
|
|
2903
|
-
"z-20 pinned-cell",
|
|
2907
|
+
"z-20 pinned-cell relative",
|
|
2904
2908
|
"bg-dt-row-bg",
|
|
2905
2909
|
"group-data-[state=selected]/row:bg-dt-row-selected",
|
|
2906
2910
|
"group-hover/row:bg-dt-row-hover",
|
|
@@ -2950,17 +2954,17 @@ function DataTableInner({
|
|
|
2950
2954
|
wrap && "[&_.truncate]:!whitespace-normal [&_.truncate]:!overflow-visible [&_.truncate]:!text-clip"
|
|
2951
2955
|
),
|
|
2952
2956
|
style: tdStyle,
|
|
2953
|
-
children: col.cell(row, {
|
|
2957
|
+
children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: col.cell(row, {
|
|
2954
2958
|
rowIndex,
|
|
2955
2959
|
selected: isSelected,
|
|
2956
2960
|
onSelect: (checked) => checked ? setSelected((prev) => /* @__PURE__ */ new Set([...prev, rowId])) : toggleRow(rowId)
|
|
2957
|
-
})
|
|
2961
|
+
}) })
|
|
2958
2962
|
},
|
|
2959
2963
|
col.key
|
|
2960
2964
|
);
|
|
2961
2965
|
}
|
|
2962
2966
|
const rawVal = String(row[col.key] ?? "");
|
|
2963
|
-
return /* @__PURE__ */ jsx("td", { className: cn(tdBase, "text-sm text-foreground/80"), style: tdStyle, children: /* @__PURE__ */ jsx("span", { className: wrap ? "whitespace-normal" : "block truncate", title: !wrap ? rawVal : void 0, children: rawVal }) }, col.key);
|
|
2967
|
+
return /* @__PURE__ */ jsx("td", { className: cn(tdBase, "text-sm text-foreground/80"), style: tdStyle, children: /* @__PURE__ */ jsx("div", { className: "min-w-0 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: wrap ? "whitespace-normal" : "block truncate", title: !wrap ? rawVal : void 0, children: rawVal }) }) }, col.key);
|
|
2964
2968
|
})
|
|
2965
2969
|
},
|
|
2966
2970
|
String(rowId)
|
|
@@ -3288,6 +3292,16 @@ var BY_VALUE = new Map(
|
|
|
3288
3292
|
DEFINITIONS.map((d) => [d.value, d])
|
|
3289
3293
|
);
|
|
3290
3294
|
var DATA_LIST_VIEW_REGISTRY = DEFINITIONS;
|
|
3295
|
+
var FULL_HUB_SUPPORTED_VIEWS = [
|
|
3296
|
+
"table",
|
|
3297
|
+
"list",
|
|
3298
|
+
"board",
|
|
3299
|
+
"dashboard",
|
|
3300
|
+
"folder",
|
|
3301
|
+
"panel",
|
|
3302
|
+
"tree-panel"
|
|
3303
|
+
];
|
|
3304
|
+
DATA_LIST_VIEW_REGISTRY.map((d) => d.value);
|
|
3291
3305
|
function dataListViewDefinition(view) {
|
|
3292
3306
|
const def = BY_VALUE.get(view);
|
|
3293
3307
|
if (!def) {
|
|
@@ -3682,7 +3696,7 @@ function SheetContent({
|
|
|
3682
3696
|
"data-slot": "sheet-content",
|
|
3683
3697
|
"data-side": side,
|
|
3684
3698
|
className: cn(
|
|
3685
|
-
"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg outline-none duration-300 ease-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:
|
|
3699
|
+
"fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg outline-none duration-300 ease-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:start-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-e data-[side=right]:inset-y-0 data-[side=right]:end-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-s data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-6 data-[side=left]:data-open:slide-in-from-start-6 data-[side=right]:data-open:slide-in-from-end-6 data-[side=top]:data-open:slide-in-from-top-6 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-6 data-[side=left]:data-closed:slide-out-to-start-6 data-[side=right]:data-closed:slide-out-to-end-6 data-[side=top]:data-closed:slide-out-to-top-6",
|
|
3686
3700
|
className
|
|
3687
3701
|
),
|
|
3688
3702
|
...props,
|
|
@@ -3766,7 +3780,7 @@ function SelectContent({
|
|
|
3766
3780
|
{
|
|
3767
3781
|
"data-slot": "select-content",
|
|
3768
3782
|
"data-align-trigger": position === "item-aligned",
|
|
3769
|
-
className: cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-
|
|
3783
|
+
className: cn("relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 rtl:data-[side=left]:translate-x-1 data-[side=right]:translate-x-1 rtl:data-[side=right]:-translate-x-1 data-[side=top]:-translate-y-1", className),
|
|
3770
3784
|
position,
|
|
3771
3785
|
align,
|
|
3772
3786
|
...props,
|
|
@@ -5308,7 +5322,7 @@ function DataRowListVirtualized({
|
|
|
5308
5322
|
{
|
|
5309
5323
|
"data-index": vr.index,
|
|
5310
5324
|
ref: virtualizer.measureElement,
|
|
5311
|
-
className: cn("absolute
|
|
5325
|
+
className: cn("absolute start-0 top-0 w-full pb-2", rowClassName),
|
|
5312
5326
|
style: { transform: `translateY(${vr.start}px)` },
|
|
5313
5327
|
children: renderRow(row, vr.index)
|
|
5314
5328
|
},
|
|
@@ -5469,7 +5483,7 @@ function HubTable({
|
|
|
5469
5483
|
columns,
|
|
5470
5484
|
view,
|
|
5471
5485
|
onViewChange,
|
|
5472
|
-
supportedViewTypes,
|
|
5486
|
+
supportedViewTypes: supportedViewTypesProp,
|
|
5473
5487
|
hubLabel,
|
|
5474
5488
|
lifecycleTabLabel,
|
|
5475
5489
|
searchAriaLabel,
|
|
@@ -5505,6 +5519,7 @@ function HubTable({
|
|
|
5505
5519
|
boardColumnCountBadgeClassName,
|
|
5506
5520
|
boardEmptyColumnLabel
|
|
5507
5521
|
}) {
|
|
5522
|
+
const supportedViewTypes = supportedViewTypesProp ?? FULL_HUB_SUPPORTED_VIEWS;
|
|
5508
5523
|
const filterFields = React10.useMemo(() => columnsToFilterFields(columns), [columns]);
|
|
5509
5524
|
const fieldDefinitions = React10.useMemo(() => columnsToFieldDefinitions(columns), [columns]);
|
|
5510
5525
|
const resolveColumnLabel = React10.useCallback(
|