@asteby/metacore-runtime-react 28.3.5 → 28.3.6
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/CHANGELOG.md +10 -0
- package/dist/column-visibility.d.ts +31 -0
- package/dist/column-visibility.d.ts.map +1 -1
- package/dist/column-visibility.js +51 -0
- package/dist/dynamic-relation.d.ts.map +1 -1
- package/dist/dynamic-relation.js +5 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/__tests__/column-visibility.test.ts +60 -0
- package/src/column-visibility.ts +50 -0
- package/src/dynamic-relation.tsx +7 -1
- package/src/index.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @asteby/metacore-runtime-react
|
|
2
2
|
|
|
3
|
+
## 28.3.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c3f781e: Ocultar columnas de auditoría/redundantes en las sub-tablas de líneas del modal de vista.
|
|
8
|
+
|
|
9
|
+
Las sub-tablas de relaciones (`DynamicRelation` one_to_many — "Líneas del pedido", etc.) ahora respetan la `visibility` de cada columna con criterio de modal: una columna declarada `visibility: "table"` (o `"list"`) NO aparece en la sub-tabla del modal, aunque siga visible en la tabla principal `/m/<model>`. Además, las columnas de auditoría (`created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`, `organization_id`) se ocultan por defecto en ese contexto por ser ruido bajo el registro padre; un manifest puede volver a mostrarlas declarando una `visibility` explícita (`"all"`/`"modal"`) en la columna.
|
|
10
|
+
|
|
11
|
+
Nuevos helpers exportados: `isColumnVisibleInModal`, `isColumnVisibleInLineSubtable` y `AUDIT_SUBTABLE_COLUMN_KEYS`.
|
|
12
|
+
|
|
3
13
|
## 28.3.5
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -9,6 +9,37 @@ import type { ColumnDefinition, TableMetadata } from './types';
|
|
|
9
9
|
* by older kernels that don't set `visibility` at all.
|
|
10
10
|
*/
|
|
11
11
|
export declare function isColumnVisibleInTable(col: ColumnDefinition): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Whether a column should render in a MODAL context — the create/edit/view
|
|
14
|
+
* dialog. Mirror image of {@link isColumnVisibleInTable}: a column scoped to
|
|
15
|
+
* `'table'` (list-only) or `'list'` (API-only) is hidden here, while empty /
|
|
16
|
+
* `'all'` / `'modal'` keep it visible. Preserves zero-value behaviour for
|
|
17
|
+
* metadata emitted by older kernels that never set `visibility`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isColumnVisibleInModal(col: ColumnDefinition): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Audit / system columns that are pure noise inside a child line list rendered
|
|
22
|
+
* under a parent record (line items, one_to_many panels in the view modal):
|
|
23
|
+
* they are either constant for the parent (`organization_id`) or already
|
|
24
|
+
* obvious from the parent record (`created_by`, timestamps). Hidden by default
|
|
25
|
+
* in that context — see {@link isColumnVisibleInLineSubtable}.
|
|
26
|
+
*/
|
|
27
|
+
export declare const AUDIT_SUBTABLE_COLUMN_KEYS: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* Column visibility decision for a sub-table of lines/relations rendered inside
|
|
30
|
+
* the view modal of a parent record. Two rules on top of the modal criterion:
|
|
31
|
+
*
|
|
32
|
+
* 1. Respect `visibility`: a column scoped to `'table'`/`'list'` never shows
|
|
33
|
+
* here (reuses {@link isColumnVisibleInModal}), so a manifest hides a
|
|
34
|
+
* redundant column from the sub-table with `visibility: "table"`.
|
|
35
|
+
* 2. Audit columns ({@link AUDIT_SUBTABLE_COLUMN_KEYS}) are hidden BY DEFAULT
|
|
36
|
+
* — unless the manifest explicitly opts them back in by declaring a
|
|
37
|
+
* `visibility` (`'all'`/`'modal'`) on that column.
|
|
38
|
+
*
|
|
39
|
+
* Only applies to the embedded child-list context; the main `/m/<model>` table
|
|
40
|
+
* uses {@link isColumnVisibleInTable} and is unaffected.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isColumnVisibleInLineSubtable(col: ColumnDefinition): boolean;
|
|
12
43
|
/**
|
|
13
44
|
* Returns the keys of columns that opt into the model's full-text search,
|
|
14
45
|
* or `null` when no column declares `searchable` at all.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-visibility.d.ts","sourceRoot":"","sources":["../src/column-visibility.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAKrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GACzC,MAAM,EAAE,GAAG,IAAI,CAKjB"}
|
|
1
|
+
{"version":3,"file":"column-visibility.d.ts","sourceRoot":"","sources":["../src/column-visibility.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAKrE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAKrE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAOvD,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAI5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GACzC,MAAM,EAAE,GAAG,IAAI,CAKjB"}
|
|
@@ -22,6 +22,57 @@ export function isColumnVisibleInTable(col) {
|
|
|
22
22
|
return true;
|
|
23
23
|
return v === 'all' || v === 'table';
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether a column should render in a MODAL context — the create/edit/view
|
|
27
|
+
* dialog. Mirror image of {@link isColumnVisibleInTable}: a column scoped to
|
|
28
|
+
* `'table'` (list-only) or `'list'` (API-only) is hidden here, while empty /
|
|
29
|
+
* `'all'` / `'modal'` keep it visible. Preserves zero-value behaviour for
|
|
30
|
+
* metadata emitted by older kernels that never set `visibility`.
|
|
31
|
+
*/
|
|
32
|
+
export function isColumnVisibleInModal(col) {
|
|
33
|
+
if (col.hidden)
|
|
34
|
+
return false;
|
|
35
|
+
const v = col.visibility;
|
|
36
|
+
if (!v)
|
|
37
|
+
return true;
|
|
38
|
+
return v === 'all' || v === 'modal';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Audit / system columns that are pure noise inside a child line list rendered
|
|
42
|
+
* under a parent record (line items, one_to_many panels in the view modal):
|
|
43
|
+
* they are either constant for the parent (`organization_id`) or already
|
|
44
|
+
* obvious from the parent record (`created_by`, timestamps). Hidden by default
|
|
45
|
+
* in that context — see {@link isColumnVisibleInLineSubtable}.
|
|
46
|
+
*/
|
|
47
|
+
export const AUDIT_SUBTABLE_COLUMN_KEYS = [
|
|
48
|
+
'created_by',
|
|
49
|
+
'updated_by',
|
|
50
|
+
'created_at',
|
|
51
|
+
'updated_at',
|
|
52
|
+
'deleted_at',
|
|
53
|
+
'organization_id',
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* Column visibility decision for a sub-table of lines/relations rendered inside
|
|
57
|
+
* the view modal of a parent record. Two rules on top of the modal criterion:
|
|
58
|
+
*
|
|
59
|
+
* 1. Respect `visibility`: a column scoped to `'table'`/`'list'` never shows
|
|
60
|
+
* here (reuses {@link isColumnVisibleInModal}), so a manifest hides a
|
|
61
|
+
* redundant column from the sub-table with `visibility: "table"`.
|
|
62
|
+
* 2. Audit columns ({@link AUDIT_SUBTABLE_COLUMN_KEYS}) are hidden BY DEFAULT
|
|
63
|
+
* — unless the manifest explicitly opts them back in by declaring a
|
|
64
|
+
* `visibility` (`'all'`/`'modal'`) on that column.
|
|
65
|
+
*
|
|
66
|
+
* Only applies to the embedded child-list context; the main `/m/<model>` table
|
|
67
|
+
* uses {@link isColumnVisibleInTable} and is unaffected.
|
|
68
|
+
*/
|
|
69
|
+
export function isColumnVisibleInLineSubtable(col) {
|
|
70
|
+
if (!isColumnVisibleInModal(col))
|
|
71
|
+
return false;
|
|
72
|
+
if (!col.visibility && AUDIT_SUBTABLE_COLUMN_KEYS.includes(col.key))
|
|
73
|
+
return false;
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
25
76
|
/**
|
|
26
77
|
* Returns the keys of columns that opt into the model's full-text search,
|
|
27
78
|
* or `null` when no column declares `searchable` at all.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-relation.d.ts","sourceRoot":"","sources":["../src/dynamic-relation.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dynamic-relation.d.ts","sourceRoot":"","sources":["../src/dynamic-relation.tsx"],"names":[],"mappings":"AAgEA,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,wBAAwB,EACxB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,cAAc,GACjB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,wBAAwB,EAAE,MAAM,CAAA;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,WAAW,EAAE,MAAM,CAAA;CACtB;AAiBD,UAAU,WAAW;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACzC,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,6BAA8B,SAAQ,WAAW;IAC9D,IAAI,EAAE,aAAa,CAAA;IACnB,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,8BAA+B,SAAQ,WAAW;IAC/D,IAAI,EAAE,cAAc,CAAA;IACpB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC1B,6BAA6B,GAC7B,8BAA8B,CAAA;AAEpC,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,+BAK1D"}
|
package/dist/dynamic-relation.js
CHANGED
|
@@ -16,6 +16,7 @@ import { DynamicForm } from './dynamic-form';
|
|
|
16
16
|
import { useImageUrl } from './image-url-context';
|
|
17
17
|
import { useTimeZone, useCurrency } from './org-runtime-context';
|
|
18
18
|
import { makeDefaultGetDynamicColumns } from './dynamic-columns';
|
|
19
|
+
import { isColumnVisibleInLineSubtable } from './column-visibility';
|
|
19
20
|
import { useOptionsResolver } from './use-options-resolver';
|
|
20
21
|
import { buildCreatePayload, buildPivotAttachPayload, buildPivotRowIndex, buildRelationFilterParams, deriveRelationFormFields, diffSelection, extractSelectedTargetIds, pickOptionLabel, relationRowKey, } from './dynamic-relation-helpers';
|
|
21
22
|
export { buildCreatePayload, buildPivotAttachPayload, buildPivotRowIndex, buildRelationFilterParams, deriveRelationFormFields, diffSelection, extractSelectedTargetIds, formatRelationCell, objectLabel, pickOptionLabel, relationRowKey, } from './dynamic-relation-helpers';
|
|
@@ -101,7 +102,10 @@ function OneToManyRelation({ kind, model, foreignKey, parentId, filters, endpoin
|
|
|
101
102
|
// Hide the FK and every scope column — they're fixed for this parent and
|
|
102
103
|
// would just render the same value on every row.
|
|
103
104
|
const hidden = new Set([foreignKey, ...Object.keys(filters || {}), ...hiddenColumns]);
|
|
104
|
-
|
|
105
|
+
// isColumnVisibleInLineSubtable additionally drops `hidden`/table-scoped
|
|
106
|
+
// columns AND the audit/system noise (created_by, timestamps, org_id)
|
|
107
|
+
// that's redundant under a parent record — see column-visibility.ts.
|
|
108
|
+
return metadata.columns.filter(c => !hidden.has(c.key) && isColumnVisibleInLineSubtable(c));
|
|
105
109
|
}, [metadata, foreignKey, filtersKey, hiddenColumns]);
|
|
106
110
|
// Reuse the EXACT column factory the main `<DynamicTable>` uses so each cell
|
|
107
111
|
// renders identically — money in the org currency right-aligned, FK chips
|
package/dist/index.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export { DynamicCRUDPage, type DynamicCRUDPageProps, type DynamicCRUDPageStrings
|
|
|
49
49
|
export { DynamicRelation, type DynamicRelationProps, type DynamicRelationStrings, type DynamicRelationKind, buildRelationFilterParams, buildCreatePayload, deriveRelationFormFields, relationRowKey, } from './dynamic-relation';
|
|
50
50
|
export { DynamicRelations, resolveParentId, buildRelationFilters, type DynamicRelationsProps, } from './dynamic-relations';
|
|
51
51
|
export { registerModelExtension, getModelExtension, clearModelExtensions, type ModelExtension, type ModelExtensionProps, } from './model-extension-registry';
|
|
52
|
-
export { isColumnVisibleInTable, getSearchableColumnKeys, } from './column-visibility';
|
|
52
|
+
export { isColumnVisibleInTable, isColumnVisibleInModal, isColumnVisibleInLineSubtable, AUDIT_SUBTABLE_COLUMN_KEYS, getSearchableColumnKeys, } from './column-visibility';
|
|
53
53
|
export { useOptionsResolver, projectOption, type ResolvedOption, type OptionsMeta, type UseOptionsResolverArgs, type UseOptionsResolverResult, } from './use-options-resolver';
|
|
54
54
|
export { setOrgConfigBridge, getOrgConfigBridge, resolveValidatorToken, type OrgConfigBridge, } from './use-org-config-bridge';
|
|
55
55
|
export { registerValidator, getDependsOn, resolveDependsValue, getOptionsConfig, resolveOptionsSource, } from './dynamic-form-schema';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/index.js
CHANGED
|
@@ -51,7 +51,7 @@ export { DynamicCRUDPage, } from './dynamic-crud-page';
|
|
|
51
51
|
export { DynamicRelation, buildRelationFilterParams, buildCreatePayload, deriveRelationFormFields, relationRowKey, } from './dynamic-relation';
|
|
52
52
|
export { DynamicRelations, resolveParentId, buildRelationFilters, } from './dynamic-relations';
|
|
53
53
|
export { registerModelExtension, getModelExtension, clearModelExtensions, } from './model-extension-registry';
|
|
54
|
-
export { isColumnVisibleInTable, getSearchableColumnKeys, } from './column-visibility';
|
|
54
|
+
export { isColumnVisibleInTable, isColumnVisibleInModal, isColumnVisibleInLineSubtable, AUDIT_SUBTABLE_COLUMN_KEYS, getSearchableColumnKeys, } from './column-visibility';
|
|
55
55
|
export { useOptionsResolver, projectOption, } from './use-options-resolver';
|
|
56
56
|
export { setOrgConfigBridge, getOrgConfigBridge, resolveValidatorToken, } from './use-org-config-bridge';
|
|
57
57
|
export { registerValidator, getDependsOn, resolveDependsValue, getOptionsConfig, resolveOptionsSource, } from './dynamic-form-schema';
|
package/package.json
CHANGED
|
@@ -2,6 +2,8 @@ import { describe, it, expect } from 'vitest'
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
isColumnVisibleInTable,
|
|
5
|
+
isColumnVisibleInModal,
|
|
6
|
+
isColumnVisibleInLineSubtable,
|
|
5
7
|
getSearchableColumnKeys,
|
|
6
8
|
} from '../column-visibility'
|
|
7
9
|
import type { ColumnDefinition, TableMetadata } from '../types'
|
|
@@ -57,6 +59,64 @@ describe('isColumnVisibleInTable', () => {
|
|
|
57
59
|
})
|
|
58
60
|
})
|
|
59
61
|
|
|
62
|
+
describe('isColumnVisibleInModal', () => {
|
|
63
|
+
it('keeps columns with no visibility flag (legacy zero-value)', () => {
|
|
64
|
+
expect(isColumnVisibleInModal(baseCol())).toBe(true)
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('keeps columns with visibility="all" or "modal"', () => {
|
|
68
|
+
expect(isColumnVisibleInModal(baseCol({ visibility: 'all' }))).toBe(true)
|
|
69
|
+
expect(isColumnVisibleInModal(baseCol({ visibility: 'modal' }))).toBe(true)
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
it('hides columns scoped to the table or the API payload', () => {
|
|
73
|
+
expect(isColumnVisibleInModal(baseCol({ visibility: 'table' }))).toBe(false)
|
|
74
|
+
expect(isColumnVisibleInModal(baseCol({ visibility: 'list' }))).toBe(false)
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
it('hides columns with the legacy hidden boolean even if visibility="all"', () => {
|
|
78
|
+
expect(isColumnVisibleInModal(baseCol({ hidden: true, visibility: 'all' }))).toBe(false)
|
|
79
|
+
})
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
describe('isColumnVisibleInLineSubtable', () => {
|
|
83
|
+
it('keeps a plain column with no visibility flag', () => {
|
|
84
|
+
expect(isColumnVisibleInLineSubtable(baseCol({ key: 'quantity' }))).toBe(true)
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
it('hides audit/system columns by default', () => {
|
|
88
|
+
for (const key of [
|
|
89
|
+
'created_by',
|
|
90
|
+
'updated_by',
|
|
91
|
+
'created_at',
|
|
92
|
+
'updated_at',
|
|
93
|
+
'deleted_at',
|
|
94
|
+
'organization_id',
|
|
95
|
+
]) {
|
|
96
|
+
expect(isColumnVisibleInLineSubtable(baseCol({ key }))).toBe(false)
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
it('lets a manifest opt an audit column back in via explicit visibility', () => {
|
|
101
|
+
expect(
|
|
102
|
+
isColumnVisibleInLineSubtable(baseCol({ key: 'created_by', visibility: 'all' })),
|
|
103
|
+
).toBe(true)
|
|
104
|
+
expect(
|
|
105
|
+
isColumnVisibleInLineSubtable(baseCol({ key: 'created_by', visibility: 'modal' })),
|
|
106
|
+
).toBe(true)
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
it('hides a redundant column declared visibility="table" (table-only)', () => {
|
|
110
|
+
expect(
|
|
111
|
+
isColumnVisibleInLineSubtable(baseCol({ key: 'status', visibility: 'table' })),
|
|
112
|
+
).toBe(false)
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
it('still respects the legacy hidden boolean', () => {
|
|
116
|
+
expect(isColumnVisibleInLineSubtable(baseCol({ key: 'quantity', hidden: true }))).toBe(false)
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
|
|
60
120
|
describe('getSearchableColumnKeys', () => {
|
|
61
121
|
it('returns null when no column declares searchable (legacy metadata)', () => {
|
|
62
122
|
const meta = baseMeta([
|
package/src/column-visibility.ts
CHANGED
|
@@ -24,6 +24,56 @@ export function isColumnVisibleInTable(col: ColumnDefinition): boolean {
|
|
|
24
24
|
return v === 'all' || v === 'table'
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Whether a column should render in a MODAL context — the create/edit/view
|
|
29
|
+
* dialog. Mirror image of {@link isColumnVisibleInTable}: a column scoped to
|
|
30
|
+
* `'table'` (list-only) or `'list'` (API-only) is hidden here, while empty /
|
|
31
|
+
* `'all'` / `'modal'` keep it visible. Preserves zero-value behaviour for
|
|
32
|
+
* metadata emitted by older kernels that never set `visibility`.
|
|
33
|
+
*/
|
|
34
|
+
export function isColumnVisibleInModal(col: ColumnDefinition): boolean {
|
|
35
|
+
if (col.hidden) return false
|
|
36
|
+
const v = col.visibility
|
|
37
|
+
if (!v) return true
|
|
38
|
+
return v === 'all' || v === 'modal'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Audit / system columns that are pure noise inside a child line list rendered
|
|
43
|
+
* under a parent record (line items, one_to_many panels in the view modal):
|
|
44
|
+
* they are either constant for the parent (`organization_id`) or already
|
|
45
|
+
* obvious from the parent record (`created_by`, timestamps). Hidden by default
|
|
46
|
+
* in that context — see {@link isColumnVisibleInLineSubtable}.
|
|
47
|
+
*/
|
|
48
|
+
export const AUDIT_SUBTABLE_COLUMN_KEYS: readonly string[] = [
|
|
49
|
+
'created_by',
|
|
50
|
+
'updated_by',
|
|
51
|
+
'created_at',
|
|
52
|
+
'updated_at',
|
|
53
|
+
'deleted_at',
|
|
54
|
+
'organization_id',
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Column visibility decision for a sub-table of lines/relations rendered inside
|
|
59
|
+
* the view modal of a parent record. Two rules on top of the modal criterion:
|
|
60
|
+
*
|
|
61
|
+
* 1. Respect `visibility`: a column scoped to `'table'`/`'list'` never shows
|
|
62
|
+
* here (reuses {@link isColumnVisibleInModal}), so a manifest hides a
|
|
63
|
+
* redundant column from the sub-table with `visibility: "table"`.
|
|
64
|
+
* 2. Audit columns ({@link AUDIT_SUBTABLE_COLUMN_KEYS}) are hidden BY DEFAULT
|
|
65
|
+
* — unless the manifest explicitly opts them back in by declaring a
|
|
66
|
+
* `visibility` (`'all'`/`'modal'`) on that column.
|
|
67
|
+
*
|
|
68
|
+
* Only applies to the embedded child-list context; the main `/m/<model>` table
|
|
69
|
+
* uses {@link isColumnVisibleInTable} and is unaffected.
|
|
70
|
+
*/
|
|
71
|
+
export function isColumnVisibleInLineSubtable(col: ColumnDefinition): boolean {
|
|
72
|
+
if (!isColumnVisibleInModal(col)) return false
|
|
73
|
+
if (!col.visibility && AUDIT_SUBTABLE_COLUMN_KEYS.includes(col.key)) return false
|
|
74
|
+
return true
|
|
75
|
+
}
|
|
76
|
+
|
|
27
77
|
/**
|
|
28
78
|
* Returns the keys of columns that opt into the model's full-text search,
|
|
29
79
|
* or `null` when no column declares `searchable` at all.
|
package/src/dynamic-relation.tsx
CHANGED
|
@@ -46,6 +46,7 @@ import { DynamicForm } from './dynamic-form'
|
|
|
46
46
|
import { useImageUrl } from './image-url-context'
|
|
47
47
|
import { useTimeZone, useCurrency } from './org-runtime-context'
|
|
48
48
|
import { makeDefaultGetDynamicColumns } from './dynamic-columns'
|
|
49
|
+
import { isColumnVisibleInLineSubtable } from './column-visibility'
|
|
49
50
|
import { useOptionsResolver } from './use-options-resolver'
|
|
50
51
|
import type { ApiResponse, TableMetadata } from './types'
|
|
51
52
|
import {
|
|
@@ -265,7 +266,12 @@ function OneToManyRelation({
|
|
|
265
266
|
// Hide the FK and every scope column — they're fixed for this parent and
|
|
266
267
|
// would just render the same value on every row.
|
|
267
268
|
const hidden = new Set([foreignKey, ...Object.keys(filters || {}), ...hiddenColumns])
|
|
268
|
-
|
|
269
|
+
// isColumnVisibleInLineSubtable additionally drops `hidden`/table-scoped
|
|
270
|
+
// columns AND the audit/system noise (created_by, timestamps, org_id)
|
|
271
|
+
// that's redundant under a parent record — see column-visibility.ts.
|
|
272
|
+
return metadata.columns.filter(
|
|
273
|
+
c => !hidden.has(c.key) && isColumnVisibleInLineSubtable(c),
|
|
274
|
+
)
|
|
269
275
|
}, [metadata, foreignKey, filtersKey, hiddenColumns])
|
|
270
276
|
|
|
271
277
|
// Reuse the EXACT column factory the main `<DynamicTable>` uses so each cell
|
package/src/index.ts
CHANGED
|
@@ -282,6 +282,9 @@ export {
|
|
|
282
282
|
} from './model-extension-registry'
|
|
283
283
|
export {
|
|
284
284
|
isColumnVisibleInTable,
|
|
285
|
+
isColumnVisibleInModal,
|
|
286
|
+
isColumnVisibleInLineSubtable,
|
|
287
|
+
AUDIT_SUBTABLE_COLUMN_KEYS,
|
|
285
288
|
getSearchableColumnKeys,
|
|
286
289
|
} from './column-visibility'
|
|
287
290
|
export {
|