@contember/bindx-dataview 0.1.46 → 0.1.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HasManyDataGrid.d.ts.map +1 -1
- package/dist/columnLeaf.d.ts.map +1 -1
- package/dist/columnTypes.d.ts +5 -0
- package/dist/columnTypes.d.ts.map +1 -1
- package/dist/columns.d.ts +0 -30
- package/dist/columns.d.ts.map +1 -1
- package/dist/createRelationColumn.d.ts.map +1 -1
- package/dist/fieldRef.d.ts +36 -0
- package/dist/fieldRef.d.ts.map +1 -0
- package/dist/filterComponents.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/markers.d.ts.map +1 -1
- package/dist/useDataGridSetup.d.ts.map +1 -1
- package/dist/useDataViewState.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/HasManyDataGrid.tsx +0 -1
- package/src/columnLeaf.ts +0 -4
- package/src/columnTypes.ts +8 -0
- package/src/columns.tsx +1 -55
- package/src/createColumn.ts +1 -1
- package/src/createRelationColumn.tsx +41 -8
- package/src/fieldRef.ts +53 -0
- package/src/filterComponents.tsx +17 -18
- package/src/index.ts +7 -2
- package/src/markers.ts +0 -1
- package/src/useDataGridSetup.ts +46 -4
- package/src/useDataViewState.ts +8 -4
|
@@ -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;
|
|
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"}
|
package/dist/columnLeaf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnLeaf.d.ts","sourceRoot":"","sources":["../src/columnLeaf.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"columnLeaf.d.ts","sourceRoot":"","sources":["../src/columnLeaf.ts"],"names":[],"mappings":"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"}
|
package/dist/columnTypes.d.ts
CHANGED
|
@@ -24,6 +24,11 @@ export declare function defineColumnType<TValue, TFilterArtifact extends FilterA
|
|
|
24
24
|
* segment to the leaf field ref.
|
|
25
25
|
*/
|
|
26
26
|
export declare function accessField(accessor: EntityAccessor<object>, fieldName: string): unknown;
|
|
27
|
+
/**
|
|
28
|
+
* Access a related entity accessor from a parent row accessor by field name.
|
|
29
|
+
* EntityAccessor is a Proxy — bracket notation triggers the get trap.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getRelatedAccessor(item: EntityAccessor<object>, fieldName: string): EntityAccessor<object> | null;
|
|
27
32
|
export declare const textColumnDef: ColumnTypeDef<string | null, TextFilterArtifact>;
|
|
28
33
|
export declare const numberColumnDef: ColumnTypeDef<number | null, NumberRangeFilterArtifact>;
|
|
29
34
|
export declare const dateColumnDef: ColumnTypeDef<string | null, DateFilterArtifact>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columnTypes.d.ts","sourceRoot":"","sources":["../src/columnTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrF,OAAO,KAAK,EACX,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,kBAAkB,CAAA;AAgBzB,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,eAAe,SAAS,cAAc,GAAG,cAAc;IACvG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,CAAC,eAAe,CAAC,CAAA;IACnF,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;CACtF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,SAAS,cAAc,EAC9E,GAAG,EAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,GACzC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAExC;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAaxF;AAYD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,yBAAyB,CAMlF,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAM7E,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,GAAG,IAAI,EAAE,qBAAqB,CAMhF,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAM5F,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,OAAO,EAAE,uBAAuB,CAM7E,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAMzE,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAM1E,CAAA"}
|
|
1
|
+
{"version":3,"file":"columnTypes.d.ts","sourceRoot":"","sources":["../src/columnTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrF,OAAO,KAAK,EACX,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,kBAAkB,CAAA;AAgBzB,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,eAAe,SAAS,cAAc,GAAG,cAAc;IACvG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,CAAC,eAAe,CAAC,CAAA;IACnF,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;CACtF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,SAAS,cAAc,EAC9E,GAAG,EAAE,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,GACzC,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,CAExC;AAMD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAaxF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAEjH;AAYD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,yBAAyB,CAMlF,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAM7E,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,GAAG,IAAI,EAAE,qBAAqB,CAMhF,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAAa,CAAC,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAM5F,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,kBAAkB,CAMzE,CAAA;AAEF,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,OAAO,EAAE,uBAAuB,CAM7E,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAMzE,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAM1E,CAAA"}
|
package/dist/columns.d.ts
CHANGED
|
@@ -10,39 +10,9 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import React, { ReactNode } from 'react';
|
|
12
12
|
import type { FieldRef, HasOneRef, HasManyRef, FilterHandler, FilterArtifact, EntityAccessor } from '@contember/bindx';
|
|
13
|
-
import { FIELD_REF_META } from '@contember/bindx-react';
|
|
14
13
|
import { type RelationColumnProps } from './createRelationColumn.jsx';
|
|
15
14
|
import { type ColumnLeafProps } from './columnLeaf.js';
|
|
16
15
|
export type ColumnMeta = ColumnLeafProps;
|
|
17
|
-
interface FieldRefMetaCarrier {
|
|
18
|
-
readonly [FIELD_REF_META]: {
|
|
19
|
-
readonly entityType: string;
|
|
20
|
-
readonly fieldName: string;
|
|
21
|
-
readonly fullPath?: readonly string[];
|
|
22
|
-
readonly isArray: boolean;
|
|
23
|
-
readonly isRelation: boolean;
|
|
24
|
-
readonly enumName?: string;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
/** Type guard: checks if a value carries FIELD_REF_META symbol. */
|
|
28
|
-
export declare function hasFieldRefMeta(ref: unknown): ref is FieldRefMetaCarrier;
|
|
29
|
-
/**
|
|
30
|
-
* Extract the dotted field path from a field ref (works in both collector and
|
|
31
|
-
* runtime proxies). For fields reached through has-one relations
|
|
32
|
-
* (e.g. `it.author.name`) this is the full dotted path (`"author.name"`) so the
|
|
33
|
-
* DataGrid can build correct nested where/orderBy clauses; for top-level fields
|
|
34
|
-
* it is simply the field name (`"title"`).
|
|
35
|
-
*/
|
|
36
|
-
export declare function extractFieldName(ref: unknown): string | null;
|
|
37
|
-
/** Extract enum name from a field ref (if field is an enum). */
|
|
38
|
-
export declare function extractEnumName(ref: unknown): string | undefined;
|
|
39
|
-
/** Extract related entity type name from a relation field ref. */
|
|
40
|
-
export declare function extractRelatedEntityName(ref: unknown): string | null;
|
|
41
|
-
/**
|
|
42
|
-
* Access a related entity accessor from a parent row accessor by field name.
|
|
43
|
-
* EntityAccessor is a Proxy — bracket notation triggers the get trap.
|
|
44
|
-
*/
|
|
45
|
-
export declare function getRelatedAccessor(item: EntityAccessor<object>, fieldName: string): EntityAccessor<object> | null;
|
|
46
16
|
interface DataGridScalarColumnPropsBase<T> {
|
|
47
17
|
field: FieldRef<T> | FieldRef<T | undefined>;
|
|
48
18
|
header?: React.ReactNode;
|
package/dist/columns.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../src/columns.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAA6D,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../src/columns.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAA6D,MAAM,kBAAkB,CAAA;AAKjL,OAAO,EAA6D,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAchI,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAMlE,MAAM,MAAM,UAAU,GAAG,eAAe,CAAA;AA4CxC,UAAU,6BAA6B,CAAC,CAAC;IACxC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,SAAS,CAAA;CAC/C;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AACvF,MAAM,WAAW,yBAAyB,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AACzF,MAAM,WAAW,uBAAuB,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AACvF,MAAM,WAAW,2BAA2B,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AAC3F,MAAM,WAAW,0BAA0B,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AAC1F,MAAM,WAAW,uBAAuB,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AACvF,MAAM,WAAW,4BAA4B,CAAC,CAAC,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC;CAAG;AAE5F,UAAU,cAAc,CAAC,CAAC,SAAS,MAAM;IACxC,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;CAC5C;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAAG;AAElI,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,6BAA6B,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAAG;AAStI,eAAO,MAAM,kBAAkB,qDAE7B,CAAA;AAEF,eAAO,MAAM,oBAAoB,qDAE/B,CAAA;AAEF,eAAO,MAAM,kBAAkB,qDAE7B,CAAA;AAEF,eAAO,MAAM,sBAAsB,qDAEjC,CAAA;AAEF,eAAO,MAAM,qBAAqB,qDAEhC,CAAA;AAEF,eAAO,MAAM,kBAAkB,IAC7B,MAAM,SAAS,MAAM,UAAU,uBAAuB,CAAC,MAAM,CAAC,KAAG,IAAI;;CAEtE,CAAA;AAED,eAAO,MAAM,sBAAsB,IACjC,MAAM,SAAS,MAAM,UAAU,2BAA2B,CAAC,MAAM,CAAC,KAAG,IAAI;;CAE1E,CAAA;AAED,eAAO,MAAM,kBAAkB,qDAE7B,CAAA;AAEF,eAAO,MAAM,uBAAuB,qDAElC,CAAA;AAMF,MAAM,WAAW,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAE,SAAQ,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;IAC7G,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;CACpC;AAED,yGAAyG;AACzG,QAAA,MAAM,qBAAqB,8DAA0D,CAAA;AACrF,eAAO,MAAM,oBAAoB,EAAE;IAClC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,CAAA;IAChF,YAAY,EAAE,OAAO,qBAAqB,CAAC,YAAY,CAAA;IACvD,SAAS,EAAE,OAAO,qBAAqB,CAAC,SAAS,CAAA;CACzB,CAAA;AAMzB,MAAM,WAAW,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAE,SAAQ,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC;IAC9G,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;CACrC;AAED,0GAA0G;AAC1G,QAAA,MAAM,sBAAsB,8DAA4D,CAAA;AACxF,eAAO,MAAM,qBAAqB,EAAE;IACnC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,IAAI,CAAA;IACjF,YAAY,EAAE,OAAO,sBAAsB,CAAC,YAAY,CAAA;IACxD,SAAS,EAAE,OAAO,sBAAsB,CAAC,SAAS,CAAA;CACzB,CAAA;AAM1B,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;IACjF,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACxB;AAED,eAAO,MAAM,oBAAoB,YACM,yBAAyB,KAAG,IAAI;0BAI/C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,KAAK,CAAC,SAAS;CAuBhE,CAAA;AAMD,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;CACjF;AAED,eAAO,MAAM,cAAc,IACF,CAAC,UAAU,mBAAmB,CAAC,CAAC,CAAC,KAAG,IAAI;0BAIzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,KAAK,CAAC,SAAS;CAkChE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRelationColumn.d.ts","sourceRoot":"","sources":["../src/createRelationColumn.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAiB,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAG9G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"createRelationColumn.d.ts","sourceRoot":"","sources":["../src/createRelationColumn.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field-ref introspection helpers shared by column definitions and DataView state.
|
|
3
|
+
*
|
|
4
|
+
* Kept in a leaf module so state hooks can derive field keys without pulling in
|
|
5
|
+
* the whole column/JSX stack.
|
|
6
|
+
*/
|
|
7
|
+
import { FIELD_REF_META } from '@contember/bindx';
|
|
8
|
+
interface FieldRefMetaCarrier {
|
|
9
|
+
readonly [FIELD_REF_META]: {
|
|
10
|
+
readonly entityType: string;
|
|
11
|
+
readonly fieldName: string;
|
|
12
|
+
readonly fullPath?: readonly string[];
|
|
13
|
+
readonly isArray: boolean;
|
|
14
|
+
readonly isRelation: boolean;
|
|
15
|
+
readonly enumName?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** Type guard: checks if a value carries FIELD_REF_META symbol. */
|
|
19
|
+
export declare function hasFieldRefMeta(ref: unknown): ref is FieldRefMetaCarrier;
|
|
20
|
+
/**
|
|
21
|
+
* Extract the dotted field path from a field ref (works in both collector and
|
|
22
|
+
* runtime proxies). For fields reached through has-one relations
|
|
23
|
+
* (e.g. `it.author.name`) this is the full dotted path (`"author.name"`) so the
|
|
24
|
+
* DataGrid can build correct nested where/orderBy clauses; for top-level fields
|
|
25
|
+
* it is simply the field name (`"title"`).
|
|
26
|
+
*
|
|
27
|
+
* This is the canonical sorting/filtering key for a column — anything that keys
|
|
28
|
+
* state by a field ref must go through here, or nested columns silently miss.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractFieldName(ref: unknown): string | null;
|
|
31
|
+
/** Extract enum name from a field ref (if field is an enum). */
|
|
32
|
+
export declare function extractEnumName(ref: unknown): string | undefined;
|
|
33
|
+
/** Extract related entity type name from a relation field ref. */
|
|
34
|
+
export declare function extractRelatedEntityName(ref: unknown): string | null;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=fieldRef.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldRef.d.ts","sourceRoot":"","sources":["../src/fieldRef.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,UAAU,mBAAmB;IAC5B,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE;QAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;QACzB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;QAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAC1B,CAAA;CACD;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,mBAAmB,CAExE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAIpE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterComponents.d.ts","sourceRoot":"","sources":["../src/filterComponents.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,EAAc,KAAK,YAAY,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAA;AAKzF,OAAO,EASN,KAAK,8BAA8B,EAEnC,KAAK,2BAA2B,EAEhC,KAAK,+BAA+B,EAEpC,KAAK,2BAA2B,EAEhC,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAEX,kBAAkB,EAIlB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EACN,iBAAiB,GACjB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,uBAAuB,IAAI,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"filterComponents.d.ts","sourceRoot":"","sources":["../src/filterComponents.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,9 @@ export { ColumnLeaf, type ColumnLeafProps, extractColumnLeaves, analyzeChildren,
|
|
|
5
5
|
export { DataGridToolbarContent, type DataGridToolbarContentProps, DataGridLayout, type DataGridLayoutProps, } from './markers.js';
|
|
6
6
|
export { createColumn, createColumnStaticRender, type ColumnRenderProps, type FilterRenderProps, type CreateColumnConfig, type ColumnComponentProps, type ColumnComponent, } from './createColumn.js';
|
|
7
7
|
export { createRelationColumn, hasOneCellConfig, hasManyCellConfig, type RelationColumnConfig, type RelationFilterContext, type RelationCellWrapperContext, type RelationColumnProps, type RelationColumnComponent, } from './createRelationColumn.jsx';
|
|
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,
|
|
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
|
+
export { extractFieldName, extractEnumName, extractRelatedEntityName, hasFieldRefMeta, } from './fieldRef.js';
|
|
10
|
+
export { getRelatedAccessor } from './columnTypes.js';
|
|
9
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';
|
|
10
12
|
export { useDataViewContext, useOptionalDataViewContext, DataViewProvider, type DataViewContextValue, type DataViewItem, type DataViewLoaderState as DataViewLoaderStateType, type DataViewElementData, } from './DataViewContext.js';
|
|
11
13
|
export { useDataView, type UseDataViewOptions, type DataViewResult } from './useDataView.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAGjF,OAAO,EACN,gBAAgB,EAChB,KAAK,aAAa,EAClB,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACX,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACN,UAAU,EACV,KAAK,eAAe,EACpB,mBAAmB,EACnB,eAAe,EACf,KAAK,sBAAsB,GAC3B,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACN,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,cAAc,EACd,KAAK,mBAAmB,GACxB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACN,YAAY,EACZ,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC5B,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAGjF,OAAO,EACN,gBAAgB,EAChB,KAAK,aAAa,EAClB,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,WAAW,GACX,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACN,UAAU,EACV,KAAK,eAAe,EACpB,mBAAmB,EACnB,eAAe,EACf,KAAK,sBAAsB,GAC3B,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACN,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,cAAc,EACd,KAAK,mBAAmB,GACxB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACN,YAAY,EACZ,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,GAC5B,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACN,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,UAAU,GACf,MAAM,cAAc,CAAA;AAGrB,OAAO,EACN,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,eAAe,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAGrD,OAAO,EACN,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GACzB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACN,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,mBAAmB,IAAI,uBAAuB,EACnD,KAAK,mBAAmB,GACxB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAG5F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,EACN,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,GAC1B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACN,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,cAAc,EACd,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,KAAK,0BAA0B,GAC/B,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACN,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,uBAAuB,EACvB,KAAK,4BAA4B,GACjC,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,qBAAqB,EACrB,4BAA4B,EAC5B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,yBAAyB,EACzB,gCAAgC,EAChC,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,+BAA+B,EACpC,0BAA0B,EAC1B,KAAK,gCAAgC,EACrC,8BAA8B,EAC9B,KAAK,oCAAoC,EACzC,4BAA4B,EAC5B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACtC,qBAAqB,EACrB,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,GAChC,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACN,KAAK,mBAAmB,EACxB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,kCAAkC,EAClC,KAAK,uCAAuC,EAC5C,gCAAgC,EAChC,KAAK,qCAAqC,EAC1C,8BAA8B,EAC9B,KAAK,mCAAmC,EACxC,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,4BAA4B,EAC5B,KAAK,iCAAiC,EACtC,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,6BAA6B,EAC7B,KAAK,kCAAkC,EACvC,2BAA2B,EAC3B,KAAK,gCAAgC,EACrC,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,8BAA8B,EAC9B,KAAK,mCAAmC,EACxC,gCAAgC,EAChC,KAAK,qCAAqC,GAC1C,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACN,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,qBAAqB,EACrB,KAAK,0BAA0B,GAC/B,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACN,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,8BAA8B,EAC9B,KAAK,mCAAmC,EACxC,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,kBAAkB,EAClB,KAAK,uBAAuB,GAC5B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACN,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,eAAe,EACf,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,cAAc,EACd,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,KAAK,0BAA0B,GAC/B,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACN,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,kBAAkB,GACvB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACN,4BAA4B,EAC5B,KAAK,iCAAiC,EACtC,2BAA2B,EAC3B,KAAK,gCAAgC,EACrC,kCAAkC,EAClC,KAAK,uCAAuC,EAC5C,8BAA8B,GAC9B,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACN,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,eAAe,EACf,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,KAAK,iCAAiC,GACtC,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,qBAAqB,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,gCAAgC,EAChC,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,mBAAmB,GACnB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,cAAc,EACd,gBAAgB,GAChB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACN,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,cAAc,GACd,MAAM,0BAA0B,CAAA;AAGjC,cAAc,mBAAmB,CAAA"}
|
package/dist/markers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../src/markers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../src/markers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAClC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,GAAG,IAAI,CAEhF;AAMD,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,KAAK;IAC7C,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,sFAAsF;IACtF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,CAAA;CACzC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,CAEtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataGridSetup.d.ts","sourceRoot":"","sources":["../src/useDataGridSetup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EACX,cAAc,EACd,cAAc,EAId,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,MAAM,kBAAkB,CAAA;AAOzB,OAAO,EAAc,KAAK,eAAe,EAAmB,MAAM,iBAAiB,CAAA;AAGnF,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAGrF,eAAO,MAAM,iBAAiB,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"useDataGridSetup.d.ts","sourceRoot":"","sources":["../src/useDataGridSetup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataViewState.d.ts","sourceRoot":"","sources":["../src/useDataViewState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAQ,EACR,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"useDataViewState.d.ts","sourceRoot":"","sources":["../src/useDataViewState.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/bindx-dataview",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.47",
|
|
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.
|
|
19
|
-
"@contember/bindx-react": "0.1.
|
|
18
|
+
"@contember/bindx": "0.1.47",
|
|
19
|
+
"@contember/bindx-react": "0.1.47",
|
|
20
20
|
"@radix-ui/primitive": "^1.1.3",
|
|
21
21
|
"@radix-ui/react-slot": "^1.2.4"
|
|
22
22
|
},
|
package/src/HasManyDataGrid.tsx
CHANGED
|
@@ -49,7 +49,6 @@ import { useDataGridSetup } from './useDataGridSetup.js'
|
|
|
49
49
|
|
|
50
50
|
export interface HasManyDataGridProps<TEntity extends object = object> {
|
|
51
51
|
/** Has-many relation field from parent entity */
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
52
|
field: HasManyRef<TEntity, any>
|
|
54
53
|
/** Children render function: receives entity proxy `it`, returns column markers + layout */
|
|
55
54
|
children: (it: EntityAccessor<TEntity>) => ReactNode
|
package/src/columnLeaf.ts
CHANGED
|
@@ -97,10 +97,8 @@ export interface ChildrenAnalysisResult {
|
|
|
97
97
|
*/
|
|
98
98
|
export function analyzeChildren(
|
|
99
99
|
elements: React.ReactNode,
|
|
100
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
100
|
markerTypes: ReadonlySet<React.ComponentType<any>>,
|
|
102
101
|
): ChildrenAnalysisResult {
|
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
102
|
const collected = new Map<React.ComponentType<any>, unknown[]>()
|
|
105
103
|
for (const type of markerTypes) {
|
|
106
104
|
collected.set(type, [])
|
|
@@ -121,9 +119,7 @@ export function analyzeChildren(
|
|
|
121
119
|
|
|
122
120
|
function walkTree(
|
|
123
121
|
elements: React.ReactNode,
|
|
124
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
125
122
|
markerTypes: ReadonlySet<React.ComponentType<any>>,
|
|
126
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
127
123
|
collected: Map<React.ComponentType<any>, unknown[]>,
|
|
128
124
|
): void {
|
|
129
125
|
React.Children.forEach(elements, (child) => {
|
package/src/columnTypes.ts
CHANGED
|
@@ -73,6 +73,14 @@ export function accessField(accessor: EntityAccessor<object>, fieldName: string)
|
|
|
73
73
|
return current
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Access a related entity accessor from a parent row accessor by field name.
|
|
78
|
+
* EntityAccessor is a Proxy — bracket notation triggers the get trap.
|
|
79
|
+
*/
|
|
80
|
+
export function getRelatedAccessor(item: EntityAccessor<object>, fieldName: string): EntityAccessor<object> | null {
|
|
81
|
+
return accessField(item, fieldName) as EntityAccessor<object> | null
|
|
82
|
+
}
|
|
83
|
+
|
|
76
84
|
function extractScalarValue<T>(accessor: EntityAccessor<object>, fieldName: string): T | null {
|
|
77
85
|
const fieldRef = accessField(accessor, fieldName) as { value?: unknown } | null
|
|
78
86
|
if (!fieldRef || typeof fieldRef !== 'object') return null
|
package/src/columns.tsx
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
import React, { ReactNode } from 'react'
|
|
13
13
|
import type { FieldRef, HasOneRef, HasManyRef, FilterHandler, FilterArtifact, EntityAccessor, EnumFilterArtifact, EnumListFilterArtifact, SelectionMeta } from '@contember/bindx'
|
|
14
14
|
import { SelectionScope } from '@contember/bindx'
|
|
15
|
-
import { FIELD_REF_META, createCollectorProxy } from '@contember/bindx-react'
|
|
16
15
|
import { createColumn, createColumnStaticRender, type ColumnRenderProps } from './createColumn.js'
|
|
16
|
+
import { extractFieldName } from './fieldRef.js'
|
|
17
17
|
import { accessField } from './columnTypes.js'
|
|
18
18
|
import { createRelationColumn, hasOneCellConfig, hasManyCellConfig, type RelationColumnProps } from './createRelationColumn.jsx'
|
|
19
19
|
import {
|
|
@@ -37,60 +37,6 @@ import { ColumnLeaf, type ColumnLeafProps } from './columnLeaf.js'
|
|
|
37
37
|
|
|
38
38
|
export type ColumnMeta = ColumnLeafProps
|
|
39
39
|
|
|
40
|
-
// ============================================================================
|
|
41
|
-
// Extraction Helpers
|
|
42
|
-
// ============================================================================
|
|
43
|
-
|
|
44
|
-
interface FieldRefMetaCarrier {
|
|
45
|
-
readonly [FIELD_REF_META]: {
|
|
46
|
-
readonly entityType: string
|
|
47
|
-
readonly fieldName: string
|
|
48
|
-
readonly fullPath?: readonly string[]
|
|
49
|
-
readonly isArray: boolean
|
|
50
|
-
readonly isRelation: boolean
|
|
51
|
-
readonly enumName?: string
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Type guard: checks if a value carries FIELD_REF_META symbol. */
|
|
56
|
-
export function hasFieldRefMeta(ref: unknown): ref is FieldRefMetaCarrier {
|
|
57
|
-
return ref != null && typeof ref === 'object' && FIELD_REF_META in ref
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Extract the dotted field path from a field ref (works in both collector and
|
|
62
|
-
* runtime proxies). For fields reached through has-one relations
|
|
63
|
-
* (e.g. `it.author.name`) this is the full dotted path (`"author.name"`) so the
|
|
64
|
-
* DataGrid can build correct nested where/orderBy clauses; for top-level fields
|
|
65
|
-
* it is simply the field name (`"title"`).
|
|
66
|
-
*/
|
|
67
|
-
export function extractFieldName(ref: unknown): string | null {
|
|
68
|
-
if (!hasFieldRefMeta(ref)) return null
|
|
69
|
-
const meta = ref[FIELD_REF_META]
|
|
70
|
-
const fullPath = meta.fullPath
|
|
71
|
-
return fullPath && fullPath.length > 0 ? fullPath.join('.') : meta.fieldName
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/** Extract enum name from a field ref (if field is an enum). */
|
|
75
|
-
export function extractEnumName(ref: unknown): string | undefined {
|
|
76
|
-
return hasFieldRefMeta(ref) ? ref[FIELD_REF_META].enumName : undefined
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** Extract related entity type name from a relation field ref. */
|
|
80
|
-
export function extractRelatedEntityName(ref: unknown): string | null {
|
|
81
|
-
if (!hasFieldRefMeta(ref)) return null
|
|
82
|
-
const meta = ref[FIELD_REF_META]
|
|
83
|
-
return meta.entityType || null
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Access a related entity accessor from a parent row accessor by field name.
|
|
88
|
-
* EntityAccessor is a Proxy — bracket notation triggers the get trap.
|
|
89
|
-
*/
|
|
90
|
-
export function getRelatedAccessor(item: EntityAccessor<object>, fieldName: string): EntityAccessor<object> | null {
|
|
91
|
-
return accessField(item, fieldName) as EntityAccessor<object> | null
|
|
92
|
-
}
|
|
93
|
-
|
|
94
40
|
// ============================================================================
|
|
95
41
|
// Default Cell Renderers
|
|
96
42
|
// ============================================================================
|
package/src/createColumn.ts
CHANGED
|
@@ -10,7 +10,7 @@ import React from 'react'
|
|
|
10
10
|
import type { FieldRef, FilterArtifact, FilterHandler, EntityAccessor } from '@contember/bindx'
|
|
11
11
|
import type { ColumnTypeDef } from './columnTypes.js'
|
|
12
12
|
import { ColumnLeaf, type ColumnLeafProps } from './columnLeaf.js'
|
|
13
|
-
import { extractFieldName, extractEnumName } from './
|
|
13
|
+
import { extractFieldName, extractEnumName } from './fieldRef.js'
|
|
14
14
|
|
|
15
15
|
// ============================================================================
|
|
16
16
|
// Render Props
|
|
@@ -13,9 +13,8 @@
|
|
|
13
13
|
import React from 'react'
|
|
14
14
|
import type { FieldRef, FilterArtifact, FilterHandler, EntityAccessor, SelectionMeta } from '@contember/bindx'
|
|
15
15
|
import { SelectionScope } from '@contember/bindx'
|
|
16
|
-
import { createCollectorProxy } from '@contember/bindx-react'
|
|
16
|
+
import { createCollectorProxy, collectSelection as collectJsxSelection, SCOPE_REF } from '@contember/bindx-react'
|
|
17
17
|
import type { ColumnTypeDef } from './columnTypes.js'
|
|
18
|
-
import { accessField } from './columnTypes.js'
|
|
19
18
|
|
|
20
19
|
/** If a render result is a FieldRef-like object with `.value`, extract the string value. */
|
|
21
20
|
function unwrapRenderResult(result: React.ReactNode): React.ReactNode {
|
|
@@ -26,7 +25,8 @@ function unwrapRenderResult(result: React.ReactNode): React.ReactNode {
|
|
|
26
25
|
return result
|
|
27
26
|
}
|
|
28
27
|
import { ColumnLeaf, type ColumnLeafProps } from './columnLeaf.js'
|
|
29
|
-
import { extractFieldName, extractRelatedEntityName
|
|
28
|
+
import { extractFieldName, extractRelatedEntityName } from './fieldRef.js'
|
|
29
|
+
import { accessField, getRelatedAccessor } from './columnTypes.js'
|
|
30
30
|
|
|
31
31
|
// ============================================================================
|
|
32
32
|
// Config
|
|
@@ -66,6 +66,33 @@ export interface RelationColumnProps<TEntity, TSelected> {
|
|
|
66
66
|
children: (entity: EntityAccessor<TEntity, TSelected>) => React.ReactNode
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Walks the JSX a cell renderer returned so nested components declare their
|
|
71
|
+
* selection. Proxy touches alone only see the refs passed as props; a nested
|
|
72
|
+
* `<HasMany>` or `createComponent()` registers its fields only when analyzed.
|
|
73
|
+
*
|
|
74
|
+
* The analyzer's return value is deliberately discarded: every component
|
|
75
|
+
* registers through the scope of the ref it received, which is the only way to
|
|
76
|
+
* attribute a field to the right entity — the rendered JSX may mix refs of the
|
|
77
|
+
* related entity with refs of the row entity.
|
|
78
|
+
*/
|
|
79
|
+
function analyzeRenderedSelection(rendered: React.ReactNode): void {
|
|
80
|
+
collectJsxSelection(rendered)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function getSelectionScope(ref: unknown): SelectionScope | null {
|
|
84
|
+
if (typeof ref !== 'object' || ref === null || !(SCOPE_REF in ref)) return null
|
|
85
|
+
const scope = ref[SCOPE_REF]
|
|
86
|
+
return scope instanceof SelectionScope ? scope : null
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function replaceSelectionFields(target: SelectionMeta, source: SelectionMeta): void {
|
|
90
|
+
target.fields.clear()
|
|
91
|
+
for (const [name, field] of source.fields) {
|
|
92
|
+
target.fields.set(name, field)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
69
96
|
// ============================================================================
|
|
70
97
|
// Factory
|
|
71
98
|
// ============================================================================
|
|
@@ -93,12 +120,12 @@ export function createRelationColumn<TFilterArtifact extends FilterArtifact>(
|
|
|
93
120
|
const relatedEntityName = extractRelatedEntityName(fieldRef) ?? ''
|
|
94
121
|
|
|
95
122
|
// Collect selection metadata for the related entity (for filter fetching)
|
|
96
|
-
|
|
123
|
+
const relatedSelection: SelectionMeta = { fields: new Map() }
|
|
97
124
|
if (relatedEntityName && renderer) {
|
|
98
125
|
const scope = new SelectionScope()
|
|
99
126
|
const proxy = createCollectorProxy(scope, relatedEntityName)
|
|
100
|
-
renderer(proxy)
|
|
101
|
-
relatedSelection
|
|
127
|
+
analyzeRenderedSelection(renderer(proxy))
|
|
128
|
+
replaceSelectionFields(relatedSelection, scope.toSelectionMeta())
|
|
102
129
|
}
|
|
103
130
|
|
|
104
131
|
const renderFilterItem = renderer
|
|
@@ -141,6 +168,10 @@ export function createRelationColumn<TFilterArtifact extends FilterArtifact>(
|
|
|
141
168
|
collectSelection: () => {
|
|
142
169
|
if (renderer && fieldRef) {
|
|
143
170
|
cellConfig.collectSelection(renderer, fieldRef)
|
|
171
|
+
const authoritativeScope = getSelectionScope(fieldRef)
|
|
172
|
+
if (authoritativeScope) {
|
|
173
|
+
replaceSelectionFields(relatedSelection, authoritativeScope.toSelectionMeta())
|
|
174
|
+
}
|
|
144
175
|
}
|
|
145
176
|
},
|
|
146
177
|
renderCell: (accessor: EntityAccessor<object>) => {
|
|
@@ -177,7 +208,7 @@ export interface RelationColumnComponent {
|
|
|
177
208
|
|
|
178
209
|
export const hasOneCellConfig: RelationCellConfig = {
|
|
179
210
|
collectSelection: (renderer, fieldRef) => {
|
|
180
|
-
renderer(fieldRef)
|
|
211
|
+
analyzeRenderedSelection(renderer(fieldRef))
|
|
181
212
|
},
|
|
182
213
|
renderCell: (accessor, fieldName, renderer) => {
|
|
183
214
|
const related = getRelatedAccessor(accessor, fieldName)
|
|
@@ -189,7 +220,9 @@ export const hasOneCellConfig: RelationCellConfig = {
|
|
|
189
220
|
export const hasManyCellConfig: RelationCellConfig = {
|
|
190
221
|
collectSelection: (renderer, fieldRef) => {
|
|
191
222
|
const ref = fieldRef as { map?: (fn: (item: unknown, index: number) => unknown) => unknown[] }
|
|
192
|
-
|
|
223
|
+
const rendered: React.ReactNode[] = []
|
|
224
|
+
ref.map?.((item) => { rendered.push(renderer(item)); return null })
|
|
225
|
+
analyzeRenderedSelection(rendered)
|
|
193
226
|
},
|
|
194
227
|
renderCell: (accessor, fieldName, renderer) => {
|
|
195
228
|
const ref = accessField(accessor, fieldName) as { items?: EntityAccessor<object>[] } | null
|
package/src/fieldRef.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field-ref introspection helpers shared by column definitions and DataView state.
|
|
3
|
+
*
|
|
4
|
+
* Kept in a leaf module so state hooks can derive field keys without pulling in
|
|
5
|
+
* the whole column/JSX stack.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { FIELD_REF_META } from '@contember/bindx'
|
|
9
|
+
|
|
10
|
+
interface FieldRefMetaCarrier {
|
|
11
|
+
readonly [FIELD_REF_META]: {
|
|
12
|
+
readonly entityType: string
|
|
13
|
+
readonly fieldName: string
|
|
14
|
+
readonly fullPath?: readonly string[]
|
|
15
|
+
readonly isArray: boolean
|
|
16
|
+
readonly isRelation: boolean
|
|
17
|
+
readonly enumName?: string
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Type guard: checks if a value carries FIELD_REF_META symbol. */
|
|
22
|
+
export function hasFieldRefMeta(ref: unknown): ref is FieldRefMetaCarrier {
|
|
23
|
+
return ref != null && typeof ref === 'object' && FIELD_REF_META in ref
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Extract the dotted field path from a field ref (works in both collector and
|
|
28
|
+
* runtime proxies). For fields reached through has-one relations
|
|
29
|
+
* (e.g. `it.author.name`) this is the full dotted path (`"author.name"`) so the
|
|
30
|
+
* DataGrid can build correct nested where/orderBy clauses; for top-level fields
|
|
31
|
+
* it is simply the field name (`"title"`).
|
|
32
|
+
*
|
|
33
|
+
* This is the canonical sorting/filtering key for a column — anything that keys
|
|
34
|
+
* state by a field ref must go through here, or nested columns silently miss.
|
|
35
|
+
*/
|
|
36
|
+
export function extractFieldName(ref: unknown): string | null {
|
|
37
|
+
if (!hasFieldRefMeta(ref)) return null
|
|
38
|
+
const meta = ref[FIELD_REF_META]
|
|
39
|
+
const fullPath = meta.fullPath
|
|
40
|
+
return fullPath && fullPath.length > 0 ? fullPath.join('.') : meta.fieldName
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Extract enum name from a field ref (if field is an enum). */
|
|
44
|
+
export function extractEnumName(ref: unknown): string | undefined {
|
|
45
|
+
return hasFieldRefMeta(ref) ? ref[FIELD_REF_META].enumName : undefined
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Extract related entity type name from a relation field ref. */
|
|
49
|
+
export function extractRelatedEntityName(ref: unknown): string | null {
|
|
50
|
+
if (!hasFieldRefMeta(ref)) return null
|
|
51
|
+
const meta = ref[FIELD_REF_META]
|
|
52
|
+
return meta.entityType || null
|
|
53
|
+
}
|
package/src/filterComponents.tsx
CHANGED
|
@@ -62,10 +62,9 @@ export {
|
|
|
62
62
|
} from './filterHooks.js'
|
|
63
63
|
export type { UseDataViewFilterResult as DataViewFilterState } from './filterHooks.js'
|
|
64
64
|
|
|
65
|
-
function
|
|
66
|
-
if (name !== undefined) return name
|
|
67
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
65
|
+
function useResolvedFilterName(name: string | undefined): string {
|
|
68
66
|
const contextName = useOptionalDataViewFilterName()
|
|
67
|
+
if (name !== undefined) return name
|
|
69
68
|
if (contextName !== null) return contextName
|
|
70
69
|
throw new Error('Filter name must be provided via `name` prop or filter scope context')
|
|
71
70
|
}
|
|
@@ -86,7 +85,7 @@ export interface DataViewTextFilterInputProps {
|
|
|
86
85
|
|
|
87
86
|
export const DataViewTextFilterInput = forwardRef<HTMLInputElement, DataViewTextFilterInputProps>(
|
|
88
87
|
({ name, debounceMs, ...props }, ref) => {
|
|
89
|
-
name =
|
|
88
|
+
name = useResolvedFilterName(name)
|
|
90
89
|
return (
|
|
91
90
|
<SlotInput
|
|
92
91
|
{...useDataViewTextFilterInput({ name, debounceMs })}
|
|
@@ -110,7 +109,7 @@ export interface DataViewTextFilterMatchModeTriggerProps {
|
|
|
110
109
|
|
|
111
110
|
export const DataViewTextFilterMatchModeTrigger = forwardRef<HTMLButtonElement, DataViewTextFilterMatchModeTriggerProps>(
|
|
112
111
|
({ name, mode, ...props }, ref) => {
|
|
113
|
-
name =
|
|
112
|
+
name = useResolvedFilterName(name)
|
|
114
113
|
const [active, cb] = useDataViewTextFilterMatchMode(name, mode)
|
|
115
114
|
const { onClick, ...otherProps } = props as React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
116
115
|
|
|
@@ -145,7 +144,7 @@ const TEXT_MODE_LABELS: Record<TextFilterArtifact['mode'], string> = {
|
|
|
145
144
|
export function DataViewTextFilterMatchModeLabel({
|
|
146
145
|
name,
|
|
147
146
|
}: DataViewTextFilterMatchModeLabelProps): ReactElement {
|
|
148
|
-
name =
|
|
147
|
+
name = useResolvedFilterName(name)
|
|
149
148
|
const [state] = useDataViewFilter<TextFilterArtifact>(name)
|
|
150
149
|
const mode = state?.mode ?? 'contains'
|
|
151
150
|
return <>{TEXT_MODE_LABELS[mode]}</>
|
|
@@ -162,7 +161,7 @@ export interface DataViewTextFilterResetTriggerProps {
|
|
|
162
161
|
|
|
163
162
|
export const DataViewTextFilterResetTrigger = forwardRef<HTMLButtonElement, DataViewTextFilterResetTriggerProps>(
|
|
164
163
|
({ name, ...props }, ref) => {
|
|
165
|
-
name =
|
|
164
|
+
name = useResolvedFilterName(name)
|
|
166
165
|
const [state, setFilter] = useDataViewFilter<TextFilterArtifact>(name)
|
|
167
166
|
const hasQuery = (state?.query?.length ?? 0) > 0
|
|
168
167
|
|
|
@@ -202,7 +201,7 @@ export interface DataViewNumberFilterInputProps {
|
|
|
202
201
|
|
|
203
202
|
export const DataViewNumberFilterInput = forwardRef<HTMLInputElement, DataViewNumberFilterInputProps>(
|
|
204
203
|
({ name, type, allowFloat, ...props }, ref) => {
|
|
205
|
-
name =
|
|
204
|
+
name = useResolvedFilterName(name)
|
|
206
205
|
const [artifact, setFilter] = useDataViewFilter<NumberRangeFilterArtifact>(name)
|
|
207
206
|
const min = artifact?.min ?? null
|
|
208
207
|
const max = artifact?.max ?? null
|
|
@@ -248,7 +247,7 @@ export interface DataViewDateFilterInputProps {
|
|
|
248
247
|
|
|
249
248
|
export const DataViewDateFilterInput = forwardRef<HTMLInputElement, DataViewDateFilterInputProps>(
|
|
250
249
|
({ name, type, ...props }, ref) => {
|
|
251
|
-
name =
|
|
250
|
+
name = useResolvedFilterName(name)
|
|
252
251
|
const [artifact, setFilter] = useDataViewFilter<import('@contember/bindx').DateFilterArtifact>(name)
|
|
253
252
|
const start = artifact?.start ?? null
|
|
254
253
|
const end = artifact?.end ?? null
|
|
@@ -289,7 +288,7 @@ export interface DataViewBooleanFilterTriggerProps {
|
|
|
289
288
|
|
|
290
289
|
export const DataViewBooleanFilterTrigger = forwardRef<HTMLButtonElement, DataViewBooleanFilterTriggerProps>(
|
|
291
290
|
({ name, action = 'include', value, ...props }, ref) => {
|
|
292
|
-
name =
|
|
291
|
+
name = useResolvedFilterName(name)
|
|
293
292
|
const [current, setFilter] = useDataViewBooleanFilter(name, value)
|
|
294
293
|
|
|
295
294
|
const toggleFilter = useCallback((): void => {
|
|
@@ -331,7 +330,7 @@ export interface DataViewEnumFilterTriggerProps {
|
|
|
331
330
|
|
|
332
331
|
export const DataViewEnumFilterTrigger = forwardRef<HTMLButtonElement, DataViewEnumFilterTriggerProps>(
|
|
333
332
|
({ name, action = 'include', value, ...props }, ref) => {
|
|
334
|
-
name =
|
|
333
|
+
name = useResolvedFilterName(name)
|
|
335
334
|
const [current, setFilter] = useDataViewEnumFilter(name, value)
|
|
336
335
|
|
|
337
336
|
const toggleFilter = useCallback((): void => {
|
|
@@ -377,7 +376,7 @@ export function DataViewEnumFilterState({
|
|
|
377
376
|
value,
|
|
378
377
|
children,
|
|
379
378
|
}: DataViewEnumFilterStateProps): ReactElement {
|
|
380
|
-
name =
|
|
379
|
+
name = useResolvedFilterName(name)
|
|
381
380
|
const [artifact] = useDataViewFilter<EnumFilterArtifact>(name)
|
|
382
381
|
const includedValues = artifact?.values ?? []
|
|
383
382
|
const excludedValues = artifact?.notValues ?? []
|
|
@@ -401,7 +400,7 @@ export interface DataViewRelationFilterTriggerProps {
|
|
|
401
400
|
|
|
402
401
|
export const DataViewRelationFilterTrigger = forwardRef<HTMLButtonElement, DataViewRelationFilterTriggerProps>(
|
|
403
402
|
({ name, action = 'include', id, ...props }, ref) => {
|
|
404
|
-
name =
|
|
403
|
+
name = useResolvedFilterName(name)
|
|
405
404
|
const [current, setFilter] = useDataViewRelationFilter(name, id)
|
|
406
405
|
|
|
407
406
|
const toggleFilter = useCallback((): void => {
|
|
@@ -447,7 +446,7 @@ export function DataViewRelationFilterState({
|
|
|
447
446
|
id,
|
|
448
447
|
children,
|
|
449
448
|
}: DataViewRelationFilterStateProps): ReactElement {
|
|
450
|
-
name =
|
|
449
|
+
name = useResolvedFilterName(name)
|
|
451
450
|
const [artifact] = useDataViewFilter<import('@contember/bindx').RelationFilterArtifact>(name)
|
|
452
451
|
const includedIds = artifact?.id ?? []
|
|
453
452
|
const excludedIds = artifact?.notId ?? []
|
|
@@ -470,7 +469,7 @@ export interface DataViewNullFilterTriggerProps {
|
|
|
470
469
|
|
|
471
470
|
export const DataViewNullFilterTrigger = forwardRef<HTMLButtonElement, DataViewNullFilterTriggerProps>(
|
|
472
471
|
({ name, action, ...props }, ref) => {
|
|
473
|
-
name =
|
|
472
|
+
name = useResolvedFilterName(name)
|
|
474
473
|
const [current, setFilter] = useDataViewNullFilter(name)
|
|
475
474
|
|
|
476
475
|
const toggleFilter = useCallback((): void => {
|
|
@@ -512,7 +511,7 @@ export interface DataViewFilterResetTriggerProps {
|
|
|
512
511
|
|
|
513
512
|
export const DataViewFilterResetTrigger = forwardRef<HTMLButtonElement, DataViewFilterResetTriggerProps>(
|
|
514
513
|
({ name, ...props }, ref) => {
|
|
515
|
-
name =
|
|
514
|
+
name = useResolvedFilterName(name)
|
|
516
515
|
const { filtering } = useDataViewContext()
|
|
517
516
|
const filter = filtering.filters.get(name)
|
|
518
517
|
const isActive = filter ? filter.handler.isActive(filter.artifact) : false
|
|
@@ -549,7 +548,7 @@ export interface DataViewDateFilterResetTriggerProps {
|
|
|
549
548
|
|
|
550
549
|
export const DataViewDateFilterResetTrigger = forwardRef<HTMLButtonElement, DataViewDateFilterResetTriggerProps>(
|
|
551
550
|
({ name, type, ...props }, ref) => {
|
|
552
|
-
name =
|
|
551
|
+
name = useResolvedFilterName(name)
|
|
553
552
|
const [state, setFilter] = useDataViewFilter<import('@contember/bindx').DateFilterArtifact>(name)
|
|
554
553
|
const hasValue = type === 'start'
|
|
555
554
|
? (state?.start ?? null) !== null
|
|
@@ -593,7 +592,7 @@ export interface DataViewNumberFilterResetTriggerProps {
|
|
|
593
592
|
|
|
594
593
|
export const DataViewNumberFilterResetTrigger = forwardRef<HTMLButtonElement, DataViewNumberFilterResetTriggerProps>(
|
|
595
594
|
({ name, ...props }, ref) => {
|
|
596
|
-
name =
|
|
595
|
+
name = useResolvedFilterName(name)
|
|
597
596
|
const [state, setFilter] = useDataViewFilter<NumberRangeFilterArtifact>(name)
|
|
598
597
|
const hasValue = (state?.min ?? null) !== null || (state?.max ?? null) !== null
|
|
599
598
|
|
package/src/index.ts
CHANGED
|
@@ -89,11 +89,16 @@ export {
|
|
|
89
89
|
type DataGridActionColumnProps,
|
|
90
90
|
type DataGridColumnProps,
|
|
91
91
|
type ColumnMeta,
|
|
92
|
+
} from './columns.js'
|
|
93
|
+
|
|
94
|
+
// Field ref introspection
|
|
95
|
+
export {
|
|
92
96
|
extractFieldName,
|
|
97
|
+
extractEnumName,
|
|
93
98
|
extractRelatedEntityName,
|
|
94
99
|
hasFieldRefMeta,
|
|
95
|
-
|
|
96
|
-
} from './
|
|
100
|
+
} from './fieldRef.js'
|
|
101
|
+
export { getRelatedAccessor } from './columnTypes.js'
|
|
97
102
|
|
|
98
103
|
// State hooks
|
|
99
104
|
export {
|
package/src/markers.ts
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
import type React from 'react'
|
|
10
10
|
import type { ReactNode } from 'react'
|
|
11
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
11
|
import type { EntityAccessor } from '@contember/bindx'
|
|
13
12
|
|
|
14
13
|
// ============================================================================
|
package/src/useDataGridSetup.ts
CHANGED
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
SelectionValues,
|
|
16
16
|
SchemaRegistry,
|
|
17
17
|
} from '@contember/bindx'
|
|
18
|
-
import { createFullTextFilterHandler, SelectionScope, buildQueryFromSelection } from '@contember/bindx'
|
|
18
|
+
import { createFullTextFilterHandler, SelectionScope, buildQueryFromSelection, FIELD_REF_META } from '@contember/bindx'
|
|
19
19
|
import {
|
|
20
20
|
createCollectorProxy,
|
|
21
21
|
mergeSelections,
|
|
@@ -31,18 +31,23 @@ import { DataViewElement, type DataViewElementProps } from './selectionComponent
|
|
|
31
31
|
|
|
32
32
|
export const QUERY_FILTER_NAME = '__query'
|
|
33
33
|
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
34
|
const MARKER_TYPES: ReadonlySet<React.ComponentType<any>> = new Set([
|
|
36
35
|
ColumnLeaf,
|
|
37
36
|
DataGridToolbarContent,
|
|
38
37
|
DataGridLayout,
|
|
39
38
|
])
|
|
40
39
|
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
40
|
const ELEMENT_MARKER_TYPES: ReadonlySet<React.ComponentType<any>> = new Set([
|
|
43
41
|
DataViewElement,
|
|
44
42
|
])
|
|
45
43
|
|
|
44
|
+
function isEntityAccessorFor<TEntity extends object>(
|
|
45
|
+
accessor: EntityAccessor<object>,
|
|
46
|
+
entityType: string,
|
|
47
|
+
): accessor is EntityAccessor<TEntity> {
|
|
48
|
+
return accessor[FIELD_REF_META].entityType === entityType
|
|
49
|
+
}
|
|
50
|
+
|
|
46
51
|
export interface DataGridCommonProps<TEntity extends object> {
|
|
47
52
|
children: (it: EntityAccessor<TEntity>) => ReactNode
|
|
48
53
|
initialSorting?: Partial<Record<string, OrderDirection>>
|
|
@@ -109,6 +114,43 @@ export function useDataGridSetup<TEntity extends object>({
|
|
|
109
114
|
const analysis = analyzeChildren(jsx, MARKER_TYPES)
|
|
110
115
|
|
|
111
116
|
const cols = analysis.getAll<ColumnLeafProps>(ColumnLeaf)
|
|
117
|
+
const runtimeColumnsByAccessor = new WeakMap<EntityAccessor<object>, readonly ColumnLeafProps[]>()
|
|
118
|
+
|
|
119
|
+
const getRuntimeColumns = (accessor: EntityAccessor<object>): readonly ColumnLeafProps[] => {
|
|
120
|
+
const cached = runtimeColumnsByAccessor.get(accessor)
|
|
121
|
+
if (cached) return cached
|
|
122
|
+
if (!isEntityAccessorFor<TEntity>(accessor, entityType)) {
|
|
123
|
+
throw new Error(`DataGrid expected a "${entityType}" row accessor, received "${accessor[FIELD_REF_META].entityType}".`)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const runtimeJsx = children(accessor)
|
|
127
|
+
const runtimeColumns = analyzeChildren(runtimeJsx, MARKER_TYPES).getAll<ColumnLeafProps>(ColumnLeaf)
|
|
128
|
+
if (runtimeColumns.length !== cols.length) {
|
|
129
|
+
throw new Error(`DataGrid children produced ${runtimeColumns.length} columns for row "${accessor.id}", but collection produced ${cols.length}. Data-dependent column structure is not supported.`)
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
for (let index = 0; index < cols.length; index++) {
|
|
133
|
+
const collected = cols[index]
|
|
134
|
+
const runtime = runtimeColumns[index]
|
|
135
|
+
if (collected?.fieldName !== runtime?.fieldName || collected?.columnType !== runtime?.columnType) {
|
|
136
|
+
throw new Error(`DataGrid children changed column order at position ${index} for row "${accessor.id}". Data-dependent column structure is not supported.`)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
runtimeColumnsByAccessor.set(accessor, runtimeColumns)
|
|
141
|
+
return runtimeColumns
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const runtimeBoundColumns = cols.map((column, index): ColumnLeafProps => ({
|
|
145
|
+
...column,
|
|
146
|
+
renderCell: accessor => {
|
|
147
|
+
const runtimeColumn = getRuntimeColumns(accessor)[index]
|
|
148
|
+
if (!runtimeColumn) {
|
|
149
|
+
throw new Error(`DataGrid runtime column ${index} is missing for row "${accessor.id}".`)
|
|
150
|
+
}
|
|
151
|
+
return runtimeColumn.renderCell(accessor)
|
|
152
|
+
},
|
|
153
|
+
}))
|
|
112
154
|
const toolbarMarker = analysis.getFirst<DataGridToolbarContentProps>(DataGridToolbarContent)
|
|
113
155
|
const layoutMarkers = analysis.getAll<DataGridLayoutProps>(DataGridLayout)
|
|
114
156
|
|
|
@@ -146,7 +188,7 @@ export function useDataGridSetup<TEntity extends object>({
|
|
|
146
188
|
|
|
147
189
|
return {
|
|
148
190
|
childrenJsx: jsx,
|
|
149
|
-
columns:
|
|
191
|
+
columns: runtimeBoundColumns,
|
|
150
192
|
selection: sel,
|
|
151
193
|
queryKey: key,
|
|
152
194
|
toolbarContent: toolbarMarker?.children,
|
package/src/useDataViewState.ts
CHANGED
|
@@ -20,8 +20,8 @@ import type {
|
|
|
20
20
|
SelectionState,
|
|
21
21
|
FieldRef,
|
|
22
22
|
} from '@contember/bindx'
|
|
23
|
-
import { FIELD_REF_META } from '@contember/bindx'
|
|
24
23
|
import { useStoredState, type StateStorageOrName } from './stateStorage.js'
|
|
24
|
+
import { extractFieldName } from './fieldRef.js'
|
|
25
25
|
|
|
26
26
|
// ============================================================================
|
|
27
27
|
// Filter State
|
|
@@ -183,8 +183,9 @@ export function useSortingState(options: UseSortingOptions): SortingStateResult
|
|
|
183
183
|
|
|
184
184
|
const setOrderBy = useCallback(
|
|
185
185
|
<T>(field: FieldRef<T>, action: SortingDirectionAction, append?: boolean): void => {
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
// Dotted path, not the leaf — `sortableFields` is keyed the same way (see #68).
|
|
187
|
+
const fieldName = extractFieldName(field)
|
|
188
|
+
if (fieldName === null || !sortableFields.has(fieldName)) return
|
|
188
189
|
const currentDir = directions[fieldName] ?? null
|
|
189
190
|
const newDir = resolveSortAction(currentDir, action)
|
|
190
191
|
|
|
@@ -210,7 +211,10 @@ export function useSortingState(options: UseSortingOptions): SortingStateResult
|
|
|
210
211
|
}, [setDirections])
|
|
211
212
|
|
|
212
213
|
const directionOf = useCallback(
|
|
213
|
-
<T>(field: FieldRef<T>): OrderDirection | null =>
|
|
214
|
+
<T>(field: FieldRef<T>): OrderDirection | null => {
|
|
215
|
+
const fieldName = extractFieldName(field)
|
|
216
|
+
return fieldName === null ? null : directions[fieldName] ?? null
|
|
217
|
+
},
|
|
214
218
|
[directions],
|
|
215
219
|
)
|
|
216
220
|
|