@simplysm/angular 14.0.38 → 14.0.39
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/controls/checkbox/sd-checkbox.d.ts +1 -1
- package/dist/controls/checkbox/sd-checkbox.d.ts.map +1 -1
- package/dist/controls/checkbox/sd-checkbox.js +8 -5
- package/dist/controls/checkbox/sd-switch.d.ts +3 -1
- package/dist/controls/checkbox/sd-switch.d.ts.map +1 -1
- package/dist/controls/checkbox/sd-switch.js +11 -5
- package/dist/controls/input/sd-textfield.d.ts.map +1 -1
- package/dist/controls/input/sd-textfield.js +1 -0
- package/dist/core/error-handler/sd-global-error-handler.plugin.d.ts.map +1 -1
- package/dist/core/error-handler/sd-global-error-handler.plugin.js +7 -2
- package/dist/core/modal/sd-modal.d.ts +2 -3
- package/dist/core/modal/sd-modal.d.ts.map +1 -1
- package/dist/core/modal/sd-modal.js +8 -9
- package/dist/core/modal/sd-modal.provider.d.ts +0 -1
- package/dist/core/modal/sd-modal.provider.d.ts.map +1 -1
- package/dist/core/modal/sd-modal.provider.js +1 -1
- package/dist/core/routing/sd-navigate-window.provider.d.ts.map +1 -1
- package/dist/core/routing/sd-navigate-window.provider.js +3 -1
- package/dist/core/setupModelHook.d.ts.map +1 -1
- package/dist/core/setupModelHook.js +18 -1
- package/dist/core/shared-data/sd-shared-data.provider.d.ts.map +1 -1
- package/dist/core/shared-data/sd-shared-data.provider.js +12 -3
- package/dist/data/data-detail/sd-data-detail.base.d.ts +1 -1
- package/dist/data/data-detail/sd-data-detail.base.d.ts.map +1 -1
- package/dist/data/data-detail/sd-data-detail.base.js +19 -20
- package/dist/data/data-sheet/sd-data-sheet.base.d.ts +0 -1
- package/dist/data/data-sheet/sd-data-sheet.base.d.ts.map +1 -1
- package/dist/data/data-sheet/sd-data-sheet.base.js +4 -12
- package/dist/data/getOrmDataEditToastErrorMessage.d.ts +2 -0
- package/dist/data/getOrmDataEditToastErrorMessage.d.ts.map +1 -0
- package/dist/data/getOrmDataEditToastErrorMessage.js +8 -0
- package/dist/data/permission-table/sd-permission-table.d.ts +1 -1
- package/dist/data/permission-table/sd-permission-table.d.ts.map +1 -1
- package/dist/data/permission-table/sd-permission-table.js +6 -5
- package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
- package/dist/features/editor/sd-tiptap-editor.js +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/layout/base-container/sd-base-container.d.ts +1 -0
- package/dist/layout/base-container/sd-base-container.d.ts.map +1 -1
- package/dist/layout/base-container/sd-base-container.js +5 -2
- package/package.json +6 -5
- package/src/controls/checkbox/sd-checkbox.ts +7 -3
- package/src/controls/checkbox/sd-switch.ts +8 -2
- package/src/controls/input/sd-textfield.ts +1 -0
- package/src/core/error-handler/sd-global-error-handler.plugin.ts +6 -2
- package/src/core/modal/sd-modal.provider.ts +1 -2
- package/src/core/modal/sd-modal.ts +5 -5
- package/src/core/routing/sd-navigate-window.provider.ts +3 -1
- package/src/core/setupModelHook.ts +21 -1
- package/src/core/shared-data/sd-shared-data.provider.ts +13 -2
- package/src/data/data-detail/sd-data-detail.base.ts +21 -24
- package/src/data/data-sheet/sd-data-sheet.base.ts +4 -15
- package/src/data/getOrmDataEditToastErrorMessage.ts +10 -0
- package/src/data/permission-table/sd-permission-table.ts +7 -6
- package/src/features/editor/sd-tiptap-editor.ts +2 -0
- package/src/index.ts +3 -0
- package/src/layout/base-container/sd-base-container.ts +4 -1
|
@@ -69,7 +69,6 @@ export declare abstract class SdDataSheetBase<TFilter extends Record<string, any
|
|
|
69
69
|
doModalCancel(): void;
|
|
70
70
|
doDownloadExcel(): Promise<void>;
|
|
71
71
|
doUploadExcel(): Promise<void>;
|
|
72
|
-
private _getOrmDataEditToastErrorMessage;
|
|
73
72
|
static ɵfac: i0.ɵɵFactoryDeclaration<SdDataSheetBase<any, any, any>, never>;
|
|
74
73
|
static ɵdir: i0.ɵɵDirectiveDeclaration<SdDataSheetBase<any, any, any>, never, never, { "selectedItemKeys": { "alias": "selectedItemKeys"; "required": false; "isSignal": true; }; }, { "close": "close"; "submitted": "submitted"; "selectedItemKeys": "selectedItemKeysChange"; }, never, never, true, never>;
|
|
75
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-data-sheet.base.d.ts","sourceRoot":"","sources":["../../../src/data/data-sheet/sd-data-sheet.base.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAKhB,KAAK,MAAM,EACX,WAAW,EACX,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"sd-data-sheet.base.d.ts","sourceRoot":"","sources":["../../../src/data/data-sheet/sd-data-sheet.base.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { injectDataSheetRefreshManager } from "./injectDataSheetRefreshManager";
|
|
|
10
10
|
import { injectDataSheetInlineEditManager } from "./injectDataSheetInlineEditManager";
|
|
11
11
|
import { injectDataSheetModalEditManager } from "./injectDataSheetModalEditManager";
|
|
12
12
|
import { injectDataSheetExcelManager } from "./injectDataSheetExcelManager";
|
|
13
|
+
import { getOrmDataEditToastErrorMessage } from "../getOrmDataEditToastErrorMessage";
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
export class SdDataSheetBase {
|
|
15
16
|
hideTool;
|
|
@@ -105,7 +106,7 @@ export class SdDataSheetBase {
|
|
|
105
106
|
refresh: () => this._refreshMgr.refresh(),
|
|
106
107
|
getNewItemFn: () => this.newItem?.bind(this),
|
|
107
108
|
getSubmitFn: () => this.submit?.bind(this),
|
|
108
|
-
errorMessageFn: (err) =>
|
|
109
|
+
errorMessageFn: (err) => getOrmDataEditToastErrorMessage(err),
|
|
109
110
|
});
|
|
110
111
|
//-- modal edit composable
|
|
111
112
|
this._modalEditMgr = injectDataSheetModalEditManager({
|
|
@@ -117,7 +118,7 @@ export class SdDataSheetBase {
|
|
|
117
118
|
refresh: () => this._refreshMgr.refresh(),
|
|
118
119
|
getEditItemFn: () => this.editItem?.bind(this),
|
|
119
120
|
getToggleDeleteItemsFn: () => this.toggleDeleteItems?.bind(this),
|
|
120
|
-
errorMessageFn: (err) =>
|
|
121
|
+
errorMessageFn: (err) => getOrmDataEditToastErrorMessage(err),
|
|
121
122
|
});
|
|
122
123
|
//-- excel composable
|
|
123
124
|
this._excelMgr = injectDataSheetExcelManager({
|
|
@@ -126,7 +127,7 @@ export class SdDataSheetBase {
|
|
|
126
127
|
refresh: () => this._refreshMgr.refresh(),
|
|
127
128
|
getDownloadExcelFn: () => this.downloadExcel?.bind(this),
|
|
128
129
|
getUploadExcelFn: () => this.uploadExcel?.bind(this),
|
|
129
|
-
errorMessageFn: (err) =>
|
|
130
|
+
errorMessageFn: (err) => getOrmDataEditToastErrorMessage(err),
|
|
130
131
|
});
|
|
131
132
|
setupCanDeactivate(() => this.viewType() === "modal" || this.checkIgnoreChanges());
|
|
132
133
|
}
|
|
@@ -179,15 +180,6 @@ export class SdDataSheetBase {
|
|
|
179
180
|
async doUploadExcel() {
|
|
180
181
|
await this._excelMgr.doUploadExcel();
|
|
181
182
|
}
|
|
182
|
-
//-- private
|
|
183
|
-
_getOrmDataEditToastErrorMessage(err) {
|
|
184
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
185
|
-
if (message.includes("a parent row: a foreign key constraint") ||
|
|
186
|
-
message.includes("conflicted with the REFERENCE")) {
|
|
187
|
-
return "경고! 연결된 작업에 의한 처리 거부. 후속작업 확인 요망";
|
|
188
|
-
}
|
|
189
|
-
return message;
|
|
190
|
-
}
|
|
191
183
|
static ɵfac = function SdDataSheetBase_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdDataSheetBase)(); };
|
|
192
184
|
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SdDataSheetBase, inputs: { selectedItemKeys: [1, "selectedItemKeys"] }, outputs: { close: "close", submitted: "submitted", selectedItemKeys: "selectedItemKeysChange" } });
|
|
193
185
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrmDataEditToastErrorMessage.d.ts","sourceRoot":"","sources":["../../src/data/getOrmDataEditToastErrorMessage.ts"],"names":[],"mappings":"AAAA,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CASpE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function getOrmDataEditToastErrorMessage(err) {
|
|
2
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
3
|
+
if (message.includes("a parent row: a foreign key constraint") ||
|
|
4
|
+
message.includes("conflicted with the REFERENCE")) {
|
|
5
|
+
return "경고! 연결된 작업에 의한 처리 거부. 후속작업 확인 요망";
|
|
6
|
+
}
|
|
7
|
+
return message;
|
|
8
|
+
}
|
|
@@ -4,7 +4,7 @@ export declare class SdPermissionTable<TModule> {
|
|
|
4
4
|
value: import("@angular/core").ModelSignal<Record<string, boolean>>;
|
|
5
5
|
items: import("@angular/core").InputSignal<SdPermission<TModule>[]>;
|
|
6
6
|
disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
7
|
-
collapsedItems: import("@angular/core").WritableSignal<Set<
|
|
7
|
+
collapsedItems: import("@angular/core").WritableSignal<Set<string>>;
|
|
8
8
|
depthLength: import("@angular/core").Signal<number>;
|
|
9
9
|
private readonly _permExistsCache;
|
|
10
10
|
private readonly _permCheckedCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-permission-table.d.ts","sourceRoot":"","sources":["../../../src/data/permission-table/sd-permission-table.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;;AAMpF,qBAiMa,iBAAiB,CAAC,OAAO;IACpC,KAAK,+DAAsC;IAE3C,KAAK,+DAAsC;IAC3C,QAAQ,qEAAiD;IAEzD,cAAc,
|
|
1
|
+
{"version":3,"file":"sd-permission-table.d.ts","sourceRoot":"","sources":["../../../src/data/permission-table/sd-permission-table.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;;AAMpF,qBAiMa,iBAAiB,CAAC,OAAO;IACpC,KAAK,+DAAsC;IAE3C,KAAK,+DAAsC;IAC3C,QAAQ,qEAAiD;IAEzD,cAAc,sDAA6B;IAE3C,WAAW,yCAER;IAEH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CA6B9B;IAEH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAgC/B;IAEH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CA6ChC;IAEH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IAEzD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAW1B,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;IAIxD,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE;IAIpE,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;IAIrD,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO;IAI3E,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO;IAI5E,oBAAoB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;IAiBhD,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO;IAQjF,OAAO,CAAC,gBAAgB;IAkDxB,OAAO,CAAC,eAAe;IAYvB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAG;QACpC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;KAC3C,CAAC;yCAzPS,iBAAiB;2CAAjB,iBAAiB;CA0P7B"}
|
|
@@ -251,7 +251,7 @@ export class SdPermissionTable {
|
|
|
251
251
|
return cached;
|
|
252
252
|
}
|
|
253
253
|
getIsPermCollapsed(item) {
|
|
254
|
-
return this.collapsedItems().has(item);
|
|
254
|
+
return this.collapsedItems().has(item.codeChain.join("."));
|
|
255
255
|
}
|
|
256
256
|
getAllChildren(item) {
|
|
257
257
|
return item.children?.mapMany((child) => [child, ...this.getAllChildren(child)]) ?? [];
|
|
@@ -266,16 +266,17 @@ export class SdPermissionTable {
|
|
|
266
266
|
return this._permCheckedCache().get(item.codeChain.join(".") + "." + type) ?? false;
|
|
267
267
|
}
|
|
268
268
|
onPermCollapseToggle(item) {
|
|
269
|
+
const key = item.codeChain.join(".");
|
|
269
270
|
this.collapsedItems.update((v) => {
|
|
270
271
|
const r = new Set(v);
|
|
271
|
-
if (r.has(
|
|
272
|
-
r.delete(
|
|
272
|
+
if (r.has(key)) {
|
|
273
|
+
r.delete(key);
|
|
273
274
|
}
|
|
274
275
|
else {
|
|
275
|
-
r.add(
|
|
276
|
+
r.add(key);
|
|
276
277
|
const allChildren = this.getAllChildren(item);
|
|
277
278
|
for (const allChild of allChildren) {
|
|
278
|
-
r.add(allChild);
|
|
279
|
+
r.add(allChild.codeChain.join("."));
|
|
279
280
|
}
|
|
280
281
|
}
|
|
281
282
|
return r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-tiptap-editor.d.ts","sourceRoot":"","sources":["../../../src/features/editor/sd-tiptap-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;;
|
|
1
|
+
{"version":3,"file":"sd-tiptap-editor.d.ts","sourceRoot":"","sources":["../../../src/features/editor/sd-tiptap-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;;AAqBzD,qBAsMa,cAAc;IACzB,KAAK,0DAAmB;IACxB,QAAQ,qEAAiD;IACzD,QAAQ,qEAAiD;IACzD,QAAQ,qEAAiD;IACzD,WAAW,0DAAmB;IAC9B,WAAW,+CAAiB,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,eAAI;IACzE,UAAU,kEAA2B;IAErC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,QAAQ,CAAC,YAAY,WAMnB;IAEF,qDAAqD;IACrD,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAqB;IAE/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE,YAAY,kEAA8B;IAC1C,WAAW,yBAA6B;IACxC,aAAa,yBAA+B;IAC5C,eAAe,4CAAiC;IAChD,OAAO,wBAAyB;IAChC,iBAAiB,gCAAmC;IACpD,UAAU,sCAA4B;IAEtC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAA6B;IAEpD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CASjC;;IA4DH,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;yCArIf,cAAc;2CAAd,cAAc;CA2I1B"}
|
|
@@ -7,6 +7,7 @@ import Color from "@tiptap/extension-color";
|
|
|
7
7
|
import Highlight from "@tiptap/extension-highlight";
|
|
8
8
|
import TextAlign from "@tiptap/extension-text-align";
|
|
9
9
|
import Image from "@tiptap/extension-image";
|
|
10
|
+
import Underline from "@tiptap/extension-underline";
|
|
10
11
|
import Placeholder from "@tiptap/extension-placeholder";
|
|
11
12
|
import { useTiptapToolbar } from "./useTiptapToolbar";
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
@@ -158,6 +159,7 @@ const DEFAULT_EXTENSIONS = [
|
|
|
158
159
|
Highlight.configure({ multicolor: true }),
|
|
159
160
|
TextAlign.configure({ types: ["heading", "paragraph"] }),
|
|
160
161
|
Image.configure({ inline: false, allowBase64: true }),
|
|
162
|
+
Underline,
|
|
161
163
|
];
|
|
162
164
|
export class SdTiptapEditor {
|
|
163
165
|
value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
|
|
@@ -374,4 +376,4 @@ export class SdTiptapEditor {
|
|
|
374
376
|
"[attr.data-sd-readonly]": "readonly()",
|
|
375
377
|
}, styles: ["sd-tiptap-editor {\n display: block;\n position: relative;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-tiptap-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap-xs);\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button {\n padding: var(--gap-xs) var(--gap-sm);\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: transparent;\n cursor: pointer;\n font-size: var(--font-size-default);\n line-height: 1;\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button._active {\n background: var(--theme-primary-default);\n color: var(--text-trans-rev-default);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button:hover {\n background: var(--trans-lighter);\n}\nsd-tiptap-editor > ._toolbar > ._btn-group > button._active:hover {\n background: var(--theme-primary-default);\n}\nsd-tiptap-editor > ._color-picker {\n display: flex;\n flex-wrap: wrap;\n gap: 2px;\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-tiptap-editor > ._color-picker > ._color-swatch {\n width: 1.25rem;\n height: 1.25rem;\n border: 1px solid var(--trans-lighter);\n border-radius: 2px;\n cursor: pointer;\n padding: 0;\n}\nsd-tiptap-editor > ._color-picker > ._color-swatch._no-color {\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--control-color);\n font-size: 0.625rem;\n}\nsd-tiptap-editor > ._editor-container {\n padding: var(--gap-sm);\n min-height: 6.25rem;\n}\nsd-tiptap-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-tiptap-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-tiptap-editor[data-sd-disabled=true] {\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-tiptap-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-tiptap-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}\nsd-tiptap-editor ._color-btn {\n position: relative;\n}\nsd-tiptap-editor ._color-btn > ._color-indicator {\n display: block;\n height: 2px;\n width: 100%;\n position: absolute;\n bottom: 2px;\n left: 0;\n}"] }]
|
|
376
378
|
}], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], validatorFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "validatorFn", required: false }] }], extensions: [{ type: i0.Input, args: [{ isSignal: true, alias: "extensions", required: false }] }] }); })();
|
|
377
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTiptapEditor, { className: "SdTiptapEditor", filePath: "packages/angular/src/features/editor/sd-tiptap-editor.ts", lineNumber:
|
|
379
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTiptapEditor, { className: "SdTiptapEditor", filePath: "packages/angular/src/features/editor/sd-tiptap-editor.ts", lineNumber: 237, forbidOrphanRendering: true }); })();
|
package/dist/index.d.ts
CHANGED
|
@@ -109,6 +109,7 @@ export { SdDataSheetColumn } from "./data/data-sheet/sd-data-sheet-column";
|
|
|
109
109
|
export { setupCloserWhenSingleSelectionChange } from "./data/data-sheet/setupCloserWhenSingleSelectionChange";
|
|
110
110
|
export { SdDataDetail } from "./data/data-detail/sd-data-detail";
|
|
111
111
|
export { SdDataDetailBase, type SdDataDetailDataInfo, } from "./data/data-detail/sd-data-detail.base";
|
|
112
|
+
export { getOrmDataEditToastErrorMessage } from "./data/getOrmDataEditToastErrorMessage";
|
|
112
113
|
export { SdDataSelectButton } from "./data/data-select-button/sd-data-select-button";
|
|
113
114
|
export { SdDataSelectButtonBase } from "./data/data-select-button/sd-data-select-button.base";
|
|
114
115
|
export { SdSharedDataSelect } from "./data/shared-data/sd-shared-data-select";
|
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
|
@@ -142,6 +142,8 @@ export { setupCloserWhenSingleSelectionChange } from "./data/data-sheet/setupClo
|
|
|
142
142
|
// data/data-detail
|
|
143
143
|
export { SdDataDetail } from "./data/data-detail/sd-data-detail";
|
|
144
144
|
export { SdDataDetailBase, } from "./data/data-detail/sd-data-detail.base";
|
|
145
|
+
// data/utils
|
|
146
|
+
export { getOrmDataEditToastErrorMessage } from "./data/getOrmDataEditToastErrorMessage";
|
|
145
147
|
// data/data-select-button
|
|
146
148
|
export { SdDataSelectButton } from "./data/data-select-button/sd-data-select-button";
|
|
147
149
|
export { SdDataSelectButtonBase } from "./data/data-select-button/sd-data-select-button.base";
|
|
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class SdBaseContainer {
|
|
5
5
|
private readonly _sdActivatedModal;
|
|
6
6
|
private readonly _sdAppStructure;
|
|
7
|
+
private readonly _systemLog;
|
|
7
8
|
private readonly _parent;
|
|
8
9
|
private readonly _fullPageCode;
|
|
9
10
|
private readonly _currPageCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-base-container.d.ts","sourceRoot":"","sources":["../../../src/layout/base-container/sd-base-container.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,WAAW,EAEZ,MAAM,eAAe,CAAC;AAQvB,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,yCAAyC,CAAC;;
|
|
1
|
+
{"version":3,"file":"sd-base-container.d.ts","sourceRoot":"","sources":["../../../src/layout/base-container/sd-base-container.ts"],"names":[],"mappings":"AACA,OAAO,EAQL,WAAW,EAEZ,MAAM,eAAe,CAAC;AAQvB,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,yCAAyC,CAAC;;AAMjD,qBAqDa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+B;IAE1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAE1C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAE/D,aAAa,mDAA8D;IAE3E,gBAAgB,+DAAwD;IACxE,iBAAiB,+DAAyD;IAE1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,QAAQ,8DAAuB;IAC/B,YAAY,6CAA6D;IAEzE,MAAM,0DAAmB;IACzB,gBAAgB,sCAWb;IAEH,WAAW,2DAAyC;IACpD,UAAU,qEAAiD;IAC3D,IAAI,qEAAiD;IACrD,WAAW,0DAAmB;IAE9B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,ifAAuB;yCAtClD,eAAe;2CAAf,eAAe;CAuC3B"}
|
|
@@ -9,6 +9,7 @@ import { injectCurrentPageCodeSignal } from "../../core/routing/injectCurrentPag
|
|
|
9
9
|
import { injectFullPageCodeSignal } from "../../core/routing/injectFullPageCodeSignal";
|
|
10
10
|
import { injectViewTypeSignal, } from "../../core/routing/injectViewTypeSignal";
|
|
11
11
|
import { injectParent } from "../../core/injectParent";
|
|
12
|
+
import { SdSystemLogProvider } from "../../core/config/sd-system-log.provider";
|
|
12
13
|
import { NgIcon } from "@ng-icons/core";
|
|
13
14
|
import { tablerAlertTriangle } from "@ng-icons/tabler-icons";
|
|
14
15
|
import * as i0 from "@angular/core";
|
|
@@ -87,6 +88,7 @@ function SdBaseContainer_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
87
88
|
export class SdBaseContainer {
|
|
88
89
|
_sdActivatedModal = inject(SdActivatedModalProvider, { optional: true });
|
|
89
90
|
_sdAppStructure = inject(SdAppStructureProvider);
|
|
91
|
+
_systemLog = inject(SdSystemLogProvider);
|
|
90
92
|
_parent = injectParent();
|
|
91
93
|
_fullPageCode = injectFullPageCodeSignal();
|
|
92
94
|
_currPageCode = injectCurrentPageCodeSignal();
|
|
@@ -103,7 +105,8 @@ export class SdBaseContainer {
|
|
|
103
105
|
this._sdActivatedModal?.modalComponent()?.title() ??
|
|
104
106
|
this._sdAppStructure.getTitleByFullCode(this._currPageCode?.() ?? this._fullPageCode()));
|
|
105
107
|
}
|
|
106
|
-
catch {
|
|
108
|
+
catch (err) {
|
|
109
|
+
void this._systemLog.writeAsync("warn", `modalOrPageTitle 계산 중 에러: ${String(err)}`);
|
|
107
110
|
return "";
|
|
108
111
|
}
|
|
109
112
|
}, ...(ngDevMode ? [{ debugName: "modalOrPageTitle" }] : /* istanbul ignore next */ []));
|
|
@@ -187,4 +190,4 @@ export class SdBaseContainer {
|
|
|
187
190
|
`,
|
|
188
191
|
}]
|
|
189
192
|
}], null, { contentTplRef: [{ type: i0.ContentChild, args: ["contentTpl", { ...{ read: TemplateRef }, isSignal: true }] }], pageTopbarTplRef: [{ type: i0.ContentChild, args: ["pageTopbarTpl", { ...{ read: TemplateRef }, isSignal: true }] }], modalBottomTplRef: [{ type: i0.ContentChild, args: ["modalBottomTpl", { ...{ read: TemplateRef }, isSignal: true }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: false }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], initialized: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialized", required: false }] }], restricted: [{ type: i0.Input, args: [{ isSignal: true, alias: "restricted", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], busyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "busyMessage", required: false }] }] }); })();
|
|
190
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdBaseContainer, { className: "SdBaseContainer", filePath: "packages/angular/src/layout/base-container/sd-base-container.ts", lineNumber:
|
|
193
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdBaseContainer, { className: "SdBaseContainer", filePath: "packages/angular/src/layout/base-container/sd-base-container.ts", lineNumber: 82, forbidOrphanRendering: true }); })();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/angular",
|
|
3
|
-
"version": "14.0.
|
|
3
|
+
"version": "14.0.39",
|
|
4
4
|
"description": "심플리즘 패키지 - Angular",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"@tiptap/extension-text": "^3.22.3",
|
|
43
43
|
"@tiptap/extension-text-align": "^3.22.3",
|
|
44
44
|
"@tiptap/extension-text-style": "^3.22.3",
|
|
45
|
+
"@tiptap/extension-underline": "^3.22.3",
|
|
45
46
|
"@tiptap/starter-kit": "^3.22.3",
|
|
46
47
|
"bwip-js": "^4.9.0",
|
|
47
48
|
"echarts": "^6.0.0",
|
|
@@ -49,10 +50,10 @@
|
|
|
49
50
|
"jspdf": "^4.2.1",
|
|
50
51
|
"rxjs": "^7.8.2",
|
|
51
52
|
"tabbable": "^6.4.0",
|
|
52
|
-
"@simplysm/core-browser": "14.0.
|
|
53
|
-
"@simplysm/core-common": "14.0.
|
|
54
|
-
"@simplysm/service-client": "14.0.
|
|
55
|
-
"@simplysm/service-common": "14.0.
|
|
53
|
+
"@simplysm/core-browser": "14.0.39",
|
|
54
|
+
"@simplysm/core-common": "14.0.39",
|
|
55
|
+
"@simplysm/service-client": "14.0.39",
|
|
56
|
+
"@simplysm/service-common": "14.0.39"
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|
|
58
59
|
"@angular/compiler": "^21.2.8",
|
|
@@ -247,8 +247,8 @@ import { tablerCheck } from "@ng-icons/tabler-icons";
|
|
|
247
247
|
"[attr.data-sd-radio]": "radio()",
|
|
248
248
|
"[attr.data-sd-size]": "size()",
|
|
249
249
|
"[attr.data-sd-theme]": "theme()",
|
|
250
|
-
"[attr.tabindex]": "0",
|
|
251
|
-
"(click)": "onClick()",
|
|
250
|
+
"[attr.tabindex]": "'0'",
|
|
251
|
+
"(click)": "onClick($event)",
|
|
252
252
|
"(keydown)": "onKeydown($event)",
|
|
253
253
|
},
|
|
254
254
|
})
|
|
@@ -282,7 +282,10 @@ export class SdCheckbox {
|
|
|
282
282
|
setupRipple(() => !this.disabled());
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
onClick() {
|
|
285
|
+
onClick(event: Event) {
|
|
286
|
+
event.preventDefault();
|
|
287
|
+
event.stopPropagation();
|
|
288
|
+
|
|
286
289
|
if (this.disabled()) return;
|
|
287
290
|
if (this.radio()) {
|
|
288
291
|
this.value.set(true);
|
|
@@ -294,6 +297,7 @@ export class SdCheckbox {
|
|
|
294
297
|
onKeydown(event: KeyboardEvent): void {
|
|
295
298
|
if (event.key === " ") {
|
|
296
299
|
event.preventDefault();
|
|
300
|
+
event.stopPropagation();
|
|
297
301
|
if (this.disabled()) return;
|
|
298
302
|
if (this.radio()) {
|
|
299
303
|
this.value.set(true);
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
model,
|
|
7
7
|
ViewEncapsulation,
|
|
8
8
|
} from "@angular/core";
|
|
9
|
+
import { setupModelHook } from "../../core/setupModelHook";
|
|
9
10
|
|
|
10
11
|
@Component({
|
|
11
12
|
selector: "sd-switch",
|
|
@@ -116,6 +117,7 @@ import {
|
|
|
116
117
|
})
|
|
117
118
|
export class SdSwitch {
|
|
118
119
|
value = model(false);
|
|
120
|
+
canChangeFn = input<(item: boolean) => boolean | Promise<boolean>>(() => true);
|
|
119
121
|
|
|
120
122
|
disabled = input(false, { transform: booleanAttribute });
|
|
121
123
|
inline = input(false, { transform: booleanAttribute });
|
|
@@ -126,18 +128,22 @@ export class SdSwitch {
|
|
|
126
128
|
"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray"
|
|
127
129
|
>();
|
|
128
130
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
+
constructor() {
|
|
132
|
+
setupModelHook(this.value, this.canChangeFn);
|
|
133
|
+
}
|
|
131
134
|
|
|
135
|
+
onClick(event: Event) {
|
|
132
136
|
event.preventDefault();
|
|
133
137
|
event.stopPropagation();
|
|
134
138
|
|
|
139
|
+
if (this.disabled()) return;
|
|
135
140
|
this.value.update((v) => !v);
|
|
136
141
|
}
|
|
137
142
|
|
|
138
143
|
onKeydown(event: KeyboardEvent) {
|
|
139
144
|
if (event.key === " ") {
|
|
140
145
|
event.preventDefault();
|
|
146
|
+
event.stopPropagation();
|
|
141
147
|
if (this.disabled()) return;
|
|
142
148
|
this.value.update((v) => !v);
|
|
143
149
|
}
|
|
@@ -373,6 +373,7 @@ export class SdTextfield<K extends keyof SdTextfieldTypes> {
|
|
|
373
373
|
}
|
|
374
374
|
const parsed = this._handler().parse(inputEl.value, { format: this.format() });
|
|
375
375
|
if (parsed === undefined) {
|
|
376
|
+
inputEl.value = this.controlValue();
|
|
376
377
|
return;
|
|
377
378
|
}
|
|
378
379
|
this.value.set(parsed as SdTextfieldTypes[K]);
|
|
@@ -78,8 +78,12 @@ export class SdGlobalErrorHandlerPlugin implements ErrorHandler {
|
|
|
78
78
|
document.body.textContent =
|
|
79
79
|
`[에러 처리 실패]\n원본: ${String(event)}\n2차: ${String(err)}`;
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
try {
|
|
82
|
+
const appRef = this._envInjector.get<ApplicationRef>(ApplicationRef);
|
|
83
|
+
appRef.destroy();
|
|
84
|
+
} catch {
|
|
85
|
+
// _displayErrorMessage에서 이미 destroy된 경우 무시
|
|
86
|
+
}
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
return false;
|
|
@@ -67,7 +67,6 @@ export interface SdModalOptions {
|
|
|
67
67
|
minWidthPx?: number;
|
|
68
68
|
heightPx?: number;
|
|
69
69
|
widthPx?: number;
|
|
70
|
-
headerStyle?: string;
|
|
71
70
|
noFirstControlFocusing?: boolean;
|
|
72
71
|
}
|
|
73
72
|
|
|
@@ -127,7 +126,7 @@ export class SdModalProvider {
|
|
|
127
126
|
modalRef.setInput("title", modal.title);
|
|
128
127
|
if (options !== undefined) {
|
|
129
128
|
for (const [key, value] of Object.entries(options)) {
|
|
130
|
-
if (value !== undefined) {
|
|
129
|
+
if (value !== undefined && key !== "noFirstControlFocusing") {
|
|
131
130
|
modalRef.setInput(key, value);
|
|
132
131
|
}
|
|
133
132
|
}
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
Component,
|
|
4
4
|
effect,
|
|
5
5
|
ElementRef,
|
|
6
|
+
ErrorHandler,
|
|
6
7
|
inject,
|
|
7
8
|
input,
|
|
8
9
|
model,
|
|
@@ -286,6 +287,7 @@ export class SdModal {
|
|
|
286
287
|
private readonly _elRef = inject(ElementRef<HTMLElement>);
|
|
287
288
|
private readonly _activatedModal = inject(SdActivatedModalProvider, { optional: true });
|
|
288
289
|
private readonly _systemConfig = inject(SdSystemConfigProvider, { optional: true });
|
|
290
|
+
private readonly _errorHandler = inject(ErrorHandler);
|
|
289
291
|
private readonly _focusTrap = injectFocusTrap();
|
|
290
292
|
|
|
291
293
|
protected readonly tablerX = tablerX;
|
|
@@ -306,8 +308,6 @@ export class SdModal {
|
|
|
306
308
|
minWidthPx = input<number | undefined>(undefined);
|
|
307
309
|
heightPx = input<number | undefined>(undefined);
|
|
308
310
|
widthPx = input<number | undefined>(undefined);
|
|
309
|
-
headerStyle = input<string | undefined>(undefined);
|
|
310
|
-
noFirstControlFocusing = input(false);
|
|
311
311
|
actionTplRef = input<TemplateRef<any> | undefined>(undefined);
|
|
312
312
|
|
|
313
313
|
closeRequest = output<void>();
|
|
@@ -316,7 +316,7 @@ export class SdModal {
|
|
|
316
316
|
getDialogEl: () => this._getDialogEl(),
|
|
317
317
|
minWidthPx: this.minWidthPx,
|
|
318
318
|
minHeightPx: this.minHeightPx,
|
|
319
|
-
onEnd: () => void this._saveConfig(),
|
|
319
|
+
onEnd: () => void this._saveConfig().catch((err) => this._errorHandler.handleError(err)),
|
|
320
320
|
});
|
|
321
321
|
|
|
322
322
|
constructor() {
|
|
@@ -349,7 +349,7 @@ export class SdModal {
|
|
|
349
349
|
const k = this.key();
|
|
350
350
|
if (k === undefined || this._systemConfig == null) return;
|
|
351
351
|
|
|
352
|
-
void this._restoreConfig(k);
|
|
352
|
+
void this._restoreConfig(k).catch((err) => this._errorHandler.handleError(err));
|
|
353
353
|
});
|
|
354
354
|
|
|
355
355
|
}
|
|
@@ -392,7 +392,7 @@ export class SdModal {
|
|
|
392
392
|
if (this._activatedModal !== null && !this._activatedModal.canDeactivateFn()) {
|
|
393
393
|
return;
|
|
394
394
|
}
|
|
395
|
-
void this._saveConfig();
|
|
395
|
+
void this._saveConfig().catch((err) => this._errorHandler.handleError(err));
|
|
396
396
|
this.closeRequest.emit();
|
|
397
397
|
}
|
|
398
398
|
|
|
@@ -34,8 +34,10 @@ export class SdNavigateWindowProvider {
|
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
} else {
|
|
37
|
+
const paramStr = params !== undefined ? new URLSearchParams(params).toString() : "";
|
|
38
|
+
const suffix = paramStr !== "" ? `;${paramStr}` : "";
|
|
37
39
|
window.open(
|
|
38
|
-
`${location.pathname}#${navigate}
|
|
40
|
+
`${location.pathname}#${navigate}${suffix}`,
|
|
39
41
|
"_blank",
|
|
40
42
|
);
|
|
41
43
|
}
|
|
@@ -29,6 +29,26 @@ export function setupModelHook<T, S extends WritableSignal<T>>(
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
model.update = (fn) => {
|
|
32
|
-
|
|
32
|
+
const value = fn(model());
|
|
33
|
+
const canSet = canFn()(value);
|
|
34
|
+
|
|
35
|
+
if (canSet === false) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (canSet === true) {
|
|
40
|
+
orgSet(value);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void canSet
|
|
45
|
+
.then((allowed) => {
|
|
46
|
+
if (allowed !== false) {
|
|
47
|
+
orgSet(fn(model()));
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
.catch((err) => {
|
|
51
|
+
errorHandler.handleError(err);
|
|
52
|
+
});
|
|
33
53
|
};
|
|
34
54
|
}
|
|
@@ -33,6 +33,7 @@ interface SharedDataEntry<T extends SharedDataBase<string | number>> {
|
|
|
33
33
|
itemsSignal: WritableSignal<T[]>;
|
|
34
34
|
handle: SharedDataHandle<T>;
|
|
35
35
|
listenerKey?: string;
|
|
36
|
+
generation: number;
|
|
36
37
|
needsReload: boolean;
|
|
37
38
|
isLoading: boolean;
|
|
38
39
|
}
|
|
@@ -51,12 +52,13 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
|
|
|
51
52
|
register<K extends string & keyof T>(name: K, info: SharedDataInfo<T[K]>): void {
|
|
52
53
|
const existing = this._entries.get(name as string);
|
|
53
54
|
if (existing != null) {
|
|
54
|
-
// 기존 리스너 키 초기화
|
|
55
|
+
// 기존 리스너 키 초기화 + generation 증가로 이전 이벤트 무시
|
|
55
56
|
if (existing.listenerKey != null) {
|
|
56
57
|
const client = this._clientFactory.get(existing.info.serviceKey);
|
|
57
58
|
void client.removeListener(existing.listenerKey);
|
|
58
59
|
existing.listenerKey = undefined;
|
|
59
60
|
}
|
|
61
|
+
existing.generation++;
|
|
60
62
|
existing.info = info;
|
|
61
63
|
existing.needsReload = true;
|
|
62
64
|
} else {
|
|
@@ -77,6 +79,7 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
|
|
|
77
79
|
info,
|
|
78
80
|
itemsSignal,
|
|
79
81
|
handle,
|
|
82
|
+
generation: 0,
|
|
80
83
|
needsReload: true,
|
|
81
84
|
isLoading: false,
|
|
82
85
|
});
|
|
@@ -120,12 +123,16 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
|
|
|
120
123
|
|
|
121
124
|
private _loadAndListen(name: string, entry: SharedDataEntry<any>): void {
|
|
122
125
|
entry.isLoading = true;
|
|
126
|
+
const capturedGeneration = entry.generation;
|
|
123
127
|
this.loadingCount.update((v) => v + 1);
|
|
124
128
|
|
|
125
129
|
// 비동기 로드
|
|
126
130
|
void entry.info
|
|
127
131
|
.getter()
|
|
128
132
|
.then(async (data: any[]) => {
|
|
133
|
+
// register 재호출로 generation이 변경되었으면 결과를 무시
|
|
134
|
+
if (entry.generation !== capturedGeneration) return;
|
|
135
|
+
|
|
129
136
|
entry.itemsSignal.set(data);
|
|
130
137
|
|
|
131
138
|
// 이벤트 리스너 등록
|
|
@@ -135,7 +142,7 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
|
|
|
135
142
|
entry.listenerKey = await event.addListener(
|
|
136
143
|
{ name, filter: entry.info.filter },
|
|
137
144
|
async (changeKeys) => {
|
|
138
|
-
await this._onEvent(name, entry, changeKeys);
|
|
145
|
+
await this._onEvent(name, entry, changeKeys, capturedGeneration);
|
|
139
146
|
},
|
|
140
147
|
);
|
|
141
148
|
}
|
|
@@ -157,7 +164,11 @@ export abstract class SdSharedDataProvider<T extends Record<string, SharedDataBa
|
|
|
157
164
|
name: string,
|
|
158
165
|
entry: SharedDataEntry<any>,
|
|
159
166
|
changeKeys: (string | number)[] | undefined,
|
|
167
|
+
generation: number,
|
|
160
168
|
): Promise<void> {
|
|
169
|
+
// register 재호출로 generation이 변경되었으면 이벤트 무시
|
|
170
|
+
if (entry.generation !== generation) return;
|
|
171
|
+
|
|
161
172
|
this.loadingCount.update((v) => v + 1);
|
|
162
173
|
|
|
163
174
|
try {
|