@simplysm/angular 14.0.86 → 14.0.88

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 (109) hide show
  1. package/dist/controls/pagination/sd-pagination.d.ts.map +1 -1
  2. package/dist/controls/pagination/sd-pagination.js +2 -0
  3. package/dist/controls/select/sd-select-item.js +1 -1
  4. package/dist/controls/select/sd-select.js +1 -1
  5. package/dist/core/app-structure/sd-app-structure.provider.d.ts +1 -0
  6. package/dist/core/app-structure/sd-app-structure.provider.d.ts.map +1 -1
  7. package/dist/core/app-structure/sd-app-structure.provider.js +3 -0
  8. package/dist/core/app-structure/sd-app-structure.utils.d.ts +2 -0
  9. package/dist/core/app-structure/sd-app-structure.utils.d.ts.map +1 -1
  10. package/dist/core/app-structure/sd-app-structure.utils.js +9 -1
  11. package/dist/core/busy/sd-busy-container.d.ts +1 -1
  12. package/dist/core/busy/sd-busy-container.d.ts.map +1 -1
  13. package/dist/core/busy/sd-busy-container.js +11 -11
  14. package/dist/core/busy/sd-busy.provider.d.ts.map +1 -1
  15. package/dist/core/busy/sd-busy.provider.js +3 -0
  16. package/dist/core/config/sd-system-config.provider.d.ts +4 -4
  17. package/dist/core/config/sd-system-config.provider.d.ts.map +1 -1
  18. package/dist/core/config/sd-system-config.provider.js +3 -0
  19. package/dist/core/error-handler/sd-global-error-handler.plugin.d.ts +1 -1
  20. package/dist/core/error-handler/sd-global-error-handler.plugin.d.ts.map +1 -1
  21. package/dist/core/file-dialog/sd-file-dialog.provider.d.ts.map +1 -1
  22. package/dist/core/file-dialog/sd-file-dialog.provider.js +4 -0
  23. package/dist/core/modal/sd-activated-modal.provider.d.ts +2 -1
  24. package/dist/core/modal/sd-activated-modal.provider.d.ts.map +1 -1
  25. package/dist/core/modal/sd-modal.d.ts.map +1 -1
  26. package/dist/core/modal/sd-modal.js +3 -3
  27. package/dist/core/modal/sd-modal.provider.d.ts.map +1 -1
  28. package/dist/core/modal/sd-modal.provider.js +8 -0
  29. package/dist/core/modal/sd-prompt-modal.d.ts +2 -2
  30. package/dist/core/modal/sd-prompt-modal.d.ts.map +1 -1
  31. package/dist/core/modal/sd-prompt-modal.js +32 -37
  32. package/dist/core/print/sd-print.provider.d.ts.map +1 -1
  33. package/dist/core/print/sd-print.provider.js +19 -6
  34. package/dist/core/provideSdAngular.d.ts.map +1 -1
  35. package/dist/core/provideSdAngular.js +4 -1
  36. package/dist/core/routing/injectViewTitleSignal.d.ts.map +1 -1
  37. package/dist/core/routing/injectViewTitleSignal.js +1 -6
  38. package/dist/core/shared-data/sd-shared-data.provider.d.ts +2 -1
  39. package/dist/core/shared-data/sd-shared-data.provider.d.ts.map +1 -1
  40. package/dist/core/shared-data/sd-shared-data.provider.js +1 -1
  41. package/dist/core/toast/sd-toast.provider.d.ts +1 -0
  42. package/dist/core/toast/sd-toast.provider.d.ts.map +1 -1
  43. package/dist/core/toast/sd-toast.provider.js +18 -4
  44. package/dist/data/kanban/sd-kanban-lane.d.ts.map +1 -1
  45. package/dist/data/shared-data/sd-shared-data-select-button.d.ts +1 -2
  46. package/dist/data/shared-data/sd-shared-data-select-button.d.ts.map +1 -1
  47. package/dist/data/shared-data/sd-shared-data-select-button.js +18 -21
  48. package/dist/data/shared-data/sd-shared-data-select.d.ts +3 -2
  49. package/dist/data/shared-data/sd-shared-data-select.d.ts.map +1 -1
  50. package/dist/data/shared-data/sd-shared-data-select.js +10 -10
  51. package/dist/data/sheet/sd-sheet-config.modal.d.ts +3 -3
  52. package/dist/data/sheet/sd-sheet-config.modal.d.ts.map +1 -1
  53. package/dist/data/sheet/sd-sheet-config.modal.js +37 -34
  54. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  55. package/dist/data/sheet/sd-sheet.js +5 -1
  56. package/dist/data/sheet/useSheetCellStyling.d.ts.map +1 -1
  57. package/dist/data/sheet/useSheetCellStyling.js +4 -22
  58. package/dist/data/state-preset/sd-state-preset.d.ts +10 -10
  59. package/dist/data/state-preset/sd-state-preset.d.ts.map +1 -1
  60. package/dist/data/state-preset/sd-state-preset.js +4 -4
  61. package/dist/features/address/sd-address-search.modal.js +1 -1
  62. package/dist/features/editor/sd-tiptap-editor.d.ts.map +1 -1
  63. package/dist/features/editor/sd-tiptap-editor.js +3 -2
  64. package/dist/features/theme/sd-theme-selector.d.ts +6 -8
  65. package/dist/features/theme/sd-theme-selector.d.ts.map +1 -1
  66. package/dist/features/theme/sd-theme-selector.js +54 -51
  67. package/dist/features/visual/sd-barcode.d.ts.map +1 -1
  68. package/dist/features/visual/sd-barcode.js +5 -10
  69. package/dist/layout/sidebar/sd-sidebar-user.d.ts.map +1 -1
  70. package/dist/layout/sidebar/sd-sidebar-user.js +26 -36
  71. package/package.json +5 -5
  72. package/src/controls/button/sd-modal-select-button.ts +1 -1
  73. package/src/controls/form/sd-form.ts +1 -1
  74. package/src/controls/input/sd-textfield-type-handlers.ts +2 -2
  75. package/src/controls/pagination/sd-pagination.ts +1 -0
  76. package/src/controls/select/sd-select-item.ts +1 -1
  77. package/src/controls/select/sd-select.ts +1 -1
  78. package/src/core/app-structure/sd-app-structure.provider.ts +4 -0
  79. package/src/core/app-structure/sd-app-structure.utils.ts +14 -2
  80. package/src/core/busy/sd-busy-container.ts +6 -13
  81. package/src/core/busy/sd-busy.provider.ts +4 -0
  82. package/src/core/config/injectSdSystemConfigResource.ts +1 -1
  83. package/src/core/config/sd-system-config.provider.ts +5 -3
  84. package/src/core/error-handler/sd-global-error-handler.plugin.ts +1 -1
  85. package/src/core/file-dialog/sd-file-dialog.provider.ts +5 -1
  86. package/src/core/modal/sd-activated-modal.provider.ts +2 -1
  87. package/src/core/modal/sd-modal.provider.ts +8 -0
  88. package/src/core/modal/sd-modal.ts +6 -3
  89. package/src/core/modal/sd-prompt-modal.ts +13 -23
  90. package/src/core/print/sd-print.provider.ts +21 -6
  91. package/src/core/provideSdAngular.ts +5 -1
  92. package/src/core/routing/injectViewTitleSignal.ts +1 -5
  93. package/src/core/shared-data/sd-shared-data.provider.ts +2 -2
  94. package/src/core/toast/sd-toast.provider.ts +35 -12
  95. package/src/data/kanban/sd-kanban-lane.ts +2 -2
  96. package/src/data/shared-data/sd-shared-data-select-button.ts +15 -20
  97. package/src/data/shared-data/sd-shared-data-select-list.ts +4 -4
  98. package/src/data/shared-data/sd-shared-data-select.ts +10 -12
  99. package/src/data/sheet/sd-sheet-column.ts +1 -1
  100. package/src/data/sheet/sd-sheet-config.modal.ts +39 -35
  101. package/src/data/sheet/sd-sheet.ts +6 -1
  102. package/src/data/sheet/useSheetCellStyling.ts +3 -20
  103. package/src/data/state-preset/sd-state-preset.ts +11 -11
  104. package/src/features/address/sd-address-search.modal.ts +1 -1
  105. package/src/features/editor/sd-tiptap-editor.ts +3 -2
  106. package/src/features/theme/sd-theme-selector.ts +77 -75
  107. package/src/features/visual/sd-barcode.ts +5 -9
  108. package/src/features/visual/sd-calendar.ts +1 -1
  109. package/src/layout/sidebar/sd-sidebar-user.ts +3 -5
@@ -15,7 +15,7 @@ export function useSheetCellStyling(options) {
15
15
  return null;
16
16
  return `left: ${leftValue}px`;
17
17
  }
18
- const headerColumnStyles = computed(() => {
18
+ const columnBaseStyles = computed(() => {
19
19
  const map = new Map();
20
20
  const defs = options.columnDefs();
21
21
  for (let i = 0; i < defs.length; i++) {
@@ -32,30 +32,12 @@ export function useSheetCellStyling(options) {
32
32
  map.set(colDef.key, parts.length > 0 ? parts.join("; ") : null);
33
33
  }
34
34
  return map;
35
- }, ...(ngDevMode ? [{ debugName: "headerColumnStyles" }] : /* istanbul ignore next */ []));
36
- const dataColumnBaseStyles = computed(() => {
37
- const map = new Map();
38
- const defs = options.columnDefs();
39
- for (let i = 0; i < defs.length; i++) {
40
- const colDef = defs[i];
41
- const parts = [];
42
- const colStyle = getColDefStyle(colDef);
43
- if (colStyle != null)
44
- parts.push(colStyle);
45
- if (colDef.fixed) {
46
- const fixedStyle = getFixedLeftStyle(i);
47
- if (fixedStyle != null)
48
- parts.push(fixedStyle);
49
- }
50
- map.set(colDef.key, parts.length > 0 ? parts.join("; ") : null);
51
- }
52
- return map;
53
- }, ...(ngDevMode ? [{ debugName: "dataColumnBaseStyles" }] : /* istanbul ignore next */ []));
35
+ }, ...(ngDevMode ? [{ debugName: "columnBaseStyles" }] : /* istanbul ignore next */ []));
54
36
  function getHeaderCellStyle(cell) {
55
37
  if (cell.colDef == null)
56
38
  return null;
57
39
  const parts = [];
58
- const baseStyle = headerColumnStyles().get(cell.colDef.key);
40
+ const baseStyle = columnBaseStyles().get(cell.colDef.key);
59
41
  if (baseStyle != null)
60
42
  parts.push(baseStyle);
61
43
  if (cell.colDef.headerStyle != null)
@@ -63,7 +45,7 @@ export function useSheetCellStyling(options) {
63
45
  return parts.length > 0 ? parts.join("; ") : null;
64
46
  }
65
47
  function getCellStyle(item, colDef) {
66
- const baseStyle = dataColumnBaseStyles().get(colDef.key) ?? null;
48
+ const baseStyle = columnBaseStyles().get(colDef.key) ?? null;
67
49
  const styleFn = options.getItemCellStyleFn();
68
50
  const customStyle = styleFn != null ? styleFn(item, colDef.key) : undefined;
69
51
  if (baseStyle != null && customStyle != null)
@@ -1,24 +1,24 @@
1
1
  import * as i0 from "@angular/core";
2
- export interface SdStatePresetDef {
2
+ export interface SdStatePresetDef<TState> {
3
3
  name: string;
4
- state: any;
4
+ state: TState;
5
5
  }
6
- export declare class SdStatePreset {
6
+ export declare class SdStatePreset<TState> {
7
7
  private readonly _sdModal;
8
8
  private readonly _sdToast;
9
9
  key: import("@angular/core").InputSignal<string>;
10
- state: import("@angular/core").ModelSignal<any>;
10
+ state: import("@angular/core").ModelSignal<TState>;
11
11
  size: import("@angular/core").InputSignal<"sm" | "lg" | undefined>;
12
12
  protected readonly tablerStar = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"></path></svg>";
13
13
  protected readonly tablerDeviceFloppy = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2\"></path><path d=\"M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0\"></path><path d=\"M14 4l0 4l-6 0l0 -4\"></path></svg>";
14
14
  protected readonly tablerX = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M18 6l-12 12\"></path><path d=\"M6 6l12 12\"></path></svg>";
15
15
  private readonly _configResource;
16
- _presets: import("@angular/core").Signal<SdStatePresetDef[]>;
16
+ _presets: import("@angular/core").Signal<SdStatePresetDef<TState>[]>;
17
17
  onAddClick(): Promise<void>;
18
- onPresetClick(preset: SdStatePresetDef): void;
19
- onSaveClick(preset: SdStatePresetDef): void;
20
- onDeleteClick(preset: SdStatePresetDef): Promise<void>;
21
- static ɵfac: i0.ɵɵFactoryDeclaration<SdStatePreset, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<SdStatePreset, "sd-state-preset", never, { "key": { "alias": "key"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "state": "stateChange"; }, never, never, true, never>;
18
+ onPresetClick(preset: SdStatePresetDef<TState>): void;
19
+ onSaveClick(preset: SdStatePresetDef<TState>): void;
20
+ onDeleteClick(preset: SdStatePresetDef<TState>): Promise<void>;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdStatePreset<any>, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdStatePreset<any>, "sd-state-preset", never, { "key": { "alias": "key"; "required": true; "isSignal": true; }; "state": { "alias": "state"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "state": "stateChange"; }, never, never, true, never>;
23
23
  }
24
24
  //# sourceMappingURL=sd-state-preset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-state-preset.d.ts","sourceRoot":"","sources":["../../../src/data/state-preset/sd-state-preset.ts"],"names":[],"mappings":";AAmBA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,qBA0Fa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,GAAG,8CAA4B;IAC/B,KAAK,2CAAgB;IACrB,IAAI,+DAAwB;IAE5B,SAAS,CAAC,QAAQ,CAAC,UAAU,wZAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,sdAAsB;IAC3D,SAAS,CAAC,QAAQ,CAAC,OAAO,yVAAW;IAErC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE7B;IAEH,QAAQ,qDAAsD;IAExD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAM7C,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IASrC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;yCA7DjD,aAAa;2CAAb,aAAa;CA6EzB"}
1
+ {"version":3,"file":"sd-state-preset.d.ts","sourceRoot":"","sources":["../../../src/data/state-preset/sd-state-preset.ts"],"names":[],"mappings":";AAmBA,MAAM,WAAW,gBAAgB,CAAC,MAAM;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBA0Fa,aAAa,CAAC,MAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IAEpD,GAAG,8CAA4B;IAC/B,KAAK,8CAA4B;IACjC,IAAI,+DAAwB;IAE5B,SAAS,CAAC,QAAQ,CAAC,UAAU,wZAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,sdAAsB;IAC3D,SAAS,CAAC,QAAQ,CAAC,OAAO,yVAAW;IAErC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE7B;IAEH,QAAQ,6DAAsD;IAExD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAMrD,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAS7C,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;yCA7DzD,aAAa;2CAAb,aAAa;CA6EzB"}
@@ -40,7 +40,7 @@ export class SdStatePreset {
40
40
  _sdModal = inject(SdModalProvider);
41
41
  _sdToast = inject(SdToastProvider);
42
42
  key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
43
- state = model(...(ngDevMode ? [undefined, { debugName: "state" }] : /* istanbul ignore next */ []));
43
+ state = model.required(...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
44
44
  size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
45
45
  tablerStar = tablerStar;
46
46
  tablerDeviceFloppy = tablerDeviceFloppy;
@@ -67,7 +67,7 @@ export class SdStatePreset {
67
67
  state: obj.clone(this.state()),
68
68
  };
69
69
  this._configResource.set([...currentPresets, newPreset]);
70
- this._sdToast.info(`현재 상태가 '${name}'에 저장되었습니다.`);
70
+ this._sdToast.success(`현재 상태가 '${name}'에 저장되었습니다.`);
71
71
  }
72
72
  onPresetClick(preset) {
73
73
  const currentState = this.state();
@@ -79,7 +79,7 @@ export class SdStatePreset {
79
79
  const currentPresets = this._presets();
80
80
  const updated = currentPresets.map((p) => p.name === preset.name ? { ...p, state: obj.clone(this.state()) } : p);
81
81
  this._configResource.set(updated);
82
- this._sdToast.info(`현재 상태가 ${preset.name}에 저장되었습니다.`);
82
+ this._sdToast.success(`현재 상태가 ${preset.name}에 저장되었습니다.`);
83
83
  }
84
84
  async onDeleteClick(preset) {
85
85
  const confirmed = await this._sdModal.showAsync({
@@ -134,5 +134,5 @@ export class SdStatePreset {
134
134
  `, host: {
135
135
  "[attr.data-sd-size]": "size()",
136
136
  }, styles: ["sd-state-preset {\n display: inline-block;\n vertical-align: top;\n}\nsd-state-preset > ._sd-state-preset {\n display: flex;\n align-items: center;\n gap: var(--gap-sm);\n flex-wrap: wrap;\n}\nsd-state-preset > ._sd-state-preset > ._add-btn {\n line-height: var(--line-height);\n border: 1px solid transparent;\n padding: var(--gap-sm) var(--gap-default);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item {\n display: inline-flex;\n align-items: center;\n gap: var(--gap-xs);\n line-height: var(--line-height);\n border: 1px solid transparent;\n border-radius: var(--border-radius-lg);\n padding: var(--gap-sm) var(--gap-default);\n background: var(--theme-gray-lightest);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item:hover {\n background: var(--theme-gray-lighter);\n}\nsd-state-preset > ._sd-state-preset > ._preset-item > sd-anchor {\n padding: 0 var(--gap-sm);\n}\nsd-state-preset[data-sd-size=sm] > ._sd-state-preset > ._add-btn {\n padding: var(--gap-xs) var(--gap-default);\n}\nsd-state-preset[data-sd-size=sm] > ._sd-state-preset > ._preset-item {\n padding: var(--gap-xs) var(--gap-default);\n}\nsd-state-preset[data-sd-size=lg] > ._sd-state-preset > ._add-btn {\n padding: var(--gap-default) var(--gap-lg);\n}\nsd-state-preset[data-sd-size=lg] > ._sd-state-preset > ._preset-item {\n padding: var(--gap-default) var(--gap-lg);\n}"] }]
137
- }], null, { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] }); })();
137
+ }], null, { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: true }] }, { type: i0.Output, args: ["stateChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] }); })();
138
138
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdStatePreset, { className: "SdStatePreset", filePath: "packages/angular/src/data/state-preset/sd-state-preset.ts", lineNumber: 115 }); })();
@@ -87,7 +87,7 @@ export class SdAddressSearchModal {
87
87
  this.close.emit({
88
88
  postNumber: data.zonecode,
89
89
  address: addr + extraAddr,
90
- buildingName: data.buildingName,
90
+ buildingName: data.buildingName !== "" ? data.buildingName : undefined,
91
91
  });
92
92
  },
93
93
  onresize: (size) => {
@@ -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;;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"}
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;;IA6DH,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;yCAtIf,cAAc;2CAAd,cAAc;CA4I1B"}
@@ -241,8 +241,9 @@ export class SdTiptapEditor {
241
241
  errorMessages.push("값을 입력하세요.");
242
242
  }
243
243
  }
244
- if (this.validatorFn()) {
245
- const message = this.validatorFn()(this.value());
244
+ const validatorFn = this.validatorFn();
245
+ if (validatorFn != null) {
246
+ const message = validatorFn(this.value());
246
247
  if (message != null) {
247
248
  errorMessages.push(message);
248
249
  }
@@ -1,14 +1,12 @@
1
1
  import { SdThemeProvider } from "./sd-theme-provider";
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class SdThemeSelector {
4
- protected readonly icons: {
5
- tablerPalette: string;
6
- tablerMinus: string;
7
- tablerPlus: string;
8
- };
9
- protected readonly sdTheme: SdThemeProvider;
10
- protected readonly isMinFontSize: import("@angular/core").Signal<boolean>;
11
- protected readonly isMaxFontSize: import("@angular/core").Signal<boolean>;
4
+ protected readonly _sdTheme: SdThemeProvider;
5
+ isMinFontSize: import("@angular/core").Signal<boolean>;
6
+ isMaxFontSize: import("@angular/core").Signal<boolean>;
7
+ protected readonly tablerPlus = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M12 5l0 14\"></path><path d=\"M5 12l14 0\"></path></svg>";
8
+ protected readonly tablerMinus = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M5 12l14 0\"></path></svg>";
9
+ protected readonly tablerPalette = "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"stroke-width:var(--ng-icon__stroke-width, 2)\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"></path><path d=\"M12 21a9 9 0 0 1 0 -18c4.97 0 9 3.582 9 8c0 1.06 -.474 2.078 -1.318 2.828c-.844 .75 -1.989 1.172 -3.182 1.172h-2.5a2 2 0 0 0 -1 3.75a1.3 1.3 0 0 1 -1 2.25\"></path><path d=\"M8.5 10.5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\"></path><path d=\"M12.5 7.5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\"></path><path d=\"M16.5 10.5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\"></path></svg>";
12
10
  static ɵfac: i0.ɵɵFactoryDeclaration<SdThemeSelector, never>;
13
11
  static ɵcmp: i0.ɵɵComponentDeclaration<SdThemeSelector, "sd-theme-selector", never, {}, {}, never, never, true, never>;
14
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sd-theme-selector.d.ts","sourceRoot":"","sources":["../../../src/features/theme/sd-theme-selector.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;;AAEtD,qBA+Ca,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,KAAK;;;;MAA8C;IACtE,SAAS,CAAC,QAAQ,CAAC,OAAO,kBAA2B;IAErD,SAAS,CAAC,QAAQ,CAAC,aAAa,0CAE9B;IAEF,SAAS,CAAC,QAAQ,CAAC,aAAa,0CAG9B;yCAXS,eAAe;2CAAf,eAAe;CAY3B"}
1
+ {"version":3,"file":"sd-theme-selector.d.ts","sourceRoot":"","sources":["../../../src/features/theme/sd-theme-selector.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;;AAGtD,qBA+Ca,eAAe;IAC1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,kBAA2B;IAEtD,aAAa,0CAAgF;IAE7F,aAAa,0CAIX;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,uVAAc;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW,yTAAe;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa,uoBAAiB;yCAbtC,eAAe;2CAAf,eAAe;CAc3B"}
@@ -4,14 +4,17 @@ import { SdDropdownPopup } from "../../controls/dropdown/sd-dropdown-popup";
4
4
  import { SdButton } from "../../controls/button/sd-button";
5
5
  import { SdSwitch } from "../../controls/checkbox/sd-switch";
6
6
  import { NgIcon } from "@ng-icons/core";
7
- import { tablerMinus, tablerPalette, tablerPlus } from "@ng-icons/tabler-icons";
8
7
  import { SdThemeProvider } from "./sd-theme-provider";
8
+ import { tablerMinus, tablerPalette, tablerPlus } from "@ng-icons/tabler-icons";
9
9
  import * as i0 from "@angular/core";
10
10
  export class SdThemeSelector {
11
- icons = { tablerPalette, tablerMinus, tablerPlus };
12
- sdTheme = inject(SdThemeProvider);
13
- isMinFontSize = computed(() => this.sdTheme.fontSize() <= this.sdTheme.fontSizePresets[0], ...(ngDevMode ? [{ debugName: "isMinFontSize" }] : /* istanbul ignore next */ []));
14
- isMaxFontSize = computed(() => this.sdTheme.fontSize() >= this.sdTheme.fontSizePresets[this.sdTheme.fontSizePresets.length - 1], ...(ngDevMode ? [{ debugName: "isMaxFontSize" }] : /* istanbul ignore next */ []));
11
+ _sdTheme = inject(SdThemeProvider);
12
+ isMinFontSize = computed(() => this._sdTheme.fontSize() <= this._sdTheme.fontSizePresets[0], ...(ngDevMode ? [{ debugName: "isMinFontSize" }] : /* istanbul ignore next */ []));
13
+ isMaxFontSize = computed(() => this._sdTheme.fontSize() >=
14
+ this._sdTheme.fontSizePresets[this._sdTheme.fontSizePresets.length - 1], ...(ngDevMode ? [{ debugName: "isMaxFontSize" }] : /* istanbul ignore next */ []));
15
+ tablerPlus = tablerPlus;
16
+ tablerMinus = tablerMinus;
17
+ tablerPalette = tablerPalette;
15
18
  static ɵfac = function SdThemeSelector_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdThemeSelector)(); };
16
19
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdThemeSelector, selectors: [["sd-theme-selector"]], decls: 19, vars: 15, consts: [[3, "inline", "theme"], [3, "svg"], [1, "p-default"], [1, "flex-row", "gap-sm", "cross-align-center"], [1, "flex-row", "gap-xs", "cross-align-center"], [3, "click", "inline", "theme", "size", "disabled"], [3, "valueChange", "value"]], template: function SdThemeSelector_Template(rf, ctx) { if (rf & 1) {
17
20
  i0.ɵɵelementStart(0, "sd-dropdown")(1, "sd-button", 0);
@@ -21,81 +24,81 @@ export class SdThemeSelector {
21
24
  i0.ɵɵtext(7, "\uAE00\uC790 \uD06C\uAE30");
22
25
  i0.ɵɵelementEnd();
23
26
  i0.ɵɵelementStart(8, "div", 4)(9, "sd-button", 5);
24
- i0.ɵɵlistener("click", function SdThemeSelector_Template_sd_button_click_9_listener() { return ctx.sdTheme.decreaseFontSize(); });
27
+ i0.ɵɵlistener("click", function SdThemeSelector_Template_sd_button_click_9_listener() { return ctx._sdTheme.decreaseFontSize(); });
25
28
  i0.ɵɵelement(10, "ng-icon", 1);
26
29
  i0.ɵɵelementEnd();
27
30
  i0.ɵɵelementStart(11, "span");
28
31
  i0.ɵɵtext(12);
29
32
  i0.ɵɵelementEnd();
30
33
  i0.ɵɵelementStart(13, "sd-button", 5);
31
- i0.ɵɵlistener("click", function SdThemeSelector_Template_sd_button_click_13_listener() { return ctx.sdTheme.increaseFontSize(); });
34
+ i0.ɵɵlistener("click", function SdThemeSelector_Template_sd_button_click_13_listener() { return ctx._sdTheme.increaseFontSize(); });
32
35
  i0.ɵɵelement(14, "ng-icon", 1);
33
36
  i0.ɵɵelementEnd()()();
34
37
  i0.ɵɵelementStart(15, "div", 3)(16, "span");
35
38
  i0.ɵɵtext(17, "\uB2E4\uD06C \uBAA8\uB4DC");
36
39
  i0.ɵɵelementEnd();
37
40
  i0.ɵɵelementStart(18, "sd-switch", 6);
38
- i0.ɵɵtwoWayListener("valueChange", function SdThemeSelector_Template_sd_switch_valueChange_18_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.sdTheme.dark, $event) || (ctx.sdTheme.dark = $event); return $event; });
41
+ i0.ɵɵtwoWayListener("valueChange", function SdThemeSelector_Template_sd_switch_valueChange_18_listener($event) { i0.ɵɵtwoWayBindingSet(ctx._sdTheme.dark, $event) || (ctx._sdTheme.dark = $event); return $event; });
39
42
  i0.ɵɵelementEnd()()()()();
40
43
  } if (rf & 2) {
41
44
  i0.ɵɵadvance();
42
45
  i0.ɵɵproperty("inline", true)("theme", "link-gray");
43
46
  i0.ɵɵadvance();
44
- i0.ɵɵproperty("svg", ctx.icons.tablerPalette);
47
+ i0.ɵɵproperty("svg", ctx.tablerPalette);
45
48
  i0.ɵɵadvance(7);
46
49
  i0.ɵɵproperty("inline", true)("theme", "link-gray")("size", "sm")("disabled", ctx.isMinFontSize());
47
50
  i0.ɵɵadvance();
48
- i0.ɵɵproperty("svg", ctx.icons.tablerMinus);
51
+ i0.ɵɵproperty("svg", ctx.tablerMinus);
49
52
  i0.ɵɵadvance(2);
50
- i0.ɵɵtextInterpolate1("", ctx.sdTheme.fontSize(), "px");
53
+ i0.ɵɵtextInterpolate1("", ctx._sdTheme.fontSize(), "px");
51
54
  i0.ɵɵadvance();
52
55
  i0.ɵɵproperty("inline", true)("theme", "link-gray")("size", "sm")("disabled", ctx.isMaxFontSize());
53
56
  i0.ɵɵadvance();
54
- i0.ɵɵproperty("svg", ctx.icons.tablerPlus);
57
+ i0.ɵɵproperty("svg", ctx.tablerPlus);
55
58
  i0.ɵɵadvance(4);
56
- i0.ɵɵtwoWayProperty("value", ctx.sdTheme.dark);
59
+ i0.ɵɵtwoWayProperty("value", ctx._sdTheme.dark);
57
60
  } }, dependencies: [SdDropdown, SdDropdownPopup, SdButton, SdSwitch, NgIcon], encapsulation: 2, changeDetection: 0 });
58
61
  }
59
62
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdThemeSelector, [{
60
63
  type: Component,
61
- args: [{ selector: "sd-theme-selector", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdDropdown, SdDropdownPopup, SdButton, SdSwitch, NgIcon], template: `
62
- <sd-dropdown>
63
- <sd-button [inline]="true" [theme]="'link-gray'">
64
- <ng-icon [svg]="icons.tablerPalette" />
65
- </sd-button>
66
- <sd-dropdown-popup>
67
- <div class="p-default">
68
- <div class="flex-row gap-sm cross-align-center">
69
- <span>글자 크기</span>
70
- <div class="flex-row gap-xs cross-align-center">
71
- <sd-button
72
- [inline]="true"
73
- [theme]="'link-gray'"
74
- [size]="'sm'"
75
- [disabled]="isMinFontSize()"
76
- (click)="sdTheme.decreaseFontSize()"
77
- >
78
- <ng-icon [svg]="icons.tablerMinus" />
79
- </sd-button>
80
- <span>{{ sdTheme.fontSize() }}px</span>
81
- <sd-button
82
- [inline]="true"
83
- [theme]="'link-gray'"
84
- [size]="'sm'"
85
- [disabled]="isMaxFontSize()"
86
- (click)="sdTheme.increaseFontSize()"
87
- >
88
- <ng-icon [svg]="icons.tablerPlus" />
89
- </sd-button>
90
- </div>
91
- </div>
92
- <div class="flex-row gap-sm cross-align-center">
93
- <span>다크 모드</span>
94
- <sd-switch [(value)]="sdTheme.dark" />
95
- </div>
96
- </div>
97
- </sd-dropdown-popup>
98
- </sd-dropdown>
64
+ args: [{ selector: "sd-theme-selector", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [SdDropdown, SdDropdownPopup, SdButton, SdSwitch, NgIcon], template: `
65
+ <sd-dropdown>
66
+ <sd-button [inline]="true" [theme]="'link-gray'">
67
+ <ng-icon [svg]="tablerPalette" />
68
+ </sd-button>
69
+ <sd-dropdown-popup>
70
+ <div class="p-default">
71
+ <div class="flex-row gap-sm cross-align-center">
72
+ <span>글자 크기</span>
73
+ <div class="flex-row gap-xs cross-align-center">
74
+ <sd-button
75
+ [inline]="true"
76
+ [theme]="'link-gray'"
77
+ [size]="'sm'"
78
+ [disabled]="isMinFontSize()"
79
+ (click)="_sdTheme.decreaseFontSize()"
80
+ >
81
+ <ng-icon [svg]="tablerMinus" />
82
+ </sd-button>
83
+ <span>{{ _sdTheme.fontSize() }}px</span>
84
+ <sd-button
85
+ [inline]="true"
86
+ [theme]="'link-gray'"
87
+ [size]="'sm'"
88
+ [disabled]="isMaxFontSize()"
89
+ (click)="_sdTheme.increaseFontSize()"
90
+ >
91
+ <ng-icon [svg]="tablerPlus" />
92
+ </sd-button>
93
+ </div>
94
+ </div>
95
+ <div class="flex-row gap-sm cross-align-center">
96
+ <span>다크 모드</span>
97
+ <sd-switch [(value)]="_sdTheme.dark" />
98
+ </div>
99
+ </div>
100
+ </sd-dropdown-popup>
101
+ </sd-dropdown>
99
102
  ` }]
100
103
  }], null, null); })();
101
104
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdThemeSelector, { className: "SdThemeSelector", filePath: "packages/angular/src/features/theme/sd-theme-selector.ts", lineNumber: 63 }); })();
@@ -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,+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"}
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"}
@@ -13,16 +13,11 @@ export class SdBarcode {
13
13
  if (text == null || text === "") {
14
14
  return "";
15
15
  }
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
- }
16
+ const svg = bwipjs.toSVG({
17
+ bcid: this.type(),
18
+ text,
19
+ });
20
+ return this._sanitizer.bypassSecurityTrustHtml(svg);
26
21
  }, ...(ngDevMode ? [{ debugName: "_trustedSvgHtml" }] : /* istanbul ignore next */ []));
27
22
  static ɵfac = function SdBarcode_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdBarcode)(); };
28
23
  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) {
@@ -1 +1 @@
1
- {"version":3,"file":"sd-sidebar-user.d.ts","sourceRoot":"","sources":["../../../src/layout/sidebar/sd-sidebar-user.ts"],"names":[],"mappings":";AAOA,qBA4Da,aAAa;IACxB,QAAQ,qEAA8B;IAEtC,QAAQ,kDAAiB;IAEzB,qBAAqB,IAAI,IAAI;yCALlB,aAAa;2CAAb,aAAa;CAQzB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,EAAE,CAAC;CACL"}
1
+ {"version":3,"file":"sd-sidebar-user.d.ts","sourceRoot":"","sources":["../../../src/layout/sidebar/sd-sidebar-user.ts"],"names":[],"mappings":";AAOA,qBA0Da,aAAa;IACxB,QAAQ,qEAA8B;IAEtC,QAAQ,kDAAiB;IAEzB,qBAAqB,IAAI,IAAI;yCALlB,aAAa;2CAAb,aAAa;CAQzB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,EAAE,CAAC;CACL"}
@@ -7,45 +7,41 @@ import { SdListItem } from "../../controls/list/sd-list-item";
7
7
  import * as i0 from "@angular/core";
8
8
  const _c0 = ["*"];
9
9
  const _forTrack0 = ($index, $item) => $item.title;
10
+ function SdSidebarUser_Conditional_2_For_6_Template(rf, ctx) { if (rf & 1) {
11
+ const _r3 = i0.ɵɵgetCurrentView();
12
+ i0.ɵɵelementStart(0, "sd-list-item", 5);
13
+ i0.ɵɵlistener("click", function SdSidebarUser_Conditional_2_For_6_Template_sd_list_item_click_0_listener() { const menu_r4 = i0.ɵɵrestoreView(_r3).$implicit; return i0.ɵɵresetView(menu_r4.onClick()); });
14
+ i0.ɵɵtext(1);
15
+ i0.ɵɵelementEnd();
16
+ } if (rf & 2) {
17
+ const menu_r4 = ctx.$implicit;
18
+ i0.ɵɵadvance();
19
+ i0.ɵɵtextInterpolate1(" ", menu_r4.title, " ");
20
+ } }
10
21
  function SdSidebarUser_Conditional_2_Template(rf, ctx) { if (rf & 1) {
11
22
  const _r1 = i0.ɵɵgetCurrentView();
12
- i0.ɵɵelementStart(0, "div", 3);
23
+ i0.ɵɵelementStart(0, "div", 1);
13
24
  i0.ɵɵlistener("click", function SdSidebarUser_Conditional_2_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMenuOpenButtonClick()); })("keydown.enter", function SdSidebarUser_Conditional_2_Template_div_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onMenuOpenButtonClick()); });
14
25
  i0.ɵɵtext(1);
15
- i0.ɵɵelement(2, "sd-collapse-icon", 4);
26
+ i0.ɵɵelement(2, "sd-collapse-icon", 2);
16
27
  i0.ɵɵelementEnd();
28
+ i0.ɵɵelementStart(3, "sd-collapse", 3)(4, "sd-list", 4);
29
+ i0.ɵɵrepeaterCreate(5, SdSidebarUser_Conditional_2_For_6_Template, 2, 1, "sd-list-item", null, _forTrack0);
30
+ i0.ɵɵelementEnd()();
17
31
  } if (rf & 2) {
18
- let tmp_2_0;
32
+ const _userMenu_r5 = ctx;
19
33
  const ctx_r1 = i0.ɵɵnextContext();
20
34
  i0.ɵɵproperty("sdRipple", true);
21
35
  i0.ɵɵadvance();
22
- i0.ɵɵtextInterpolate1(" ", (tmp_2_0 = ctx_r1.userMenu()) == null ? null : tmp_2_0.title, " ");
36
+ i0.ɵɵtextInterpolate1(" ", _userMenu_r5.title, " ");
23
37
  i0.ɵɵadvance();
24
38
  i0.ɵɵproperty("open", ctx_r1.menuOpen())("openRotate", 180);
25
- } }
26
- function SdSidebarUser_Conditional_3_For_3_Template(rf, ctx) { if (rf & 1) {
27
- const _r3 = i0.ɵɵgetCurrentView();
28
- i0.ɵɵelementStart(0, "sd-list-item", 6);
29
- i0.ɵɵlistener("click", function SdSidebarUser_Conditional_3_For_3_Template_sd_list_item_click_0_listener() { const menu_r4 = i0.ɵɵrestoreView(_r3).$implicit; return i0.ɵɵresetView(menu_r4.onClick()); });
30
- i0.ɵɵtext(1);
31
- i0.ɵɵelementEnd();
32
- } if (rf & 2) {
33
- const menu_r4 = ctx.$implicit;
34
39
  i0.ɵɵadvance();
35
- i0.ɵɵtextInterpolate1(" ", menu_r4.title, " ");
36
- } }
37
- function SdSidebarUser_Conditional_3_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "sd-collapse", 2)(1, "sd-list", 5);
39
- i0.ɵɵrepeaterCreate(2, SdSidebarUser_Conditional_3_For_3_Template, 2, 1, "sd-list-item", null, _forTrack0);
40
- i0.ɵɵelementEnd()();
41
- } if (rf & 2) {
42
- let tmp_3_0;
43
- const ctx_r1 = i0.ɵɵnextContext();
44
40
  i0.ɵɵproperty("open", ctx_r1.menuOpen());
45
41
  i0.ɵɵadvance();
46
42
  i0.ɵɵproperty("inset", true);
47
43
  i0.ɵɵadvance();
48
- i0.ɵɵrepeater((tmp_3_0 = ctx_r1.userMenu()) == null ? null : tmp_3_0.menus);
44
+ i0.ɵɵrepeater(_userMenu_r5.menus);
49
45
  } }
50
46
  export class SdSidebarUser {
51
47
  userMenu = input(...(ngDevMode ? [undefined, { debugName: "userMenu" }] : /* istanbul ignore next */ []));
@@ -54,20 +50,16 @@ export class SdSidebarUser {
54
50
  this.menuOpen.update((v) => !v);
55
51
  }
56
52
  static ɵfac = function SdSidebarUser_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdSidebarUser)(); };
57
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSidebarUser, selectors: [["sd-sidebar-user"]], inputs: { userMenu: [1, "userMenu"] }, ngContentSelectors: _c0, decls: 4, vars: 2, consts: [[1, "p-lg"], ["tabindex", "0", 1, "_menu-button", 3, "sdRipple"], [3, "open"], ["tabindex", "0", 1, "_menu-button", 3, "click", "keydown.enter", "sdRipple"], [2, "float", "right", 3, "open", "openRotate"], [3, "inset"], [3, "click"]], template: function SdSidebarUser_Template(rf, ctx) { if (rf & 1) {
53
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdSidebarUser, selectors: [["sd-sidebar-user"]], inputs: { userMenu: [1, "userMenu"] }, ngContentSelectors: _c0, decls: 3, vars: 1, consts: [[1, "p-lg"], ["tabindex", "0", 1, "_menu-button", 3, "click", "keydown.enter", "sdRipple"], [2, "float", "right", 3, "open", "openRotate"], [3, "open"], [3, "inset"], [3, "click"]], template: function SdSidebarUser_Template(rf, ctx) { if (rf & 1) {
58
54
  i0.ɵɵprojectionDef();
59
55
  i0.ɵɵelementStart(0, "div", 0);
60
56
  i0.ɵɵprojection(1);
61
57
  i0.ɵɵelementEnd();
62
- i0.ɵɵconditionalCreate(2, SdSidebarUser_Conditional_2_Template, 3, 4, "div", 1);
63
- i0.ɵɵconditionalCreate(3, SdSidebarUser_Conditional_3_Template, 4, 2, "sd-collapse", 2);
58
+ i0.ɵɵconditionalCreate(2, SdSidebarUser_Conditional_2_Template, 7, 6);
64
59
  } if (rf & 2) {
65
60
  let tmp_0_0;
66
- let tmp_1_0;
67
61
  i0.ɵɵadvance(2);
68
- i0.ɵɵconditional(((tmp_0_0 = ctx.userMenu()) == null ? null : tmp_0_0.title) ? 2 : -1);
69
- i0.ɵɵadvance();
70
- i0.ɵɵconditional(((tmp_1_0 = ctx.userMenu()) == null ? null : tmp_1_0.title) ? 3 : -1);
62
+ i0.ɵɵconditional((tmp_0_0 = ctx.userMenu()) ? 2 : -1, tmp_0_0);
71
63
  } }, dependencies: [SdCollapseIcon,
72
64
  SdCollapse,
73
65
  SdRipple,
@@ -86,17 +78,15 @@ export class SdSidebarUser {
86
78
  <div class="p-lg">
87
79
  <ng-content />
88
80
  </div>
89
- @if (userMenu()?.title) {
81
+ @if (userMenu(); as _userMenu) {
90
82
  <div class="_menu-button" tabindex="0" (click)="onMenuOpenButtonClick()" (keydown.enter)="onMenuOpenButtonClick()" [sdRipple]="true">
91
- {{ userMenu()?.title }}
83
+ {{ _userMenu.title }}
92
84
  <sd-collapse-icon [open]="menuOpen()" style="float: right;" [openRotate]="180" />
93
85
  </div>
94
- }
95
86
 
96
- @if (userMenu()?.title) {
97
87
  <sd-collapse [open]="menuOpen()">
98
88
  <sd-list [inset]="true">
99
- @for (menu of userMenu()?.menus; track menu.title) {
89
+ @for (menu of _userMenu.menus; track menu.title) {
100
90
  <sd-list-item (click)="menu.onClick()">
101
91
  {{ menu.title }}
102
92
  </sd-list-item>
@@ -106,4 +96,4 @@ export class SdSidebarUser {
106
96
  }
107
97
  `, styles: ["sd-sidebar-user {\n display: block;\n}\nsd-sidebar-user > ._menu-button {\n display: block;\n cursor: pointer;\n user-select: none;\n padding: var(--gap-default);\n}\nsd-sidebar-user > ._menu-button:hover {\n background: var(--trans-lighter);\n}\nsd-sidebar-user > sd-collapse > ._content > sd-list {\n background: var(--trans-lightest);\n padding: var(--gap-xs) 0;\n}"] }]
108
98
  }], null, { userMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "userMenu", required: false }] }] }); })();
109
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarUser, { className: "SdSidebarUser", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-user.ts", lineNumber: 68 }); })();
99
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdSidebarUser, { className: "SdSidebarUser", filePath: "packages/angular/src/layout/sidebar/sd-sidebar-user.ts", lineNumber: 66 }); })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.86",
3
+ "version": "14.0.88",
4
4
  "description": "심플리즘 패키지 - Angular",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",
@@ -50,10 +50,10 @@
50
50
  "jspdf": "^4.2.1",
51
51
  "rxjs": "^7.8.2",
52
52
  "tabbable": "^6.4.0",
53
- "@simplysm/core-browser": "14.0.86",
54
- "@simplysm/core-common": "14.0.86",
55
- "@simplysm/service-client": "14.0.86",
56
- "@simplysm/service-common": "14.0.86"
53
+ "@simplysm/core-browser": "14.0.88",
54
+ "@simplysm/core-common": "14.0.88",
55
+ "@simplysm/service-client": "14.0.88",
56
+ "@simplysm/service-common": "14.0.88"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@angular/compiler": "^21.2.15",
@@ -184,7 +184,7 @@ export class SdModalSelectButton<
184
184
  }
185
185
 
186
186
  onEraseClick(): void {
187
- this.value.set((this.selectMode() === "multi" ? [] : undefined) as any);
187
+ this.value.set((this.selectMode() === "multi" ? [] : undefined) as SelectModeValue<K>[M]);
188
188
  }
189
189
 
190
190
  async onSearchClick(event: MouseEvent): Promise<void> {
@@ -21,7 +21,7 @@ import {
21
21
  `,
22
22
  })
23
23
  export class SdForm {
24
- formElRef = viewChild.required<any, ElementRef<HTMLFormElement>>("formEl", {
24
+ formElRef = viewChild.required<unknown, ElementRef<HTMLFormElement>>("formEl", {
25
25
  read: ElementRef,
26
26
  });
27
27
 
@@ -409,10 +409,10 @@ function createTimeHandler(withSeconds: boolean): TextfieldTypeHandler {
409
409
  }
410
410
  },
411
411
  toControlValue(value) {
412
- return (value as DateTime | Time).toFormatString(controlFormat);
412
+ return (value as Time).toFormatString(controlFormat);
413
413
  },
414
414
  toDisplayText(value) {
415
- return (value as DateTime | Time).toFormatString(displayFormat);
415
+ return (value as Time).toFormatString(displayFormat);
416
416
  },
417
417
  validate(value, opts) {
418
418
  const errors: string[] = [];
@@ -108,6 +108,7 @@ export class SdPagination {
108
108
  }
109
109
 
110
110
  goToNextGroup(): void {
111
+ if (!this.hasNext()) return;
111
112
  this.currentPage.set((this._groupIndex() + 1) * Math.max(this.visiblePageCount(), 1));
112
113
  }
113
114
 
@@ -101,7 +101,7 @@ export class SdSelectItem<T> {
101
101
  const itemValue = this.value();
102
102
  if (this._parentControl.selectMode() === "multi") {
103
103
  const arr = parentValue as T[] | undefined;
104
- return arr != null && arr.includes(itemValue as T);
104
+ return arr != null && arr.some((x) => x === itemValue);
105
105
  }
106
106
  return parentValue === itemValue;
107
107
  });
@@ -404,7 +404,7 @@ export class SdSelect<M extends "single" | "multi", T> {
404
404
  } else {
405
405
  this.value.update((v) => {
406
406
  const arr: T[] = Array.isArray(v) ? v : [];
407
- if (arr.includes(itemValue as T)) {
407
+ if (arr.some((x) => x === itemValue)) {
408
408
  return arr.filter((item) => item !== itemValue);
409
409
  } else {
410
410
  return [...arr, itemValue];
@@ -36,6 +36,10 @@ export class SdAppStructureProvider<TModule = unknown> {
36
36
  return SdAppStructureUtils.getTitleByFullCode(this.items(), fullCode);
37
37
  }
38
38
 
39
+ findTitleByFullCode(fullCode: string) {
40
+ return SdAppStructureUtils.findTitleByFullCode(this.items(), fullCode);
41
+ }
42
+
39
43
  getItemChainByFullCode(fullCode: string) {
40
44
  return SdAppStructureUtils.getItemChainByFullCode(this.items(), fullCode);
41
45
  }