@contember/bindx-dataview 0.1.42 → 0.1.44
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/columnTypes.d.ts +4 -1
- package/dist/columnTypes.d.ts.map +1 -1
- package/dist/columns.d.ts +8 -1
- package/dist/columns.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/columnTypes.ts +16 -3
- package/src/columns.tsx +13 -3
package/dist/columnTypes.d.ts
CHANGED
|
@@ -17,8 +17,11 @@ export interface ColumnTypeDef<TValue = unknown, TFilterArtifact extends FilterA
|
|
|
17
17
|
}
|
|
18
18
|
export declare function defineColumnType<TValue, TFilterArtifact extends FilterArtifact>(def: ColumnTypeDef<TValue, TFilterArtifact>): ColumnTypeDef<TValue, TFilterArtifact>;
|
|
19
19
|
/**
|
|
20
|
-
* Access a field on an EntityAccessor by name.
|
|
20
|
+
* Access a field on an EntityAccessor by name or dotted path.
|
|
21
21
|
* EntityAccessor is a Proxy — bracket notation triggers the proxy get trap.
|
|
22
|
+
* Dotted paths (e.g. `"author.name"`) are traversed through has-one relations:
|
|
23
|
+
* each intermediate segment resolves to a related EntityAccessor, and the final
|
|
24
|
+
* segment to the leaf field ref.
|
|
22
25
|
*/
|
|
23
26
|
export declare function accessField(accessor: EntityAccessor<object>, fieldName: string): unknown;
|
|
24
27
|
export declare const textColumnDef: ColumnTypeDef<string | null, TextFilterArtifact>;
|
|
@@ -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
|
|
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"}
|
package/dist/columns.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ interface FieldRefMetaCarrier {
|
|
|
18
18
|
readonly [FIELD_REF_META]: {
|
|
19
19
|
readonly entityType: string;
|
|
20
20
|
readonly fieldName: string;
|
|
21
|
+
readonly fullPath?: readonly string[];
|
|
21
22
|
readonly isArray: boolean;
|
|
22
23
|
readonly isRelation: boolean;
|
|
23
24
|
readonly enumName?: string;
|
|
@@ -25,7 +26,13 @@ interface FieldRefMetaCarrier {
|
|
|
25
26
|
}
|
|
26
27
|
/** Type guard: checks if a value carries FIELD_REF_META symbol. */
|
|
27
28
|
export declare function hasFieldRefMeta(ref: unknown): ref is FieldRefMetaCarrier;
|
|
28
|
-
/**
|
|
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
|
+
*/
|
|
29
36
|
export declare function extractFieldName(ref: unknown): string | null;
|
|
30
37
|
/** Extract enum name from a field ref (if field is an enum). */
|
|
31
38
|
export declare function extractEnumName(ref: unknown): string | undefined;
|
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;AAEjL,OAAO,EAAE,cAAc,EAAwB,MAAM,wBAAwB,CAAA;AAG7E,OAAO,EAA6D,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAchI,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAMlE,MAAM,MAAM,UAAU,GAAG,eAAe,CAAA;AAMxC,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,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
|
|
1
|
+
{"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../src/columns.tsx"],"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.44",
|
|
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.44",
|
|
19
|
+
"@contember/bindx-react": "0.1.44",
|
|
20
20
|
"@radix-ui/primitive": "^1.1.3",
|
|
21
21
|
"@radix-ui/react-slot": "^1.2.4"
|
|
22
22
|
},
|
package/src/columnTypes.ts
CHANGED
|
@@ -52,12 +52,25 @@ export function defineColumnType<TValue, TFilterArtifact extends FilterArtifact>
|
|
|
52
52
|
// ============================================================================
|
|
53
53
|
|
|
54
54
|
/**
|
|
55
|
-
* Access a field on an EntityAccessor by name.
|
|
55
|
+
* Access a field on an EntityAccessor by name or dotted path.
|
|
56
56
|
* EntityAccessor is a Proxy — bracket notation triggers the proxy get trap.
|
|
57
|
+
* Dotted paths (e.g. `"author.name"`) are traversed through has-one relations:
|
|
58
|
+
* each intermediate segment resolves to a related EntityAccessor, and the final
|
|
59
|
+
* segment to the leaf field ref.
|
|
57
60
|
*/
|
|
58
61
|
export function accessField(accessor: EntityAccessor<object>, fieldName: string): unknown {
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
if (!fieldName.includes('.')) {
|
|
63
|
+
// EntityAccessor is a Proxy — bracket access goes through the get trap
|
|
64
|
+
return (accessor as unknown as Record<string, unknown>)[fieldName]
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const segments = fieldName.split('.')
|
|
68
|
+
let current: unknown = accessor
|
|
69
|
+
for (let i = 0; i < segments.length; i++) {
|
|
70
|
+
if (current == null || typeof current !== 'object') return null
|
|
71
|
+
current = (current as Record<string, unknown>)[segments[i]!]
|
|
72
|
+
}
|
|
73
|
+
return current
|
|
61
74
|
}
|
|
62
75
|
|
|
63
76
|
function extractScalarValue<T>(accessor: EntityAccessor<object>, fieldName: string): T | null {
|
package/src/columns.tsx
CHANGED
|
@@ -45,6 +45,7 @@ interface FieldRefMetaCarrier {
|
|
|
45
45
|
readonly [FIELD_REF_META]: {
|
|
46
46
|
readonly entityType: string
|
|
47
47
|
readonly fieldName: string
|
|
48
|
+
readonly fullPath?: readonly string[]
|
|
48
49
|
readonly isArray: boolean
|
|
49
50
|
readonly isRelation: boolean
|
|
50
51
|
readonly enumName?: string
|
|
@@ -56,9 +57,18 @@ export function hasFieldRefMeta(ref: unknown): ref is FieldRefMetaCarrier {
|
|
|
56
57
|
return ref != null && typeof ref === 'object' && FIELD_REF_META in ref
|
|
57
58
|
}
|
|
58
59
|
|
|
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
|
+
*/
|
|
60
67
|
export function extractFieldName(ref: unknown): string | null {
|
|
61
|
-
|
|
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
|
|
62
72
|
}
|
|
63
73
|
|
|
64
74
|
/** Extract enum name from a field ref (if field is an enum). */
|
|
@@ -303,7 +313,7 @@ export const DataGridColumn = Object.assign(
|
|
|
303
313
|
header,
|
|
304
314
|
renderCell: (accessor: EntityAccessor<object>) => {
|
|
305
315
|
if (!fieldName) return null
|
|
306
|
-
const ref = (accessor
|
|
316
|
+
const ref = accessField(accessor, fieldName)
|
|
307
317
|
const value = ref && typeof ref === 'object' && 'value' in ref
|
|
308
318
|
? (ref as { value: unknown }).value ?? null
|
|
309
319
|
: null
|