@simplysm/angular 14.0.38 → 14.0.40

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 (86) 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/collapse/sd-collapse.d.ts +2 -1
  8. package/dist/controls/collapse/sd-collapse.d.ts.map +1 -1
  9. package/dist/controls/collapse/sd-collapse.js +6 -0
  10. package/dist/controls/dropdown/sd-dropdown.js +6 -6
  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/controls/list/sd-list-item.d.ts.map +1 -1
  14. package/dist/controls/list/sd-list-item.js +3 -3
  15. package/dist/controls/select/sd-select.d.ts.map +1 -1
  16. package/dist/controls/select/sd-select.js +7 -11
  17. package/dist/core/error-handler/sd-global-error-handler.plugin.d.ts.map +1 -1
  18. package/dist/core/error-handler/sd-global-error-handler.plugin.js +7 -2
  19. package/dist/core/modal/injectFocusTrap.js +4 -4
  20. package/dist/core/modal/sd-modal.d.ts +2 -3
  21. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  22. package/dist/core/modal/sd-modal.js +8 -9
  23. package/dist/core/modal/sd-modal.provider.d.ts +0 -1
  24. package/dist/core/modal/sd-modal.provider.d.ts.map +1 -1
  25. package/dist/core/modal/sd-modal.provider.js +5 -5
  26. package/dist/core/routing/sd-navigate-window.provider.d.ts.map +1 -1
  27. package/dist/core/routing/sd-navigate-window.provider.js +3 -1
  28. package/dist/core/setupModelHook.d.ts.map +1 -1
  29. package/dist/core/setupModelHook.js +18 -1
  30. package/dist/core/shared-data/sd-shared-data.provider.d.ts.map +1 -1
  31. package/dist/core/shared-data/sd-shared-data.provider.js +12 -3
  32. package/dist/core/toast/sd-toast-container.js +2 -2
  33. package/dist/core/toast/sd-toast.d.ts.map +1 -1
  34. package/dist/core/toast/sd-toast.js +30 -25
  35. package/dist/core/validation/setupInvalid.js +6 -5
  36. package/dist/data/data-detail/sd-data-detail.base.d.ts +1 -1
  37. package/dist/data/data-detail/sd-data-detail.base.d.ts.map +1 -1
  38. package/dist/data/data-detail/sd-data-detail.base.js +19 -20
  39. package/dist/data/data-sheet/sd-data-sheet.base.d.ts +0 -1
  40. package/dist/data/data-sheet/sd-data-sheet.base.d.ts.map +1 -1
  41. package/dist/data/data-sheet/sd-data-sheet.base.js +4 -12
  42. package/dist/data/getOrmDataEditToastErrorMessage.d.ts +2 -0
  43. package/dist/data/getOrmDataEditToastErrorMessage.d.ts.map +1 -0
  44. package/dist/data/getOrmDataEditToastErrorMessage.js +8 -0
  45. package/dist/data/permission-table/sd-permission-table.d.ts +1 -1
  46. package/dist/data/permission-table/sd-permission-table.d.ts.map +1 -1
  47. package/dist/data/permission-table/sd-permission-table.js +6 -5
  48. package/dist/data/sheet/useSheetCellAgent.js +6 -6
  49. package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
  50. package/dist/features/editor/sd-tiptap-editor.js +3 -1
  51. package/dist/index.d.ts +1 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +2 -0
  54. package/dist/layout/base-container/sd-base-container.d.ts +1 -0
  55. package/dist/layout/base-container/sd-base-container.d.ts.map +1 -1
  56. package/dist/layout/base-container/sd-base-container.js +5 -2
  57. package/dist/layout/sidebar/sd-sidebar-menu.js +3 -3
  58. package/dist/styles.css +1 -1
  59. package/package.json +6 -5
  60. package/scss/commons/_styles.scss +1 -1
  61. package/src/controls/checkbox/sd-checkbox.ts +7 -3
  62. package/src/controls/checkbox/sd-switch.ts +8 -2
  63. package/src/controls/collapse/sd-collapse.ts +6 -0
  64. package/src/controls/dropdown/sd-dropdown.ts +6 -6
  65. package/src/controls/input/sd-textfield.ts +1 -0
  66. package/src/controls/list/sd-list-item.ts +0 -6
  67. package/src/controls/select/sd-select.ts +8 -13
  68. package/src/core/error-handler/sd-global-error-handler.plugin.ts +6 -2
  69. package/src/core/modal/injectFocusTrap.ts +4 -4
  70. package/src/core/modal/sd-modal.provider.ts +5 -6
  71. package/src/core/modal/sd-modal.ts +5 -5
  72. package/src/core/routing/sd-navigate-window.provider.ts +3 -1
  73. package/src/core/setupModelHook.ts +21 -1
  74. package/src/core/shared-data/sd-shared-data.provider.ts +13 -2
  75. package/src/core/toast/sd-toast-container.ts +8 -8
  76. package/src/core/toast/sd-toast.ts +82 -49
  77. package/src/core/validation/setupInvalid.ts +7 -6
  78. package/src/data/data-detail/sd-data-detail.base.ts +21 -24
  79. package/src/data/data-sheet/sd-data-sheet.base.ts +4 -15
  80. package/src/data/getOrmDataEditToastErrorMessage.ts +10 -0
  81. package/src/data/permission-table/sd-permission-table.ts +7 -6
  82. package/src/data/sheet/useSheetCellAgent.ts +6 -6
  83. package/src/features/editor/sd-tiptap-editor.ts +2 -0
  84. package/src/index.ts +3 -0
  85. package/src/layout/base-container/sd-base-container.ts +4 -1
  86. package/src/layout/sidebar/sd-sidebar-menu.ts +1 -1
@@ -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;;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 }); })();
@@ -45,7 +45,7 @@ function SdSidebarMenu_ng_template_4_For_1_Template(rf, ctx) { if (rf & 1) {
45
45
  const menu_r2 = ctx.$implicit;
46
46
  const depth_r4 = i0.ɵɵnextContext().depth;
47
47
  const ctx_r2 = i0.ɵɵnextContext();
48
- i0.ɵɵstyleProp("padding-left", depth_r4 > 0 ? (depth_r4 + 1) * 0.5 : undefined, "em");
48
+ i0.ɵɵstyleProp("text-indent", depth_r4 > 0 ? (depth_r4 + 1) * 0.5 : undefined, "em");
49
49
  i0.ɵɵproperty("sdRouterLink", ctx_r2.getMenuRouterLinkOption(menu_r2))("selected", ctx_r2.getIsMenuSelected(menu_r2))("layout", depth_r4 === 0 ? ctx_r2.rootLayout() : "accordion");
50
50
  i0.ɵɵadvance();
51
51
  i0.ɵɵconditional(menu_r2.icon ? 1 : -1);
@@ -81,7 +81,7 @@ export class SdSidebarMenu {
81
81
  static ɵfac = function SdSidebarMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSidebarMenu)(); };
82
82
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSidebarMenu, selectors: [["sd-sidebar-menu"]], hostAttrs: [1, "flex-column", "fill"], hostVars: 1, hostBindings: function SdSidebarMenu_HostBindings(rf, ctx) { if (rf & 2) {
83
83
  i0.ɵɵattribute("data-sd-root-layout", ctx.rootLayout());
84
- } }, inputs: { menus: [1, "menus"], layout: [1, "layout"], getMenuIsSelectedFn: [1, "getMenuIsSelectedFn"] }, decls: 6, vars: 6, consts: [["itemTpl", ""], [1, "control-header", "p-default"], [1, "flex-fill", 3, "inset"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "typed"], [3, "padding-left", "sdRouterLink", "selected", "layout"], [3, "click", "sdRouterLink", "selected", "layout"], [3, "inset"], [3, "svg"]], template: function SdSidebarMenu_Template(rf, ctx) { if (rf & 1) {
84
+ } }, inputs: { menus: [1, "menus"], layout: [1, "layout"], getMenuIsSelectedFn: [1, "getMenuIsSelectedFn"] }, decls: 6, vars: 6, consts: [["itemTpl", ""], [1, "control-header", "p-default"], [1, "flex-fill", 3, "inset"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "typed"], [3, "text-indent", "sdRouterLink", "selected", "layout"], [3, "click", "sdRouterLink", "selected", "layout"], [3, "inset"], [3, "svg"]], template: function SdSidebarMenu_Template(rf, ctx) { if (rf & 1) {
85
85
  i0.ɵɵelementStart(0, "div", 1);
86
86
  i0.ɵɵtext(1, "MENU");
87
87
  i0.ɵɵelementEnd();
@@ -129,7 +129,7 @@ export class SdSidebarMenu {
129
129
  <ng-template #itemTpl [typed]="itemTemplateType" let-currMenus="menus" let-depth="depth">
130
130
  @for (menu of currMenus; track menu.codeChain.join(".")) {
131
131
  <sd-list-item
132
- [style.padding-left.em]="depth > 0 ? (depth + 1) * 0.5 : undefined"
132
+ [style.text-indent.em]="depth > 0 ? (depth + 1) * 0.5 : undefined"
133
133
  [sdRouterLink]="getMenuRouterLinkOption(menu)"
134
134
  (click)="onMenuClick(menu)"
135
135
  [selected]="getIsMenuSelected(menu)"
package/dist/styles.css CHANGED
@@ -283,7 +283,7 @@
283
283
  border: 2px solid transparent;
284
284
  }
285
285
  *::-webkit-scrollbar-track:hover {
286
- background-color: var(--theme-gray-lighter);
286
+ background-color: var(--theme-gray-lightest);
287
287
  border-radius: 0.6667rem;
288
288
  background-clip: padding-box;
289
289
  border: 2px solid transparent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.38",
3
+ "version": "14.0.40",
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.38",
53
- "@simplysm/core-common": "14.0.38",
54
- "@simplysm/service-client": "14.0.38",
55
- "@simplysm/service-common": "14.0.38"
53
+ "@simplysm/core-browser": "14.0.40",
54
+ "@simplysm/service-client": "14.0.40",
55
+ "@simplysm/core-common": "14.0.40",
56
+ "@simplysm/service-common": "14.0.40"
56
57
  },
57
58
  "devDependencies": {
58
59
  "@angular/compiler": "^21.2.8",
@@ -55,7 +55,7 @@
55
55
 
56
56
  *::-webkit-scrollbar-track {
57
57
  &:hover {
58
- background-color: var(--theme-gray-lighter);
58
+ background-color: var(--theme-gray-lightest);
59
59
  border-radius: 0.6667rem;
60
60
  background-clip: padding-box;
61
61
  border: 2px solid transparent;
@@ -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
  }
@@ -47,17 +47,23 @@ export class SdCollapse {
47
47
 
48
48
  contentHeight = signal(0);
49
49
 
50
+ private readonly _initialized = signal(false);
51
+
50
52
  contentMarginTop = computed(() => {
51
53
  return this.open() ? "" : `-${this.contentHeight()}px`;
52
54
  });
53
55
 
54
56
  contentTransition = computed(() => {
57
+ if (!this._initialized()) return "";
55
58
  return this.open() ? "margin-top 0.1s ease-out" : "margin-top 0.1s ease-in";
56
59
  });
57
60
 
58
61
  constructor() {
59
62
  afterNextRender(() => {
60
63
  this.contentHeight.set(this._contentElRef().nativeElement.offsetHeight);
64
+ requestAnimationFrame(() => {
65
+ this._initialized.set(true);
66
+ });
61
67
  });
62
68
 
63
69
  effect(() => {
@@ -129,11 +129,11 @@ export class SdDropdown {
129
129
  this._openPopup();
130
130
  } else {
131
131
  const popupEl = this.popupElRef().nativeElement;
132
- const focusable = popupEl.findFirstFocusableChild();
133
- if (focusable) {
132
+ const tabbable = popupEl.findFirstTabbableChild();
133
+ if (tabbable) {
134
134
  event.preventDefault();
135
135
  event.stopPropagation();
136
- focusable.focus();
136
+ tabbable.focus();
137
137
  }
138
138
  }
139
139
  }
@@ -261,9 +261,9 @@ export class SdDropdown {
261
261
  mouseoverEl instanceof HTMLElement &&
262
262
  (contentEl.contains(mouseoverEl) === true || popupEl.contains(mouseoverEl) === true)
263
263
  ) {
264
- const focusable = popupEl.findFirstFocusableChild();
265
- if (focusable != null) {
266
- focusable.focus();
264
+ const tabbable = popupEl.findFirstTabbableChild();
265
+ if (tabbable != null) {
266
+ tabbable.focus();
267
267
  } else {
268
268
  contentEl.focus();
269
269
  }
@@ -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]);
@@ -97,12 +97,6 @@ import { setupRipple } from "../../core/ripple/setupRipple";
97
97
  background: transparent;
98
98
  }
99
99
  }
100
-
101
- &[data-sd-has-children="false"] {
102
- > ._content {
103
- padding-left: calc(var(--gap-default) + var(--gap-sm) + 0.75em);
104
- }
105
- }
106
100
  }
107
101
  `,
108
102
  ],
@@ -279,15 +279,15 @@ export class SdSelect<M extends "single" | "multi", T> {
279
279
  event.preventDefault();
280
280
  event.stopPropagation();
281
281
 
282
- const focusableEls = tabbable(popupEl);
283
- if (focusableEls.length === 0) return;
282
+ const tabbableEls = tabbable(popupEl);
283
+ if (tabbableEls.length === 0) return;
284
284
 
285
- const currIndex = focusableEls.indexOf(document.activeElement as HTMLElement);
285
+ const currIndex = tabbableEls.indexOf(document.activeElement as HTMLElement);
286
286
 
287
287
  if (event.key === "ArrowDown") {
288
288
  const nextIndex = currIndex + 1;
289
- if (nextIndex < focusableEls.length) {
290
- focusableEls[nextIndex].focus();
289
+ if (nextIndex < tabbableEls.length) {
290
+ tabbableEls[nextIndex].focus();
291
291
  }
292
292
  } else {
293
293
  // ArrowUp
@@ -295,7 +295,7 @@ export class SdSelect<M extends "single" | "multi", T> {
295
295
  // Return focus to dropdown trigger
296
296
  this._dropdownElRef().nativeElement.focus();
297
297
  } else {
298
- focusableEls[currIndex - 1].focus();
298
+ tabbableEls[currIndex - 1].focus();
299
299
  }
300
300
  }
301
301
  }
@@ -321,14 +321,9 @@ export class SdSelect<M extends "single" | "multi", T> {
321
321
  const items = this._itemControls();
322
322
  const currentValue = this.value();
323
323
 
324
- if (currentValue == null) {
325
- this._selectedItemContentHTML.set(undefined);
326
- return;
327
- }
328
-
329
324
  if (this.selectMode() === "multi") {
330
- const arr = currentValue as T[];
331
- if (arr.length === 0) {
325
+ const arr = currentValue as T[] | undefined;
326
+ if (arr == null || arr.length === 0) {
332
327
  this._selectedItemContentHTML.set(undefined);
333
328
  return;
334
329
  }
@@ -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;
@@ -21,11 +21,11 @@ export function injectFocusTrap(): {
21
21
 
22
22
  function handleTabTrap(event: KeyboardEvent): void {
23
23
  const hostEl = elRef.nativeElement;
24
- const focusableElements = getTabbableElements(hostEl);
25
- if (focusableElements.length === 0) return;
24
+ const tabbableElements = getTabbableElements(hostEl);
25
+ if (tabbableElements.length === 0) return;
26
26
 
27
- const first = focusableElements[0];
28
- const last = focusableElements[focusableElements.length - 1];
27
+ const first = tabbableElements[0];
28
+ const last = tabbableElements[tabbableElements.length - 1];
29
29
 
30
30
  if (event.shiftKey) {
31
31
  if (document.activeElement === first) {
@@ -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
  }
@@ -171,11 +170,11 @@ export class SdModalProvider {
171
170
  if (options?.noFirstControlFocusing === true) {
172
171
  dialogEl.focus();
173
172
  } else {
174
- // 컨텐츠 영역에서 첫 포커스 가능 요소 검색
173
+ // 컨텐츠 영역에서 첫 이동 가능 요소 검색
175
174
  const contentEl = modalEl.querySelector("._content");
176
- const firstFocusable = contentEl?.findFirstFocusableChild();
177
- if (firstFocusable !== undefined) {
178
- firstFocusable.focus();
175
+ const firstTabbable = contentEl?.findFirstTabbableChild();
176
+ if (firstTabbable !== undefined) {
177
+ firstTabbable.focus();
179
178
  } else {
180
179
  dialogEl.focus();
181
180
  }
@@ -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};${new URLSearchParams(params).toString()}`,
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
- 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 {
@@ -18,18 +18,21 @@ import {
18
18
  styles: [
19
19
  /* language=SCSS */ `
20
20
  @use "../../../scss/commons/variables";
21
+ @use "../../../scss/commons/mixins";
21
22
  @use "sass:map";
22
23
 
23
24
  sd-toast-container {
25
+ display: flex;
24
26
  position: fixed;
25
27
  top: 0;
26
28
  left: 0;
27
- right: 0;
28
- display: flex;
29
- flex-direction: column;
30
- align-items: center;
31
- z-index: map.get(variables.$vars, z-index, toast);
29
+ height: 100%;
30
+ width: 100%;
32
31
  pointer-events: none;
32
+ padding: var(--gap-xxl);
33
+ z-index: map.get(variables.$vars, z-index, toast);
34
+
35
+ @include mixins.flex-direction(column);
33
36
 
34
37
  @media all and (max-width: variables.$breakpoint-mobile) {
35
38
  flex-direction: column-reverse;
@@ -37,8 +40,6 @@ import {
37
40
 
38
41
  &[data-sd-overlap] {
39
42
  display: block;
40
- bottom: 0;
41
- height: 100%;
42
43
 
43
44
  > sd-toast {
44
45
  position: absolute;
@@ -46,7 +47,6 @@ import {
46
47
  left: var(--gap-xxl);
47
48
  right: var(--gap-xxl);
48
49
  width: auto;
49
- max-width: none;
50
50
  }
51
51
  }
52
52
  }