@asteby/metacore-runtime-react 37.5.0 → 37.5.1
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.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2582a3a: El multi-select declarativo (`field.multiple: true`, ver #881/#883) no se veía en el modal REAL de editar/crear registro (`dialogs/dynamic-record.tsx`, usado por la tabla genérica del host) — nunca se había cableado ahí, solo en `DynamicForm` (dynamic-form.tsx, usado por acciones). Además, `isLineItemsField` trataba CUALQUIER valor array (incluido el `[]` default de un campo `multiple` recién creado) como un documento de line-items y lo renderizaba "Solo lectura". Se agrega el branch de `DynamicMultiSelectField` antes del picker single-value y se excluye `field.multiple` de la heurística de line-items.
|
|
8
|
+
|
|
3
9
|
## 37.5.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-record.d.ts","sourceRoot":"","sources":["../../src/dialogs/dynamic-record.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"dynamic-record.d.ts","sourceRoot":"","sources":["../../src/dialogs/dynamic-record.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AA+C1C,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAoB3C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAK1F,YAAY,EAAE,WAAW,EAAE,CAAA;AAE3B,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;IACpH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,YAAY,CAAC,EAAE,GAAG,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IACxB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,SAAS,EAAE,CAAA;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,WAAW,CAAA;IAC1B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACnB;AA0CD,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAA;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;2DAEuD;IACvD,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAClF;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACpG;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;IAC1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AASD,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,CAK1D;AAaD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAgBtE;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,GAAG,SAAS,CAExE;AAQD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAerE;AASD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,cAAc,GAAG,IAAI,CAa5F;AA+GD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAUjE;AAaD,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,EAChC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjC,QAAQ,EAAE,CAOZ;AAUD,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GACjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASrB;AAiBD,wBAAgB,mBAAmB,CAAC,EAChC,IAAI,EACJ,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,cAAc,EACd,aAAa,EACb,WAA8B,EAC9B,QAAQ,EACR,QAAQ,EACR,QAAQ,GACX,EAAE,wBAAwB,+BAkkB1B;AAuED,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,+BAelF;AA+GD,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,KAAK,EAAE,QAAQ,EACf,MAAM,EACN,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,GACzB,EAAE;IACC,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,GAAG,CAAA;IACV,MAAM,EAAE,GAAG,CAAA;IACX,mFAAmF;IACnF,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,+BA6SA;AAwLD,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IACnE,KAAK,EAAE,QAAQ,CAAA;IACf,KAAK,EAAE,GAAG,CAAA;IACV,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5B,iFAAiF;IACjF,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAA;CACpB,+BA+NA"}
|
|
@@ -26,6 +26,7 @@ import { useApi } from '../api-context';
|
|
|
26
26
|
import { useBranchCreateGate } from '../branch-create-gate';
|
|
27
27
|
import { toastServerError, extractFieldErrors, localizeFieldIssue, localizeFieldErrorMap } from '../server-error';
|
|
28
28
|
import { DynamicSelectField, OptionLead, OptionThumb } from '../dynamic-select-field';
|
|
29
|
+
import { DynamicMultiSelectField } from '../dynamic-multi-select-field';
|
|
29
30
|
import { DynamicRelations } from '../dynamic-relations';
|
|
30
31
|
import { useOptionsResolver } from '../use-options-resolver';
|
|
31
32
|
import { getFieldRef, getVisibleWhen, evaluateVisibleWhen } from '../dynamic-form-schema';
|
|
@@ -114,6 +115,13 @@ export function fieldItemFields(field) {
|
|
|
114
115
|
export function isLineItemsField(field, value) {
|
|
115
116
|
if (field.type === 'image' || field.widget === 'upload')
|
|
116
117
|
return false;
|
|
118
|
+
// A `ref` field declared `multiple: true` (DynamicMultiSelectField) is a
|
|
119
|
+
// plain array of target ids, not a structured line-items document — it
|
|
120
|
+
// has its own editable picker and must not fall into the read-only
|
|
121
|
+
// inline-table branch just because its current value is an array
|
|
122
|
+
// (including the [] default on a freshly-created record).
|
|
123
|
+
if (field.multiple)
|
|
124
|
+
return false;
|
|
117
125
|
if (fieldItemFields(field)?.length)
|
|
118
126
|
return true;
|
|
119
127
|
if (Array.isArray(value))
|
|
@@ -1133,6 +1141,13 @@ export function EditField({ field, value, onChange, record, invalid }) {
|
|
|
1133
1141
|
// else optionsConfig.source → /api/options/<source>). Without the `type`
|
|
1134
1142
|
// check a source-backed picker with no `ref` silently degraded to a raw text
|
|
1135
1143
|
// input. Static inline `options` are handled by the enum <Select> branch below.
|
|
1144
|
+
// Multi-value ref field (field.multiple:true — see DynamicMultiSelectField):
|
|
1145
|
+
// checked BEFORE the single-value dynamic_select branch below, which would
|
|
1146
|
+
// otherwise claim it too (both trigger on the same `ref`/`getFieldRef`
|
|
1147
|
+
// check) and render a picker that stores a single id instead of an array.
|
|
1148
|
+
if (getFieldRef(field) && field.multiple) {
|
|
1149
|
+
return (_jsx(DynamicMultiSelectField, { field: field, value: value, onChange: onChange }));
|
|
1150
|
+
}
|
|
1136
1151
|
if ((getFieldRef(field) ||
|
|
1137
1152
|
field.type === 'dynamic_select' ||
|
|
1138
1153
|
field.widget === 'dynamic_select') &&
|
package/package.json
CHANGED
|
@@ -56,6 +56,7 @@ import { useApi } from '../api-context'
|
|
|
56
56
|
import { useBranchCreateGate } from '../branch-create-gate'
|
|
57
57
|
import { toastServerError, extractFieldErrors, localizeFieldIssue, localizeFieldErrorMap } from '../server-error'
|
|
58
58
|
import { DynamicSelectField, OptionLead, OptionThumb } from '../dynamic-select-field'
|
|
59
|
+
import { DynamicMultiSelectField } from '../dynamic-multi-select-field'
|
|
59
60
|
import { DynamicRelations } from '../dynamic-relations'
|
|
60
61
|
import { useOptionsResolver, type ResolvedOption } from '../use-options-resolver'
|
|
61
62
|
import { getFieldRef, getVisibleWhen, evaluateVisibleWhen } from '../dynamic-form-schema'
|
|
@@ -376,6 +377,12 @@ export function fieldItemFields(field: FieldDef): ItemField[] | undefined {
|
|
|
376
377
|
// editable widgets (media/upload, color, dates) are NOT line-items.
|
|
377
378
|
export function isLineItemsField(field: FieldDef, value: any): boolean {
|
|
378
379
|
if (field.type === 'image' || field.widget === 'upload') return false
|
|
380
|
+
// A `ref` field declared `multiple: true` (DynamicMultiSelectField) is a
|
|
381
|
+
// plain array of target ids, not a structured line-items document — it
|
|
382
|
+
// has its own editable picker and must not fall into the read-only
|
|
383
|
+
// inline-table branch just because its current value is an array
|
|
384
|
+
// (including the [] default on a freshly-created record).
|
|
385
|
+
if ((field as ActionFieldDef).multiple) return false
|
|
379
386
|
if (fieldItemFields(field)?.length) return true
|
|
380
387
|
if (Array.isArray(value)) return true
|
|
381
388
|
return (
|
|
@@ -1990,6 +1997,20 @@ export function EditField({ field, value, onChange, record, invalid }: {
|
|
|
1990
1997
|
// else optionsConfig.source → /api/options/<source>). Without the `type`
|
|
1991
1998
|
// check a source-backed picker with no `ref` silently degraded to a raw text
|
|
1992
1999
|
// input. Static inline `options` are handled by the enum <Select> branch below.
|
|
2000
|
+
// Multi-value ref field (field.multiple:true — see DynamicMultiSelectField):
|
|
2001
|
+
// checked BEFORE the single-value dynamic_select branch below, which would
|
|
2002
|
+
// otherwise claim it too (both trigger on the same `ref`/`getFieldRef`
|
|
2003
|
+
// check) and render a picker that stores a single id instead of an array.
|
|
2004
|
+
if (getFieldRef(field as ActionFieldDef) && (field as ActionFieldDef).multiple) {
|
|
2005
|
+
return (
|
|
2006
|
+
<DynamicMultiSelectField
|
|
2007
|
+
field={field as ActionFieldDef}
|
|
2008
|
+
value={value}
|
|
2009
|
+
onChange={onChange}
|
|
2010
|
+
/>
|
|
2011
|
+
)
|
|
2012
|
+
}
|
|
2013
|
+
|
|
1993
2014
|
if (
|
|
1994
2015
|
(getFieldRef(field as ActionFieldDef) ||
|
|
1995
2016
|
field.type === 'dynamic_select' ||
|