@asteby/metacore-runtime-react 43.0.0 → 44.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.
- package/CHANGELOG.md +16 -0
- package/dist/action-modal-dispatcher.d.ts +2 -0
- package/dist/action-modal-dispatcher.d.ts.map +1 -1
- package/dist/action-modal-dispatcher.js +74 -8
- package/dist/dynamic-row-actions.d.ts.map +1 -1
- package/dist/dynamic-row-actions.js +11 -15
- package/dist/federated-action-loader.d.ts +18 -0
- package/dist/federated-action-loader.d.ts.map +1 -0
- package/dist/federated-action-loader.js +34 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/model-action-toolbar.d.ts.map +1 -1
- package/dist/model-action-toolbar.js +3 -12
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/action-modal-missing-custom.test.tsx +12 -4
- package/src/__tests__/federated-action-modal.test.tsx +315 -0
- package/src/action-modal-dispatcher.tsx +102 -10
- package/src/dynamic-row-actions.tsx +11 -15
- package/src/federated-action-loader.ts +40 -0
- package/src/index.ts +2 -0
- package/src/model-action-toolbar.tsx +3 -12
- package/src/types.ts +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @asteby/metacore-runtime-react
|
|
2
2
|
|
|
3
|
+
## 44.0.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 35f19fd: Los modals federados de acciones abren siempre el componente del addon, nunca un confirmatorio genérico.
|
|
8
|
+
|
|
9
|
+
- sdk: `subscribeActionComponents(listener)` en el registry de acciones; registrar o quitar un componente notifica a los suscriptores.
|
|
10
|
+
- runtime-react: `ActionModalDispatcher` lee el registry de forma reactiva (`useSyncExternalStore`). Una acción con `modal` muestra "Cargando…" mientras el remote carga, pinta el componente en cuanto se registra y, si no llega en 20 s (`FEDERATED_ACTION_MODAL_TIMEOUT_MS`) muestra el error explícito y lo registra con `console.error`. Un slug sin prefijo `addon.nombre` también se pide al host y espera el timeout. `modal` se respeta venga del manifest del addon o de un override inyectado por el host.
|
|
11
|
+
- runtime-react: `setFederatedActionLoader(fn)` / `FederatedActionLoader` para que el host cargue el remote; el dispatcher lo invoca con `{ model, actionKey, modal }` al abrir y cada 2 s mientras espera.
|
|
12
|
+
- runtime-react: `useDynamicRowActions` y `ModelActionToolbar` pasan la definición completa de la acción (antes se perdía `modal`; en la barra, las acciones `placement: "create"` con `modal` abrían el confirmatorio y ejecutaban sin registro) y el menú de fila abre el dispatcher también para acciones que solo declaran `modal`.
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [35f19fd]
|
|
17
|
+
- @asteby/metacore-sdk@3.10.0
|
|
18
|
+
|
|
3
19
|
## 43.0.0
|
|
4
20
|
|
|
5
21
|
### Minor Changes
|
|
@@ -38,4 +38,6 @@ export declare function readRecordPath(record: any, path: string): unknown;
|
|
|
38
38
|
/** Scalar seed for one action field from the row being acted on. */
|
|
39
39
|
export declare function scalarDefaultFromRecord(field: ActionFieldDef, record: any): unknown;
|
|
40
40
|
export declare function ActionModalDispatcher({ open, onOpenChange, action, model, record, endpoint, onSuccess, }: ActionModalProps): import("react").JSX.Element | null;
|
|
41
|
+
/** How long an action with `modal` waits for its federated component. */
|
|
42
|
+
export declare const FEDERATED_ACTION_MODAL_TIMEOUT_MS = 20000;
|
|
41
43
|
//# sourceMappingURL=action-modal-dispatcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-modal-dispatcher.d.ts","sourceRoot":"","sources":["../src/action-modal-dispatcher.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action-modal-dispatcher.d.ts","sourceRoot":"","sources":["../src/action-modal-dispatcher.tsx"],"names":[],"mappings":"AA4EA,OAAO,KAAK,EAAE,cAAc,EAAmC,MAAM,SAAS,CAAA;AAE9E,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAGxB,MAAM,sBAAsB,CAAA;AAG7B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAA;AAiBhD,MAAM,WAAW,WAAW;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,SAAS,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC1D;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAM1D;AAsBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAStE;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkB3F;AAYD,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAC1C;AAED,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,cAAc,EAAE,GAAG,SAAS,EACpC,MAAM,EAAE,GAAG,EACX,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GAC5H,sBAAsB,EAAE,CAyB1B;AASD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAY1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CASjE;AAUD,oEAAoE;AACpE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAgBnF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,GACZ,EAAE,gBAAgB,sCAmFlB;AAED,yEAAyE;AACzE,eAAO,MAAM,iCAAiC,QAAS,CAAA"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// ActionModalDispatcher — renders the right modal for a custom action:
|
|
3
3
|
// 1) Custom component from the SDK registry → use it
|
|
4
|
-
// 2) action.modal set but no registered component →
|
|
5
|
-
//
|
|
4
|
+
// 2) action.modal set but no registered component → loading state while the
|
|
5
|
+
// host loads the remote (setFederatedActionLoader); the registry is reactive,
|
|
6
|
+
// so the component renders the moment it registers. Timeout →
|
|
7
|
+
// MissingCustomActionModal (a malformed slug still asks the host, then
|
|
8
|
+
// times out). NEVER falls back to confirm/fields — that
|
|
9
|
+
// hides a broken federated UI.
|
|
6
10
|
// 3) action.fields[] / action.steps[] → GenericActionModal / WizardActionModal
|
|
7
11
|
// 4) action.confirm OR action.confirmMessage → ConfirmActionDialog
|
|
8
12
|
// 5) action.executable (host opened the modal; no modal/fields/confirm) →
|
|
@@ -11,7 +15,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
15
|
//
|
|
12
16
|
// The host injects its axios-like client via <ApiProvider>; we no longer
|
|
13
17
|
// depend on a bundler alias to `@/lib/api`.
|
|
14
|
-
import { useState, useEffect, useMemo } from 'react';
|
|
18
|
+
import { useState, useEffect, useMemo, useSyncExternalStore } from 'react';
|
|
15
19
|
import { useTranslation } from 'react-i18next';
|
|
16
20
|
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, Button, Input, Textarea, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Switch, } from '@asteby/metacore-ui/primitives';
|
|
17
21
|
import { Loader2 } from 'lucide-react';
|
|
@@ -35,7 +39,8 @@ import { FieldGrid, FieldCell, FieldLabel } from './field-grid';
|
|
|
35
39
|
import { useMetadataCache } from './metadata-cache';
|
|
36
40
|
import { ViewValue, objectLabel, relationSiblingValue, isLineItemsField as isRecordLineItemsField, } from './dialogs/dynamic-record';
|
|
37
41
|
// Canonical registry lives in @asteby/metacore-sdk
|
|
38
|
-
import { getActionComponent, } from '@asteby/metacore-sdk';
|
|
42
|
+
import { getActionComponent, subscribeActionComponents, } from '@asteby/metacore-sdk';
|
|
43
|
+
import { requestFederatedAction } from './federated-action-loader';
|
|
39
44
|
export function isPrefillSpec(v) {
|
|
40
45
|
return (typeof v === 'object' &&
|
|
41
46
|
v !== null &&
|
|
@@ -188,14 +193,18 @@ export function scalarDefaultFromRecord(field, record) {
|
|
|
188
193
|
return undefined;
|
|
189
194
|
}
|
|
190
195
|
export function ActionModalDispatcher({ open, onOpenChange, action, model, record, endpoint, onSuccess, }) {
|
|
191
|
-
|
|
196
|
+
// Reactive read: a federated remote usually registers AFTER the first
|
|
197
|
+
// render, and a memoized lookup would pin the fallback forever.
|
|
198
|
+
const readComponent = () => getActionComponent(model, action.key);
|
|
199
|
+
const CustomComponent = useSyncExternalStore(subscribeActionComponents, readComponent, readComponent);
|
|
192
200
|
if (CustomComponent) {
|
|
193
201
|
return (_jsx(CustomComponent, { open: open, onOpenChange: onOpenChange, action: action, model: model, record: record, endpoint: endpoint, onSuccess: onSuccess }));
|
|
194
202
|
}
|
|
195
|
-
// Declarative custom slot (`modal: "addon.action"`).
|
|
196
|
-
//
|
|
203
|
+
// Declarative custom slot (`modal: "addon.action"`). Wait for the remote,
|
|
204
|
+
// then a hard error — confirm/fields generics look "fine" and hide a
|
|
205
|
+
// missing remote.
|
|
197
206
|
if (action.modal) {
|
|
198
|
-
return (_jsx(
|
|
207
|
+
return (_jsx(PendingCustomActionModal, { open: open, onOpenChange: onOpenChange, action: action, model: model }));
|
|
199
208
|
}
|
|
200
209
|
if (action.steps && action.steps.length > 0) {
|
|
201
210
|
return (_jsx(WizardActionModal, { open: open, onOpenChange: onOpenChange, action: action, model: model, record: record, endpoint: endpoint, onSuccess: onSuccess }));
|
|
@@ -214,6 +223,63 @@ export function ActionModalDispatcher({ open, onOpenChange, action, model, recor
|
|
|
214
223
|
}
|
|
215
224
|
return null;
|
|
216
225
|
}
|
|
226
|
+
/** How long an action with `modal` waits for its federated component. */
|
|
227
|
+
export const FEDERATED_ACTION_MODAL_TIMEOUT_MS = 20_000;
|
|
228
|
+
/** How often the host loader is re-invoked while waiting. */
|
|
229
|
+
const FEDERATED_ACTION_RETRY_MS = 2_000;
|
|
230
|
+
const MODAL_SLUG_RE = /^[\w-]+(\.[\w-]+)+$/;
|
|
231
|
+
/**
|
|
232
|
+
* `modal` declared, component not registered yet: show a loading dialog, ask
|
|
233
|
+
* the host to load the remote (re-asking periodically), and give up with
|
|
234
|
+
* MissingCustomActionModal after the timeout. The dispatcher swaps this out
|
|
235
|
+
* for the real component as soon as the registry reports it. `modal` is
|
|
236
|
+
* honored wherever it came from — the addon's own manifest or a host-injected
|
|
237
|
+
* override from another addon that registerAction()s over it.
|
|
238
|
+
*/
|
|
239
|
+
function PendingCustomActionModal({ open, onOpenChange, action, model, }) {
|
|
240
|
+
const { t } = useTranslation();
|
|
241
|
+
const slug = action.modal || '';
|
|
242
|
+
const [timedOut, setTimedOut] = useState(false);
|
|
243
|
+
useEffect(() => {
|
|
244
|
+
if (!open)
|
|
245
|
+
return;
|
|
246
|
+
// A slug without a valid `<addon>.<name>` prefix still goes to the
|
|
247
|
+
// host loader (it decides which remote to load) and still times out —
|
|
248
|
+
// the component is looked up by (model, action.key), never by slug.
|
|
249
|
+
// Warn so a malformed manifest is diagnosable before the timeout.
|
|
250
|
+
const validSlug = MODAL_SLUG_RE.test(slug);
|
|
251
|
+
if (!validSlug) {
|
|
252
|
+
console.warn('[metacore] action modal slug has no valid "<addon>.<name>" prefix', {
|
|
253
|
+
model,
|
|
254
|
+
action: action.key,
|
|
255
|
+
modal: slug,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
setTimedOut(false);
|
|
259
|
+
const req = { model, actionKey: action.key, modal: slug };
|
|
260
|
+
requestFederatedAction(req);
|
|
261
|
+
const retry = setInterval(() => requestFederatedAction(req), FEDERATED_ACTION_RETRY_MS);
|
|
262
|
+
const giveUp = setTimeout(() => {
|
|
263
|
+
clearInterval(retry);
|
|
264
|
+
console.error('[metacore] federated action modal did not register in time', {
|
|
265
|
+
model,
|
|
266
|
+
action: action.key,
|
|
267
|
+
modal: slug,
|
|
268
|
+
validSlug,
|
|
269
|
+
timeoutMs: FEDERATED_ACTION_MODAL_TIMEOUT_MS,
|
|
270
|
+
});
|
|
271
|
+
setTimedOut(true);
|
|
272
|
+
}, FEDERATED_ACTION_MODAL_TIMEOUT_MS);
|
|
273
|
+
return () => {
|
|
274
|
+
clearInterval(retry);
|
|
275
|
+
clearTimeout(giveUp);
|
|
276
|
+
};
|
|
277
|
+
}, [open, model, action.key, slug]);
|
|
278
|
+
if (timedOut) {
|
|
279
|
+
return _jsx(MissingCustomActionModal, { open: open, onOpenChange: onOpenChange, action: action, model: model });
|
|
280
|
+
}
|
|
281
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: t(action.label, { defaultValue: action.label }) }), _jsx(DialogDescription, { children: t('dynamic.action_modal_loading', { defaultValue: 'Cargando…' }) })] }), _jsx("div", { className: "flex justify-center py-6", "data-testid": "federated-action-loading", children: _jsx(Loader2, { className: "h-6 w-6 animate-spin text-muted-foreground" }) })] }) }));
|
|
282
|
+
}
|
|
217
283
|
/** Shown when the action declares `modal` but no federated component registered. */
|
|
218
284
|
function MissingCustomActionModal({ open, onOpenChange, action, model, }) {
|
|
219
285
|
const { t } = useTranslation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-row-actions.d.ts","sourceRoot":"","sources":["../src/dynamic-row-actions.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAA;AAE5D,MAAM,WAAW,0BAA0B;IACvC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2EAA2E;IAC3E,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7C,4EAA4E;IAC5E,SAAS,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,+CAA+C;IAC/C,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE;;;OAGG;IACH,OAAO,EAAE,KAAK,CAAC,YAAY,CAAA;CAC9B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,SAAS,GACZ,EAAE,0BAA0B,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"dynamic-row-actions.d.ts","sourceRoot":"","sources":["../src/dynamic-row-actions.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAA;AAE5D,MAAM,WAAW,0BAA0B;IACvC,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,2EAA2E;IAC3E,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAA;IAC7C,4EAA4E;IAC5E,SAAS,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,+CAA+C;IAC/C,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE;;;OAGG;IACH,OAAO,EAAE,KAAK,CAAC,YAAY,CAAA;CAC9B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,SAAS,GACZ,EAAE,0BAA0B,GAAG,iBAAiB,CAuHhD"}
|
|
@@ -12,8 +12,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
12
12
|
// view / edit → host `onAction(action, row)` when provided (string
|
|
13
13
|
// contract), else the built-in record dialog.
|
|
14
14
|
// link action → navigate to the action's templated `linkUrl`.
|
|
15
|
-
// custom (fields/
|
|
16
|
-
// executable)
|
|
15
|
+
// custom (modal/fields/
|
|
16
|
+
// confirm/executable) → opens the ActionModal via the dispatcher.
|
|
17
17
|
// anything else → host `onAction` + refresh (or just refresh).
|
|
18
18
|
//
|
|
19
19
|
// The host `onAction` contract is a STRING action key on purpose — the existing
|
|
@@ -58,24 +58,20 @@ export function useDynamicRowActions({ model, endpoint, mutationEndpoint, metada
|
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
const actionDef = metadata?.actions?.find((a) => a.key === action);
|
|
61
|
-
// Open the dispatcher when there is ANY UI surface (
|
|
62
|
-
// steps, confirm bool, confirmMessage, or host
|
|
63
|
-
// confirm_message without confirm:true used to fall
|
|
64
|
-
// then render null — derive confirm so the
|
|
65
|
-
|
|
61
|
+
// Open the dispatcher when there is ANY UI surface (federated `modal`,
|
|
62
|
+
// fields, wizard steps, confirm bool, confirmMessage, or host
|
|
63
|
+
// `executable`). A confirm_message without confirm:true used to fall
|
|
64
|
+
// through / open and then render null — derive confirm so the
|
|
65
|
+
// ConfirmActionDialog path wins. Pass the WHOLE definition: a
|
|
66
|
+
// cherry-picked copy dropped `modal` and the dispatcher fell back to
|
|
67
|
+
// the generic confirm while the remote was still loading.
|
|
68
|
+
if (actionDef && (actionDef.modal || actionDef.fields?.length || actionDef.steps?.length || actionDef.confirm || actionDef.confirmMessage || actionDef.executable)) {
|
|
66
69
|
setActionModal({
|
|
67
70
|
open: true,
|
|
68
71
|
action: {
|
|
69
|
-
|
|
70
|
-
label: actionDef.label,
|
|
72
|
+
...actionDef,
|
|
71
73
|
icon: actionDef.icon || 'Zap',
|
|
72
|
-
color: actionDef.color,
|
|
73
74
|
confirm: !!(actionDef.confirm || actionDef.confirmMessage),
|
|
74
|
-
confirmMessage: actionDef.confirmMessage,
|
|
75
|
-
fields: actionDef.fields,
|
|
76
|
-
steps: actionDef.steps,
|
|
77
|
-
requiresState: actionDef.requiresState,
|
|
78
|
-
executable: actionDef.executable,
|
|
79
75
|
},
|
|
80
76
|
record: row,
|
|
81
77
|
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type FederatedActionLoader = (req: {
|
|
2
|
+
model: string;
|
|
3
|
+
actionKey: string;
|
|
4
|
+
modal?: string;
|
|
5
|
+
}) => void | Promise<void>;
|
|
6
|
+
/** Install (or clear with `null`) the host's federated action loader. */
|
|
7
|
+
export declare function setFederatedActionLoader(fn: FederatedActionLoader | null): void;
|
|
8
|
+
/**
|
|
9
|
+
* Ask the host to load the remote for (model, actionKey). No-op without a
|
|
10
|
+
* loader; loader errors are logged, never thrown — the dispatcher keeps waiting
|
|
11
|
+
* until its timeout and then shows the explicit error.
|
|
12
|
+
*/
|
|
13
|
+
export declare function requestFederatedAction(req: {
|
|
14
|
+
model: string;
|
|
15
|
+
actionKey: string;
|
|
16
|
+
modal?: string;
|
|
17
|
+
}): void;
|
|
18
|
+
//# sourceMappingURL=federated-action-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federated-action-loader.d.ts","sourceRoot":"","sources":["../src/federated-action-loader.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAI1B,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYtG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Host hook that loads the federated remote behind an action's `modal` slug.
|
|
2
|
+
//
|
|
3
|
+
// The SDK does not know how the host resolves addon remotes (Module Federation
|
|
4
|
+
// manifests, fibers, lazy bundles). When ActionModalDispatcher opens an action
|
|
5
|
+
// that declares `modal` and no component is registered yet, it asks the host to
|
|
6
|
+
// load it through this hook and waits for the registry to report the component.
|
|
7
|
+
// The dispatcher re-invokes the loader while it waits, so a loader installed
|
|
8
|
+
// after the first click still gets called.
|
|
9
|
+
let loader = null;
|
|
10
|
+
/** Install (or clear with `null`) the host's federated action loader. */
|
|
11
|
+
export function setFederatedActionLoader(fn) {
|
|
12
|
+
loader = fn;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Ask the host to load the remote for (model, actionKey). No-op without a
|
|
16
|
+
* loader; loader errors are logged, never thrown — the dispatcher keeps waiting
|
|
17
|
+
* until its timeout and then shows the explicit error.
|
|
18
|
+
*/
|
|
19
|
+
export function requestFederatedAction(req) {
|
|
20
|
+
if (!loader)
|
|
21
|
+
return;
|
|
22
|
+
try {
|
|
23
|
+
const pending = loader(req);
|
|
24
|
+
if (pending && typeof pending.catch === 'function') {
|
|
25
|
+
;
|
|
26
|
+
pending.catch((err) => {
|
|
27
|
+
console.warn('[metacore] federated action loader failed', req, err);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
console.warn('[metacore] federated action loader failed', req, err);
|
|
33
|
+
}
|
|
34
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -27,7 +27,8 @@ export * from './barcode-scanner';
|
|
|
27
27
|
export * from './form-layout';
|
|
28
28
|
export * from './form-layout-ui';
|
|
29
29
|
export { FieldGrid, FieldCell, FieldLabel } from './field-grid';
|
|
30
|
-
export { ActionModalDispatcher, type ActionModalProps, } from './action-modal-dispatcher';
|
|
30
|
+
export { ActionModalDispatcher, FEDERATED_ACTION_MODAL_TIMEOUT_MS, type ActionModalProps, } from './action-modal-dispatcher';
|
|
31
|
+
export { setFederatedActionLoader, type FederatedActionLoader } from './federated-action-loader';
|
|
31
32
|
export { ModelActionToolbar, useModelActions, type ModelActionToolbarProps, type ActionPlacement, } from './model-action-toolbar';
|
|
32
33
|
export * from './addon-loader';
|
|
33
34
|
export { PURGE_ADDON_MESSAGE, isAddonFrontendCacheUrl, purgeAddonFrontendCache, resolvePluginExports, composeDisposables, runDispose, type PurgeAddonMessage, type AddonRegisterModule, type ResolvedPlugin, } from './addon-fiber';
|
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
|
@@ -32,7 +32,8 @@ export * from './barcode-scanner';
|
|
|
32
32
|
export * from './form-layout';
|
|
33
33
|
export * from './form-layout-ui';
|
|
34
34
|
export { FieldGrid, FieldCell, FieldLabel } from './field-grid';
|
|
35
|
-
export { ActionModalDispatcher, } from './action-modal-dispatcher';
|
|
35
|
+
export { ActionModalDispatcher, FEDERATED_ACTION_MODAL_TIMEOUT_MS, } from './action-modal-dispatcher';
|
|
36
|
+
export { setFederatedActionLoader } from './federated-action-loader';
|
|
36
37
|
export { ModelActionToolbar, useModelActions, } from './model-action-toolbar';
|
|
37
38
|
export * from './addon-loader';
|
|
38
39
|
export { PURGE_ADDON_MESSAGE, isAddonFrontendCacheUrl, purgeAddonFrontendCache, resolvePluginExports, composeDisposables, runDispose, } from './addon-fiber';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-action-toolbar.d.ts","sourceRoot":"","sources":["../src/model-action-toolbar.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,SAAS,CAAA;AAE9E,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;AAExD,MAAM,WAAW,uBAAuB;IACpC,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,qEAAqE;IACrE,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;CACtD;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBzD;
|
|
1
|
+
{"version":3,"file":"model-action-toolbar.d.ts","sourceRoot":"","sources":["../src/model-action-toolbar.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAiC,MAAM,SAAS,CAAA;AAE9E,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;AAExD,MAAM,WAAW,uBAAuB;IACpC,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,qEAAqE;IACrE,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAA;CACtD;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBzD;AAQD;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,eAAe,EAAuB,EAClD,QAAQ,CAAC,EAAE,gBAAgB,EAAE,GAC9B,gBAAgB,EAAE,CA2BpB;AAED,wBAAgB,kBAAkB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAA+B,EAC/B,QAAQ,EACR,SAAS,EACT,cAAc,GACjB,EAAE,uBAAuB,sCAqEzB"}
|
|
@@ -53,18 +53,9 @@ export function humanizeActionLabel(label) {
|
|
|
53
53
|
.join(' ');
|
|
54
54
|
}
|
|
55
55
|
function toActionMetadata(a) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
icon: a.icon || 'Zap',
|
|
60
|
-
color: a.color,
|
|
61
|
-
confirm: a.confirm,
|
|
62
|
-
confirmMessage: a.confirmMessage,
|
|
63
|
-
fields: a.fields,
|
|
64
|
-
requiresState: a.requiresState,
|
|
65
|
-
executable: a.executable,
|
|
66
|
-
placement: a.placement,
|
|
67
|
-
};
|
|
56
|
+
// Spread, don't cherry-pick: a hand-picked copy dropped `modal`/`steps`
|
|
57
|
+
// and the dispatcher fell back to generics for federated/wizard actions.
|
|
58
|
+
return { ...a, icon: a.icon || 'Zap' };
|
|
68
59
|
}
|
|
69
60
|
/**
|
|
70
61
|
* Returns the model's actions matching the requested placements. Reads from the
|
package/dist/types.d.ts
CHANGED
|
@@ -614,6 +614,8 @@ export interface ActionDefinition {
|
|
|
614
614
|
steps?: ActionStep[];
|
|
615
615
|
requiresState?: string[];
|
|
616
616
|
executable?: boolean;
|
|
617
|
+
/** Federated modal slug "<addon_key>.<action_key>" (manifest `modal`). */
|
|
618
|
+
modal?: string;
|
|
617
619
|
/**
|
|
618
620
|
* Where the host surfaces the trigger. Mirrors manifest/v3 Action.placement.
|
|
619
621
|
* "row" (default) — per-row table action.
|
|
@@ -655,6 +657,8 @@ export interface ActionMetadata {
|
|
|
655
657
|
steps?: ActionStep[];
|
|
656
658
|
requiresState?: string[];
|
|
657
659
|
executable?: boolean;
|
|
660
|
+
/** Federated modal slug "<addon_key>.<action_key>"; see ActionModalDispatcher. */
|
|
661
|
+
modal?: string;
|
|
658
662
|
placement?: 'row' | 'table' | 'create';
|
|
659
663
|
}
|
|
660
664
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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": "
|
|
3
|
+
"version": "44.0.0",
|
|
4
4
|
"description": "React runtime for metacore hosts — renders addon contributions dynamically",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"zod": "^4.3.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@asteby/metacore-sdk": "^3.
|
|
29
|
+
"@asteby/metacore-sdk": "^3.10.0",
|
|
30
30
|
"@asteby/metacore-ui": "^2.23.0",
|
|
31
31
|
"@tanstack/react-query": ">=5",
|
|
32
32
|
"@tanstack/react-router": ">=1.100",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@asteby/metacore-sdk": "3.
|
|
53
|
+
"@asteby/metacore-sdk": "3.10.0",
|
|
54
54
|
"@asteby/metacore-ui": "2.23.0",
|
|
55
55
|
"@tanstack/react-query": "^5.95.0",
|
|
56
56
|
"@tanstack/react-router": "^1.168.0",
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// @vitest-environment happy-dom
|
|
2
2
|
//
|
|
3
3
|
// When an action declares `modal: "<slug>"` and no federated component is
|
|
4
|
-
// registered, ActionModalDispatcher must surface an error
|
|
5
|
-
// ConfirmActionDialog (even if confirm/confirmMessage
|
|
4
|
+
// registered, ActionModalDispatcher must surface an error once the wait times
|
|
5
|
+
// out — never the generic ConfirmActionDialog (even if confirm/confirmMessage
|
|
6
|
+
// are also set).
|
|
6
7
|
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
7
|
-
import { cleanup, render, screen } from '@testing-library/react'
|
|
8
|
+
import { act, cleanup, render, screen } from '@testing-library/react'
|
|
8
9
|
|
|
9
10
|
vi.mock('react-i18next', () => ({
|
|
10
11
|
useTranslation: () => ({
|
|
@@ -12,7 +13,7 @@ vi.mock('react-i18next', () => ({
|
|
|
12
13
|
}),
|
|
13
14
|
}))
|
|
14
15
|
|
|
15
|
-
import { ActionModalDispatcher } from '../action-modal-dispatcher'
|
|
16
|
+
import { ActionModalDispatcher, FEDERATED_ACTION_MODAL_TIMEOUT_MS } from '../action-modal-dispatcher'
|
|
16
17
|
import { ApiProvider, type ApiClient } from '../api-context'
|
|
17
18
|
import {
|
|
18
19
|
registerActionComponent,
|
|
@@ -22,6 +23,7 @@ import {
|
|
|
22
23
|
|
|
23
24
|
afterEach(() => {
|
|
24
25
|
cleanup()
|
|
26
|
+
vi.useRealTimers()
|
|
25
27
|
unregisterActionComponent('SalesOrder', 'authorize_credit')
|
|
26
28
|
})
|
|
27
29
|
|
|
@@ -58,7 +60,13 @@ function renderDispatcher(action: ActionMetadata = creditAction) {
|
|
|
58
60
|
|
|
59
61
|
describe('ActionModalDispatcher custom modal contract', () => {
|
|
60
62
|
it('errors when modal is declared but no component is registered (no generic confirm)', () => {
|
|
63
|
+
vi.useFakeTimers()
|
|
64
|
+
const err = vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
61
65
|
renderDispatcher()
|
|
66
|
+
act(() => {
|
|
67
|
+
vi.advanceTimersByTime(FEDERATED_ACTION_MODAL_TIMEOUT_MS)
|
|
68
|
+
})
|
|
69
|
+
err.mockRestore()
|
|
62
70
|
expect(screen.getByText('No se pudo cargar el formulario')).toBeTruthy()
|
|
63
71
|
expect(screen.queryByText('customers.action.authorize_credit_confirm_message')).toBeNull()
|
|
64
72
|
expect(screen.queryByRole('button', { name: /autorizar a crédito/i })).toBeNull()
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
//
|
|
3
|
+
// Federated action modals are deterministic: an action that declares
|
|
4
|
+
// `modal: "<addon>.<action>"` shows a loading state while the remote loads,
|
|
5
|
+
// swaps to the registered component when it lands, and errors after the
|
|
6
|
+
// timeout — it never renders the generic ConfirmActionDialog.
|
|
7
|
+
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
8
|
+
import { act, cleanup, render, screen } from '@testing-library/react'
|
|
9
|
+
|
|
10
|
+
// Stable identities: a fresh `t` per render spins the record dialog's effects
|
|
11
|
+
// into an infinite render loop (same as dynamic-kanban.test).
|
|
12
|
+
const USE_TRANSLATION = {
|
|
13
|
+
t: (_k: string, opts?: { defaultValue?: string }) => opts?.defaultValue ?? _k,
|
|
14
|
+
i18n: { language: 'es' },
|
|
15
|
+
}
|
|
16
|
+
vi.mock('react-i18next', () => ({
|
|
17
|
+
useTranslation: () => USE_TRANSLATION,
|
|
18
|
+
}))
|
|
19
|
+
|
|
20
|
+
vi.mock('@tanstack/react-router', () => ({
|
|
21
|
+
useNavigate: () => () => {},
|
|
22
|
+
}))
|
|
23
|
+
|
|
24
|
+
import { ActionModalDispatcher, FEDERATED_ACTION_MODAL_TIMEOUT_MS } from '../action-modal-dispatcher'
|
|
25
|
+
import { setFederatedActionLoader } from '../federated-action-loader'
|
|
26
|
+
import { useDynamicRowActions } from '../dynamic-row-actions'
|
|
27
|
+
import { ModelActionToolbar } from '../model-action-toolbar'
|
|
28
|
+
import { ApiProvider, type ApiClient } from '../api-context'
|
|
29
|
+
import type { ActionDefinition, TableMetadata } from '../types'
|
|
30
|
+
import {
|
|
31
|
+
registerActionComponent,
|
|
32
|
+
unregisterActionComponent,
|
|
33
|
+
type ActionMetadata,
|
|
34
|
+
type ActionModalProps,
|
|
35
|
+
} from '@asteby/metacore-sdk'
|
|
36
|
+
|
|
37
|
+
afterEach(() => {
|
|
38
|
+
cleanup()
|
|
39
|
+
vi.useRealTimers()
|
|
40
|
+
vi.restoreAllMocks()
|
|
41
|
+
setFederatedActionLoader(null)
|
|
42
|
+
unregisterActionComponent('Order', 'return')
|
|
43
|
+
unregisterActionComponent('Device', 'create_and_connect')
|
|
44
|
+
unregisterActionComponent('Invoice', 'register_payment')
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
const noopApi: ApiClient = {
|
|
48
|
+
get: vi.fn().mockResolvedValue({ data: {} }),
|
|
49
|
+
post: vi.fn().mockResolvedValue({ data: { success: true } }),
|
|
50
|
+
delete: vi.fn().mockResolvedValue({ data: { success: true } }),
|
|
51
|
+
} as unknown as ApiClient
|
|
52
|
+
|
|
53
|
+
const returnAction: ActionMetadata = {
|
|
54
|
+
key: 'return',
|
|
55
|
+
label: 'Devolver',
|
|
56
|
+
icon: 'Undo2',
|
|
57
|
+
modal: 'returns.return',
|
|
58
|
+
confirm: true,
|
|
59
|
+
confirmMessage: 'Devolver?',
|
|
60
|
+
executable: true,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function ReturnModal({ action }: ActionModalProps) {
|
|
64
|
+
return <div data-testid="return-modal">{action.modal}</div>
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function renderDispatcher(action: ActionMetadata = returnAction) {
|
|
68
|
+
return render(
|
|
69
|
+
<ApiProvider client={noopApi}>
|
|
70
|
+
<ActionModalDispatcher
|
|
71
|
+
open
|
|
72
|
+
onOpenChange={() => {}}
|
|
73
|
+
action={action}
|
|
74
|
+
model="Order"
|
|
75
|
+
record={{ id: '1' } as any}
|
|
76
|
+
endpoint="/data/Order"
|
|
77
|
+
onSuccess={() => {}}
|
|
78
|
+
/>
|
|
79
|
+
</ApiProvider>,
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
describe('ActionModalDispatcher with a declared federated modal', () => {
|
|
84
|
+
it('shows loading, then the component once it registers late — never the confirm', () => {
|
|
85
|
+
renderDispatcher()
|
|
86
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
87
|
+
expect(screen.queryByText('Devolver?')).toBeNull()
|
|
88
|
+
|
|
89
|
+
act(() => {
|
|
90
|
+
registerActionComponent('Order', 'return', ReturnModal as never)
|
|
91
|
+
})
|
|
92
|
+
expect(screen.getByTestId('return-modal').textContent).toBe('returns.return')
|
|
93
|
+
expect(screen.queryByTestId('federated-action-loading')).toBeNull()
|
|
94
|
+
expect(screen.queryByText('Devolver?')).toBeNull()
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
it('shows MissingCustomActionModal after the timeout when nothing registers', () => {
|
|
98
|
+
vi.useFakeTimers()
|
|
99
|
+
const err = vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
100
|
+
renderDispatcher()
|
|
101
|
+
act(() => {
|
|
102
|
+
vi.advanceTimersByTime(FEDERATED_ACTION_MODAL_TIMEOUT_MS - 1)
|
|
103
|
+
})
|
|
104
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
105
|
+
expect(screen.queryByText('No se pudo cargar el formulario')).toBeNull()
|
|
106
|
+
|
|
107
|
+
act(() => {
|
|
108
|
+
vi.advanceTimersByTime(1)
|
|
109
|
+
})
|
|
110
|
+
expect(screen.getByText('No se pudo cargar el formulario')).toBeTruthy()
|
|
111
|
+
expect(screen.queryByText('Devolver?')).toBeNull()
|
|
112
|
+
expect(err).toHaveBeenCalledWith(
|
|
113
|
+
expect.stringContaining('did not register in time'),
|
|
114
|
+
expect.objectContaining({ model: 'Order', action: 'return', modal: 'returns.return' }),
|
|
115
|
+
)
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
it('still asks the host and times out on a slug without a valid prefix', () => {
|
|
119
|
+
vi.useFakeTimers()
|
|
120
|
+
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
121
|
+
const err = vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
122
|
+
const loader = vi.fn()
|
|
123
|
+
setFederatedActionLoader(loader)
|
|
124
|
+
renderDispatcher({ ...returnAction, modal: 'noprefix' })
|
|
125
|
+
expect(loader).toHaveBeenCalledWith({ model: 'Order', actionKey: 'return', modal: 'noprefix' })
|
|
126
|
+
expect(warn).toHaveBeenCalled()
|
|
127
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
128
|
+
|
|
129
|
+
act(() => {
|
|
130
|
+
vi.advanceTimersByTime(FEDERATED_ACTION_MODAL_TIMEOUT_MS)
|
|
131
|
+
})
|
|
132
|
+
expect(screen.getByText('No se pudo cargar el formulario')).toBeTruthy()
|
|
133
|
+
expect(screen.queryByText('Devolver?')).toBeNull()
|
|
134
|
+
expect(err).toHaveBeenCalledWith(
|
|
135
|
+
expect.stringContaining('did not register in time'),
|
|
136
|
+
expect.objectContaining({ model: 'Order', action: 'return', modal: 'noprefix' }),
|
|
137
|
+
)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
it('asks the host loader for the remote and re-asks while waiting', () => {
|
|
141
|
+
vi.useFakeTimers()
|
|
142
|
+
vi.spyOn(console, 'error').mockImplementation(() => {})
|
|
143
|
+
const loader = vi.fn()
|
|
144
|
+
setFederatedActionLoader(loader)
|
|
145
|
+
renderDispatcher()
|
|
146
|
+
expect(loader).toHaveBeenCalledTimes(1)
|
|
147
|
+
expect(loader).toHaveBeenCalledWith({ model: 'Order', actionKey: 'return', modal: 'returns.return' })
|
|
148
|
+
|
|
149
|
+
act(() => {
|
|
150
|
+
vi.advanceTimersByTime(4_000)
|
|
151
|
+
})
|
|
152
|
+
expect(loader.mock.calls.length).toBeGreaterThan(1)
|
|
153
|
+
|
|
154
|
+
// Registration stops the retries.
|
|
155
|
+
act(() => {
|
|
156
|
+
registerActionComponent('Order', 'return', ReturnModal as never)
|
|
157
|
+
})
|
|
158
|
+
const calls = loader.mock.calls.length
|
|
159
|
+
act(() => {
|
|
160
|
+
vi.advanceTimersByTime(10_000)
|
|
161
|
+
})
|
|
162
|
+
expect(loader.mock.calls.length).toBe(calls)
|
|
163
|
+
expect(screen.getByTestId('return-modal')).toBeTruthy()
|
|
164
|
+
})
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
describe('useDynamicRowActions', () => {
|
|
168
|
+
function Harness({ metadata, actionKey }: { metadata: TableMetadata; actionKey: string }) {
|
|
169
|
+
const { handleInternalAction, dialogs } = useDynamicRowActions({
|
|
170
|
+
model: 'Order',
|
|
171
|
+
metadata,
|
|
172
|
+
onRefresh: () => {},
|
|
173
|
+
})
|
|
174
|
+
return (
|
|
175
|
+
<>
|
|
176
|
+
<button onClick={() => handleInternalAction(actionKey, { id: '1' })}>run</button>
|
|
177
|
+
{dialogs}
|
|
178
|
+
</>
|
|
179
|
+
)
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function renderHarness(action: Record<string, unknown>) {
|
|
183
|
+
const metadata = { actions: [action] } as unknown as TableMetadata
|
|
184
|
+
render(
|
|
185
|
+
<ApiProvider client={noopApi}>
|
|
186
|
+
<Harness metadata={metadata} actionKey={action.key as string} />
|
|
187
|
+
</ApiProvider>,
|
|
188
|
+
)
|
|
189
|
+
act(() => {
|
|
190
|
+
screen.getByText('run').click()
|
|
191
|
+
})
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
it('keeps `modal` on the action it hands the dispatcher', () => {
|
|
195
|
+
registerActionComponent('Order', 'return', ReturnModal as never)
|
|
196
|
+
renderHarness({ ...returnAction, name: 'return', class: '', type: 'custom' })
|
|
197
|
+
expect(screen.getByTestId('return-modal').textContent).toBe('returns.return')
|
|
198
|
+
expect(screen.queryByText('Devolver?')).toBeNull()
|
|
199
|
+
})
|
|
200
|
+
|
|
201
|
+
it('honors a host-injected `modal` override on another addon\'s confirm action', () => {
|
|
202
|
+
// customers declares Invoice.register_payment as a plain confirm; the
|
|
203
|
+
// optional collections addon overrides it and the host injects `modal`.
|
|
204
|
+
function PaymentModal({ action }: ActionModalProps) {
|
|
205
|
+
return <div data-testid="payment-modal">{action.modal}</div>
|
|
206
|
+
}
|
|
207
|
+
const override = {
|
|
208
|
+
key: 'register_payment',
|
|
209
|
+
label: 'Registrar pago',
|
|
210
|
+
icon: 'Wallet',
|
|
211
|
+
type: 'custom',
|
|
212
|
+
confirmMessage: 'Registrar pago?',
|
|
213
|
+
executable: true,
|
|
214
|
+
modal: 'collections.register_payment',
|
|
215
|
+
}
|
|
216
|
+
const metadata = { actions: [override] } as unknown as TableMetadata
|
|
217
|
+
function InvoiceHarness() {
|
|
218
|
+
const { handleInternalAction, dialogs } = useDynamicRowActions({
|
|
219
|
+
model: 'Invoice',
|
|
220
|
+
metadata,
|
|
221
|
+
onRefresh: () => {},
|
|
222
|
+
})
|
|
223
|
+
return (
|
|
224
|
+
<>
|
|
225
|
+
<button onClick={() => handleInternalAction('register_payment', { id: '1' })}>pay</button>
|
|
226
|
+
{dialogs}
|
|
227
|
+
</>
|
|
228
|
+
)
|
|
229
|
+
}
|
|
230
|
+
render(
|
|
231
|
+
<ApiProvider client={noopApi}>
|
|
232
|
+
<InvoiceHarness />
|
|
233
|
+
</ApiProvider>,
|
|
234
|
+
)
|
|
235
|
+
act(() => {
|
|
236
|
+
screen.getByText('pay').click()
|
|
237
|
+
})
|
|
238
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
239
|
+
expect(screen.queryByText('Registrar pago?')).toBeNull()
|
|
240
|
+
act(() => {
|
|
241
|
+
registerActionComponent('Invoice', 'register_payment', PaymentModal as never, 'collections')
|
|
242
|
+
})
|
|
243
|
+
expect(screen.getByTestId('payment-modal').textContent).toBe('collections.register_payment')
|
|
244
|
+
})
|
|
245
|
+
|
|
246
|
+
it('opens the dispatcher for a modal-only action (no fields/confirm/executable)', () => {
|
|
247
|
+
renderHarness({ key: 'return', label: 'Devolver', icon: 'Undo2', modal: 'returns.return', type: 'custom' })
|
|
248
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
249
|
+
})
|
|
250
|
+
})
|
|
251
|
+
|
|
252
|
+
describe('ModelActionToolbar', () => {
|
|
253
|
+
// Prod case: link-inbox's Device.create_and_connect ("Conectar WhatsApp")
|
|
254
|
+
// is a `placement: "create"` toolbar action with `modal`. The toolbar used
|
|
255
|
+
// to drop `modal`, open the generic confirm and POST the action with no
|
|
256
|
+
// record → "action payload missing the device record id".
|
|
257
|
+
it('placement create + modal: loading, then the late-registered component — never the confirm', () => {
|
|
258
|
+
vi.useFakeTimers()
|
|
259
|
+
const api = {
|
|
260
|
+
get: vi.fn().mockResolvedValue({ data: {} }),
|
|
261
|
+
post: vi.fn().mockResolvedValue({ data: { success: true } }),
|
|
262
|
+
} as unknown as ApiClient
|
|
263
|
+
const onChange = vi.fn()
|
|
264
|
+
const loader = vi.fn()
|
|
265
|
+
setFederatedActionLoader(loader)
|
|
266
|
+
const connect = {
|
|
267
|
+
key: 'create_and_connect',
|
|
268
|
+
name: 'create_and_connect',
|
|
269
|
+
label: 'Conectar WhatsApp',
|
|
270
|
+
icon: 'Plus',
|
|
271
|
+
class: '',
|
|
272
|
+
type: 'custom',
|
|
273
|
+
placement: 'create',
|
|
274
|
+
modal: 'link_inbox.create_and_connect',
|
|
275
|
+
confirm: true,
|
|
276
|
+
confirmMessage: 'Conectar?',
|
|
277
|
+
executable: true,
|
|
278
|
+
} as ActionDefinition
|
|
279
|
+
render(
|
|
280
|
+
<ApiProvider client={api}>
|
|
281
|
+
<ModelActionToolbar model="Device" actions={[connect]} onChange={onChange} />
|
|
282
|
+
</ApiProvider>,
|
|
283
|
+
)
|
|
284
|
+
act(() => {
|
|
285
|
+
screen.getByText('Conectar WhatsApp').click()
|
|
286
|
+
})
|
|
287
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
288
|
+
expect(loader).toHaveBeenCalledWith({
|
|
289
|
+
model: 'Device',
|
|
290
|
+
actionKey: 'create_and_connect',
|
|
291
|
+
modal: 'link_inbox.create_and_connect',
|
|
292
|
+
})
|
|
293
|
+
|
|
294
|
+
// The remote is slow: still loading, no confirm, nothing executed.
|
|
295
|
+
act(() => {
|
|
296
|
+
vi.advanceTimersByTime(5_000)
|
|
297
|
+
})
|
|
298
|
+
expect(screen.getByTestId('federated-action-loading')).toBeTruthy()
|
|
299
|
+
expect(screen.queryByText('Conectar?')).toBeNull()
|
|
300
|
+
expect(screen.queryByRole('alertdialog')).toBeNull()
|
|
301
|
+
|
|
302
|
+
function ConnectModal({ action }: ActionModalProps) {
|
|
303
|
+
return <div data-testid="connect-modal">{action.modal}</div>
|
|
304
|
+
}
|
|
305
|
+
act(() => {
|
|
306
|
+
registerActionComponent('Device', 'create_and_connect', ConnectModal as never, 'link_inbox')
|
|
307
|
+
})
|
|
308
|
+
expect(screen.getByTestId('connect-modal').textContent).toBe('link_inbox.create_and_connect')
|
|
309
|
+
expect(screen.queryByTestId('federated-action-loading')).toBeNull()
|
|
310
|
+
expect(screen.queryByText('Conectar?')).toBeNull()
|
|
311
|
+
expect(screen.queryByRole('alertdialog')).toBeNull()
|
|
312
|
+
expect(api.post).not.toHaveBeenCalled()
|
|
313
|
+
expect(onChange).not.toHaveBeenCalled()
|
|
314
|
+
})
|
|
315
|
+
})
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
// ActionModalDispatcher — renders the right modal for a custom action:
|
|
2
2
|
// 1) Custom component from the SDK registry → use it
|
|
3
|
-
// 2) action.modal set but no registered component →
|
|
4
|
-
//
|
|
3
|
+
// 2) action.modal set but no registered component → loading state while the
|
|
4
|
+
// host loads the remote (setFederatedActionLoader); the registry is reactive,
|
|
5
|
+
// so the component renders the moment it registers. Timeout →
|
|
6
|
+
// MissingCustomActionModal (a malformed slug still asks the host, then
|
|
7
|
+
// times out). NEVER falls back to confirm/fields — that
|
|
8
|
+
// hides a broken federated UI.
|
|
5
9
|
// 3) action.fields[] / action.steps[] → GenericActionModal / WizardActionModal
|
|
6
10
|
// 4) action.confirm OR action.confirmMessage → ConfirmActionDialog
|
|
7
11
|
// 5) action.executable (host opened the modal; no modal/fields/confirm) →
|
|
@@ -10,7 +14,7 @@
|
|
|
10
14
|
//
|
|
11
15
|
// The host injects its axios-like client via <ApiProvider>; we no longer
|
|
12
16
|
// depend on a bundler alias to `@/lib/api`.
|
|
13
|
-
import { useState, useEffect, useMemo } from 'react'
|
|
17
|
+
import { useState, useEffect, useMemo, useSyncExternalStore } from 'react'
|
|
14
18
|
import { useTranslation } from 'react-i18next'
|
|
15
19
|
import {
|
|
16
20
|
Dialog,
|
|
@@ -76,7 +80,9 @@ import {
|
|
|
76
80
|
type ActionMetadata,
|
|
77
81
|
type ActionModalProps,
|
|
78
82
|
getActionComponent,
|
|
83
|
+
subscribeActionComponents,
|
|
79
84
|
} from '@asteby/metacore-sdk'
|
|
85
|
+
import { requestFederatedAction } from './federated-action-loader'
|
|
80
86
|
|
|
81
87
|
export type { ActionMetadata, ActionModalProps }
|
|
82
88
|
|
|
@@ -284,10 +290,10 @@ export function ActionModalDispatcher({
|
|
|
284
290
|
endpoint,
|
|
285
291
|
onSuccess,
|
|
286
292
|
}: ActionModalProps) {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
)
|
|
293
|
+
// Reactive read: a federated remote usually registers AFTER the first
|
|
294
|
+
// render, and a memoized lookup would pin the fallback forever.
|
|
295
|
+
const readComponent = () => getActionComponent(model, action.key)
|
|
296
|
+
const CustomComponent = useSyncExternalStore(subscribeActionComponents, readComponent, readComponent)
|
|
291
297
|
|
|
292
298
|
if (CustomComponent) {
|
|
293
299
|
return (
|
|
@@ -303,11 +309,12 @@ export function ActionModalDispatcher({
|
|
|
303
309
|
)
|
|
304
310
|
}
|
|
305
311
|
|
|
306
|
-
// Declarative custom slot (`modal: "addon.action"`).
|
|
307
|
-
//
|
|
312
|
+
// Declarative custom slot (`modal: "addon.action"`). Wait for the remote,
|
|
313
|
+
// then a hard error — confirm/fields generics look "fine" and hide a
|
|
314
|
+
// missing remote.
|
|
308
315
|
if (action.modal) {
|
|
309
316
|
return (
|
|
310
|
-
<
|
|
317
|
+
<PendingCustomActionModal
|
|
311
318
|
open={open}
|
|
312
319
|
onOpenChange={onOpenChange}
|
|
313
320
|
action={action}
|
|
@@ -367,6 +374,91 @@ export function ActionModalDispatcher({
|
|
|
367
374
|
return null
|
|
368
375
|
}
|
|
369
376
|
|
|
377
|
+
/** How long an action with `modal` waits for its federated component. */
|
|
378
|
+
export const FEDERATED_ACTION_MODAL_TIMEOUT_MS = 20_000
|
|
379
|
+
/** How often the host loader is re-invoked while waiting. */
|
|
380
|
+
const FEDERATED_ACTION_RETRY_MS = 2_000
|
|
381
|
+
const MODAL_SLUG_RE = /^[\w-]+(\.[\w-]+)+$/
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* `modal` declared, component not registered yet: show a loading dialog, ask
|
|
385
|
+
* the host to load the remote (re-asking periodically), and give up with
|
|
386
|
+
* MissingCustomActionModal after the timeout. The dispatcher swaps this out
|
|
387
|
+
* for the real component as soon as the registry reports it. `modal` is
|
|
388
|
+
* honored wherever it came from — the addon's own manifest or a host-injected
|
|
389
|
+
* override from another addon that registerAction()s over it.
|
|
390
|
+
*/
|
|
391
|
+
function PendingCustomActionModal({
|
|
392
|
+
open,
|
|
393
|
+
onOpenChange,
|
|
394
|
+
action,
|
|
395
|
+
model,
|
|
396
|
+
}: {
|
|
397
|
+
open: boolean
|
|
398
|
+
onOpenChange: (open: boolean) => void
|
|
399
|
+
action: ActionMetadata
|
|
400
|
+
model: string
|
|
401
|
+
}) {
|
|
402
|
+
const { t } = useTranslation()
|
|
403
|
+
const slug = action.modal || ''
|
|
404
|
+
const [timedOut, setTimedOut] = useState(false)
|
|
405
|
+
|
|
406
|
+
useEffect(() => {
|
|
407
|
+
if (!open) return
|
|
408
|
+
// A slug without a valid `<addon>.<name>` prefix still goes to the
|
|
409
|
+
// host loader (it decides which remote to load) and still times out —
|
|
410
|
+
// the component is looked up by (model, action.key), never by slug.
|
|
411
|
+
// Warn so a malformed manifest is diagnosable before the timeout.
|
|
412
|
+
const validSlug = MODAL_SLUG_RE.test(slug)
|
|
413
|
+
if (!validSlug) {
|
|
414
|
+
console.warn('[metacore] action modal slug has no valid "<addon>.<name>" prefix', {
|
|
415
|
+
model,
|
|
416
|
+
action: action.key,
|
|
417
|
+
modal: slug,
|
|
418
|
+
})
|
|
419
|
+
}
|
|
420
|
+
setTimedOut(false)
|
|
421
|
+
const req = { model, actionKey: action.key, modal: slug }
|
|
422
|
+
requestFederatedAction(req)
|
|
423
|
+
const retry = setInterval(() => requestFederatedAction(req), FEDERATED_ACTION_RETRY_MS)
|
|
424
|
+
const giveUp = setTimeout(() => {
|
|
425
|
+
clearInterval(retry)
|
|
426
|
+
console.error('[metacore] federated action modal did not register in time', {
|
|
427
|
+
model,
|
|
428
|
+
action: action.key,
|
|
429
|
+
modal: slug,
|
|
430
|
+
validSlug,
|
|
431
|
+
timeoutMs: FEDERATED_ACTION_MODAL_TIMEOUT_MS,
|
|
432
|
+
})
|
|
433
|
+
setTimedOut(true)
|
|
434
|
+
}, FEDERATED_ACTION_MODAL_TIMEOUT_MS)
|
|
435
|
+
return () => {
|
|
436
|
+
clearInterval(retry)
|
|
437
|
+
clearTimeout(giveUp)
|
|
438
|
+
}
|
|
439
|
+
}, [open, model, action.key, slug])
|
|
440
|
+
|
|
441
|
+
if (timedOut) {
|
|
442
|
+
return <MissingCustomActionModal open={open} onOpenChange={onOpenChange} action={action} model={model} />
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return (
|
|
446
|
+
<Dialog open={open} onOpenChange={onOpenChange}>
|
|
447
|
+
<DialogContent>
|
|
448
|
+
<DialogHeader>
|
|
449
|
+
<DialogTitle>{t(action.label, { defaultValue: action.label })}</DialogTitle>
|
|
450
|
+
<DialogDescription>
|
|
451
|
+
{t('dynamic.action_modal_loading', { defaultValue: 'Cargando…' })}
|
|
452
|
+
</DialogDescription>
|
|
453
|
+
</DialogHeader>
|
|
454
|
+
<div className="flex justify-center py-6" data-testid="federated-action-loading">
|
|
455
|
+
<Loader2 className="h-6 w-6 animate-spin text-muted-foreground" />
|
|
456
|
+
</div>
|
|
457
|
+
</DialogContent>
|
|
458
|
+
</Dialog>
|
|
459
|
+
)
|
|
460
|
+
}
|
|
461
|
+
|
|
370
462
|
/** Shown when the action declares `modal` but no federated component registered. */
|
|
371
463
|
function MissingCustomActionModal({
|
|
372
464
|
open,
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
// view / edit → host `onAction(action, row)` when provided (string
|
|
12
12
|
// contract), else the built-in record dialog.
|
|
13
13
|
// link action → navigate to the action's templated `linkUrl`.
|
|
14
|
-
// custom (fields/
|
|
15
|
-
// executable)
|
|
14
|
+
// custom (modal/fields/
|
|
15
|
+
// confirm/executable) → opens the ActionModal via the dispatcher.
|
|
16
16
|
// anything else → host `onAction` + refresh (or just refresh).
|
|
17
17
|
//
|
|
18
18
|
// The host `onAction` contract is a STRING action key on purpose — the existing
|
|
@@ -120,24 +120,20 @@ export function useDynamicRowActions({
|
|
|
120
120
|
return
|
|
121
121
|
}
|
|
122
122
|
const actionDef = metadata?.actions?.find((a) => a.key === action)
|
|
123
|
-
// Open the dispatcher when there is ANY UI surface (
|
|
124
|
-
// steps, confirm bool, confirmMessage, or host
|
|
125
|
-
// confirm_message without confirm:true used to fall
|
|
126
|
-
// then render null — derive confirm so the
|
|
127
|
-
|
|
123
|
+
// Open the dispatcher when there is ANY UI surface (federated `modal`,
|
|
124
|
+
// fields, wizard steps, confirm bool, confirmMessage, or host
|
|
125
|
+
// `executable`). A confirm_message without confirm:true used to fall
|
|
126
|
+
// through / open and then render null — derive confirm so the
|
|
127
|
+
// ConfirmActionDialog path wins. Pass the WHOLE definition: a
|
|
128
|
+
// cherry-picked copy dropped `modal` and the dispatcher fell back to
|
|
129
|
+
// the generic confirm while the remote was still loading.
|
|
130
|
+
if (actionDef && (actionDef.modal || actionDef.fields?.length || actionDef.steps?.length || actionDef.confirm || actionDef.confirmMessage || actionDef.executable)) {
|
|
128
131
|
setActionModal({
|
|
129
132
|
open: true,
|
|
130
133
|
action: {
|
|
131
|
-
|
|
132
|
-
label: actionDef.label,
|
|
134
|
+
...actionDef,
|
|
133
135
|
icon: actionDef.icon || 'Zap',
|
|
134
|
-
color: actionDef.color,
|
|
135
136
|
confirm: !!(actionDef.confirm || actionDef.confirmMessage),
|
|
136
|
-
confirmMessage: actionDef.confirmMessage,
|
|
137
|
-
fields: actionDef.fields,
|
|
138
|
-
steps: actionDef.steps,
|
|
139
|
-
requiresState: actionDef.requiresState,
|
|
140
|
-
executable: actionDef.executable,
|
|
141
137
|
},
|
|
142
138
|
record: row,
|
|
143
139
|
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Host hook that loads the federated remote behind an action's `modal` slug.
|
|
2
|
+
//
|
|
3
|
+
// The SDK does not know how the host resolves addon remotes (Module Federation
|
|
4
|
+
// manifests, fibers, lazy bundles). When ActionModalDispatcher opens an action
|
|
5
|
+
// that declares `modal` and no component is registered yet, it asks the host to
|
|
6
|
+
// load it through this hook and waits for the registry to report the component.
|
|
7
|
+
// The dispatcher re-invokes the loader while it waits, so a loader installed
|
|
8
|
+
// after the first click still gets called.
|
|
9
|
+
|
|
10
|
+
export type FederatedActionLoader = (req: {
|
|
11
|
+
model: string
|
|
12
|
+
actionKey: string
|
|
13
|
+
modal?: string
|
|
14
|
+
}) => void | Promise<void>
|
|
15
|
+
|
|
16
|
+
let loader: FederatedActionLoader | null = null
|
|
17
|
+
|
|
18
|
+
/** Install (or clear with `null`) the host's federated action loader. */
|
|
19
|
+
export function setFederatedActionLoader(fn: FederatedActionLoader | null): void {
|
|
20
|
+
loader = fn
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Ask the host to load the remote for (model, actionKey). No-op without a
|
|
25
|
+
* loader; loader errors are logged, never thrown — the dispatcher keeps waiting
|
|
26
|
+
* until its timeout and then shows the explicit error.
|
|
27
|
+
*/
|
|
28
|
+
export function requestFederatedAction(req: { model: string; actionKey: string; modal?: string }): void {
|
|
29
|
+
if (!loader) return
|
|
30
|
+
try {
|
|
31
|
+
const pending = loader(req)
|
|
32
|
+
if (pending && typeof (pending as Promise<void>).catch === 'function') {
|
|
33
|
+
;(pending as Promise<void>).catch((err) => {
|
|
34
|
+
console.warn('[metacore] federated action loader failed', req, err)
|
|
35
|
+
})
|
|
36
|
+
}
|
|
37
|
+
} catch (err) {
|
|
38
|
+
console.warn('[metacore] federated action loader failed', req, err)
|
|
39
|
+
}
|
|
40
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -174,8 +174,10 @@ export * from './form-layout-ui'
|
|
|
174
174
|
export { FieldGrid, FieldCell, FieldLabel } from './field-grid'
|
|
175
175
|
export {
|
|
176
176
|
ActionModalDispatcher,
|
|
177
|
+
FEDERATED_ACTION_MODAL_TIMEOUT_MS,
|
|
177
178
|
type ActionModalProps,
|
|
178
179
|
} from './action-modal-dispatcher'
|
|
180
|
+
export { setFederatedActionLoader, type FederatedActionLoader } from './federated-action-loader'
|
|
179
181
|
export {
|
|
180
182
|
ModelActionToolbar,
|
|
181
183
|
useModelActions,
|
|
@@ -83,18 +83,9 @@ export function humanizeActionLabel(label: string): string {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
function toActionMetadata(a: ActionDefinition): ActionMetadata {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
icon: a.icon || 'Zap',
|
|
90
|
-
color: a.color,
|
|
91
|
-
confirm: a.confirm,
|
|
92
|
-
confirmMessage: a.confirmMessage,
|
|
93
|
-
fields: a.fields,
|
|
94
|
-
requiresState: a.requiresState,
|
|
95
|
-
executable: a.executable,
|
|
96
|
-
placement: a.placement,
|
|
97
|
-
}
|
|
86
|
+
// Spread, don't cherry-pick: a hand-picked copy dropped `modal`/`steps`
|
|
87
|
+
// and the dispatcher fell back to generics for federated/wizard actions.
|
|
88
|
+
return { ...a, icon: a.icon || 'Zap' }
|
|
98
89
|
}
|
|
99
90
|
|
|
100
91
|
/**
|
package/src/types.ts
CHANGED
|
@@ -671,6 +671,8 @@ export interface ActionDefinition {
|
|
|
671
671
|
steps?: ActionStep[]
|
|
672
672
|
requiresState?: string[]
|
|
673
673
|
executable?: boolean
|
|
674
|
+
/** Federated modal slug "<addon_key>.<action_key>" (manifest `modal`). */
|
|
675
|
+
modal?: string
|
|
674
676
|
/**
|
|
675
677
|
* Where the host surfaces the trigger. Mirrors manifest/v3 Action.placement.
|
|
676
678
|
* "row" (default) — per-row table action.
|
|
@@ -719,5 +721,7 @@ export interface ActionMetadata {
|
|
|
719
721
|
steps?: ActionStep[]
|
|
720
722
|
requiresState?: string[]
|
|
721
723
|
executable?: boolean
|
|
724
|
+
/** Federated modal slug "<addon_key>.<action_key>"; see ActionModalDispatcher. */
|
|
725
|
+
modal?: string
|
|
722
726
|
placement?: 'row' | 'table' | 'create'
|
|
723
727
|
}
|