@simplysm/angular 14.0.101 → 14.0.102

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.
@@ -11,7 +11,9 @@ export declare class SdCrudList<TItem, TKey> {
11
11
  initialized: import("@angular/core").InputSignal<boolean>;
12
12
  busyCount: import("@angular/core").ModelSignal<number>;
13
13
  restricted: import("@angular/core").InputSignal<boolean>;
14
- readonly: import("@angular/core").InputSignal<boolean>;
14
+ canCreate: import("@angular/core").InputSignal<boolean>;
15
+ canEdit: import("@angular/core").InputSignal<boolean>;
16
+ canDelete: import("@angular/core").InputSignal<boolean>;
15
17
  inlineEdit: import("@angular/core").InputSignal<boolean>;
16
18
  viewType: import("@angular/core").InputSignal<SdViewType>;
17
19
  selectMode: import("@angular/core").InputSignal<"single" | "multi" | undefined>;
@@ -54,6 +56,6 @@ export declare class SdCrudList<TItem, TKey> {
54
56
  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>";
55
57
  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>";
56
58
  static ɵfac: i0.ɵɵFactoryDeclaration<SdCrudList<any, any>, never>;
57
- 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; }; "inlineEdit": { "alias": "inlineEdit"; "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; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; "visiblePageCount": { "alias": "visiblePageCount"; "required": false; "isSignal": true; }; "sorts": { "alias": "sorts"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": true; "isSignal": true; }; "getItemSelectableFn": { "alias": "getItemSelectableFn"; "required": false; "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"; }; }]>;
59
+ 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; }; "canCreate": { "alias": "canCreate"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "canDelete": { "alias": "canDelete"; "required": false; "isSignal": true; }; "inlineEdit": { "alias": "inlineEdit"; "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; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; "visiblePageCount": { "alias": "visiblePageCount"; "required": false; "isSignal": true; }; "sorts": { "alias": "sorts"; "required": false; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": true; "isSignal": true; }; "getItemSelectableFn": { "alias": "getItemSelectableFn"; "required": false; "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"; }; }]>;
58
60
  }
59
61
  //# sourceMappingURL=sd-crud-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-crud-list.d.ts","sourceRoot":"","sources":["../../../src/data/crud/sd-crud-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,WAAW,EAGjB,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,qBAkMa,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,UAAU,+CAAe;IACzB,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,YAAY,8CAAY;IACxB,gBAAgB,8CAAa;IAC7B,KAAK,oDAA2B;IAEhC,SAAS,6CAAyB,KAAK,KAAK,IAAI,EAAI;IACpD,mBAAmB,8CAAgB,KAAK,KAAK,OAAO,GAAG,MAAM,eAAI;IAEjE,aAAa,gEAAiD;IAC9D,YAAY,gEAAgD;IAC5D,UAAU,gEAA8C;IACxD,mBAAmB,gEAAuD;IAE1E,cAAc,gEAAkC;IAEhD,iBAAiB,0CAAyD;IAE1E,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;yCA/FpC,UAAU;2CAAV,UAAU;CAgGtB"}
1
+ {"version":3,"file":"sd-crud-list.d.ts","sourceRoot":"","sources":["../../../src/data/crud/sd-crud-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,WAAW,EAGjB,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,qBAkMa,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,SAAS,+CAAe;IACxB,OAAO,+CAAe;IACtB,SAAS,+CAAe;IACxB,UAAU,+CAAe;IACzB,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,YAAY,8CAAY;IACxB,gBAAgB,8CAAa;IAC7B,KAAK,oDAA2B;IAEhC,SAAS,6CAAyB,KAAK,KAAK,IAAI,EAAI;IACpD,mBAAmB,8CAAgB,KAAK,KAAK,OAAO,GAAG,MAAM,eAAI;IAEjE,aAAa,gEAAiD;IAC9D,YAAY,gEAAgD;IAC5D,UAAU,gEAA8C;IACxD,mBAAmB,gEAAuD;IAE1E,cAAc,gEAAkC;IAEhD,iBAAiB,0CAAuD;IAExE,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;yCAjGpC,UAAU;2CAAV,UAAU;CAkGtB"}
@@ -141,69 +141,69 @@ function SdCrudList_ng_template_4_Conditional_1_Template(rf, ctx) { if (rf & 1)
141
141
  i0.ɵɵadvance(2);
142
142
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.filterTplRef());
143
143
  } }
144
- function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
144
+ function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
145
+ const _r8 = i0.ɵɵgetCurrentView();
146
+ i0.ɵɵelementStart(0, "sd-button", 15);
147
+ i0.ɵɵlistener("click", function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.create.emit()); });
148
+ i0.ɵɵelement(1, "ng-icon", 11);
149
+ i0.ɵɵtext(2, " \uB4F1\uB85D ");
150
+ i0.ɵɵelementEnd();
151
+ } if (rf & 2) {
152
+ const ctx_r2 = i0.ɵɵnextContext(3);
153
+ i0.ɵɵproperty("size", "sm")("theme", "link-primary");
154
+ i0.ɵɵadvance();
155
+ i0.ɵɵproperty("svg", ctx_r2.tablerCirclePlus);
156
+ } }
157
+ function SdCrudList_ng_template_4_Conditional_2_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
145
158
  const _r10 = i0.ɵɵgetCurrentView();
146
159
  i0.ɵɵelementStart(0, "sd-button", 15);
147
- i0.ɵɵlistener("click", function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Conditional_3_Conditional_3_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.restore.emit(ctx_r2.currSelectedItems())); });
160
+ i0.ɵɵlistener("click", function SdCrudList_ng_template_4_Conditional_2_Conditional_2_Conditional_3_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.restore.emit(ctx_r2.currSelectedItems())); });
148
161
  i0.ɵɵelement(1, "ng-icon", 11);
149
162
  i0.ɵɵtext(2, " \uC120\uD0DD \uBCF5\uAD6C ");
150
163
  i0.ɵɵelementEnd();
151
164
  } if (rf & 2) {
152
- const ctx_r2 = i0.ɵɵnextContext(5);
165
+ const ctx_r2 = i0.ɵɵnextContext(4);
153
166
  i0.ɵɵproperty("size", "sm")("theme", "link-warning");
154
167
  i0.ɵɵadvance();
155
168
  i0.ɵɵproperty("svg", ctx_r2.tablerRestore);
156
169
  } }
157
- function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
170
+ function SdCrudList_ng_template_4_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
158
171
  const _r9 = i0.ɵɵgetCurrentView();
159
172
  i0.ɵɵelementStart(0, "sd-button", 13);
160
- i0.ɵɵlistener("click", function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Conditional_3_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.delete.emit(ctx_r2.currSelectedItems())); });
173
+ i0.ɵɵlistener("click", function SdCrudList_ng_template_4_Conditional_2_Conditional_2_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.delete.emit(ctx_r2.currSelectedItems())); });
161
174
  i0.ɵɵelement(1, "ng-icon", 11);
162
175
  i0.ɵɵtext(2, " \uC120\uD0DD \uC0AD\uC81C ");
163
176
  i0.ɵɵelementEnd();
164
- i0.ɵɵconditionalCreate(3, SdCrudList_ng_template_4_Conditional_2_Conditional_1_Conditional_3_Conditional_3_Template, 3, 3, "sd-button", 14);
177
+ i0.ɵɵconditionalCreate(3, SdCrudList_ng_template_4_Conditional_2_Conditional_2_Conditional_3_Template, 3, 3, "sd-button", 14);
165
178
  } if (rf & 2) {
166
- const ctx_r2 = i0.ɵɵnextContext(4);
179
+ const ctx_r2 = i0.ɵɵnextContext(3);
167
180
  i0.ɵɵproperty("size", "sm")("theme", "link-danger")("disabled", !ctx_r2.hasSelectedNotDeleted());
168
181
  i0.ɵɵadvance();
169
182
  i0.ɵɵproperty("svg", ctx_r2.tablerEraser);
170
183
  i0.ɵɵadvance(2);
171
184
  i0.ɵɵconditional(ctx_r2.hasSelectedDeleted() ? 3 : -1);
172
185
  } }
173
- function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
174
- const _r8 = i0.ɵɵgetCurrentView();
175
- i0.ɵɵelementStart(0, "sd-button", 15);
176
- i0.ɵɵlistener("click", function SdCrudList_ng_template_4_Conditional_2_Conditional_1_Template_sd_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.create.emit()); });
177
- i0.ɵɵelement(1, "ng-icon", 11);
178
- i0.ɵɵtext(2, " \uB4F1\uB85D ");
179
- i0.ɵɵelementEnd();
180
- i0.ɵɵconditionalCreate(3, SdCrudList_ng_template_4_Conditional_2_Conditional_1_Conditional_3_Template, 4, 5);
181
- } if (rf & 2) {
182
- const ctx_r2 = i0.ɵɵnextContext(3);
183
- i0.ɵɵproperty("size", "sm")("theme", "link-primary");
184
- i0.ɵɵadvance();
185
- i0.ɵɵproperty("svg", ctx_r2.tablerCirclePlus);
186
- i0.ɵɵadvance(2);
187
- i0.ɵɵconditional(ctx_r2.selectMode() !== "single" ? 3 : -1);
188
- } }
189
- function SdCrudList_ng_template_4_Conditional_2_Conditional_2_ng_template_0_Template(rf, ctx) { }
190
- function SdCrudList_ng_template_4_Conditional_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
191
- i0.ɵɵtemplate(0, SdCrudList_ng_template_4_Conditional_2_Conditional_2_ng_template_0_Template, 0, 0, "ng-template", 9);
186
+ function SdCrudList_ng_template_4_Conditional_2_Conditional_3_ng_template_0_Template(rf, ctx) { }
187
+ function SdCrudList_ng_template_4_Conditional_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵtemplate(0, SdCrudList_ng_template_4_Conditional_2_Conditional_3_ng_template_0_Template, 0, 0, "ng-template", 9);
192
189
  } if (rf & 2) {
193
190
  const ctx_r2 = i0.ɵɵnextContext(3);
194
191
  i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.toolTplRef());
195
192
  } }
196
193
  function SdCrudList_ng_template_4_Conditional_2_Template(rf, ctx) { if (rf & 1) {
197
194
  i0.ɵɵelementStart(0, "div", 18);
198
- i0.ɵɵconditionalCreate(1, SdCrudList_ng_template_4_Conditional_2_Conditional_1_Template, 4, 4);
199
- i0.ɵɵconditionalCreate(2, SdCrudList_ng_template_4_Conditional_2_Conditional_2_Template, 1, 1, null, 9);
195
+ i0.ɵɵconditionalCreate(1, SdCrudList_ng_template_4_Conditional_2_Conditional_1_Template, 3, 3, "sd-button", 14);
196
+ i0.ɵɵconditionalCreate(2, SdCrudList_ng_template_4_Conditional_2_Conditional_2_Template, 4, 5);
197
+ i0.ɵɵconditionalCreate(3, SdCrudList_ng_template_4_Conditional_2_Conditional_3_Template, 1, 1, null, 9);
200
198
  i0.ɵɵelementEnd();
201
199
  } if (rf & 2) {
202
200
  const ctx_r2 = i0.ɵɵnextContext(2);
203
201
  i0.ɵɵadvance();
204
- i0.ɵɵconditional(!ctx_r2.readonly() ? 1 : -1);
202
+ i0.ɵɵconditional(ctx_r2.canCreate() ? 1 : -1);
205
203
  i0.ɵɵadvance();
206
- i0.ɵɵconditional(ctx_r2.toolTplRef() ? 2 : -1);
204
+ i0.ɵɵconditional(ctx_r2.canDelete() && ctx_r2.selectMode() !== "single" ? 2 : -1);
205
+ i0.ɵɵadvance();
206
+ i0.ɵɵconditional(ctx_r2.toolTplRef() ? 3 : -1);
207
207
  } }
208
208
  function SdCrudList_ng_template_4_Conditional_3_ng_template_2_Template(rf, ctx) { }
209
209
  function SdCrudList_ng_template_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
@@ -232,7 +232,7 @@ function SdCrudList_ng_template_4_Conditional_4_Template(rf, ctx) { if (rf & 1)
232
232
  function SdCrudList_ng_template_4_Template(rf, ctx) { if (rf & 1) {
233
233
  i0.ɵɵelementStart(0, "div", 16);
234
234
  i0.ɵɵconditionalCreate(1, SdCrudList_ng_template_4_Conditional_1_Template, 7, 4, "sd-form", 17);
235
- i0.ɵɵconditionalCreate(2, SdCrudList_ng_template_4_Conditional_2_Template, 3, 2, "div", 18);
235
+ i0.ɵɵconditionalCreate(2, SdCrudList_ng_template_4_Conditional_2_Template, 4, 3, "div", 18);
236
236
  i0.ɵɵconditionalCreate(3, SdCrudList_ng_template_4_Conditional_3_Template, 3, 1, "sd-form", 19)(4, SdCrudList_ng_template_4_Conditional_4_Template, 2, 1, "div", 19);
237
237
  i0.ɵɵelementEnd();
238
238
  } if (rf & 2) {
@@ -240,7 +240,7 @@ function SdCrudList_ng_template_4_Template(rf, ctx) { if (rf & 1) {
240
240
  i0.ɵɵadvance();
241
241
  i0.ɵɵconditional(ctx_r2.filterTplRef() ? 1 : -1);
242
242
  i0.ɵɵadvance();
243
- i0.ɵɵconditional(!ctx_r2.readonly() || ctx_r2.toolTplRef() ? 2 : -1);
243
+ i0.ɵɵconditional(ctx_r2.canCreate() || ctx_r2.canDelete() || ctx_r2.toolTplRef() ? 2 : -1);
244
244
  i0.ɵɵadvance();
245
245
  i0.ɵɵconditional(ctx_r2.inlineEditEnabled() ? 3 : 4);
246
246
  } }
@@ -290,11 +290,11 @@ function SdCrudList_ng_template_6_Template(rf, ctx) { if (rf & 1) {
290
290
  i0.ɵɵtwoWayProperty("currentPage", ctx_r2.currentPage);
291
291
  i0.ɵɵproperty("totalPageCount", ctx_r2.totalPageCount())("itemsPerPage", ctx_r2.itemsPerPage())("visiblePageCount", ctx_r2.visiblePageCount());
292
292
  i0.ɵɵtwoWayProperty("sorts", ctx_r2.sorts);
293
- i0.ɵɵproperty("useAutoSort", ctx_r2.totalPageCount() === 0)("selectMode", ctx_r2.selectMode() ?? (ctx_r2.readonly() ? undefined : "multi"));
293
+ i0.ɵɵproperty("useAutoSort", ctx_r2.totalPageCount() === 0)("selectMode", ctx_r2.selectMode() ?? (ctx_r2.canDelete() ? "multi" : undefined));
294
294
  i0.ɵɵtwoWayProperty("selectedKeys", ctx_r2.selectedKeys);
295
295
  i0.ɵɵproperty("getItemSelectableFn", ctx_r2.getItemSelectableFn())("trackByFn", ctx_r2.trackByFn())("getItemCellStyleFn", ctx_r2.getItemCellStyleFn)("autoSelect", ctx_r2.selectMode() === "single" ? "click" : undefined)("columnControlsInput", ctx_r2.columnControls());
296
296
  i0.ɵɵadvance();
297
- i0.ɵɵconditional(ctx_r2.inlineEditEnabled() ? 1 : -1);
297
+ i0.ɵɵconditional(ctx_r2.canDelete() && ctx_r2.inlineEdit() ? 1 : -1);
298
298
  } }
299
299
  export class SdCrudList {
300
300
  _sdActivatedModal = inject(SdActivatedModalProvider, { optional: true });
@@ -302,7 +302,9 @@ export class SdCrudList {
302
302
  initialized = input(false, ...(ngDevMode ? [{ debugName: "initialized" }] : /* istanbul ignore next */ []));
303
303
  busyCount = model(0, ...(ngDevMode ? [{ debugName: "busyCount" }] : /* istanbul ignore next */ []));
304
304
  restricted = input(false, ...(ngDevMode ? [{ debugName: "restricted" }] : /* istanbul ignore next */ []));
305
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
305
+ canCreate = input(true, ...(ngDevMode ? [{ debugName: "canCreate" }] : /* istanbul ignore next */ []));
306
+ canEdit = input(true, ...(ngDevMode ? [{ debugName: "canEdit" }] : /* istanbul ignore next */ []));
307
+ canDelete = input(true, ...(ngDevMode ? [{ debugName: "canDelete" }] : /* istanbul ignore next */ []));
306
308
  inlineEdit = input(true, ...(ngDevMode ? [{ debugName: "inlineEdit" }] : /* istanbul ignore next */ []));
307
309
  viewType = input.required(...(ngDevMode ? [{ debugName: "viewType" }] : /* istanbul ignore next */ []));
308
310
  selectMode = input(...(ngDevMode ? [undefined, { debugName: "selectMode" }] : /* istanbul ignore next */ []));
@@ -333,7 +335,7 @@ export class SdCrudList {
333
335
  toolTplRef = contentChild("toolTpl", ...(ngDevMode ? [{ debugName: "toolTplRef" }] : /* istanbul ignore next */ []));
334
336
  bottomCommandTplRef = contentChild("bottomCommandTpl", ...(ngDevMode ? [{ debugName: "bottomCommandTplRef" }] : /* istanbul ignore next */ []));
335
337
  columnControls = contentChildren(SdSheetColumn, ...(ngDevMode ? [{ debugName: "columnControls" }] : /* istanbul ignore next */ []));
336
- inlineEditEnabled = computed(() => !this.readonly() && this.inlineEdit(), ...(ngDevMode ? [{ debugName: "inlineEditEnabled" }] : /* istanbul ignore next */ []));
338
+ inlineEditEnabled = computed(() => this.canEdit() && this.inlineEdit(), ...(ngDevMode ? [{ debugName: "inlineEditEnabled" }] : /* istanbul ignore next */ []));
337
339
  hasSelectedDeleted = computed(() => this.currSelectedItems().some((it) => this.isDeleted(it)), ...(ngDevMode ? [{ debugName: "hasSelectedDeleted" }] : /* istanbul ignore next */ []));
338
340
  hasSelectedNotDeleted = computed(() => this.currSelectedItems().some((it) => !this.isDeleted(it)), ...(ngDevMode ? [{ debugName: "hasSelectedNotDeleted" }] : /* istanbul ignore next */ []));
339
341
  getItemCellStyleFn = (item) => this.isDeleted(item) ? "text-decoration: line-through;" : undefined;
@@ -379,7 +381,7 @@ export class SdCrudList {
379
381
  i0.ɵɵqueryAdvance();
380
382
  } }, hostBindings: function SdCrudList_HostBindings(rf, ctx) { if (rf & 1) {
381
383
  i0.ɵɵlistener("sdSaveCommand", function SdCrudList_sdSaveCommand_HostBindingHandler() { return ctx.onSaveButtonClick(); });
382
- } }, inputs: { ready: [1, "ready"], initialized: [1, "initialized"], busyCount: [1, "busyCount"], restricted: [1, "restricted"], readonly: [1, "readonly"], inlineEdit: [1, "inlineEdit"], viewType: [1, "viewType"], selectMode: [1, "selectMode"], key: [1, "key"], items: [1, "items"], selectedKeys: [1, "selectedKeys"], currDeletedItems: [1, "currDeletedItems"], currentPage: [1, "currentPage"], totalPageCount: [1, "totalPageCount"], itemsPerPage: [1, "itemsPerPage"], visiblePageCount: [1, "visiblePageCount"], sorts: [1, "sorts"], trackByFn: [1, "trackByFn"], getItemSelectableFn: [1, "getItemSelectableFn"] }, outputs: { ready: "readyChange", busyCount: "busyCountChange", filterSubmit: "filterSubmit", submit: "submit", create: "create", delete: "delete", restore: "restore", selectedKeys: "selectedKeysChange", currentPage: "currentPageChange", sorts: "sortsChange" }, features: [i0.ɵɵHostDirectivesFeature([{ directive: i1.SdCommandDirective, outputs: ["sdSaveCommand", "sdSaveCommand"] }])], decls: 8, vars: 7, consts: [["contentTpl", ""], ["sheet", ""], ["topbarTpl", ""], ["commandTpl", ""], ["bottomCommandTpl", ""], ["formCtrl", ""], ["headerTpl", ""], [3, "readyChange", "busyCountChange", "ready", "initialized", "busyCount", "restricted", "viewType"], [3, "theme"], [3, "ngTemplateOutlet"], [3, "click", "theme"], [3, "svg"], [1, "flex-fill", "flex-row", "main-align-start", "gap-sm"], [3, "click", "size", "theme", "disabled"], [3, "size", "theme"], [3, "click", "size", "theme"], [1, "flex-column", "fill"], [1, "block", "p-default"], [1, "flex-row", "gap-sm", "p-xs-default"], [1, "flex-fill", "p-default", "pt-0"], [1, "block", "p-default", 3, "formSubmit"], [1, "form-box-inline"], [3, "type", "theme"], [1, "flex-fill", "p-default", "pt-0", 3, "formSubmit"], [3, "currentPageChange", "sortsChange", "selectedKeysChange", "key", "items", "currentPage", "totalPageCount", "itemsPerPage", "visiblePageCount", "sorts", "useAutoSort", "selectMode", "selectedKeys", "getItemSelectableFn", "trackByFn", "getItemCellStyleFn", "autoSelect", "columnControlsInput"], [3, "fixed", "key", "disableResizing", "disableSorting"], [3, "cell"], [1, "p-xs-sm", "tx-center"], [1, "p-xs-sm"]], template: function SdCrudList_Template(rf, ctx) { if (rf & 1) {
384
+ } }, inputs: { ready: [1, "ready"], initialized: [1, "initialized"], busyCount: [1, "busyCount"], restricted: [1, "restricted"], canCreate: [1, "canCreate"], canEdit: [1, "canEdit"], canDelete: [1, "canDelete"], inlineEdit: [1, "inlineEdit"], viewType: [1, "viewType"], selectMode: [1, "selectMode"], key: [1, "key"], items: [1, "items"], selectedKeys: [1, "selectedKeys"], currDeletedItems: [1, "currDeletedItems"], currentPage: [1, "currentPage"], totalPageCount: [1, "totalPageCount"], itemsPerPage: [1, "itemsPerPage"], visiblePageCount: [1, "visiblePageCount"], sorts: [1, "sorts"], trackByFn: [1, "trackByFn"], getItemSelectableFn: [1, "getItemSelectableFn"] }, outputs: { ready: "readyChange", busyCount: "busyCountChange", filterSubmit: "filterSubmit", submit: "submit", create: "create", delete: "delete", restore: "restore", selectedKeys: "selectedKeysChange", currentPage: "currentPageChange", sorts: "sortsChange" }, features: [i0.ɵɵHostDirectivesFeature([{ directive: i1.SdCommandDirective, outputs: ["sdSaveCommand", "sdSaveCommand"] }])], decls: 8, vars: 7, consts: [["contentTpl", ""], ["sheet", ""], ["topbarTpl", ""], ["commandTpl", ""], ["bottomCommandTpl", ""], ["formCtrl", ""], ["headerTpl", ""], [3, "readyChange", "busyCountChange", "ready", "initialized", "busyCount", "restricted", "viewType"], [3, "theme"], [3, "ngTemplateOutlet"], [3, "click", "theme"], [3, "svg"], [1, "flex-fill", "flex-row", "main-align-start", "gap-sm"], [3, "click", "size", "theme", "disabled"], [3, "size", "theme"], [3, "click", "size", "theme"], [1, "flex-column", "fill"], [1, "block", "p-default"], [1, "flex-row", "gap-sm", "p-xs-default"], [1, "flex-fill", "p-default", "pt-0"], [1, "block", "p-default", 3, "formSubmit"], [1, "form-box-inline"], [3, "type", "theme"], [1, "flex-fill", "p-default", "pt-0", 3, "formSubmit"], [3, "currentPageChange", "sortsChange", "selectedKeysChange", "key", "items", "currentPage", "totalPageCount", "itemsPerPage", "visiblePageCount", "sorts", "useAutoSort", "selectMode", "selectedKeys", "getItemSelectableFn", "trackByFn", "getItemCellStyleFn", "autoSelect", "columnControlsInput"], [3, "fixed", "key", "disableResizing", "disableSorting"], [3, "cell"], [1, "p-xs-sm", "tx-center"], [1, "p-xs-sm"]], template: function SdCrudList_Template(rf, ctx) { if (rf & 1) {
383
385
  const _r1 = i0.ɵɵgetCurrentView();
384
386
  i0.ɵɵelementStart(0, "sd-base-container", 7);
385
387
  i0.ɵɵtwoWayListener("readyChange", function SdCrudList_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 SdCrudList_Template_sd_base_container_busyCountChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.busyCount, $event) || (ctx.busyCount = $event); return i0.ɵɵresetView($event); });
@@ -507,33 +509,33 @@ export class SdCrudList {
507
509
  </sd-form>
508
510
  }
509
511
 
510
- @if (!readonly() || toolTplRef()) {
512
+ @if (canCreate() || canDelete() || toolTplRef()) {
511
513
  <div class="flex-row gap-sm p-xs-default">
512
- @if (!readonly()) {
514
+ @if (canCreate()) {
513
515
  <sd-button [size]="'sm'" [theme]="'link-primary'" (click)="create.emit()">
514
516
  <ng-icon [svg]="tablerCirclePlus" />
515
517
  등록
516
518
  </sd-button>
517
- @if (selectMode() !== "single") {
519
+ }
520
+ @if (canDelete() && selectMode() !== "single") {
521
+ <sd-button
522
+ [size]="'sm'"
523
+ [theme]="'link-danger'"
524
+ (click)="delete.emit(currSelectedItems())"
525
+ [disabled]="!hasSelectedNotDeleted()"
526
+ >
527
+ <ng-icon [svg]="tablerEraser" />
528
+ 선택 삭제
529
+ </sd-button>
530
+ @if (hasSelectedDeleted()) {
518
531
  <sd-button
519
532
  [size]="'sm'"
520
- [theme]="'link-danger'"
521
- (click)="delete.emit(currSelectedItems())"
522
- [disabled]="!hasSelectedNotDeleted()"
533
+ [theme]="'link-warning'"
534
+ (click)="restore.emit(currSelectedItems())"
523
535
  >
524
- <ng-icon [svg]="tablerEraser" />
525
- 선택 삭제
536
+ <ng-icon [svg]="tablerRestore" />
537
+ 선택 복구
526
538
  </sd-button>
527
- @if (hasSelectedDeleted()) {
528
- <sd-button
529
- [size]="'sm'"
530
- [theme]="'link-warning'"
531
- (click)="restore.emit(currSelectedItems())"
532
- >
533
- <ng-icon [svg]="tablerRestore" />
534
- 선택 복구
535
- </sd-button>
536
- }
537
539
  }
538
540
  }
539
541
 
@@ -566,7 +568,7 @@ export class SdCrudList {
566
568
  [visiblePageCount]="visiblePageCount()"
567
569
  [(sorts)]="sorts"
568
570
  [useAutoSort]="totalPageCount() === 0"
569
- [selectMode]="selectMode() ?? (readonly() ? undefined : 'multi')"
571
+ [selectMode]="selectMode() ?? (canDelete() ? 'multi' : undefined)"
570
572
  [(selectedKeys)]="selectedKeys"
571
573
  [getItemSelectableFn]="getItemSelectableFn()"
572
574
  [trackByFn]="trackByFn()"
@@ -575,7 +577,7 @@ export class SdCrudList {
575
577
  [columnControlsInput]="columnControls()"
576
578
  (selectedKeysChange)="onSelectedKeysChange()"
577
579
  >
578
- @if (inlineEditEnabled()) {
580
+ @if (canDelete() && inlineEdit()) {
579
581
  <sd-sheet-column
580
582
  [fixed]="true"
581
583
  [key]="'deleteButton'"
@@ -603,5 +605,5 @@ export class SdCrudList {
603
605
  </ng-template>
604
606
  `,
605
607
  }]
606
- }], 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 }] }], inlineEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineEdit", required: false }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: true }] }], selectMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectMode", required: false }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], formCtrl: [{ type: i0.ViewChild, args: ["formCtrl", { isSignal: true }] }], filterSubmit: [{ type: i0.Output, args: ["filterSubmit"] }], submit: [{ type: i0.Output, args: ["submit"] }], create: [{ type: i0.Output, args: ["create"] }], delete: [{ type: i0.Output, args: ["delete"] }], restore: [{ type: i0.Output, args: ["restore"] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selectedKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedKeys", required: false }] }, { type: i0.Output, args: ["selectedKeysChange"] }], currDeletedItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "currDeletedItems", required: false }] }], currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], totalPageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPageCount", required: false }] }], itemsPerPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsPerPage", required: false }] }], visiblePageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "visiblePageCount", required: false }] }], sorts: [{ type: i0.Input, args: [{ isSignal: true, alias: "sorts", required: false }] }, { type: i0.Output, args: ["sortsChange"] }], trackByFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "trackByFn", required: true }] }], getItemSelectableFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "getItemSelectableFn", required: false }] }], commandTplRef: [{ type: i0.ContentChild, args: ["commandTpl", { isSignal: true }] }], filterTplRef: [{ type: i0.ContentChild, args: ["filterTpl", { isSignal: true }] }], toolTplRef: [{ type: i0.ContentChild, args: ["toolTpl", { isSignal: true }] }], bottomCommandTplRef: [{ type: i0.ContentChild, args: ["bottomCommandTpl", { isSignal: true }] }], columnControls: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdSheetColumn), { isSignal: true }] }] }); })();
608
+ }], 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 }] }], canCreate: [{ type: i0.Input, args: [{ isSignal: true, alias: "canCreate", required: false }] }], canEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "canEdit", required: false }] }], canDelete: [{ type: i0.Input, args: [{ isSignal: true, alias: "canDelete", required: false }] }], inlineEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "inlineEdit", required: false }] }], viewType: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewType", required: true }] }], selectMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectMode", required: false }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], formCtrl: [{ type: i0.ViewChild, args: ["formCtrl", { isSignal: true }] }], filterSubmit: [{ type: i0.Output, args: ["filterSubmit"] }], submit: [{ type: i0.Output, args: ["submit"] }], create: [{ type: i0.Output, args: ["create"] }], delete: [{ type: i0.Output, args: ["delete"] }], restore: [{ type: i0.Output, args: ["restore"] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selectedKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedKeys", required: false }] }, { type: i0.Output, args: ["selectedKeysChange"] }], currDeletedItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "currDeletedItems", required: false }] }], currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], totalPageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalPageCount", required: false }] }], itemsPerPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemsPerPage", required: false }] }], visiblePageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "visiblePageCount", required: false }] }], sorts: [{ type: i0.Input, args: [{ isSignal: true, alias: "sorts", required: false }] }, { type: i0.Output, args: ["sortsChange"] }], trackByFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "trackByFn", required: true }] }], getItemSelectableFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "getItemSelectableFn", required: false }] }], commandTplRef: [{ type: i0.ContentChild, args: ["commandTpl", { isSignal: true }] }], filterTplRef: [{ type: i0.ContentChild, args: ["filterTpl", { isSignal: true }] }], toolTplRef: [{ type: i0.ContentChild, args: ["toolTpl", { isSignal: true }] }], bottomCommandTplRef: [{ type: i0.ContentChild, args: ["bottomCommandTpl", { isSignal: true }] }], columnControls: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SdSheetColumn), { isSignal: true }] }] }); })();
607
609
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdCrudList, { className: "SdCrudList", filePath: "packages/angular/src/data/crud/sd-crud-list.ts", lineNumber: 230 }); })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/angular",
3
- "version": "14.0.101",
3
+ "version": "14.0.102",
4
4
  "description": "심플리즘 패키지 - Angular",
5
5
  "author": "심플리즘",
6
6
  "license": "Apache-2.0",
@@ -51,10 +51,10 @@
51
51
  "jspdf": "^4.2.1",
52
52
  "rxjs": "^7.8.2",
53
53
  "tabbable": "^6.4.0",
54
- "@simplysm/core-browser": "14.0.101",
55
- "@simplysm/service-client": "14.0.101",
56
- "@simplysm/core-common": "14.0.101",
57
- "@simplysm/service-common": "14.0.101"
54
+ "@simplysm/core-common": "14.0.102",
55
+ "@simplysm/core-browser": "14.0.102",
56
+ "@simplysm/service-client": "14.0.102",
57
+ "@simplysm/service-common": "14.0.102"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@angular/compiler": "^21.2.17",
@@ -73,6 +73,14 @@ body.sd-theme-blueprint,
73
73
  sd-modal > ._dialog > ._header {
74
74
  background: var(--theme-primary-default);
75
75
  color: var(--text-trans-rev-default);
76
+
77
+ > ._close-btn {
78
+ color: var(--text-trans-rev-dark);
79
+
80
+ &:hover {
81
+ color: var(--text-trans-rev-default);
82
+ }
83
+ }
76
84
  }
77
85
 
78
86
  sd-crud-detail > sd-base-container > sd-busy-container > .bg-control > .main-align-end {
@@ -5,13 +5,13 @@
5
5
  $paper: (
6
6
  theme: (
7
7
  "gray": (
8
- lightest: colors.get(stone, 50),
9
- lighter: colors.get(stone, 100),
10
- light: colors.get(stone, 300),
11
- default: colors.get(stone, 500),
12
- dark: colors.get(stone, 600),
13
- darker: colors.get(stone, 700),
14
- darkest: colors.get(stone, 800)
8
+ lightest: colors.get(zinc, 50),
9
+ lighter: colors.get(zinc, 100),
10
+ light: colors.get(zinc, 300),
11
+ default: colors.get(zinc, 500),
12
+ dark: colors.get(zinc, 600),
13
+ darker: colors.get(zinc, 700),
14
+ darkest: colors.get(zinc, 800)
15
15
  ),
16
16
  blue-gray: (
17
17
  lightest: colors.get(slate, 50),
@@ -131,33 +131,33 @@ import {
131
131
  </sd-form>
132
132
  }
133
133
 
134
- @if (!readonly() || toolTplRef()) {
134
+ @if (canCreate() || canDelete() || toolTplRef()) {
135
135
  <div class="flex-row gap-sm p-xs-default">
136
- @if (!readonly()) {
136
+ @if (canCreate()) {
137
137
  <sd-button [size]="'sm'" [theme]="'link-primary'" (click)="create.emit()">
138
138
  <ng-icon [svg]="tablerCirclePlus" />
139
139
  등록
140
140
  </sd-button>
141
- @if (selectMode() !== "single") {
141
+ }
142
+ @if (canDelete() && selectMode() !== "single") {
143
+ <sd-button
144
+ [size]="'sm'"
145
+ [theme]="'link-danger'"
146
+ (click)="delete.emit(currSelectedItems())"
147
+ [disabled]="!hasSelectedNotDeleted()"
148
+ >
149
+ <ng-icon [svg]="tablerEraser" />
150
+ 선택 삭제
151
+ </sd-button>
152
+ @if (hasSelectedDeleted()) {
142
153
  <sd-button
143
154
  [size]="'sm'"
144
- [theme]="'link-danger'"
145
- (click)="delete.emit(currSelectedItems())"
146
- [disabled]="!hasSelectedNotDeleted()"
155
+ [theme]="'link-warning'"
156
+ (click)="restore.emit(currSelectedItems())"
147
157
  >
148
- <ng-icon [svg]="tablerEraser" />
149
- 선택 삭제
158
+ <ng-icon [svg]="tablerRestore" />
159
+ 선택 복구
150
160
  </sd-button>
151
- @if (hasSelectedDeleted()) {
152
- <sd-button
153
- [size]="'sm'"
154
- [theme]="'link-warning'"
155
- (click)="restore.emit(currSelectedItems())"
156
- >
157
- <ng-icon [svg]="tablerRestore" />
158
- 선택 복구
159
- </sd-button>
160
- }
161
161
  }
162
162
  }
163
163
 
@@ -190,7 +190,7 @@ import {
190
190
  [visiblePageCount]="visiblePageCount()"
191
191
  [(sorts)]="sorts"
192
192
  [useAutoSort]="totalPageCount() === 0"
193
- [selectMode]="selectMode() ?? (readonly() ? undefined : 'multi')"
193
+ [selectMode]="selectMode() ?? (canDelete() ? 'multi' : undefined)"
194
194
  [(selectedKeys)]="selectedKeys"
195
195
  [getItemSelectableFn]="getItemSelectableFn()"
196
196
  [trackByFn]="trackByFn()"
@@ -199,7 +199,7 @@ import {
199
199
  [columnControlsInput]="columnControls()"
200
200
  (selectedKeysChange)="onSelectedKeysChange()"
201
201
  >
202
- @if (inlineEditEnabled()) {
202
+ @if (canDelete() && inlineEdit()) {
203
203
  <sd-sheet-column
204
204
  [fixed]="true"
205
205
  [key]="'deleteButton'"
@@ -234,7 +234,9 @@ export class SdCrudList<TItem, TKey> {
234
234
  initialized = input(false);
235
235
  busyCount = model(0);
236
236
  restricted = input(false);
237
- readonly = input(false);
237
+ canCreate = input(true);
238
+ canEdit = input(true);
239
+ canDelete = input(true);
238
240
  inlineEdit = input(true);
239
241
  viewType = input.required<SdViewType>();
240
242
  selectMode = input<"single" | "multi">();
@@ -277,7 +279,7 @@ export class SdCrudList<TItem, TKey> {
277
279
 
278
280
  columnControls = contentChildren(SdSheetColumn);
279
281
 
280
- inlineEditEnabled = computed(() => !this.readonly() && this.inlineEdit());
282
+ inlineEditEnabled = computed(() => this.canEdit() && this.inlineEdit());
281
283
 
282
284
  hasSelectedDeleted = computed(() => this.currSelectedItems().some((it) => this.isDeleted(it)));
283
285
  hasSelectedNotDeleted = computed(() =>
package/styles.css CHANGED
@@ -492,13 +492,13 @@
492
492
  filter: invert(1) hue-rotate(180deg);
493
493
  }
494
494
  .sd-theme-blueprint {
495
- --theme-gray-lightest: rgb(250.0359612467, 250.0360440884, 249.2779368046);
496
- --theme-gray-lighter: rgb(245.0200869724, 245.0201812093, 244.2649733185);
497
- --theme-gray-light: rgb(214.4972833075, 211.0148528696, 208.69228363);
498
- --theme-gray-default: rgb(120.5421156673, 112.7105487033, 107.1095116537);
499
- --theme-gray-dark: rgb(87.3758702227, 82.7922334309, 77.0566791824);
500
- --theme-gray-darker: rgb(68.4644332304, 63.8579930371, 59.244454546);
501
- --theme-gray-darkest: rgb(41.2141136397, 36.7696719172, 35.6586021892);
495
+ --theme-gray-lightest: rgb(249.965274862, 249.965274862, 249.965274862);
496
+ --theme-gray-lighter: rgb(243.8781621679, 243.8782584823, 244.632450036);
497
+ --theme-gray-light: rgb(211.9273206973, 211.9262145525, 216.3278766188);
498
+ --theme-gray-default: rgb(112.9637770491, 112.9469501767, 123.3700946526);
499
+ --theme-gray-dark: rgb(81.9013746844, 81.8780014744, 92.3374227947);
500
+ --theme-gray-darker: rgb(62.8536504092, 62.8440021684, 70.4985501248);
501
+ --theme-gray-darkest: rgb(38.9887136761, 38.9861462622, 42.2714131908);
502
502
  --theme-blue-gray-lightest: rgb(248.1529573248, 249.9108643939, 251.6690680963);
503
503
  --theme-blue-gray-lighter: rgb(240.8410507803, 244.9263194607, 249.0113985417);
504
504
  --theme-blue-gray-light: rgb(202.0487085986, 213.136127163, 226.4329675211);
@@ -3760,6 +3760,12 @@ body.sd-theme-blueprint,
3760
3760
  background: var(--theme-primary-default);
3761
3761
  color: var(--text-trans-rev-default);
3762
3762
  }
3763
+ .sd-theme-blueprint sd-modal > ._dialog > ._header > ._close-btn {
3764
+ color: var(--text-trans-rev-dark);
3765
+ }
3766
+ .sd-theme-blueprint sd-modal > ._dialog > ._header > ._close-btn:hover {
3767
+ color: var(--text-trans-rev-default);
3768
+ }
3763
3769
  .sd-theme-blueprint sd-crud-detail > sd-base-container > sd-busy-container > .bg-control > .main-align-end {
3764
3770
  background: var(--theme-gray-lightest);
3765
3771
  }