@simplysm/angular 14.0.37 → 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.
Files changed (98) hide show
  1. package/dist/controls/checkbox/sd-checkbox.d.ts +1 -1
  2. package/dist/controls/checkbox/sd-checkbox.d.ts.map +1 -1
  3. package/dist/controls/checkbox/sd-checkbox.js +8 -5
  4. package/dist/controls/checkbox/sd-switch.d.ts +3 -1
  5. package/dist/controls/checkbox/sd-switch.d.ts.map +1 -1
  6. package/dist/controls/checkbox/sd-switch.js +11 -5
  7. package/dist/controls/dropdown/sd-dropdown.js +8 -8
  8. package/dist/controls/input/{sd-date-range.picker.d.ts → sd-date-range-picker.d.ts} +1 -1
  9. package/dist/controls/input/{sd-date-range.picker.d.ts.map → sd-date-range-picker.d.ts.map} +1 -1
  10. package/dist/controls/input/{sd-date-range.picker.js → sd-date-range-picker.js} +1 -1
  11. package/dist/controls/input/sd-textfield.d.ts.map +1 -1
  12. package/dist/controls/input/sd-textfield.js +1 -0
  13. package/dist/core/error-handler/sd-global-error-handler.plugin.d.ts.map +1 -1
  14. package/dist/core/error-handler/sd-global-error-handler.plugin.js +7 -2
  15. package/dist/core/modal/sd-activated-modal.provider.d.ts +1 -1
  16. package/dist/core/modal/sd-activated-modal.provider.d.ts.map +1 -1
  17. package/dist/core/modal/sd-activated-modal.provider.js +1 -1
  18. package/dist/core/modal/sd-modal.d.ts +2 -3
  19. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  20. package/dist/core/modal/sd-modal.js +9 -10
  21. package/dist/core/modal/sd-modal.provider.d.ts +0 -1
  22. package/dist/core/modal/sd-modal.provider.d.ts.map +1 -1
  23. package/dist/core/modal/sd-modal.provider.js +14 -6
  24. package/dist/core/routing/sd-navigate-window.provider.d.ts.map +1 -1
  25. package/dist/core/routing/sd-navigate-window.provider.js +3 -1
  26. package/dist/core/routing/setupCanDeactivate.js +1 -1
  27. package/dist/core/selection/useSelectionManager.d.ts.map +1 -1
  28. package/dist/core/selection/useSelectionManager.js +4 -3
  29. package/dist/core/setupModelHook.d.ts.map +1 -1
  30. package/dist/core/setupModelHook.js +18 -1
  31. package/dist/core/shared-data/sd-shared-data.provider.d.ts.map +1 -1
  32. package/dist/core/shared-data/sd-shared-data.provider.js +12 -3
  33. package/dist/data/data-detail/sd-data-detail.base.d.ts +1 -1
  34. package/dist/data/data-detail/sd-data-detail.base.d.ts.map +1 -1
  35. package/dist/data/data-detail/sd-data-detail.base.js +24 -19
  36. package/dist/data/data-sheet/injectDataSheetExcelManager.js +1 -1
  37. package/dist/data/data-sheet/injectDataSheetModalEditManager.js +1 -1
  38. package/dist/data/data-sheet/sd-data-sheet.base.d.ts +1 -2
  39. package/dist/data/data-sheet/sd-data-sheet.base.d.ts.map +1 -1
  40. package/dist/data/data-sheet/sd-data-sheet.base.js +5 -13
  41. package/dist/data/getOrmDataEditToastErrorMessage.d.ts +2 -0
  42. package/dist/data/getOrmDataEditToastErrorMessage.d.ts.map +1 -0
  43. package/dist/data/getOrmDataEditToastErrorMessage.js +8 -0
  44. package/dist/data/permission-table/sd-permission-table.d.ts +1 -1
  45. package/dist/data/permission-table/sd-permission-table.d.ts.map +1 -1
  46. package/dist/data/permission-table/sd-permission-table.js +6 -5
  47. package/dist/data/shared-data/sd-shared-data-select.d.ts +1 -0
  48. package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
  49. package/dist/data/shared-data/sd-shared-data-select.js +15 -7
  50. package/dist/data/sheet/injectSheetColumnResizing.d.ts.map +1 -1
  51. package/dist/data/sheet/injectSheetColumnResizing.js +1 -0
  52. package/dist/data/state-preset/sd-state-preset.d.ts.map +1 -1
  53. package/dist/data/state-preset/sd-state-preset.js +4 -0
  54. package/dist/features/address/sd-address-search.modal.d.ts +2 -1
  55. package/dist/features/address/sd-address-search.modal.d.ts.map +1 -1
  56. package/dist/features/address/sd-address-search.modal.js +69 -23
  57. package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
  58. package/dist/features/editor/sd-tiptap-editor.js +3 -1
  59. package/dist/features/visual/sd-barcode.d.ts.map +1 -1
  60. package/dist/features/visual/sd-barcode.js +10 -5
  61. package/dist/index.d.ts +2 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +3 -1
  64. package/dist/layout/base-container/sd-base-container.d.ts +1 -0
  65. package/dist/layout/base-container/sd-base-container.d.ts.map +1 -1
  66. package/dist/layout/base-container/sd-base-container.js +5 -2
  67. package/dist/layout/dock/sd-dock.d.ts.map +1 -1
  68. package/dist/layout/dock/sd-dock.js +1 -0
  69. package/package.json +8 -7
  70. package/src/controls/checkbox/sd-checkbox.ts +7 -3
  71. package/src/controls/checkbox/sd-switch.ts +8 -2
  72. package/src/controls/dropdown/sd-dropdown.ts +8 -8
  73. package/src/controls/input/sd-textfield.ts +1 -0
  74. package/src/core/error-handler/sd-global-error-handler.plugin.ts +6 -2
  75. package/src/core/modal/sd-activated-modal.provider.ts +1 -1
  76. package/src/core/modal/sd-modal.provider.ts +13 -7
  77. package/src/core/modal/sd-modal.ts +6 -6
  78. package/src/core/routing/sd-navigate-window.provider.ts +3 -1
  79. package/src/core/routing/setupCanDeactivate.ts +1 -1
  80. package/src/core/selection/useSelectionManager.ts +5 -3
  81. package/src/core/setupModelHook.ts +21 -1
  82. package/src/core/shared-data/sd-shared-data.provider.ts +13 -2
  83. package/src/data/data-detail/sd-data-detail.base.ts +27 -23
  84. package/src/data/data-sheet/injectDataSheetExcelManager.ts +1 -1
  85. package/src/data/data-sheet/injectDataSheetModalEditManager.ts +1 -1
  86. package/src/data/data-sheet/sd-data-sheet.base.ts +5 -16
  87. package/src/data/getOrmDataEditToastErrorMessage.ts +10 -0
  88. package/src/data/permission-table/sd-permission-table.ts +7 -6
  89. package/src/data/shared-data/sd-shared-data-select.ts +24 -13
  90. package/src/data/sheet/injectSheetColumnResizing.ts +2 -0
  91. package/src/data/state-preset/sd-state-preset.ts +6 -0
  92. package/src/features/address/sd-address-search.modal.ts +75 -31
  93. package/src/features/editor/sd-tiptap-editor.ts +2 -0
  94. package/src/features/visual/sd-barcode.ts +9 -5
  95. package/src/index.ts +4 -1
  96. package/src/layout/base-container/sd-base-container.ts +4 -1
  97. package/src/layout/dock/sd-dock.ts +2 -0
  98. /package/src/controls/input/{sd-date-range.picker.ts → sd-date-range-picker.ts} +0 -0
@@ -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: 235, forbidOrphanRendering: true }); })();
379
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdTiptapEditor, { className: "SdTiptapEditor", filePath: "packages/angular/src/features/editor/sd-tiptap-editor.ts", lineNumber: 237, forbidOrphanRendering: true }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-barcode.d.ts","sourceRoot":"","sources":["../../../src/features/visual/sd-barcode.ts"],"names":[],"mappings":";AAWA,qBAUa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAEnD,IAAI,mDAAiC;IACrC,KAAK,0DAAmB;IAIxB,SAAS,CAAC,eAAe,+EAUtB;yCAlBQ,SAAS;2CAAT,SAAS;CAmBrB;AAED,MAAM,MAAM,WAAW,GACnB,SAAS,GAAG,WAAW,GAAG,kBAAkB,GAAG,WAAW,GAAG,OAAO,GACpE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAC/D,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GACpE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,iBAAiB,GACjE,0BAA0B,GAAG,wBAAwB,GAAG,iCAAiC,GACzF,gBAAgB,GAAG,yBAAyB,GAAG,aAAa,GAAG,sBAAsB,GACrF,gBAAgB,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,6BAA6B,GACnG,kBAAkB,GAAG,2BAA2B,GAAG,eAAe,GAAG,YAAY,GACjF,uBAAuB,GAAG,gCAAgC,GAAG,SAAS,GAAG,OAAO,GAChF,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,eAAe,GACzF,SAAS,GAAG,kBAAkB,GAAG,QAAQ,GAAG,eAAe,GAAG,0BAA0B,GACxF,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,wBAAwB,GAAG,WAAW,GACzF,QAAQ,GAAG,eAAe,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAC/F,2BAA2B,GAAG,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAC1F,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GACvF,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GACnF,aAAa,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,GAC9E,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GACpF,QAAQ,GAAG,qBAAqB,GAAG,KAAK,GAAG,wBAAwB,GAAG,WAAW,GACjF,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,GAChF,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"sd-barcode.d.ts","sourceRoot":"","sources":["../../../src/features/visual/sd-barcode.ts"],"names":[],"mappings":";AAWA,qBAUa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IAEnD,IAAI,mDAAiC;IACrC,KAAK,0DAAmB;IAIxB,SAAS,CAAC,eAAe,+EActB;yCAtBQ,SAAS;2CAAT,SAAS;CAuBrB;AAED,MAAM,MAAM,WAAW,GACnB,SAAS,GAAG,WAAW,GAAG,kBAAkB,GAAG,WAAW,GAAG,OAAO,GACpE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAC/D,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GACpE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,iBAAiB,GACjE,0BAA0B,GAAG,wBAAwB,GAAG,iCAAiC,GACzF,gBAAgB,GAAG,yBAAyB,GAAG,aAAa,GAAG,sBAAsB,GACrF,gBAAgB,GAAG,yBAAyB,GAAG,oBAAoB,GAAG,6BAA6B,GACnG,kBAAkB,GAAG,2BAA2B,GAAG,eAAe,GAAG,YAAY,GACjF,uBAAuB,GAAG,gCAAgC,GAAG,SAAS,GAAG,OAAO,GAChF,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,eAAe,GACzF,SAAS,GAAG,kBAAkB,GAAG,QAAQ,GAAG,eAAe,GAAG,0BAA0B,GACxF,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,wBAAwB,GAAG,WAAW,GACzF,QAAQ,GAAG,eAAe,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,GAC/F,2BAA2B,GAAG,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAC1F,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GACvF,WAAW,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GACnF,aAAa,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,eAAe,GAC9E,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GACpF,QAAQ,GAAG,qBAAqB,GAAG,KAAK,GAAG,wBAAwB,GAAG,WAAW,GACjF,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,WAAW,GAChF,MAAM,GAAG,eAAe,GAAG,MAAM,GAAG,eAAe,CAAC"}
@@ -13,11 +13,16 @@ export class SdBarcode {
13
13
  if (text == null || text === "") {
14
14
  return "";
15
15
  }
16
- const svg = bwipjs.toSVG({
17
- bcid: this.type(),
18
- text,
19
- });
20
- return this._sanitizer.bypassSecurityTrustHtml(svg);
16
+ try {
17
+ const svg = bwipjs.toSVG({
18
+ bcid: this.type(),
19
+ text,
20
+ });
21
+ return this._sanitizer.bypassSecurityTrustHtml(svg);
22
+ }
23
+ catch {
24
+ return "";
25
+ }
21
26
  }, ...(ngDevMode ? [{ debugName: "_trustedSvgHtml" }] : /* istanbul ignore next */ []));
22
27
  static ɵfac = function SdBarcode_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdBarcode)(); };
23
28
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdBarcode, selectors: [["sd-barcode"]], inputs: { type: [1, "type"], value: [1, "value"] }, decls: 1, vars: 1, consts: [[3, "innerHTML"]], template: function SdBarcode_Template(rf, ctx) { if (rf & 1) {
package/dist/index.d.ts CHANGED
@@ -69,7 +69,7 @@ export { type SdTextfieldTypes, sdTextfieldTypes } from "./controls/input/sd-tex
69
69
  export { SdTextarea } from "./controls/input/sd-textarea";
70
70
  export { SdNumpad } from "./controls/input/sd-numpad";
71
71
  export { SdRange } from "./controls/input/sd-range";
72
- export { SdDateRangePicker } from "./controls/input/sd-date-range.picker";
72
+ export { SdDateRangePicker } from "./controls/input/sd-date-range-picker";
73
73
  export { SdCheckbox } from "./controls/checkbox/sd-checkbox";
74
74
  export { SdSwitch } from "./controls/checkbox/sd-switch";
75
75
  export { SdCheckboxGroup } from "./controls/checkbox/sd-checkbox-group";
@@ -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";
@@ -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
@@ -87,7 +87,7 @@ export { sdTextfieldTypes } from "./controls/input/sd-textfield-type-handlers";
87
87
  export { SdTextarea } from "./controls/input/sd-textarea";
88
88
  export { SdNumpad } from "./controls/input/sd-numpad";
89
89
  export { SdRange } from "./controls/input/sd-range";
90
- export { SdDateRangePicker } from "./controls/input/sd-date-range.picker";
90
+ export { SdDateRangePicker } from "./controls/input/sd-date-range-picker";
91
91
  // controls/checkbox
92
92
  export { SdCheckbox } from "./controls/checkbox/sd-checkbox";
93
93
  export { SdSwitch } from "./controls/checkbox/sd-switch";
@@ -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;;AAKjD,qBAqDa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAElE,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,sCAUb;IAEH,WAAW,2DAAyC;IACpD,UAAU,qEAAiD;IAC3D,IAAI,qEAAiD;IACrD,WAAW,0DAAmB;IAE9B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,ifAAuB;yCApClD,eAAe;2CAAf,eAAe;CAqC3B"}
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: 81, forbidOrphanRendering: true }); })();
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 }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-dock.d.ts","sourceRoot":"","sources":["../../../src/layout/dock/sd-dock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;;AAE9E,qBAyEa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,OAAO,CAAC,YAAY,CAA2B;IAE/C,GAAG,0DAAmB;IACtB,QAAQ,2EAAqD;IAC7D,SAAS,qEAAiD;IAE1D,IAAI,iDAAa;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;;IAoB9F,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAI/C,YAAY,CAAC,KAAK,EAAE,aAAa;IASjC,oBAAoB,CAAC,KAAK,EAAE,UAAU;yCA7C3B,MAAM;2CAAN,MAAM;CA+FlB"}
1
+ {"version":3,"file":"sd-dock.d.ts","sourceRoot":"","sources":["../../../src/layout/dock/sd-dock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;;AAE9E,qBAyEa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,OAAO,CAAC,YAAY,CAA2B;IAE/C,GAAG,0DAAmB;IACtB,QAAQ,2EAAqD;IAC7D,SAAS,qEAAiD;IAE1D,IAAI,iDAAa;IAEjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;;IAoB9F,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAI/C,YAAY,CAAC,KAAK,EAAE,aAAa;IASjC,oBAAoB,CAAC,KAAK,EAAE,UAAU;yCA7C3B,MAAM;2CAAN,MAAM;CAiGlB"}
@@ -45,6 +45,7 @@ export class SdDock {
45
45
  }
46
46
  }
47
47
  onResizeBarMousedown(event) {
48
+ this._dragCleanup?.();
48
49
  const thisEl = this._elRef.nativeElement;
49
50
  const startX = event.clientX;
50
51
  const startY = event.clientY;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.37",
3
+ "version": "14.0.39",
4
4
  "description": "심플리즘 패키지 - Angular",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",
@@ -30,8 +30,8 @@
30
30
  "@angular/platform-browser": "^21.2.8",
31
31
  "@angular/router": "^21.2.8",
32
32
  "@angular/service-worker": "^21.2.8",
33
- "@ng-icons/core": "^33.2.0",
34
- "@ng-icons/tabler-icons": "^33.2.0",
33
+ "@ng-icons/core": "^33.2.1",
34
+ "@ng-icons/tabler-icons": "^33.2.1",
35
35
  "@tiptap/core": "^3.22.3",
36
36
  "@tiptap/extension-color": "^3.22.3",
37
37
  "@tiptap/extension-document": "^3.22.3",
@@ -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.37",
53
- "@simplysm/core-common": "14.0.37",
54
- "@simplysm/service-client": "14.0.37",
55
- "@simplysm/service-common": "14.0.37"
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
- onClick(event: Event) {
130
- if (this.disabled()) return;
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
  }
@@ -199,20 +199,20 @@ export class SdDropdown {
199
199
 
200
200
  const rect = contentEl.getBoundingClientRect();
201
201
 
202
- const isPlaceBottom = window.innerHeight < rect.top * 2;
203
- const isPlaceRight = window.innerWidth < rect.left * 2;
202
+ const shouldPlaceAbove = window.innerHeight < rect.top * 2;
203
+ const shouldPlaceLeft = window.innerWidth < rect.left * 2;
204
204
 
205
205
  const gap = 2;
206
- const topPos = isPlaceBottom ? undefined : rect.bottom + gap;
207
- const bottomPos = isPlaceBottom ? window.innerHeight - rect.top : undefined;
208
- const leftPos = isPlaceRight ? undefined : rect.left;
209
- const rightPos = isPlaceRight ? window.innerWidth - rect.right : undefined;
206
+ const topPos = shouldPlaceAbove ? undefined : rect.bottom + gap;
207
+ const bottomPos = shouldPlaceAbove ? window.innerHeight - rect.top : undefined;
208
+ const leftPos = shouldPlaceLeft ? undefined : rect.left;
209
+ const rightPos = shouldPlaceLeft ? window.innerWidth - rect.right : undefined;
210
210
 
211
211
  // Calculate available space for popup
212
- const availableHeight = isPlaceBottom
212
+ const availableHeight = shouldPlaceAbove
213
213
  ? rect.top - gap
214
214
  : window.innerHeight - rect.bottom - gap;
215
- const availableWidth = isPlaceRight ? rect.right : window.innerWidth - rect.left;
215
+ const availableWidth = shouldPlaceLeft ? rect.right : window.innerWidth - rect.left;
216
216
 
217
217
  Object.assign(popupEl.style, {
218
218
  top: topPos !== undefined ? topPos + "px" : "",
@@ -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
- const appRef = this._envInjector.get<ApplicationRef>(ApplicationRef);
82
- appRef.destroy();
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;
@@ -8,5 +8,5 @@ import type { SdModalContentDef } from "./sd-modal.provider";
8
8
  export class SdActivatedModalProvider<T extends SdModalContentDef<any> = SdModalContentDef<any>> {
9
9
  modalComponent = signal<any>(undefined);
10
10
  contentComponent = signal<T | undefined>(undefined);
11
- canDeactiveFn: () => boolean = () => true;
11
+ canDeactivateFn: () => boolean = () => true;
12
12
  }
@@ -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
 
@@ -86,7 +85,7 @@ export class SdModalProvider {
86
85
  modal: SdModalInfo<T>,
87
86
  options?: SdModalOptions,
88
87
  ): Promise<Parameters<T["close"]["emit"]>[0] | undefined> {
89
- return new Promise<Parameters<T["close"]["emit"]>[0] | undefined>((resolve) => {
88
+ return new Promise<Parameters<T["close"]["emit"]>[0] | undefined>((resolve, reject) => {
90
89
  // 1. modalCount 증가
91
90
  this.modalCount.update((v) => v + 1);
92
91
 
@@ -99,10 +98,17 @@ export class SdModalProvider {
99
98
  parent: this._injector,
100
99
  });
101
100
 
102
- const contentRef: ComponentRef<T> = createComponent(modal.type, {
103
- environmentInjector: this._envInjector,
104
- elementInjector: contentInjector,
105
- });
101
+ let contentRef: ComponentRef<T>;
102
+ try {
103
+ contentRef = createComponent(modal.type, {
104
+ environmentInjector: this._envInjector,
105
+ elementInjector: contentInjector,
106
+ });
107
+ } catch (err) {
108
+ this.modalCount.update((v) => v - 1);
109
+ reject(err);
110
+ return;
111
+ }
106
112
 
107
113
  // 4. setInput으로 inputs 바인딩
108
114
  for (const [key, value] of Object.entries(modal.inputs as Record<string, unknown>)) {
@@ -120,7 +126,7 @@ export class SdModalProvider {
120
126
  modalRef.setInput("title", modal.title);
121
127
  if (options !== undefined) {
122
128
  for (const [key, value] of Object.entries(options)) {
123
- if (value !== undefined) {
129
+ if (value !== undefined && key !== "noFirstControlFocusing") {
124
130
  modalRef.setInput(key, value);
125
131
  }
126
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
  }
@@ -389,10 +389,10 @@ export class SdModal {
389
389
  }
390
390
 
391
391
  private _requestClose(): void {
392
- if (this._activatedModal !== null && !this._activatedModal.canDeactiveFn()) {
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};${new URLSearchParams(params).toString()}`,
40
+ `${location.pathname}#${navigate}${suffix}`,
39
41
  "_blank",
40
42
  );
41
43
  }
@@ -8,7 +8,7 @@ export function setupCanDeactivate(fn: () => boolean): void {
8
8
  const elRef = inject(ElementRef);
9
9
 
10
10
  if (activatedModal != null) {
11
- activatedModal.canDeactiveFn = fn;
11
+ activatedModal.canDeactivateFn = fn;
12
12
  return;
13
13
  }
14
14
 
@@ -26,11 +26,13 @@ export function useSelectionManager<T>(options: {
26
26
  return options.selectMode() != null;
27
27
  });
28
28
 
29
+ const selectedItemsSet = computed(() => new Set(options.selectedItems()));
30
+
29
31
  const isAllSelected = computed(() => {
30
32
  const items = selectableItems();
31
33
  if (items.length === 0) return false;
32
- const selectedSet = new Set(options.selectedItems());
33
- return items.every((item) => selectedSet.has(item));
34
+ const set = selectedItemsSet();
35
+ return items.every((item) => set.has(item));
34
36
  });
35
37
 
36
38
  function getSelectable(item: T): true | string | undefined {
@@ -87,7 +89,7 @@ export function useSelectionManager<T>(options: {
87
89
  }
88
90
 
89
91
  function isSelected(item: T): boolean {
90
- return options.selectedItems().includes(item);
92
+ return selectedItemsSet().has(item);
91
93
  }
92
94
 
93
95
  return {
@@ -29,6 +29,26 @@ export function setupModelHook<T, S extends WritableSignal<T>>(
29
29
  };
30
30
 
31
31
  model.update = (fn) => {
32
- model.set(fn(model()));
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 {