@contember/bindx-dataview 0.1.48 → 0.1.50

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.
@@ -1 +1 @@
1
- {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../src/DataGrid.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,KAAK,YAAY,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAA;AAClH,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,YAAY,EACZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAQ3D,OAAO,EAAoB,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAE3E,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAM5B,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC9F,wBAAwB;IACxB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,4FAA4F;IAC5F,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,SAAS,CAAA;IACnE,8EAA8E;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IACxD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACnC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,eAAe,CAAA;IAClC,uDAAuD;IACvD,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,kBAAkB,CAAA;IAC5C,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,kBAAkB,CAAA;IAC1C,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,iBAAS,YAAY,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC9D,MAAM,EACN,QAAQ,EACR,cAAc,EACd,YAAiB,EACjB,MAAM,EAAE,YAAY,EACpB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GACV,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,IAAI,CAyG/C;AAMD,eAAO,MAAM,QAAQ,EAAoC,OAAO,YAAY,CAAA"}
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../src/DataGrid.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,KAAK,YAAY,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAA;AAClH,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,YAAY,EACZ,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAQ3D,OAAO,EAAoB,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAG3E,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAM5B,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAC9F,wBAAwB;IACxB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC3B,4FAA4F;IAC5F,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,SAAS,CAAA;IACnE,8EAA8E;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IACxD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACnC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,eAAe,CAAA;IAClC,uDAAuD;IACvD,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,kBAAkB,CAAA;IAC5C,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,kBAAkB,CAAA;IAC1C,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD,iBAAS,YAAY,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC9D,MAAM,EACN,QAAQ,EACR,cAAc,EACd,YAAiB,EACjB,MAAM,EAAE,YAAY,EACpB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GACV,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,YAAY,GAAG,IAAI,CAkH/C;AAMD,eAAO,MAAM,QAAQ,EAAoC,OAAO,YAAY,CAAA"}
@@ -13,6 +13,8 @@ export interface DataViewElementData {
13
13
  readonly label?: React.ReactNode;
14
14
  readonly fallback?: boolean;
15
15
  }
16
+ /** Fetches every row in the view's scope, unpaged. Resolves to null when the query returned an unexpected result. */
17
+ export type DataViewFetchAllData = () => Promise<readonly Record<string, unknown>[] | null>;
16
18
  export interface DataViewContextValue {
17
19
  readonly filtering: FilteringState;
18
20
  readonly sorting: SortingStateResult;
@@ -27,6 +29,8 @@ export interface DataViewContextValue {
27
29
  readonly highlightIndex: number | null;
28
30
  readonly setHighlightIndex: (index: number | null) => void;
29
31
  readonly selectionMeta: SelectionMeta;
32
+ /** Owned by each view, so the query keeps the scope the view loads with (static filter, parent relation). */
33
+ readonly fetchAllData: DataViewFetchAllData;
30
34
  readonly toolbarContent?: React.ReactNode;
31
35
  /** Named layout render callbacks — analyzed during collection, called per item at runtime */
32
36
  readonly layoutRenders: ReadonlyMap<string, (item: DataViewItem) => React.ReactNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"DataViewContext.d.ts","sourceRoot":"","sources":["../src/DataViewContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACxH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAA;AAEhF,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;AAEjD,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,6FAA6F;IAC7F,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;IACpF,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC,CAAA;CAC5E;AAID,wBAAgB,kBAAkB,IAAI,oBAAoB,CAMzD;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,GAAG,IAAI,CAExE;AAED,eAAO,MAAM,gBAAgB,6CAA2B,CAAA"}
1
+ {"version":3,"file":"DataViewContext.d.ts","sourceRoot":"","sources":["../src/DataViewContext.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACxH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAA;AAEhF,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;AAEjD,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,qHAAqH;AACrH,MAAM,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;AAE3F,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAA;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAA;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1D,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,6GAA6G;IAC7G,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAA;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,6FAA6F;IAC7F,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;IACpF,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC,CAAA;CAC5E;AAID,wBAAgB,kBAAkB,IAAI,oBAAoB,CAMzD;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,GAAG,IAAI,CAExE;AAED,eAAO,MAAM,gBAAgB,6CAA2B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"HasManyDataGrid.d.ts","sourceRoot":"","sources":["../src/HasManyDataGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAQ,KAAK,YAAY,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAA;AAClH,OAAO,KAAK,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,MAAM,kBAAkB,CAAA;AASzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAY3D,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACpE,iDAAiD;IACjD,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC/B,4FAA4F;IAC5F,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,SAAS,CAAA;IACpD,sBAAsB;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IACxD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACnC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,eAAe,CAAA;IAClC,uDAAuD;IACvD,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,kBAAkB,CAAA;IAC5C,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,kBAAkB,CAAA;IAC1C,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAkBD,iBAAS,mBAAmB,CAAC,OAAO,SAAS,MAAM,EAAE,EACpD,KAAK,EACL,QAAQ,EACR,cAAc,EACd,YAAiB,EACjB,MAAM,EAAE,YAAY,EACpB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GACV,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,YAAY,GAAG,IAAI,CAiNrD;AAMD,eAAO,MAAM,eAAe,EAA2C,OAAO,mBAAmB,CAAA"}
1
+ {"version":3,"file":"HasManyDataGrid.d.ts","sourceRoot":"","sources":["../src/HasManyDataGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAQ,KAAK,YAAY,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAA;AAClH,OAAO,KAAK,EACX,cAAc,EACd,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,MAAM,kBAAkB,CAAA;AAQzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAa3D,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IACpE,iDAAiD;IACjD,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC/B,4FAA4F;IAC5F,QAAQ,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,SAAS,CAAA;IACpD,sBAAsB;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IACxD,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAA;IACnC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,eAAe,CAAA;IAClC,uDAAuD;IACvD,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,qCAAqC;IACrC,uBAAuB,CAAC,EAAE,kBAAkB,CAAA;IAC5C,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,kBAAkB,CAAA;IAC1C,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAkBD,iBAAS,mBAAmB,CAAC,OAAO,SAAS,MAAM,EAAE,EACpD,KAAK,EACL,QAAQ,EACR,cAAc,EACd,YAAiB,EACjB,MAAM,EAAE,YAAY,EACpB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GACV,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,YAAY,GAAG,IAAI,CAqMrD;AAMD,eAAO,MAAM,eAAe,EAA2C,OAAO,mBAAmB,CAAA"}
@@ -6,9 +6,10 @@
6
6
  */
7
7
  import type { DataViewElementData } from './DataViewContext.js';
8
8
  import type { FilteringState } from './useDataViewState.js';
9
- import type { SortingState, SortingDirectionAction, PagingState, PagingInfo, OrderDirection, FilterHandler, FilterArtifact, DataViewLayout, FieldRef } from '@contember/bindx';
9
+ import type { SortingState, SortingDirections, SortingDirectionAction, PagingState, PagingInfo, OrderDirection, FilterHandler, FilterArtifact, DataViewLayout, FieldRef } from '@contember/bindx';
10
10
  export interface DataViewSortingMethods {
11
11
  setOrderBy<T>(field: FieldRef<T>, action: SortingDirectionAction, append?: boolean): void;
12
+ setDirections(directions: SortingDirections): void;
12
13
  }
13
14
  export declare function useDataViewSortingState(): SortingState;
14
15
  export declare function useDataViewSortingMethods(): DataViewSortingMethods;
@@ -23,6 +24,7 @@ export declare function useDataViewPagingInfo(): PagingInfo;
23
24
  export declare function useDataViewPagingMethods(): DataViewPagingMethods;
24
25
  export interface DataViewFilteringMethods {
25
26
  setFilter(name: string, artifact: FilterArtifact): void;
27
+ setAllFilters(artifacts: Record<string, FilterArtifact>): void;
26
28
  }
27
29
  export declare function useDataViewFilteringState(): FilteringState;
28
30
  export declare function useDataViewFilteringMethods(): DataViewFilteringMethods;
@@ -1 +1 @@
1
- {"version":3,"file":"contextHooks.d.ts","sourceRoot":"","sources":["../src/contextHooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAA+D,MAAM,uBAAuB,CAAA;AACxH,OAAO,KAAK,EACX,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,QAAQ,EACR,MAAM,kBAAkB,CAAA;AAMzB,MAAM,WAAW,sBAAsB;IACtC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACzF;AAED,wBAAgB,uBAAuB,IAAI,YAAY,CAEtD;AAED,wBAAgB,yBAAyB,IAAI,sBAAsB,CAGlE;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAExF;AAMD,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAA;IACrE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IAC3C,iBAAiB,IAAI,IAAI,CAAA;CACzB;AAED,wBAAgB,sBAAsB,IAAI,WAAW,CAEpD;AAED,wBAAgB,qBAAqB,IAAI,UAAU,CAElD;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAahE;AAMD,MAAM,WAAW,wBAAwB;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;CACvD;AAED,wBAAgB,yBAAyB,IAAI,cAAc,CAE1D;AAED,wBAAgB,2BAA2B,IAAI,wBAAwB,CAGtE;AAED,wBAAgB,gCAAgC,IAAI,WAAW,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC,CAElH;AAMD,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAA;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACxC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CACnD;AAED,wBAAgB,yBAAyB,IAAI,sBAAsB,CAOlE;AAED,wBAAgB,2BAA2B,IAAI,wBAAwB,CAMtE;AAMD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE/D,wBAAgB,mBAAmB,IAAI,SAAS,mBAAmB,EAAE,CAoBpE"}
1
+ {"version":3,"file":"contextHooks.d.ts","sourceRoot":"","sources":["../src/contextHooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAA+D,MAAM,uBAAuB,CAAA;AACxH,OAAO,KAAK,EACX,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,QAAQ,EACR,MAAM,kBAAkB,CAAA;AAMzB,MAAM,WAAW,sBAAsB;IACtC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACzF,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAClD;AAED,wBAAgB,uBAAuB,IAAI,YAAY,CAEtD;AAED,wBAAgB,yBAAyB,IAAI,sBAAsB,CAMlE;AAED,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAExF;AAMD,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAA;IACrE,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IAC3C,iBAAiB,IAAI,IAAI,CAAA;CACzB;AAED,wBAAgB,sBAAsB,IAAI,WAAW,CAEpD;AAED,wBAAgB,qBAAqB,IAAI,UAAU,CAElD;AAED,wBAAgB,wBAAwB,IAAI,qBAAqB,CAahE;AAMD,MAAM,WAAW,wBAAwB;IACxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;IACvD,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAAA;CAC9D;AAED,wBAAgB,yBAAyB,IAAI,cAAc,CAE1D;AAED,wBAAgB,2BAA2B,IAAI,wBAAwB,CAMtE;AAED,wBAAgB,gCAAgC,IAAI,WAAW,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC,CAElH;AAMD,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAA;IACxD,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,wBAAwB;IACxC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IAC3C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CACnD;AAED,wBAAgB,yBAAyB,IAAI,sBAAsB,CAOlE;AAED,wBAAgB,2BAA2B,IAAI,wBAAwB,CAMtE;AAMD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE/D,wBAAgB,mBAAmB,IAAI,SAAS,mBAAmB,EAAE,CAoBpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAA+D,MAAM,OAAO,CAAA;AAYnF,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAA;CACvE;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAAA;CAC7C;AAMD,qBAAa,gBAAiB,YAAW,aAAa;IACrD,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,YAAY;CAqB1D;AAyCD,MAAM,WAAW,0BAA0B;IAC1C,qBAAqB;IACrB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,qBAAqB,sGAoEjC,CAAA;AAOD,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACxC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAsBlF"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../src/export.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAA+D,MAAM,OAAO,CAAA;AASnF,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAA;CACvE;AAED,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAAA;CAC7C;AAMD,qBAAa,gBAAiB,YAAW,aAAa;IACrD,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,YAAY;CAqB1D;AAyCD,MAAM,WAAW,0BAA0B;IAC1C,qBAAqB;IACrB,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAA;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,qBAAqB,sGAwDjC,CAAA;AAOD,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACxC;AAED,wBAAgB,uBAAuB,IAAI,MAAM,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAOlF"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterHooks.d.ts","sourceRoot":"","sources":["../src/filterHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAqD,MAAM,OAAO,CAAA;AAEhH,OAAO,KAAK,EACX,cAAc,EACd,kBAAkB,EAKlB,MAAM,kBAAkB,CAAA;AAMzB,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,cAAc,IAAI;IAC/D,KAAK,EAAE,CAAC,GAAG,SAAS;IACpB,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,IAAI;IAC1D,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;CAC3B,CAAA;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,uBAAuB,CAAC,CAAC,CAAC,CA0BnG;AAMD,MAAM,MAAM,8BAA8B,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAA;AAC3E,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,MAAM,CAAA;AAC7D,MAAM,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,4BAA4B;IACrC,GAAG,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,IAAI;CACrD,CAAA;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,8BAA8B,CAGrG;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,8BAA8B,CAuBhH;AAMD,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,CAAA;AAC7G,MAAM,MAAM,yBAAyB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACtE,MAAM,MAAM,2BAA2B,GAAG;IACzC,OAAO,EAAE,yBAAyB;IAClC,GAAG,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI;CAClD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,2BAA2B,CAG9F;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,2BAA2B,CAwDzG;AAMD,MAAM,MAAM,+BAA+B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,CAAA;AACjH,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AAC1E,MAAM,MAAM,+BAA+B,GAAG;IAC7C,OAAO,EAAE,6BAA6B;IACtC,GAAG,EAAE,CAAC,MAAM,EAAE,+BAA+B,KAAK,IAAI;CACtD,CAAA;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,+BAA+B,CAGzG;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,+BAA+B,CAwD9G;AAMD,MAAM,WAAW,gCAAgC;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CACpD;AAED,wBAAgB,0BAA0B,CAAC,EAAE,IAAI,EAAE,UAAgB,EAAE,EAAE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,gCAAgC,CA0BnC;AAMD,MAAM,MAAM,oCAAoC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,CAAA;AAExF,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAC9B,oCAAoC,CAQtC;AAMD,MAAM,WAAW,kCAAkC;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CACpD;AAED,MAAM,WAAW,iCAAiC;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,4BAA4B,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,iCAAiC,GAAG,kCAAkC,CAiB9I;AAMD,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,eAAe,CAAA;AAC7G,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACpE,MAAM,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,uBAAuB;IAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,2BAA2B,KAAK,IAAI;CAClD,CAAA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,CA8B/E"}
1
+ {"version":3,"file":"filterHooks.d.ts","sourceRoot":"","sources":["../src/filterHooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Parent-scoped relation query used by HasManyDataGrid.
3
+ *
4
+ * The grid reads its rows through the parent record, so every read of the
5
+ * relation — paged load and unpaged export alike — has to go through it.
6
+ */
7
+ import type { GetQuery, QuerySpec } from '@contember/bindx';
8
+ export interface HasManyRelationQueryOptions {
9
+ readonly parentEntityType: string;
10
+ readonly parentEntityId: string;
11
+ readonly fieldName: string;
12
+ readonly filter: Record<string, unknown> | undefined;
13
+ readonly orderBy: readonly Record<string, unknown>[] | undefined;
14
+ readonly limit?: number;
15
+ readonly offset?: number;
16
+ readonly targetSpec: QuerySpec;
17
+ }
18
+ export interface HasManyRelationQuery {
19
+ /** Alias the relation rows are returned under */
20
+ readonly alias: string;
21
+ readonly query: GetQuery;
22
+ }
23
+ export interface HasManyRelationRows {
24
+ readonly rows: readonly Record<string, unknown>[];
25
+ readonly totalCount: number | undefined;
26
+ }
27
+ export declare function buildHasManyRelationQuery({ parentEntityType, parentEntityId, fieldName, filter, orderBy, limit, offset, targetSpec, }: HasManyRelationQueryOptions): HasManyRelationQuery;
28
+ export declare function extractHasManyRelationRows(data: Record<string, unknown>, { alias, fieldName }: {
29
+ alias: string;
30
+ fieldName: string;
31
+ }): HasManyRelationRows | null;
32
+ //# sourceMappingURL=hasManyRelationQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasManyRelationQuery.d.ts","sourceRoot":"","sources":["../src/hasManyRelationQuery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE3D,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACpC,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CACxB;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CACvC;AAED,wBAAgB,yBAAyB,CAAC,EACzC,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EACN,UAAU,GACV,EAAE,2BAA2B,GAAG,oBAAoB,CAoCpD;AAED,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxD,mBAAmB,GAAG,IAAI,CAK5B"}
package/dist/index.d.ts CHANGED
@@ -8,8 +8,9 @@ export { createRelationColumn, hasOneCellConfig, hasManyCellConfig, type Relatio
8
8
  export { DataGridTextColumn, DataGridNumberColumn, DataGridDateColumn, DataGridDateTimeColumn, DataGridBooleanColumn, DataGridEnumColumn, DataGridEnumListColumn, DataGridUuidColumn, DataGridIsDefinedColumn, DataGridHasOneColumn, DataGridHasManyColumn, DataGridActionColumn, DataGridColumn, type DataGridTextColumnProps, type DataGridNumberColumnProps, type DataGridDateColumnProps, type DataGridDateTimeColumnProps, type DataGridBooleanColumnProps, type DataGridEnumColumnProps, type DataGridEnumListColumnProps, type DataGridUuidColumnProps, type DataGridIsDefinedColumnProps, type DataGridHasOneColumnProps, type DataGridHasManyColumnProps, type DataGridActionColumnProps, type DataGridColumnProps, type ColumnMeta, } from './columns.js';
9
9
  export { extractFieldName, extractEnumName, extractRelatedEntityName, hasFieldRefMeta, } from './fieldRef.js';
10
10
  export { getRelatedAccessor } from './columnTypes.js';
11
- export { useFilteringState, useSortingState, usePagingState, useSelectionState, type FilteringState, type RegisteredFilter, type UseFilteringOptions, type UseSortingOptions, type SortingStateResult, type UsePagingOptions, type PagingStateResult, type UseSelectionOptions, type SelectionStateResult, } from './useDataViewState.js';
12
- export { useDataViewContext, useOptionalDataViewContext, DataViewProvider, type DataViewContextValue, type DataViewItem, type DataViewLoaderState as DataViewLoaderStateType, type DataViewElementData, } from './DataViewContext.js';
11
+ export type { FilterArtifact, SortingDirections } from '@contember/bindx';
12
+ export { useFilteringState, useSortingState, usePagingState, useSelectionState, type FilteringState, type FilterArtifactUpdate, type RegisteredFilter, type UseFilteringOptions, type UseSortingOptions, type SortingStateResult, type UsePagingOptions, type PagingStateResult, type UseSelectionOptions, type SelectionStateResult, } from './useDataViewState.js';
13
+ export { useDataViewContext, useOptionalDataViewContext, DataViewProvider, type DataViewContextValue, type DataViewFetchAllData, type DataViewItem, type DataViewLoaderState as DataViewLoaderStateType, type DataViewElementData, } from './DataViewContext.js';
13
14
  export { useDataView, type UseDataViewOptions, type DataViewResult } from './useDataView.js';
14
15
  export { dataAttribute } from './dataAttribute.js';
15
16
  export { useDataViewFilterName, useOptionalDataViewFilterName, DataViewFilterNameProvider, } from './filterContext.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDataView.d.ts","sourceRoot":"","sources":["../../src/select/SelectDataView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAQ,KAAK,YAAY,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAA;AAClH,OAAO,KAAK,EACX,cAAc,EAGd,cAAc,EAEd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAahD,MAAM,WAAW,mBAAmB;IACnC,oDAAoD;IACpD,QAAQ,EAAE,SAAS,CAAA;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,SAAS,CAAA;IACrD,gCAAgC;IAChC,UAAU,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;IAC/D,yBAAyB;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IACxD,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAID,iBAAS,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EACV,cAAc,EACd,MAAM,EAAE,YAAY,EACpB,YAAiB,GACjB,EAAE,mBAAmB,GAAG,YAAY,GAAG,IAAI,CAsK3C;AAED,eAAO,MAAM,cAAc,EAA0C,OAAO,kBAAkB,CAAA"}
1
+ {"version":3,"file":"SelectDataView.d.ts","sourceRoot":"","sources":["../../src/select/SelectDataView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAQ,KAAK,YAAY,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAA;AAClH,OAAO,KAAK,EACX,cAAc,EAGd,cAAc,EAEd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAchD,MAAM,WAAW,mBAAmB;IACnC,oDAAoD;IACpD,QAAQ,EAAE,SAAS,CAAA;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,SAAS,CAAA;IACrD,gCAAgC;IAChC,UAAU,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,CAAA;IAC/D,yBAAyB;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IACxD,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAID,iBAAS,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EACV,cAAc,EACd,MAAM,EAAE,YAAY,EACpB,YAAiB,GACjB,EAAE,mBAAmB,GAAG,YAAY,GAAG,IAAI,CA8K3C;AAED,eAAO,MAAM,cAAc,EAA0C,OAAO,kBAAkB,CAAA"}
@@ -11,10 +11,15 @@ export interface RegisteredFilter {
11
11
  readonly handler: FilterHandler<FilterArtifact>;
12
12
  artifact: FilterArtifact;
13
13
  }
14
+ /** Value or updater accepted by {@link FilteringState.setArtifact}. */
15
+ export type FilterArtifactUpdate = FilterArtifact | ((current: FilterArtifact | undefined) => FilterArtifact | undefined);
14
16
  export interface FilteringState {
15
17
  readonly filters: ReadonlyMap<string, RegisteredFilter>;
16
18
  getArtifact(name: string): FilterArtifact | undefined;
17
- setArtifact(name: string, artifact: FilterArtifact): void;
19
+ /** An updater sees the live artifact, not a render snapshot; returning `undefined` resets the filter to its default. */
20
+ setArtifact(name: string, artifact: FilterArtifactUpdate): void;
21
+ /** Replaces the whole artifact record at once — for restoring a saved filter preset. */
22
+ setAllArtifacts(artifacts: Record<string, FilterArtifact>): void;
18
23
  resetFilter(name: string): void;
19
24
  resetAll(): void;
20
25
  readonly hasActiveFilters: boolean;
@@ -40,6 +45,8 @@ export interface UseSortingOptions {
40
45
  export interface SortingStateResult {
41
46
  readonly state: SortingState;
42
47
  setOrderBy<T>(field: FieldRef<T>, action: SortingDirectionAction, append?: boolean): void;
48
+ /** Replaces the whole direction record at once — for restoring saved sorting. */
49
+ setDirections(directions: SortingDirections): void;
43
50
  clear(): void;
44
51
  directionOf<T>(field: FieldRef<T>): OrderDirection | null;
45
52
  readonly resolvedOrderBy: readonly Record<string, unknown>[] | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useDataViewState.d.ts","sourceRoot":"","sources":["../src/useDataViewState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDataViewState.d.ts","sourceRoot":"","sources":["../src/useDataViewState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Unpaged fetch-all for views that load through a root list query.
3
+ */
4
+ import type { SelectionMeta } from '@contember/bindx';
5
+ import type { DataViewFetchAllData } from './DataViewContext.js';
6
+ export interface ListFetchAllDataOptions {
7
+ /** Entity the view lists */
8
+ readonly entityType: string;
9
+ /** Full scope of the view — static filter combined with the user filters */
10
+ readonly filter: Record<string, unknown> | undefined;
11
+ readonly orderBy: readonly Record<string, unknown>[] | undefined;
12
+ readonly selection: SelectionMeta;
13
+ }
14
+ export declare function useListFetchAllData({ entityType, filter, orderBy, selection }: ListFetchAllDataOptions): DataViewFetchAllData;
15
+ //# sourceMappingURL=useListFetchAllData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useListFetchAllData.d.ts","sourceRoot":"","sources":["../src/useListFetchAllData.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACvC,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IAChE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;CACjC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,oBAAoB,CAkB7H"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/bindx-dataview",
3
- "version": "0.1.48",
3
+ "version": "0.1.50",
4
4
  "description": "Headless DataGrid and DataView components for bindx",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -15,8 +15,8 @@
15
15
  "react": ">=18.0.0"
16
16
  },
17
17
  "dependencies": {
18
- "@contember/bindx": "0.1.48",
19
- "@contember/bindx-react": "0.1.48",
18
+ "@contember/bindx": "0.1.50",
19
+ "@contember/bindx-react": "0.1.50",
20
20
  "@radix-ui/primitive": "^1.1.3",
21
21
  "@radix-ui/react-slot": "^1.2.4"
22
22
  },
package/src/DataGrid.tsx CHANGED
@@ -23,6 +23,7 @@ import {
23
23
  import { useDataViewKey } from './DataViewKeyProvider.js'
24
24
  import { DataViewProvider, type DataViewContextValue, type DataViewLoaderState } from './DataViewContext.js'
25
25
  import { useDataGridSetup, QUERY_FILTER_NAME } from './useDataGridSetup.js'
26
+ import { useListFetchAllData } from './useListFetchAllData.js'
26
27
 
27
28
  export { QUERY_FILTER_NAME }
28
29
 
@@ -152,6 +153,14 @@ function DataGridImpl<TRoleMap extends Record<string, object>>({
152
153
  setHighlightIndex(null)
153
154
  }, [items])
154
155
 
156
+ // ---- Unpaged fetch of the same list the grid loads ----
157
+ const fetchAllData = useListFetchAllData({
158
+ entityType,
159
+ filter: setup.combinedFilter,
160
+ orderBy: setup.sorting.resolvedOrderBy,
161
+ selection: setup.selection,
162
+ })
163
+
155
164
  const contextValue = useMemo((): DataViewContextValue => ({
156
165
  filtering: setup.filtering,
157
166
  sorting: setup.sorting,
@@ -166,10 +175,11 @@ function DataGridImpl<TRoleMap extends Record<string, object>>({
166
175
  highlightIndex,
167
176
  setHighlightIndex,
168
177
  selectionMeta: setup.selection,
178
+ fetchAllData,
169
179
  toolbarContent: setup.toolbarContent,
170
180
  layoutRenders: setup.layoutRenders,
171
181
  layoutElements: setup.layoutElements,
172
- }), [setup.filtering, setup.sorting, setup.paging, setup.selectionState, setup.columns, entityType, items, itemCount, loaderState, reload, highlightIndex, setup.selection, setup.toolbarContent, setup.layoutRenders, setup.layoutElements])
182
+ }), [setup.filtering, setup.sorting, setup.paging, setup.selectionState, setup.columns, entityType, items, itemCount, loaderState, reload, highlightIndex, setup.selection, fetchAllData, setup.toolbarContent, setup.layoutRenders, setup.layoutElements])
173
183
 
174
184
  return (
175
185
  <DataViewProvider value={contextValue}>
@@ -18,6 +18,9 @@ export interface DataViewElementData {
18
18
  readonly fallback?: boolean
19
19
  }
20
20
 
21
+ /** Fetches every row in the view's scope, unpaged. Resolves to null when the query returned an unexpected result. */
22
+ export type DataViewFetchAllData = () => Promise<readonly Record<string, unknown>[] | null>
23
+
21
24
  export interface DataViewContextValue {
22
25
  readonly filtering: FilteringState
23
26
  readonly sorting: SortingStateResult
@@ -32,6 +35,8 @@ export interface DataViewContextValue {
32
35
  readonly highlightIndex: number | null
33
36
  readonly setHighlightIndex: (index: number | null) => void
34
37
  readonly selectionMeta: SelectionMeta
38
+ /** Owned by each view, so the query keeps the scope the view loads with (static filter, parent relation). */
39
+ readonly fetchAllData: DataViewFetchAllData
35
40
  readonly toolbarContent?: React.ReactNode
36
41
  /** Named layout render callbacks — analyzed during collection, called per item at runtime */
37
42
  readonly layoutRenders: ReadonlyMap<string, (item: DataViewItem) => React.ReactNode>
@@ -30,7 +30,6 @@ import type {
30
30
  import { FIELD_REF_META } from '@contember/bindx'
31
31
  import {
32
32
  buildQueryFromSelection,
33
- generateHasManyAlias,
34
33
  EntityHandle,
35
34
  setEntityData,
36
35
  } from '@contember/bindx'
@@ -40,8 +39,9 @@ import {
40
39
  useBindxContext,
41
40
  } from '@contember/bindx-react'
42
41
  import { useDataViewKey } from './DataViewKeyProvider.js'
43
- import { DataViewProvider, type DataViewContextValue, type DataViewLoaderState } from './DataViewContext.js'
42
+ import { DataViewProvider, type DataViewContextValue, type DataViewFetchAllData, type DataViewLoaderState } from './DataViewContext.js'
44
43
  import { useDataGridSetup } from './useDataGridSetup.js'
44
+ import { buildHasManyRelationQuery, extractHasManyRelationRows } from './hasManyRelationQuery.js'
45
45
 
46
46
  // ============================================================================
47
47
  // Props
@@ -133,17 +133,6 @@ function HasManyDataGridImpl<TEntity extends object>({
133
133
  const [loaderState, setLoaderState] = useState<DataViewLoaderState>('initial')
134
134
  const [listState, setListState] = useState<ListState>(INITIAL_LIST_STATE)
135
135
 
136
- // ---- Build relation query spec ----
137
- const alias = useMemo(
138
- () => generateHasManyAlias(fieldName, {
139
- filter: setup.combinedFilter,
140
- orderBy: setup.sorting.resolvedOrderBy as unknown[],
141
- limit: setup.paging.queryLimit,
142
- offset: setup.paging.queryOffset,
143
- }),
144
- [fieldName, setup.combinedFilter, setup.sorting.resolvedOrderBy, setup.paging.queryLimit, setup.paging.queryOffset],
145
- )
146
-
147
136
  const optionsKey = useMemo(
148
137
  () => JSON.stringify({
149
138
  filter: setup.combinedFilter ?? {},
@@ -161,7 +150,6 @@ function HasManyDataGridImpl<TEntity extends object>({
161
150
 
162
151
  const fetchData = async (): Promise<void> => {
163
152
  try {
164
- const targetSpec = buildQueryFromSelection(setup.selection)
165
153
  const currentOptions = JSON.parse(optionsKey) as {
166
154
  filter: Record<string, unknown>
167
155
  orderBy: readonly Record<string, unknown>[]
@@ -169,32 +157,18 @@ function HasManyDataGridImpl<TEntity extends object>({
169
157
  offset?: number
170
158
  }
171
159
 
172
- const parentSpec = {
173
- fields: [
174
- { name: 'id', sourcePath: ['id'] },
175
- {
176
- name: alias,
177
- sourcePath: [fieldName],
178
- isArray: true as const,
179
- totalCount: true,
180
- filter: Object.keys(currentOptions.filter).length > 0 ? currentOptions.filter : undefined,
181
- orderBy: currentOptions.orderBy.length > 0 ? currentOptions.orderBy : undefined,
182
- limit: currentOptions.limit,
183
- offset: currentOptions.offset,
184
- nested: targetSpec,
185
- },
186
- ],
187
- }
160
+ const { alias, query } = buildHasManyRelationQuery({
161
+ parentEntityType,
162
+ parentEntityId,
163
+ fieldName,
164
+ filter: currentOptions.filter,
165
+ orderBy: currentOptions.orderBy,
166
+ limit: currentOptions.limit,
167
+ offset: currentOptions.offset,
168
+ targetSpec: buildQueryFromSelection(setup.selection),
169
+ })
188
170
 
189
- const result = await batcher.enqueue(
190
- {
191
- type: 'get',
192
- entityType: parentEntityType,
193
- by: { id: parentEntityId },
194
- spec: parentSpec,
195
- },
196
- { signal: abortController.signal },
197
- )
171
+ const result = await batcher.enqueue(query, { signal: abortController.signal })
198
172
 
199
173
  if (abortController.signal.aborted) return
200
174
 
@@ -203,17 +177,13 @@ function HasManyDataGridImpl<TEntity extends object>({
203
177
  return
204
178
  }
205
179
 
206
- const relationData = (result.data[alias] ?? result.data[fieldName]) as Array<Record<string, unknown>> | undefined
207
- const totalCount = Array.isArray(relationData) && 'totalCount' in relationData
208
- ? (relationData as Array<Record<string, unknown>> & { totalCount: number }).totalCount
209
- : undefined
210
-
211
- if (!Array.isArray(relationData)) {
212
- setListState({ status: 'ready', items: [], totalCount })
180
+ const relation = extractHasManyRelationRows(result.data, { alias, fieldName })
181
+ if (!relation) {
182
+ setListState({ status: 'ready', items: [] })
213
183
  return
214
184
  }
215
185
 
216
- const items = relationData.map((data: Record<string, unknown>) => {
186
+ const items = relation.rows.map((data: Record<string, unknown>) => {
217
187
  const id = data['id'] as string
218
188
  dispatcher.dispatch(
219
189
  setEntityData(targetEntityType, id, data, true),
@@ -221,7 +191,7 @@ function HasManyDataGridImpl<TEntity extends object>({
221
191
  return { id, data: data as object }
222
192
  })
223
193
 
224
- setListState({ status: 'ready', items, totalCount })
194
+ setListState({ status: 'ready', items, totalCount: relation.totalCount })
225
195
  } catch (error) {
226
196
  if (abortController.signal.aborted) return
227
197
  setListState({ status: 'error', items: [] })
@@ -233,7 +203,7 @@ function HasManyDataGridImpl<TEntity extends object>({
233
203
  return () => {
234
204
  abortController.abort()
235
205
  }
236
- }, [parentEntityType, parentEntityId, fieldName, targetEntityType, alias, optionsKey, setup.selection, batcher, dispatcher, store])
206
+ }, [parentEntityType, parentEntityId, fieldName, targetEntityType, optionsKey, setup.selection, batcher, dispatcher, store])
237
207
 
238
208
  // ---- Build items from state ----
239
209
  const items = useMemo((): EntityAccessor<TEntity>[] => {
@@ -285,6 +255,23 @@ function HasManyDataGridImpl<TEntity extends object>({
285
255
  setHighlightIndex(null)
286
256
  }, [items])
287
257
 
258
+ // ---- Unpaged read of the same parent-scoped relation ----
259
+ const fetchAllData = useCallback<DataViewFetchAllData>(async () => {
260
+ const { alias, query } = buildHasManyRelationQuery({
261
+ parentEntityType,
262
+ parentEntityId,
263
+ fieldName,
264
+ filter: setup.combinedFilter,
265
+ orderBy: setup.sorting.resolvedOrderBy,
266
+ targetSpec: buildQueryFromSelection(setup.selection),
267
+ })
268
+
269
+ const result = await batcher.enqueue(query)
270
+ if (result.type !== 'get' || !result.data) return null
271
+
272
+ return extractHasManyRelationRows(result.data, { alias, fieldName })?.rows ?? null
273
+ }, [parentEntityType, parentEntityId, fieldName, setup.combinedFilter, setup.sorting.resolvedOrderBy, setup.selection, batcher])
274
+
288
275
  const contextValue = useMemo((): DataViewContextValue => ({
289
276
  filtering: setup.filtering,
290
277
  sorting: setup.sorting,
@@ -299,10 +286,11 @@ function HasManyDataGridImpl<TEntity extends object>({
299
286
  highlightIndex,
300
287
  setHighlightIndex,
301
288
  selectionMeta: setup.selection,
289
+ fetchAllData,
302
290
  toolbarContent: setup.toolbarContent,
303
291
  layoutRenders: setup.layoutRenders,
304
292
  layoutElements: setup.layoutElements,
305
- }), [setup.filtering, setup.sorting, setup.paging, setup.selectionState, setup.columns, targetEntityType, items, itemCount, loaderState, reload, highlightIndex, setup.selection, setup.toolbarContent, setup.layoutRenders, setup.layoutElements])
293
+ }), [setup.filtering, setup.sorting, setup.paging, setup.selectionState, setup.columns, targetEntityType, items, itemCount, loaderState, reload, highlightIndex, setup.selection, fetchAllData, setup.toolbarContent, setup.layoutRenders, setup.layoutElements])
306
294
 
307
295
  return (
308
296
  <DataViewProvider value={contextValue}>
@@ -11,6 +11,7 @@ import type { DataViewElementData } from './DataViewContext.js'
11
11
  import type { FilteringState, SortingStateResult, PagingStateResult, SelectionStateResult } from './useDataViewState.js'
12
12
  import type {
13
13
  SortingState,
14
+ SortingDirections,
14
15
  SortingDirectionAction,
15
16
  PagingState,
16
17
  PagingInfo,
@@ -27,6 +28,7 @@ import type {
27
28
 
28
29
  export interface DataViewSortingMethods {
29
30
  setOrderBy<T>(field: FieldRef<T>, action: SortingDirectionAction, append?: boolean): void
31
+ setDirections(directions: SortingDirections): void
30
32
  }
31
33
 
32
34
  export function useDataViewSortingState(): SortingState {
@@ -35,7 +37,10 @@ export function useDataViewSortingState(): SortingState {
35
37
 
36
38
  export function useDataViewSortingMethods(): DataViewSortingMethods {
37
39
  const { sorting } = useDataViewContext()
38
- return useMemo(() => ({ setOrderBy: sorting.setOrderBy }), [sorting.setOrderBy])
40
+ return useMemo((): DataViewSortingMethods => ({
41
+ setOrderBy: sorting.setOrderBy,
42
+ setDirections: sorting.setDirections,
43
+ }), [sorting.setOrderBy, sorting.setDirections])
39
44
  }
40
45
 
41
46
  export function useDataViewSortingDirection<T>(field: FieldRef<T>): OrderDirection | null {
@@ -81,6 +86,7 @@ export function useDataViewPagingMethods(): DataViewPagingMethods {
81
86
 
82
87
  export interface DataViewFilteringMethods {
83
88
  setFilter(name: string, artifact: FilterArtifact): void
89
+ setAllFilters(artifacts: Record<string, FilterArtifact>): void
84
90
  }
85
91
 
86
92
  export function useDataViewFilteringState(): FilteringState {
@@ -89,7 +95,10 @@ export function useDataViewFilteringState(): FilteringState {
89
95
 
90
96
  export function useDataViewFilteringMethods(): DataViewFilteringMethods {
91
97
  const { filtering } = useDataViewContext()
92
- return useMemo(() => ({ setFilter: filtering.setArtifact }), [filtering.setArtifact])
98
+ return useMemo((): DataViewFilteringMethods => ({
99
+ setFilter: filtering.setArtifact,
100
+ setAllFilters: filtering.setAllArtifacts,
101
+ }), [filtering.setArtifact, filtering.setAllArtifacts])
93
102
  }
94
103
 
95
104
  export function useDataViewFilterHandlerRegistry(): ReadonlyMap<string, { handler: FilterHandler<FilterArtifact> }> {
package/src/export.tsx CHANGED
@@ -15,9 +15,6 @@ import React, { forwardRef, type ReactElement, useCallback, useState } from 'rea
15
15
  import { Slot } from '@radix-ui/react-slot'
16
16
  import { composeEventHandlers } from '@radix-ui/primitive'
17
17
  import { useDataViewContext } from './DataViewContext.js'
18
- import { useBindxContext } from '@contember/bindx-react'
19
- import { buildQueryFromSelection } from '@contember/bindx'
20
- import type { ListQuery, ListQueryResult } from '@contember/bindx'
21
18
 
22
19
  // ============================================================================
23
20
  // Export Factory Interface
@@ -117,12 +114,11 @@ export interface DataViewExportTriggerProps {
117
114
 
118
115
  export const DataViewExportTrigger = forwardRef<HTMLButtonElement, DataViewExportTriggerProps>(
119
116
  ({ baseName, exportFactory = defaultExportFactory, onlyVisible = false, ...props }, ref) => {
120
- const { columns, entityType, filtering, selection, selectionMeta } = useDataViewContext()
121
- const { adapter } = useBindxContext()
117
+ const { columns, entityType, fetchAllData, selection } = useDataViewContext()
122
118
  const [isExporting, setIsExporting] = useState(false)
123
119
 
124
120
  const handleExport = useCallback(async (): Promise<void> => {
125
- if (!adapter || isExporting) return
121
+ if (isExporting) return
126
122
  setIsExporting(true)
127
123
 
128
124
  try {
@@ -130,19 +126,8 @@ export const DataViewExportTrigger = forwardRef<HTMLButtonElement, DataViewExpor
130
126
  ? columns.filter((c, i) => selection.isVisible(c.fieldName ?? `col-${i}`))
131
127
  : columns
132
128
 
133
- const listQuery: ListQuery = {
134
- type: 'list',
135
- entityType,
136
- filter: filtering.resolvedWhere,
137
- orderBy: undefined,
138
- limit: undefined,
139
- offset: undefined,
140
- spec: buildQueryFromSelection(selectionMeta),
141
- }
142
-
143
- const results = await adapter.query([listQuery])
144
- const result = results[0]
145
- if (!result || result.type !== 'list') {
129
+ const data = await fetchAllData()
130
+ if (!data) {
146
131
  console.error('Export failed: unexpected result')
147
132
  return
148
133
  }
@@ -152,7 +137,7 @@ export const DataViewExportTrigger = forwardRef<HTMLButtonElement, DataViewExpor
152
137
  .map(c => ({ name: String(c.header ?? c.fieldName ?? ''), fieldName: c.fieldName }))
153
138
 
154
139
  const { blob, extension } = exportFactory.create({
155
- data: (result as ListQueryResult).data,
140
+ data,
156
141
  columns: exportColumns,
157
142
  })
158
143
 
@@ -169,7 +154,7 @@ export const DataViewExportTrigger = forwardRef<HTMLButtonElement, DataViewExpor
169
154
  } finally {
170
155
  setIsExporting(false)
171
156
  }
172
- }, [adapter, columns, entityType, filtering.resolvedWhere, selectionMeta, exportFactory, baseName, isExporting, onlyVisible, selection])
157
+ }, [columns, entityType, fetchAllData, exportFactory, baseName, isExporting, onlyVisible, selection])
173
158
 
174
159
  const { onClick, ...otherProps } = props as React.ButtonHTMLAttributes<HTMLButtonElement>
175
160
 
@@ -195,25 +180,10 @@ export interface FetchAllDataResult {
195
180
  }
196
181
 
197
182
  export function useDataViewFetchAllData(): () => Promise<FetchAllDataResult | null> {
198
- const { entityType, filtering, selectionMeta } = useDataViewContext()
199
- const { adapter } = useBindxContext()
183
+ const { fetchAllData } = useDataViewContext()
200
184
 
201
185
  return useCallback(async (): Promise<FetchAllDataResult | null> => {
202
- if (!adapter) return null
203
-
204
- const listQuery: ListQuery = {
205
- type: 'list',
206
- entityType,
207
- filter: filtering.resolvedWhere,
208
- orderBy: undefined,
209
- limit: undefined,
210
- offset: undefined,
211
- spec: buildQueryFromSelection(selectionMeta),
212
- }
213
-
214
- const results = await adapter.query([listQuery])
215
- const result = results[0]
216
- if (!result || result.type !== 'list') return null
217
- return { data: (result as ListQueryResult).data }
218
- }, [adapter, entityType, filtering.resolvedWhere, selectionMeta])
186
+ const data = await fetchAllData()
187
+ return data ? { data } : null
188
+ }, [fetchAllData])
219
189
  }
@@ -32,22 +32,23 @@ export type UseDataViewFilterResult<T extends FilterArtifact> = [
32
32
  meta: { isEmpty?: boolean },
33
33
  ]
34
34
 
35
+ /** The store is keyed by filter name, so the artifact's concrete type is the caller's claim. */
36
+ function narrowArtifact<T extends FilterArtifact>(artifact: FilterArtifact | undefined): T | undefined {
37
+ return artifact as T | undefined
38
+ }
39
+
35
40
  export function useDataViewFilter<T extends FilterArtifact>(key: string): UseDataViewFilterResult<T> {
36
41
  const { filtering } = useDataViewContext()
37
- const state = filtering.getArtifact(key) as T | undefined
42
+ const state = narrowArtifact<T>(filtering.getArtifact(key))
38
43
  const filter = filtering.filters.get(key)
39
44
  const isEmpty = state ? !filter?.handler.isActive(state) : true
40
45
 
41
46
  const setFilter = useCallback(
42
47
  (filterOrUpdater: SetStateAction<T | undefined>): void => {
43
48
  if (typeof filterOrUpdater === 'function') {
44
- const current = filtering.getArtifact(key) as T | undefined
45
- const next = (filterOrUpdater as (prev: T | undefined) => T | undefined)(current)
46
- if (next !== undefined) {
47
- filtering.setArtifact(key, next)
48
- } else {
49
- filtering.resetFilter(key)
50
- }
49
+ // Handed to the state layer unresolved — resolving it here would use the render snapshot.
50
+ const updater = filterOrUpdater
51
+ filtering.setArtifact(key, current => updater(narrowArtifact<T>(current)))
51
52
  } else if (filterOrUpdater !== undefined) {
52
53
  filtering.setArtifact(key, filterOrUpdater)
53
54
  } else {
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Parent-scoped relation query used by HasManyDataGrid.
3
+ *
4
+ * The grid reads its rows through the parent record, so every read of the
5
+ * relation — paged load and unpaged export alike — has to go through it.
6
+ */
7
+
8
+ import { generateHasManyAlias } from '@contember/bindx'
9
+ import type { GetQuery, QuerySpec } from '@contember/bindx'
10
+
11
+ export interface HasManyRelationQueryOptions {
12
+ readonly parentEntityType: string
13
+ readonly parentEntityId: string
14
+ readonly fieldName: string
15
+ readonly filter: Record<string, unknown> | undefined
16
+ readonly orderBy: readonly Record<string, unknown>[] | undefined
17
+ readonly limit?: number
18
+ readonly offset?: number
19
+ readonly targetSpec: QuerySpec
20
+ }
21
+
22
+ export interface HasManyRelationQuery {
23
+ /** Alias the relation rows are returned under */
24
+ readonly alias: string
25
+ readonly query: GetQuery
26
+ }
27
+
28
+ export interface HasManyRelationRows {
29
+ readonly rows: readonly Record<string, unknown>[]
30
+ readonly totalCount: number | undefined
31
+ }
32
+
33
+ export function buildHasManyRelationQuery({
34
+ parentEntityType,
35
+ parentEntityId,
36
+ fieldName,
37
+ filter,
38
+ orderBy,
39
+ limit,
40
+ offset,
41
+ targetSpec,
42
+ }: HasManyRelationQueryOptions): HasManyRelationQuery {
43
+ const relationFilter = filter && Object.keys(filter).length > 0 ? filter : undefined
44
+ const relationOrderBy = orderBy && orderBy.length > 0 ? orderBy : undefined
45
+ const alias = generateHasManyAlias(fieldName, {
46
+ filter: relationFilter,
47
+ orderBy: relationOrderBy,
48
+ limit,
49
+ offset,
50
+ })
51
+
52
+ const spec: QuerySpec = {
53
+ fields: [
54
+ { name: 'id', sourcePath: ['id'] },
55
+ {
56
+ name: alias,
57
+ sourcePath: [fieldName],
58
+ isArray: true,
59
+ totalCount: true,
60
+ filter: relationFilter,
61
+ orderBy: relationOrderBy,
62
+ limit,
63
+ offset,
64
+ nested: targetSpec,
65
+ },
66
+ ],
67
+ }
68
+
69
+ return {
70
+ alias,
71
+ query: {
72
+ type: 'get',
73
+ entityType: parentEntityType,
74
+ by: { id: parentEntityId },
75
+ spec,
76
+ },
77
+ }
78
+ }
79
+
80
+ export function extractHasManyRelationRows(
81
+ data: Record<string, unknown>,
82
+ { alias, fieldName }: { alias: string; fieldName: string },
83
+ ): HasManyRelationRows | null {
84
+ const value = data[alias] ?? data[fieldName]
85
+ if (!isRecordArray(value)) return null
86
+ const totalCount = 'totalCount' in value && typeof value.totalCount === 'number' ? value.totalCount : undefined
87
+ return { rows: value, totalCount }
88
+ }
89
+
90
+ function isRecordArray(value: unknown): value is readonly Record<string, unknown>[] {
91
+ return Array.isArray(value) && value.every(item => typeof item === 'object' && item !== null)
92
+ }
package/src/index.ts CHANGED
@@ -100,6 +100,9 @@ export {
100
100
  } from './fieldRef.js'
101
101
  export { getRelatedAccessor } from './columnTypes.js'
102
102
 
103
+ // Argument types of the bulk state setters — saves consumers a second import.
104
+ export type { FilterArtifact, SortingDirections } from '@contember/bindx'
105
+
103
106
  // State hooks
104
107
  export {
105
108
  useFilteringState,
@@ -107,6 +110,7 @@ export {
107
110
  usePagingState,
108
111
  useSelectionState,
109
112
  type FilteringState,
113
+ type FilterArtifactUpdate,
110
114
  type RegisteredFilter,
111
115
  type UseFilteringOptions,
112
116
  type UseSortingOptions,
@@ -123,6 +127,7 @@ export {
123
127
  useOptionalDataViewContext,
124
128
  DataViewProvider,
125
129
  type DataViewContextValue,
130
+ type DataViewFetchAllData,
126
131
  type DataViewItem,
127
132
  type DataViewLoaderState as DataViewLoaderStateType,
128
133
  type DataViewElementData,
@@ -45,6 +45,7 @@ import {
45
45
  import { useSelectOptions } from './selectContext.js'
46
46
  import { DataViewProvider, type DataViewContextValue, type DataViewLoaderState } from '../DataViewContext.js'
47
47
  import { useFilteringState, useSortingState, usePagingState, useSelectionState } from '../useDataViewState.js'
48
+ import { useListFetchAllData } from '../useListFetchAllData.js'
48
49
 
49
50
  export interface SelectDataViewProps {
50
51
  /** Children rendered inside the DataView context */
@@ -212,6 +213,13 @@ function SelectDataViewImpl({
212
213
 
213
214
  const emptyMap = useMemo(() => new Map(), [])
214
215
 
216
+ const fetchAllData = useListFetchAllData({
217
+ entityType,
218
+ filter: combinedFilter,
219
+ orderBy: sorting.resolvedOrderBy,
220
+ selection,
221
+ })
222
+
215
223
  const contextValue = useMemo((): DataViewContextValue => ({
216
224
  filtering,
217
225
  sorting,
@@ -226,10 +234,11 @@ function SelectDataViewImpl({
226
234
  highlightIndex,
227
235
  setHighlightIndex,
228
236
  selectionMeta: selection,
237
+ fetchAllData,
229
238
  toolbarContent: undefined,
230
239
  layoutRenders: emptyMap,
231
240
  layoutElements: emptyMap,
232
- }), [filtering, sorting, paging, selectionState, entityType, items, itemCount, loaderState, reload, highlightIndex, selection, emptyMap])
241
+ }), [filtering, sorting, paging, selectionState, entityType, items, itemCount, loaderState, reload, highlightIndex, selection, fetchAllData, emptyMap])
233
242
 
234
243
  return (
235
244
  <DataViewProvider value={contextValue}>
@@ -33,10 +33,18 @@ export interface RegisteredFilter {
33
33
  artifact: FilterArtifact
34
34
  }
35
35
 
36
+ /** Value or updater accepted by {@link FilteringState.setArtifact}. */
37
+ export type FilterArtifactUpdate =
38
+ | FilterArtifact
39
+ | ((current: FilterArtifact | undefined) => FilterArtifact | undefined)
40
+
36
41
  export interface FilteringState {
37
42
  readonly filters: ReadonlyMap<string, RegisteredFilter>
38
43
  getArtifact(name: string): FilterArtifact | undefined
39
- setArtifact(name: string, artifact: FilterArtifact): void
44
+ /** An updater sees the live artifact, not a render snapshot; returning `undefined` resets the filter to its default. */
45
+ setArtifact(name: string, artifact: FilterArtifactUpdate): void
46
+ /** Replaces the whole artifact record at once — for restoring a saved filter preset. */
47
+ setAllArtifacts(artifacts: Record<string, FilterArtifact>): void
40
48
  resetFilter(name: string): void
41
49
  resetAll(): void
42
50
  readonly hasActiveFilters: boolean
@@ -73,20 +81,25 @@ export function useFilteringState(options: UseFilteringOptions): FilteringState
73
81
  [artifacts],
74
82
  )
75
83
 
84
+ // Functional form: two writes batched into one commit must compose, not clobber.
76
85
  const setArtifact = useCallback(
77
- (name: string, artifact: FilterArtifact): void => {
78
- setArtifacts({ ...artifacts, [name]: artifact })
86
+ (name: string, artifact: FilterArtifactUpdate): void => {
87
+ setArtifacts(current => {
88
+ const next = typeof artifact === 'function' ? artifact(current[name]) : artifact
89
+ const resolved = next ?? filterDefs.get(name)?.handler.defaultArtifact()
90
+ return resolved === undefined ? current : { ...current, [name]: resolved }
91
+ })
79
92
  },
80
- [artifacts, setArtifacts],
93
+ [filterDefs, setArtifacts],
81
94
  )
82
95
 
83
96
  const resetFilter = useCallback(
84
97
  (name: string): void => {
85
98
  const def = filterDefs.get(name)
86
99
  if (!def) return
87
- setArtifacts({ ...artifacts, [name]: def.handler.defaultArtifact() })
100
+ setArtifacts(current => ({ ...current, [name]: def.handler.defaultArtifact() }))
88
101
  },
89
- [filterDefs, artifacts, setArtifacts],
102
+ [filterDefs, setArtifacts],
90
103
  )
91
104
 
92
105
  const resetAll = useCallback((): void => {
@@ -128,7 +141,16 @@ export function useFilteringState(options: UseFilteringOptions): FilteringState
128
141
  return map
129
142
  }, [filterDefs, artifacts])
130
143
 
131
- return { filters, getArtifact, setArtifact, resetFilter, resetAll, hasActiveFilters, resolvedWhere }
144
+ return {
145
+ filters,
146
+ getArtifact,
147
+ setArtifact,
148
+ setAllArtifacts: setArtifacts,
149
+ resetFilter,
150
+ resetAll,
151
+ hasActiveFilters,
152
+ resolvedWhere,
153
+ }
132
154
  }
133
155
 
134
156
  // ============================================================================
@@ -145,6 +167,8 @@ export interface UseSortingOptions {
145
167
  export interface SortingStateResult {
146
168
  readonly state: SortingState
147
169
  setOrderBy<T>(field: FieldRef<T>, action: SortingDirectionAction, append?: boolean): void
170
+ /** Replaces the whole direction record at once — for restoring saved sorting. */
171
+ setDirections(directions: SortingDirections): void
148
172
  clear(): void
149
173
  directionOf<T>(field: FieldRef<T>): OrderDirection | null
150
174
  readonly resolvedOrderBy: readonly Record<string, unknown>[] | undefined
@@ -186,24 +210,23 @@ export function useSortingState(options: UseSortingOptions): SortingStateResult
186
210
  // Dotted path, not the leaf — `sortableFields` is keyed the same way (see #68).
187
211
  const fieldName = extractFieldName(field)
188
212
  if (fieldName === null || !sortableFields.has(fieldName)) return
189
- const currentDir = directions[fieldName] ?? null
190
- const newDir = resolveSortAction(currentDir, action)
191
213
 
192
- if (append) {
193
- const next = { ...directions }
214
+ // Functional form: two writes batched into one commit must compose, not clobber.
215
+ setDirections((current): SortingDirections => {
216
+ const newDir = resolveSortAction(current[fieldName] ?? null, action)
217
+ if (!append) {
218
+ return newDir ? { [fieldName]: newDir } : {}
219
+ }
220
+ const next = { ...current }
194
221
  if (newDir) {
195
222
  next[fieldName] = newDir
196
223
  } else {
197
224
  delete next[fieldName]
198
225
  }
199
- setDirections(next)
200
- } else if (newDir) {
201
- setDirections({ [fieldName]: newDir })
202
- } else {
203
- setDirections({})
204
- }
226
+ return next
227
+ })
205
228
  },
206
- [sortableFields, directions, setDirections],
229
+ [sortableFields, setDirections],
207
230
  )
208
231
 
209
232
  const clear = useCallback((): void => {
@@ -224,7 +247,7 @@ export function useSortingState(options: UseSortingOptions): SortingStateResult
224
247
  return entries.map(([field, dir]) => buildNestedOrderBy(field, dir))
225
248
  }, [directions])
226
249
 
227
- return { state, setOrderBy, clear, directionOf, resolvedOrderBy }
250
+ return { state, setOrderBy, setDirections, clear, directionOf, resolvedOrderBy }
228
251
  }
229
252
 
230
253
  function buildNestedOrderBy(fieldPath: string, direction: OrderDirection): Record<string, unknown> {
@@ -319,8 +342,8 @@ export function usePagingState(options: UsePagingOptions = {}): PagingStateResul
319
342
  [setPageIndex],
320
343
  )
321
344
 
322
- const next = useCallback((): void => setPageIndex(pageIndex + 1), [pageIndex, setPageIndex])
323
- const previous = useCallback((): void => setPageIndex(Math.max(0, pageIndex - 1)), [pageIndex, setPageIndex])
345
+ const next = useCallback((): void => setPageIndex(current => current + 1), [setPageIndex])
346
+ const previous = useCallback((): void => setPageIndex(current => Math.max(0, current - 1)), [setPageIndex])
324
347
  const first = useCallback((): void => setPageIndex(0), [setPageIndex])
325
348
 
326
349
  const last = useCallback((): void => {
@@ -395,18 +418,21 @@ export function useSelectionState(options: UseSelectionOptions = {}): SelectionS
395
418
  const state = useMemo((): SelectionState => ({ values, layouts }), [values, layouts])
396
419
 
397
420
  const setLayout = useCallback((layout: string | undefined): void => {
398
- setValues({ ...values, layout })
399
- }, [values, setValues])
421
+ setValues(current => ({ ...current, layout }))
422
+ }, [setValues])
400
423
 
424
+ // Functional form: toggling several columns in one commit must compose, not clobber.
401
425
  const setVisibility = useCallback((name: string, visible: boolean | undefined): void => {
402
- const next = { ...values.visibility }
403
- if (visible === undefined) {
404
- delete next[name]
405
- } else {
406
- next[name] = visible
407
- }
408
- setValues({ ...values, visibility: next })
409
- }, [values, setValues])
426
+ setValues((current): SelectionValues => {
427
+ const next = { ...current.visibility }
428
+ if (visible === undefined) {
429
+ delete next[name]
430
+ } else {
431
+ next[name] = visible
432
+ }
433
+ return { ...current, visibility: next }
434
+ })
435
+ }, [setValues])
410
436
 
411
437
  const isVisible = useCallback((name: string, fallback = true): boolean => {
412
438
  return values.visibility[name] ?? fallback
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Unpaged fetch-all for views that load through a root list query.
3
+ */
4
+
5
+ import { useCallback } from 'react'
6
+ import { buildQueryFromSelection } from '@contember/bindx'
7
+ import type { ListQuery, SelectionMeta } from '@contember/bindx'
8
+ import { useBindxContext } from '@contember/bindx-react'
9
+ import type { DataViewFetchAllData } from './DataViewContext.js'
10
+
11
+ export interface ListFetchAllDataOptions {
12
+ /** Entity the view lists */
13
+ readonly entityType: string
14
+ /** Full scope of the view — static filter combined with the user filters */
15
+ readonly filter: Record<string, unknown> | undefined
16
+ readonly orderBy: readonly Record<string, unknown>[] | undefined
17
+ readonly selection: SelectionMeta
18
+ }
19
+
20
+ export function useListFetchAllData({ entityType, filter, orderBy, selection }: ListFetchAllDataOptions): DataViewFetchAllData {
21
+ const { adapter } = useBindxContext()
22
+
23
+ return useCallback(async (): Promise<readonly Record<string, unknown>[] | null> => {
24
+ const listQuery: ListQuery = {
25
+ type: 'list',
26
+ entityType,
27
+ filter,
28
+ orderBy,
29
+ limit: undefined,
30
+ offset: undefined,
31
+ spec: buildQueryFromSelection(selection),
32
+ }
33
+
34
+ const results = await adapter.query([listQuery])
35
+ const result = results[0]
36
+ return result?.type === 'list' ? result.data : null
37
+ }, [adapter, entityType, filter, orderBy, selection])
38
+ }