@simplysm/angular 14.0.52 → 14.0.54

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 (51) hide show
  1. package/dist/controls/button/sd-modal-select-button.d.ts +9 -10
  2. package/dist/controls/button/sd-modal-select-button.d.ts.map +1 -1
  3. package/dist/controls/button/sd-modal-select-button.js +4 -7
  4. package/dist/core/select-modal-output-result.d.ts +2 -3
  5. package/dist/core/select-modal-output-result.d.ts.map +1 -1
  6. package/dist/core/selection/useSelectionManager.d.ts +11 -11
  7. package/dist/core/selection/useSelectionManager.d.ts.map +1 -1
  8. package/dist/core/selection/useSelectionManager.js +29 -28
  9. package/dist/data/crud/sd-base-container.d.ts +21 -0
  10. package/dist/data/crud/sd-base-container.d.ts.map +1 -0
  11. package/dist/data/crud/sd-base-container.js +200 -0
  12. package/dist/data/crud/sd-crud-detail.d.ts +22 -0
  13. package/dist/data/crud/sd-crud-detail.d.ts.map +1 -0
  14. package/dist/data/crud/sd-crud-detail.js +267 -0
  15. package/dist/data/crud/sd-crud-list.d.ts +54 -0
  16. package/dist/data/crud/sd-crud-list.d.ts.map +1 -0
  17. package/dist/data/crud/sd-crud-list.js +592 -0
  18. package/dist/data/shared-data/sd-shared-data-select-button.d.ts.map +1 -1
  19. package/dist/data/shared-data/sd-shared-data-select-button.js +4 -5
  20. package/dist/data/shared-data/sd-shared-data-select-list.js +2 -2
  21. package/dist/data/shared-data/sd-shared-data-select.js +3 -3
  22. package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts +4 -3
  23. package/dist/data/sheet/injectSheetSelectRowIndicator.d.ts.map +1 -1
  24. package/dist/data/sheet/injectSheetSelectRowIndicator.js +12 -4
  25. package/dist/data/sheet/sd-sheet.d.ts +39 -39
  26. package/dist/data/sheet/sd-sheet.d.ts.map +1 -1
  27. package/dist/data/sheet/sd-sheet.js +96 -74
  28. package/dist/data/sheet/types.d.ts +1 -0
  29. package/dist/data/sheet/types.d.ts.map +1 -1
  30. package/dist/data/sheet/useSheetLayoutEngine.d.ts.map +1 -1
  31. package/dist/data/sheet/useSheetLayoutEngine.js +3 -1
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +4 -0
  35. package/dist/styles.css +2 -2
  36. package/package.json +13 -13
  37. package/scss/commons/_variables.scss +2 -2
  38. package/src/controls/button/sd-modal-select-button.ts +9 -13
  39. package/src/core/select-modal-output-result.ts +2 -3
  40. package/src/core/selection/useSelectionManager.ts +47 -49
  41. package/src/data/crud/sd-base-container.ts +115 -0
  42. package/src/data/crud/sd-crud-detail.ts +122 -0
  43. package/src/data/crud/sd-crud-list.ts +316 -0
  44. package/src/data/shared-data/sd-shared-data-select-button.ts +0 -1
  45. package/src/data/shared-data/sd-shared-data-select-list.ts +2 -2
  46. package/src/data/shared-data/sd-shared-data-select.ts +3 -3
  47. package/src/data/sheet/injectSheetSelectRowIndicator.ts +17 -7
  48. package/src/data/sheet/sd-sheet.ts +59 -42
  49. package/src/data/sheet/types.ts +1 -0
  50. package/src/data/sheet/useSheetLayoutEngine.ts +3 -1
  51. package/src/index.ts +5 -0
@@ -0,0 +1,267 @@
1
+ import { ChangeDetectionStrategy, Component, contentChild, input, model, output, viewChild, ViewEncapsulation, } from "@angular/core";
2
+ import { SdButton } from "../../controls/button/sd-button";
3
+ import { SdCommandDirective } from "../../core/commands/sd-command";
4
+ import { SdForm } from "../../controls/form/sd-form";
5
+ import { SdBaseContainer } from "./sd-base-container";
6
+ import { NgIcon } from "@ng-icons/core";
7
+ import { NgTemplateOutlet } from "@angular/common";
8
+ import { tablerDeviceFloppy } from "@ng-icons/tabler-icons";
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../core/commands/sd-command";
11
+ const _c0 = ["commandTpl"];
12
+ const _c1 = ["bottomCommandTpl"];
13
+ const _c2 = ["formCtrl"];
14
+ const _c3 = ["*"];
15
+ function SdCrudDetail_Conditional_1_ng_template_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
16
+ const _r2 = i0.ɵɵgetCurrentView();
17
+ i0.ɵɵelementStart(0, "sd-button", 10);
18
+ i0.ɵɵlistener("click", function SdCrudDetail_Conditional_1_ng_template_0_Conditional_0_Template_sd_button_click_0_listener() { let tmp_6_0; i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView((tmp_6_0 = ctx_r2.formCtrl()) == null ? null : tmp_6_0.requestSubmit()); });
19
+ i0.ɵɵelement(1, "ng-icon", 11);
20
+ i0.ɵɵtext(2, " \uC800\uC7A5 ");
21
+ i0.ɵɵelementStart(3, "small");
22
+ i0.ɵɵtext(4, "(CTRL+S)");
23
+ i0.ɵɵelementEnd()();
24
+ } if (rf & 2) {
25
+ const ctx_r2 = i0.ɵɵnextContext(3);
26
+ i0.ɵɵproperty("theme", "link-primary");
27
+ i0.ɵɵadvance();
28
+ i0.ɵɵproperty("svg", ctx_r2.tablerDeviceFloppy);
29
+ } }
30
+ function SdCrudDetail_Conditional_1_ng_template_0_ng_template_1_Template(rf, ctx) { }
31
+ function SdCrudDetail_Conditional_1_ng_template_0_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵconditionalCreate(0, SdCrudDetail_Conditional_1_ng_template_0_Conditional_0_Template, 5, 2, "sd-button", 8);
33
+ i0.ɵɵtemplate(1, SdCrudDetail_Conditional_1_ng_template_0_ng_template_1_Template, 0, 0, "ng-template", 9);
34
+ } if (rf & 2) {
35
+ const ctx_r2 = i0.ɵɵnextContext(2);
36
+ i0.ɵɵconditional(!ctx_r2.readonly() ? 0 : -1);
37
+ i0.ɵɵadvance();
38
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.commandTplRef());
39
+ } }
40
+ function SdCrudDetail_Conditional_1_Template(rf, ctx) { if (rf & 1) {
41
+ i0.ɵɵtemplate(0, SdCrudDetail_Conditional_1_ng_template_0_Template, 2, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
42
+ } }
43
+ function SdCrudDetail_Conditional_2_ng_template_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
44
+ const _r4 = i0.ɵɵgetCurrentView();
45
+ i0.ɵɵelementStart(0, "sd-button", 10);
46
+ i0.ɵɵlistener("click", function SdCrudDetail_Conditional_2_ng_template_0_Conditional_0_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onSaveButtonClick()); });
47
+ i0.ɵɵelement(1, "ng-icon", 11);
48
+ i0.ɵɵtext(2, " \uC800\uC7A5 ");
49
+ i0.ɵɵelementStart(3, "small");
50
+ i0.ɵɵtext(4, "(CTRL+S)");
51
+ i0.ɵɵelementEnd()();
52
+ } if (rf & 2) {
53
+ const ctx_r2 = i0.ɵɵnextContext(3);
54
+ i0.ɵɵproperty("theme", "primary");
55
+ i0.ɵɵadvance();
56
+ i0.ɵɵproperty("svg", ctx_r2.tablerDeviceFloppy);
57
+ } }
58
+ function SdCrudDetail_Conditional_2_ng_template_0_ng_template_1_Template(rf, ctx) { }
59
+ function SdCrudDetail_Conditional_2_ng_template_0_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵconditionalCreate(0, SdCrudDetail_Conditional_2_ng_template_0_Conditional_0_Template, 5, 2, "sd-button", 8);
61
+ i0.ɵɵtemplate(1, SdCrudDetail_Conditional_2_ng_template_0_ng_template_1_Template, 0, 0, "ng-template", 9);
62
+ } if (rf & 2) {
63
+ const ctx_r2 = i0.ɵɵnextContext(2);
64
+ i0.ɵɵconditional(!ctx_r2.readonly() ? 0 : -1);
65
+ i0.ɵɵadvance();
66
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.commandTplRef());
67
+ } }
68
+ function SdCrudDetail_Conditional_2_Template(rf, ctx) { if (rf & 1) {
69
+ i0.ɵɵtemplate(0, SdCrudDetail_Conditional_2_ng_template_0_Template, 2, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
70
+ } }
71
+ function SdCrudDetail_Conditional_3_ng_template_0_ng_template_0_Template(rf, ctx) { }
72
+ function SdCrudDetail_Conditional_3_ng_template_0_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵtemplate(0, SdCrudDetail_Conditional_3_ng_template_0_ng_template_0_Template, 0, 0, "ng-template", 9);
74
+ } if (rf & 2) {
75
+ const ctx_r2 = i0.ɵɵnextContext(2);
76
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.commandTplRef());
77
+ } }
78
+ function SdCrudDetail_Conditional_3_Template(rf, ctx) { if (rf & 1) {
79
+ i0.ɵɵtemplate(0, SdCrudDetail_Conditional_3_ng_template_0_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
80
+ } }
81
+ function SdCrudDetail_Conditional_4_ng_template_0_Conditional_0_ng_template_1_Template(rf, ctx) { }
82
+ function SdCrudDetail_Conditional_4_ng_template_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
83
+ i0.ɵɵelementStart(0, "div", 12);
84
+ i0.ɵɵtemplate(1, SdCrudDetail_Conditional_4_ng_template_0_Conditional_0_ng_template_1_Template, 0, 0, "ng-template", 9);
85
+ i0.ɵɵelementEnd();
86
+ } if (rf & 2) {
87
+ const ctx_r2 = i0.ɵɵnextContext(3);
88
+ i0.ɵɵadvance();
89
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.bottomCommandTplRef());
90
+ } }
91
+ function SdCrudDetail_Conditional_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {
92
+ const _r5 = i0.ɵɵgetCurrentView();
93
+ i0.ɵɵconditionalCreate(0, SdCrudDetail_Conditional_4_ng_template_0_Conditional_0_Template, 2, 1, "div", 12);
94
+ i0.ɵɵelementStart(1, "sd-button", 13);
95
+ i0.ɵɵlistener("click", function SdCrudDetail_Conditional_4_ng_template_0_Template_sd_button_click_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onSaveButtonClick()); });
96
+ i0.ɵɵtext(2, " \uD655\uC778 ");
97
+ i0.ɵɵelementEnd();
98
+ } if (rf & 2) {
99
+ const ctx_r2 = i0.ɵɵnextContext(2);
100
+ i0.ɵɵconditional(ctx_r2.bottomCommandTplRef() ? 0 : -1);
101
+ i0.ɵɵadvance();
102
+ i0.ɵɵproperty("size", "sm")("theme", "primary");
103
+ } }
104
+ function SdCrudDetail_Conditional_4_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵtemplate(0, SdCrudDetail_Conditional_4_ng_template_0_Template, 3, 3, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
106
+ } }
107
+ function SdCrudDetail_ng_template_5_Template(rf, ctx) { if (rf & 1) {
108
+ i0.ɵɵprojection(0);
109
+ } }
110
+ function SdCrudDetail_Conditional_7_ng_template_1_Template(rf, ctx) { }
111
+ function SdCrudDetail_Conditional_7_Template(rf, ctx) { if (rf & 1) {
112
+ i0.ɵɵelementStart(0, "div", 6);
113
+ i0.ɵɵtemplate(1, SdCrudDetail_Conditional_7_ng_template_1_Template, 0, 0, "ng-template", 9);
114
+ i0.ɵɵelementEnd();
115
+ } if (rf & 2) {
116
+ i0.ɵɵnextContext();
117
+ const contentTpl_r6 = i0.ɵɵreference(6);
118
+ i0.ɵɵadvance();
119
+ i0.ɵɵproperty("ngTemplateOutlet", contentTpl_r6);
120
+ } }
121
+ function SdCrudDetail_Conditional_8_ng_template_2_Template(rf, ctx) { }
122
+ function SdCrudDetail_Conditional_8_Template(rf, ctx) { if (rf & 1) {
123
+ const _r7 = i0.ɵɵgetCurrentView();
124
+ i0.ɵɵelementStart(0, "sd-form", 14, 4);
125
+ i0.ɵɵlistener("formSubmit", function SdCrudDetail_Conditional_8_Template_sd_form_formSubmit_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.submit.emit()); });
126
+ i0.ɵɵtemplate(2, SdCrudDetail_Conditional_8_ng_template_2_Template, 0, 0, "ng-template", 9);
127
+ i0.ɵɵelementEnd();
128
+ } if (rf & 2) {
129
+ i0.ɵɵnextContext();
130
+ const contentTpl_r6 = i0.ɵɵreference(6);
131
+ i0.ɵɵadvance(2);
132
+ i0.ɵɵproperty("ngTemplateOutlet", contentTpl_r6);
133
+ } }
134
+ export class SdCrudDetail {
135
+ ready = model(false, ...(ngDevMode ? [{ debugName: "ready" }] : /* istanbul ignore next */ []));
136
+ initialized = input(false, ...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
137
+ busyCount = model(0, ...(ngDevMode ? [{ debugName: "busyCount" }] : /* istanbul ignore next */ []));
138
+ restricted = input(false, ...(ngDevMode ? [{ debugName: "restricted" }] : /* istanbul ignore next */ []));
139
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
140
+ viewType = input.required(...(ngDevMode ? [{ debugName: "viewType" }] : /* istanbul ignore next */ []));
141
+ formCtrl = viewChild("formCtrl", ...(ngDevMode ? [{ debugName: "formCtrl" }] : /* istanbul ignore next */ []));
142
+ submit = output();
143
+ commandTplRef = contentChild("commandTpl", ...(ngDevMode ? [{ debugName: "commandTplRef" }] : /* istanbul ignore next */ []));
144
+ bottomCommandTplRef = contentChild("bottomCommandTpl", ...(ngDevMode ? [{ debugName: "bottomCommandTplRef" }] : /* istanbul ignore next */ []));
145
+ onSaveButtonClick() {
146
+ this.formCtrl()?.requestSubmit();
147
+ }
148
+ tablerDeviceFloppy = tablerDeviceFloppy;
149
+ static ɵfac = function SdCrudDetail_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdCrudDetail)(); };
150
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdCrudDetail, selectors: [["sd-crud-detail"]], contentQueries: function SdCrudDetail_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
151
+ i0.ɵɵcontentQuerySignal(dirIndex, ctx.commandTplRef, _c0, 5)(dirIndex, ctx.bottomCommandTplRef, _c1, 5);
152
+ } if (rf & 2) {
153
+ i0.ɵɵqueryAdvance(2);
154
+ } }, viewQuery: function SdCrudDetail_Query(rf, ctx) { if (rf & 1) {
155
+ i0.ɵɵviewQuerySignal(ctx.formCtrl, _c2, 5);
156
+ } if (rf & 2) {
157
+ i0.ɵɵqueryAdvance();
158
+ } }, hostBindings: function SdCrudDetail_HostBindings(rf, ctx) { if (rf & 1) {
159
+ i0.ɵɵlistener("sdSaveCommand", function SdCrudDetail_sdSaveCommand_HostBindingHandler() { return ctx.onSaveButtonClick(); });
160
+ } }, inputs: { ready: [1, "ready"], initialized: [1, "initialized"], busyCount: [1, "busyCount"], restricted: [1, "restricted"], readonly: [1, "readonly"], viewType: [1, "viewType"] }, outputs: { ready: "readyChange", busyCount: "busyCountChange", submit: "submit" }, features: [i0.ɵɵHostDirectivesFeature([{ directive: i1.SdCommandDirective, outputs: ["sdSaveCommand", "sdSaveCommand"] }])], ngContentSelectors: _c3, decls: 9, vars: 8, consts: [["contentTpl", ""], ["topbarTpl", ""], ["commandTpl", ""], ["bottomCommandTpl", ""], ["formCtrl", ""], [3, "readyChange", "busyCountChange", "ready", "initialized", "busyCount", "restricted", "viewType"], [1, "fill"], [1, "block", "fill"], [3, "theme"], [3, "ngTemplateOutlet"], [3, "click", "theme"], [3, "svg"], [1, "flex-fill", "flex-row", "main-align-start", "gap-sm"], [3, "click", "size", "theme"], [1, "block", "fill", 3, "formSubmit"]], template: function SdCrudDetail_Template(rf, ctx) { if (rf & 1) {
161
+ const _r1 = i0.ɵɵgetCurrentView();
162
+ i0.ɵɵprojectionDef();
163
+ i0.ɵɵelementStart(0, "sd-base-container", 5);
164
+ i0.ɵɵtwoWayListener("readyChange", function SdCrudDetail_Template_sd_base_container_readyChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.ready, $event) || (ctx.ready = $event); return i0.ɵɵresetView($event); })("busyCountChange", function SdCrudDetail_Template_sd_base_container_busyCountChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.busyCount, $event) || (ctx.busyCount = $event); return i0.ɵɵresetView($event); });
165
+ i0.ɵɵconditionalCreate(1, SdCrudDetail_Conditional_1_Template, 2, 0)(2, SdCrudDetail_Conditional_2_Template, 2, 0)(3, SdCrudDetail_Conditional_3_Template, 2, 0);
166
+ i0.ɵɵconditionalCreate(4, SdCrudDetail_Conditional_4_Template, 2, 0);
167
+ i0.ɵɵtemplate(5, SdCrudDetail_ng_template_5_Template, 1, 0, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
168
+ i0.ɵɵconditionalCreate(7, SdCrudDetail_Conditional_7_Template, 2, 1, "div", 6)(8, SdCrudDetail_Conditional_8_Template, 3, 1, "sd-form", 7);
169
+ i0.ɵɵelementEnd();
170
+ } if (rf & 2) {
171
+ i0.ɵɵtwoWayProperty("ready", ctx.ready);
172
+ i0.ɵɵproperty("initialized", ctx.initialized());
173
+ i0.ɵɵtwoWayProperty("busyCount", ctx.busyCount);
174
+ i0.ɵɵproperty("restricted", ctx.restricted())("viewType", ctx.viewType());
175
+ i0.ɵɵadvance();
176
+ i0.ɵɵconditional(ctx.viewType() === "page" && (!ctx.readonly() || ctx.commandTplRef()) ? 1 : ctx.viewType() === "control" && (!ctx.readonly() || ctx.commandTplRef()) ? 2 : ctx.commandTplRef() ? 3 : -1);
177
+ i0.ɵɵadvance(3);
178
+ i0.ɵɵconditional(ctx.viewType() === "modal" || ctx.bottomCommandTplRef() ? 4 : -1);
179
+ i0.ɵɵadvance(3);
180
+ i0.ɵɵconditional(ctx.readonly() ? 7 : 8);
181
+ } }, dependencies: [SdBaseContainer, SdButton, NgIcon, NgTemplateOutlet, SdForm], encapsulation: 2, changeDetection: 0 });
182
+ }
183
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdCrudDetail, [{
184
+ type: Component,
185
+ args: [{
186
+ selector: "sd-crud-detail",
187
+ changeDetection: ChangeDetectionStrategy.OnPush,
188
+ encapsulation: ViewEncapsulation.None,
189
+ standalone: true,
190
+ imports: [SdBaseContainer, SdButton, NgIcon, NgTemplateOutlet, SdForm],
191
+ hostDirectives: [{ directive: SdCommandDirective, outputs: ["sdSaveCommand"] }],
192
+ host: {
193
+ "(sdSaveCommand)": "onSaveButtonClick()",
194
+ },
195
+ template: `
196
+ <sd-base-container
197
+ [(ready)]="ready"
198
+ [initialized]="initialized()"
199
+ [(busyCount)]="busyCount"
200
+ [restricted]="restricted()"
201
+ [viewType]="viewType()"
202
+ >
203
+ <!-- TOP -->
204
+ @if (viewType() === "page" && (!readonly() || commandTplRef())) {
205
+ <ng-template #topbarTpl>
206
+ @if (!readonly()) {
207
+ <sd-button [theme]="'link-primary'" (click)="formCtrl()?.requestSubmit()">
208
+ <ng-icon [svg]="tablerDeviceFloppy" />
209
+ 저장
210
+ <small>(CTRL+S)</small>
211
+ </sd-button>
212
+ }
213
+
214
+ <ng-template [ngTemplateOutlet]="commandTplRef()" />
215
+ </ng-template>
216
+ } @else if (viewType() === "control" && (!readonly() || commandTplRef())) {
217
+ <ng-template #commandTpl>
218
+ @if (!readonly()) {
219
+ <sd-button [theme]="'primary'" (click)="onSaveButtonClick()">
220
+ <ng-icon [svg]="tablerDeviceFloppy" />
221
+ 저장
222
+ <small>(CTRL+S)</small>
223
+ </sd-button>
224
+ }
225
+
226
+ <ng-template [ngTemplateOutlet]="commandTplRef()" />
227
+ </ng-template>
228
+ } @else if (commandTplRef()) {
229
+ <ng-template #commandTpl>
230
+ <ng-template [ngTemplateOutlet]="commandTplRef()" />
231
+ </ng-template>
232
+ }
233
+
234
+ <!-- BOTTOM -->
235
+ @if (viewType() === "modal" || bottomCommandTplRef()) {
236
+ <ng-template #bottomCommandTpl>
237
+ @if (bottomCommandTplRef()) {
238
+ <div class="flex-fill flex-row main-align-start gap-sm">
239
+ <ng-template [ngTemplateOutlet]="bottomCommandTplRef()" />
240
+ </div>
241
+ }
242
+
243
+ <sd-button [size]="'sm'" [theme]="'primary'" (click)="onSaveButtonClick()">
244
+ 확인
245
+ </sd-button>
246
+ </ng-template>
247
+ }
248
+
249
+ <!-- CONTENT -->
250
+ <ng-template #contentTpl>
251
+ <ng-content />
252
+ </ng-template>
253
+
254
+ @if (readonly()) {
255
+ <div class="fill">
256
+ <ng-template [ngTemplateOutlet]="contentTpl" />
257
+ </div>
258
+ } @else {
259
+ <sd-form #formCtrl (formSubmit)="submit.emit()" class="block fill">
260
+ <ng-template [ngTemplateOutlet]="contentTpl" />
261
+ </sd-form>
262
+ }
263
+ </sd-base-container>
264
+ `,
265
+ }]
266
+ }], null, { ready: [{ type: i0.Input, args: [{ isSignal: true, alias: "ready", required: false }] }, { type: i0.Output, args: ["readyChange"] }], initialized: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialized", required: false }] }], busyCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "busyCount", required: false }] }, { type: i0.Output, args: ["busyCountChange"] }], restricted: [{ type: i0.Input, args: [{ isSignal: true, alias: "restricted", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: true }] }], formCtrl: [{ type: i0.ViewChild, args: ["formCtrl", { isSignal: true }] }], submit: [{ type: i0.Output, args: ["submit"] }], commandTplRef: [{ type: i0.ContentChild, args: ["commandTpl", { isSignal: true }] }], bottomCommandTplRef: [{ type: i0.ContentChild, args: ["bottomCommandTpl", { isSignal: true }] }] }); })();
267
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdCrudDetail, { className: "SdCrudDetail", filePath: "packages/angular/src/data/crud/sd-crud-detail.ts", lineNumber: 102 }); })();
@@ -0,0 +1,54 @@
1
+ import { TemplateRef } from "@angular/core";
2
+ import { SdForm } from "../../controls/form/sd-form";
3
+ import { SdSheetColumn } from "../sheet/sd-sheet-column";
4
+ import type { SdViewType } from "../../core/routing/injectViewTypeSignal";
5
+ import type { SortingDef } from "../../core/selection/useSortingManager";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../core/commands/sd-command";
8
+ export declare class SdCrudList<TItem, TKey> {
9
+ private readonly _sdActivatedModal;
10
+ ready: import("@angular/core").ModelSignal<boolean>;
11
+ initialized: import("@angular/core").InputSignal<boolean>;
12
+ busyCount: import("@angular/core").ModelSignal<number>;
13
+ restricted: import("@angular/core").InputSignal<boolean>;
14
+ readonly: import("@angular/core").InputSignal<boolean>;
15
+ viewType: import("@angular/core").InputSignal<SdViewType>;
16
+ selectMode: import("@angular/core").InputSignal<"single" | "multi" | undefined>;
17
+ key: import("@angular/core").InputSignal<string>;
18
+ formCtrl: import("@angular/core").Signal<SdForm | undefined>;
19
+ filterSubmit: import("@angular/core").OutputEmitterRef<void>;
20
+ submit: import("@angular/core").OutputEmitterRef<void>;
21
+ create: import("@angular/core").OutputEmitterRef<void>;
22
+ delete: import("@angular/core").OutputEmitterRef<TItem[]>;
23
+ restore: import("@angular/core").OutputEmitterRef<TItem[]>;
24
+ items: import("@angular/core").InputSignal<TItem[]>;
25
+ selectedKeys: import("@angular/core").ModelSignal<NonNullable<TKey>[]>;
26
+ currDeletedItems: import("@angular/core").InputSignal<TItem[]>;
27
+ currDeletedSet: import("@angular/core").Signal<Set<TItem>>;
28
+ currSelectedItems: import("@angular/core").Signal<TItem[]>;
29
+ currentPage: import("@angular/core").ModelSignal<number>;
30
+ totalPageCount: import("@angular/core").InputSignal<number>;
31
+ sorts: import("@angular/core").ModelSignal<SortingDef[]>;
32
+ trackByFn: import("@angular/core").InputSignal<(item: TItem) => TKey>;
33
+ commandTplRef: import("@angular/core").Signal<TemplateRef<void> | undefined>;
34
+ filterTplRef: import("@angular/core").Signal<TemplateRef<void> | undefined>;
35
+ toolTplRef: import("@angular/core").Signal<TemplateRef<void> | undefined>;
36
+ bottomCommandTplRef: import("@angular/core").Signal<TemplateRef<void> | undefined>;
37
+ columnControls: import("@angular/core").Signal<readonly SdSheetColumn<any>[]>;
38
+ hasSelectedDeleted: import("@angular/core").Signal<boolean>;
39
+ hasSelectedNotDeleted: import("@angular/core").Signal<boolean>;
40
+ getItemCellStyleFn: (item: TItem) => string | undefined;
41
+ isDeleted(item: TItem): boolean;
42
+ onSaveButtonClick(): void;
43
+ onModalSelectionCancelClick(): void;
44
+ onModalSelectionConfirmClick(): void;
45
+ onSelectedKeysChange(): void;
46
+ 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>";
47
+ protected readonly tablerCirclePlus = "<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=\"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\"></path><path d=\"M9 12h6\"></path><path d=\"M12 9v6\"></path></svg>";
48
+ protected readonly tablerEraser = "<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=\"M19 20h-10.5l-4.21 -4.3a1 1 0 0 1 0 -1.41l10 -10a1 1 0 0 1 1.41 0l5 5a1 1 0 0 1 0 1.41l-9.2 9.3\"></path><path d=\"M18 13.3l-6.3 -6.3\"></path></svg>";
49
+ protected readonly tablerRestore = "<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=\"M3.06 13a9 9 0 1 0 .49 -4.087\"></path><path d=\"M3 4.001v5h5\"></path><path d=\"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0\"></path></svg>";
50
+ protected readonly tablerSearch = "<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=\"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0\"></path><path d=\"M21 21l-6 -6\"></path></svg>";
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<SdCrudList<any, any>, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<SdCrudList<any, any>, "sd-crud-list", never, { "ready": { "alias": "ready"; "required": false; "isSignal": true; }; "initialized": { "alias": "initialized"; "required": false; "isSignal": true; }; "busyCount": { "alias": "busyCount"; "required": false; "isSignal": true; }; "restricted": { "alias": "restricted"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "viewType": { "alias": "viewType"; "required": true; "isSignal": true; }; "selectMode": { "alias": "selectMode"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": true; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "currDeletedItems": { "alias": "currDeletedItems"; "required": false; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "totalPageCount": { "alias": "totalPageCount"; "required": false; "isSignal": true; }; "sorts": { "alias": "sorts"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": true; "isSignal": true; }; }, { "ready": "readyChange"; "busyCount": "busyCountChange"; "filterSubmit": "filterSubmit"; "submit": "submit"; "create": "create"; "delete": "delete"; "restore": "restore"; "selectedKeys": "selectedKeysChange"; "currentPage": "currentPageChange"; "sorts": "sortsChange"; }, ["commandTplRef", "filterTplRef", "toolTplRef", "bottomCommandTplRef", "columnControls"], never, true, [{ directive: typeof i1.SdCommandDirective; inputs: {}; outputs: { "sdSaveCommand": "sdSaveCommand"; }; }]>;
53
+ }
54
+ //# sourceMappingURL=sd-crud-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sd-crud-list.d.ts","sourceRoot":"","sources":["../../../src/data/crud/sd-crud-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,WAAW,EAGZ,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;;;AAYzE,qBA8La,UAAU,CAAC,KAAK,EAAE,IAAI;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAE1F,KAAK,+CAAgB;IACrB,WAAW,+CAAgB;IAC3B,SAAS,8CAAY;IACrB,UAAU,+CAAgB;IAC1B,QAAQ,+CAAgB;IACxB,QAAQ,kDAAgC;IACxC,UAAU,sEAA+B;IACzC,GAAG,8CAA4B;IAE/B,QAAQ,qDAAiC;IAEzC,YAAY,iDAAY;IACxB,MAAM,iDAAY;IAClB,MAAM,iDAAY;IAClB,MAAM,oDAAqB;IAC3B,OAAO,oDAAqB;IAE5B,KAAK,+CAAsB;IAC3B,YAAY,2DAAkC;IAE9C,gBAAgB,+CAAsB;IACtC,cAAc,6CAAoD;IAElE,iBAAiB,0CAKf;IAEF,WAAW,8CAAY;IACvB,cAAc,8CAAY;IAC1B,KAAK,oDAA2B;IAEhC,SAAS,6CAAyB,KAAK,KAAK,IAAI,EAAI;IAEpD,aAAa,gEAAiD;IAC9D,YAAY,gEAAgD;IAC5D,UAAU,gEAA8C;IACxD,mBAAmB,gEAAuD;IAE1E,cAAc,gEAAkC;IAEhD,kBAAkB,0CAA6E;IAC/F,qBAAqB,0CAEnB;IAEF,kBAAkB,GAAI,MAAM,KAAK,KAAG,MAAM,GAAG,SAAS,CACgB;IAEtE,SAAS,CAAC,IAAI,EAAE,KAAK;IAIrB,iBAAiB;IAIjB,2BAA2B,IAAI,IAAI;IAQnC,4BAA4B;IAK5B,oBAAoB;IAUpB,SAAS,CAAC,QAAQ,CAAC,kBAAkB,sdAAsB;IAC3D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,yYAAoB;IACvD,SAAS,CAAC,QAAQ,CAAC,YAAY,obAAgB;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,waAAiB;IACjD,SAAS,CAAC,QAAQ,CAAC,YAAY,yXAAgB;yCAzFpC,UAAU;2CAAV,UAAU;CA0FtB"}