raise-common-lib-new 0.0.2

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 (171) hide show
  1. package/README.md +24 -0
  2. package/assets/language/fr.d.ts +3377 -0
  3. package/assets/language/ja.d.ts +3351 -0
  4. package/assets/language/ko.d.ts +3351 -0
  5. package/assets/language/zh-CN.d.ts +3064 -0
  6. package/assets/language/zh-TW.d.ts +3354 -0
  7. package/esm2022/assets/language/fr.mjs +3378 -0
  8. package/esm2022/assets/language/ja.mjs +3352 -0
  9. package/esm2022/assets/language/ko.mjs +3352 -0
  10. package/esm2022/assets/language/zh-CN.mjs +3065 -0
  11. package/esm2022/assets/language/zh-TW.mjs +3355 -0
  12. package/esm2022/lib/commentary/constants.mjs +2 -0
  13. package/esm2022/lib/commentary/index.component.mjs +146 -0
  14. package/esm2022/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.mjs +44 -0
  15. package/esm2022/lib/common-grid/grid-action/grid-action.component.mjs +18 -0
  16. package/esm2022/lib/common-grid/index.component.mjs +461 -0
  17. package/esm2022/lib/constant/index.mjs +11 -0
  18. package/esm2022/lib/dialog/common-delete-dialog/index.component.mjs +46 -0
  19. package/esm2022/lib/dialog/common-dialog/index.component.mjs +85 -0
  20. package/esm2022/lib/dialog/new-action-notification/new-action-notification.component.mjs +51 -0
  21. package/esm2022/lib/float-box/index.component.mjs +217 -0
  22. package/esm2022/lib/form/checkbox-group/index.component.mjs +57 -0
  23. package/esm2022/lib/form/drawer-form/constants.mjs +10 -0
  24. package/esm2022/lib/form/drawer-form/drawer-form.component.mjs +336 -0
  25. package/esm2022/lib/form/encrypted-input/index.component.mjs +35 -0
  26. package/esm2022/lib/form/radio-group/index.component.mjs +42 -0
  27. package/esm2022/lib/form/switch-input/index.component.mjs +42 -0
  28. package/esm2022/lib/form/tag-input/index.component.mjs +82 -0
  29. package/esm2022/lib/form/toolbar-item/index.component.mjs +56 -0
  30. package/esm2022/lib/layout/drawer/index.component.mjs +165 -0
  31. package/esm2022/lib/layout/grid-box/index.component.mjs +67 -0
  32. package/esm2022/lib/layout/main-container/index.component.mjs +60 -0
  33. package/esm2022/lib/layout/multi-tab/index.component.mjs +263 -0
  34. package/esm2022/lib/layout/nav-card-group/constants.mjs +2 -0
  35. package/esm2022/lib/layout/nav-card-group/index.component.mjs +37 -0
  36. package/esm2022/lib/layout/page-list/index.component.mjs +73 -0
  37. package/esm2022/lib/layout/page-tab/index.component.mjs +56 -0
  38. package/esm2022/lib/layout/rs-aside/index.component.mjs +76 -0
  39. package/esm2022/lib/layout/rs-footer/index.component.mjs +16 -0
  40. package/esm2022/lib/layout/rs-header/index.component.mjs +56 -0
  41. package/esm2022/lib/layout/toolbar/constants.mjs +2 -0
  42. package/esm2022/lib/layout/toolbar/index.component.mjs +79 -0
  43. package/esm2022/lib/raise-common-lib.module.mjs +505 -0
  44. package/esm2022/lib/service/common-function.service.mjs +141 -0
  45. package/esm2022/lib/service/dialog.service.mjs +132 -0
  46. package/esm2022/lib/service/drawer.service.mjs +111 -0
  47. package/esm2022/lib/service/icon-loader.service.mjs +23 -0
  48. package/esm2022/lib/service/keep-alive.service.mjs +83 -0
  49. package/esm2022/lib/service/translation.service.mjs +98 -0
  50. package/esm2022/lib/utils/decorator.mjs +14 -0
  51. package/esm2022/public-api.mjs +35 -0
  52. package/esm2022/raise-common-lib-new.mjs +5 -0
  53. package/fesm2022/raise-common-lib-new.mjs +20114 -0
  54. package/fesm2022/raise-common-lib-new.mjs.map +1 -0
  55. package/index.d.ts +5 -0
  56. package/lib/commentary/constants.d.ts +15 -0
  57. package/lib/commentary/index.component.d.ts +38 -0
  58. package/lib/common-grid/grid-action/grid-action-item/grid-action-item.component.d.ts +10 -0
  59. package/lib/common-grid/grid-action/grid-action.component.d.ts +14 -0
  60. package/lib/common-grid/index.component.d.ts +122 -0
  61. package/lib/constant/index.d.ts +54 -0
  62. package/lib/dialog/common-delete-dialog/index.component.d.ts +29 -0
  63. package/lib/dialog/common-dialog/index.component.d.ts +29 -0
  64. package/lib/dialog/new-action-notification/new-action-notification.component.d.ts +33 -0
  65. package/lib/float-box/index.component.d.ts +33 -0
  66. package/lib/form/checkbox-group/index.component.d.ts +22 -0
  67. package/lib/form/drawer-form/constants.d.ts +34 -0
  68. package/lib/form/drawer-form/drawer-form.component.d.ts +67 -0
  69. package/lib/form/encrypted-input/index.component.d.ts +14 -0
  70. package/lib/form/radio-group/index.component.d.ts +19 -0
  71. package/lib/form/switch-input/index.component.d.ts +15 -0
  72. package/lib/form/tag-input/index.component.d.ts +25 -0
  73. package/lib/form/toolbar-item/index.component.d.ts +17 -0
  74. package/lib/layout/drawer/index.component.d.ts +45 -0
  75. package/lib/layout/grid-box/index.component.d.ts +19 -0
  76. package/lib/layout/main-container/index.component.d.ts +18 -0
  77. package/lib/layout/multi-tab/index.component.d.ts +52 -0
  78. package/lib/layout/nav-card-group/constants.d.ts +14 -0
  79. package/lib/layout/nav-card-group/index.component.d.ts +16 -0
  80. package/lib/layout/page-list/index.component.d.ts +21 -0
  81. package/lib/layout/page-tab/index.component.d.ts +18 -0
  82. package/lib/layout/rs-aside/index.component.d.ts +19 -0
  83. package/lib/layout/rs-footer/index.component.d.ts +8 -0
  84. package/lib/layout/rs-header/index.component.d.ts +21 -0
  85. package/lib/layout/toolbar/constants.d.ts +8 -0
  86. package/lib/layout/toolbar/index.component.d.ts +22 -0
  87. package/lib/raise-common-lib.module.d.ts +54 -0
  88. package/lib/service/common-function.service.d.ts +18 -0
  89. package/lib/service/dialog.service.d.ts +55 -0
  90. package/lib/service/drawer.service.d.ts +46 -0
  91. package/lib/service/icon-loader.service.d.ts +11 -0
  92. package/lib/service/keep-alive.service.d.ts +15 -0
  93. package/lib/service/translation.service.d.ts +12 -0
  94. package/lib/utils/decorator.d.ts +1 -0
  95. package/package.json +25 -0
  96. package/public-api.d.ts +31 -0
  97. package/src/assets/img/arrow_right.svg +4 -0
  98. package/src/assets/img/calendar-disabled.svg +6 -0
  99. package/src/assets/img/calendar.svg +6 -0
  100. package/src/assets/img/calendar_arrow_left.svg +3 -0
  101. package/src/assets/img/calendar_arrow_right.svg +3 -0
  102. package/src/assets/img/checked-vector.svg +3 -0
  103. package/src/assets/img/close-url.svg +10 -0
  104. package/src/assets/img/close.svg +10 -0
  105. package/src/assets/img/comment-cancel.svg +4 -0
  106. package/src/assets/img/comment-check.svg +5 -0
  107. package/src/assets/img/delete.svg +14 -0
  108. package/src/assets/img/desktop-refresh-btn.svg +6 -0
  109. package/src/assets/img/down-arrow.svg +3 -0
  110. package/src/assets/img/drawer-back.svg +4 -0
  111. package/src/assets/img/dropdown-arrow-disabled.svg +3 -0
  112. package/src/assets/img/dropdown-arrow.svg +3 -0
  113. package/src/assets/img/export.svg +5 -0
  114. package/src/assets/img/eye-close.svg +4 -0
  115. package/src/assets/img/eye-open.svg +4 -0
  116. package/src/assets/img/grid-action-copy.svg +6 -0
  117. package/src/assets/img/grid-action-delete.svg +14 -0
  118. package/src/assets/img/grid-action-detail.svg +7 -0
  119. package/src/assets/img/grid-action-download.svg +7 -0
  120. package/src/assets/img/grid-action-edit.svg +4 -0
  121. package/src/assets/img/grid-action-export.svg +12 -0
  122. package/src/assets/img/grid-action-move.svg +8 -0
  123. package/src/assets/img/grid-action-note.svg +10 -0
  124. package/src/assets/img/grid-action-send.svg +5 -0
  125. package/src/assets/img/grid-action-settle.svg +13 -0
  126. package/src/assets/img/grid-menu-arrow-right.svg +3 -0
  127. package/src/assets/img/grid-pager-arrow-left.svg +3 -0
  128. package/src/assets/img/grid-pager-arrows-left.svg +4 -0
  129. package/src/assets/img/icon-more-active.svg +7 -0
  130. package/src/assets/img/icon-more.svg +7 -0
  131. package/src/assets/img/more.svg +5 -0
  132. package/src/assets/img/notification-close.svg +4 -0
  133. package/src/assets/img/notification-collapse.svg +14 -0
  134. package/src/assets/img/notification-status-error.svg +5 -0
  135. package/src/assets/img/notification-status-loading.svg +9 -0
  136. package/src/assets/img/notification-status-success.svg +4 -0
  137. package/src/assets/img/notification-status-warning.svg +5 -0
  138. package/src/assets/img/plus.svg +4 -0
  139. package/src/assets/img/raise_loading.gif +0 -0
  140. package/src/assets/img/raise_logo_main.svg +13 -0
  141. package/src/assets/img/search.svg +4 -0
  142. package/src/assets/img/split-button-arrow.svg +3 -0
  143. package/src/assets/img/table-column-menu.svg +5 -0
  144. package/src/assets/img/table-sort-arrow.svg +6 -0
  145. package/src/assets/img/tag-remove.svg +4 -0
  146. package/src/assets/img/toggle-menu-icon.svg +3 -0
  147. package/src/assets/img/toolbar-action-add.svg +4 -0
  148. package/src/assets/img/toolbar-action-delete.svg +14 -0
  149. package/src/assets/img/toolbar-action-download.svg +5 -0
  150. package/src/assets/img/toolbar-action-duplicate.svg +6 -0
  151. package/src/assets/img/toolbar-action-export.svg +5 -0
  152. package/src/assets/img/toolbar-action-import.svg +5 -0
  153. package/src/assets/img/toolbar-action-refresh.svg +14 -0
  154. package/src/assets/img/toolbar-action-upload.svg +5 -0
  155. package/src/assets/img/tooltip-icon.svg +4 -0
  156. package/src/assets/language/fr.ts +3603 -0
  157. package/src/assets/language/ja.ts +3501 -0
  158. package/src/assets/language/ko.ts +3478 -0
  159. package/src/assets/language/zh-CN.ts +3115 -0
  160. package/src/assets/language/zh-TW.ts +3411 -0
  161. package/src/assets/style/reset/button.scss +187 -0
  162. package/src/assets/style/reset/checkbox.scss +33 -0
  163. package/src/assets/style/reset/dropdown.scss +564 -0
  164. package/src/assets/style/reset/grid.scss +845 -0
  165. package/src/assets/style/reset/input.scss +97 -0
  166. package/src/assets/style/reset/mat-dialog.scss +7 -0
  167. package/src/assets/style/reset/radio.scss +37 -0
  168. package/src/assets/style/reset/switch.scss +32 -0
  169. package/src/assets/style/style.scss +63 -0
  170. package/src/assets/style/syncfusion.min.css +1 -0
  171. package/src/assets/style/variables.scss +60 -0
@@ -0,0 +1,42 @@
1
+ // 组件类
2
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "@syncfusion/ej2-angular-buttons";
7
+ export class SwitchInputComponent {
8
+ value;
9
+ text;
10
+ orientation = 'front';
11
+ disabled = false;
12
+ error = false;
13
+ valueChange = new EventEmitter();
14
+ ngOnInit() { }
15
+ onChange(event) {
16
+ const value = event.checked;
17
+ this.valueChange.emit(value);
18
+ }
19
+ onClick() {
20
+ const value = !this.value;
21
+ this.valueChange.emit(value);
22
+ }
23
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwitchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SwitchInputComponent, selector: "rs-switch-input", inputs: { value: "value", text: "text", orientation: "orientation", disabled: "disabled", error: "error" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"rs-switch\" [ngClass]=\"[orientation, error ? 'error' : '', disabled ? 'disabled' : '']\">\r\n <label class=\"switch-label\" (click)=\"onClick()\"> {{ text }} </label>\r\n <ejs-switch\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange($event)\"\r\n ></ejs-switch>\r\n</div>\r\n", styles: [".rs-switch{display:flex;align-items:center;gap:8px}.rs-switch.behind{flex-direction:row-reverse;justify-content:flex-end}.rs-switch .switch-label{color:var(--rs-label-color);font-family:var(--rs-font-family);font-size:var(--rs-font-size);cursor:pointer}.rs-switch.disabled .switch-label{cursor:default;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SwitchComponent, selector: "ejs-switch", inputs: ["checked", "cssClass", "disabled", "enablePersistence", "enableRtl", "htmlAttributes", "locale", "name", "offLabel", "onLabel", "value"], outputs: ["focus", "blur", "change", "created", "checkedChange"] }] });
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwitchInputComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: "rs-switch-input", template: "<div class=\"rs-switch\" [ngClass]=\"[orientation, error ? 'error' : '', disabled ? 'disabled' : '']\">\r\n <label class=\"switch-label\" (click)=\"onClick()\"> {{ text }} </label>\r\n <ejs-switch\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange($event)\"\r\n ></ejs-switch>\r\n</div>\r\n", styles: [".rs-switch{display:flex;align-items:center;gap:8px}.rs-switch.behind{flex-direction:row-reverse;justify-content:flex-end}.rs-switch .switch-label{color:var(--rs-label-color);font-family:var(--rs-font-family);font-size:var(--rs-font-size);cursor:pointer}.rs-switch.disabled .switch-label{cursor:default;pointer-events:none}\n"] }]
29
+ }], propDecorators: { value: [{
30
+ type: Input
31
+ }], text: [{
32
+ type: Input
33
+ }], orientation: [{
34
+ type: Input
35
+ }], disabled: [{
36
+ type: Input
37
+ }], error: [{
38
+ type: Input
39
+ }], valueChange: [{
40
+ type: Output
41
+ }] } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2Zvcm0vc3dpdGNoLWlucHV0L2luZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhaXNlLWNvbW1vbi1saWIvc3JjL2xpYi9mb3JtL3N3aXRjaC1pbnB1dC9pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPL0UsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixLQUFLLENBQUM7SUFDTixJQUFJLENBQUM7SUFDTCxXQUFXLEdBQXVCLE9BQU8sQ0FBQztJQUMxQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLEtBQUssR0FBRyxLQUFLLENBQUM7SUFHdkIsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFakMsUUFBUSxLQUFJLENBQUM7SUFDYixRQUFRLENBQUMsS0FBSztRQUNaLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNELE9BQU87UUFDTCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQzt3R0FsQlUsb0JBQW9COzRGQUFwQixvQkFBb0IsNE1DUmpDLDJVQVFBOzs0RkRBYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUtsQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR04sV0FBVztzQkFEVixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtc3dpdGNoLWlucHV0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFN3aXRjaElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSB2YWx1ZTtcclxuICBASW5wdXQoKSB0ZXh0O1xyXG4gIEBJbnB1dCgpIG9yaWVudGF0aW9uOiAnZnJvbnQnIHwgJ2JlaGluZCcgPSAnZnJvbnQnO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuICBvbkNoYW5nZShldmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC5jaGVja2VkO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcclxuICB9XHJcbiAgb25DbGljaygpe1xyXG4gICAgY29uc3QgdmFsdWUgPSAhdGhpcy52YWx1ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJycy1zd2l0Y2hcIiBbbmdDbGFzc109XCJbb3JpZW50YXRpb24sIGVycm9yID8gJ2Vycm9yJyA6ICcnLCBkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJ11cIj5cclxuICA8bGFiZWwgY2xhc3M9XCJzd2l0Y2gtbGFiZWxcIiAoY2xpY2spPVwib25DbGljaygpXCI+IHt7IHRleHQgfX0gPC9sYWJlbD5cclxuICA8ZWpzLXN3aXRjaFxyXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcclxuICA+PC9lanMtc3dpdGNoPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,82 @@
1
+ // 组件类
2
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ export class TagInputComponent {
6
+ value = [];
7
+ fields;
8
+ disabled = false;
9
+ error = false;
10
+ minlength = 3;
11
+ maxlength = 30;
12
+ get inputMinlength() {
13
+ return this.minlength === undefined ? 3 : this.minlength;
14
+ }
15
+ get inputMaxlength() {
16
+ return this.minlength === undefined ? 30 : this.maxlength;
17
+ }
18
+ valueChange = new EventEmitter();
19
+ focus = new EventEmitter();
20
+ blur = new EventEmitter();
21
+ ngOnInit() { }
22
+ onRemoveTag(tag) {
23
+ const tagsList = this.value.filter((i) => i !== tag);
24
+ this.valueChange.emit(tagsList);
25
+ }
26
+ onAddTag(event) {
27
+ const inputValue = event.target.value;
28
+ if (inputValue && this.verifyInputValue(inputValue)) {
29
+ this.valueChange.emit([...this.value, inputValue]);
30
+ event.target.value = "";
31
+ }
32
+ }
33
+ inputError = false;
34
+ verifyInputValue(inputValue) {
35
+ this.inputError = false;
36
+ const inputValueLength = inputValue.length;
37
+ if (this.value.includes(inputValue) ||
38
+ inputValueLength > this.inputMaxlength ||
39
+ inputValueLength < this.inputMinlength) {
40
+ this.inputError = true;
41
+ return false;
42
+ }
43
+ return true;
44
+ }
45
+ onInput() {
46
+ this.inputError = false;
47
+ }
48
+ onFocus() {
49
+ this.focus.emit();
50
+ }
51
+ onBlur(event) {
52
+ this.onAddTag(event);
53
+ this.blur.emit();
54
+ }
55
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TagInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TagInputComponent, selector: "rs-tag-input", inputs: { value: "value", fields: "fields", disabled: "disabled", error: "error", minlength: ["inputMinlength", "minlength"], maxlength: ["inputMaxlength", "maxlength"] }, outputs: { valueChange: "valueChange", focus: "focus", blur: "blur" }, ngImport: i0, template: "<div\r\n class=\"form-tags\"\r\n [ngClass]=\"{\r\n disabled: disabled,\r\n error: inputError || error\r\n }\"\r\n>\r\n <div class=\"form-tags-item\" *ngFor=\"let tag of value\">\r\n <span>{{ tag }}</span>\r\n <span class=\"form-tags-remove\" (click)=\"onRemoveTag(tag)\"></span>\r\n </div>\r\n <input\r\n class=\"form-tags-input\"\r\n (keyup.enter)=\"onAddTag($event)\"\r\n (input)=\"onInput()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n autocomplete=\"off\"\r\n [minLength]=\"inputMinlength\"\r\n [maxLength]=\"inputMaxlength\"\r\n />\r\n</div>\r\n", styles: [".form-tags{display:flex;flex-flow:row wrap;border-radius:4px;overflow:hidden;gap:4px 8px;padding:3px 4px;min-height:28px;box-shadow:none;border-radius:var(--rs-input-border-radius);border:1px solid var(--rs-input-border-color);background-color:#fff;cursor:pointer}.form-tags:not(.error):not(.disabled):hover{box-shadow:0 0 3px #1f7bff66;border-color:var(--rs-input-hover-border-color)}.form-tags:focus-within{border-color:var(--rs-input-focus-border-color);box-shadow:none}.form-tags.error:not(:focus-within){border-color:var(--rs-input-error-border-color)!important}.form-tags.disabled{pointer-events:none;border-color:var(--rs-input-border-color)!important;font-size:var(--rs-input-font-size);color:var(--rs-input-disabled-color)!important;background-color:var(--rs-input-disabled-bg)!important;-webkit-text-fill-color:var(--rs-input-disabled-color)!important}.form-tags.disabled .form-tags-input{background-color:var(--rs-input-disabled-bg)!important}.form-tags .form-tags-input{flex:auto;width:auto;padding:0 4px;border:none;outline:none;font-size:var(--rs-input-font-size);color:var(--rs-input-color)!important}.form-tags .form-tags-item{box-sizing:border-box;height:20px;padding:0 8px;border:1px solid #eaedf0;border-radius:12px;background-color:#f8fafb;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:12px;display:flex;flex-flow:row nowrap;align-items:center;position:relative}.form-tags .form-tags-item .form-tags-remove{visibility:hidden;width:20px;height:20px;border:1px solid #dbe1e7;border-radius:20px;background-color:#fff;line-height:18px;text-align:center;position:absolute;top:-1px;right:-1px}.form-tags .form-tags-item .form-tags-remove:after{content:url(/assets/img/tag-remove.svg);cursor:pointer}.form-tags .form-tags-item:hover .form-tags-remove{visibility:visible}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
57
+ }
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TagInputComponent, decorators: [{
59
+ type: Component,
60
+ args: [{ selector: "rs-tag-input", template: "<div\r\n class=\"form-tags\"\r\n [ngClass]=\"{\r\n disabled: disabled,\r\n error: inputError || error\r\n }\"\r\n>\r\n <div class=\"form-tags-item\" *ngFor=\"let tag of value\">\r\n <span>{{ tag }}</span>\r\n <span class=\"form-tags-remove\" (click)=\"onRemoveTag(tag)\"></span>\r\n </div>\r\n <input\r\n class=\"form-tags-input\"\r\n (keyup.enter)=\"onAddTag($event)\"\r\n (input)=\"onInput()\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n autocomplete=\"off\"\r\n [minLength]=\"inputMinlength\"\r\n [maxLength]=\"inputMaxlength\"\r\n />\r\n</div>\r\n", styles: [".form-tags{display:flex;flex-flow:row wrap;border-radius:4px;overflow:hidden;gap:4px 8px;padding:3px 4px;min-height:28px;box-shadow:none;border-radius:var(--rs-input-border-radius);border:1px solid var(--rs-input-border-color);background-color:#fff;cursor:pointer}.form-tags:not(.error):not(.disabled):hover{box-shadow:0 0 3px #1f7bff66;border-color:var(--rs-input-hover-border-color)}.form-tags:focus-within{border-color:var(--rs-input-focus-border-color);box-shadow:none}.form-tags.error:not(:focus-within){border-color:var(--rs-input-error-border-color)!important}.form-tags.disabled{pointer-events:none;border-color:var(--rs-input-border-color)!important;font-size:var(--rs-input-font-size);color:var(--rs-input-disabled-color)!important;background-color:var(--rs-input-disabled-bg)!important;-webkit-text-fill-color:var(--rs-input-disabled-color)!important}.form-tags.disabled .form-tags-input{background-color:var(--rs-input-disabled-bg)!important}.form-tags .form-tags-input{flex:auto;width:auto;padding:0 4px;border:none;outline:none;font-size:var(--rs-input-font-size);color:var(--rs-input-color)!important}.form-tags .form-tags-item{box-sizing:border-box;height:20px;padding:0 8px;border:1px solid #eaedf0;border-radius:12px;background-color:#f8fafb;color:#44566c;font-family:Arial;font-size:11px;font-style:normal;font-weight:400;line-height:12px;display:flex;flex-flow:row nowrap;align-items:center;position:relative}.form-tags .form-tags-item .form-tags-remove{visibility:hidden;width:20px;height:20px;border:1px solid #dbe1e7;border-radius:20px;background-color:#fff;line-height:18px;text-align:center;position:absolute;top:-1px;right:-1px}.form-tags .form-tags-item .form-tags-remove:after{content:url(/assets/img/tag-remove.svg);cursor:pointer}.form-tags .form-tags-item:hover .form-tags-remove{visibility:visible}\n"] }]
61
+ }], propDecorators: { value: [{
62
+ type: Input
63
+ }], fields: [{
64
+ type: Input
65
+ }], disabled: [{
66
+ type: Input
67
+ }], error: [{
68
+ type: Input
69
+ }], minlength: [{
70
+ type: Input,
71
+ args: ["inputMinlength"]
72
+ }], maxlength: [{
73
+ type: Input,
74
+ args: ["inputMaxlength"]
75
+ }], valueChange: [{
76
+ type: Output
77
+ }], focus: [{
78
+ type: Output
79
+ }], blur: [{
80
+ type: Output
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2Zvcm0vdGFnLWlucHV0L2luZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhaXNlLWNvbW1vbi1saWIvc3JjL2xpYi9mb3JtL3RhZy1pbnB1dC9pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTy9FLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLE1BQU0sQ0FBQztJQUNQLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNFLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDZCxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXhDLElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDNUQsQ0FBQztJQUdELFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXZCLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzNCLElBQUksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRXBDLFFBQVEsS0FBSSxDQUFDO0lBQ2IsV0FBVyxDQUFDLEdBQUc7UUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBSztRQUNaLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ25ELEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFDRCxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLGdCQUFnQixDQUFDLFVBQVU7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQzNDLElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQy9CLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjO1lBQ3RDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQ3RDO1lBQ0EsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25CLENBQUM7d0dBNURVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHVTQ1I5QixvbUJBc0JBOzs0RkRkYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsY0FBYzs4QkFLZixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNtQixTQUFTO3NCQUFqQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFDRSxTQUFTO3NCQUFqQyxLQUFLO3VCQUFDLGdCQUFnQjtnQkFXdkIsV0FBVztzQkFEVixNQUFNO2dCQUdHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyDnu4Tku7bnsbtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy10YWctaW5wdXRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFnSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHZhbHVlID0gW107XHJcbiAgQElucHV0KCkgZmllbGRzO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZXJyb3IgPSBmYWxzZTtcclxuICBASW5wdXQoXCJpbnB1dE1pbmxlbmd0aFwiKSBtaW5sZW5ndGggPSAzO1xyXG4gIEBJbnB1dChcImlucHV0TWF4bGVuZ3RoXCIpIG1heGxlbmd0aCA9IDMwO1xyXG5cclxuICBnZXQgaW5wdXRNaW5sZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5taW5sZW5ndGggPT09IHVuZGVmaW5lZCA/IDMgOiB0aGlzLm1pbmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldCBpbnB1dE1heGxlbmd0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLm1pbmxlbmd0aCA9PT0gdW5kZWZpbmVkID8gMzAgOiB0aGlzLm1heGxlbmd0aDtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgZm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuICBvblJlbW92ZVRhZyh0YWcpIHtcclxuICAgIGNvbnN0IHRhZ3NMaXN0ID0gdGhpcy52YWx1ZS5maWx0ZXIoKGkpID0+IGkgIT09IHRhZyk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGFnc0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgb25BZGRUYWcoZXZlbnQpIHtcclxuICAgIGNvbnN0IGlucHV0VmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICBpZiAoaW5wdXRWYWx1ZSAmJiB0aGlzLnZlcmlmeUlucHV0VmFsdWUoaW5wdXRWYWx1ZSkpIHtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLnZhbHVlLCBpbnB1dFZhbHVlXSk7XHJcbiAgICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9IFwiXCI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlucHV0RXJyb3IgPSBmYWxzZTtcclxuICB2ZXJpZnlJbnB1dFZhbHVlKGlucHV0VmFsdWUpIHtcclxuICAgIHRoaXMuaW5wdXRFcnJvciA9IGZhbHNlO1xyXG4gICAgY29uc3QgaW5wdXRWYWx1ZUxlbmd0aCA9IGlucHV0VmFsdWUubGVuZ3RoO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnZhbHVlLmluY2x1ZGVzKGlucHV0VmFsdWUpIHx8XHJcbiAgICAgIGlucHV0VmFsdWVMZW5ndGggPiB0aGlzLmlucHV0TWF4bGVuZ3RoIHx8XHJcbiAgICAgIGlucHV0VmFsdWVMZW5ndGggPCB0aGlzLmlucHV0TWlubGVuZ3RoXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pbnB1dEVycm9yID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIG9uSW5wdXQoKSB7XHJcbiAgICB0aGlzLmlucHV0RXJyb3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoKSB7XHJcbiAgICB0aGlzLmZvY3VzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uQWRkVGFnKGV2ZW50KTtcclxuICAgIHRoaXMuYmx1ci5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImZvcm0tdGFnc1wiXHJcbiAgW25nQ2xhc3NdPVwie1xyXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxyXG4gICAgZXJyb3I6IGlucHV0RXJyb3IgfHwgZXJyb3JcclxuICB9XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLXRhZ3MtaXRlbVwiICpuZ0Zvcj1cImxldCB0YWcgb2YgdmFsdWVcIj5cclxuICAgIDxzcGFuPnt7IHRhZyB9fTwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS10YWdzLXJlbW92ZVwiIChjbGljayk9XCJvblJlbW92ZVRhZyh0YWcpXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG4gIDxpbnB1dFxyXG4gICAgY2xhc3M9XCJmb3JtLXRhZ3MtaW5wdXRcIlxyXG4gICAgKGtleXVwLmVudGVyKT1cIm9uQWRkVGFnKCRldmVudClcIlxyXG4gICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXHJcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICBbbWluTGVuZ3RoXT1cImlucHV0TWlubGVuZ3RoXCJcclxuICAgIFttYXhMZW5ndGhdPVwiaW5wdXRNYXhsZW5ndGhcIlxyXG4gIC8+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { Component, HostBinding, Input, ViewChild, } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/material/menu";
5
+ export class ToolbarItemComponent {
6
+ image;
7
+ text;
8
+ disabled;
9
+ children = [];
10
+ disabledOptions = {};
11
+ buttonElement;
12
+ get hostDisabled() {
13
+ return !!this.disabled;
14
+ }
15
+ // 暴露方法供父组件调用
16
+ getWidth() {
17
+ return this.buttonElement.nativeElement.offsetWidth;
18
+ }
19
+ ImageType = [
20
+ "Add",
21
+ "Delete",
22
+ "Import",
23
+ "Export",
24
+ "Upload",
25
+ "Download",
26
+ "Duplicate",
27
+ "Refresh",
28
+ ];
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToolbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ToolbarItemComponent, selector: "rs-toolbar-item", inputs: { image: "image", text: "text", disabled: "disabled", children: "children", disabledOptions: "disabledOptions" }, host: { properties: { "class.disabled": "this.hostDisabled" } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["buttonElement"], descendants: true }], ngImport: i0, template: "<button\r\n *ngIf=\"!children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n\r\n<button\r\n *ngIf=\"children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n mat-menu-item\r\n [matMenuTriggerFor]=\"menu\"\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of children\">\r\n <button\r\n class=\"toolbar-action-item e-btn text\"\r\n [disabled]=\"(button.key && disabledOptions[button.key]) || false\"\r\n (click)=\"button.action()\"\r\n >\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"button.image\">\r\n <img *ngIf=\"!ImageType.includes(button.image)\" [src]=\"button.image\" />\r\n </span>\r\n <span>{{ button.text }}</span>\r\n </button>\r\n </ng-container>\r\n</mat-menu>\r\n", styles: ["rs-toolbar-item.disabled{pointer-events:none}.toolbar-action-item{min-width:auto;padding:4px 8px}.toolbar-action-item .toolbar-action-image{height:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.toolbar-action-item .toolbar-action-image:before{display:block;width:16px;height:16px;line-height:16px}.toolbar-action-item .toolbar-action-image[data-type=Add]:before{content:url(/assets/img/toolbar-action-add.svg)}.toolbar-action-item .toolbar-action-image[data-type=Delete]:before{content:url(/assets/img/toolbar-action-delete.svg)}.toolbar-action-item .toolbar-action-image[data-type=Import]:before{content:url(/assets/img/toolbar-action-import.svg)}.toolbar-action-item .toolbar-action-image[data-type=Upload]:before{content:url(/assets/img/toolbar-action-upload.svg)}.toolbar-action-item .toolbar-action-image[data-type=Download]:before{content:url(/assets/img/toolbar-action-download.svg)}.toolbar-action-item .toolbar-action-image[data-type=Export]:before{content:url(/assets/img/toolbar-action-export.svg)}.toolbar-action-item .toolbar-action-image[data-type=Duplicate]:before{content:url(/assets/img/toolbar-action-duplicate.svg)}.toolbar-action-item .toolbar-action-image[data-type=Refresh]:before{content:url(/assets/img/toolbar-action-refresh.svg)}.toolbar-action-item .toolbar-action-image img{height:16px;display:block}.toolbar-action-item.e-btn{width:100%;justify-content:flex-start}.toolbar-action-item ::ng-deep .mat-mdc-menu-item-text{display:flex;gap:6px;align-items:center}.toolbar-action-item.mat-mdc-menu-item{min-height:24px}.toolbar-action-item.mat-menu-item:after{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ToolbarItemComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: "rs-toolbar-item", template: "<button\r\n *ngIf=\"!children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n\r\n<button\r\n *ngIf=\"children.length\"\r\n class=\"toolbar-action-item e-btn text\"\r\n #buttonElement\r\n mat-menu-item\r\n [matMenuTriggerFor]=\"menu\"\r\n [disabled]=\"!!disabled\"\r\n>\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"image\">\r\n <img *ngIf=\"!ImageType.includes(image)\" [src]=\"image\" />\r\n </span>\r\n <span>{{ text }}</span>\r\n</button>\r\n<mat-menu #menu=\"matMenu\">\r\n <ng-container *ngFor=\"let button of children\">\r\n <button\r\n class=\"toolbar-action-item e-btn text\"\r\n [disabled]=\"(button.key && disabledOptions[button.key]) || false\"\r\n (click)=\"button.action()\"\r\n >\r\n <span class=\"toolbar-action-image\" [attr.data-type]=\"button.image\">\r\n <img *ngIf=\"!ImageType.includes(button.image)\" [src]=\"button.image\" />\r\n </span>\r\n <span>{{ button.text }}</span>\r\n </button>\r\n </ng-container>\r\n</mat-menu>\r\n", styles: ["rs-toolbar-item.disabled{pointer-events:none}.toolbar-action-item{min-width:auto;padding:4px 8px}.toolbar-action-item .toolbar-action-image{height:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}.toolbar-action-item .toolbar-action-image:before{display:block;width:16px;height:16px;line-height:16px}.toolbar-action-item .toolbar-action-image[data-type=Add]:before{content:url(/assets/img/toolbar-action-add.svg)}.toolbar-action-item .toolbar-action-image[data-type=Delete]:before{content:url(/assets/img/toolbar-action-delete.svg)}.toolbar-action-item .toolbar-action-image[data-type=Import]:before{content:url(/assets/img/toolbar-action-import.svg)}.toolbar-action-item .toolbar-action-image[data-type=Upload]:before{content:url(/assets/img/toolbar-action-upload.svg)}.toolbar-action-item .toolbar-action-image[data-type=Download]:before{content:url(/assets/img/toolbar-action-download.svg)}.toolbar-action-item .toolbar-action-image[data-type=Export]:before{content:url(/assets/img/toolbar-action-export.svg)}.toolbar-action-item .toolbar-action-image[data-type=Duplicate]:before{content:url(/assets/img/toolbar-action-duplicate.svg)}.toolbar-action-item .toolbar-action-image[data-type=Refresh]:before{content:url(/assets/img/toolbar-action-refresh.svg)}.toolbar-action-item .toolbar-action-image img{height:16px;display:block}.toolbar-action-item.e-btn{width:100%;justify-content:flex-start}.toolbar-action-item ::ng-deep .mat-mdc-menu-item-text{display:flex;gap:6px;align-items:center}.toolbar-action-item.mat-mdc-menu-item{min-height:24px}.toolbar-action-item.mat-menu-item:after{display:none}\n"] }]
35
+ }], propDecorators: { image: [{
36
+ type: Input,
37
+ args: ["image"]
38
+ }], text: [{
39
+ type: Input,
40
+ args: ["text"]
41
+ }], disabled: [{
42
+ type: Input,
43
+ args: ["disabled"]
44
+ }], children: [{
45
+ type: Input,
46
+ args: ["children"]
47
+ }], disabledOptions: [{
48
+ type: Input
49
+ }], buttonElement: [{
50
+ type: ViewChild,
51
+ args: ["buttonElement", { static: false }]
52
+ }], hostDisabled: [{
53
+ type: HostBinding,
54
+ args: ["class.disabled"]
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2Zvcm0vdG9vbGJhci1pdGVtL2luZGV4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhaXNlLWNvbW1vbi1saWIvc3JjL2xpYi9mb3JtL3Rvb2xiYXItaXRlbS9pbmRleC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBQ0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDOzs7O0FBT3ZCLE1BQU0sT0FBTyxvQkFBb0I7SUFDZixLQUFLLENBQVM7SUFDZixJQUFJLENBQVM7SUFDVCxRQUFRLENBQVU7SUFDbEIsUUFBUSxHQUFVLEVBQUUsQ0FBQztJQUMvQixlQUFlLEdBQXlCLEVBQUUsQ0FBQztJQUdMLGFBQWEsQ0FBYztJQUMxRSxJQUFtQyxZQUFZO1FBQzdDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7SUFDYixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDdEQsQ0FBQztJQUVELFNBQVMsR0FBRztRQUNWLEtBQUs7UUFDTCxRQUFRO1FBQ1IsUUFBUTtRQUNSLFFBQVE7UUFDUixRQUFRO1FBQ1IsVUFBVTtRQUNWLFdBQVc7UUFDWCxTQUFTO0tBQ1YsQ0FBQzt3R0EzQlMsb0JBQW9COzRGQUFwQixvQkFBb0Isa1dDYmpDLHF3Q0F1Q0E7OzRGRDFCYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzhCQUtYLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDQyxJQUFJO3NCQUFsQixLQUFLO3VCQUFDLE1BQU07Z0JBQ00sUUFBUTtzQkFBMUIsS0FBSzt1QkFBQyxVQUFVO2dCQUNFLFFBQVE7c0JBQTFCLEtBQUs7dUJBQUMsVUFBVTtnQkFDUixlQUFlO3NCQUF2QixLQUFLO2dCQUd5QyxhQUFhO3NCQUEzRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1YsWUFBWTtzQkFBOUMsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtdG9vbGJhci1pdGVtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9pbmRleC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRvb2xiYXJJdGVtQ29tcG9uZW50IHtcclxuICBASW5wdXQoXCJpbWFnZVwiKSBpbWFnZTogc3RyaW5nO1xyXG4gIEBJbnB1dChcInRleHRcIikgdGV4dDogc3RyaW5nO1xyXG4gIEBJbnB1dChcImRpc2FibGVkXCIpIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dChcImNoaWxkcmVuXCIpIGNoaWxkcmVuOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkT3B0aW9uczoge1trZXk6IHN0cmluZ106IGFueX0gPSB7fTtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJidXR0b25FbGVtZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBidXR0b25FbGVtZW50ITogRWxlbWVudFJlZjtcclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5kaXNhYmxlZFwiKSBnZXQgaG9zdERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5kaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIC8vIOaatOmcsuaWueazleS+m+eItue7hOS7tuiwg+eUqFxyXG4gIGdldFdpZHRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgfVxyXG5cclxuICBJbWFnZVR5cGUgPSBbXHJcbiAgICBcIkFkZFwiLFxyXG4gICAgXCJEZWxldGVcIixcclxuICAgIFwiSW1wb3J0XCIsXHJcbiAgICBcIkV4cG9ydFwiLFxyXG4gICAgXCJVcGxvYWRcIixcclxuICAgIFwiRG93bmxvYWRcIixcclxuICAgIFwiRHVwbGljYXRlXCIsXHJcbiAgICBcIlJlZnJlc2hcIixcclxuICBdO1xyXG59XHJcbiIsIjxidXR0b25cclxuICAqbmdJZj1cIiFjaGlsZHJlbi5sZW5ndGhcIlxyXG4gIGNsYXNzPVwidG9vbGJhci1hY3Rpb24taXRlbSBlLWJ0biB0ZXh0XCJcclxuICAjYnV0dG9uRWxlbWVudFxyXG4gIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcclxuPlxyXG4gIDxzcGFuIGNsYXNzPVwidG9vbGJhci1hY3Rpb24taW1hZ2VcIiBbYXR0ci5kYXRhLXR5cGVdPVwiaW1hZ2VcIj5cclxuICAgIDxpbWcgKm5nSWY9XCIhSW1hZ2VUeXBlLmluY2x1ZGVzKGltYWdlKVwiIFtzcmNdPVwiaW1hZ2VcIiAvPlxyXG4gIDwvc3Bhbj5cclxuICA8c3Bhbj57eyB0ZXh0IH19PC9zcGFuPlxyXG48L2J1dHRvbj5cclxuXHJcbjxidXR0b25cclxuICAqbmdJZj1cImNoaWxkcmVuLmxlbmd0aFwiXHJcbiAgY2xhc3M9XCJ0b29sYmFyLWFjdGlvbi1pdGVtIGUtYnRuIHRleHRcIlxyXG4gICNidXR0b25FbGVtZW50XHJcbiAgbWF0LW1lbnUtaXRlbVxyXG4gIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCJcclxuICBbZGlzYWJsZWRdPVwiISFkaXNhYmxlZFwiXHJcbj5cclxuICA8c3BhbiBjbGFzcz1cInRvb2xiYXItYWN0aW9uLWltYWdlXCIgW2F0dHIuZGF0YS10eXBlXT1cImltYWdlXCI+XHJcbiAgICA8aW1nICpuZ0lmPVwiIUltYWdlVHlwZS5pbmNsdWRlcyhpbWFnZSlcIiBbc3JjXT1cImltYWdlXCIgLz5cclxuICA8L3NwYW4+XHJcbiAgPHNwYW4+e3sgdGV4dCB9fTwvc3Bhbj5cclxuPC9idXR0b24+XHJcbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY2hpbGRyZW5cIj5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJ0b29sYmFyLWFjdGlvbi1pdGVtIGUtYnRuIHRleHRcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiKGJ1dHRvbi5rZXkgJiYgZGlzYWJsZWRPcHRpb25zW2J1dHRvbi5rZXldKSB8fCBmYWxzZVwiXHJcbiAgICAgIChjbGljayk9XCJidXR0b24uYWN0aW9uKClcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRvb2xiYXItYWN0aW9uLWltYWdlXCIgW2F0dHIuZGF0YS10eXBlXT1cImJ1dHRvbi5pbWFnZVwiPlxyXG4gICAgICAgIDxpbWcgKm5nSWY9XCIhSW1hZ2VUeXBlLmluY2x1ZGVzKGJ1dHRvbi5pbWFnZSlcIiBbc3JjXT1cImJ1dHRvbi5pbWFnZVwiIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPHNwYW4+e3sgYnV0dG9uLnRleHQgfX08L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9tYXQtbWVudT5cclxuIl19
@@ -0,0 +1,165 @@
1
+ import { Component, ViewChild, ViewContainerRef, } from "@angular/core";
2
+ import { BehaviorSubject } from "rxjs";
3
+ import { DefaultDrawerConfig, } from "../../service/drawer.service";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../service/drawer.service";
6
+ import * as i2 from "@angular/common";
7
+ export class DrawerComponent {
8
+ resolver;
9
+ service;
10
+ element;
11
+ drawer;
12
+ header;
13
+ content;
14
+ toolbarSlot;
15
+ headerSlot;
16
+ topSlot;
17
+ container;
18
+ config = DefaultDrawerConfig;
19
+ useTransition = "yes";
20
+ $isOpened = new BehaviorSubject(false);
21
+ hiddenDrawer = true;
22
+ componentRefMap = new Map();
23
+ constructor(resolver, service) {
24
+ this.resolver = resolver;
25
+ this.service = service;
26
+ }
27
+ createDynamicComponent(component) {
28
+ // 确保在调用之前目标组件已经在entryComponents中声明
29
+ const factory = this.resolver.resolveComponentFactory(component);
30
+ const componentRef = this.container.createComponent(factory);
31
+ return componentRef;
32
+ }
33
+ destroyDynamicComponent(componentRef) {
34
+ if (componentRef) {
35
+ componentRef.destroy();
36
+ }
37
+ }
38
+ setComponentData(componentRef, data = {}) {
39
+ // 如果需要传递数据给动态组件,可以这样做
40
+ if (componentRef) {
41
+ Object.entries(data).forEach(([key, value]) => {
42
+ componentRef.instance[key] = value;
43
+ });
44
+ }
45
+ }
46
+ getSlotElement(componentRef, selector) {
47
+ const componentEl = componentRef.location.nativeElement;
48
+ return componentEl.querySelector(selector);
49
+ }
50
+ setSlotElement(slotEl, containerEl) {
51
+ containerEl.innerHTML = "";
52
+ if (slotEl) {
53
+ containerEl.append(slotEl);
54
+ }
55
+ }
56
+ setCache(cache) {
57
+ this.setSlotElement(cache.toolbarEl, this.toolbarSlot.nativeElement);
58
+ this.setSlotElement(cache.headerEl, this.headerSlot.nativeElement);
59
+ this.setSlotElement(cache.topEl, this.topSlot.nativeElement);
60
+ const drawerTop = cache.config.top ? `${cache.config.top}px` : "";
61
+ this.element.nativeElement.style.setProperty("--drawer-top", drawerTop);
62
+ if (cache.config.mode === "inner") {
63
+ this.content.nativeElement.insertBefore(this.header.nativeElement, this.content.nativeElement.firstChild);
64
+ this.content.nativeElement.append(this.toolbarSlot.nativeElement);
65
+ }
66
+ else {
67
+ this.drawer.nativeElement.insertBefore(this.header.nativeElement, this.drawer.nativeElement.firstChild);
68
+ this.header.nativeElement.append(this.toolbarSlot.nativeElement);
69
+ }
70
+ }
71
+ show(component, config, data) {
72
+ const showConfig = { ...DefaultDrawerConfig, ...config };
73
+ const componentRef = this.createDynamicComponent(component);
74
+ const toolbarEl = this.getSlotElement(componentRef, "[drawer-toolbar]");
75
+ const headerEl = this.getSlotElement(componentRef, "[drawer-header]");
76
+ const topEl = this.getSlotElement(componentRef, "[drawer-top]");
77
+ const cache = {
78
+ config: showConfig,
79
+ ref: componentRef,
80
+ toolbarEl,
81
+ headerEl,
82
+ topEl,
83
+ };
84
+ this.setComponentData(componentRef, data);
85
+ this.componentRefMap.set(this.service.cacheKey, cache);
86
+ this.setCache(cache);
87
+ this.config = showConfig;
88
+ this.toggleOpenStatus(true, true);
89
+ return componentRef.instance;
90
+ }
91
+ hide() {
92
+ this.service.hide();
93
+ }
94
+ back() {
95
+ this.deleteCache(this.service.cacheKey);
96
+ this.toggleOpenStatus(false, true);
97
+ }
98
+ deleteCache(cacheKey) {
99
+ const cache = this.componentRefMap.get(cacheKey);
100
+ if (cache) {
101
+ this.destroyDynamicComponent(cache.ref);
102
+ }
103
+ this.componentRefMap.delete(cacheKey);
104
+ }
105
+ onRouteChange() {
106
+ this.componentRefMap.forEach((cache) => {
107
+ cache.ref.location.nativeElement.style.display = "none";
108
+ });
109
+ const cache = this.componentRefMap.get(this.service.cacheKey);
110
+ if (cache) {
111
+ cache.ref.location.nativeElement.style.display = "";
112
+ this.config = cache.config;
113
+ this.setCache(cache);
114
+ this.toggleOpenStatus(true);
115
+ }
116
+ else {
117
+ this.toggleOpenStatus(false);
118
+ }
119
+ this.useTransition = "no";
120
+ }
121
+ toggleOpenStatus(isOpen, useTransition = false) {
122
+ this.$isOpened.next(isOpen);
123
+ this.useTransition = useTransition ? "yes" : "no";
124
+ this.hiddenDrawer = !isOpen && !useTransition;
125
+ }
126
+ onTransitionEnd() {
127
+ if (!this.$isOpened.getValue()) {
128
+ this.hiddenDrawer = true;
129
+ }
130
+ }
131
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.DrawerService }], target: i0.ɵɵFactoryTarget.Component });
132
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DrawerComponent, selector: "rs-drawer", viewQueries: [{ propertyName: "element", first: true, predicate: ["element"], descendants: true }, { propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "toolbarSlot", first: true, predicate: ["toolbarSlot"], descendants: true }, { propertyName: "headerSlot", first: true, predicate: ["headerSlot"], descendants: true }, { propertyName: "topSlot", first: true, predicate: ["topSlot"], descendants: true }, { propertyName: "container", first: true, predicate: ["dynamicComponentContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div #element id=\"rs-drawer-container\" class=\"rs-drawer-container\">\r\n <div class=\"rs-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n #drawer\r\n class=\"rs-drawer\"\r\n [attr.data-mode]=\"config.mode\"\r\n [attr.data-opened]=\"($isOpened | async) ? 'yes' : 'no'\"\r\n [attr.data-transition]=\"useTransition\"\r\n [hidden]=\"hiddenDrawer\"\r\n (transitionend)=\"onTransitionEnd()\"\r\n >\r\n <div class=\"drawer-header\" #header>\r\n <button class=\"drawer-return-button\" (click)=\"hide()\">\r\n <span class=\"drawer-sub-title\" *ngIf=\"config.subTitle\">\r\n {{ config.subTitle }}\r\n </span>\r\n </button>\r\n <div class=\"drawer-title\">{{ config.title }}</div>\r\n <div class=\"drawer-header-slot\" #headerSlot></div>\r\n </div>\r\n <div class=\"drawer-top-slot\" #topSlot></div>\r\n <div class=\"drawer-content-box\">\r\n <div class=\"drawer-content\" #content>\r\n <div class=\"drawer-content-container\">\r\n <ng-template #dynamicComponentContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"drawer-toolbar-slot\" #toolbarSlot></div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;height:100%}#rs-drawer-container{height:100%}.rs-drawer-container{height:100%;background-color:transparent;overflow:hidden;position:relative}.rs-drawer-container .rs-drawer-content{width:100%;height:100%;overflow:auto;margin-right:0!important}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar{width:5px;height:5px;background:#fff;position:static;z-index:999;border-radius:10px}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar-thumb{background:#eaedf0}.rs-drawer-container .rs-drawer{width:100%;height:100%;border-left:none;background-color:transparent;overflow:visible;pointer-events:none;opacity:0;display:flex;flex-flow:column nowrap;position:absolute;z-index:2;top:0;left:100%}.rs-drawer-container .rs-drawer[data-opened=yes]{left:0;opacity:1}.rs-drawer-container .rs-drawer[data-transition=yes]{transition:.5s ease-in-out;transition-property:opacity,left}.rs-drawer-container .rs-drawer .drawer-header{flex:none;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;box-sizing:content-box;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button{flex:none;display:flex;flex-flow:row nowrap;align-items:center;padding:0;border:none;background-color:transparent;cursor:pointer}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button:before{content:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M12 18L7.54986 12L12 6%22 stroke%3D%22%236C7C90%22 stroke-linecap%3D%22round%22%2F%3E%0D%3Cpath d%3D%22M17.427 12.5C17.7031 12.5 17.927 12.2761 17.927 12C17.927 11.7239 17.7031 11.5 17.427 11.5L17.427 12.5ZM7.39893 12.5L17.427 12.5L17.427 11.5L7.39893 11.5L7.39893 12.5Z%22 fill%3D%22%236C7C90%22%2F%3E%0D%3C%2Fsvg%3E%0D\");width:24px;height:24px;margin-right:8px;transition:transform ease-in-out 125ms}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button:hover:before{transform:translate(-2px)}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button .drawer-sub-title{margin-right:12px;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title{flex:none;min-height:14px;padding:0 12px;border-left:1px solid #bdc4ca;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title:empty{padding:0}.rs-drawer-container .rs-drawer .drawer-content-box{flex:auto;height:0;background-color:#f7fafb;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-content{height:100%;padding:0 20px;border:1px solid #ebedf0;border-radius:15px;background-color:#fff;display:flex;flex-flow:column nowrap}.rs-drawer-container .rs-drawer .drawer-content .drawer-content-container{flex:auto;overflow:hidden auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot{flex:none;height:32px;margin-left:auto;display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot:empty{display:none}.rs-drawer-container .rs-drawer .drawer-top-slot{flex:none;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-top-slot:empty{height:var(--drawer-top, 0px);pointer-events:none}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header{height:46px;padding:0 12px 0 8px;background-color:#f7fafb}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-title{color:#1f3f5c;font-size:15px;font-weight:700;line-height:18px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content{padding-bottom:20px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-top-slot:empty+.drawer-content-box{padding-top:calc((var(--drawer-top, 0) + 1) * 16px)}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header{height:24px;padding:6px 0;border-bottom:1px solid #eaedf0}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{color:#44566c;font-size:12px;line-height:14px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{font-weight:700}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px;padding-left:8px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot{width:100%;padding:16px 0;box-sizing:content-box;border-top:1px solid #eaedf0}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar]{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:12px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:6px;min-width:80px;height:32px;padding:0 12px;border:1px solid #adb5bd;border-radius:4px;background-color:#fff;cursor:pointer;color:#44566c;font-size:13px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:hover{border-color:#6c7c90}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:disabled{opacity:1!important;border-color:#6c7c9066;color:#44566c66;cursor:unset}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary{border:none;background-color:#1364b3;color:#fff}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:hover{background-color:#176bca}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:disabled{background-color:#1364b366}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button img{width:16px;height:16px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=outer] .drawer-toolbar-slot [drawer-toolbar] button{height:26px;font-size:12px;line-height:14px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot [drawer-toolbar] button img{display:none}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
133
+ }
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrawerComponent, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: "rs-drawer", template: "<div #element id=\"rs-drawer-container\" class=\"rs-drawer-container\">\r\n <div class=\"rs-drawer-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div\r\n #drawer\r\n class=\"rs-drawer\"\r\n [attr.data-mode]=\"config.mode\"\r\n [attr.data-opened]=\"($isOpened | async) ? 'yes' : 'no'\"\r\n [attr.data-transition]=\"useTransition\"\r\n [hidden]=\"hiddenDrawer\"\r\n (transitionend)=\"onTransitionEnd()\"\r\n >\r\n <div class=\"drawer-header\" #header>\r\n <button class=\"drawer-return-button\" (click)=\"hide()\">\r\n <span class=\"drawer-sub-title\" *ngIf=\"config.subTitle\">\r\n {{ config.subTitle }}\r\n </span>\r\n </button>\r\n <div class=\"drawer-title\">{{ config.title }}</div>\r\n <div class=\"drawer-header-slot\" #headerSlot></div>\r\n </div>\r\n <div class=\"drawer-top-slot\" #topSlot></div>\r\n <div class=\"drawer-content-box\">\r\n <div class=\"drawer-content\" #content>\r\n <div class=\"drawer-content-container\">\r\n <ng-template #dynamicComponentContainer></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"drawer-toolbar-slot\" #toolbarSlot></div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;height:100%}#rs-drawer-container{height:100%}.rs-drawer-container{height:100%;background-color:transparent;overflow:hidden;position:relative}.rs-drawer-container .rs-drawer-content{width:100%;height:100%;overflow:auto;margin-right:0!important}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar{width:5px;height:5px;background:#fff;position:static;z-index:999;border-radius:10px}.rs-drawer-container .rs-drawer-content::-webkit-scrollbar-thumb{background:#eaedf0}.rs-drawer-container .rs-drawer{width:100%;height:100%;border-left:none;background-color:transparent;overflow:visible;pointer-events:none;opacity:0;display:flex;flex-flow:column nowrap;position:absolute;z-index:2;top:0;left:100%}.rs-drawer-container .rs-drawer[data-opened=yes]{left:0;opacity:1}.rs-drawer-container .rs-drawer[data-transition=yes]{transition:.5s ease-in-out;transition-property:opacity,left}.rs-drawer-container .rs-drawer .drawer-header{flex:none;display:flex;flex-flow:row nowrap;justify-content:flex-start;align-items:center;box-sizing:content-box;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button{flex:none;display:flex;flex-flow:row nowrap;align-items:center;padding:0;border:none;background-color:transparent;cursor:pointer}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button:before{content:url(\"data:image/svg+xml,%3Csvg width%3D%2224%22 height%3D%2224%22 viewBox%3D%220 0 24 24%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M12 18L7.54986 12L12 6%22 stroke%3D%22%236C7C90%22 stroke-linecap%3D%22round%22%2F%3E%0D%3Cpath d%3D%22M17.427 12.5C17.7031 12.5 17.927 12.2761 17.927 12C17.927 11.7239 17.7031 11.5 17.427 11.5L17.427 12.5ZM7.39893 12.5L17.427 12.5L17.427 11.5L7.39893 11.5L7.39893 12.5Z%22 fill%3D%22%236C7C90%22%2F%3E%0D%3C%2Fsvg%3E%0D\");width:24px;height:24px;margin-right:8px;transition:transform ease-in-out 125ms}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button:hover:before{transform:translate(-2px)}.rs-drawer-container .rs-drawer .drawer-header .drawer-return-button .drawer-sub-title{margin-right:12px;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title{flex:none;min-height:14px;padding:0 12px;border-left:1px solid #bdc4ca;font-family:Arial;font-style:normal;font-weight:400}.rs-drawer-container .rs-drawer .drawer-header .drawer-title:empty{padding:0}.rs-drawer-container .rs-drawer .drawer-content-box{flex:auto;height:0;background-color:#f7fafb;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-content{height:100%;padding:0 20px;border:1px solid #ebedf0;border-radius:15px;background-color:#fff;display:flex;flex-flow:column nowrap}.rs-drawer-container .rs-drawer .drawer-content .drawer-content-container{flex:auto;overflow:hidden auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot{flex:none;height:32px;margin-left:auto;display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-toolbar-slot:empty{display:none}.rs-drawer-container .rs-drawer .drawer-top-slot{flex:none;pointer-events:auto}.rs-drawer-container .rs-drawer .drawer-top-slot:empty{height:var(--drawer-top, 0px);pointer-events:none}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header{height:46px;padding:0 12px 0 8px;background-color:#f7fafb}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-header .drawer-title{color:#1f3f5c;font-size:15px;font-weight:700;line-height:18px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content{padding-bottom:20px}.rs-drawer-container .rs-drawer[data-mode=outer] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-top-slot:empty+.drawer-content-box{padding-top:calc((var(--drawer-top, 0) + 1) * 16px)}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header{height:24px;padding:6px 0;border-bottom:1px solid #eaedf0}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-sub-title,.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{color:#44566c;font-size:12px;line-height:14px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-header .drawer-title{font-weight:700}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-content .drawer-content-container{margin-right:-20px;padding-right:20px;padding-left:8px}.rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot{width:100%;padding:16px 0;box-sizing:content-box;border-top:1px solid #eaedf0}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar]{display:flex;flex-flow:row nowrap;justify-content:flex-end;align-items:center;gap:12px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button{display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;gap:6px;min-width:80px;height:32px;padding:0 12px;border:1px solid #adb5bd;border-radius:4px;background-color:#fff;cursor:pointer;color:#44566c;font-size:13px;font-family:Arial;font-style:normal;font-weight:400;line-height:16px}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:hover{border-color:#6c7c90}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button:disabled{opacity:1!important;border-color:#6c7c9066;color:#44566c66;cursor:unset}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary{border:none;background-color:#1364b3;color:#fff}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:hover{background-color:#176bca}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button.primary:disabled{background-color:#1364b366}::ng-deep .rs-drawer-container .rs-drawer .drawer-toolbar-slot [drawer-toolbar] button img{width:16px;height:16px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=outer] .drawer-toolbar-slot [drawer-toolbar] button{height:26px;font-size:12px;line-height:14px}::ng-deep .rs-drawer-container .rs-drawer[data-mode=inner] .drawer-toolbar-slot [drawer-toolbar] button img{display:none}\n"] }]
137
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.DrawerService }]; }, propDecorators: { element: [{
138
+ type: ViewChild,
139
+ args: ["element", { static: false }]
140
+ }], drawer: [{
141
+ type: ViewChild,
142
+ args: ["drawer", { static: false }]
143
+ }], header: [{
144
+ type: ViewChild,
145
+ args: ["header", { static: false }]
146
+ }], content: [{
147
+ type: ViewChild,
148
+ args: ["content", { static: false }]
149
+ }], toolbarSlot: [{
150
+ type: ViewChild,
151
+ args: ["toolbarSlot", { static: false }]
152
+ }], headerSlot: [{
153
+ type: ViewChild,
154
+ args: ["headerSlot", { static: false }]
155
+ }], topSlot: [{
156
+ type: ViewChild,
157
+ args: ["topSlot", { static: false }]
158
+ }], container: [{
159
+ type: ViewChild,
160
+ args: ["dynamicComponentContainer", {
161
+ read: ViewContainerRef,
162
+ static: false,
163
+ }]
164
+ }] } });
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9kcmF3ZXIvaW5kZXguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9kcmF3ZXIvaW5kZXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsZ0JBQWdCLEdBSWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUVMLG1CQUFtQixHQUVwQixNQUFNLDhCQUE4QixDQUFDOzs7O0FBZXRDLE1BQU0sT0FBTyxlQUFlO0lBMEJoQjtJQUNBO0lBMUIrQixPQUFPLENBQTZCO0lBQ3JDLE1BQU0sQ0FBNkI7SUFDbkMsTUFBTSxDQUE2QjtJQUNsQyxPQUFPLENBQTZCO0lBRzdFLFdBQVcsQ0FBNkI7SUFFeEMsVUFBVSxDQUE2QjtJQUNFLE9BQU8sQ0FBNkI7SUFNckUsU0FBUyxDQUFtQjtJQUVwQyxNQUFNLEdBQWlCLG1CQUFtQixDQUFDO0lBQzNDLGFBQWEsR0FBaUIsS0FBSyxDQUFDO0lBQ3BDLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoRCxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBRVosZUFBZSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO0lBRWxFLFlBQ1UsUUFBa0MsRUFDbEMsT0FBc0I7UUFEdEIsYUFBUSxHQUFSLFFBQVEsQ0FBMEI7UUFDbEMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUM3QixDQUFDO0lBRUksc0JBQXNCLENBQUMsU0FBc0M7UUFDbkUsbUNBQW1DO1FBQ25DLE1BQU0sT0FBTyxH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ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICBDb21wb25lbnRSZWYsXHJcbiAgRWxlbWVudFJlZixcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gIERyYXdlckNvbmZpZyxcclxuICBEZWZhdWx0RHJhd2VyQ29uZmlnLFxyXG4gIERyYXdlclNlcnZpY2UsXHJcbn0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvZHJhd2VyLnNlcnZpY2VcIjtcclxuXHJcbnR5cGUgRHJhd2VyQ29tcG9uZW50Q2FjaGUgPSB7XHJcbiAgcmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuICBjb25maWc6IERyYXdlckNvbmZpZztcclxuICB0b29sYmFyRWw6IEhUTUxFbGVtZW50O1xyXG4gIGhlYWRlckVsOiBIVE1MRWxlbWVudDtcclxuICB0b3BFbDogSFRNTEVsZW1lbnQ7XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJycy1kcmF3ZXJcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhd2VyQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKFwiZWxlbWVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZChcImRyYXdlclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgZHJhd2VyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFwiaGVhZGVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBoZWFkZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgQFZpZXdDaGlsZChcInRvb2xiYXJTbG90XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHRvb2xiYXJTbG90OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFwiaGVhZGVyU2xvdFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICBoZWFkZXJTbG90OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKFwidG9wU2xvdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9wU2xvdDogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljQ29tcG9uZW50Q29udGFpbmVyXCIsIHtcclxuICAgIHJlYWQ6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBzdGF0aWM6IGZhbHNlLFxyXG4gIH0pXHJcbiAgcHJpdmF0ZSBjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gIGNvbmZpZzogRHJhd2VyQ29uZmlnID0gRGVmYXVsdERyYXdlckNvbmZpZztcclxuICB1c2VUcmFuc2l0aW9uOiBcInllc1wiIHwgXCJub1wiID0gXCJ5ZXNcIjtcclxuICAkaXNPcGVuZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBoaWRkZW5EcmF3ZXIgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIGNvbXBvbmVudFJlZk1hcCA9IG5ldyBNYXA8c3RyaW5nLCBEcmF3ZXJDb21wb25lbnRDYWNoZT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IERyYXdlclNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRHluYW1pY0NvbXBvbmVudChjb21wb25lbnQ6IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueSkge1xyXG4gICAgLy8g56Gu5L+d5Zyo6LCD55So5LmL5YmN55uu5qCH57uE5Lu25bey57uP5ZyoZW50cnlDb21wb25lbnRz5Lit5aOw5piOXHJcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveUR5bmFtaWNDb21wb25lbnQoY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55Pikge1xyXG4gICAgaWYgKGNvbXBvbmVudFJlZikge1xyXG4gICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb21wb25lbnREYXRhKFxyXG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PixcclxuICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fVxyXG4gICkge1xyXG4gICAgLy8g5aaC5p6c6ZyA6KaB5Lyg6YCS5pWw5o2u57uZ5Yqo5oCB57uE5Lu277yM5Y+v5Lul6L+Z5qC35YGaXHJcbiAgICBpZiAoY29tcG9uZW50UmVmKSB7XHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZVtrZXldID0gdmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTbG90RWxlbWVudChjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+LCBzZWxlY3Rvcjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjb21wb25lbnRFbCA9IGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudEVsLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIGFzIEhUTUxFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTbG90RWxlbWVudChzbG90RWw6IEhUTUxFbGVtZW50LCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQpIHtcclxuICAgIGNvbnRhaW5lckVsLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICBpZiAoc2xvdEVsKSB7XHJcbiAgICAgIGNvbnRhaW5lckVsLmFwcGVuZChzbG90RWwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0Q2FjaGUoY2FjaGU6IERyYXdlckNvbXBvbmVudENhY2hlKSB7XHJcbiAgICB0aGlzLnNldFNsb3RFbGVtZW50KGNhY2hlLnRvb2xiYXJFbCwgdGhpcy50b29sYmFyU2xvdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuc2V0U2xvdEVsZW1lbnQoY2FjaGUuaGVhZGVyRWwsIHRoaXMuaGVhZGVyU2xvdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIHRoaXMuc2V0U2xvdEVsZW1lbnQoY2FjaGUudG9wRWwsIHRoaXMudG9wU2xvdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIGNvbnN0IGRyYXdlclRvcCA9IGNhY2hlLmNvbmZpZy50b3AgPyBgJHtjYWNoZS5jb25maWcudG9wfXB4YCA6IFwiXCI7XHJcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcIi0tZHJhd2VyLXRvcFwiLCBkcmF3ZXJUb3ApO1xyXG4gICAgaWYgKGNhY2hlLmNvbmZpZy5tb2RlID09PSBcImlubmVyXCIpIHtcclxuICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxyXG4gICAgICAgIHRoaXMuaGVhZGVyLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5jb250ZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5hcHBlbmQodGhpcy50b29sYmFyU2xvdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZHJhd2VyLm5hdGl2ZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKFxyXG4gICAgICAgIHRoaXMuaGVhZGVyLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgdGhpcy5kcmF3ZXIubmF0aXZlRWxlbWVudC5maXJzdENoaWxkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuaGVhZGVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kKHRoaXMudG9vbGJhclNsb3QubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93PFQ+KFxyXG4gICAgY29tcG9uZW50OiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBULFxyXG4gICAgY29uZmlnOiBEcmF3ZXJDb25maWcsXHJcbiAgICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbiAgKTogVCB7XHJcbiAgICBjb25zdCBzaG93Q29uZmlnID0geyAuLi5EZWZhdWx0RHJhd2VyQ29uZmlnLCAuLi5jb25maWcgfTtcclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY3JlYXRlRHluYW1pY0NvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgY29uc3QgdG9vbGJhckVsID0gdGhpcy5nZXRTbG90RWxlbWVudChjb21wb25lbnRSZWYsIFwiW2RyYXdlci10b29sYmFyXVwiKTtcclxuICAgIGNvbnN0IGhlYWRlckVsID0gdGhpcy5nZXRTbG90RWxlbWVudChjb21wb25lbnRSZWYsIFwiW2RyYXdlci1oZWFkZXJdXCIpO1xyXG4gICAgY29uc3QgdG9wRWwgPSB0aGlzLmdldFNsb3RFbGVtZW50KGNvbXBvbmVudFJlZiwgXCJbZHJhd2VyLXRvcF1cIik7XHJcbiAgICBjb25zdCBjYWNoZSA9IHtcclxuICAgICAgY29uZmlnOiBzaG93Q29uZmlnLFxyXG4gICAgICByZWY6IGNvbXBvbmVudFJlZixcclxuICAgICAgdG9vbGJhckVsLFxyXG4gICAgICBoZWFkZXJFbCxcclxuICAgICAgdG9wRWwsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2V0Q29tcG9uZW50RGF0YShjb21wb25lbnRSZWYsIGRhdGEpO1xyXG4gICAgdGhpcy5jb21wb25lbnRSZWZNYXAuc2V0KHRoaXMuc2VydmljZS5jYWNoZUtleSwgY2FjaGUpO1xyXG5cclxuICAgIHRoaXMuc2V0Q2FjaGUoY2FjaGUpO1xyXG4gICAgdGhpcy5jb25maWcgPSBzaG93Q29uZmlnO1xyXG4gICAgdGhpcy50b2dnbGVPcGVuU3RhdHVzKHRydWUsIHRydWUpO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIGhpZGUoKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgYmFjaygpIHtcclxuICAgIHRoaXMuZGVsZXRlQ2FjaGUodGhpcy5zZXJ2aWNlLmNhY2hlS2V5KTtcclxuICAgIHRoaXMudG9nZ2xlT3BlblN0YXR1cyhmYWxzZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVDYWNoZShjYWNoZUtleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuY29tcG9uZW50UmVmTWFwLmdldChjYWNoZUtleSk7XHJcbiAgICBpZiAoY2FjaGUpIHtcclxuICAgICAgdGhpcy5kZXN0cm95RHluYW1pY0NvbXBvbmVudChjYWNoZS5yZWYpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21wb25lbnRSZWZNYXAuZGVsZXRlKGNhY2hlS2V5KTtcclxuICB9XHJcblxyXG4gIG9uUm91dGVDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFJlZk1hcC5mb3JFYWNoKChjYWNoZSkgPT4ge1xyXG4gICAgICBjYWNoZS5yZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNhY2hlID0gdGhpcy5jb21wb25lbnRSZWZNYXAuZ2V0KHRoaXMuc2VydmljZS5jYWNoZUtleSk7XHJcbiAgICBpZiAoY2FjaGUpIHtcclxuICAgICAgY2FjaGUucmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuY29uZmlnID0gY2FjaGUuY29uZmlnO1xyXG4gICAgICB0aGlzLnNldENhY2hlKGNhY2hlKTtcclxuICAgICAgdGhpcy50b2dnbGVPcGVuU3RhdHVzKHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b2dnbGVPcGVuU3RhdHVzKGZhbHNlKTtcclxuICAgIH1cclxuICAgIHRoaXMudXNlVHJhbnNpdGlvbiA9IFwibm9cIjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZU9wZW5TdGF0dXMoaXNPcGVuOiBib29sZWFuLCB1c2VUcmFuc2l0aW9uID0gZmFsc2UpIHtcclxuICAgIHRoaXMuJGlzT3BlbmVkLm5leHQoaXNPcGVuKTtcclxuICAgIHRoaXMudXNlVHJhbnNpdGlvbiA9IHVzZVRyYW5zaXRpb24gPyBcInllc1wiIDogXCJub1wiO1xyXG4gICAgdGhpcy5oaWRkZW5EcmF3ZXIgPSAhaXNPcGVuICYmICF1c2VUcmFuc2l0aW9uO1xyXG4gIH1cclxuXHJcbiAgb25UcmFuc2l0aW9uRW5kKCkge1xyXG4gICAgaWYgKCF0aGlzLiRpc09wZW5lZC5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgIHRoaXMuaGlkZGVuRHJhd2VyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiAjZWxlbWVudCBpZD1cInJzLWRyYXdlci1jb250YWluZXJcIiBjbGFzcz1cInJzLWRyYXdlci1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwicnMtZHJhd2VyLWNvbnRlbnRcIj5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAjZHJhd2VyXHJcbiAgICBjbGFzcz1cInJzLWRyYXdlclwiXHJcbiAgICBbYXR0ci5kYXRhLW1vZGVdPVwiY29uZmlnLm1vZGVcIlxyXG4gICAgW2F0dHIuZGF0YS1vcGVuZWRdPVwiKCRpc09wZW5lZCB8IGFzeW5jKSA/ICd5ZXMnIDogJ25vJ1wiXHJcbiAgICBbYXR0ci5kYXRhLXRyYW5zaXRpb25dPVwidXNlVHJhbnNpdGlvblwiXHJcbiAgICBbaGlkZGVuXT1cImhpZGRlbkRyYXdlclwiXHJcbiAgICAodHJhbnNpdGlvbmVuZCk9XCJvblRyYW5zaXRpb25FbmQoKVwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyYXdlci1oZWFkZXJcIiAjaGVhZGVyPlxyXG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZHJhd2VyLXJldHVybi1idXR0b25cIiAoY2xpY2spPVwiaGlkZSgpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcmF3ZXItc3ViLXRpdGxlXCIgKm5nSWY9XCJjb25maWcuc3ViVGl0bGVcIj5cclxuICAgICAgICAgIHt7IGNvbmZpZy5zdWJUaXRsZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXItdGl0bGVcIj57eyBjb25maWcudGl0bGUgfX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyYXdlci1oZWFkZXItc2xvdFwiICNoZWFkZXJTbG90PjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJhd2VyLXRvcC1zbG90XCIgI3RvcFNsb3Q+PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJhd2VyLWNvbnRlbnQtYm94XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXItY29udGVudFwiICNjb250ZW50PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXItY29udGVudC1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZHluYW1pY0NvbXBvbmVudENvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRyYXdlci10b29sYmFyLXNsb3RcIiAjdG9vbGJhclNsb3Q+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,67 @@
1
+ // 组件类
2
+ import { Component, ContentChild, Input, } from "@angular/core";
3
+ import { CommonGridComponent } from "../../common-grid/index.component";
4
+ import { debounce } from "lodash";
5
+ import { GridComponent } from "@syncfusion/ej2-angular-grids";
6
+ import { TreeGridComponent } from "@syncfusion/ej2-angular-treegrid";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "@angular/forms";
10
+ import * as i3 from "@syncfusion/ej2-angular-inputs";
11
+ export class GridBoxComponent {
12
+ gridContent;
13
+ orignGrid;
14
+ treeGrid;
15
+ wholeToolbarSlot;
16
+ hideSearch = false;
17
+ isInner = false;
18
+ debouncedInput;
19
+ hasWholeToolbarSlot = false;
20
+ ngOnInit() {
21
+ this.debouncedInput = debounce(() => {
22
+ this.onSeach();
23
+ }, 300);
24
+ }
25
+ ngAfterContentInit() {
26
+ // 检测是否传入了 wholeToolbarSlot
27
+ this.hasWholeToolbarSlot = !!this.wholeToolbarSlot;
28
+ }
29
+ searchValue;
30
+ onSeach() {
31
+ if (this.gridContent) {
32
+ this.gridContent.grid.search(this.searchValue);
33
+ }
34
+ else if (this.orignGrid) {
35
+ this.orignGrid.search(this.searchValue);
36
+ }
37
+ else if (this.treeGrid) {
38
+ this.treeGrid.search(this.searchValue);
39
+ }
40
+ }
41
+ onInput() {
42
+ this.debouncedInput();
43
+ }
44
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GridBoxComponent, selector: "rs-grid-box", inputs: { hideSearch: "hideSearch", isInner: "isInner" }, queries: [{ propertyName: "gridContent", first: true, predicate: CommonGridComponent, descendants: true }, { propertyName: "orignGrid", first: true, predicate: GridComponent, descendants: true }, { propertyName: "treeGrid", first: true, predicate: TreeGridComponent, descendants: true }, { propertyName: "wholeToolbarSlot", first: true, predicate: ["wholeToolbarSlot"], descendants: true }], ngImport: i0, template: "<div class=\"rs-grid-box\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <div class=\"rs-content-tab\">\r\n <ng-content select=\"[contentTabSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-whole-bar\" *ngIf=\"hasWholeToolbarSlot\">\r\n <ng-content select=\"[wholeToolbarSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-left-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\" *ngIf=\"!hideSearch\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [":host{height:100%}.rs-grid-box{display:flex;flex-direction:column;height:100%}.rs-grid-box.is-not-inner{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px #0000001a}.rs-grid-box .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-grid-box .rs-toolbar-wrap .rs-whole-bar{width:100%}.rs-grid-box .rs-toolbar-wrap .rs-left-col,.rs-grid-box .rs-toolbar-wrap .rs-right-col{display:flex;align-items:center}.rs-grid-box .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-grid-box .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:24px!important;min-width:auto!important}.rs-grid-box .rs-toolbar-wrap .rs-left-col{flex:1;width:0;gap:4px}.rs-grid-box .rs-toolbar-wrap .rs-right-col{gap:12px}.rs-grid-box .rs-grid-wrap{flex:1;height:0}.rs-grid-box .rs-search-input{width:240px}.rs-grid-box .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-grid-box .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px #1f7bff66!important;border-color:var(--rs-input-hover-border-color)!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-grid-box .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-grid-box .rs-search-input ::ng-deep .e-input-group input.e-input:hover{box-shadow:none!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group:before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.TextBoxComponent, selector: "ejs-textbox", inputs: ["autocomplete", "cssClass", "enablePersistence", "enableRtl", "enabled", "floatLabelType", "htmlAttributes", "locale", "multiline", "placeholder", "readonly", "showClearButton", "type", "value", "width"], outputs: ["blur", "change", "created", "destroyed", "focus", "input", "valueChange"] }] });
46
+ }
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GridBoxComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: "rs-grid-box", template: "<div class=\"rs-grid-box\" [ngClass]=\"{ 'is-not-inner': !isInner }\">\r\n <div class=\"rs-content-tab\">\r\n <ng-content select=\"[contentTabSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-toolbar-wrap\">\r\n <div class=\"rs-whole-bar\" *ngIf=\"hasWholeToolbarSlot\">\r\n <ng-content select=\"[wholeToolbarSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-left-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[leftToolbarBtnSlot]\"></ng-content>\r\n </div>\r\n <div class=\"rs-right-col\" *ngIf=\"!hasWholeToolbarSlot\">\r\n <ng-content select=\"[rightToolbarBtnSlot]\"></ng-content>\r\n <div class=\"rs-search-input\" *ngIf=\"!hideSearch\">\r\n <ejs-textbox\r\n type=\"text\"\r\n class=\"e-input\"\r\n [(ngModel)]=\"searchValue\"\r\n (input)=\"onInput()\"\r\n placeholder=\"Search all fields\"\r\n [showClearButton]=\"true\"\r\n autocomplete=\"off\"\r\n ></ejs-textbox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"rs-grid-wrap\">\r\n <ng-content select=\"[gridSlot]\"></ng-content>\r\n </div>\r\n</div>\r\n", styles: [":host{height:100%}.rs-grid-box{display:flex;flex-direction:column;height:100%}.rs-grid-box.is-not-inner{border-radius:15px;padding:12px 20px;background:#fff;border:1px solid var(--rs-border-color);box-shadow:0 0 4px #0000001a}.rs-grid-box .rs-toolbar-wrap{display:flex;justify-content:space-between;align-items:center;padding-bottom:4px;border-bottom:1px solid #eaedf0}.rs-grid-box .rs-toolbar-wrap .rs-whole-bar{width:100%}.rs-grid-box .rs-toolbar-wrap .rs-left-col,.rs-grid-box .rs-toolbar-wrap .rs-right-col{display:flex;align-items:center}.rs-grid-box .rs-toolbar-wrap .rs-left-col ::ng-deep .e-btn,.rs-grid-box .rs-toolbar-wrap .rs-right-col ::ng-deep .e-btn{height:24px!important;min-width:auto!important}.rs-grid-box .rs-toolbar-wrap .rs-left-col{flex:1;width:0;gap:4px}.rs-grid-box .rs-toolbar-wrap .rs-right-col{gap:12px}.rs-grid-box .rs-grid-wrap{flex:1;height:0}.rs-grid-box .rs-search-input{width:240px}.rs-grid-box .rs-search-input ::ng-deep .e-input-group{border-radius:14px!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group.e-input-focus,.rs-grid-box .rs-search-input ::ng-deep .e-input-group:hover{box-shadow:0 0 3px #1f7bff66!important;border-color:var(--rs-input-hover-border-color)!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group.e-input-focus input.e-input,.rs-grid-box .rs-search-input ::ng-deep .e-input-group:hover input.e-input{box-shadow:none!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group input.e-input{width:calc(100% - 50px);height:26px}.rs-grid-box .rs-search-input ::ng-deep .e-input-group input.e-input:hover{box-shadow:none!important}.rs-grid-box .rs-search-input ::ng-deep .e-input-group:before{content:\"\"!important;margin:6px 0 0 8px;display:block;width:16px;height:16px;background-image:url(/assets/img/search.svg);background-size:cover;background-position:center}\n"] }]
50
+ }], propDecorators: { gridContent: [{
51
+ type: ContentChild,
52
+ args: [CommonGridComponent, { static: false }]
53
+ }], orignGrid: [{
54
+ type: ContentChild,
55
+ args: [GridComponent, { static: false }]
56
+ }], treeGrid: [{
57
+ type: ContentChild,
58
+ args: [TreeGridComponent, { static: false }]
59
+ }], wholeToolbarSlot: [{
60
+ type: ContentChild,
61
+ args: ["wholeToolbarSlot", { static: false }]
62
+ }], hideSearch: [{
63
+ type: Input
64
+ }], isInner: [{
65
+ type: Input
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFpc2UtY29tbW9uLWxpYi9zcmMvbGliL2xheW91dC9ncmlkLWJveC9pbmRleC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWlzZS1jb21tb24tbGliL3NyYy9saWIvbGF5b3V0L2dyaWQtYm94L2luZGV4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFDTixPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBT3JFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDMkIsV0FBVyxDQUFDO0lBQ2xCLFNBQVMsQ0FBQztJQUNOLFFBQVEsQ0FBQztJQUNSLGdCQUFnQixDQUFNO0lBRWxFLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVqQixjQUFjLENBQVc7SUFDakMsbUJBQW1CLEdBQVksS0FBSyxDQUFDO0lBQ3JDLFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ3JELENBQUM7SUFFRCxXQUFXLENBQUM7SUFDWixPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7d0dBbkNVLGdCQUFnQjs0RkFBaEIsZ0JBQWdCLHNKQUNiLG1CQUFtQiw0RUFDbkIsYUFBYSwyRUFDYixpQkFBaUIsdUpDckJqQyxtcENBOEJBOzs0RkRaYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTs4QkFLK0IsV0FBVztzQkFBaEUsWUFBWTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0osU0FBUztzQkFBeEQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNNLFFBQVE7c0JBQTNELFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNHLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRTFDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8g57uE5Lu257G7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb21tb25HcmlkQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbW1vbi1ncmlkL2luZGV4LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgR3JpZENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5pbXBvcnQgeyBUcmVlR3JpZENvbXBvbmVudCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci10cmVlZ3JpZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtZ3JpZC1ib3hcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZEJveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XHJcbiAgQENvbnRlbnRDaGlsZChDb21tb25HcmlkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgZ3JpZENvbnRlbnQ7XHJcbiAgQENvbnRlbnRDaGlsZChHcmlkQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgb3JpZ25HcmlkO1xyXG4gIEBDb250ZW50Q2hpbGQoVHJlZUdyaWRDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSB0cmVlR3JpZDtcclxuICBAQ29udGVudENoaWxkKFwid2hvbGVUb29sYmFyU2xvdFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgd2hvbGVUb29sYmFyU2xvdDogYW55O1xyXG5cclxuICBASW5wdXQoKSBoaWRlU2VhcmNoID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNJbm5lciA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGRlYm91bmNlZElucHV0OiBGdW5jdGlvbjtcclxuICBoYXNXaG9sZVRvb2xiYXJTbG90OiBib29sZWFuID0gZmFsc2U7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmRlYm91bmNlZElucHV0ID0gZGVib3VuY2UoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhY2goKTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAvLyDmo4DmtYvmmK/lkKbkvKDlhaXkuoYgd2hvbGVUb29sYmFyU2xvdFxyXG4gICAgdGhpcy5oYXNXaG9sZVRvb2xiYXJTbG90ID0gISF0aGlzLndob2xlVG9vbGJhclNsb3Q7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hWYWx1ZTtcclxuICBvblNlYWNoKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbnRlbnQpIHtcclxuICAgICAgdGhpcy5ncmlkQ29udGVudC5ncmlkLnNlYXJjaCh0aGlzLnNlYXJjaFZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcmlnbkdyaWQpIHtcclxuICAgICAgdGhpcy5vcmlnbkdyaWQuc2VhcmNoKHRoaXMuc2VhcmNoVmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRyZWVHcmlkKSB7XHJcbiAgICAgIHRoaXMudHJlZUdyaWQuc2VhcmNoKHRoaXMuc2VhcmNoVmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25JbnB1dCgpIHtcclxuICAgIHRoaXMuZGVib3VuY2VkSW5wdXQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJzLWdyaWQtYm94XCIgW25nQ2xhc3NdPVwieyAnaXMtbm90LWlubmVyJzogIWlzSW5uZXIgfVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJycy1jb250ZW50LXRhYlwiPlxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NvbnRlbnRUYWJTbG90XVwiPjwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicnMtdG9vbGJhci13cmFwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicnMtd2hvbGUtYmFyXCIgKm5nSWY9XCJoYXNXaG9sZVRvb2xiYXJTbG90XCI+XHJcbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlt3aG9sZVRvb2xiYXJTbG90XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJzLWxlZnQtY29sXCIgKm5nSWY9XCIhaGFzV2hvbGVUb29sYmFyU2xvdFwiPlxyXG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbbGVmdFRvb2xiYXJCdG5TbG90XVwiPjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJzLXJpZ2h0LWNvbFwiICpuZ0lmPVwiIWhhc1dob2xlVG9vbGJhclNsb3RcIj5cclxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3JpZ2h0VG9vbGJhckJ0blNsb3RdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicnMtc2VhcmNoLWlucHV0XCIgKm5nSWY9XCIhaGlkZVNlYXJjaFwiPlxyXG4gICAgICAgIDxlanMtdGV4dGJveFxyXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJlLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIlxyXG4gICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoKVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbGwgZmllbGRzXCJcclxuICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgID48L2Vqcy10ZXh0Ym94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJycy1ncmlkLXdyYXBcIj5cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltncmlkU2xvdF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=