@ketvietlab/ketsuite 0.1.30 → 0.1.31
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/dist/cli.js +1 -1
- package/dist/modules/backend/design/client/backend-shell.d.mts.map +1 -1
- package/dist/modules/backend/design/client/backend-shell.mjs +1 -1
- package/dist/modules/backend/design/client/backend-shell.mjs.map +2 -2
- package/dist/modules/backend/design/client/ket-table.d.mts.map +1 -1
- package/dist/modules/backend/design/client/ket-table.mjs +1 -1
- package/dist/modules/backend/design/client/ket-table.mjs.map +2 -2
- package/dist/modules/backend/design/client/search-filter.d.mts.map +1 -1
- package/dist/modules/backend/design/client/search-filter.mjs +1 -1
- package/dist/modules/backend/design/client/search-filter.mjs.map +2 -2
- package/dist/modules/backend/design/content.css +5 -5
- package/dist/modules/backend/design/controls.css +10 -36
- package/dist/modules/backend/design/forms.css +2 -188
- package/dist/modules/backend/design/lists.css +1 -50
- package/dist/modules/crm_backend/client/crm-case-modal.d.mts +8 -8
- package/dist/modules/crm_backend/client/crm-case-modal.d.mts.map +1 -1
- package/dist/modules/crm_backend/client/crm-case-modal.mjs +1 -1
- package/dist/modules/crm_backend/client/crm-case-modal.mjs.map +3 -3
- package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts +35 -35
- package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts.map +1 -1
- package/dist/modules/crm_backend/client/crm-configuration-modal.mjs +1 -1
- package/dist/modules/crm_backend/client/crm-configuration-modal.mjs.map +3 -3
- package/dist/modules/product_backend/client/attribute-modal.d.mts +5 -5
- package/dist/modules/product_backend/client/attribute-modal.d.mts.map +1 -1
- package/dist/modules/product_backend/client/attribute-modal.mjs +1 -1
- package/dist/modules/product_backend/client/attribute-modal.mjs.map +3 -3
- package/dist/modules/product_backend/client/product-modal.d.mts +8 -8
- package/dist/modules/product_backend/client/product-modal.d.mts.map +1 -1
- package/dist/modules/product_backend/client/product-modal.mjs +1 -1
- package/dist/modules/product_backend/client/product-modal.mjs.map +3 -3
- package/dist/modules/product_backend/client/variant-editor.d.mts +2 -2
- package/dist/modules/product_backend/client/variant-editor.d.mts.map +1 -1
- package/dist/modules/product_backend/client/variant-editor.mjs +1 -1
- package/dist/modules/product_backend/client/variant-editor.mjs.map +2 -2
- package/dist/modules/purchase_backend/client/purchase-order-modal.d.mts +5 -5
- package/dist/modules/purchase_backend/client/purchase-order-modal.d.mts.map +1 -1
- package/dist/modules/purchase_backend/client/purchase-order-modal.mjs +1 -1
- package/dist/modules/purchase_backend/client/purchase-order-modal.mjs.map +3 -3
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.d.mts +4 -4
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.d.mts.map +1 -1
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.mjs +1 -1
- package/dist/modules/purchase_backend/client/vendor-pricelist-modal.mjs.map +3 -3
- package/dist/modules/sale_backend/client/invoicing-policy-modal.d.mts +4 -4
- package/dist/modules/sale_backend/client/invoicing-policy-modal.d.mts.map +1 -1
- package/dist/modules/sale_backend/client/invoicing-policy-modal.mjs +1 -1
- package/dist/modules/sale_backend/client/invoicing-policy-modal.mjs.map +3 -3
- package/dist/modules/sale_backend/client/sale-order-modal.d.mts +5 -5
- package/dist/modules/sale_backend/client/sale-order-modal.d.mts.map +1 -1
- package/dist/modules/sale_backend/client/sale-order-modal.mjs +1 -1
- package/dist/modules/sale_backend/client/sale-order-modal.mjs.map +3 -3
- package/dist/modules/stock_backend/client/inventory-count-modal.d.mts +4 -4
- package/dist/modules/stock_backend/client/inventory-count-modal.d.mts.map +1 -1
- package/dist/modules/stock_backend/client/inventory-count-modal.mjs +1 -1
- package/dist/modules/stock_backend/client/inventory-count-modal.mjs.map +3 -3
- package/dist/modules/stock_backend/client/stock-configuration-modal.d.mts +14 -14
- package/dist/modules/stock_backend/client/stock-configuration-modal.d.mts.map +1 -1
- package/dist/modules/stock_backend/client/stock-configuration-modal.mjs +1 -1
- package/dist/modules/stock_backend/client/stock-configuration-modal.mjs.map +3 -3
- package/dist/modules/stock_backend/client/stock-transfer-modal.d.mts +4 -4
- package/dist/modules/stock_backend/client/stock-transfer-modal.d.mts.map +1 -1
- package/dist/modules/stock_backend/client/stock-transfer-modal.mjs +1 -1
- package/dist/modules/stock_backend/client/stock-transfer-modal.mjs.map +3 -3
- package/dist/modules/user_backend/client/access-policy-modal.d.mts +4 -4
- package/dist/modules/user_backend/client/access-policy-modal.d.mts.map +1 -1
- package/dist/modules/user_backend/client/access-policy-modal.mjs +1 -1
- package/dist/modules/user_backend/client/access-policy-modal.mjs.map +3 -3
- package/dist/modules/user_backend/client/role-modal.d.mts +6 -6
- package/dist/modules/user_backend/client/role-modal.d.mts.map +1 -1
- package/dist/modules/user_backend/client/role-modal.mjs +1 -1
- package/dist/modules/user_backend/client/role-modal.mjs.map +3 -3
- package/dist/modules/user_backend/client/user-modal.d.mts +9 -9
- package/dist/modules/user_backend/client/user-modal.d.mts.map +1 -1
- package/dist/modules/user_backend/client/user-modal.mjs +1 -1
- package/dist/modules/user_backend/client/user-modal.mjs.map +3 -3
- package/dist/scaffold/index.js +1 -1
- package/dist/ui/client/record-modal-form.d.ts +10 -0
- package/dist/ui/client/record-modal-form.d.ts.map +1 -1
- package/dist/ui/client/record-modal-form.js +3 -1
- package/dist/ui/client/record-modal-form.js.map +1 -1
- package/dist/ui/client/record-modal.d.ts +9 -1
- package/dist/ui/client/record-modal.d.ts.map +1 -1
- package/dist/ui/client/record-modal.js +78 -17
- package/dist/ui/client/record-modal.js.map +1 -1
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -2
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/record-modal.d.ts +3 -0
- package/dist/ui/record-modal.d.ts.map +1 -1
- package/dist/ui/record-modal.js +15 -1
- package/dist/ui/record-modal.js.map +1 -1
- package/package.json +4 -4
package/dist/scaffold/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
const VERSION = '0.1.
|
|
3
|
+
const VERSION = '0.1.31';
|
|
4
4
|
const TEMPLATES = new URL('./templates/', import.meta.url);
|
|
5
5
|
const LAYOUT = [
|
|
6
6
|
['package.json.tmpl', 'package.json'],
|
|
@@ -10,6 +10,8 @@ export declare const RecordModalForm: (props: {
|
|
|
10
10
|
body?: JSXChild;
|
|
11
11
|
/** Structural edits and retained drafts remain dirty after a view-state render. */
|
|
12
12
|
dirty?: boolean;
|
|
13
|
+
/** Upload a selected or dropped file immediately through this form command. */
|
|
14
|
+
dropzone?: boolean;
|
|
13
15
|
actions?: readonly JSXChild[];
|
|
14
16
|
command?: string | null;
|
|
15
17
|
hidden?: Readonly<Record<string, string>>;
|
|
@@ -40,6 +42,14 @@ export declare const RecordDialogTrigger: (props: {
|
|
|
40
42
|
id?: string | null;
|
|
41
43
|
children: JSXChild;
|
|
42
44
|
}) => TemplateResult;
|
|
45
|
+
/** A view-state choice that preserves the current layer's form drafts. */
|
|
46
|
+
export declare const RecordStateTrigger: (props: {
|
|
47
|
+
name: string;
|
|
48
|
+
value: string;
|
|
49
|
+
/** Discard only this inline editor's named drafts when cancelling it. */
|
|
50
|
+
resetFields?: readonly string[];
|
|
51
|
+
children: JSXChild;
|
|
52
|
+
}) => TemplateResult;
|
|
43
53
|
/**
|
|
44
54
|
* A bare form for an action that names no field of its own — generate, remove.
|
|
45
55
|
* `data-layout="actions"` opts the form out of the record-form grid (built for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-modal-form.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal-form.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGtE;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAW;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACzC,+EAA+E;IAC/E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,KAAG,
|
|
1
|
+
{"version":3,"file":"record-modal-form.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal-form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { RECORD_COMMAND_FIELD } from './record-modal.js';
|
|
|
12
12
|
* The form a record modal's runtime submits. A `command` becomes the hidden
|
|
13
13
|
* `__command` field; without one, the submitting button names it.
|
|
14
14
|
*/
|
|
15
|
-
export const RecordModalForm = (props) => (_jsxs("form", { "data-ui": "record-form", method: "post", action: "", "data-record-kind": props.kind, id: props.id, "data-record-dirty": props.dirty === true ? 'true' : null, children: [props.command ? (_jsx("input", { type: "hidden", name: RECORD_COMMAND_FIELD, value: props.command, autocomplete: "off" })) : (''), Object.entries(props.hidden ?? {}).map(([name, value]) => (_jsx("input", { type: "hidden", name: name, value: value, autocomplete: "off" }))), _jsx("div", { "data-ui": "form-grid", children: props.fields.map((item) => Field(item)) }), props.body, props.actions?.length ? _jsx("div", { "data-ui": "form-actions", children: ActionGroup({ actions: props.actions }) }) : ''] }));
|
|
15
|
+
export const RecordModalForm = (props) => (_jsxs("form", { "data-ui": "record-form", method: "post", action: "", "data-record-kind": props.kind, "data-record-dropzone": props.dropzone ? '' : null, id: props.id, "data-record-dirty": props.dirty === true ? 'true' : null, children: [props.command ? (_jsx("input", { type: "hidden", name: RECORD_COMMAND_FIELD, value: props.command, autocomplete: "off" })) : (''), Object.entries(props.hidden ?? {}).map(([name, value]) => (_jsx("input", { type: "hidden", name: name, value: value, autocomplete: "off" }))), props.fields.length ? _jsx("div", { "data-ui": "form-grid", children: props.fields.map((item) => Field(item)) }) : null, props.body, props.actions?.length ? _jsx("div", { "data-ui": "form-actions", children: ActionGroup({ actions: props.actions }) }) : ''] }));
|
|
16
16
|
/**
|
|
17
17
|
* The control of a select whose choice changes what the rest of the form offers.
|
|
18
18
|
* Use it as a design-system field's `control`; `data-record-state` makes the
|
|
@@ -24,6 +24,8 @@ export const recordStateSelectControl = (props) => (_jsx("select", { "data-ui":
|
|
|
24
24
|
* without it the dialog opens for a new child (for example a new team member).
|
|
25
25
|
*/
|
|
26
26
|
export const RecordDialogTrigger = (props) => (_jsx("span", { "data-record-dialog": props.dialog, "data-record-param-id": props.id ?? null, children: props.children }));
|
|
27
|
+
/** A view-state choice that preserves the current layer's form drafts. */
|
|
28
|
+
export const RecordStateTrigger = (props) => (_jsx("span", { "data-record-state-trigger": props.name, "data-record-value": props.value, "data-record-reset-fields": props.resetFields ? JSON.stringify(props.resetFields) : null, children: props.children }));
|
|
27
29
|
/**
|
|
28
30
|
* A bare form for an action that names no field of its own — generate, remove.
|
|
29
31
|
* `data-layout="actions"` opts the form out of the record-form grid (built for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-modal-form.js","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/ui/client/record-modal-form.tsx"],"names":[],"mappings":";AAAA,8CAA8C;AAC9C,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,mFAAmF;AACnF,sBAAsB;AAEtB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAoB,CAAA;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"record-modal-form.js","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/ui/client/record-modal-form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,8 @@ export type RecordModalContext<Data> = {
|
|
|
50
50
|
fieldError: (name: string) => string | null;
|
|
51
51
|
/** What was typed into a field before a refused submit, or the fallback. */
|
|
52
52
|
draft: (name: string, fallback?: string) => string;
|
|
53
|
+
/** Read a captured parent-record draft when explicitly seeding a child workflow. */
|
|
54
|
+
recordDraft?: (name: string, fallback?: string) => string;
|
|
53
55
|
/** Whether a checkbox/radio value was selected before the view re-rendered. */
|
|
54
56
|
draftChecked: (name: string, value?: string, fallback?: boolean) => boolean;
|
|
55
57
|
/**
|
|
@@ -94,6 +96,8 @@ export type RecordModalCommand<Data> = ({
|
|
|
94
96
|
}) & {
|
|
95
97
|
/** Same-origin destination after a successful command; evaluated by the runtime. */
|
|
96
98
|
navigate?: (value: unknown, context: RecordModalContext<Data>) => string;
|
|
99
|
+
/** Parent fields consumed by a child command; clear only after all steps succeed. */
|
|
100
|
+
clearRecordDrafts?: readonly string[];
|
|
97
101
|
/** Map server paths to stable native field names using the submitted snapshot. */
|
|
98
102
|
issueField?: (field: string, form: FormData, context: RecordModalContext<Data>) => string;
|
|
99
103
|
/** Map the submitted form to the function's input. */
|
|
@@ -150,6 +154,8 @@ export type RecordModalTab<Data> = {
|
|
|
150
154
|
};
|
|
151
155
|
export type RecordModalDialog<Data> = {
|
|
152
156
|
title: (context: RecordModalContext<Data>) => string;
|
|
157
|
+
/** Keep the parent record identity visible while completing a nested action. */
|
|
158
|
+
description?: (context: RecordModalContext<Data>) => string | null;
|
|
153
159
|
size?: 'default' | 'large';
|
|
154
160
|
view: (context: RecordModalContext<Data>) => JSXChild;
|
|
155
161
|
/** Fixed actions for this dialog layer, outside its scrolling body. */
|
|
@@ -254,6 +260,8 @@ type DraftState = {
|
|
|
254
260
|
};
|
|
255
261
|
/** Compare against the first render, including fields on tabs no longer mounted. */
|
|
256
262
|
export declare const recordDraftHasChanges: (draft: DraftState) => boolean;
|
|
263
|
+
/** Cancel one inline editor without losing edits elsewhere in the record. */
|
|
264
|
+
export declare const resetRecordDraftFields: (previous: DraftState, names: readonly string[]) => DraftState;
|
|
257
265
|
/** Name prefix of a checkbox that ticks every checkbox of its form sharing the rest of its name. */
|
|
258
266
|
export declare const CHECK_ALL = "__all:";
|
|
259
267
|
/**
|
|
@@ -293,5 +301,5 @@ export declare const createRecordModal: <Data>(definition: RecordModalDefinition
|
|
|
293
301
|
*/
|
|
294
302
|
export declare const recordIsland: (name: string, props: Record<string, unknown>) => TemplateResult;
|
|
295
303
|
export { RECORD_NEW_ID, RECORD_PARAM, RECORD_TAB_PARAM, recordModalHref, recordModalCreateHref, recordModalClosedHref, readRecordModalTarget, };
|
|
296
|
-
export { RecordModalForm, RecordActionForm, RecordCloseTrigger, RecordDialogTrigger, RecordCommandForm, recordStateSelectControl, } from './record-modal-form.tsx';
|
|
304
|
+
export { RecordModalForm, RecordActionForm, RecordCloseTrigger, RecordDialogTrigger, RecordStateTrigger, RecordCommandForm, recordStateSelectControl, } from './record-modal-form.tsx';
|
|
297
305
|
//# sourceMappingURL=record-modal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-modal.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAExF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EAErB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAI5B,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IACxC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAqBhF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAU,KAAK,GAAG,OAAO,SAC5C,MAAM,SACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACrB;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,KACzD,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAiCjC,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,GAAI,KAAK,GAAG,OAAO,QAC1C,MAAM,SACL,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACrB;IAAE,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,KACzD,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAC8C,CAAA;AAIhF,mEAAmE;AACnE,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI;IACxC,IAAI,EAAE,IAAI,CAAA;IACV,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,IAAI,IAAI;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,6FAA6F;IAC7F,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,IAAI,CAAA;IACV,0EAA0E;IAC1E,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAA;IAC5D,gEAAgE;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAA;IAC3C,4EAA4E;IAC5E,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAClD,+EAA+E;IAC/E,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;IAC3E;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAA;IACzC;;;;OAIG;IACH,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAA;IAC/D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7B,2FAA2F;IAC3F,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAClD,CAAA;AAED,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAA;AAE/E,wFAAwF;AACxF,eAAO,MAAM,sBAAsB,GAAU,IAAI,QACzC,MAAM,WACH,WAAW,KACnB,OAAO,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,CAUvC,CAAA;AAED,8EAA8E;AAC9E,MAAM,MAAM,sBAAsB,CAAC,IAAI,IAAI;IACzC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,CACL,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,EACjC,OAAO,EAAE,aAAa,KACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,8EAA8E;IAC9E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,kBAAkB,CAAC,IAAI,IAAI,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,EAAE,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG;IACvG,oFAAoF;IACpF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;IACxE,kFAAkF;IAClF,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;IACzF,sDAAsD;IACtD,KAAK,EAAE,CACL,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,EACjC,OAAO,EAAE,aAAa,KACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,SAAS,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9C;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACtG,+EAA+E;IAC/E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,IAAI,CAAA;IAC9D;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IACtG;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kFAAkF;IAClF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAA;IAC3C,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,IAAI,IAAI;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;IACpD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAA;IACxD,IAAI,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;CACtD,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,IAAI,IAAI;IACpC,KAAK,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;IACpD,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B,IAAI,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;IACrD,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;CAC1D,CAAA;AAED,MAAM,MAAM,qBAAqB,CAAC,IAAI,IAAI;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,OAAO,EACH;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAClF;QAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAA;IACnF,KAAK,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAA;IACpD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,IAAI,CAAA;IAClE;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;IACxD,qFAAqF;IACrF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;IACxD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAA;IACrE,IAAI,CAAC,EAAE,SAAS,cAAc,CAAC,IAAI,CAAC,EAAE,CAAA;IACtC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,SAAS,cAAc,CAAC,IAAI,CAAC,EAAE,CAAA;IACtF,yCAAyC;IACzC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAA;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;IACnD;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAChE;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/D,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAC7B,MAAM,WACF;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACvC,KACA,MAK4F,CAAA;AAE/F;;;GAGG;AACH,eAAO,MAAM,uBAAuB,SAC5B,MAAM,WACH,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,KACrD,MAGF,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,oBAAoB,cAAc,CAAA;AAC/C,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,uBAAuB,CAAA;AA0B3D,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,UAAW,WAAW,KAAG,OAexD,CAAA;AA4BD,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC,CAAA;AAED,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,UAAW,UAAU,KAAG,OAE+B,CAAA;
|
|
1
|
+
{"version":3,"file":"record-modal.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -189,6 +189,16 @@ const uuid = () => typeof crypto !== 'undefined' && 'randomUUID' in crypto
|
|
|
189
189
|
/** Compare against the first render, including fields on tabs no longer mounted. */
|
|
190
190
|
export const recordDraftHasChanges = (draft) => Object.entries(draft.values).some(([key, value]) => value !== draft.initialValues[key]) ||
|
|
191
191
|
Object.entries(draft.checks).some(([key, value]) => value !== draft.initialChecks[key]);
|
|
192
|
+
/** Cancel one inline editor without losing edits elsewhere in the record. */
|
|
193
|
+
export const resetRecordDraftFields = (previous, names) => {
|
|
194
|
+
const omit = (values) => Object.fromEntries(Object.entries(values).filter(([name]) => !names.includes(name)));
|
|
195
|
+
return {
|
|
196
|
+
values: omit(previous.values),
|
|
197
|
+
checks: omit(previous.checks),
|
|
198
|
+
initialValues: omit(previous.initialValues),
|
|
199
|
+
initialChecks: omit(previous.initialChecks),
|
|
200
|
+
};
|
|
201
|
+
};
|
|
192
202
|
const emptyDraftState = () => ({ values: {}, checks: {}, initialValues: {}, initialChecks: {} });
|
|
193
203
|
const draftCheckKey = (name, value) => `${name}\u0000${value}`;
|
|
194
204
|
/** Name prefix of a checkbox that ticks every checkbox of its form sharing the rest of its name. */
|
|
@@ -277,6 +287,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
277
287
|
const dialog = signal(null);
|
|
278
288
|
const version = signal(0);
|
|
279
289
|
const viewState = signal({});
|
|
290
|
+
const dialogViewState = signal({});
|
|
280
291
|
// What the last preview command answered. One at a time: a second preview
|
|
281
292
|
// replaces the first, and anything that moves the layer clears it, so a
|
|
282
293
|
// consequence is never read beside a selection it was not computed from.
|
|
@@ -323,6 +334,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
323
334
|
draft.initialValues[name] ??= fallback;
|
|
324
335
|
return draft.values[name] ?? fallback;
|
|
325
336
|
},
|
|
337
|
+
recordDraft: (name, fallback = '') => recordDrafts().values[name] ?? fallback,
|
|
326
338
|
draftChecked: (name, value = '1', fallback = false) => {
|
|
327
339
|
const draft = draftState();
|
|
328
340
|
const key = draftCheckKey(name, value);
|
|
@@ -336,13 +348,14 @@ export const createRecordModal = (definition) => () => {
|
|
|
336
348
|
busy: busy(),
|
|
337
349
|
dialog: dialog(),
|
|
338
350
|
href: (tab) => recordModalHref(location.href, { kind: definition.kind, id: current.id, tab }),
|
|
339
|
-
state: (key, fallback = '') => viewState()[key] ?? fallback,
|
|
351
|
+
state: (key, fallback = '') => (scope === 'dialog' ? dialogViewState()[key] : undefined) ?? viewState()[key] ?? fallback,
|
|
340
352
|
};
|
|
341
353
|
const tabs = visibleTabs(base);
|
|
342
354
|
if (tabs.length && !tabs.some((tab) => tab.id === current.tab))
|
|
343
355
|
base.tab = tabs[0].id;
|
|
344
356
|
return base;
|
|
345
357
|
};
|
|
358
|
+
let pendingEntryDialog = null;
|
|
346
359
|
const load = async (id, quiet = false) => {
|
|
347
360
|
request?.abort();
|
|
348
361
|
const controller = new AbortController();
|
|
@@ -376,6 +389,11 @@ export const createRecordModal = (definition) => () => {
|
|
|
376
389
|
remember(id, result.value);
|
|
377
390
|
envelope.set(result.value);
|
|
378
391
|
status.set('ready');
|
|
392
|
+
if (pendingEntryDialog && definition.dialogs?.[pendingEntryDialog]) {
|
|
393
|
+
dialog.set({ name: pendingEntryDialog, params: {} });
|
|
394
|
+
afterRender();
|
|
395
|
+
}
|
|
396
|
+
pendingEntryDialog = null;
|
|
379
397
|
}
|
|
380
398
|
catch (caught) {
|
|
381
399
|
if (controller.signal.aborted || caught?.name === 'AbortError')
|
|
@@ -498,17 +516,19 @@ export const createRecordModal = (definition) => () => {
|
|
|
498
516
|
(first ?? sheet)?.focus();
|
|
499
517
|
});
|
|
500
518
|
};
|
|
501
|
-
const show = (id, tab, how, preferredFocus) => {
|
|
519
|
+
const show = (id, tab, how, preferredFocus, entryDialog) => {
|
|
502
520
|
const current = open();
|
|
503
521
|
const sameRecord = current?.id === id;
|
|
504
522
|
const nextTab = tab ?? (sameRecord ? current.tab : '');
|
|
505
523
|
if (!sameRecord) {
|
|
506
524
|
tallestRecordHeight = 0;
|
|
525
|
+
pendingEntryDialog = entryDialog ?? null;
|
|
507
526
|
returnFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
508
527
|
issues.set([]);
|
|
509
528
|
saved.set(false);
|
|
510
529
|
recordDrafts.set(emptyDraftState());
|
|
511
530
|
dialogDrafts.set(emptyDraftState());
|
|
531
|
+
dialogViewState.set({});
|
|
512
532
|
viewState.set({});
|
|
513
533
|
outcome.set(null);
|
|
514
534
|
dialog.set(null);
|
|
@@ -516,8 +536,19 @@ export const createRecordModal = (definition) => () => {
|
|
|
516
536
|
envelope.set(null);
|
|
517
537
|
void load(id);
|
|
518
538
|
}
|
|
539
|
+
if (sameRecord && entryDialog && definition.dialogs?.[entryDialog]) {
|
|
540
|
+
keepAllDrafts();
|
|
541
|
+
dialogDrafts.set(emptyDraftState());
|
|
542
|
+
dialogViewState.set({});
|
|
543
|
+
dialog.set({ name: entryDialog, params: {} });
|
|
544
|
+
}
|
|
519
545
|
open.set({ id, tab: nextTab });
|
|
520
|
-
const href = recordModalHref(location.href, {
|
|
546
|
+
const href = recordModalHref(location.href, {
|
|
547
|
+
kind: definition.kind,
|
|
548
|
+
id,
|
|
549
|
+
tab: nextTab || null,
|
|
550
|
+
dialog: entryDialog,
|
|
551
|
+
});
|
|
521
552
|
if (how === 'push') {
|
|
522
553
|
// The shell's own navigation snapshots scroll onto the entry it leaves
|
|
523
554
|
// before pushing (`saveScroll` in packages/ketjs/src/server/http.ts) so
|
|
@@ -542,6 +573,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
542
573
|
saved.set(false);
|
|
543
574
|
recordDrafts.set(emptyDraftState());
|
|
544
575
|
dialogDrafts.set(emptyDraftState());
|
|
576
|
+
dialogViewState.set({});
|
|
545
577
|
viewState.set({});
|
|
546
578
|
outcome.set(null);
|
|
547
579
|
status.set('idle');
|
|
@@ -569,7 +601,11 @@ export const createRecordModal = (definition) => () => {
|
|
|
569
601
|
const target = dialogReturnFocus;
|
|
570
602
|
dialogReturnFocus = null;
|
|
571
603
|
dialog.set(null);
|
|
604
|
+
const current = open();
|
|
605
|
+
if (current)
|
|
606
|
+
history.replaceState(history.state ?? {}, '', recordModalHref(location.href, { kind: definition.kind, id: current.id, tab: current.tab }));
|
|
572
607
|
dialogDrafts.set(emptyDraftState());
|
|
608
|
+
dialogViewState.set({});
|
|
573
609
|
issues.set([]);
|
|
574
610
|
outcome.set(null);
|
|
575
611
|
afterRender(() => (target?.isConnected ? target : null));
|
|
@@ -670,10 +706,14 @@ export const createRecordModal = (definition) => () => {
|
|
|
670
706
|
version.set(version() + 1);
|
|
671
707
|
return;
|
|
672
708
|
}
|
|
673
|
-
if (scope === 'dialog')
|
|
709
|
+
if (scope === 'dialog') {
|
|
674
710
|
dialogDrafts.set(emptyDraftState());
|
|
711
|
+
dialogViewState.set({});
|
|
712
|
+
}
|
|
675
713
|
else
|
|
676
714
|
recordDrafts.set(emptyDraftState());
|
|
715
|
+
if (command.clearRecordDrafts?.length)
|
|
716
|
+
recordDrafts.set(resetRecordDraftFields(recordDrafts(), command.clearRecordDrafts));
|
|
677
717
|
// A command that stays in its layer leaves its answer for the view, which is
|
|
678
718
|
// how something the server can only say once — a one-time credential — reaches
|
|
679
719
|
// the reader. Every other `after` replaces the layer, so the answer goes.
|
|
@@ -708,6 +748,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
708
748
|
if (after === 'open') {
|
|
709
749
|
dialog.set(null);
|
|
710
750
|
dialogDrafts.set(emptyDraftState());
|
|
751
|
+
dialogViewState.set({});
|
|
711
752
|
// Replace `:new` in the address bar before the collection refreshes: the
|
|
712
753
|
// shell re-fetches `location.href`, which must already name the new record.
|
|
713
754
|
if (createdId)
|
|
@@ -725,6 +766,8 @@ export const createRecordModal = (definition) => () => {
|
|
|
725
766
|
dialogReturnFocus = null;
|
|
726
767
|
dialog.set(null);
|
|
727
768
|
dialogDrafts.set(emptyDraftState());
|
|
769
|
+
dialogViewState.set({});
|
|
770
|
+
history.replaceState(history.state ?? {}, '', recordModalHref(location.href, { kind: definition.kind, id: current.id, tab: current.tab }));
|
|
728
771
|
await load(current.id);
|
|
729
772
|
afterRender(() => (target?.isConnected ? target : null));
|
|
730
773
|
}
|
|
@@ -736,6 +779,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
736
779
|
dialogReturnFocus = null;
|
|
737
780
|
dialog.set(null);
|
|
738
781
|
dialogDrafts.set(emptyDraftState());
|
|
782
|
+
dialogViewState.set({});
|
|
739
783
|
show(current.id, after.tab, 'replace');
|
|
740
784
|
await load(current.id);
|
|
741
785
|
}
|
|
@@ -744,6 +788,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
744
788
|
dialogReturnFocus = after.dialog && submitter instanceof HTMLElement ? submitter : null;
|
|
745
789
|
dialog.set(after.dialog ? { name: after.dialog, params: {} } : null);
|
|
746
790
|
dialogDrafts.set(emptyDraftState());
|
|
791
|
+
dialogViewState.set({});
|
|
747
792
|
await load(current.id, true);
|
|
748
793
|
afterRender(() => (target?.isConnected ? target : null));
|
|
749
794
|
}
|
|
@@ -823,6 +868,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
823
868
|
presentation: 'dialog',
|
|
824
869
|
size: spec.size ?? 'default',
|
|
825
870
|
title: spec.title(context),
|
|
871
|
+
description: spec.description?.(context),
|
|
826
872
|
actions: spec.actions?.(context),
|
|
827
873
|
closeLabel: t('recordModal.close'),
|
|
828
874
|
body: (_jsxs(_Fragment, { children: [formIssues(context), spec.view(context)] })),
|
|
@@ -877,13 +923,24 @@ export const createRecordModal = (definition) => () => {
|
|
|
877
923
|
close();
|
|
878
924
|
return;
|
|
879
925
|
}
|
|
880
|
-
const stateControl = element?.closest('button[data-record-state], a[data-record-state]');
|
|
926
|
+
const stateControl = element?.closest('button[data-record-state], a[data-record-state], [data-record-state-trigger]');
|
|
881
927
|
if (stateControl) {
|
|
882
928
|
event.preventDefault();
|
|
883
929
|
keepAllDrafts();
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
930
|
+
const reset = stateControl.getAttribute('data-record-reset-fields');
|
|
931
|
+
if (reset) {
|
|
932
|
+
const names = JSON.parse(reset);
|
|
933
|
+
if (Array.isArray(names) && names.every((name) => typeof name === 'string')) {
|
|
934
|
+
const store = dialog() ? dialogDrafts : recordDrafts;
|
|
935
|
+
store.set(resetRecordDraftFields(store(), names));
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
const stateStore = dialog() ? dialogViewState : viewState;
|
|
939
|
+
stateStore.set({
|
|
940
|
+
...stateStore(),
|
|
941
|
+
[stateControl.getAttribute('data-record-state-trigger') ??
|
|
942
|
+
stateControl.getAttribute('data-record-state') ??
|
|
943
|
+
'']: stateControl.getAttribute('data-record-value') ?? '',
|
|
887
944
|
});
|
|
888
945
|
return;
|
|
889
946
|
}
|
|
@@ -897,12 +954,14 @@ export const createRecordModal = (definition) => () => {
|
|
|
897
954
|
? focused
|
|
898
955
|
: opener.querySelector(focusable);
|
|
899
956
|
dialogDrafts.set(emptyDraftState());
|
|
957
|
+
dialogViewState.set({});
|
|
900
958
|
const params = {};
|
|
901
959
|
for (const [key, value] of Object.entries(opener.dataset))
|
|
902
960
|
if (key.startsWith('recordParam') && value !== undefined)
|
|
903
961
|
params[key.slice('recordParam'.length).replace(/^./u, (c) => c.toLowerCase())] = value;
|
|
904
962
|
issues.set([]);
|
|
905
963
|
outcome.set(null);
|
|
964
|
+
saved.set(false);
|
|
906
965
|
dialog.set({ name: opener.getAttribute(RECORD_DIALOG_ATTRIBUTE) ?? '', params });
|
|
907
966
|
afterRender();
|
|
908
967
|
return;
|
|
@@ -945,7 +1004,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
945
1004
|
void load(current.id);
|
|
946
1005
|
}
|
|
947
1006
|
if (current?.id === target.id) {
|
|
948
|
-
if ((target.tab ?? '') === current.tab)
|
|
1007
|
+
if ((target.tab ?? '') === current.tab && !target.dialog)
|
|
949
1008
|
return;
|
|
950
1009
|
// Switching tab is not discarding: what was typed rides along as drafts,
|
|
951
1010
|
// which the views read back, so no prompt stands between two tabs.
|
|
@@ -956,7 +1015,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
956
1015
|
show(target.id, target.tab ?? null, 'replace', () => recordLayer()?.querySelector('[data-ui="tab"][data-active="true"]') ?? null);
|
|
957
1016
|
return;
|
|
958
1017
|
}
|
|
959
|
-
show(target.id, target.tab ?? null, 'push');
|
|
1018
|
+
show(target.id, target.tab ?? null, 'push', undefined, target.dialog);
|
|
960
1019
|
},
|
|
961
1020
|
// Capture: the navigation layer listens on the document too, and was
|
|
962
1021
|
// installed first, so a bubbling listener would see the page fetched.
|
|
@@ -977,7 +1036,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
977
1036
|
if (!target || target.kind !== definition.kind)
|
|
978
1037
|
return;
|
|
979
1038
|
event.preventDefault();
|
|
980
|
-
show(target.id, target.tab ?? null, 'push');
|
|
1039
|
+
show(target.id, target.tab ?? null, 'push', undefined, target.dialog);
|
|
981
1040
|
}, { signal: lifetime, capture: true });
|
|
982
1041
|
document.addEventListener('submit', (event) => {
|
|
983
1042
|
const form = event.target instanceof HTMLFormElement ? event.target : null;
|
|
@@ -1058,12 +1117,14 @@ export const createRecordModal = (definition) => () => {
|
|
|
1058
1117
|
: null);
|
|
1059
1118
|
if ((control instanceof HTMLSelectElement || control instanceof HTMLInputElement) && stateKey) {
|
|
1060
1119
|
keepAllDrafts();
|
|
1061
|
-
|
|
1120
|
+
const stateStore = dialog() ? dialogViewState : viewState;
|
|
1121
|
+
stateStore.set({ ...stateStore(), [stateKey]: control.value });
|
|
1062
1122
|
return;
|
|
1063
1123
|
}
|
|
1064
1124
|
if (control instanceof HTMLInputElement &&
|
|
1065
1125
|
control.type === 'file' &&
|
|
1066
|
-
control.hasAttribute('data-record-submit')
|
|
1126
|
+
(control.hasAttribute('data-record-submit') ||
|
|
1127
|
+
control.form?.hasAttribute('data-record-dropzone')) &&
|
|
1067
1128
|
control.files?.length)
|
|
1068
1129
|
control.form?.requestSubmit();
|
|
1069
1130
|
}, { signal: lifetime });
|
|
@@ -1153,7 +1214,7 @@ export const createRecordModal = (definition) => () => {
|
|
|
1153
1214
|
return;
|
|
1154
1215
|
event.preventDefault();
|
|
1155
1216
|
if (mine && target)
|
|
1156
|
-
show(target.id, target.tab ?? null, 'none');
|
|
1217
|
+
show(target.id, target.tab ?? null, 'none', undefined, target.dialog);
|
|
1157
1218
|
else
|
|
1158
1219
|
hide('none');
|
|
1159
1220
|
}, { signal: lifetime });
|
|
@@ -1164,11 +1225,11 @@ export const createRecordModal = (definition) => () => {
|
|
|
1164
1225
|
document.addEventListener('ket:navigation-complete', () => {
|
|
1165
1226
|
const target = readRecordModalTarget(location.href);
|
|
1166
1227
|
if (target?.kind === definition.kind && !open())
|
|
1167
|
-
show(target.id, target.tab ?? null, 'none');
|
|
1228
|
+
show(target.id, target.tab ?? null, 'none', undefined, target.dialog);
|
|
1168
1229
|
}, { signal: lifetime });
|
|
1169
1230
|
const initial = readRecordModalTarget(location.href);
|
|
1170
1231
|
if (initial?.kind === definition.kind)
|
|
1171
|
-
show(initial.id, initial.tab ?? null, 'none');
|
|
1232
|
+
show(initial.id, initial.tab ?? null, 'none', undefined, initial.dialog);
|
|
1172
1233
|
lifetime.addEventListener('abort', () => {
|
|
1173
1234
|
request?.abort();
|
|
1174
1235
|
showBusy.stop();
|
|
@@ -1185,5 +1246,5 @@ export const createRecordModal = (definition) => () => {
|
|
|
1185
1246
|
*/
|
|
1186
1247
|
export const recordIsland = (name, props) => (_jsx("ket-island", { "data-island": name, "data-props": JSON.stringify(props) }));
|
|
1187
1248
|
export { RECORD_NEW_ID, RECORD_PARAM, RECORD_TAB_PARAM, recordModalHref, recordModalCreateHref, recordModalClosedHref, readRecordModalTarget, };
|
|
1188
|
-
export { RecordModalForm, RecordActionForm, RecordCloseTrigger, RecordDialogTrigger, RecordCommandForm, recordStateSelectControl, } from './record-modal-form.js';
|
|
1249
|
+
export { RecordModalForm, RecordActionForm, RecordCloseTrigger, RecordDialogTrigger, RecordStateTrigger, RecordCommandForm, recordStateSelectControl, } from './record-modal-form.js';
|
|
1189
1250
|
//# sourceMappingURL=record-modal.js.map
|