@asteby/metacore-runtime-react 37.0.2 → 37.0.3

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # @asteby/metacore-runtime-react
2
2
 
3
+ ## 37.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 46a9505: List/board honor Column.visible_when against locked defaultFilters / URL scope (CxC hides Proveedor); AddonLoader retries transient remoteEntry 502s.
8
+
3
9
  ## 37.0.2
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"addon-loader.d.ts","sourceRoot":"","sources":["../src/addon-loader.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAc3E,MAAM,WAAW,gBAAgB;IAC7B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAA;IACX,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,GAAG,EAAE,QAAQ,CAAA;IACb;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAA;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AA4DD,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,GAAG,EACH,MAAqB,EACrB,GAAG,EACH,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAe,EACf,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,GACX,EAAE,gBAAgB,sCAmElB"}
1
+ {"version":3,"file":"addon-loader.d.ts","sourceRoot":"","sources":["../src/addon-loader.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAc3E,MAAM,WAAW,gBAAgB;IAC7B,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAA;IACb,+EAA+E;IAC/E,GAAG,EAAE,MAAM,CAAA;IACX,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,GAAG,EAAE,QAAQ,CAAA;IACb;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAA;IACvB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7B;AAwED,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,GAAG,EACH,MAAqB,EACrB,GAAG,EACH,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAe,EACf,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,GACX,EAAE,gBAAgB,sCAmElB"}
@@ -33,20 +33,28 @@ function isRuntimeNotReady(e) {
33
33
  const msg = e instanceof Error ? e.message : String(e);
34
34
  return msg.includes('#RUNTIME-009') || msg.includes('call createInstance');
35
35
  }
36
- // Retry an operation that may hit the boot race above. ~10 attempts × 60ms ≈
37
- // 600ms worst case — generous for the host init, imperceptible in the common
38
- // case (first attempt succeeds). Non-RUNTIME-009 errors (bad URL, 404, no
39
- // export) rethrow immediately so genuine failures still surface fast.
40
- async function withRuntimeReady(op) {
41
- const maxAttempts = 10;
36
+ /** Transient network / gateway failures while the host API is restarting. */
37
+ function isTransientRemoteLoadError(e) {
38
+ if (isRuntimeNotReady(e))
39
+ return true;
40
+ const msg = e instanceof Error ? e.message : String(e);
41
+ return (/failed to fetch|networkerror|load failed|502|503|504|ERR_CONNECTION_REFUSED|ECONNREFUSED|Outdated Optimize Dep/i.test(msg) ||
42
+ // MF wraps fetch failures variously
43
+ /ScriptExternalLoadError|Loading script failed|remoteEntry/i.test(msg));
44
+ }
45
+ // Retry host-boot races (RUNTIME-009) and brief API blips (502 while backend
46
+ // SyncAll is still running). Permanent errors (404, missing register) fail fast.
47
+ async function withRemoteLoadRetry(op) {
48
+ const maxAttempts = 8;
42
49
  for (let attempt = 1;; attempt++) {
43
50
  try {
44
51
  return await op();
45
52
  }
46
53
  catch (e) {
47
- if (!isRuntimeNotReady(e) || attempt >= maxAttempts)
54
+ if (!isTransientRemoteLoadError(e) || attempt >= maxAttempts)
48
55
  throw e;
49
- await sleep(60);
56
+ // 80, 160, 320… capped — ~3s worst case for API restart
57
+ await sleep(Math.min(80 * 2 ** (attempt - 1), 800));
50
58
  }
51
59
  }
52
60
  }
@@ -55,10 +63,10 @@ async function loadAddon(scope, url, module) {
55
63
  // fetches the new remoteEntry. `force: true` wipes that remote's module
56
64
  // cache — without it, loadRemote would keep serving the previous bundle.
57
65
  if (shouldReregisterRemote(scope, url)) {
58
- await withRuntimeReady(() => registerRemotes([{ name: scope, entry: url, type: 'module' }], { force: true }));
66
+ await withRemoteLoadRetry(() => registerRemotes([{ name: scope, entry: url, type: 'module' }], { force: true }));
59
67
  markRemoteRegistered(scope, url);
60
68
  }
61
- return withRuntimeReady(() => loadRemote(remoteId(scope, module)));
69
+ return withRemoteLoadRetry(() => loadRemote(remoteId(scope, module)));
62
70
  }
63
71
  export function AddonLoader({ scope, url, module = './register', api, hostRegistry, addonKey, unbindKey, fallback = null, onReady, onError, layout, children, }) {
64
72
  const [status, setStatus] = useState('loading');
@@ -122,6 +122,33 @@ export declare function getVisibleWhen(field: {
122
122
  * `getVisibleWhen` to normalize first.
123
123
  */
124
124
  export declare function evaluateVisibleWhen(cond: VisibleWhen | null | undefined, formValues: Record<string, any> | null | undefined): boolean;
125
+ /**
126
+ * Strip a DynamicTable / URL filter token down to the comparable scalar the
127
+ * kernel `visible_when.equals` / `.in` predicates expect.
128
+ *
129
+ * `eq:customer` → `customer`, bare `customer` stays, `in:a,b` keeps the raw
130
+ * multi-value (list-scope only gates on known single-eq scopes today).
131
+ */
132
+ export declare function scopeValueFromFilterToken(raw: unknown): string;
133
+ /**
134
+ * Flat "known field → value" map for list/board surfaces. Built from locked
135
+ * `defaultFilters` (nav / branch scope) plus active `dynamicFilters`. Only
136
+ * fields present here are considered known — see
137
+ * `evaluateVisibleWhenForListScope`.
138
+ */
139
+ export declare function buildListScopeValues(defaultFilters?: Record<string, unknown> | null, dynamicFilters?: Record<string, string[] | undefined> | null): Record<string, string>;
140
+ /**
141
+ * List/board variant of `evaluateVisibleWhen`.
142
+ *
143
+ * Forms always have a live sibling value (or ''). Lists often do not — a
144
+ * mixed AccountStatement table has no single `party_type`. Hiding every
145
+ * `visible_when` column when the governing field is unknown would wipe both
146
+ * Cliente and Proveedor on the unscoped view. Rule: if the governing field is
147
+ * not in `scope` (or is empty), keep the column; once the scope pins it
148
+ * (sidebar locked_scope / defaultFilters / a single-eq chip), apply the same
149
+ * predicate as the form.
150
+ */
151
+ export declare function evaluateVisibleWhenForListScope(cond: VisibleWhen | null | undefined, scope: Record<string, any> | null | undefined): boolean;
125
152
  /**
126
153
  * Reads a field's enriched options-resolution config, tolerating the camelCase
127
154
  * `optionsConfig` (authored SDK shape) and the snake_case `options_config` the
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-form-schema.d.ts","sourceRoot":"","sources":["../src/dynamic-form-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-form-schema.d.ts","sourceRoot":"","sources":["../src/dynamic-form-schema.ts"],"names":[],"mappings":"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"}
@@ -355,6 +355,85 @@ export function evaluateVisibleWhen(cond, formValues) {
355
355
  // Named a field but declared no comparison → nothing to gate on.
356
356
  return true;
357
357
  }
358
+ /**
359
+ * Strip a DynamicTable / URL filter token down to the comparable scalar the
360
+ * kernel `visible_when.equals` / `.in` predicates expect.
361
+ *
362
+ * `eq:customer` → `customer`, bare `customer` stays, `in:a,b` keeps the raw
363
+ * multi-value (list-scope only gates on known single-eq scopes today).
364
+ */
365
+ export function scopeValueFromFilterToken(raw) {
366
+ if (raw == null)
367
+ return '';
368
+ const s = String(raw);
369
+ const i = s.indexOf(':');
370
+ if (i <= 0)
371
+ return s;
372
+ const op = s.slice(0, i).toLowerCase();
373
+ const rest = s.slice(i + 1);
374
+ if (op === 'eq' ||
375
+ op === 'neq' ||
376
+ op === 'gt' ||
377
+ op === 'gte' ||
378
+ op === 'lt' ||
379
+ op === 'lte' ||
380
+ op === 'like' ||
381
+ op === 'ilike' ||
382
+ op === 'contains') {
383
+ return rest;
384
+ }
385
+ return s;
386
+ }
387
+ /**
388
+ * Flat "known field → value" map for list/board surfaces. Built from locked
389
+ * `defaultFilters` (nav / branch scope) plus active `dynamicFilters`. Only
390
+ * fields present here are considered known — see
391
+ * `evaluateVisibleWhenForListScope`.
392
+ */
393
+ export function buildListScopeValues(defaultFilters, dynamicFilters) {
394
+ const out = {};
395
+ if (defaultFilters) {
396
+ for (const [key, value] of Object.entries(defaultFilters)) {
397
+ const v = scopeValueFromFilterToken(value);
398
+ if (v !== '')
399
+ out[key] = v;
400
+ }
401
+ }
402
+ if (dynamicFilters) {
403
+ for (const [key, values] of Object.entries(dynamicFilters)) {
404
+ if (defaultFilters && key in defaultFilters)
405
+ continue;
406
+ if (!values || values.length !== 1)
407
+ continue;
408
+ const v = scopeValueFromFilterToken(values[0]);
409
+ if (v !== '')
410
+ out[key] = v;
411
+ }
412
+ }
413
+ return out;
414
+ }
415
+ /**
416
+ * List/board variant of `evaluateVisibleWhen`.
417
+ *
418
+ * Forms always have a live sibling value (or ''). Lists often do not — a
419
+ * mixed AccountStatement table has no single `party_type`. Hiding every
420
+ * `visible_when` column when the governing field is unknown would wipe both
421
+ * Cliente and Proveedor on the unscoped view. Rule: if the governing field is
422
+ * not in `scope` (or is empty), keep the column; once the scope pins it
423
+ * (sidebar locked_scope / defaultFilters / a single-eq chip), apply the same
424
+ * predicate as the form.
425
+ */
426
+ export function evaluateVisibleWhenForListScope(cond, scope) {
427
+ if (!cond || typeof cond.field !== 'string' || cond.field.trim() === '')
428
+ return true;
429
+ const key = cond.field.trim();
430
+ if (!scope || !(key in scope))
431
+ return true;
432
+ const raw = scope[key];
433
+ if (raw == null || String(raw) === '')
434
+ return true;
435
+ return evaluateVisibleWhen(cond, scope);
436
+ }
358
437
  /**
359
438
  * Reads a field's enriched options-resolution config, tolerating the camelCase
360
439
  * `optionsConfig` (authored SDK shape) and the snake_case `options_config` the
@@ -40,13 +40,6 @@ export interface DynamicTableProps {
40
40
  */
41
41
  onRowClick?: (row: any) => void;
42
42
  refreshTrigger?: any;
43
- /**
44
- * Refetch when the host's realtime client reports a data event for this
45
- * model (created/updated/deleted by anyone in the org, or a `resync`).
46
- * Off by default; `<RealtimeProvider defaultRealtime>` turns it on for
47
- * every table, and an explicit prop always wins. No-op without a client.
48
- */
49
- realtime?: boolean;
50
43
  defaultFilters?: Record<string, any>;
51
44
  extraColumns?: ColumnDef<any>[];
52
45
  /**
@@ -91,5 +84,5 @@ export interface DynamicTableProps {
91
84
  */
92
85
  infiniteScroll?: boolean;
93
86
  }
94
- export declare function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync, hideImport, hideExport, hiddenColumns, allowedActionKeys, onAction, onRowClick, refreshTrigger, realtime: realtimeProp, defaultFilters, extraColumns, getDynamicColumns, timeZone, currency, pagination: paginationMode, infiniteScroll: infiniteScrollProp, }: DynamicTableProps): import("react").JSX.Element;
87
+ export declare function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync, hideImport, hideExport, hiddenColumns, allowedActionKeys, onAction, onRowClick, refreshTrigger, defaultFilters, extraColumns, getDynamicColumns, timeZone, currency, pagination: paginationMode, infiniteScroll: infiniteScrollProp, }: DynamicTableProps): import("react").JSX.Element;
95
88
  //# sourceMappingURL=dynamic-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-table.d.ts","sourceRoot":"","sources":["../src/dynamic-table.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAKH,KAAK,SAAS,EAajB,MAAM,uBAAuB,CAAA;AAiC9B,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AA4FnF,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/B,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,aAAoB,EACpB,UAAU,EACV,UAAU,EACV,aAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,cAAc,EACd,QAAQ,EAAE,YAAY,EACtB,cAAc,EACd,YAAiB,EACjB,iBAA4C,EAC5C,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,kBAA0B,GAC7C,EAAE,iBAAiB,+BAuwCnB"}
1
+ {"version":3,"file":"dynamic-table.d.ts","sourceRoot":"","sources":["../src/dynamic-table.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAKH,KAAK,SAAS,EAajB,MAAM,uBAAuB,CAAA;AAgC9B,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAkGnF,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC/B,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,aAAoB,EACpB,UAAU,EACV,UAAU,EACV,aAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAiB,EACjB,iBAA4C,EAC5C,QAAQ,EACR,QAAQ,EACR,UAAU,EAAE,cAAc,EAC1B,cAAc,EAAE,kBAA0B,GAC7C,EAAE,iBAAiB,+BAw0CnB"}
@@ -23,7 +23,6 @@ import { toast } from 'sonner';
23
23
  import { Progress } from './dialogs/_primitives';
24
24
  import { useMetadataCache } from './metadata-cache';
25
25
  import { useApi, useCurrentBranch } from './api-context';
26
- import { useRealtimeDefault, useRealtimeTick } from './realtime-context';
27
26
  import { defaultGetDynamicColumns, DATE_CELL_TYPES, aggregateOf, formatAggregateTotal } from './dynamic-columns';
28
27
  import { useFacetLoaders, isLongTextColumn } from './use-facet-loaders';
29
28
  import { translateOptionLabels } from './filter-chips';
@@ -35,6 +34,7 @@ import { useCan, usePermissionsActive, gateTableMetadata } from './permissions-c
35
34
  import { useDynamicRowActions } from './dynamic-row-actions';
36
35
  import { ExportDialog } from './dialogs/export';
37
36
  import { ImportDialog } from './dialogs/import';
37
+ import { buildListScopeValues, evaluateVisibleWhenForListScope, getVisibleWhen, scopeValueFromFilterToken, } from './dynamic-form-schema';
38
38
  // ---------------------------------------------------------------------------
39
39
  // Row-data cache (perceived performance).
40
40
  //
@@ -105,20 +105,13 @@ function writeStoredPageSize(model, size) {
105
105
  // quota / private mode — persistence is a nicety, never fatal
106
106
  }
107
107
  }
108
- export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync = true, hideImport, hideExport, hiddenColumns = [], allowedActionKeys, onAction, onRowClick, refreshTrigger, realtime: realtimeProp, defaultFilters, extraColumns = [], getDynamicColumns = defaultGetDynamicColumns, timeZone, currency, pagination: paginationMode, infiniteScroll: infiniteScrollProp = false, }) {
108
+ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync = true, hideImport, hideExport, hiddenColumns = [], allowedActionKeys, onAction, onRowClick, refreshTrigger, defaultFilters, extraColumns = [], getDynamicColumns = defaultGetDynamicColumns, timeZone, currency, pagination: paginationMode, infiniteScroll: infiniteScrollProp = false, }) {
109
109
  // The explicit `pagination` prop wins; the legacy `infiniteScroll` boolean
110
110
  // still selects the mode when `pagination` is absent (back-compat).
111
111
  const infiniteScroll = paginationMode ? paginationMode === 'infinite' : infiniteScrollProp;
112
112
  const { t, i18n } = useTranslation();
113
113
  const api = useApi();
114
114
  const currentBranch = useCurrentBranch();
115
- // Realtime refetch (opt-in): a debounced counter that bumps on every
116
- // DATA_EVENT for this model and rides the same deps as `refreshTrigger`.
117
- const realtimeDefault = useRealtimeDefault();
118
- const realtimeTick = useRealtimeTick({
119
- models: [model],
120
- enabled: realtimeProp ?? realtimeDefault,
121
- });
122
115
  const prevBranchId = useRef(currentBranch?.id);
123
116
  const { getMetadata, setMetadata: cacheMetadata } = useMetadataCache();
124
117
  const cachedMeta = getMetadata(model);
@@ -345,6 +338,24 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
345
338
  else
346
339
  params.set(`f_${key}`, `in:${values.join(',')}`);
347
340
  });
341
+ // Re-pin locked scope into the URL so sidebar matching + deep-links keep
342
+ // working after "Limpiar filtros" (those keys are not in dynamicFilters).
343
+ if (defaultFilters) {
344
+ Object.entries(defaultFilters).forEach(([key, value]) => {
345
+ params.set(`f_${key}`, internalValueToUrl(String(value ?? '')));
346
+ });
347
+ }
348
+ // Preserve f_* already in the location that we did not rebuild above.
349
+ // Sidebar deep-links (CxC→CxP) push f_party_type=eq:supplier before React
350
+ // re-renders with matching defaultFilters; without this carry-through the
351
+ // write effect races and strips the filter down to bare ?view=list.
352
+ current.forEach((value, key) => {
353
+ if (!key.startsWith('f_'))
354
+ return;
355
+ if (params.has(key))
356
+ return;
357
+ params.set(key, value);
358
+ });
348
359
  const search = params.toString();
349
360
  // If what we'd write is semantically identical to what's already in the
350
361
  // bar (only key order / colon-encoding differ from the router's form),
@@ -537,6 +548,58 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
537
548
  // host to flip a flag per view.
538
549
  const importEnabled = !hideImport && (viewMetadata?.canImport ?? Boolean(viewMetadata?.import?.columns?.length));
539
550
  const exportEnabled = !hideExport && Boolean(viewMetadata?.canExport);
551
+ const listScopeValues = useMemo(() => {
552
+ const base = buildListScopeValues(defaultFilters, dynamicFilters);
553
+ // Deep-links pin f_* in the URL before defaultFilters / nav matching
554
+ // catch up; adopt single-eq scope values so visible_when columns hide
555
+ // on first paint (CxC hides Proveedor without waiting for navFilter).
556
+ if (!enableUrlSync || typeof window === 'undefined')
557
+ return base;
558
+ const params = new URLSearchParams(window.location.search);
559
+ const fromUrl = {};
560
+ params.forEach((raw, key) => {
561
+ if (!key.startsWith('f_'))
562
+ return;
563
+ const col = key.slice(2);
564
+ if (!col || col in base)
565
+ return;
566
+ const v = scopeValueFromFilterToken(raw);
567
+ if (!v)
568
+ return;
569
+ // Multi-value / range tokens are not a single list-scope pin.
570
+ if (v.includes(',') || /^(in|not_in|range|gte|lte):/i.test(String(raw)))
571
+ return;
572
+ fromUrl[col] = v;
573
+ });
574
+ return Object.keys(fromUrl).length === 0 ? base : { ...fromUrl, ...base };
575
+ }, [defaultFilters, dynamicFilters, enableUrlSync, urlSynced]);
576
+ // Columns whose kernel `visible_when` fails against the known list scope
577
+ // (locked nav defaultFilters, single-eq chips). Host `hiddenColumns` still
578
+ // wins; this is the scalable path so CxC hides Proveedor without each nav
579
+ // item re-listing every allowed column.
580
+ const scopeHiddenColumns = useMemo(() => {
581
+ const cols = (viewMetadata?.columns ?? metadata?.columns ?? []);
582
+ if (cols.length === 0 || Object.keys(listScopeValues).length === 0)
583
+ return [];
584
+ const hidden = [];
585
+ for (const col of cols) {
586
+ const key = col.key;
587
+ if (!key)
588
+ continue;
589
+ if (!evaluateVisibleWhenForListScope(getVisibleWhen(col), listScopeValues)) {
590
+ hidden.push(key);
591
+ }
592
+ }
593
+ return hidden;
594
+ }, [metadata, viewMetadata, listScopeValues]);
595
+ const effectiveHiddenColumns = useMemo(() => {
596
+ if (scopeHiddenColumns.length === 0)
597
+ return hiddenColumns;
598
+ const set = new Set(hiddenColumns);
599
+ for (const k of scopeHiddenColumns)
600
+ set.add(k);
601
+ return Array.from(set);
602
+ }, [hiddenColumns, scopeHiddenColumns]);
540
603
  const buildFilterParams = useCallback(() => {
541
604
  const params = {};
542
605
  if (sorting.length > 0) {
@@ -553,10 +616,14 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
553
616
  }
554
617
  // searchableKeys === [] → drop the search request entirely
555
618
  }
556
- columnFilters.forEach((filter) => { params[`f_${filter.id}`] = filter.value; });
557
- if (defaultFilters)
558
- Object.entries(defaultFilters).forEach(([key, value]) => { params[`f_${key}`] = value; });
619
+ columnFilters.forEach((filter) => {
620
+ if (defaultFilters && filter.id in defaultFilters)
621
+ return;
622
+ params[`f_${filter.id}`] = filter.value;
623
+ });
559
624
  Object.entries(dynamicFilters).forEach(([key, values]) => {
625
+ if (defaultFilters && key in defaultFilters)
626
+ return;
560
627
  if (values.length === 0)
561
628
  return;
562
629
  const gteVal = values.find(v => v.startsWith('GTE:'));
@@ -572,6 +639,9 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
572
639
  else
573
640
  params[`f_${key}`] = `IN:${values.join(',')}`;
574
641
  });
642
+ // Locked scope last so it always wins over stale dynamic/column filters.
643
+ if (defaultFilters)
644
+ Object.entries(defaultFilters).forEach(([key, value]) => { params[`f_${key}`] = value; });
575
645
  if (dateRange?.from) {
576
646
  const startDate = format(dateRange.from, 'yyyy-MM-dd');
577
647
  const endDate = dateRange.to ? format(dateRange.to, 'yyyy-MM-dd') : startDate;
@@ -619,8 +689,7 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
619
689
  finally {
620
690
  setLoadingData(false);
621
691
  }
622
- // eslint-disable-next-line react-hooks/exhaustive-deps
623
- }, [model, metadata, pagination, buildFilterParams, refreshTrigger, realtimeTick, endpoint, currentBranch?.id, api, enableUrlSync]);
692
+ }, [model, metadata, pagination, buildFilterParams, refreshTrigger, endpoint, currentBranch?.id, api, enableUrlSync]);
624
693
  // Columns whose metadata opts into a footer total (display_config.aggregate
625
694
  // → styleConfig.aggregate). When empty, no footer row is rendered and no
626
695
  // aggregate request is made.
@@ -781,9 +850,8 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
781
850
  // matching the classic path (fetchData carries refreshTrigger in its
782
851
  // deps). Without it the comment above lied: infinite lists silently
783
852
  // failed to reload after a create ("a veces no recarga la tabla").
784
- // realtimeTick plays the same role for data events (see the `realtime` prop).
785
853
  // eslint-disable-next-line react-hooks/exhaustive-deps
786
- }, [infiniteScroll, metadata, filterSignature, refreshTrigger, realtimeTick]);
854
+ }, [infiniteScroll, metadata, filterSignature, refreshTrigger]);
787
855
  const handleRefresh = useCallback(() => {
788
856
  // Infinite mode owns its own list: refresh reloads page 1 and drops the
789
857
  // accumulated pages (a classic fetchData would collapse it to one small
@@ -845,9 +913,12 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
845
913
  handleRefresh();
846
914
  };
847
915
  const handleDynamicFilterChange = useCallback((filterKey, values) => {
916
+ // Locked scope (nav / branch defaultFilters) cannot be changed from the UI.
917
+ if (defaultFilters && filterKey in defaultFilters)
918
+ return;
848
919
  setDynamicFilters((prev) => ({ ...prev, [filterKey]: values }));
849
920
  setPagination((prev) => ({ ...prev, pageIndex: 0 }));
850
- }, []);
921
+ }, [defaultFilters]);
851
922
  // Same facet loader machinery the board uses, so a text column filters
852
923
  // identically in the table header and the kanban Sheet (the host's
853
924
  // getDynamicColumns forwards `loadOptions` into the column meta). Facets base
@@ -873,6 +944,11 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
873
944
  // `filterable: true` — keeps the kernel API minimal (one flag on the
874
945
  // column) while still rendering the FilterableColumnHeader.
875
946
  for (const f of metadata.filters ?? []) {
947
+ const filterCol = f.column || f.key;
948
+ if (defaultFilters && filterCol in defaultFilters)
949
+ continue;
950
+ if (effectiveHiddenColumns.includes(filterCol))
951
+ continue;
876
952
  let fType = f.type;
877
953
  let options = [];
878
954
  if (f.options && f.options.length > 0) {
@@ -918,6 +994,10 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
918
994
  for (const c of metadata.columns ?? []) {
919
995
  if (!c.filterable || map.has(c.key))
920
996
  continue;
997
+ if (defaultFilters && c.key in defaultFilters)
998
+ continue;
999
+ if (effectiveHiddenColumns.includes(c.key))
1000
+ continue;
921
1001
  const hasStaticOptions = (c.options?.length ?? 0) > 0;
922
1002
  const hasEndpoint = !!c.searchEndpoint;
923
1003
  const isRelation = !!c.ref || c.filterType === 'dynamic_select';
@@ -987,7 +1067,7 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
987
1067
  });
988
1068
  }
989
1069
  return map;
990
- }, [metadata, filterOptionsMap, dynamicFilters, handleDynamicFilterChange, facetsBase, getFacetLoader, facetOptions, t]);
1070
+ }, [metadata, filterOptionsMap, dynamicFilters, handleDynamicFilterChange, facetsBase, getFacetLoader, facetOptions, t, defaultFilters, effectiveHiddenColumns]);
991
1071
  // Prewarm every facet field once the configs settle, so a text column's
992
1072
  // header filter opens instantly with values + counts (same as the kanban).
993
1073
  const facetFieldsSig = useMemo(() => {
@@ -1025,11 +1105,11 @@ export function DynamicTable({ model, endpoint, mutationEndpoint, enableUrlSync
1025
1105
  return actions === viewMetadata.actions ? viewMetadata : { ...viewMetadata, actions };
1026
1106
  })();
1027
1107
  const baseColumns = getDynamicColumns(rowMetadata, handleInternalAction, t, i18n.language, columnFilterConfigs, timeZone, currency);
1028
- const filteredBase = baseColumns.filter((col) => !hiddenColumns.includes(col.id));
1108
+ const filteredBase = baseColumns.filter((col) => !effectiveHiddenColumns.includes(col.id));
1029
1109
  const actionsCol = filteredBase.find((c) => c.id === 'actions');
1030
1110
  const otherCols = filteredBase.filter((c) => c.id !== 'actions');
1031
1111
  return [...otherCols, ...extraColumns, ...(actionsCol ? [actionsCol] : [])];
1032
- }, [viewMetadata, handleInternalAction, hiddenColumns, allowedActionKeys, extraColumns, t, i18n.language, columnFilterConfigs, getDynamicColumns, timeZone, currency]);
1112
+ }, [viewMetadata, handleInternalAction, effectiveHiddenColumns, allowedActionKeys, extraColumns, t, i18n.language, columnFilterConfigs, getDynamicColumns, timeZone, currency]);
1033
1113
  const filters = useMemo(() => [], []);
1034
1114
  const table = useReactTable({
1035
1115
  data,
package/dist/index.d.ts CHANGED
@@ -70,7 +70,7 @@ export { registerModelExtension, getModelExtension, clearModelExtensions, type M
70
70
  export { isColumnVisibleInTable, isColumnVisibleInModal, isColumnVisibleInLineSubtable, AUDIT_SUBTABLE_COLUMN_KEYS, getSearchableColumnKeys, } from './column-visibility';
71
71
  export { useOptionsResolver, projectOption, type ResolvedOption, type OptionsMeta, type UseOptionsResolverArgs, type UseOptionsResolverResult, } from './use-options-resolver';
72
72
  export { setOrgConfigBridge, getOrgConfigBridge, resolveValidatorToken, type OrgConfigBridge, } from './use-org-config-bridge';
73
- export { registerValidator, getDependsOn, resolveDependsValue, getOptionsConfig, resolveOptionsSource, getVisibleWhen, evaluateVisibleWhen, } from './dynamic-form-schema';
73
+ export { registerValidator, getDependsOn, resolveDependsValue, getOptionsConfig, resolveOptionsSource, getVisibleWhen, evaluateVisibleWhen, scopeValueFromFilterToken, buildListScopeValues, evaluateVisibleWhenForListScope, } from './dynamic-form-schema';
74
74
  export { ActivityValueRenderer, type ActivityValueRendererProps, } from './activity-value-renderer';
75
75
  export { ActivityDiff, type ActivityEvent, type ActivityDiffProps, } from './activity-diff';
76
76
  export { RecordHistory, type RecordHistoryProps, } from './record-history';
@@ -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
@@ -70,7 +70,7 @@ export { registerModelExtension, getModelExtension, clearModelExtensions, } from
70
70
  export { isColumnVisibleInTable, isColumnVisibleInModal, isColumnVisibleInLineSubtable, AUDIT_SUBTABLE_COLUMN_KEYS, getSearchableColumnKeys, } from './column-visibility';
71
71
  export { useOptionsResolver, projectOption, } from './use-options-resolver';
72
72
  export { setOrgConfigBridge, getOrgConfigBridge, resolveValidatorToken, } from './use-org-config-bridge';
73
- export { registerValidator, getDependsOn, resolveDependsValue, getOptionsConfig, resolveOptionsSource, getVisibleWhen, evaluateVisibleWhen, } from './dynamic-form-schema';
73
+ export { registerValidator, getDependsOn, resolveDependsValue, getOptionsConfig, resolveOptionsSource, getVisibleWhen, evaluateVisibleWhen, scopeValueFromFilterToken, buildListScopeValues, evaluateVisibleWhenForListScope, } from './dynamic-form-schema';
74
74
  export { ActivityValueRenderer, } from './activity-value-renderer';
75
75
  export { ActivityDiff, } from './activity-diff';
76
76
  export { RecordHistory, } from './record-history';
package/dist/types.d.ts CHANGED
@@ -309,12 +309,13 @@ export interface ColumnDefinition {
309
309
  /** snake_case alias served by the kernel for `itemFields`. */
310
310
  item_fields?: ColumnItemField[];
311
311
  /**
312
- * Conditional visibility in the create/edit modal: render this field only
313
- * when a sibling field's current value matches the predicate. Mirrors the
314
- * kernel v3 `Column.visible_when` (projected onto the served ColumnDef).
315
- * Tolerates the camelCase alias. Absent = always visible; a hidden field is
316
- * skipped by the required-gate so it never blocks submit. See
317
- * `evaluateVisibleWhen`.
312
+ * Conditional visibility (kernel v3 `Column.visible_when`):
313
+ * - create/edit modal `evaluateVisibleWhen` against live form values
314
+ * - list/board `evaluateVisibleWhenForListScope` against known filter
315
+ * scope (`defaultFilters` / single-eq chips), so a locked nav scope
316
+ * like `party_type=customer` hides `supplier_id` without each nav
317
+ * item re-declaring a full column allowlist.
318
+ * Tolerates the camelCase alias. Absent = always visible.
318
319
  */
319
320
  visible_when?: VisibleWhen;
320
321
  /** camelCase alias for `visible_when`. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asteby/metacore-runtime-react",
3
- "version": "37.0.2",
3
+ "version": "37.0.3",
4
4
  "description": "React runtime for metacore hosts — renders addon contributions dynamically",
5
5
  "repository": {
6
6
  "type": "git",
@@ -67,8 +67,8 @@
67
67
  "typescript": "^6.0.0",
68
68
  "vitest": "^4.0.0",
69
69
  "zustand": "^5.0.0",
70
- "@asteby/metacore-ui": "2.17.3",
71
- "@asteby/metacore-sdk": "3.7.0"
70
+ "@asteby/metacore-sdk": "3.7.0",
71
+ "@asteby/metacore-ui": "2.17.3"
72
72
  },
73
73
  "scripts": {
74
74
  "build": "tsc -p tsconfig.json",
@@ -1,11 +1,19 @@
1
1
  import { describe, it, expect } from 'vitest'
2
- import { evaluateVisibleWhen, getVisibleWhen } from '../dynamic-form-schema'
2
+ import {
3
+ evaluateVisibleWhen,
4
+ evaluateVisibleWhenForListScope,
5
+ buildListScopeValues,
6
+ scopeValueFromFilterToken,
7
+ getVisibleWhen,
8
+ } from '../dynamic-form-schema'
3
9
  import type { VisibleWhen } from '../types'
4
10
 
5
11
  // The discount_rules use case: a `rule_scope` field decides which picker shows.
6
12
  const equalsProduct: VisibleWhen = { field: 'rule_scope', equals: 'product' }
7
13
  const inCategory: VisibleWhen = { field: 'rule_scope', in: ['category'] }
8
14
  const inMulti: VisibleWhen = { field: 'scope', in: ['a', 'b'] }
15
+ const customerOnly: VisibleWhen = { field: 'party_type', equals: 'customer' }
16
+ const supplierOnly: VisibleWhen = { field: 'party_type', equals: 'supplier' }
9
17
 
10
18
  describe('evaluateVisibleWhen', () => {
11
19
  it('no predicate → always visible', () => {
@@ -61,3 +69,35 @@ describe('getVisibleWhen', () => {
61
69
  expect(getVisibleWhen({ visible_when: { equals: 'x' } as unknown as VisibleWhen })).toBeUndefined()
62
70
  })
63
71
  })
72
+
73
+ describe('scopeValueFromFilterToken / buildListScopeValues', () => {
74
+ it('strips eq: and leaves bare values', () => {
75
+ expect(scopeValueFromFilterToken('eq:customer')).toBe('customer')
76
+ expect(scopeValueFromFilterToken('customer')).toBe('customer')
77
+ expect(scopeValueFromFilterToken('IN:a,b')).toBe('IN:a,b')
78
+ })
79
+
80
+ it('merges defaultFilters over dynamic and skips multi-value chips', () => {
81
+ expect(
82
+ buildListScopeValues(
83
+ { party_type: 'eq:customer', branch_id: 'eq:b1' },
84
+ { party_type: ['supplier'], status: ['open', 'draft'], warehouse: ['w1'] },
85
+ ),
86
+ ).toEqual({ party_type: 'customer', branch_id: 'b1', warehouse: 'w1' })
87
+ })
88
+ })
89
+
90
+ describe('evaluateVisibleWhenForListScope', () => {
91
+ it('keeps columns when the governing field is unknown (mixed list)', () => {
92
+ expect(evaluateVisibleWhenForListScope(customerOnly, {})).toBe(true)
93
+ expect(evaluateVisibleWhenForListScope(supplierOnly, {})).toBe(true)
94
+ expect(evaluateVisibleWhenForListScope(customerOnly, { other: 'x' })).toBe(true)
95
+ })
96
+
97
+ it('hides the opposite party column when nav locks party_type', () => {
98
+ expect(evaluateVisibleWhenForListScope(customerOnly, { party_type: 'customer' })).toBe(true)
99
+ expect(evaluateVisibleWhenForListScope(supplierOnly, { party_type: 'customer' })).toBe(false)
100
+ expect(evaluateVisibleWhenForListScope(customerOnly, { party_type: 'supplier' })).toBe(false)
101
+ expect(evaluateVisibleWhenForListScope(supplierOnly, { party_type: 'supplier' })).toBe(true)
102
+ })
103
+ })
@@ -93,18 +93,30 @@ function isRuntimeNotReady(e: unknown): boolean {
93
93
  return msg.includes('#RUNTIME-009') || msg.includes('call createInstance')
94
94
  }
95
95
 
96
- // Retry an operation that may hit the boot race above. ~10 attempts × 60ms ≈
97
- // 600ms worst case — generous for the host init, imperceptible in the common
98
- // case (first attempt succeeds). Non-RUNTIME-009 errors (bad URL, 404, no
99
- // export) rethrow immediately so genuine failures still surface fast.
100
- async function withRuntimeReady<T>(op: () => T | Promise<T>): Promise<T> {
101
- const maxAttempts = 10
96
+ /** Transient network / gateway failures while the host API is restarting. */
97
+ function isTransientRemoteLoadError(e: unknown): boolean {
98
+ if (isRuntimeNotReady(e)) return true
99
+ const msg = e instanceof Error ? e.message : String(e)
100
+ return (
101
+ /failed to fetch|networkerror|load failed|502|503|504|ERR_CONNECTION_REFUSED|ECONNREFUSED|Outdated Optimize Dep/i.test(
102
+ msg,
103
+ ) ||
104
+ // MF wraps fetch failures variously
105
+ /ScriptExternalLoadError|Loading script failed|remoteEntry/i.test(msg)
106
+ )
107
+ }
108
+
109
+ // Retry host-boot races (RUNTIME-009) and brief API blips (502 while backend
110
+ // SyncAll is still running). Permanent errors (404, missing register) fail fast.
111
+ async function withRemoteLoadRetry<T>(op: () => T | Promise<T>): Promise<T> {
112
+ const maxAttempts = 8
102
113
  for (let attempt = 1; ; attempt++) {
103
114
  try {
104
115
  return await op()
105
116
  } catch (e) {
106
- if (!isRuntimeNotReady(e) || attempt >= maxAttempts) throw e
107
- await sleep(60)
117
+ if (!isTransientRemoteLoadError(e) || attempt >= maxAttempts) throw e
118
+ // 80, 160, 320… capped — ~3s worst case for API restart
119
+ await sleep(Math.min(80 * 2 ** (attempt - 1), 800))
108
120
  }
109
121
  }
110
122
  }
@@ -118,12 +130,12 @@ async function loadAddon(
118
130
  // fetches the new remoteEntry. `force: true` wipes that remote's module
119
131
  // cache — without it, loadRemote would keep serving the previous bundle.
120
132
  if (shouldReregisterRemote(scope, url)) {
121
- await withRuntimeReady(() =>
133
+ await withRemoteLoadRetry(() =>
122
134
  registerRemotes([{ name: scope, entry: url, type: 'module' }], { force: true }),
123
135
  )
124
136
  markRemoteRegistered(scope, url)
125
137
  }
126
- return withRuntimeReady(() =>
138
+ return withRemoteLoadRetry(() =>
127
139
  loadRemote<AddonRegisterModule>(remoteId(scope, module)),
128
140
  )
129
141
  }
@@ -382,6 +382,87 @@ export function evaluateVisibleWhen(
382
382
  return true
383
383
  }
384
384
 
385
+ /**
386
+ * Strip a DynamicTable / URL filter token down to the comparable scalar the
387
+ * kernel `visible_when.equals` / `.in` predicates expect.
388
+ *
389
+ * `eq:customer` → `customer`, bare `customer` stays, `in:a,b` keeps the raw
390
+ * multi-value (list-scope only gates on known single-eq scopes today).
391
+ */
392
+ export function scopeValueFromFilterToken(raw: unknown): string {
393
+ if (raw == null) return ''
394
+ const s = String(raw)
395
+ const i = s.indexOf(':')
396
+ if (i <= 0) return s
397
+ const op = s.slice(0, i).toLowerCase()
398
+ const rest = s.slice(i + 1)
399
+ if (
400
+ op === 'eq' ||
401
+ op === 'neq' ||
402
+ op === 'gt' ||
403
+ op === 'gte' ||
404
+ op === 'lt' ||
405
+ op === 'lte' ||
406
+ op === 'like' ||
407
+ op === 'ilike' ||
408
+ op === 'contains'
409
+ ) {
410
+ return rest
411
+ }
412
+ return s
413
+ }
414
+
415
+ /**
416
+ * Flat "known field → value" map for list/board surfaces. Built from locked
417
+ * `defaultFilters` (nav / branch scope) plus active `dynamicFilters`. Only
418
+ * fields present here are considered known — see
419
+ * `evaluateVisibleWhenForListScope`.
420
+ */
421
+ export function buildListScopeValues(
422
+ defaultFilters?: Record<string, unknown> | null,
423
+ dynamicFilters?: Record<string, string[] | undefined> | null,
424
+ ): Record<string, string> {
425
+ const out: Record<string, string> = {}
426
+ if (defaultFilters) {
427
+ for (const [key, value] of Object.entries(defaultFilters)) {
428
+ const v = scopeValueFromFilterToken(value)
429
+ if (v !== '') out[key] = v
430
+ }
431
+ }
432
+ if (dynamicFilters) {
433
+ for (const [key, values] of Object.entries(dynamicFilters)) {
434
+ if (defaultFilters && key in defaultFilters) continue
435
+ if (!values || values.length !== 1) continue
436
+ const v = scopeValueFromFilterToken(values[0])
437
+ if (v !== '') out[key] = v
438
+ }
439
+ }
440
+ return out
441
+ }
442
+
443
+ /**
444
+ * List/board variant of `evaluateVisibleWhen`.
445
+ *
446
+ * Forms always have a live sibling value (or ''). Lists often do not — a
447
+ * mixed AccountStatement table has no single `party_type`. Hiding every
448
+ * `visible_when` column when the governing field is unknown would wipe both
449
+ * Cliente and Proveedor on the unscoped view. Rule: if the governing field is
450
+ * not in `scope` (or is empty), keep the column; once the scope pins it
451
+ * (sidebar locked_scope / defaultFilters / a single-eq chip), apply the same
452
+ * predicate as the form.
453
+ */
454
+ export function evaluateVisibleWhenForListScope(
455
+ cond: VisibleWhen | null | undefined,
456
+ scope: Record<string, any> | null | undefined,
457
+ ): boolean {
458
+ if (!cond || typeof cond.field !== 'string' || cond.field.trim() === '') return true
459
+ const key = cond.field.trim()
460
+ if (!scope || !(key in scope)) return true
461
+ const raw = scope[key]
462
+ if (raw == null || String(raw) === '') return true
463
+ return evaluateVisibleWhen(cond, scope)
464
+ }
465
+
385
466
  /**
386
467
  * Reads a field's enriched options-resolution config, tolerating the camelCase
387
468
  * `optionsConfig` (authored SDK shape) and the snake_case `options_config` the
@@ -64,20 +64,25 @@ import { toast } from 'sonner'
64
64
  import { Progress } from './dialogs/_primitives'
65
65
  import { useMetadataCache } from './metadata-cache'
66
66
  import { useApi, useCurrentBranch } from './api-context'
67
- import { useRealtimeDefault, useRealtimeTick } from './realtime-context'
68
67
  import type { ColumnFilterConfig, GetDynamicColumns } from './dynamic-columns-shim'
69
68
  import { defaultGetDynamicColumns, DATE_CELL_TYPES, aggregateOf, formatAggregateTotal } from './dynamic-columns'
70
69
  import { useFacetLoaders, isLongTextColumn } from './use-facet-loaders'
71
70
  import { translateOptionLabels } from './filter-chips'
72
71
  import { dedupeById, useInfiniteScrollSentinel } from './use-infinite-scroll'
73
72
  import { OptionsContext } from './options-context'
74
- import type { TableMetadata, ApiResponse } from './types'
73
+ import type { TableMetadata, ApiResponse, ColumnDefinition } from './types'
75
74
  import { getSearchableColumnKeys } from './column-visibility'
76
75
  import { useDebouncedValue } from './use-debounced-value'
77
76
  import { useCan, usePermissionsActive, gateTableMetadata } from './permissions-context'
78
77
  import { useDynamicRowActions } from './dynamic-row-actions'
79
78
  import { ExportDialog } from './dialogs/export'
80
79
  import { ImportDialog } from './dialogs/import'
80
+ import {
81
+ buildListScopeValues,
82
+ evaluateVisibleWhenForListScope,
83
+ getVisibleWhen,
84
+ scopeValueFromFilterToken,
85
+ } from './dynamic-form-schema'
81
86
 
82
87
  // ---------------------------------------------------------------------------
83
88
  // Row-data cache (perceived performance).
@@ -197,13 +202,6 @@ export interface DynamicTableProps {
197
202
  */
198
203
  onRowClick?: (row: any) => void
199
204
  refreshTrigger?: any
200
- /**
201
- * Refetch when the host's realtime client reports a data event for this
202
- * model (created/updated/deleted by anyone in the org, or a `resync`).
203
- * Off by default; `<RealtimeProvider defaultRealtime>` turns it on for
204
- * every table, and an explicit prop always wins. No-op without a client.
205
- */
206
- realtime?: boolean
207
205
  defaultFilters?: Record<string, any>
208
206
  extraColumns?: ColumnDef<any>[]
209
207
  /**
@@ -261,7 +259,6 @@ export function DynamicTable({
261
259
  onAction,
262
260
  onRowClick,
263
261
  refreshTrigger,
264
- realtime: realtimeProp,
265
262
  defaultFilters,
266
263
  extraColumns = [],
267
264
  getDynamicColumns = defaultGetDynamicColumns,
@@ -276,13 +273,6 @@ export function DynamicTable({
276
273
  const { t, i18n } = useTranslation()
277
274
  const api = useApi()
278
275
  const currentBranch = useCurrentBranch()
279
- // Realtime refetch (opt-in): a debounced counter that bumps on every
280
- // DATA_EVENT for this model and rides the same deps as `refreshTrigger`.
281
- const realtimeDefault = useRealtimeDefault()
282
- const realtimeTick = useRealtimeTick({
283
- models: [model],
284
- enabled: realtimeProp ?? realtimeDefault,
285
- })
286
276
 
287
277
  const prevBranchId = useRef(currentBranch?.id)
288
278
 
@@ -512,6 +502,22 @@ export function DynamicTable({
512
502
  if (values.length === 1) params.set(`f_${key}`, internalValueToUrl(values[0]))
513
503
  else params.set(`f_${key}`, `in:${values.join(',')}`)
514
504
  })
505
+ // Re-pin locked scope into the URL so sidebar matching + deep-links keep
506
+ // working after "Limpiar filtros" (those keys are not in dynamicFilters).
507
+ if (defaultFilters) {
508
+ Object.entries(defaultFilters).forEach(([key, value]) => {
509
+ params.set(`f_${key}`, internalValueToUrl(String(value ?? '')))
510
+ })
511
+ }
512
+ // Preserve f_* already in the location that we did not rebuild above.
513
+ // Sidebar deep-links (CxC→CxP) push f_party_type=eq:supplier before React
514
+ // re-renders with matching defaultFilters; without this carry-through the
515
+ // write effect races and strips the filter down to bare ?view=list.
516
+ current.forEach((value, key) => {
517
+ if (!key.startsWith('f_')) return
518
+ if (params.has(key)) return
519
+ params.set(key, value)
520
+ })
515
521
  const search = params.toString()
516
522
  // If what we'd write is semantically identical to what's already in the
517
523
  // bar (only key order / colon-encoding differ from the router's form),
@@ -695,6 +701,52 @@ export function DynamicTable({
695
701
  !hideImport && (viewMetadata?.canImport ?? Boolean(viewMetadata?.import?.columns?.length))
696
702
  const exportEnabled = !hideExport && Boolean(viewMetadata?.canExport)
697
703
 
704
+ const listScopeValues = useMemo(() => {
705
+ const base = buildListScopeValues(defaultFilters, dynamicFilters)
706
+ // Deep-links pin f_* in the URL before defaultFilters / nav matching
707
+ // catch up; adopt single-eq scope values so visible_when columns hide
708
+ // on first paint (CxC hides Proveedor without waiting for navFilter).
709
+ if (!enableUrlSync || typeof window === 'undefined') return base
710
+ const params = new URLSearchParams(window.location.search)
711
+ const fromUrl: Record<string, string> = {}
712
+ params.forEach((raw, key) => {
713
+ if (!key.startsWith('f_')) return
714
+ const col = key.slice(2)
715
+ if (!col || col in base) return
716
+ const v = scopeValueFromFilterToken(raw)
717
+ if (!v) return
718
+ // Multi-value / range tokens are not a single list-scope pin.
719
+ if (v.includes(',') || /^(in|not_in|range|gte|lte):/i.test(String(raw))) return
720
+ fromUrl[col] = v
721
+ })
722
+ return Object.keys(fromUrl).length === 0 ? base : { ...fromUrl, ...base }
723
+ }, [defaultFilters, dynamicFilters, enableUrlSync, urlSynced])
724
+
725
+ // Columns whose kernel `visible_when` fails against the known list scope
726
+ // (locked nav defaultFilters, single-eq chips). Host `hiddenColumns` still
727
+ // wins; this is the scalable path so CxC hides Proveedor without each nav
728
+ // item re-listing every allowed column.
729
+ const scopeHiddenColumns = useMemo(() => {
730
+ const cols = (viewMetadata?.columns ?? metadata?.columns ?? []) as ColumnDefinition[]
731
+ if (cols.length === 0 || Object.keys(listScopeValues).length === 0) return [] as string[]
732
+ const hidden: string[] = []
733
+ for (const col of cols) {
734
+ const key = col.key
735
+ if (!key) continue
736
+ if (!evaluateVisibleWhenForListScope(getVisibleWhen(col), listScopeValues)) {
737
+ hidden.push(key)
738
+ }
739
+ }
740
+ return hidden
741
+ }, [metadata, viewMetadata, listScopeValues])
742
+
743
+ const effectiveHiddenColumns = useMemo(() => {
744
+ if (scopeHiddenColumns.length === 0) return hiddenColumns
745
+ const set = new Set(hiddenColumns)
746
+ for (const k of scopeHiddenColumns) set.add(k)
747
+ return Array.from(set)
748
+ }, [hiddenColumns, scopeHiddenColumns])
749
+
698
750
  const buildFilterParams = useCallback(() => {
699
751
  const params: Record<string, any> = {}
700
752
  if (sorting.length > 0) {
@@ -710,9 +762,12 @@ export function DynamicTable({
710
762
  }
711
763
  // searchableKeys === [] → drop the search request entirely
712
764
  }
713
- columnFilters.forEach((filter: { id: string; value: unknown }) => { params[`f_${filter.id}`] = filter.value })
714
- if (defaultFilters) Object.entries(defaultFilters).forEach(([key, value]) => { params[`f_${key}`] = value })
765
+ columnFilters.forEach((filter: { id: string; value: unknown }) => {
766
+ if (defaultFilters && filter.id in defaultFilters) return
767
+ params[`f_${filter.id}`] = filter.value
768
+ })
715
769
  Object.entries(dynamicFilters).forEach(([key, values]) => {
770
+ if (defaultFilters && key in defaultFilters) return
716
771
  if (values.length === 0) return
717
772
  const gteVal = values.find(v => v.startsWith('GTE:'))
718
773
  const lteVal = values.find(v => v.startsWith('LTE:'))
@@ -725,6 +780,8 @@ export function DynamicTable({
725
780
  if (values.length === 1) params[`f_${key}`] = values[0]
726
781
  else params[`f_${key}`] = `IN:${values.join(',')}`
727
782
  })
783
+ // Locked scope last so it always wins over stale dynamic/column filters.
784
+ if (defaultFilters) Object.entries(defaultFilters).forEach(([key, value]) => { params[`f_${key}`] = value })
728
785
  if (dateRange?.from) {
729
786
  const startDate = format(dateRange.from, 'yyyy-MM-dd')
730
787
  const endDate = dateRange.to ? format(dateRange.to, 'yyyy-MM-dd') : startDate
@@ -770,8 +827,7 @@ export function DynamicTable({
770
827
  } finally {
771
828
  setLoadingData(false)
772
829
  }
773
- // eslint-disable-next-line react-hooks/exhaustive-deps
774
- }, [model, metadata, pagination, buildFilterParams, refreshTrigger, realtimeTick, endpoint, currentBranch?.id, api, enableUrlSync])
830
+ }, [model, metadata, pagination, buildFilterParams, refreshTrigger, endpoint, currentBranch?.id, api, enableUrlSync])
775
831
 
776
832
  // Columns whose metadata opts into a footer total (display_config.aggregate
777
833
  // → styleConfig.aggregate). When empty, no footer row is rendered and no
@@ -940,9 +996,8 @@ export function DynamicTable({
940
996
  // matching the classic path (fetchData carries refreshTrigger in its
941
997
  // deps). Without it the comment above lied: infinite lists silently
942
998
  // failed to reload after a create ("a veces no recarga la tabla").
943
- // realtimeTick plays the same role for data events (see the `realtime` prop).
944
999
  // eslint-disable-next-line react-hooks/exhaustive-deps
945
- }, [infiniteScroll, metadata, filterSignature, refreshTrigger, realtimeTick])
1000
+ }, [infiniteScroll, metadata, filterSignature, refreshTrigger])
946
1001
 
947
1002
  const handleRefresh = useCallback(() => {
948
1003
  // Infinite mode owns its own list: refresh reloads page 1 and drops the
@@ -997,9 +1052,11 @@ export function DynamicTable({
997
1052
  }
998
1053
 
999
1054
  const handleDynamicFilterChange = useCallback((filterKey: string, values: string[]) => {
1055
+ // Locked scope (nav / branch defaultFilters) cannot be changed from the UI.
1056
+ if (defaultFilters && filterKey in defaultFilters) return
1000
1057
  setDynamicFilters((prev: Record<string, string[]>) => ({ ...prev, [filterKey]: values }))
1001
1058
  setPagination((prev: PaginationState) => ({ ...prev, pageIndex: 0 }))
1002
- }, [])
1059
+ }, [defaultFilters])
1003
1060
 
1004
1061
  // Same facet loader machinery the board uses, so a text column filters
1005
1062
  // identically in the table header and the kanban Sheet (the host's
@@ -1026,6 +1083,9 @@ export function DynamicTable({
1026
1083
  // `filterable: true` — keeps the kernel API minimal (one flag on the
1027
1084
  // column) while still rendering the FilterableColumnHeader.
1028
1085
  for (const f of metadata.filters ?? []) {
1086
+ const filterCol = f.column || f.key
1087
+ if (defaultFilters && filterCol in defaultFilters) continue
1088
+ if (effectiveHiddenColumns.includes(filterCol)) continue
1029
1089
  let fType = f.type as ColumnFilterConfig['filterType']
1030
1090
  let options: { label: string; value: string; icon?: string; color?: string }[] = []
1031
1091
  if (f.options && f.options.length > 0) {
@@ -1069,6 +1129,8 @@ export function DynamicTable({
1069
1129
  }
1070
1130
  for (const c of metadata.columns ?? []) {
1071
1131
  if (!c.filterable || map.has(c.key)) continue
1132
+ if (defaultFilters && c.key in defaultFilters) continue
1133
+ if (effectiveHiddenColumns.includes(c.key)) continue
1072
1134
  const hasStaticOptions = (c.options?.length ?? 0) > 0
1073
1135
  const hasEndpoint = !!c.searchEndpoint
1074
1136
  const isRelation = !!c.ref || c.filterType === 'dynamic_select'
@@ -1133,7 +1195,7 @@ export function DynamicTable({
1133
1195
  })
1134
1196
  }
1135
1197
  return map
1136
- }, [metadata, filterOptionsMap, dynamicFilters, handleDynamicFilterChange, facetsBase, getFacetLoader, facetOptions, t])
1198
+ }, [metadata, filterOptionsMap, dynamicFilters, handleDynamicFilterChange, facetsBase, getFacetLoader, facetOptions, t, defaultFilters, effectiveHiddenColumns])
1137
1199
 
1138
1200
  // Prewarm every facet field once the configs settle, so a text column's
1139
1201
  // header filter opens instantly with values + counts (same as the kanban).
@@ -1170,11 +1232,11 @@ export function DynamicTable({
1170
1232
  return actions === viewMetadata.actions ? viewMetadata : { ...viewMetadata, actions }
1171
1233
  })()
1172
1234
  const baseColumns = getDynamicColumns(rowMetadata, handleInternalAction, t, i18n.language, columnFilterConfigs, timeZone, currency)
1173
- const filteredBase = baseColumns.filter((col: ColumnDef<any>) => !hiddenColumns.includes(col.id as string))
1235
+ const filteredBase = baseColumns.filter((col: ColumnDef<any>) => !effectiveHiddenColumns.includes(col.id as string))
1174
1236
  const actionsCol = filteredBase.find((c: ColumnDef<any>) => c.id === 'actions')
1175
1237
  const otherCols = filteredBase.filter((c: ColumnDef<any>) => c.id !== 'actions')
1176
1238
  return [...otherCols, ...extraColumns, ...(actionsCol ? [actionsCol] : [])]
1177
- }, [viewMetadata, handleInternalAction, hiddenColumns, allowedActionKeys, extraColumns, t, i18n.language, columnFilterConfigs, getDynamicColumns, timeZone, currency])
1239
+ }, [viewMetadata, handleInternalAction, effectiveHiddenColumns, allowedActionKeys, extraColumns, t, i18n.language, columnFilterConfigs, getDynamicColumns, timeZone, currency])
1178
1240
 
1179
1241
  const filters = useMemo(() => [], [])
1180
1242
 
package/src/index.ts CHANGED
@@ -375,6 +375,9 @@ export {
375
375
  resolveOptionsSource,
376
376
  getVisibleWhen,
377
377
  evaluateVisibleWhen,
378
+ scopeValueFromFilterToken,
379
+ buildListScopeValues,
380
+ evaluateVisibleWhenForListScope,
378
381
  } from './dynamic-form-schema'
379
382
  export {
380
383
  ActivityValueRenderer,
package/src/types.ts CHANGED
@@ -337,12 +337,13 @@ export interface ColumnDefinition {
337
337
  /** snake_case alias served by the kernel for `itemFields`. */
338
338
  item_fields?: ColumnItemField[]
339
339
  /**
340
- * Conditional visibility in the create/edit modal: render this field only
341
- * when a sibling field's current value matches the predicate. Mirrors the
342
- * kernel v3 `Column.visible_when` (projected onto the served ColumnDef).
343
- * Tolerates the camelCase alias. Absent = always visible; a hidden field is
344
- * skipped by the required-gate so it never blocks submit. See
345
- * `evaluateVisibleWhen`.
340
+ * Conditional visibility (kernel v3 `Column.visible_when`):
341
+ * - create/edit modal `evaluateVisibleWhen` against live form values
342
+ * - list/board `evaluateVisibleWhenForListScope` against known filter
343
+ * scope (`defaultFilters` / single-eq chips), so a locked nav scope
344
+ * like `party_type=customer` hides `supplier_id` without each nav
345
+ * item re-declaring a full column allowlist.
346
+ * Tolerates the camelCase alias. Absent = always visible.
346
347
  */
347
348
  visible_when?: VisibleWhen
348
349
  /** camelCase alias for `visible_when`. */