@12-apps/ui 6.13.2 → 6.14.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.
Files changed (112) hide show
  1. package/dist/_internal/components/data-display/Carousel/Carousel.js +3 -3
  2. package/dist/_internal/components/data-display/Chart/SpecChart.js +3 -3
  3. package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
  4. package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +20 -18
  5. package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +23 -21
  6. package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +2 -2
  7. package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
  8. package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
  9. package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +2 -2
  10. package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +4 -4
  11. package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
  12. package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +19 -17
  13. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +12 -0
  14. package/dist/_internal/components/data-display/DataViews/data-views-header-row.js.map +1 -0
  15. package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +6 -6
  16. package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +4 -4
  17. package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +5 -5
  18. package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
  19. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js +8 -0
  20. package/dist/_internal/components/data-display/DataViews/data-views-selection-extra.js.map +1 -0
  21. package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +6 -6
  22. package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +3 -3
  23. package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +5 -5
  24. package/dist/_internal/components/data-display/index.js +16 -16
  25. package/dist/_internal/components/index.js +17 -17
  26. package/dist/_internal/components/layout/ContentToolbar/ContentToolbar.js +1 -1
  27. package/dist/_internal/components/layout/index.js +1 -1
  28. package/dist/charts.js +11 -11
  29. package/dist/{chunk-HNDUCGM3.js → chunk-62WEMJV3.js} +2 -2
  30. package/dist/chunk-62WEMJV3.js.map +1 -0
  31. package/dist/chunk-A4YWFX5C.js +39 -0
  32. package/dist/chunk-A4YWFX5C.js.map +1 -0
  33. package/dist/{chunk-HRJ27X5B.js → chunk-BPCYXLWY.js} +4 -4
  34. package/dist/{chunk-XEE7PLDR.js → chunk-DFLTUI7W.js} +7 -7
  35. package/dist/{chunk-AWTERXCW.js → chunk-GNAAHDCN.js} +4 -2
  36. package/dist/chunk-GNAAHDCN.js.map +1 -0
  37. package/dist/{chunk-HGBZZDP6.js → chunk-J4DDXHLB.js} +4 -4
  38. package/dist/chunk-KX75HM5U.js +20 -0
  39. package/dist/chunk-KX75HM5U.js.map +1 -0
  40. package/dist/{chunk-Q4ITS2EP.js → chunk-LNIVT62P.js} +14 -38
  41. package/dist/chunk-LNIVT62P.js.map +1 -0
  42. package/dist/{chunk-RUO4D4N6.js → chunk-LPNF4YJ7.js} +3 -3
  43. package/dist/{chunk-QQE2PVLO.js → chunk-M6365FGG.js} +2 -2
  44. package/dist/{chunk-RDYBS45D.js → chunk-O6MZPB64.js} +2 -2
  45. package/dist/{chunk-4KSOSI3U.js → chunk-O6V7KKW7.js} +4 -4
  46. package/dist/{chunk-4VNUOSTQ.js → chunk-PHA3NFZM.js} +2 -2
  47. package/dist/{chunk-6PFBYCBU.js → chunk-QIKTIKO6.js} +2 -2
  48. package/dist/{chunk-X5MPHXG5.js → chunk-RPWEXIAW.js} +6 -6
  49. package/dist/{chunk-2WWKBD4D.js → chunk-TSPHRZ4U.js} +5 -1
  50. package/dist/chunk-TSPHRZ4U.js.map +1 -0
  51. package/dist/{chunk-RRYQG5Y6.js → chunk-U5RIDMMV.js} +3 -3
  52. package/dist/chunk-U5RIDMMV.js.map +1 -0
  53. package/dist/{chunk-N6JGYVRY.js → chunk-UENDC45F.js} +2 -2
  54. package/dist/{chunk-4ZEU22L2.js → chunk-XPS7FWZS.js} +4 -4
  55. package/dist/{chunk-WXBBWSNU.js → chunk-ZNGUDGKW.js} +6 -5
  56. package/dist/chunk-ZNGUDGKW.js.map +1 -0
  57. package/dist/data-display/CardKit.js +4 -4
  58. package/dist/data-display/Carousel.js +3 -3
  59. package/dist/data-display/Chart.js +11 -11
  60. package/dist/data-display/DataGrid.js +2 -2
  61. package/dist/data-display/DataViews.js +31 -29
  62. package/dist/layout/ContentToolbar.js +1 -1
  63. package/dist/types/components/data-display/DataViews/DataViewsGrid.d.ts +12 -0
  64. package/dist/types/components/data-display/DataViews/DataViewsGrid.d.ts.map +1 -1
  65. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts +3 -0
  66. package/dist/types/components/data-display/DataViews/DataViewsTableBase.d.ts.map +1 -1
  67. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts +3 -0
  68. package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
  69. package/dist/types/components/data-display/DataViews/data-views-header-row.d.ts +18 -0
  70. package/dist/types/components/data-display/DataViews/data-views-header-row.d.ts.map +1 -0
  71. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts +50 -0
  72. package/dist/types/components/data-display/DataViews/data-views-selection-extra.d.ts.map +1 -0
  73. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts +3 -1
  74. package/dist/types/components/data-display/DataViews/data-views-shell-toolbar.d.ts.map +1 -1
  75. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts +2 -0
  76. package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
  77. package/dist/types/components/data-display/DataViews/index.d.ts +1 -0
  78. package/dist/types/components/data-display/DataViews/index.d.ts.map +1 -1
  79. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
  80. package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
  81. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +15 -0
  82. package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
  83. package/package.json +1 -1
  84. package/src/components/data-display/DataViews/DataViewsGrid.tsx +12 -0
  85. package/src/components/data-display/DataViews/DataViewsTableBase.tsx +3 -0
  86. package/src/components/data-display/DataViews/data-views-grid-parts.tsx +5 -50
  87. package/src/components/data-display/DataViews/data-views-header-row.tsx +52 -0
  88. package/src/components/data-display/DataViews/data-views-selection-extra.ts +67 -0
  89. package/src/components/data-display/DataViews/data-views-shell-toolbar.tsx +4 -0
  90. package/src/components/data-display/DataViews/data-views-toolbar.tsx +3 -0
  91. package/src/components/data-display/DataViews/index.ts +1 -0
  92. package/src/components/layout/ContentToolbar/ContentToolbar.md +10 -3
  93. package/src/components/layout/ContentToolbar/ContentToolbar.tsx +5 -0
  94. package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +15 -0
  95. package/dist/chunk-2WWKBD4D.js.map +0 -1
  96. package/dist/chunk-AWTERXCW.js.map +0 -1
  97. package/dist/chunk-HNDUCGM3.js.map +0 -1
  98. package/dist/chunk-Q4ITS2EP.js.map +0 -1
  99. package/dist/chunk-RRYQG5Y6.js.map +0 -1
  100. package/dist/chunk-WXBBWSNU.js.map +0 -1
  101. /package/dist/{chunk-HRJ27X5B.js.map → chunk-BPCYXLWY.js.map} +0 -0
  102. /package/dist/{chunk-XEE7PLDR.js.map → chunk-DFLTUI7W.js.map} +0 -0
  103. /package/dist/{chunk-HGBZZDP6.js.map → chunk-J4DDXHLB.js.map} +0 -0
  104. /package/dist/{chunk-RUO4D4N6.js.map → chunk-LPNF4YJ7.js.map} +0 -0
  105. /package/dist/{chunk-QQE2PVLO.js.map → chunk-M6365FGG.js.map} +0 -0
  106. /package/dist/{chunk-RDYBS45D.js.map → chunk-O6MZPB64.js.map} +0 -0
  107. /package/dist/{chunk-4KSOSI3U.js.map → chunk-O6V7KKW7.js.map} +0 -0
  108. /package/dist/{chunk-4VNUOSTQ.js.map → chunk-PHA3NFZM.js.map} +0 -0
  109. /package/dist/{chunk-6PFBYCBU.js.map → chunk-QIKTIKO6.js.map} +0 -0
  110. /package/dist/{chunk-X5MPHXG5.js.map → chunk-RPWEXIAW.js.map} +0 -0
  111. /package/dist/{chunk-N6JGYVRY.js.map → chunk-UENDC45F.js.map} +0 -0
  112. /package/dist/{chunk-4ZEU22L2.js.map → chunk-XPS7FWZS.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"data-views-grid-parts.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-grid-parts.tsx"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAEhB,SAAS,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAwLlE,UAAU,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACnC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF;gDAC4C;IAC5C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,qBAAqB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3E;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,qBAAqB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9E,uEAAuE;IACvE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/B,mEAAmE;IACnE,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yDAAyD;IACzD,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,qEAAqE;IACrE,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,8FAA8F;IAC9F,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAiFD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsCxG"}
1
+ {"version":3,"file":"data-views-grid-parts.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-grid-parts.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The grid's own header row: the page title on the left, the primary page
3
+ * actions on the right.
4
+ *
5
+ * `title` and `headerActions` were DECLARED on `DataViewsGridProps` and
6
+ * `DataViewsTableBaseProps` but never destructured or forwarded — dead props
7
+ * whose types lied to every caller that set them. Wired here rather than
8
+ * deleted: a table that carries its own title keeps the title, the scope tabs
9
+ * and the toolbar as one block, instead of the page having to space them.
10
+ *
11
+ * Renders NOTHING when neither is supplied, so no existing table gains a row.
12
+ */
13
+ export declare function GridHeaderRow({ title, headerActions, testIdPrefix, }: {
14
+ title?: string;
15
+ headerActions?: React.ReactNode;
16
+ testIdPrefix: string;
17
+ }): React.JSX.Element | null;
18
+ //# sourceMappingURL=data-views-header-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-views-header-row.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-header-row.tsx"],"names":[],"mappings":"AAOA;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,YAAY,GACb,EAAE;IACD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAwB3B"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The selection-WIDENING slot: what a paginated grid needs so an operator can
3
+ * act on "everything matching the filter" rather than on the page in front of
4
+ * them.
5
+ *
6
+ * It is a slot of its own rather than a share of the bulk-actions menu because
7
+ * the two answer different questions — `actions` is what HAPPENS to the
8
+ * selection, this is what the selection IS. Folding a widening into the actions
9
+ * menu files "change what I picked" under "do this to what I picked", where
10
+ * every entry is expected to write something.
11
+ */
12
+ import type { DataViewsController } from "./use-data-views-state";
13
+ /**
14
+ * What a widening control gets to decide with.
15
+ *
16
+ * `allOnPageSelected` is the one thing a host cannot compute for itself, and
17
+ * the whole reason this is a context rather than a bare node: the grid owns
18
+ * which rows the page is currently rendering — server mode pages at the
19
+ * backend, so the host's `rows` prop and the page can differ mid-fetch — and
20
+ * "every row here is ticked" is the trigger a select-all-matching control
21
+ * hangs on. Deriving it host-side would be a second, slightly different answer
22
+ * to the question the grid already answers to draw its own header checkbox.
23
+ */
24
+ export interface SelectionExtraContext<T extends Record<string, unknown>> {
25
+ /** The selected rows, off-page ones included. */
26
+ selectedRows: T[];
27
+ /** Drop the whole selection. */
28
+ clearSelection: () => void;
29
+ /** Every row the page is rendering is selected — and the page is not empty. */
30
+ allOnPageSelected: boolean;
31
+ /** How many rows the page is rendering. */
32
+ pageRowCount: number;
33
+ }
34
+ /** The host's widening control, called only while something is selected. */
35
+ export type SelectionExtraRender<T extends Record<string, unknown>> = (context: SelectionExtraContext<T>) => React.ReactNode;
36
+ /**
37
+ * Resolve the host's control against the page on screen.
38
+ *
39
+ * Measured against `c.matched` — which in server mode IS the page — rather than
40
+ * the `rows` prop, so the answer cannot lag a page change.
41
+ *
42
+ * Returns `undefined` with nothing selected, so the toolbar renders no empty
43
+ * slot: a widening with nothing to widen is not a control.
44
+ */
45
+ export declare function resolveSelectionExtra<T extends Record<string, unknown>>({ c, getRowId, selectionExtra, }: {
46
+ c: DataViewsController<T>;
47
+ getRowId: (row: T) => string | number;
48
+ selectionExtra?: SelectionExtraRender<T>;
49
+ }): React.ReactNode;
50
+ //# sourceMappingURL=data-views-selection-extra.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-views-selection-extra.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-selection-extra.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtE,iDAAiD;IACjD,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,gCAAgC;IAChC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACpE,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,KAC9B,KAAK,CAAC,SAAS,CAAC;AAErB;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACvE,CAAC,EACD,QAAQ,EACR,cAAc,GACf,EAAE;IACD,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACtC,cAAc,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC1C,GAAG,KAAK,CAAC,SAAS,CASlB"}
@@ -6,7 +6,7 @@ import type { DataViewsController } from "./use-data-views-state";
6
6
  * The toolbar band, fed from the controller. Split out of `GridShell` for that
7
7
  * function's size budget — it is ~25 props of pure forwarding and nothing else.
8
8
  */
9
- export declare function ShellToolbar<T extends Record<string, unknown>>({ c, rows, testIdPrefix, rowActions, bulkActions, toolbarRightSlot, showInline, compactControls, counterHidden, sortKinds, displayView, exportConfig, filterControls, barRef, }: {
9
+ export declare function ShellToolbar<T extends Record<string, unknown>>({ c, rows, testIdPrefix, rowActions, bulkActions, selectionExtra, toolbarRightSlot, showInline, compactControls, counterHidden, sortKinds, displayView, exportConfig, filterControls, barRef, }: {
10
10
  c: DataViewsController<T>;
11
11
  rows: T[];
12
12
  testIdPrefix: string;
@@ -15,6 +15,8 @@ export declare function ShellToolbar<T extends Record<string, unknown>>({ c, row
15
15
  exportConfig?: DataViewExport;
16
16
  rowActions?: RowAction<T>[];
17
17
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
18
+ /** Already resolved by the shell, which is the party that knows the page. */
19
+ selectionExtra?: React.ReactNode;
18
20
  toolbarRightSlot?: React.ReactNode;
19
21
  /** Search + filters, rendered on the toolbar line (see `GridToolbar`). */
20
22
  filterControls?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"data-views-shell-toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-shell-toolbar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC9D,CAAC,EACD,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,cAAc,EACd,MAAM,GACP,EAAE;IACD,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqCpB;AAED,qFAAqF"}
1
+ {"version":3,"file":"data-views-shell-toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-shell-toolbar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC9D,CAAC,EACD,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,cAAc,EACd,MAAM,GACP,EAAE;IACD,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF,6EAA6E;IAC7E,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsCpB;AAED,qFAAqF"}
@@ -10,6 +10,8 @@ export interface GridToolbarProps<T extends Record<string, unknown>> {
10
10
  clearSelection: () => void;
11
11
  rowActions?: RowAction<T>[];
12
12
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
13
+ /** A control between the count and the actions menu — see `selectionExtra`. */
14
+ selectionExtra?: React.ReactNode;
13
15
  sortFields: SortFieldDefinition[];
14
16
  activeSortField: string;
15
17
  activeSortOrder: "asc" | "desc";
@@ -1 +1 @@
1
- {"version":3,"file":"data-views-toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-toolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,KAAK,GAAG,MAAM,CAAC;IAChC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,kFAAkF;IAClF,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,6EAA6E;IAC7E,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC1B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kFAAkF;IAClF,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,qDAAqD;IACrD,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAgED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwC5G"}
1
+ {"version":3,"file":"data-views-toolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-toolbar.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC;IACjF,+EAA+E;IAC/E,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,KAAK,GAAG,MAAM,CAAC;IAChC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,aAAa,EAAE,sBAAsB,EAAE,CAAC;IACxC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,kFAAkF;IAClF,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,6EAA6E;IAC7E,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC1B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kFAAkF;IAClF,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,qDAAqD;IACrD,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAgED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAyC5G"}
@@ -18,6 +18,7 @@ export { toSavedViewSummary, CARD_ASPECT_RATIOS, DATA_VIEWS_LAYOUTS } from "./da
18
18
  export { cardScaleForZoom, cardMinWidthForZoom } from "./data-views-layout-context";
19
19
  export { DataViewsBoard, type BoardConfig, type BoardGroup } from "./DataViewsBoard";
20
20
  export type { DataViewExport, DataViewExportFormat, DataViewExportRequest, } from "./data-views-export";
21
+ export type { SelectionExtraContext, SelectionExtraRender } from "./data-views-selection-extra";
21
22
  export { DataViewsScopeTabs, resolveScope, assertNoScopePillOverlap, type ScopeConfig, } from "./data-views-scopes";
22
23
  export type { RowAction, DataViewCardSelection, CardAspectRatio, SavedViewSummary, DataViewState, DataViewSyncState, DataViewsLayout, DataViewColumn, FilterFieldConfig, RangeFieldConfig, RangeFieldKind, RangeValue, RangePreset, NumberRangeFieldConfig, DayRangeFieldConfig, DataViewPersistence, DataViewRouter, DataViewSaveInput, DataViewMutationResult, DataViewQuery, DataViewServer, } from "./data-views-types";
23
24
  export { DataViewsCopyProvider, useDataViewsCopy } from "./data-views-copy-context";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAMxE,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAI3B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrF,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,SAAS,EACT,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,cAAc,GACf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpF,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAMxE,OAAO,EACL,aAAa,EACb,aAAa,EACb,UAAU,EACV,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAI3B,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrF,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,SAAS,EACT,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,cAAc,GACf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACpF,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC"}
@@ -29,5 +29,5 @@ import type { ContentToolbarProps } from './ContentToolbar.types';
29
29
  * />
30
30
  * ```
31
31
  */
32
- export declare function ContentToolbar({ hasSelection, selectedCount, selectAll, clearSelection, rightControls, leadingControls, actions, selectAllTestId, clearAllTestId, edgeAlign, exclusiveSelection, selectAllLabel, selectAllText, clearAllText, }: ContentToolbarProps): React.JSX.Element;
32
+ export declare function ContentToolbar({ hasSelection, selectedCount, selectAll, clearSelection, rightControls, leadingControls, actions, selectionExtra, selectAllTestId, clearAllTestId, edgeAlign, exclusiveSelection, selectAllLabel, selectAllText, clearAllText, }: ContentToolbarProps): React.JSX.Element;
33
33
  //# sourceMappingURL=ContentToolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AA+KlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EACf,cAAc,EACd,SAAiB,EACjB,kBAA0B,EAC1B,cAAc,EACd,aAAa,EACb,YAAY,GACb,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiDzC"}
1
+ {"version":3,"file":"ContentToolbar.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAkLlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,CAAC,EAC7B,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,EACd,aAAa,EACb,eAAe,EACf,OAAO,EACP,cAAc,EACd,eAAe,EACf,cAAc,EACd,SAAiB,EACjB,kBAA0B,EAC1B,cAAc,EACd,aAAa,EACb,YAAY,GACb,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkDzC"}
@@ -42,6 +42,21 @@ export interface ContentToolbarProps {
42
42
  * what the action does.
43
43
  */
44
44
  actions?: ReactNode;
45
+ /**
46
+ * A control rendered between the count and {@link actions}, and ONLY while
47
+ * something is selected.
48
+ *
49
+ * It is a second slot rather than more room in `actions` because the two
50
+ * answer different questions. `actions` is what HAPPENS to the selection;
51
+ * this is what the selection IS — the "select all 143 matching" widening
52
+ * that a paginated grid needs once its whole page is ticked. Folding a
53
+ * widening control into the actions menu would file "change what I picked"
54
+ * under "do this to what I picked", where an operator reasonably expects
55
+ * every entry to write something.
56
+ *
57
+ * Ignored when nothing is selected: a widening has nothing to widen.
58
+ */
59
+ selectionExtra?: ReactNode;
45
60
  /** Test id for the Select All button. */
46
61
  selectAllTestId?: string;
47
62
  /** Test id for the Clear All button. */
@@ -1 +1 @@
1
- {"version":3,"file":"ContentToolbar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContentToolbar.types.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/ContentToolbar/ContentToolbar.types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12-apps/ui",
3
- "version": "6.13.2",
3
+ "version": "6.14.0",
4
4
  "license": "MIT",
5
5
  "packageManager": "pnpm@10.34.5",
6
6
  "type": "module",
@@ -5,6 +5,7 @@ import { useEffect, useRef } from "react";
5
5
  import { type SortFieldDefinition } from "../../layout/ContentToolbar";
6
6
 
7
7
  import { GridShell } from "./data-views-grid-parts";
8
+ import type { SelectionExtraRender } from "./data-views-selection-extra";
8
9
  import type { ListGroupConfig } from "./list-card-rails";
9
10
  import type { DisplayPanelView } from "./data-views-display-panel";
10
11
  import type { BoardConfig } from "./DataViewsBoard";
@@ -97,6 +98,17 @@ interface DataViewsGridProps<T extends Record<string, unknown>> {
97
98
  * Receives the selected rows + a `clearSelection` callback.
98
99
  */
99
100
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
101
+ /**
102
+ * A control rendered beside the "N selected" count, for changing WHAT is
103
+ * selected rather than what happens to it — a "select all N matching the
104
+ * filter" widening, above all.
105
+ *
106
+ * Called only while something is selected, and handed
107
+ * {@link SelectionExtraContext.allOnPageSelected} so the control can follow
108
+ * the convention operators already know: the widening appears once the whole
109
+ * page is ticked, and not before.
110
+ */
111
+ selectionExtra?: SelectionExtraRender<T>;
100
112
  /**
101
113
  * Render a bespoke per-row menu in the actions column instead of the auto
102
114
  * kebab — typically an entity's self-contained 3-dots menu that owns its own
@@ -4,6 +4,7 @@ import type { SortFieldDefinition } from "../../layout/ContentToolbar";
4
4
  import { useEffect, useMemo, useRef, useState } from "react";
5
5
 
6
6
  import { DataViewsGrid } from "./DataViewsGrid";
7
+ import type { SelectionExtraRender } from "./data-views-selection-extra";
7
8
  import type { ListGroupConfig } from "./list-card-rails";
8
9
  import type { DisplayPanelView } from "./data-views-display-panel";
9
10
  import { viewStateKey } from "./data-views-dirty";
@@ -76,6 +77,8 @@ export interface DataViewsTableBaseProps<T extends Record<string, unknown>> {
76
77
  rowActionsLeading?: (row: T) => React.ReactNode;
77
78
  /** Low-level bulk-action override; prefer `rowActions`. */
78
79
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
80
+ /** A selection-widening control beside the count (e.g. "select all matching"). */
81
+ selectionExtra?: SelectionExtraRender<T>;
79
82
  /** Bespoke per-row menu (an entity's self-contained 3-dots menu) instead of the auto kebab. */
80
83
  renderRowMenu?: (row: T) => React.ReactNode;
81
84
  /** Opt-in "Grade" (cards) layout — a card renderer per row; adds a Grade/Tabela toggle. */
@@ -3,8 +3,6 @@
3
3
  import { useEffect, useState } from "react";
4
4
 
5
5
  import { TableFilter } from "../../layout/TableFilter";
6
- import { Text } from "../../typography/Text";
7
- import { Box } from "../../../mui/Box";
8
6
  import { Stack } from "../../../mui/Stack";
9
7
 
10
8
  import {
@@ -17,6 +15,8 @@ import { GridMain } from "./data-views-grid-bodies";
17
15
  import type { ListGroupConfig } from "./list-card-rails";
18
16
  import { InlineFilterControls } from "./data-views-inline-bar";
19
17
  import { toOverflowFields, useFilterOverflow, type OverflowSplit } from "./data-views-overflow";
18
+ import { GridHeaderRow } from "./data-views-header-row";
19
+ import { resolveSelectionExtra, type SelectionExtraRender } from "./data-views-selection-extra";
20
20
  import { ShellToolbar } from "./data-views-shell-toolbar";
21
21
  import type { DisplayPanelView } from "./data-views-display-panel";
22
22
  import type { DataViewExport } from "./data-views-export";
@@ -36,54 +36,6 @@ import type {
36
36
  } from "./data-views-types";
37
37
  import type { DataViewsController } from "./use-data-views-state";
38
38
 
39
- /* ── Header row ──────────────────────────────────────────────────────────── */
40
-
41
- /**
42
- * The grid's own header row: the page title on the left, the primary page
43
- * actions on the right.
44
- *
45
- * `title` and `headerActions` were DECLARED on `DataViewsGridProps` and
46
- * `DataViewsTableBaseProps` but never destructured or forwarded — dead props
47
- * whose types lied to every caller that set them. Wired here rather than
48
- * deleted: a table that carries its own title keeps the title, the scope tabs
49
- * and the toolbar as one block, instead of the page having to space them.
50
- *
51
- * Renders NOTHING when neither is supplied, so no existing table gains a row.
52
- */
53
- function GridHeaderRow({
54
- title,
55
- headerActions,
56
- testIdPrefix,
57
- }: {
58
- title?: string;
59
- headerActions?: React.ReactNode;
60
- testIdPrefix: string;
61
- }): React.JSX.Element | null {
62
- if (!title && !headerActions) return null;
63
- return (
64
- <Box
65
- data-testid={`${testIdPrefix}-header`}
66
- sx={{
67
- display: "flex",
68
- alignItems: "center",
69
- justifyContent: "space-between",
70
- gap: 2,
71
- flexWrap: "wrap",
72
- pb: 1.5,
73
- }}
74
- >
75
- {title ? (
76
- <Text variant="heading" size="lg" as="h2">
77
- {title}
78
- </Text>
79
- ) : (
80
- <Box />
81
- )}
82
- {headerActions && <Box sx={{ display: "flex", alignItems: "center", gap: 1 }}>{headerActions}</Box>}
83
- </Box>
84
- );
85
- }
86
-
87
39
  /* ── Layout ⇄ view-state mirror ──────────────────────────────────────────── */
88
40
 
89
41
  /**
@@ -230,6 +182,8 @@ interface GridShellProps<T extends Record<string, unknown>> {
230
182
  toolbarRightSlot?: React.ReactNode;
231
183
  rowActions?: RowAction<T>[];
232
184
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
185
+ /** A widening control beside the selection count — see `resolveSelectionExtra`. */
186
+ selectionExtra?: SelectionExtraRender<T>;
233
187
  /** Opt-in "Grade" (cards) layout: renders each row as an entity-supplied card.
234
188
  * Omit ⇒ table only (no layout toggle). */
235
189
  renderCard?: (row: T, selection: DataViewCardSelection) => React.ReactNode;
@@ -326,6 +280,7 @@ function ShellStack<T extends Record<string, unknown>>({
326
280
  testIdPrefix={testIdPrefix}
327
281
  rowActions={props.rowActions}
328
282
  bulkActions={props.bulkActions}
283
+ selectionExtra={resolveSelectionExtra(props)}
329
284
  toolbarRightSlot={props.toolbarRightSlot}
330
285
  compactControls={showInline && split.compactControls}
331
286
  counterHidden={showInline && split.counterHidden}
@@ -0,0 +1,52 @@
1
+ "use client";
2
+
3
+ import { Text } from "../../typography/Text";
4
+ import { Box } from "../../../mui/Box";
5
+
6
+ /* ── Header row ──────────────────────────────────────────────────────────── */
7
+
8
+ /**
9
+ * The grid's own header row: the page title on the left, the primary page
10
+ * actions on the right.
11
+ *
12
+ * `title` and `headerActions` were DECLARED on `DataViewsGridProps` and
13
+ * `DataViewsTableBaseProps` but never destructured or forwarded — dead props
14
+ * whose types lied to every caller that set them. Wired here rather than
15
+ * deleted: a table that carries its own title keeps the title, the scope tabs
16
+ * and the toolbar as one block, instead of the page having to space them.
17
+ *
18
+ * Renders NOTHING when neither is supplied, so no existing table gains a row.
19
+ */
20
+ export function GridHeaderRow({
21
+ title,
22
+ headerActions,
23
+ testIdPrefix,
24
+ }: {
25
+ title?: string;
26
+ headerActions?: React.ReactNode;
27
+ testIdPrefix: string;
28
+ }): React.JSX.Element | null {
29
+ if (!title && !headerActions) return null;
30
+ return (
31
+ <Box
32
+ data-testid={`${testIdPrefix}-header`}
33
+ sx={{
34
+ display: "flex",
35
+ alignItems: "center",
36
+ justifyContent: "space-between",
37
+ gap: 2,
38
+ flexWrap: "wrap",
39
+ pb: 1.5,
40
+ }}
41
+ >
42
+ {title ? (
43
+ <Text variant="heading" size="lg" as="h2">
44
+ {title}
45
+ </Text>
46
+ ) : (
47
+ <Box />
48
+ )}
49
+ {headerActions && <Box sx={{ display: "flex", alignItems: "center", gap: 1 }}>{headerActions}</Box>}
50
+ </Box>
51
+ );
52
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * The selection-WIDENING slot: what a paginated grid needs so an operator can
3
+ * act on "everything matching the filter" rather than on the page in front of
4
+ * them.
5
+ *
6
+ * It is a slot of its own rather than a share of the bulk-actions menu because
7
+ * the two answer different questions — `actions` is what HAPPENS to the
8
+ * selection, this is what the selection IS. Folding a widening into the actions
9
+ * menu files "change what I picked" under "do this to what I picked", where
10
+ * every entry is expected to write something.
11
+ */
12
+ import type { DataViewsController } from "./use-data-views-state";
13
+
14
+ /**
15
+ * What a widening control gets to decide with.
16
+ *
17
+ * `allOnPageSelected` is the one thing a host cannot compute for itself, and
18
+ * the whole reason this is a context rather than a bare node: the grid owns
19
+ * which rows the page is currently rendering — server mode pages at the
20
+ * backend, so the host's `rows` prop and the page can differ mid-fetch — and
21
+ * "every row here is ticked" is the trigger a select-all-matching control
22
+ * hangs on. Deriving it host-side would be a second, slightly different answer
23
+ * to the question the grid already answers to draw its own header checkbox.
24
+ */
25
+ export interface SelectionExtraContext<T extends Record<string, unknown>> {
26
+ /** The selected rows, off-page ones included. */
27
+ selectedRows: T[];
28
+ /** Drop the whole selection. */
29
+ clearSelection: () => void;
30
+ /** Every row the page is rendering is selected — and the page is not empty. */
31
+ allOnPageSelected: boolean;
32
+ /** How many rows the page is rendering. */
33
+ pageRowCount: number;
34
+ }
35
+
36
+ /** The host's widening control, called only while something is selected. */
37
+ export type SelectionExtraRender<T extends Record<string, unknown>> = (
38
+ context: SelectionExtraContext<T>,
39
+ ) => React.ReactNode;
40
+
41
+ /**
42
+ * Resolve the host's control against the page on screen.
43
+ *
44
+ * Measured against `c.matched` — which in server mode IS the page — rather than
45
+ * the `rows` prop, so the answer cannot lag a page change.
46
+ *
47
+ * Returns `undefined` with nothing selected, so the toolbar renders no empty
48
+ * slot: a widening with nothing to widen is not a control.
49
+ */
50
+ export function resolveSelectionExtra<T extends Record<string, unknown>>({
51
+ c,
52
+ getRowId,
53
+ selectionExtra,
54
+ }: {
55
+ c: DataViewsController<T>;
56
+ getRowId: (row: T) => string | number;
57
+ selectionExtra?: SelectionExtraRender<T>;
58
+ }): React.ReactNode {
59
+ if (selectionExtra === undefined || c.selectedRows.length === 0) return undefined;
60
+ const page = c.matched;
61
+ return selectionExtra({
62
+ selectedRows: c.selectedRows,
63
+ clearSelection: c.clearSelection,
64
+ allOnPageSelected: page.length > 0 && page.every((row) => c.selectedIds.has(getRowId(row))),
65
+ pageRowCount: page.length,
66
+ });
67
+ }
@@ -22,6 +22,7 @@ export function ShellToolbar<T extends Record<string, unknown>>({
22
22
  testIdPrefix,
23
23
  rowActions,
24
24
  bulkActions,
25
+ selectionExtra,
25
26
  toolbarRightSlot,
26
27
  showInline,
27
28
  compactControls,
@@ -40,6 +41,8 @@ export function ShellToolbar<T extends Record<string, unknown>>({
40
41
  exportConfig?: DataViewExport;
41
42
  rowActions?: RowAction<T>[];
42
43
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
44
+ /** Already resolved by the shell, which is the party that knows the page. */
45
+ selectionExtra?: React.ReactNode;
43
46
  toolbarRightSlot?: React.ReactNode;
44
47
  /** Search + filters, rendered on the toolbar line (see `GridToolbar`). */
45
48
  filterControls?: React.ReactNode;
@@ -71,6 +74,7 @@ export function ShellToolbar<T extends Record<string, unknown>>({
71
74
  clearSelection={c.clearSelection}
72
75
  rowActions={rowActions}
73
76
  bulkActions={bulkActions}
77
+ selectionExtra={selectionExtra}
74
78
  sortFields={c.resolvedSortFields}
75
79
  activeSortField={c.activeSortField}
76
80
  activeSortOrder={c.activeSortOrder}
@@ -25,6 +25,8 @@ export interface GridToolbarProps<T extends Record<string, unknown>> {
25
25
  clearSelection: () => void;
26
26
  rowActions?: RowAction<T>[];
27
27
  bulkActions?: (selectedRows: T[], clearSelection: () => void) => React.ReactNode;
28
+ /** A control between the count and the actions menu — see `selectionExtra`. */
29
+ selectionExtra?: React.ReactNode;
28
30
  sortFields: SortFieldDefinition[];
29
31
  activeSortField: string;
30
32
  activeSortOrder: "asc" | "desc";
@@ -161,6 +163,7 @@ export function GridToolbar<T extends Record<string, unknown>>(props: GridToolba
161
163
  clearSelection={props.clearSelection}
162
164
  selectAllTestId={`${testIdPrefix}-select-all`}
163
165
  clearAllTestId={`${testIdPrefix}-clear-all`}
166
+ selectionExtra={props.selectionExtra}
164
167
  actions={renderBulkActions({
165
168
  rowActions: props.rowActions,
166
169
  bulkActions: props.bulkActions,
@@ -45,6 +45,7 @@ export type {
45
45
  DataViewExportFormat,
46
46
  DataViewExportRequest,
47
47
  } from "./data-views-export";
48
+ export type { SelectionExtraContext, SelectionExtraRender } from "./data-views-selection-extra";
48
49
  export {
49
50
  DataViewsScopeTabs,
50
51
  resolveScope,
@@ -8,12 +8,19 @@ pages and projects.
8
8
  ## Anatomy
9
9
 
10
10
  ```
11
- [Select All] [Clear All] | N items selected <actions> (o)══ ▦▾ Sort By: … ▾ Content Type: … ▾ ⨏
12
- └──────────────── left cluster (selection chrome) ─────┘ └──────────── rightControls slot ────────────┘
11
+ [Select All] [Clear All] | N selected <selectionExtra> <actions> (o)══ ▦▾ Sort By: … ▾ ⨏
12
+ └─────────────────── left cluster (selection chrome) ──────────────┘ └───── rightControls slot ─────┘
13
13
  ```
14
14
 
15
15
  - **Left cluster** — always shows **Select All**. Once `hasSelection` is true it
16
- adds **Clear All**, an "N items selected" count, and an optional `actions` slot.
16
+ adds **Clear All**, an "N items selected" count, and two optional slots:
17
+ `selectionExtra` then `actions`.
18
+ - **`selectionExtra` vs `actions`** — `actions` is what HAPPENS to the selection
19
+ (delete, export, send). `selectionExtra` is what the selection IS: the
20
+ "select all N matching the filter" widening a paginated list needs once its
21
+ whole page is ticked. They are separate slots because an operator reasonably
22
+ expects every entry in an actions menu to write something, and a widening
23
+ writes nothing.
17
24
  - **Right cluster** — a free `rightControls` node. Compose it from the shipped
18
25
  controls below (or anything else).
19
26
 
@@ -28,6 +28,7 @@ type SelectionClusterProps = Pick<
28
28
  | 'selectAll'
29
29
  | 'clearSelection'
30
30
  | 'actions'
31
+ | 'selectionExtra'
31
32
  | 'selectAllTestId'
32
33
  | 'clearAllTestId'
33
34
  | 'edgeAlign'
@@ -43,6 +44,7 @@ function SelectionCluster({
43
44
  selectAll,
44
45
  clearSelection,
45
46
  actions,
47
+ selectionExtra,
46
48
  selectAllTestId,
47
49
  clearAllTestId,
48
50
  edgeAlign = false,
@@ -106,6 +108,7 @@ function SelectionCluster({
106
108
  >
107
109
  {selectedCount} {selectedCount === 1 ? 'item' : 'items'} selected
108
110
  </Typography>
111
+ {selectionExtra}
109
112
  {actionsSlot}
110
113
  </>
111
114
  ) : (
@@ -219,6 +222,7 @@ export function ContentToolbar({
219
222
  rightControls,
220
223
  leadingControls,
221
224
  actions,
225
+ selectionExtra,
222
226
  selectAllTestId,
223
227
  clearAllTestId,
224
228
  edgeAlign = false,
@@ -258,6 +262,7 @@ export function ContentToolbar({
258
262
  selectAll={selectAll}
259
263
  clearSelection={clearSelection}
260
264
  actions={actions}
265
+ selectionExtra={selectionExtra}
261
266
  selectAllTestId={selectAllTestId}
262
267
  clearAllTestId={clearAllTestId}
263
268
  selectAllLabel={selectAllLabel}
@@ -45,6 +45,21 @@ export interface ContentToolbarProps {
45
45
  * what the action does.
46
46
  */
47
47
  actions?: ReactNode;
48
+ /**
49
+ * A control rendered between the count and {@link actions}, and ONLY while
50
+ * something is selected.
51
+ *
52
+ * It is a second slot rather than more room in `actions` because the two
53
+ * answer different questions. `actions` is what HAPPENS to the selection;
54
+ * this is what the selection IS — the "select all 143 matching" widening
55
+ * that a paginated grid needs once its whole page is ticked. Folding a
56
+ * widening control into the actions menu would file "change what I picked"
57
+ * under "do this to what I picked", where an operator reasonably expects
58
+ * every entry to write something.
59
+ *
60
+ * Ignored when nothing is selected: a widening has nothing to widen.
61
+ */
62
+ selectionExtra?: ReactNode;
48
63
  /** Test id for the Select All button. */
49
64
  selectAllTestId?: string;
50
65
  /** Test id for the Clear All button. */