@simplysm/angular 14.0.10 → 14.0.11

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.
@@ -0,0 +1,397 @@
1
+ import { NgTemplateOutlet } from "@angular/common";
2
+ import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, model, signal, ViewEncapsulation, } from "@angular/core";
3
+ import { obj } from "@simplysm/core-common";
4
+ import { SdCheckboxControl } from "../../ui/form/checkbox/sd-checkbox.control";
5
+ import { SdCollapseIconControl } from "../../ui/navigation/collapse/sd-collapse-icon.control";
6
+ import { SdTypedTemplateDirective } from "../../core/directives/sd-typed-template.directive";
7
+ import { SdAnchorControl } from "../../ui/form/button/sd-anchor.control";
8
+ import * as i0 from "@angular/core";
9
+ const _c0 = a0 => ({ item: a0, parentKey: "root", depth: 0, parent: undefined });
10
+ const _c1 = (a0, a1, a2, a3) => ({ item: a0, parentKey: a1, depth: a2, parent: a3 });
11
+ const _forTrack0 = ($index, $item) => $item.codeChain.join(".");
12
+ function SdPermissionTableControl_For_3_ng_template_0_Template(rf, ctx) { }
13
+ function SdPermissionTableControl_For_3_Template(rf, ctx) { if (rf & 1) {
14
+ i0.ɵɵtemplate(0, SdPermissionTableControl_For_3_ng_template_0_Template, 0, 0, "ng-template", 1);
15
+ } if (rf & 2) {
16
+ const item_r1 = ctx.$implicit;
17
+ i0.ɵɵnextContext();
18
+ const itemTpl_r2 = i0.ɵɵreference(5);
19
+ i0.ɵɵproperty("ngTemplateOutlet", itemTpl_r2)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c0, item_r1));
20
+ } }
21
+ function SdPermissionTableControl_ng_template_4_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵelementStart(0, "td", 3);
23
+ i0.ɵɵtext(1, "\u00A0");
24
+ i0.ɵɵelementEnd();
25
+ } }
26
+ function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
27
+ const _r3 = i0.ɵɵgetCurrentView();
28
+ i0.ɵɵelementStart(0, "sd-anchor", 8);
29
+ i0.ɵɵlistener("click", function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_4_Template_sd_anchor_click_0_listener() { i0.ɵɵrestoreView(_r3); const item_r4 = i0.ɵɵnextContext(2).item; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onPermCollapseToggle(item_r4)); });
30
+ i0.ɵɵelement(1, "sd-collapse-icon", 9);
31
+ i0.ɵɵtext(2);
32
+ i0.ɵɵelementEnd();
33
+ } if (rf & 2) {
34
+ const item_r4 = i0.ɵɵnextContext(2).item;
35
+ const ctx_r4 = i0.ɵɵnextContext();
36
+ i0.ɵɵadvance();
37
+ i0.ɵɵproperty("open", ctx_r4.getIsPermCollapsed(item_r4));
38
+ i0.ɵɵadvance();
39
+ i0.ɵɵtextInterpolate1(" ", item_r4.title, " ");
40
+ } }
41
+ function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div", 5);
43
+ i0.ɵɵtext(1);
44
+ i0.ɵɵelementEnd();
45
+ } if (rf & 2) {
46
+ const item_r4 = i0.ɵɵnextContext(2).item;
47
+ i0.ɵɵadvance();
48
+ i0.ɵɵtextInterpolate1(" ", item_r4.title, " ");
49
+ } }
50
+ function SdPermissionTableControl_ng_template_4_Conditional_0_For_7_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementStart(0, "td", 6);
52
+ i0.ɵɵtext(1, "\u00A0");
53
+ i0.ɵɵelementEnd();
54
+ } }
55
+ function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
56
+ const _r6 = i0.ɵɵgetCurrentView();
57
+ i0.ɵɵelementStart(0, "sd-checkbox", 10);
58
+ i0.ɵɵlistener("valueChange", function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_9_Template_sd_checkbox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r6); const item_r4 = i0.ɵɵnextContext(2).item; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onPermCheckChange(item_r4, "use", $event)); });
59
+ i0.ɵɵtext(1, " \uC0AC\uC6A9 ");
60
+ i0.ɵɵelementEnd();
61
+ } if (rf & 2) {
62
+ const item_r4 = i0.ɵɵnextContext(2).item;
63
+ const ctx_r4 = i0.ɵɵnextContext();
64
+ i0.ɵɵproperty("inline", true)("value", ctx_r4.getIsPermChecked(item_r4, "use"))("disabled", ctx_r4.disabled());
65
+ } }
66
+ function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
67
+ const _r7 = i0.ɵɵgetCurrentView();
68
+ i0.ɵɵelementStart(0, "sd-checkbox", 10);
69
+ i0.ɵɵlistener("valueChange", function SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_11_Template_sd_checkbox_valueChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const item_r4 = i0.ɵɵnextContext(2).item; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onPermCheckChange(item_r4, "edit", $event)); });
70
+ i0.ɵɵtext(1, " \uD3B8\uC9D1 ");
71
+ i0.ɵɵelementEnd();
72
+ } if (rf & 2) {
73
+ const item_r4 = i0.ɵɵnextContext(2).item;
74
+ const ctx_r4 = i0.ɵɵnextContext();
75
+ i0.ɵɵproperty("inline", true)("value", ctx_r4.getIsPermChecked(item_r4, "edit"))("disabled", ctx_r4.getEditDisabled(item_r4));
76
+ } }
77
+ function SdPermissionTableControl_ng_template_4_Conditional_0_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelementStart(0, "tr");
79
+ i0.ɵɵrepeaterCreate(1, SdPermissionTableControl_ng_template_4_Conditional_0_For_2_Template, 2, 0, "td", 3, i0.ɵɵrepeaterTrackByIdentity);
80
+ i0.ɵɵelementStart(3, "td", 4);
81
+ i0.ɵɵconditionalCreate(4, SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_4_Template, 3, 2, "sd-anchor")(5, SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_5_Template, 2, 1, "div", 5);
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵrepeaterCreate(6, SdPermissionTableControl_ng_template_4_Conditional_0_For_7_Template, 2, 0, "td", 6, i0.ɵɵrepeaterTrackByIdentity);
84
+ i0.ɵɵelementStart(8, "td", 6);
85
+ i0.ɵɵconditionalCreate(9, SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_9_Template, 2, 3, "sd-checkbox", 7);
86
+ i0.ɵɵelementEnd();
87
+ i0.ɵɵelementStart(10, "td", 6);
88
+ i0.ɵɵconditionalCreate(11, SdPermissionTableControl_ng_template_4_Conditional_0_Conditional_11_Template, 2, 3, "sd-checkbox", 7);
89
+ i0.ɵɵelementEnd()();
90
+ } if (rf & 2) {
91
+ const ctx_r7 = i0.ɵɵnextContext();
92
+ const item_r4 = ctx_r7.item;
93
+ const depth_r9 = ctx_r7.depth;
94
+ const parent_r10 = ctx_r7.parent;
95
+ const ctx_r4 = i0.ɵɵnextContext();
96
+ i0.ɵɵattribute("data-sd-collapse", !!parent_r10 && ctx_r4.getIsPermCollapsed(parent_r10))("data-sd-theme", depth_r9 === 0 ? "first" : depth_r9 % 3 === 0 ? "success" : depth_r9 % 3 === 1 ? "info" : "warning");
97
+ i0.ɵɵadvance();
98
+ i0.ɵɵrepeater(ctx_r4.arr(depth_r9 + 1));
99
+ i0.ɵɵadvance(3);
100
+ i0.ɵɵconditional(item_r4.children && item_r4.children.length > 0 ? 4 : 5);
101
+ i0.ɵɵadvance(2);
102
+ i0.ɵɵrepeater(ctx_r4.arr(ctx_r4.depthLength() - (depth_r9 + 1)));
103
+ i0.ɵɵadvance(3);
104
+ i0.ɵɵconditional(ctx_r4.getIsPermExists(item_r4, "use") ? 9 : -1);
105
+ i0.ɵɵadvance(2);
106
+ i0.ɵɵconditional(ctx_r4.getIsPermExists(item_r4, "edit") ? 11 : -1);
107
+ } }
108
+ function SdPermissionTableControl_ng_template_4_Conditional_1_For_1_ng_template_0_Template(rf, ctx) { }
109
+ function SdPermissionTableControl_ng_template_4_Conditional_1_For_1_Template(rf, ctx) { if (rf & 1) {
110
+ i0.ɵɵtemplate(0, SdPermissionTableControl_ng_template_4_Conditional_1_For_1_ng_template_0_Template, 0, 0, "ng-template", 1);
111
+ } if (rf & 2) {
112
+ const child_r11 = ctx.$implicit;
113
+ const ctx_r7 = i0.ɵɵnextContext(2);
114
+ const item_r4 = ctx_r7.item;
115
+ const parentKey_r12 = ctx_r7.parentKey;
116
+ const depth_r9 = ctx_r7.depth;
117
+ i0.ɵɵnextContext();
118
+ const itemTpl_r2 = i0.ɵɵreference(5);
119
+ i0.ɵɵproperty("ngTemplateOutlet", itemTpl_r2)("ngTemplateOutletContext", i0.ɵɵpureFunction4(2, _c1, child_r11, parentKey_r12 + "_" + item_r4.codeChain.join("."), depth_r9 + 1, item_r4));
120
+ } }
121
+ function SdPermissionTableControl_ng_template_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
122
+ i0.ɵɵrepeaterCreate(0, SdPermissionTableControl_ng_template_4_Conditional_1_For_1_Template, 1, 7, null, 1, _forTrack0);
123
+ } if (rf & 2) {
124
+ const item_r4 = i0.ɵɵnextContext().item;
125
+ i0.ɵɵrepeater(item_r4.children);
126
+ } }
127
+ function SdPermissionTableControl_ng_template_4_Template(rf, ctx) { if (rf & 1) {
128
+ i0.ɵɵconditionalCreate(0, SdPermissionTableControl_ng_template_4_Conditional_0_Template, 12, 5, "tr");
129
+ i0.ɵɵconditionalCreate(1, SdPermissionTableControl_ng_template_4_Conditional_1_Template, 2, 0);
130
+ } if (rf & 2) {
131
+ const item_r4 = ctx.item;
132
+ i0.ɵɵconditional(item_r4.children && item_r4.children.length !== 0 || item_r4.perms && item_r4.perms.length > 0 ? 0 : -1);
133
+ i0.ɵɵadvance();
134
+ i0.ɵɵconditional(item_r4.children && item_r4.children.length > 0 ? 1 : -1);
135
+ } }
136
+ export class SdPermissionTableControl {
137
+ value = model({}, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
138
+ items = input([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
139
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
140
+ collapsedItems = signal(new Set(), ...(ngDevMode ? [{ debugName: "collapsedItems" }] : /* istanbul ignore next */ []));
141
+ depthLength = computed(() => {
142
+ return this._getDepthLength(this.items(), 0);
143
+ }, ...(ngDevMode ? [{ debugName: "depthLength" }] : /* istanbul ignore next */ []));
144
+ arr(len) {
145
+ return Array(len)
146
+ .fill(0)
147
+ .map((_, i) => i);
148
+ }
149
+ getIsPermCollapsed(item) {
150
+ return this.collapsedItems().has(item);
151
+ }
152
+ getAllChildren(item) {
153
+ return item.children?.mapMany((child) => [child, ...this.getAllChildren(child)]) ?? [];
154
+ }
155
+ getEditDisabled(item) {
156
+ if (this.disabled()) {
157
+ return true;
158
+ }
159
+ if (item.perms) {
160
+ if (this.getIsPermExists(item, "use") && !this.getIsPermChecked(item, "use")) {
161
+ return true;
162
+ }
163
+ }
164
+ else {
165
+ if (item.children?.every((child) => !this.getIsPermExists(child, "edit") || this.getEditDisabled(child))) {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ getIsPermExists(item, type) {
172
+ if (item.perms) {
173
+ return item.perms.includes(type);
174
+ }
175
+ if (item.children) {
176
+ for (const child of item.children) {
177
+ if (this.getIsPermExists(child, type)) {
178
+ return true;
179
+ }
180
+ }
181
+ }
182
+ return false;
183
+ }
184
+ getIsPermChecked(item, type) {
185
+ if (item.perms) {
186
+ const permCode = item.codeChain.join(".");
187
+ return this.value()[permCode + "." + type] ?? false;
188
+ }
189
+ if (item.children) {
190
+ for (const child of item.children) {
191
+ if (this.getIsPermChecked(child, type)) {
192
+ return true;
193
+ }
194
+ }
195
+ }
196
+ return false;
197
+ }
198
+ onPermCollapseToggle(item) {
199
+ this.collapsedItems.update((v) => {
200
+ const r = new Set(v);
201
+ if (r.has(item)) {
202
+ r.delete(item);
203
+ }
204
+ else {
205
+ r.add(item);
206
+ const allChildren = this.getAllChildren(item);
207
+ for (const allChild of allChildren) {
208
+ r.add(allChild);
209
+ }
210
+ }
211
+ return r;
212
+ });
213
+ }
214
+ onPermCheckChange(item, type, val) {
215
+ this.value.update((v) => {
216
+ const r = obj.clone(v);
217
+ this._changePermCheck(r, item, type, val);
218
+ return r;
219
+ });
220
+ }
221
+ _changePermCheck(value, item, type, val) {
222
+ let changed = false;
223
+ if (item.perms) {
224
+ const permCode = item.codeChain.join(".");
225
+ if (type === "edit" &&
226
+ val &&
227
+ this.getIsPermExists(item, "use") &&
228
+ !this.getIsPermChecked(item, "use")) {
229
+ // use가 체크되지 않은 상태에서 edit 체크 시도 → 무시
230
+ }
231
+ else {
232
+ if (this.getIsPermExists(item, type) && value[permCode + "." + type] !== val) {
233
+ value[permCode + "." + type] = val;
234
+ changed = true;
235
+ }
236
+ }
237
+ // USE권한 지우면 EDIT권한도 자동으로 지움
238
+ if (type === "use" &&
239
+ !val &&
240
+ this.getIsPermExists(item, "edit") &&
241
+ value[permCode + ".edit"]) {
242
+ value[permCode + ".edit"] = false;
243
+ changed = true;
244
+ }
245
+ }
246
+ // 하위 권한을 함께 변경함
247
+ if (item.children) {
248
+ for (const child of item.children) {
249
+ const childChanged = this._changePermCheck(value, child, type, val);
250
+ if (childChanged) {
251
+ changed = true;
252
+ }
253
+ }
254
+ }
255
+ return changed;
256
+ }
257
+ _getDepthLength(items, depth) {
258
+ return (items.max((item) => {
259
+ if (item.children) {
260
+ return this._getDepthLength(item.children, depth + 1);
261
+ }
262
+ else {
263
+ return depth + 1;
264
+ }
265
+ }) ?? depth);
266
+ }
267
+ itemTemplateType;
268
+ static ɵfac = function SdPermissionTableControl_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdPermissionTableControl)(); };
269
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdPermissionTableControl, selectors: [["sd-permission-table"]], inputs: { value: [1, "value"], items: [1, "items"], disabled: [1, "disabled"] }, outputs: { value: "valueChange" }, decls: 6, vars: 1, consts: [["itemTpl", ""], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "typed"], [1, "_before"], [1, "_title"], [2, "padding-left", "14px"], [1, "_after"], [3, "inline", "value", "disabled"], [3, "click"], [3, "open"], [3, "valueChange", "inline", "value", "disabled"]], template: function SdPermissionTableControl_Template(rf, ctx) { if (rf & 1) {
270
+ i0.ɵɵelementStart(0, "table")(1, "tbody");
271
+ i0.ɵɵrepeaterCreate(2, SdPermissionTableControl_For_3_Template, 1, 4, null, 1, _forTrack0);
272
+ i0.ɵɵelementEnd()();
273
+ i0.ɵɵtemplate(4, SdPermissionTableControl_ng_template_4_Template, 2, 2, "ng-template", 2, 0, i0.ɵɵtemplateRefExtractor);
274
+ } if (rf & 2) {
275
+ i0.ɵɵadvance(2);
276
+ i0.ɵɵrepeater(ctx.items());
277
+ i0.ɵɵadvance(2);
278
+ i0.ɵɵproperty("typed", ctx.itemTemplateType);
279
+ } }, dependencies: [SdTypedTemplateDirective,
280
+ NgTemplateOutlet,
281
+ SdCollapseIconControl,
282
+ SdCheckboxControl,
283
+ SdAnchorControl], styles: ["sd-permission-table table {\n border-collapse: collapse;\n}\nsd-permission-table table > * > tr > * {\n padding: var(--gap-sm) var(--gap-lg);\n position: sticky;\n top: 0;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n color: var(--text-trans-default);\n}\nsd-permission-table table > * > tr > * > * {\n color: var(--text-trans-default) !important;\n}\nsd-permission-table table > * > tr > *._title {\n border-top-left-radius: 14px;\n border-bottom-left-radius: 14px;\n padding-left: var(--gap-lg);\n}\nsd-permission-table table > * > tr[data-sd-collapse=true] {\n display: none;\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title, sd-permission-table table > * > tr[data-sd-theme=first] > *._after {\n background: var(--theme-info-default);\n color: var(--text-trans-rev-default);\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title > *, sd-permission-table table > * > tr[data-sd-theme=first] > *._after > * {\n color: var(--text-trans-rev-default) !important;\n}\nsd-permission-table table > * > tr[data-sd-theme=info] > *._title, sd-permission-table table > * > tr[data-sd-theme=info] > *._after {\n background: var(--theme-info-lightest);\n}\nsd-permission-table table > * > tr[data-sd-theme=warning] > *._title, sd-permission-table table > * > tr[data-sd-theme=warning] > *._after {\n background: var(--theme-warning-lightest);\n}\nsd-permission-table table > * > tr[data-sd-theme=success] > *._title, sd-permission-table table > * > tr[data-sd-theme=success] > *._after {\n background: var(--theme-success-lightest);\n}"], encapsulation: 2, changeDetection: 0 });
284
+ }
285
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdPermissionTableControl, [{
286
+ type: Component,
287
+ args: [{ selector: "sd-permission-table", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
288
+ SdTypedTemplateDirective,
289
+ NgTemplateOutlet,
290
+ SdCollapseIconControl,
291
+ SdCheckboxControl,
292
+ SdAnchorControl,
293
+ ], template: `
294
+ <table>
295
+ <tbody>
296
+ @for (item of items(); track item.codeChain.join(".")) {
297
+ <ng-template
298
+ [ngTemplateOutlet]="itemTpl"
299
+ [ngTemplateOutletContext]="{
300
+ item: item,
301
+ parentKey: 'root',
302
+ depth: 0,
303
+ parent: undefined,
304
+ }"
305
+ ></ng-template>
306
+ }
307
+ </tbody>
308
+ </table>
309
+
310
+ <ng-template
311
+ #itemTpl
312
+ [typed]="itemTemplateType"
313
+ let-item="item"
314
+ let-parentKey="parentKey"
315
+ let-depth="depth"
316
+ let-parent="parent"
317
+ >
318
+ @if (
319
+ (item.children && item.children.length !== 0) || (item.perms && item.perms.length > 0)
320
+ ) {
321
+ <tr
322
+ [attr.data-sd-collapse]="!!parent && getIsPermCollapsed(parent)"
323
+ [attr.data-sd-theme]="
324
+ depth === 0
325
+ ? 'first'
326
+ : depth % 3 === 0
327
+ ? 'success'
328
+ : depth % 3 === 1
329
+ ? 'info'
330
+ : 'warning'
331
+ "
332
+ >
333
+ @for (i of arr(depth + 1); track i) {
334
+ <td class="_before">&nbsp;</td>
335
+ }
336
+
337
+ <td class="_title">
338
+ @if (item.children && item.children.length > 0) {
339
+ <sd-anchor (click)="onPermCollapseToggle(item)">
340
+ <sd-collapse-icon [open]="getIsPermCollapsed(item)" />
341
+ {{ item.title }}
342
+ </sd-anchor>
343
+ } @else {
344
+ <div style="padding-left: 14px;">
345
+ {{ item.title }}
346
+ </div>
347
+ }
348
+ </td>
349
+
350
+ @for (i of arr(depthLength() - (depth + 1)); track i) {
351
+ <td class="_after">&nbsp;</td>
352
+ }
353
+
354
+ <td class="_after">
355
+ @if (getIsPermExists(item, "use")) {
356
+ <sd-checkbox
357
+ [inline]="true"
358
+ [value]="getIsPermChecked(item, 'use')"
359
+ (valueChange)="onPermCheckChange(item, 'use', $event)"
360
+ [disabled]="disabled()"
361
+ >
362
+ 사용
363
+ </sd-checkbox>
364
+ }
365
+ </td>
366
+
367
+ <td class="_after">
368
+ @if (getIsPermExists(item, "edit")) {
369
+ <sd-checkbox
370
+ [inline]="true"
371
+ [value]="getIsPermChecked(item, 'edit')"
372
+ (valueChange)="onPermCheckChange(item, 'edit', $event)"
373
+ [disabled]="getEditDisabled(item)"
374
+ >
375
+ 편집
376
+ </sd-checkbox>
377
+ }
378
+ </td>
379
+ </tr>
380
+ }
381
+ @if (item.children && item.children.length > 0) {
382
+ @for (child of item.children; track child.codeChain.join(".")) {
383
+ <ng-template
384
+ [ngTemplateOutlet]="itemTpl"
385
+ [ngTemplateOutletContext]="{
386
+ item: child,
387
+ parentKey: parentKey + '_' + item.codeChain.join('.'),
388
+ depth: depth + 1,
389
+ parent: item,
390
+ }"
391
+ ></ng-template>
392
+ }
393
+ }
394
+ </ng-template>
395
+ `, styles: ["sd-permission-table table {\n border-collapse: collapse;\n}\nsd-permission-table table > * > tr > * {\n padding: var(--gap-sm) var(--gap-lg);\n position: sticky;\n top: 0;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n color: var(--text-trans-default);\n}\nsd-permission-table table > * > tr > * > * {\n color: var(--text-trans-default) !important;\n}\nsd-permission-table table > * > tr > *._title {\n border-top-left-radius: 14px;\n border-bottom-left-radius: 14px;\n padding-left: var(--gap-lg);\n}\nsd-permission-table table > * > tr[data-sd-collapse=true] {\n display: none;\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title, sd-permission-table table > * > tr[data-sd-theme=first] > *._after {\n background: var(--theme-info-default);\n color: var(--text-trans-rev-default);\n}\nsd-permission-table table > * > tr[data-sd-theme=first] > *._title > *, sd-permission-table table > * > tr[data-sd-theme=first] > *._after > * {\n color: var(--text-trans-rev-default) !important;\n}\nsd-permission-table table > * > tr[data-sd-theme=info] > *._title, sd-permission-table table > * > tr[data-sd-theme=info] > *._after {\n background: var(--theme-info-lightest);\n}\nsd-permission-table table > * > tr[data-sd-theme=warning] > *._title, sd-permission-table table > * > tr[data-sd-theme=warning] > *._after {\n background: var(--theme-warning-lightest);\n}\nsd-permission-table table > * > tr[data-sd-theme=success] > *._title, sd-permission-table table > * > tr[data-sd-theme=success] > *._after {\n background: var(--theme-success-lightest);\n}"] }]
396
+ }], null, { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] }); })();
397
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdPermissionTableControl, { className: "SdPermissionTableControl", filePath: "packages/angular/src/features/permission-table/sd-permission-table.control.ts", lineNumber: 212, forbidOrphanRendering: true }); })();
@@ -189,7 +189,7 @@ export class SdSharedDataSelectControl {
189
189
  getItemSelectable(item, _index, depth) {
190
190
  if (!this.hasParentKey())
191
191
  return true;
192
- // depth가 0이면서 자식을 가진 항목(카테고리)은 선택 불가
192
+ // 트리 구조에서 depth가 0이면서 __parentKey가 있는 항목은 선택 불가
193
193
  return depth !== 0 || item.__parentKey == null;
194
194
  }
195
195
  getItemVisible(item, index) {
package/dist/index.d.ts CHANGED
@@ -44,6 +44,7 @@ export { useExpandingManager, type IExpandItemDef, } from "./core/utils/useExpan
44
44
  export { useSelectionManager } from "./core/utils/useSelectionManager";
45
45
  export { injectParent } from "./core/utils/injectParent";
46
46
  export { SdAddressSearchModal, type IAddress, } from "./features/address/sd-address-search.modal";
47
+ export { SdPermissionTableControl } from "./features/permission-table/sd-permission-table.control";
47
48
  export { SdBaseContainerControl } from "./features/base/sd-base-container.control";
48
49
  export { SdDataSheetControl, AbsSdDataSheet, type ISdDataSheetItemPropInfo, type ISdDataSheetItemInfo, type ISdDataSheetSearchResult, } from "./features/data-view/sd-data-sheet.control";
49
50
  export { SdDataSheetColumnDirective } from "./features/data-view/sd-data-sheet-column.directive";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,8CAA8C,CAAC;AACxG,OAAO,EAAE,yBAAyB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1H,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qDAAqD,CAAC;AACrG,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,oCAAoC,EAAE,MAAM,0DAA0D,CAAC;AAChH,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,oBAAoB,EACpB,KAAK,QAAQ,GACd,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,oDAAoD,CAAC;AAG5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,+BAA+B,EAAE,MAAM,6DAA6D,CAAC;AAC9G,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAC;AAG1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EACL,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,iDAAiD,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,KAAK,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAG/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAG1F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,iDAAiD,CAAC;AAGzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAGzF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAGpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EACL,cAAc,EACd,KAAK,WAAW,GACjB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACrF,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GACd,MAAM,qCAAqC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,8CAA8C,CAAC;AACxG,OAAO,EAAE,yBAAyB,EAAE,KAAK,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC1H,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,GAC7B,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qDAAqD,CAAC;AACrG,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,oCAAoC,EAAE,MAAM,0DAA0D,CAAC;AAChH,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EACL,oBAAoB,EACpB,KAAK,QAAQ,GACd,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yDAAyD,CAAC;AAGnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,KAAK,qBAAqB,GAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,oDAAoD,CAAC;AAG5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,+BAA+B,EAAE,MAAM,6DAA6D,CAAC;AAC9G,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAC;AAG1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAGhF,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EACL,0BAA0B,EAC1B,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,iDAAiD,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,KAAK,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAG/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAG1F,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,KAAK,gBAAgB,GACtB,MAAM,iDAAiD,CAAC;AAGzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAGzF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAGpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EACL,cAAc,EACd,KAAK,WAAW,GACjB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACrF,YAAY,EACV,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,GACd,MAAM,qCAAqC,CAAC"}
package/dist/index.js CHANGED
@@ -45,6 +45,8 @@ export { useSelectionManager } from "./core/utils/useSelectionManager";
45
45
  export { injectParent } from "./core/utils/injectParent";
46
46
  // features/address
47
47
  export { SdAddressSearchModal, } from "./features/address/sd-address-search.modal";
48
+ // features/permission-table
49
+ export { SdPermissionTableControl } from "./features/permission-table/sd-permission-table.control";
48
50
  // features
49
51
  export { SdBaseContainerControl } from "./features/base/sd-base-container.control";
50
52
  export { SdDataSheetControl, AbsSdDataSheet, } from "./features/data-view/sd-data-sheet.control";
@@ -1 +1 @@
1
- {"version":3,"file":"sd-modal.provider.d.ts","sourceRoot":"","sources":["../../../../src/ui/overlay/modal/sd-modal.provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sd-modal.provider.d.ts","sourceRoot":"","sources":["../../../../src/ui/overlay/modal/sd-modal.provider.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,18 @@ export class SdModalProvider {
62
62
  // 7. SdActivatedModalProvider에 컴포넌트 참조 설정
63
63
  activatedModal.modalComponent.set(modalRef.instance);
64
64
  activatedModal.contentComponent.set(contentRef.instance);
65
+ // 7-1. actionTplRef 브릿지: 컨텐츠 컴포넌트 → 모달 컴포넌트
66
+ if ("actionTplRef" in contentRef.instance) {
67
+ let _actionTplRef = contentRef.instance.actionTplRef;
68
+ Object.defineProperty(contentRef.instance, "actionTplRef", {
69
+ get: () => _actionTplRef,
70
+ set: (value) => {
71
+ _actionTplRef = value;
72
+ modalRef.setInput("actionTplRef", value);
73
+ },
74
+ configurable: true,
75
+ });
76
+ }
65
77
  // 8. appRef에 뷰 등록 + body에 삽입
66
78
  this._appRef.attachView(contentRef.hostView);
67
79
  this._appRef.attachView(modalRef.hostView);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.10",
3
+ "version": "14.0.11",
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.10",
54
- "@simplysm/core-common": "14.0.10",
55
- "@simplysm/service-client": "14.0.10",
56
- "@simplysm/service-common": "14.0.10"
53
+ "@simplysm/core-browser": "14.0.11",
54
+ "@simplysm/core-common": "14.0.11",
55
+ "@simplysm/service-common": "14.0.11",
56
+ "@simplysm/service-client": "14.0.11"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@angular/compiler": "^21.2.6",