@geovi/the-datagrid 0.0.13 → 0.1.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 (48) hide show
  1. package/dist/base.css +1 -1
  2. package/dist/components.js +7 -5
  3. package/dist/grid/ReactDataGrid.d.ts.map +1 -1
  4. package/dist/grid/components/ColumnGroupHeaderCell.d.ts.map +1 -1
  5. package/dist/grid/components/FilterCell.d.ts.map +1 -1
  6. package/dist/grid/components/GridBody.d.ts.map +1 -1
  7. package/dist/grid/components/GridHeader.d.ts.map +1 -1
  8. package/dist/grid/components/HeaderCell.d.ts +6 -0
  9. package/dist/grid/components/HeaderCell.d.ts.map +1 -1
  10. package/dist/grid/hooks/useGridColumnResize.d.ts +3 -1
  11. package/dist/grid/hooks/useGridColumnResize.d.ts.map +1 -1
  12. package/dist/grid/utils/columnGroups.d.ts +8 -1
  13. package/dist/grid/utils/columnGroups.d.ts.map +1 -1
  14. package/dist/grid/utils/liveColumnResize.d.ts +21 -1
  15. package/dist/grid/utils/liveColumnResize.d.ts.map +1 -1
  16. package/dist/grid/utils/lockedColumns.d.ts +37 -2
  17. package/dist/grid/utils/lockedColumns.d.ts.map +1 -1
  18. package/dist/index.cjs +13 -13
  19. package/dist/index.css +1 -1
  20. package/dist/index.js +9429 -9235
  21. package/dist/providers/index.d.ts +2 -2
  22. package/dist/providers/index.d.ts.map +1 -1
  23. package/dist/style/theme/amber-dark/index.css +1 -1
  24. package/dist/style/theme/amber-light/index.css +1 -1
  25. package/dist/style/theme/blue-dark/index.css +1 -1
  26. package/dist/style/theme/blue-light/index.css +1 -1
  27. package/dist/style/theme/default-dark/index.css +1 -1
  28. package/dist/style/theme/default-light/index.css +1 -1
  29. package/dist/style/theme/green-dark/index.css +1 -1
  30. package/dist/style/theme/green-light/index.css +1 -1
  31. package/dist/style/theme/pink-dark/index.css +1 -1
  32. package/dist/style/theme/pink-light/index.css +1 -1
  33. package/dist/toolbar/RDGToolbar.d.ts +2 -15
  34. package/dist/toolbar/RDGToolbar.d.ts.map +1 -1
  35. package/dist/toolbar/RDGToolbarProvider.d.ts +12 -0
  36. package/dist/toolbar/RDGToolbarProvider.d.ts.map +1 -1
  37. package/dist/toolbar/api.d.ts +65 -0
  38. package/dist/toolbar/api.d.ts.map +1 -0
  39. package/dist/toolbar/columns.d.ts +12 -0
  40. package/dist/toolbar/columns.d.ts.map +1 -0
  41. package/dist/toolbar/export.d.ts +57 -0
  42. package/dist/toolbar/export.d.ts.map +1 -1
  43. package/dist/toolbar/index.d.ts +4 -2
  44. package/dist/toolbar/index.d.ts.map +1 -1
  45. package/dist/toolbar/store.d.ts +14 -0
  46. package/dist/toolbar/store.d.ts.map +1 -1
  47. package/dist/toolbar.js +510 -418
  48. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
- import { RDGToolbarExportFormat, RDGToolbarExportScope } from './export.js';
1
+ import { RDGToolbarExportFormat, RDGToolbarExportInfo, RDGToolbarExportResult, RDGToolbarExportScope } from './export.js';
2
2
  import * as React from "react";
3
+ export type { RDGToolbarExportInfo, RDGToolbarExportResult };
3
4
  /**
4
5
  * Every string the toolbar renders itself. Values are `ReactNode`, so a
5
6
  * translation helper that returns an element works as well as one that returns
@@ -33,20 +34,6 @@ export type RDGToolbarLabels = {
33
34
  */
34
35
  filteringControlledHint?: string;
35
36
  };
36
- /** Describes one export, for `exportFileName` callbacks. */
37
- export type RDGToolbarExportInfo = {
38
- format: RDGToolbarExportFormat;
39
- scope: RDGToolbarExportScope;
40
- rowCount: number;
41
- columnCount: number;
42
- };
43
- /** Describes a finished export, for `onExportSuccess`. */
44
- export type RDGToolbarExportResult = RDGToolbarExportInfo & {
45
- /** File name the browser was given, including the extension. */
46
- fileName: string;
47
- /** Size of the written file in bytes. */
48
- byteLength: number;
49
- };
50
37
  export type RDGToolbarProps = {
51
38
  children?: React.ReactNode;
52
39
  ariaLabel?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"RDGToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,UAAU,CAAC;AAIlB;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAClD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,MAAM,CAAC,CAAC;IACnE,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC3D,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAkDF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAqPrE"}
1
+ {"version":3,"file":"RDGToolbar.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAML,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,UAAU,CAAC;AAIlB,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACzE;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8FAA8F;IAC9F,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAClD;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,oBAAoB,KAAK,MAAM,CAAC,CAAC;IACnE,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC3D,uEAAuE;IACvE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAuBF,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAuOrE"}
@@ -1,6 +1,18 @@
1
+ import { RDGToolbarApi } from './api.js';
2
+ import { RDGToolbarExportSettings } from './export.js';
1
3
  import * as React from "react";
2
4
  export type RDGToolbarProviderProps = {
3
5
  children: React.ReactNode;
6
+ /**
7
+ * Receives the imperative toolbar API, so a component above this provider can
8
+ * export the grid, toggle columns or clear filters without a hook.
9
+ */
10
+ apiRef?: React.Ref<RDGToolbarApi>;
11
+ /**
12
+ * Export settings both `RDGToolbar`'s button and `apiRef` fall back to. The
13
+ * matching toolbar prop and one export's own settings outrank these.
14
+ */
15
+ exportDefaults?: RDGToolbarExportSettings;
4
16
  };
5
17
  export declare function RDGToolbarProvider(props: RDGToolbarProviderProps): React.ReactElement;
6
18
  //# sourceMappingURL=RDGToolbarProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RDGToolbarProvider.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbarProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,KAAK,CAAC,YAAY,CAyBpB"}
1
+ {"version":3,"file":"RDGToolbarProvider.d.ts","sourceRoot":"","sources":["../../src/toolbar/RDGToolbarProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAKzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C,CAAC;AAOF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,GAC7B,KAAK,CAAC,YAAY,CA+BpB"}
@@ -0,0 +1,65 @@
1
+ import { TypeColumn } from '../types.js';
2
+ import { RDGToolbarPublishedSnapshot } from './controller.js';
3
+ import { RDGToolbarExportFormat, RDGToolbarExportResult, RDGToolbarExportSettings } from './export.js';
4
+ /** The grid state the API publishes; the actions live on the API itself. */
5
+ export type RDGToolbarState = {
6
+ /** False until a grid mounts inside the provider, and again once it unmounts. */
7
+ attached: boolean;
8
+ /** Columns in the grid's current column order. */
9
+ columns: readonly TypeColumn[];
10
+ /** Visibility per column id. A column the map omits is visible. */
11
+ columnVisibilityMap: Readonly<Record<string, boolean>>;
12
+ theme: string;
13
+ filteringEnabled: boolean;
14
+ /** False while the grid owns `enableFiltering`, which makes the setter a no-op. */
15
+ canToggleFiltering: boolean;
16
+ filtered: boolean;
17
+ };
18
+ /**
19
+ * The toolbar's surface, callable from outside React's tree. Comes from
20
+ * `RDGToolbarProvider`'s `apiRef`, or from `useRDGToolbarApi()` inside it.
21
+ *
22
+ * Methods, never properties: a ref does not re-render its holder, so a
23
+ * `columns` property would go stale as soon as a column was hidden.
24
+ */
25
+ export type RDGToolbarApi = {
26
+ /**
27
+ * Writes one export, exactly as the toolbar's own button does. Settings win
28
+ * over the provider's `exportDefaults`, which win over the library defaults.
29
+ *
30
+ * Resolves `null` when there is nothing to export, and rejects when a writer
31
+ * fails - a missing `xlsx` peer dependency, say.
32
+ */
33
+ exportGrid(format: RDGToolbarExportFormat, settings?: RDGToolbarExportSettings): Promise<RDGToolbarExportResult | null>;
34
+ /** Every format `exportGrid` accepts, whatever a rendered toolbar offers. */
35
+ getExportFormats(): readonly RDGToolbarExportFormat[];
36
+ /** Columns in the grid's current column order. */
37
+ getColumns(): readonly TypeColumn[];
38
+ /** False for a hidden column, and for a column id the grid does not have. */
39
+ isColumnVisible(columnId: string): boolean;
40
+ setColumnVisible(columnId: string, visible: boolean): void;
41
+ isFilteringEnabled(): boolean;
42
+ /** False while the grid owns `enableFiltering` as its own prop. */
43
+ canToggleFiltering(): boolean;
44
+ setFilteringEnabled(enabled: boolean): void;
45
+ /** Whether at least one column filter holds a non-empty value. */
46
+ isFiltered(): boolean;
47
+ clearAllFilters(): void;
48
+ /** Rows the grid currently renders: filtered, searched and sorted. */
49
+ getViewRows(): readonly unknown[];
50
+ /** Every row of the local data source, before filtering and searching. */
51
+ getAllRows(): readonly unknown[];
52
+ /** The current state as plain data. Stable while the grid state is. */
53
+ getState(): RDGToolbarState;
54
+ /** Notifies on every grid state change. Returns an unsubscribe function. */
55
+ subscribe(listener: () => void): () => void;
56
+ };
57
+ /** Taking these from the store is what keeps the runtime dependency one-way. */
58
+ export type RDGToolbarApiSource = {
59
+ getSnapshot: () => RDGToolbarPublishedSnapshot;
60
+ subscribe: (listener: () => void) => () => void;
61
+ getExportDefaults: () => RDGToolbarExportSettings | undefined;
62
+ isAttached: () => boolean;
63
+ };
64
+ export declare function createRDGToolbarApi(source: RDGToolbarApiSource): RDGToolbarApi;
65
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/toolbar/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC9B,MAAM,UAAU,CAAC;AAElB,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG;IAC5B,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,mEAAmE;IACnE,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;OAMG;IACH,UAAU,CACR,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,CAAC,EAAE,wBAAwB,GAClC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAC1C,6EAA6E;IAC7E,gBAAgB,IAAI,SAAS,sBAAsB,EAAE,CAAC;IAEtD,kDAAkD;IAClD,UAAU,IAAI,SAAS,UAAU,EAAE,CAAC;IACpC,6EAA6E;IAC7E,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAE3D,kBAAkB,IAAI,OAAO,CAAC;IAC9B,mEAAmE;IACnE,kBAAkB,IAAI,OAAO,CAAC;IAC9B,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,kEAAkE;IAClE,UAAU,IAAI,OAAO,CAAC;IACtB,eAAe,IAAI,IAAI,CAAC;IAExB,sEAAsE;IACtE,WAAW,IAAI,SAAS,OAAO,EAAE,CAAC;IAClC,0EAA0E;IAC1E,UAAU,IAAI,SAAS,OAAO,EAAE,CAAC;IAEjC,uEAAuE;IACvE,QAAQ,IAAI,eAAe,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,2BAA2B,CAAC;IAC/C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,iBAAiB,EAAE,MAAM,wBAAwB,GAAG,SAAS,CAAC;IAC9D,UAAU,EAAE,MAAM,OAAO,CAAC;CAC3B,CAAC;AAMF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CA6Df"}
@@ -0,0 +1,12 @@
1
+ import { TypeColumn } from '../types.js';
2
+ /**
3
+ * Deliberately not core's `getColumnId`, which throws on a column with no id:
4
+ * right for rendering a grid, wrong for a toolbar that should skip that column.
5
+ */
6
+ export declare function getColumnId(column: TypeColumn): string;
7
+ /**
8
+ * Sorts columns into the grid's column order. Columns the order does not
9
+ * mention keep their declared order and follow the ones it does.
10
+ */
11
+ export declare function orderColumns(columns: readonly TypeColumn[], columnOrder: readonly string[]): TypeColumn[];
12
+ //# sourceMappingURL=columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../../src/toolbar/columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,UAAU,EAAE,CAkBd"}
@@ -10,6 +10,49 @@ import { TypeColumn } from '../types.js';
10
10
  export type RDGToolbarExportFormat = "csv" | "json" | "xlsx";
11
11
  /** Rows the export reads: the current grid view, or the whole data source. */
12
12
  export type RDGToolbarExportScope = "view" | "all";
13
+ /** Describes one export, for `exportFileName` callbacks. */
14
+ export type RDGToolbarExportInfo = {
15
+ format: RDGToolbarExportFormat;
16
+ scope: RDGToolbarExportScope;
17
+ rowCount: number;
18
+ columnCount: number;
19
+ };
20
+ /** Describes a finished export, for `onExportSuccess`. */
21
+ export type RDGToolbarExportResult = RDGToolbarExportInfo & {
22
+ /** File name the browser was given, including the extension. */
23
+ fileName: string;
24
+ /** Size of the written file in bytes. */
25
+ byteLength: number;
26
+ };
27
+ /**
28
+ * Everything an export needs beyond the format. Wherever the export is
29
+ * triggered from, the layers resolve most specific first: one export's own
30
+ * settings, then the `RDGToolbar` prop, then the provider's `exportDefaults`,
31
+ * then the fallbacks below.
32
+ */
33
+ export type RDGToolbarExportSettings = {
34
+ /** `"view"` exports the filtered, searched and sorted rows; `"all"` the whole data source. */
35
+ scope?: RDGToolbarExportScope;
36
+ /**
37
+ * Downloaded file name without extension. A function is called per export, so
38
+ * a name that embeds the date or the chosen format stays accurate.
39
+ */
40
+ fileName?: string | ((info: RDGToolbarExportInfo) => string);
41
+ /** Excel number format for date cells in spreadsheet exports. */
42
+ dateFormat?: string;
43
+ /** Worksheet name for spreadsheet exports. Defaults to the file name. */
44
+ sheetName?: string;
45
+ };
46
+ export declare const DEFAULT_EXPORT_FILE_NAME = "grid-export";
47
+ export declare const DEFAULT_EXPORT_SCOPE: RDGToolbarExportScope;
48
+ /** The subset of the toolbar snapshot an export reads. */
49
+ export type RDGToolbarExportSource = {
50
+ columns: readonly TypeColumn[];
51
+ columnOrder: readonly string[];
52
+ columnVisibilityMap: Readonly<Record<string, boolean>>;
53
+ getViewRows: () => readonly unknown[];
54
+ getAllRows: () => readonly unknown[];
55
+ };
13
56
  export type RDGToolbarExportTable = {
14
57
  /** Header labels, in export order. */
15
58
  headers: string[];
@@ -67,4 +110,18 @@ export declare const RDG_TOOLBAR_EXPORT_FORMATS: Record<RDGToolbarExportFormat,
67
110
  export declare const DEFAULT_TOOLBAR_EXPORT_FORMATS: readonly RDGToolbarExportFormat[];
68
111
  /** Returns the written size in bytes, or 0 when there is no document. */
69
112
  export declare function downloadExportFile(filename: string, content: BlobPart, mimeType: string): number;
113
+ /**
114
+ * Folds the settings layers into one, most specific first. A layer that omits a
115
+ * field defers to the next, per field rather than wholesale.
116
+ */
117
+ export declare function mergeExportSettings(...layers: readonly (RDGToolbarExportSettings | undefined)[]): RDGToolbarExportSettings;
118
+ /**
119
+ * Writes one export and hands it to the browser. The single path behind both
120
+ * the toolbar's button and the imperative API.
121
+ *
122
+ * Returns `null` when there is nothing to write: an unknown format, or no
123
+ * exportable column - which is also a snapshot with no grid attached. A failing
124
+ * writer rejects rather than no-opping, so the caller can report it.
125
+ */
126
+ export declare function performExport(source: RDGToolbarExportSource, format: RDGToolbarExportFormat, settings?: RDGToolbarExportSettings): Promise<RDGToolbarExportResult | null>;
70
127
  //# sourceMappingURL=export.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/toolbar/export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,8EAA8E;AAC9E,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;OAKG;IACH,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;CACnB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,uBAAuB,GAAG;IACpC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,EAAE,CACb,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE,uBAAuB,KAC7B,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACnC,CAAC;AAsBF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE;IAC7C,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACxD,GAAG,UAAU,EAAE,CAyBf;AAOD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAS5E;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,GACvB,qBAAqB,CAQvB;AAiBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAMvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAUxE;AAED,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAC7C,sBAAsB,EACtB,gCAAgC,CAoBjC,CAAC;AAEF,eAAO,MAAM,8BAA8B,EAAE,SAAS,sBAAsB,EAC3D,CAAC;AAElB,yEAAyE;AACzE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/toolbar/export.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  export { RDGToolbar } from './RDGToolbar.js';
2
2
  export { RDGToolbarProvider } from './RDGToolbarProvider.js';
3
3
  export { RDGToolbarTarget } from './RDGToolbarTarget.js';
4
- export type { RDGToolbarExportInfo, RDGToolbarExportResult, RDGToolbarLabels, RDGToolbarProps, } from './RDGToolbar.js';
4
+ export { useRDGToolbarApi, useRDGToolbarApiState } from './store.js';
5
+ export type { RDGToolbarLabels, RDGToolbarProps } from './RDGToolbar.js';
5
6
  export type { RDGToolbarProviderProps } from './RDGToolbarProvider.js';
6
7
  export type { RDGToolbarTargetProps } from './RDGToolbarTarget.js';
7
- export type { RDGToolbarExportFormat, RDGToolbarExportScope } from './export.js';
8
+ export type { RDGToolbarApi, RDGToolbarState } from './api.js';
9
+ export type { RDGToolbarExportFormat, RDGToolbarExportInfo, RDGToolbarExportResult, RDGToolbarExportScope, RDGToolbarExportSettings, } from './export.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/toolbar/index.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/toolbar/index.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC5D,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,UAAU,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { RDGToolbarApi, RDGToolbarState } from './api.js';
1
2
  import { RDGToolbarController, RDGToolbarPublishedSnapshot } from './controller.js';
3
+ import { RDGToolbarExportSettings } from './export.js';
2
4
  import * as React from "react";
3
5
  export declare const EMPTY_TOOLBAR_SNAPSHOT: RDGToolbarPublishedSnapshot;
4
6
  type TargetRegistration = {
@@ -6,15 +8,27 @@ type TargetRegistration = {
6
8
  controller: RDGToolbarController;
7
9
  };
8
10
  export type RDGToolbarStore = {
11
+ /** One instance per store, so `apiRef` and `useRDGToolbarApi()` agree. */
12
+ api: RDGToolbarApi;
9
13
  createTargetRegistration: () => TargetRegistration;
10
14
  dispose: () => void;
15
+ /** Export settings the provider configured for every export of this grid. */
16
+ getExportDefaults: () => RDGToolbarExportSettings | undefined;
11
17
  getServerSnapshot: () => RDGToolbarPublishedSnapshot;
12
18
  getSnapshot: () => RDGToolbarPublishedSnapshot;
19
+ setExportDefaults: (settings: RDGToolbarExportSettings | undefined) => void;
13
20
  subscribe: (listener: () => void) => () => void;
14
21
  };
15
22
  export declare function createRDGToolbarStore(): RDGToolbarStore;
16
23
  export declare const RDGToolbarContext: React.Context<RDGToolbarStore | null>;
17
24
  export declare function useRDGToolbarStore(): RDGToolbarStore;
18
25
  export declare function useRDGToolbarSnapshot(): RDGToolbarPublishedSnapshot;
26
+ /**
27
+ * The provider's imperative API. Stable, and does not re-render on grid
28
+ * changes: pass it to `useRDGToolbarApiState` to render grid state.
29
+ */
30
+ export declare function useRDGToolbarApi(): RDGToolbarApi;
31
+ /** Subscribes to `api.getState()`, re-rendering when the grid state changes. */
32
+ export declare function useRDGToolbarApiState(api: RDGToolbarApi): RDGToolbarState;
19
33
  export {};
20
34
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/toolbar/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AAYtB,eAAO,MAAM,sBAAsB,EAAE,2BAapC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;IACrD,WAAW,EAAE,MAAM,2BAA2B,CAAC;IAC/C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CACjD,CAAC;AAgDF,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD;AAED,eAAO,MAAM,iBAAiB,uCAE7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED,wBAAgB,qBAAqB,IAAI,2BAA2B,CAOnE"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/toolbar/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAYzD,eAAO,MAAM,sBAAsB,EAAE,2BAapC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,MAAM,EAAE,MAAM,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,0EAA0E;IAC1E,GAAG,EAAE,aAAa,CAAC;IACnB,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,wBAAwB,GAAG,SAAS,CAAC;IAC9D,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;IACrD,WAAW,EAAE,MAAM,2BAA2B,CAAC;IAC/C,iBAAiB,EAAE,CAAC,QAAQ,EAAE,wBAAwB,GAAG,SAAS,KAAK,IAAI,CAAC;IAC5E,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CACjD,CAAC;AAgDF,wBAAgB,qBAAqB,IAAI,eAAe,CA8EvD;AAED,eAAO,MAAM,iBAAiB,uCAE7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED,wBAAgB,qBAAqB,IAAI,2BAA2B,CAOnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,CAEzE"}