@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.
@@ -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;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAGxF;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;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
- /** Extract field name from a field ref (works in both collector and runtime proxies). */
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;
@@ -1 +1 @@
1
- {"version":3,"file":"columns.d.ts","sourceRoot":"","sources":["../src/columns.tsx"],"names":[],"mappings":"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"}
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.42",
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.42",
19
- "@contember/bindx-react": "0.1.42",
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
  },
@@ -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
- // EntityAccessor is a Proxy — bracket access goes through the get trap
60
- return (accessor as unknown as Record<string, unknown>)[fieldName]
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
- /** Extract field name from a field ref (works in both collector and runtime proxies). */
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
- return hasFieldRefMeta(ref) ? ref[FIELD_REF_META].fieldName : 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
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 as unknown as Record<string, unknown>)[fieldName]
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