@asteby/metacore-runtime-react 47.1.0 → 49.0.0

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.
Files changed (190) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/action-modal-dispatcher.d.ts +17 -3
  3. package/dist/action-modal-dispatcher.d.ts.map +1 -1
  4. package/dist/action-modal-dispatcher.js +80 -13
  5. package/dist/action-priority.d.ts +34 -0
  6. package/dist/action-priority.d.ts.map +1 -0
  7. package/dist/action-priority.js +60 -0
  8. package/dist/business/catalog-product-search.d.ts +32 -0
  9. package/dist/business/catalog-product-search.d.ts.map +1 -0
  10. package/dist/business/catalog-product-search.js +71 -0
  11. package/dist/business/catalog.d.ts.map +1 -1
  12. package/dist/business/catalog.js +2 -0
  13. package/dist/business/document-editor-model.d.ts +119 -0
  14. package/dist/business/document-editor-model.d.ts.map +1 -0
  15. package/dist/business/document-editor-model.js +317 -0
  16. package/dist/business/document-editor-panels.d.ts +64 -0
  17. package/dist/business/document-editor-panels.d.ts.map +1 -0
  18. package/dist/business/document-editor-panels.js +58 -0
  19. package/dist/business/document-editor.d.ts +27 -0
  20. package/dist/business/document-editor.d.ts.map +1 -0
  21. package/dist/business/document-editor.js +493 -0
  22. package/dist/business/document-lines.d.ts.map +1 -1
  23. package/dist/business/document-lines.js +5 -1
  24. package/dist/business/index.d.ts +5 -0
  25. package/dist/business/index.d.ts.map +1 -1
  26. package/dist/business/index.js +5 -0
  27. package/dist/business/line-items.d.ts +16 -1
  28. package/dist/business/line-items.d.ts.map +1 -1
  29. package/dist/business/line-items.js +14 -2
  30. package/dist/business/payment-allocator.d.ts +19 -0
  31. package/dist/business/payment-allocator.d.ts.map +1 -0
  32. package/dist/business/payment-allocator.js +31 -0
  33. package/dist/business/product-search.d.ts +4 -0
  34. package/dist/business/product-search.d.ts.map +1 -1
  35. package/dist/dialogs/dynamic-record.d.ts.map +1 -1
  36. package/dist/dialogs/dynamic-record.js +14 -7
  37. package/dist/document/document-page.d.ts.map +1 -1
  38. package/dist/document/document-page.js +8 -1
  39. package/dist/document/evaluate.d.ts.map +1 -1
  40. package/dist/document/evaluate.js +17 -1
  41. package/dist/document/index.d.ts +1 -0
  42. package/dist/document/index.d.ts.map +1 -1
  43. package/dist/document/index.js +1 -0
  44. package/dist/document/secondary-bar.d.ts +20 -0
  45. package/dist/document/secondary-bar.d.ts.map +1 -0
  46. package/dist/document/secondary-bar.js +44 -0
  47. package/dist/document/types.d.ts +8 -0
  48. package/dist/document/types.d.ts.map +1 -1
  49. package/dist/document-form-dialog.d.ts +31 -2
  50. package/dist/document-form-dialog.d.ts.map +1 -1
  51. package/dist/document-form-dialog.js +46 -11
  52. package/dist/dynamic-columns-helpers.d.ts +9 -0
  53. package/dist/dynamic-columns-helpers.d.ts.map +1 -1
  54. package/dist/dynamic-columns-helpers.js +19 -0
  55. package/dist/dynamic-columns.d.ts +9 -13
  56. package/dist/dynamic-columns.d.ts.map +1 -1
  57. package/dist/dynamic-columns.js +27 -21
  58. package/dist/dynamic-crud-page.d.ts +18 -0
  59. package/dist/dynamic-crud-page.d.ts.map +1 -1
  60. package/dist/dynamic-crud-page.js +15 -6
  61. package/dist/dynamic-form-schema.d.ts.map +1 -1
  62. package/dist/dynamic-form-schema.js +15 -3
  63. package/dist/dynamic-form.d.ts +16 -1
  64. package/dist/dynamic-form.d.ts.map +1 -1
  65. package/dist/dynamic-form.js +78 -20
  66. package/dist/dynamic-kanban.d.ts +9 -3
  67. package/dist/dynamic-kanban.d.ts.map +1 -1
  68. package/dist/dynamic-kanban.js +31 -12
  69. package/dist/dynamic-relation-helpers.d.ts.map +1 -1
  70. package/dist/dynamic-relation-helpers.js +8 -0
  71. package/dist/dynamic-relation.js +1 -1
  72. package/dist/dynamic-row-actions.d.ts +8 -0
  73. package/dist/dynamic-row-actions.d.ts.map +1 -1
  74. package/dist/dynamic-row-actions.js +12 -2
  75. package/dist/dynamic-table.d.ts.map +1 -1
  76. package/dist/dynamic-table.js +64 -63
  77. package/dist/index.d.ts +7 -2
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +19 -2
  80. package/dist/installed-addons-context.d.ts +15 -0
  81. package/dist/installed-addons-context.d.ts.map +1 -0
  82. package/dist/installed-addons-context.js +39 -0
  83. package/dist/org-runtime-context.d.ts +8 -0
  84. package/dist/org-runtime-context.d.ts.map +1 -1
  85. package/dist/org-runtime-context.js +8 -0
  86. package/dist/org-runtime-provider.d.ts +3 -1
  87. package/dist/org-runtime-provider.d.ts.map +1 -1
  88. package/dist/org-runtime-provider.js +3 -3
  89. package/dist/primitives/aging.d.ts +34 -0
  90. package/dist/primitives/aging.d.ts.map +1 -0
  91. package/dist/primitives/aging.js +48 -0
  92. package/dist/primitives/allocation.d.ts +42 -0
  93. package/dist/primitives/allocation.d.ts.map +1 -0
  94. package/dist/primitives/allocation.js +59 -0
  95. package/dist/primitives/approvals.d.ts +71 -0
  96. package/dist/primitives/approvals.d.ts.map +1 -0
  97. package/dist/primitives/approvals.js +48 -0
  98. package/dist/primitives/contributions.d.ts +93 -0
  99. package/dist/primitives/contributions.d.ts.map +1 -0
  100. package/dist/primitives/contributions.js +163 -0
  101. package/dist/primitives/document-kinds.d.ts +25 -0
  102. package/dist/primitives/document-kinds.d.ts.map +1 -0
  103. package/dist/primitives/document-kinds.js +26 -0
  104. package/dist/primitives/index.d.ts +8 -0
  105. package/dist/primitives/index.d.ts.map +1 -0
  106. package/dist/primitives/index.js +23 -0
  107. package/dist/primitives/panels.d.ts +68 -0
  108. package/dist/primitives/panels.d.ts.map +1 -0
  109. package/dist/primitives/panels.js +3 -0
  110. package/dist/primitives/use-contributions.d.ts +15 -0
  111. package/dist/primitives/use-contributions.d.ts.map +1 -0
  112. package/dist/primitives/use-contributions.js +30 -0
  113. package/dist/record-actions.d.ts +21 -0
  114. package/dist/record-actions.d.ts.map +1 -0
  115. package/dist/record-actions.js +76 -0
  116. package/dist/record-prefill-bar.d.ts +11 -0
  117. package/dist/record-prefill-bar.d.ts.map +1 -0
  118. package/dist/record-prefill-bar.js +33 -0
  119. package/dist/row-actions-menu.d.ts +32 -0
  120. package/dist/row-actions-menu.d.ts.map +1 -0
  121. package/dist/row-actions-menu.js +59 -0
  122. package/dist/slot.d.ts +4 -21
  123. package/dist/slot.d.ts.map +1 -1
  124. package/dist/slot.js +14 -36
  125. package/dist/types.d.ts +134 -0
  126. package/dist/types.d.ts.map +1 -1
  127. package/package.json +3 -3
  128. package/src/__tests__/catalog-product-search.test.ts +61 -0
  129. package/src/__tests__/document-editor-model.test.ts +221 -0
  130. package/src/__tests__/document-editor.test.tsx +340 -0
  131. package/src/__tests__/document-form-dialog.test.tsx +158 -3
  132. package/src/__tests__/dynamic-form-select-edit.test.tsx +155 -0
  133. package/src/__tests__/dynamic-kanban.test.tsx +24 -3
  134. package/src/__tests__/dynamic-record-extension-label.test.tsx +88 -0
  135. package/src/__tests__/installed-addons-context.test.tsx +50 -0
  136. package/src/__tests__/line-item-totals.test.ts +28 -0
  137. package/src/__tests__/prefill-scalar-from-record.test.ts +52 -1
  138. package/src/__tests__/primitives-federated.test.tsx +156 -0
  139. package/src/__tests__/primitives.test.ts +224 -0
  140. package/src/__tests__/record-prefill-bar.test.tsx +50 -0
  141. package/src/__tests__/row-action-link-navigation.test.ts +17 -0
  142. package/src/__tests__/secondary-actions.test.tsx +261 -0
  143. package/src/action-modal-dispatcher.tsx +97 -12
  144. package/src/action-priority.ts +82 -0
  145. package/src/business/business.test.ts +1 -1
  146. package/src/business/catalog-product-search.ts +105 -0
  147. package/src/business/catalog.ts +2 -0
  148. package/src/business/document-editor-model.ts +367 -0
  149. package/src/business/document-editor-panels.tsx +164 -0
  150. package/src/business/document-editor.tsx +781 -0
  151. package/src/business/document-lines.ts +5 -1
  152. package/src/business/index.ts +5 -0
  153. package/src/business/line-items.ts +31 -2
  154. package/src/business/payment-allocator.tsx +110 -0
  155. package/src/business/product-search.ts +4 -0
  156. package/src/dialogs/dynamic-record.tsx +29 -6
  157. package/src/document/document-page.tsx +15 -0
  158. package/src/document/evaluate.ts +17 -1
  159. package/src/document/index.ts +1 -0
  160. package/src/document/secondary-bar.tsx +92 -0
  161. package/src/document/types.ts +8 -0
  162. package/src/document-form-dialog.tsx +96 -12
  163. package/src/dynamic-columns-helpers.ts +22 -0
  164. package/src/dynamic-columns.tsx +35 -62
  165. package/src/dynamic-crud-page.tsx +33 -5
  166. package/src/dynamic-form-schema.ts +15 -2
  167. package/src/dynamic-form.tsx +117 -39
  168. package/src/dynamic-kanban.tsx +34 -7
  169. package/src/dynamic-relation-helpers.ts +9 -0
  170. package/src/dynamic-relation.tsx +7 -2
  171. package/src/dynamic-row-actions.tsx +12 -2
  172. package/src/dynamic-table.tsx +3 -0
  173. package/src/index.ts +46 -1
  174. package/src/installed-addons-context.tsx +58 -0
  175. package/src/org-runtime-context.ts +10 -0
  176. package/src/org-runtime-provider.tsx +7 -2
  177. package/src/primitives/aging.ts +76 -0
  178. package/src/primitives/allocation.ts +104 -0
  179. package/src/primitives/approvals.ts +103 -0
  180. package/src/primitives/contributions.ts +255 -0
  181. package/src/primitives/document-kinds.ts +62 -0
  182. package/src/primitives/index.ts +23 -0
  183. package/src/primitives/panels.ts +59 -0
  184. package/src/primitives/use-contributions.ts +42 -0
  185. package/src/record-actions.ts +101 -0
  186. package/src/record-prefill-bar.tsx +62 -0
  187. package/src/row-action-stage-gate.test.ts +33 -0
  188. package/src/row-actions-menu.tsx +159 -0
  189. package/src/slot.tsx +18 -53
  190. package/src/types.ts +129 -0
package/src/types.ts CHANGED
@@ -35,6 +35,40 @@ export interface DocumentFormLines {
35
35
  required?: boolean
36
36
  /** Título del paso. Default «Renglones». */
37
37
  title?: string
38
+ /**
39
+ * Qué captura el grid (ver primitives/document-kinds LinesMode). Default `sale`.
40
+ * `allocation` cambia el grid por PaymentAllocator (documentos abiertos de la
41
+ * contraparte); `credit` limita cantidades a facturado − acreditado.
42
+ */
43
+ kind?: 'sale' | 'purchase' | 'credit' | 'allocation' | 'workorder'
44
+ /** Solo `kind: allocation`: de dónde salen los documentos abiertos. */
45
+ open_documents?: DocumentFormOpenDocuments
46
+ /**
47
+ * Cómo se captura el descuento: `percent` (default del grid), `amount`
48
+ * (importe) o `both`. Debe coincidir con la fórmula del modelo de renglones:
49
+ * si el backend calcula `quantity * unit_price - discount`, declara `amount`
50
+ * (con `percent` un 10 % se restaría como $10).
51
+ */
52
+ discount_mode?: 'percent' | 'amount' | 'both'
53
+ }
54
+
55
+ /** Documentos con saldo de la contraparte para PaymentAllocator. */
56
+ export interface DocumentFormOpenDocuments {
57
+ /** Modelo (p. ej. `customers.Invoice`, `purchases.SupplierInvoice`). */
58
+ model: string
59
+ /** Campo del documento que apunta a la contraparte (`customer_id`). */
60
+ party_field: string
61
+ balance_field: string
62
+ number_field: string
63
+ total_field?: string
64
+ due_field?: string
65
+ issued_field?: string
66
+ /** Columna con el método (PUE/PPD…); el núcleo solo la muestra. */
67
+ method_field?: string
68
+ /** Campo del renglón de la acción donde va el id y el monto (`invoice_id`, `amount`). */
69
+ line_document_field: string
70
+ line_amount_field: string
71
+ option_filter?: unknown
38
72
  }
39
73
 
40
74
  /** Un tipo de documento (Factura, Nota de crédito, REP, Global, Traslado…). */
@@ -55,6 +89,81 @@ export interface DocumentFormType {
55
89
  endpoint?: string
56
90
  /** Texto del botón final. Default «Crear». */
57
91
  submit_label?: string
92
+ /**
93
+ * `wizard` (default: Datos → Siguiente → Renglones) o `editor`: UNA pantalla
94
+ * por secciones (contraparte, origen, renglones o reparto, totales, «Opciones
95
+ * fiscales» plegadas, vista previa opcional). Ver DocumentEditor.
96
+ */
97
+ layout?: 'wizard' | 'editor'
98
+ /** Contraparte del documento (cliente / proveedor). Solo `layout: editor`. */
99
+ party?: DocumentFormParty
100
+ /** «Cargar desde…»: documentos origen cuyos renglones se copian. */
101
+ sources?: DocumentFormSource[]
102
+ /** Vista previa / validación previa (acción del modelo con `analyze: true`). */
103
+ preview?: DocumentFormPreview
104
+ /**
105
+ * Guardar llamando a una acción del modelo (placement `create`) en vez del
106
+ * create genérico. P. ej. Payment → `collect_multi_payment_create`, que ya
107
+ * reparte el pago en PaymentAllocation dentro de una transacción.
108
+ */
109
+ submit_action?: string
110
+ }
111
+
112
+ /** Contraparte: qué campo del encabezado la elige y qué muestra su tarjeta. */
113
+ export interface DocumentFormParty {
114
+ /** Campo del encabezado (dynamic_select) con el id. P. ej. `customer_id`. */
115
+ field: string
116
+ /** Modelo de la contraparte. P. ej. `customers.Customer`. */
117
+ model: string
118
+ /** Endpoint de lectura. Default `/data/<model>`. */
119
+ endpoint?: string
120
+ /** Columnas de la tarjeta; además se muestran las extensiones `fiscal_data.*`. */
121
+ summary?: string[]
122
+ /** Columnas de crédito/saldo (si existen en el modelo). */
123
+ credit?: { limit?: string; balance?: string; overdue?: string; hold_reason?: string }
124
+ }
125
+
126
+ /** Un documento origen para «Cargar desde…». */
127
+ export interface DocumentFormSource {
128
+ key: string
129
+ label: string
130
+ /** Modelo origen (p. ej. `quotes.Quote`). Si el addon no está, se oculta. */
131
+ model: string
132
+ /** Relación one_to_many con los renglones (p. ej. `items`). */
133
+ lines: string
134
+ /** Mapeo renglón origen → LineItem (`description: product_name`, `discount: discount_pct`…). */
135
+ map?: Record<string, string>
136
+ /** Campos del encabezado que se copian del origen (`customer_id: customer_id`). */
137
+ header?: Record<string, string>
138
+ /** Campo del documento que guarda el vínculo (p. ej. `sales_order_id`). */
139
+ link_field?: string
140
+ /** Filtro de opciones del selector del origen (mismo contrato que option_filter). */
141
+ option_filter?: unknown
142
+ /** Addon requerido (gating de UI; el servidor revalida). */
143
+ requires_addon?: string
144
+ /** Columna de cantidad del renglón origen (default `quantity`). */
145
+ qty_field?: string
146
+ /**
147
+ * Columna del renglón de ESTE documento que guarda el id del renglón origen
148
+ * (p. ej. `sales_order_item_id`). Con ella el host sirve lo pendiente por
149
+ * renglón (`<endpoint>/source-lines`) y rechaza al guardar si se excede.
150
+ */
151
+ line_link_field?: string
152
+ /** Columna del renglón origen que ya trae lo pendiente (la mantiene su addon). */
153
+ remaining_qty_field?: string
154
+ /** Endpoint del addon que sirve los renglones con `remaining_quantity` (`?id=`). */
155
+ remaining_endpoint?: string
156
+ /** Estados de este documento que no consumen el origen (cancelada…). */
157
+ exclude_states?: string[]
158
+ }
159
+
160
+ /** Vista previa: acción de fila sobre el borrador, llamada con `analyze: true`. */
161
+ export interface DocumentFormPreview {
162
+ /** Clave de la acción (p. ej. `preview_cfdi`, de fiscal_mexico). */
163
+ action: string
164
+ /** Addon que la aporta (si no está instalado, el panel muestra solo totales). */
165
+ requires_addon?: string
166
+ label?: string
58
167
  }
59
168
 
60
169
  export interface DocumentFormsManifest {
@@ -557,6 +666,12 @@ export interface ActionFieldDef {
557
666
  label: string
558
667
  type: string
559
668
  required?: boolean
669
+ /**
670
+ * Campo de solo lectura (escrito por el servidor/sistema): `DynamicForm` lo
671
+ * oculta y lo excluye de defaults y submit. Acepta el alias `readOnly`.
672
+ */
673
+ readonly?: boolean
674
+ readOnly?: boolean
560
675
  /**
561
676
  * Explicit nullability flag served by the kernel (v0.77.1+) from
562
677
  * `modelbase.FieldDef.Nullable` (populated as `!Required`). An optional `ref`
@@ -806,6 +921,18 @@ export interface ActionDefinition {
806
921
  */
807
922
  replaces_create?: boolean
808
923
  replacesCreate?: boolean
924
+ /**
925
+ * Manifest v3 `priority`. "primary": la única acción destacada del menú de
926
+ * fila / cabecera. "secondary": compartir, imprimir, correo, chat → pie del
927
+ * documento y «Más…» del menú de fila. Sin valor: convención por clave
928
+ * (ver classifyActionPriority).
929
+ */
930
+ priority?: 'primary' | 'secondary'
931
+ /**
932
+ * Cómo despacha (served `trigger`). `type: "capability"` necesita un addon
933
+ * que provea `capability`; sin proveedor activo la acción no se ofrece.
934
+ */
935
+ trigger?: { type: string; capability?: string; connector?: string }
809
936
  /**
810
937
  * Optional addon this action depends on, stamped by the host only while it
811
938
  * is NOT installed (served as `requires_addon`; read through
@@ -857,6 +984,8 @@ export interface ActionMetadata {
857
984
  /** Federated modal slug "<addon_key>.<action_key>"; see ActionModalDispatcher. */
858
985
  modal?: string
859
986
  placement?: 'row' | 'table' | 'create'
987
+ /** Manifest v3 `priority`; ver ActionDefinition.priority. */
988
+ priority?: 'primary' | 'secondary'
860
989
  /**
861
990
  * Optional addon this action depends on, stamped by the host only while it
862
991
  * is NOT installed (served as `requires_addon`; read through