ngx-rs-ant 1.4.8 → 1.5.1

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 (63) hide show
  1. package/data-grid/data-grid.component.d.ts +27 -23
  2. package/data-grid/data-grid.factory.d.ts +1 -1
  3. package/data-grid/data-grid.module.d.ts +8 -8
  4. package/data-grid/data-grid.service.d.ts +2 -0
  5. package/data-grid/instance-link-template/instance-link-template.component.d.ts +21 -0
  6. package/data-grid/unit-info-template/unit-info-template.component.d.ts +2 -1
  7. package/data-grid/user-info-template/user-info-template.component.d.ts +2 -1
  8. package/esm2020/box-container/box-container.component.mjs +3 -3
  9. package/esm2020/box-container/box-item/box-item-host.directive.mjs +1 -1
  10. package/esm2020/box-container/box-item/box-item.component.mjs +3 -3
  11. package/esm2020/box-container/box-item/item-blank/item-blank.component.mjs +3 -3
  12. package/esm2020/box-container/box-item/item-config/config-blank/config-blank.component.mjs +3 -3
  13. package/esm2020/box-container/box-item/item-config/item-config.component.mjs +3 -3
  14. package/esm2020/box-container/box-item/item-style/item-style.component.mjs +3 -3
  15. package/esm2020/box-container/box-item/item-style/style/style.component.mjs +3 -3
  16. package/esm2020/box-container/box-item/item-style/style-blank/style-blank.component.mjs +3 -3
  17. package/esm2020/box-container/plugin-active/divider/divider-line/divider-line.component.mjs +1 -1
  18. package/esm2020/box-container/plugin-active/divider/divider.component.mjs +3 -3
  19. package/esm2020/box-container/plugin-hover/plugin-hover.component.mjs +3 -3
  20. package/esm2020/box-container/plugin-not-found/plugin-not-found.component.mjs +3 -3
  21. package/esm2020/camunda-bpmn-editor/camunda-bpmn-editor.component.mjs +3 -3
  22. package/esm2020/camunda-bpmn-editor/camunda-bpmn-editor.module.mjs +1 -1
  23. package/esm2020/code-editor/code-editor.component.mjs +3 -3
  24. package/esm2020/code-editor/code-editor.module.mjs +1 -1
  25. package/esm2020/data-detail/data-detail.component.mjs +7 -3
  26. package/esm2020/data-detail/data-detail.module.mjs +1 -1
  27. package/esm2020/data-detail/data-detail.service.mjs +1 -1
  28. package/esm2020/data-grid/data-grid.component.mjs +84 -39
  29. package/esm2020/data-grid/data-grid.factory.mjs +14 -18
  30. package/esm2020/data-grid/data-grid.module.mjs +15 -18
  31. package/esm2020/data-grid/data-grid.service.mjs +26 -1
  32. package/esm2020/data-grid/file-cell-template/file-cell-template.component.mjs +3 -7
  33. package/esm2020/data-grid/instance-link-template/instance-link-template.component.mjs +64 -0
  34. package/esm2020/data-grid/row-buttons-template.directive.mjs +1 -1
  35. package/esm2020/data-grid/unit-info-template/unit-info-template.component.mjs +12 -4
  36. package/esm2020/data-grid/user-info-template/user-info-template.component.mjs +12 -4
  37. package/esm2020/drawer/drawer.component.mjs +3 -3
  38. package/esm2020/drawer/drawer.module.mjs +1 -1
  39. package/esm2020/drawer/drawer.service.mjs +1 -1
  40. package/esm2020/dynamic-params/dynamic-params.component.mjs +3 -3
  41. package/esm2020/dynamic-params/dynamic-params.module.mjs +1 -1
  42. package/esm2020/dynamic-params/tooltip-content-template.directive.mjs +1 -1
  43. package/esm2020/form/form.component.mjs +4 -3
  44. package/esm2020/form/form.module.mjs +1 -1
  45. package/esm2020/form/form.service.mjs +1 -1
  46. package/esm2020/fullscreen/fullscreen.directive.mjs +1 -1
  47. package/esm2020/icon-selector/icon-selector.component.mjs +3 -3
  48. package/esm2020/icon-selector/icon-selector.module.mjs +1 -1
  49. package/esm2020/modal/modal.module.mjs +1 -1
  50. package/esm2020/modal/modal.service.mjs +1 -1
  51. package/esm2020/public-api.mjs +1 -3
  52. package/esm2020/websocket/websocket.module.mjs +1 -1
  53. package/esm2020/websocket/websocket.service.mjs +1 -1
  54. package/fesm2015/ngx-rs-ant.mjs +795 -686
  55. package/fesm2015/ngx-rs-ant.mjs.map +1 -1
  56. package/fesm2020/ngx-rs-ant.mjs +786 -679
  57. package/fesm2020/ngx-rs-ant.mjs.map +1 -1
  58. package/package.json +1 -1
  59. package/public-api.d.ts +0 -2
  60. package/data-grid/instance-link-template.directive.d.ts +0 -8
  61. package/data-grid/master-detail-template.directive.d.ts +0 -8
  62. package/esm2020/data-grid/instance-link-template.directive.mjs +0 -16
  63. package/esm2020/data-grid/master-detail-template.directive.mjs +0 -16
@@ -6,7 +6,7 @@ import { CommonModule, formatDate } from '@angular/common';
6
6
  import { Subject, ReplaySubject, Subscription, map, shareReplay, lastValueFrom, debounceTime, interval } from 'rxjs';
7
7
  import * as i2 from 'devextreme-angular/ui/number-box';
8
8
  import * as i2$1 from 'devextreme-angular/ui/draggable';
9
- import { DevExtremeModule, DxLoadPanelModule, DxDataGridComponent, DxValidationGroupComponent } from 'devextreme-angular';
9
+ import { DevExtremeModule, DxLoadPanelModule, DxValidationGroupComponent, DxDataGridComponent } from 'devextreme-angular';
10
10
  import BpmnModeler from 'camunda-bpmn-js/lib/camunda-platform/Modeler';
11
11
  import { is } from 'bpmn-js/lib/util/ModelUtil';
12
12
  import { TextAreaEntry, isTextAreaEntryEdited, SelectEntry, isSelectEntryEdited } from '@bpmn-io/properties-panel';
@@ -15,12 +15,12 @@ import * as i6$1 from 'devextreme-angular/ui/nested';
15
15
  import { DxoPositionModule } from 'devextreme-angular/ui/nested';
16
16
  import * as i4 from 'devextreme-angular/ui/button';
17
17
  import * as i1$1 from '@angular/common/http';
18
+ import { __awaiter } from 'tslib';
19
+ import notify from 'devextreme/ui/notify';
18
20
  import CustomStore from 'devextreme/data/custom_store';
19
21
  import * as i3 from 'devextreme-angular/core';
20
22
  import * as i5$1 from 'devextreme-angular/ui/data-grid';
21
23
  import * as i5 from 'devextreme-angular/ui/tooltip';
22
- import { __awaiter } from 'tslib';
23
- import notify from 'devextreme/ui/notify';
24
24
  import * as i2$2 from '@angular/platform-browser';
25
25
  import * as i3$1 from 'devextreme-angular/ui/accordion';
26
26
  import * as i7 from 'devextreme-angular/ui/validation-group';
@@ -91,10 +91,10 @@ class DividerComponent {
91
91
  }
92
92
  }
93
93
  DividerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
94
- DividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DividerComponent, selector: "rs-divider", inputs: { direction: "direction", targetElement: "targetElement" }, outputs: { dividerClick: "dividerClick" }, host: { listeners: { "click": "onClick()" }, properties: { "style": "this._style" } }, ngImport: i0, template: "<div class=\"divider-image\"></div>\r\n<rs-divider-line [targetElement]=\"targetElement\" [direction]=\"direction\"></rs-divider-line>\r\n", styles: [":host{position:absolute;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;width:24px;height:24px;background-color:#fff;border-radius:12px;cursor:pointer;pointer-events:all}:host .divider-image{width:12px;height:12px;background-size:contain;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACO0lEQVRIDa2Uy6tNURzHN7cwMUAmHncot0QeV5QiBgZKmWEgzDDx+ANu5soMcUkxIY+iEFIKEZnIyMC9GZAMrke6hXt9Pvus1VnntPbZ53B/9dnrt36P7zpr7bVPUTRtD+5j+Arv4QwshDpbTIG1o2CvGmq12CVmk/ADnsGnMHccgCpbRiLWjuA/BTXUUrM0VzNwD+aVkcbjIMNveJnEUrePyWuYgP1JYi6+WmqWO3FLrpqKMy3tHE8LtzemLc99ITfcEm1MXERNtYsxcGs520nQBV61JWcyHw253W25OFVzbDqPj1D1MheF6tWM24LvcAD6w7yqdwF5tYvT4K90y6m5zQ/wE37BC9Bmw2f4Ah6DNdamFo/vlEHP3pvwB87CLjgGNrrwEbgY/K2MQ8E/zHg0+NbaY68aaqmpdmlLeT4HBSPf8RXQloA3ylvzDTx/34OmsLWxz9Hdqtlivo/l4NXy1syB1C4ziSK547THXjXU6tk20uECnn1fz91dNJynJu5gUxf1PZV4nr6DdzABj2BK7Rpq/votcDX4GxinxNagovjDoOZLdBcPwvy/h/souMDaROlGiK1PYv/kbg5C19u6V4b43bZ4z1M/GF/uQKbzFjF3NpjJdRXaEQQuVFQr7AK3K/Idw36Jb2Ec+jtU3iHnIqs61GRTe4naeDKbbQbXhbqbzVC9N4OSEfAPbD7UmbfMa7uirjDmD+H464/HQM3oB2f9lVxd7l9vFoVv4ESuIRN7QkzxaZlc8RcdnI7tMHZBlAAAAABJRU5ErkJggg==)}:host:hover{background-color:var(--devui-brand, #5e7ce0)}\n"], dependencies: [{ kind: "component", type: DividerLineComponent, selector: "rs-divider-line", inputs: ["direction", "targetElement"] }] });
94
+ DividerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DividerComponent, selector: "rs-divider", inputs: { direction: "direction", targetElement: "targetElement" }, outputs: { dividerClick: "dividerClick" }, host: { listeners: { "click": "onClick()" }, properties: { "style": "this._style" } }, ngImport: i0, template: "<div class=\"divider-image\"></div>\n<rs-divider-line [targetElement]=\"targetElement\" [direction]=\"direction\"></rs-divider-line>\n", styles: [":host{position:absolute;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;width:24px;height:24px;background-color:#fff;border-radius:12px;cursor:pointer;pointer-events:all}:host .divider-image{width:12px;height:12px;background-size:contain;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACO0lEQVRIDa2Uy6tNURzHN7cwMUAmHncot0QeV5QiBgZKmWEgzDDx+ANu5soMcUkxIY+iEFIKEZnIyMC9GZAMrke6hXt9Pvus1VnntPbZ53B/9dnrt36P7zpr7bVPUTRtD+5j+Arv4QwshDpbTIG1o2CvGmq12CVmk/ADnsGnMHccgCpbRiLWjuA/BTXUUrM0VzNwD+aVkcbjIMNveJnEUrePyWuYgP1JYi6+WmqWO3FLrpqKMy3tHE8LtzemLc99ITfcEm1MXERNtYsxcGs520nQBV61JWcyHw253W25OFVzbDqPj1D1MheF6tWM24LvcAD6w7yqdwF5tYvT4K90y6m5zQ/wE37BC9Bmw2f4Ah6DNdamFo/vlEHP3pvwB87CLjgGNrrwEbgY/K2MQ8E/zHg0+NbaY68aaqmpdmlLeT4HBSPf8RXQloA3ylvzDTx/34OmsLWxz9Hdqtlivo/l4NXy1syB1C4ziSK547THXjXU6tk20uECnn1fz91dNJynJu5gUxf1PZV4nr6DdzABj2BK7Rpq/votcDX4GxinxNagovjDoOZLdBcPwvy/h/souMDaROlGiK1PYv/kbg5C19u6V4b43bZ4z1M/GF/uQKbzFjF3NpjJdRXaEQQuVFQr7AK3K/Idw36Jb2Ec+jtU3iHnIqs61GRTe4naeDKbbQbXhbqbzVC9N4OSEfAPbD7UmbfMa7uirjDmD+H464/HQM3oB2f9lVxd7l9vFoVv4ESuIRN7QkzxaZlc8RcdnI7tMHZBlAAAAABJRU5ErkJggg==)}:host:hover{background-color:var(--devui-brand, #5e7ce0)}\n"], dependencies: [{ kind: "component", type: DividerLineComponent, selector: "rs-divider-line", inputs: ["direction", "targetElement"] }] });
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DividerComponent, decorators: [{
96
96
  type: Component,
97
- args: [{ selector: 'rs-divider', template: "<div class=\"divider-image\"></div>\r\n<rs-divider-line [targetElement]=\"targetElement\" [direction]=\"direction\"></rs-divider-line>\r\n", styles: [":host{position:absolute;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;width:24px;height:24px;background-color:#fff;border-radius:12px;cursor:pointer;pointer-events:all}:host .divider-image{width:12px;height:12px;background-size:contain;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACO0lEQVRIDa2Uy6tNURzHN7cwMUAmHncot0QeV5QiBgZKmWEgzDDx+ANu5soMcUkxIY+iEFIKEZnIyMC9GZAMrke6hXt9Pvus1VnntPbZ53B/9dnrt36P7zpr7bVPUTRtD+5j+Arv4QwshDpbTIG1o2CvGmq12CVmk/ADnsGnMHccgCpbRiLWjuA/BTXUUrM0VzNwD+aVkcbjIMNveJnEUrePyWuYgP1JYi6+WmqWO3FLrpqKMy3tHE8LtzemLc99ITfcEm1MXERNtYsxcGs520nQBV61JWcyHw253W25OFVzbDqPj1D1MheF6tWM24LvcAD6w7yqdwF5tYvT4K90y6m5zQ/wE37BC9Bmw2f4Ah6DNdamFo/vlEHP3pvwB87CLjgGNrrwEbgY/K2MQ8E/zHg0+NbaY68aaqmpdmlLeT4HBSPf8RXQloA3ylvzDTx/34OmsLWxz9Hdqtlivo/l4NXy1syB1C4ziSK547THXjXU6tk20uECnn1fz91dNJynJu5gUxf1PZV4nr6DdzABj2BK7Rpq/votcDX4GxinxNagovjDoOZLdBcPwvy/h/souMDaROlGiK1PYv/kbg5C19u6V4b43bZ4z1M/GF/uQKbzFjF3NpjJdRXaEQQuVFQr7AK3K/Idw36Jb2Ec+jtU3iHnIqs61GRTe4naeDKbbQbXhbqbzVC9N4OSEfAPbD7UmbfMa7uirjDmD+H464/HQM3oB2f9lVxd7l9vFoVv4ESuIRN7QkzxaZlc8RcdnI7tMHZBlAAAAABJRU5ErkJggg==)}:host:hover{background-color:var(--devui-brand, #5e7ce0)}\n"] }]
97
+ args: [{ selector: 'rs-divider', template: "<div class=\"divider-image\"></div>\n<rs-divider-line [targetElement]=\"targetElement\" [direction]=\"direction\"></rs-divider-line>\n", styles: [":host{position:absolute;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center;width:24px;height:24px;background-color:#fff;border-radius:12px;cursor:pointer;pointer-events:all}:host .divider-image{width:12px;height:12px;background-size:contain;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAGKADAAQAAAABAAAAGAAAAADiNXWtAAACO0lEQVRIDa2Uy6tNURzHN7cwMUAmHncot0QeV5QiBgZKmWEgzDDx+ANu5soMcUkxIY+iEFIKEZnIyMC9GZAMrke6hXt9Pvus1VnntPbZ53B/9dnrt36P7zpr7bVPUTRtD+5j+Arv4QwshDpbTIG1o2CvGmq12CVmk/ADnsGnMHccgCpbRiLWjuA/BTXUUrM0VzNwD+aVkcbjIMNveJnEUrePyWuYgP1JYi6+WmqWO3FLrpqKMy3tHE8LtzemLc99ITfcEm1MXERNtYsxcGs520nQBV61JWcyHw253W25OFVzbDqPj1D1MheF6tWM24LvcAD6w7yqdwF5tYvT4K90y6m5zQ/wE37BC9Bmw2f4Ah6DNdamFo/vlEHP3pvwB87CLjgGNrrwEbgY/K2MQ8E/zHg0+NbaY68aaqmpdmlLeT4HBSPf8RXQloA3ylvzDTx/34OmsLWxz9Hdqtlivo/l4NXy1syB1C4ziSK547THXjXU6tk20uECnn1fz91dNJynJu5gUxf1PZV4nr6DdzABj2BK7Rpq/votcDX4GxinxNagovjDoOZLdBcPwvy/h/souMDaROlGiK1PYv/kbg5C19u6V4b43bZ4z1M/GF/uQKbzFjF3NpjJdRXaEQQuVFQr7AK3K/Idw36Jb2Ec+jtU3iHnIqs61GRTe4naeDKbbQbXhbqbzVC9N4OSEfAPbD7UmbfMa7uirjDmD+H464/HQM3oB2f9lVxd7l9vFoVv4ESuIRN7QkzxaZlc8RcdnI7tMHZBlAAAAABJRU5ErkJggg==)}:host:hover{background-color:var(--devui-brand, #5e7ce0)}\n"] }]
98
98
  }], propDecorators: { direction: [{
99
99
  type: Input
100
100
  }], targetElement: [{
@@ -173,10 +173,10 @@ class PluginHoverComponent {
173
173
  }
174
174
  }
175
175
  PluginHoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PluginHoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
176
- PluginHoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PluginHoverComponent, selector: "rs-plugin-hover", host: { properties: { "style": "this._style" } }, ngImport: i0, template: "<div class=\"hover-title\">{{name}}</div>\r\n", styles: [":host{display:none;position:absolute;border:1px dashed var(--coast-default-color, #337ab7);pointer-events:none}:host .hover-title{color:var(--coast-default-color, #337ab7);position:absolute;top:-18px;left:0}.plugin-active>:host{display:none!important}.plugin-hover>:host{display:block}\n"] });
176
+ PluginHoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PluginHoverComponent, selector: "rs-plugin-hover", host: { properties: { "style": "this._style" } }, ngImport: i0, template: "<div class=\"hover-title\">{{name}}</div>\n", styles: [":host{display:none;position:absolute;border:1px dashed var(--coast-default-color, #337ab7);pointer-events:none}:host .hover-title{color:var(--coast-default-color, #337ab7);position:absolute;top:-18px;left:0}.plugin-active>:host{display:none!important}.plugin-hover>:host{display:block}\n"] });
177
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PluginHoverComponent, decorators: [{
178
178
  type: Component,
179
- args: [{ selector: 'rs-plugin-hover', template: "<div class=\"hover-title\">{{name}}</div>\r\n", styles: [":host{display:none;position:absolute;border:1px dashed var(--coast-default-color, #337ab7);pointer-events:none}:host .hover-title{color:var(--coast-default-color, #337ab7);position:absolute;top:-18px;left:0}.plugin-active>:host{display:none!important}.plugin-hover>:host{display:block}\n"] }]
179
+ args: [{ selector: 'rs-plugin-hover', template: "<div class=\"hover-title\">{{name}}</div>\n", styles: [":host{display:none;position:absolute;border:1px dashed var(--coast-default-color, #337ab7);pointer-events:none}:host .hover-title{color:var(--coast-default-color, #337ab7);position:absolute;top:-18px;left:0}.plugin-active>:host{display:none!important}.plugin-hover>:host{display:block}\n"] }]
180
180
  }], propDecorators: { _style: [{
181
181
  type: HostBinding,
182
182
  args: ['style']
@@ -185,19 +185,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
185
185
  class PluginNotFoundComponent {
186
186
  }
187
187
  PluginNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PluginNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
188
- PluginNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PluginNotFoundComponent, selector: "rs-plugin-not-found", ngImport: i0, template: "<div>\r\n <span>\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25</span>\r\n</div>\r\n", styles: [":host{flex:1;margin:16px;border:1px solid var(--devui-dividing-line, #f2f2f3);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{color:var(--devui-danger, #f66f6a);text-align:center;-webkit-user-select:none;user-select:none}:host div.active{background-color:var(--devui-waiting, #beccfa)}:host.plugin-hover>div{pointer-events:none}\n"] });
188
+ PluginNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: PluginNotFoundComponent, selector: "rs-plugin-not-found", ngImport: i0, template: "<div>\n <span>\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25</span>\n</div>\n", styles: [":host{flex:1;margin:16px;border:1px solid var(--devui-dividing-line, #f2f2f3);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{color:var(--devui-danger, #f66f6a);text-align:center;-webkit-user-select:none;user-select:none}:host div.active{background-color:var(--devui-waiting, #beccfa)}:host.plugin-hover>div{pointer-events:none}\n"] });
189
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: PluginNotFoundComponent, decorators: [{
190
190
  type: Component,
191
- args: [{ selector: 'rs-plugin-not-found', template: "<div>\r\n <span>\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25</span>\r\n</div>\r\n", styles: [":host{flex:1;margin:16px;border:1px solid var(--devui-dividing-line, #f2f2f3);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{color:var(--devui-danger, #f66f6a);text-align:center;-webkit-user-select:none;user-select:none}:host div.active{background-color:var(--devui-waiting, #beccfa)}:host.plugin-hover>div{pointer-events:none}\n"] }]
191
+ args: [{ selector: 'rs-plugin-not-found', template: "<div>\n <span>\u7EC4\u4EF6\u52A0\u8F7D\u5931\u8D25</span>\n</div>\n", styles: [":host{flex:1;margin:16px;border:1px solid var(--devui-dividing-line, #f2f2f3);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{color:var(--devui-danger, #f66f6a);text-align:center;-webkit-user-select:none;user-select:none}:host div.active{background-color:var(--devui-waiting, #beccfa)}:host.plugin-hover>div{pointer-events:none}\n"] }]
192
192
  }] });
193
193
 
194
194
  class ConfigBlankComponent {
195
195
  }
196
196
  ConfigBlankComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ConfigBlankComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
197
- ConfigBlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ConfigBlankComponent, selector: "rs-config-blank", ngImport: i0, template: "<div>\r\n <span>\u65E0\u914D\u7F6E\u9879</span>\r\n</div>\r\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] });
197
+ ConfigBlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ConfigBlankComponent, selector: "rs-config-blank", ngImport: i0, template: "<div>\n <span>\u65E0\u914D\u7F6E\u9879</span>\n</div>\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] });
198
198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ConfigBlankComponent, decorators: [{
199
199
  type: Component,
200
- args: [{ selector: 'rs-config-blank', template: "<div>\r\n <span>\u65E0\u914D\u7F6E\u9879</span>\r\n</div>\r\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] }]
200
+ args: [{ selector: 'rs-config-blank', template: "<div>\n <span>\u65E0\u914D\u7F6E\u9879</span>\n</div>\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] }]
201
201
  }] });
202
202
 
203
203
  class StyleComponent {
@@ -238,19 +238,19 @@ class StyleComponent {
238
238
  }
239
239
  }
240
240
  StyleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: StyleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
241
- StyleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: StyleComponent, selector: "rs-style", ngImport: i0, template: "<div class=\"config-item\">\r\n <div class=\"item-title\">\u5BBD\u5EA6\u7C7B\u578B</div>\r\n <div class=\"item-setting\">\r\n <div class=\"card-style-radio\">\r\n <div class=\"radio-value\" [ngClass]=\"!style.width || style.width === 'auto' ? 'active' : ''\"\r\n (click)=\"select('width','auto')\">\r\n <span>\u81EA\u9002\u5E94</span>\r\n </div>\r\n <div class=\"radio-value\" [ngClass]=\"style.width && style.width !== 'auto' ? 'active' : ''\"\r\n (click)=\"select('width',240)\">\r\n <span>\u56FA\u5B9A\u503C</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"config-item\">\r\n <div class=\"item-title\">\u56FA\u5B9A\u5BBD\u5EA6</div>\r\n <div class=\"item-setting\">\r\n <dx-number-box [min]=\"0\"\r\n [showSpinButtons]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"width\"\r\n (onValueChanged)=\"typing('width', $event.value)\"\r\n [readOnly]=\"style.width === 'auto'\">\r\n </dx-number-box>\r\n </div>\r\n</div>\r\n<div class=\"config-item\">\r\n <div class=\"item-title\">\u9AD8\u5EA6\u7C7B\u578B</div>\r\n <div class=\"item-setting\">\r\n <div class=\"card-style-radio\">\r\n <div class=\"radio-value\" [ngClass]=\"!style.height || style.height === 'auto' ? 'active' : ''\"\r\n (click)=\"select('height','auto')\">\r\n <span>\u81EA\u9002\u5E94</span>\r\n </div>\r\n <div class=\"radio-value\" [ngClass]=\"style.height && style.height !== 'auto' ? 'active' : ''\"\r\n (click)=\"select('height',800)\">\r\n <span>\u56FA\u5B9A\u503C</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"config-item\">\r\n <div class=\"item-title\">\u56FA\u5B9A\u9AD8\u5EA6</div>\r\n <div class=\"item-setting\">\r\n <dx-number-box [min]=\"0\"\r\n [showSpinButtons]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"height\"\r\n (onValueChanged)=\"typing('height', $event.value)\"\r\n [readOnly]=\"style.height === 'auto'\">\r\n </dx-number-box>\r\n </div>\r\n</div>\r\n", styles: [":host .config-item{display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:8px}:host .config-item .item-title{flex:0 0 80px}:host .config-item .item-setting{flex:1;display:flex;flex-flow:row nowrap}:host .config-item .item-setting .card-style-radio{flex:1;display:flex;flex-flow:row nowrap;justify-content:stretch}:host .config-item .item-setting .card-style-radio .radio-value{flex:1;border:1px solid var(--devui-dividing-line, #f2f2f3);text-align:center;padding:4px;margin-left:-1px;cursor:pointer}:host .config-item .item-setting .card-style-radio .radio-value span{-webkit-user-select:none;user-select:none}:host .config-item .item-setting .card-style-radio .radio-value.active{color:var(--devui-brand, #5e7ce0);border:1px solid var(--devui-brand, #5e7ce0);z-index:1}:host .config-item .item-setting dx-number-box{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }] });
241
+ StyleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: StyleComponent, selector: "rs-style", ngImport: i0, template: "<div class=\"config-item\">\n <div class=\"item-title\">\u5BBD\u5EA6\u7C7B\u578B</div>\n <div class=\"item-setting\">\n <div class=\"card-style-radio\">\n <div class=\"radio-value\" [ngClass]=\"!style.width || style.width === 'auto' ? 'active' : ''\"\n (click)=\"select('width','auto')\">\n <span>\u81EA\u9002\u5E94</span>\n </div>\n <div class=\"radio-value\" [ngClass]=\"style.width && style.width !== 'auto' ? 'active' : ''\"\n (click)=\"select('width',240)\">\n <span>\u56FA\u5B9A\u503C</span>\n </div>\n </div>\n </div>\n</div>\n<div class=\"config-item\">\n <div class=\"item-title\">\u56FA\u5B9A\u5BBD\u5EA6</div>\n <div class=\"item-setting\">\n <dx-number-box [min]=\"0\"\n [showSpinButtons]=\"true\"\n [showClearButton]=\"true\"\n [(value)]=\"width\"\n (onValueChanged)=\"typing('width', $event.value)\"\n [readOnly]=\"style.width === 'auto'\">\n </dx-number-box>\n </div>\n</div>\n<div class=\"config-item\">\n <div class=\"item-title\">\u9AD8\u5EA6\u7C7B\u578B</div>\n <div class=\"item-setting\">\n <div class=\"card-style-radio\">\n <div class=\"radio-value\" [ngClass]=\"!style.height || style.height === 'auto' ? 'active' : ''\"\n (click)=\"select('height','auto')\">\n <span>\u81EA\u9002\u5E94</span>\n </div>\n <div class=\"radio-value\" [ngClass]=\"style.height && style.height !== 'auto' ? 'active' : ''\"\n (click)=\"select('height',800)\">\n <span>\u56FA\u5B9A\u503C</span>\n </div>\n </div>\n </div>\n</div>\n<div class=\"config-item\">\n <div class=\"item-title\">\u56FA\u5B9A\u9AD8\u5EA6</div>\n <div class=\"item-setting\">\n <dx-number-box [min]=\"0\"\n [showSpinButtons]=\"true\"\n [showClearButton]=\"true\"\n [(value)]=\"height\"\n (onValueChanged)=\"typing('height', $event.value)\"\n [readOnly]=\"style.height === 'auto'\">\n </dx-number-box>\n </div>\n</div>\n", styles: [":host .config-item{display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:8px}:host .config-item .item-title{flex:0 0 80px}:host .config-item .item-setting{flex:1;display:flex;flex-flow:row nowrap}:host .config-item .item-setting .card-style-radio{flex:1;display:flex;flex-flow:row nowrap;justify-content:stretch}:host .config-item .item-setting .card-style-radio .radio-value{flex:1;border:1px solid var(--devui-dividing-line, #f2f2f3);text-align:center;padding:4px;margin-left:-1px;cursor:pointer}:host .config-item .item-setting .card-style-radio .radio-value span{-webkit-user-select:none;user-select:none}:host .config-item .item-setting .card-style-radio .radio-value.active{color:var(--devui-brand, #5e7ce0);border:1px solid var(--devui-brand, #5e7ce0);z-index:1}:host .config-item .item-setting dx-number-box{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }] });
242
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: StyleComponent, decorators: [{
243
243
  type: Component,
244
- args: [{ selector: 'rs-style', template: "<div class=\"config-item\">\r\n <div class=\"item-title\">\u5BBD\u5EA6\u7C7B\u578B</div>\r\n <div class=\"item-setting\">\r\n <div class=\"card-style-radio\">\r\n <div class=\"radio-value\" [ngClass]=\"!style.width || style.width === 'auto' ? 'active' : ''\"\r\n (click)=\"select('width','auto')\">\r\n <span>\u81EA\u9002\u5E94</span>\r\n </div>\r\n <div class=\"radio-value\" [ngClass]=\"style.width && style.width !== 'auto' ? 'active' : ''\"\r\n (click)=\"select('width',240)\">\r\n <span>\u56FA\u5B9A\u503C</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"config-item\">\r\n <div class=\"item-title\">\u56FA\u5B9A\u5BBD\u5EA6</div>\r\n <div class=\"item-setting\">\r\n <dx-number-box [min]=\"0\"\r\n [showSpinButtons]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"width\"\r\n (onValueChanged)=\"typing('width', $event.value)\"\r\n [readOnly]=\"style.width === 'auto'\">\r\n </dx-number-box>\r\n </div>\r\n</div>\r\n<div class=\"config-item\">\r\n <div class=\"item-title\">\u9AD8\u5EA6\u7C7B\u578B</div>\r\n <div class=\"item-setting\">\r\n <div class=\"card-style-radio\">\r\n <div class=\"radio-value\" [ngClass]=\"!style.height || style.height === 'auto' ? 'active' : ''\"\r\n (click)=\"select('height','auto')\">\r\n <span>\u81EA\u9002\u5E94</span>\r\n </div>\r\n <div class=\"radio-value\" [ngClass]=\"style.height && style.height !== 'auto' ? 'active' : ''\"\r\n (click)=\"select('height',800)\">\r\n <span>\u56FA\u5B9A\u503C</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"config-item\">\r\n <div class=\"item-title\">\u56FA\u5B9A\u9AD8\u5EA6</div>\r\n <div class=\"item-setting\">\r\n <dx-number-box [min]=\"0\"\r\n [showSpinButtons]=\"true\"\r\n [showClearButton]=\"true\"\r\n [(value)]=\"height\"\r\n (onValueChanged)=\"typing('height', $event.value)\"\r\n [readOnly]=\"style.height === 'auto'\">\r\n </dx-number-box>\r\n </div>\r\n</div>\r\n", styles: [":host .config-item{display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:8px}:host .config-item .item-title{flex:0 0 80px}:host .config-item .item-setting{flex:1;display:flex;flex-flow:row nowrap}:host .config-item .item-setting .card-style-radio{flex:1;display:flex;flex-flow:row nowrap;justify-content:stretch}:host .config-item .item-setting .card-style-radio .radio-value{flex:1;border:1px solid var(--devui-dividing-line, #f2f2f3);text-align:center;padding:4px;margin-left:-1px;cursor:pointer}:host .config-item .item-setting .card-style-radio .radio-value span{-webkit-user-select:none;user-select:none}:host .config-item .item-setting .card-style-radio .radio-value.active{color:var(--devui-brand, #5e7ce0);border:1px solid var(--devui-brand, #5e7ce0);z-index:1}:host .config-item .item-setting dx-number-box{flex:1}\n"] }]
244
+ args: [{ selector: 'rs-style', template: "<div class=\"config-item\">\n <div class=\"item-title\">\u5BBD\u5EA6\u7C7B\u578B</div>\n <div class=\"item-setting\">\n <div class=\"card-style-radio\">\n <div class=\"radio-value\" [ngClass]=\"!style.width || style.width === 'auto' ? 'active' : ''\"\n (click)=\"select('width','auto')\">\n <span>\u81EA\u9002\u5E94</span>\n </div>\n <div class=\"radio-value\" [ngClass]=\"style.width && style.width !== 'auto' ? 'active' : ''\"\n (click)=\"select('width',240)\">\n <span>\u56FA\u5B9A\u503C</span>\n </div>\n </div>\n </div>\n</div>\n<div class=\"config-item\">\n <div class=\"item-title\">\u56FA\u5B9A\u5BBD\u5EA6</div>\n <div class=\"item-setting\">\n <dx-number-box [min]=\"0\"\n [showSpinButtons]=\"true\"\n [showClearButton]=\"true\"\n [(value)]=\"width\"\n (onValueChanged)=\"typing('width', $event.value)\"\n [readOnly]=\"style.width === 'auto'\">\n </dx-number-box>\n </div>\n</div>\n<div class=\"config-item\">\n <div class=\"item-title\">\u9AD8\u5EA6\u7C7B\u578B</div>\n <div class=\"item-setting\">\n <div class=\"card-style-radio\">\n <div class=\"radio-value\" [ngClass]=\"!style.height || style.height === 'auto' ? 'active' : ''\"\n (click)=\"select('height','auto')\">\n <span>\u81EA\u9002\u5E94</span>\n </div>\n <div class=\"radio-value\" [ngClass]=\"style.height && style.height !== 'auto' ? 'active' : ''\"\n (click)=\"select('height',800)\">\n <span>\u56FA\u5B9A\u503C</span>\n </div>\n </div>\n </div>\n</div>\n<div class=\"config-item\">\n <div class=\"item-title\">\u56FA\u5B9A\u9AD8\u5EA6</div>\n <div class=\"item-setting\">\n <dx-number-box [min]=\"0\"\n [showSpinButtons]=\"true\"\n [showClearButton]=\"true\"\n [(value)]=\"height\"\n (onValueChanged)=\"typing('height', $event.value)\"\n [readOnly]=\"style.height === 'auto'\">\n </dx-number-box>\n </div>\n</div>\n", styles: [":host .config-item{display:flex;flex-flow:row nowrap;align-items:center;margin-bottom:8px}:host .config-item .item-title{flex:0 0 80px}:host .config-item .item-setting{flex:1;display:flex;flex-flow:row nowrap}:host .config-item .item-setting .card-style-radio{flex:1;display:flex;flex-flow:row nowrap;justify-content:stretch}:host .config-item .item-setting .card-style-radio .radio-value{flex:1;border:1px solid var(--devui-dividing-line, #f2f2f3);text-align:center;padding:4px;margin-left:-1px;cursor:pointer}:host .config-item .item-setting .card-style-radio .radio-value span{-webkit-user-select:none;user-select:none}:host .config-item .item-setting .card-style-radio .radio-value.active{color:var(--devui-brand, #5e7ce0);border:1px solid var(--devui-brand, #5e7ce0);z-index:1}:host .config-item .item-setting dx-number-box{flex:1}\n"] }]
245
245
  }] });
246
246
 
247
247
  class StyleBlankComponent {
248
248
  }
249
249
  StyleBlankComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: StyleBlankComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
250
- StyleBlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: StyleBlankComponent, selector: "rs-style-blank", ngImport: i0, template: "<div>\r\n <span>\u8BF7\u5728\u5DE6\u4FA7\u753B\u5E03\u9009\u4E2D\u8282\u70B9</span>\r\n</div>\r\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] });
250
+ StyleBlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: StyleBlankComponent, selector: "rs-style-blank", ngImport: i0, template: "<div>\n <span>\u8BF7\u5728\u5DE6\u4FA7\u753B\u5E03\u9009\u4E2D\u8282\u70B9</span>\n</div>\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] });
251
251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: StyleBlankComponent, decorators: [{
252
252
  type: Component,
253
- args: [{ selector: 'rs-style-blank', template: "<div>\r\n <span>\u8BF7\u5728\u5DE6\u4FA7\u753B\u5E03\u9009\u4E2D\u8282\u70B9</span>\r\n</div>\r\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] }]
253
+ args: [{ selector: 'rs-style-blank', template: "<div>\n <span>\u8BF7\u5728\u5DE6\u4FA7\u753B\u5E03\u9009\u4E2D\u8282\u70B9</span>\n</div>\n", styles: [":host{height:80px;margin:8px;display:flex;flex-flow:row nowrap;justify-content:center}:host div{flex:1;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}\n"] }]
254
254
  }] });
255
255
 
256
256
  class PluginManager {
@@ -426,10 +426,10 @@ class ItemConfigComponent {
426
426
  }
427
427
  }
428
428
  ItemConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ItemConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
429
- ItemConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ItemConfigComponent, selector: "rs-item-config", viewQueries: [{ propertyName: "itemConfigContainerRef", first: true, predicate: ["itemConfigContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #itemConfigContainerRef></ng-container>\r\n", styles: [""] });
429
+ ItemConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ItemConfigComponent, selector: "rs-item-config", viewQueries: [{ propertyName: "itemConfigContainerRef", first: true, predicate: ["itemConfigContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #itemConfigContainerRef></ng-container>\n", styles: [""] });
430
430
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ItemConfigComponent, decorators: [{
431
431
  type: Component,
432
- args: [{ selector: 'rs-item-config', template: "<ng-container #itemConfigContainerRef></ng-container>\r\n" }]
432
+ args: [{ selector: 'rs-item-config', template: "<ng-container #itemConfigContainerRef></ng-container>\n" }]
433
433
  }], propDecorators: { itemConfigContainerRef: [{
434
434
  type: ViewChild,
435
435
  args: ['itemConfigContainerRef', {
@@ -446,10 +446,10 @@ class ItemStyleComponent {
446
446
  }
447
447
  }
448
448
  ItemStyleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ItemStyleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
449
- ItemStyleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ItemStyleComponent, selector: "rs-item-style", viewQueries: [{ propertyName: "itemStyleContainerRef", first: true, predicate: ["itemStyleContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #itemStyleContainerRef></ng-container>\r\n", styles: [""] });
449
+ ItemStyleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ItemStyleComponent, selector: "rs-item-style", viewQueries: [{ propertyName: "itemStyleContainerRef", first: true, predicate: ["itemStyleContainerRef"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #itemStyleContainerRef></ng-container>\n", styles: [""] });
450
450
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ItemStyleComponent, decorators: [{
451
451
  type: Component,
452
- args: [{ selector: 'rs-item-style', template: "<ng-container #itemStyleContainerRef></ng-container>\r\n" }]
452
+ args: [{ selector: 'rs-item-style', template: "<ng-container #itemStyleContainerRef></ng-container>\n" }]
453
453
  }], propDecorators: { itemStyleContainerRef: [{
454
454
  type: ViewChild,
455
455
  args: ['itemStyleContainerRef', { static: true, read: ViewContainerRef }]
@@ -476,10 +476,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
476
476
  class ItemBlankComponent {
477
477
  }
478
478
  ItemBlankComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ItemBlankComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
479
- ItemBlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ItemBlankComponent, selector: "rs-item-blank", ngImport: i0, template: "<div>\r\n <span>\u62D6\u62FD\u7EC4\u4EF6\u5230\u6B64\u5904</span>\r\n</div>\r\n", styles: [":host{flex:1;margin:8px;border:1px solid var(--coast-border-color, #dddddd);background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AQMAAAAAMksxAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRF8fHxAAAAMCd7XAAAAAJ0Uk5T/wDltzBKAAABJUlEQVR4nFVSy23EIBCdAiKxBaxCC1tBaGk7YG/OjZYSOQptLKKB8Y0D8ssbjBPl9gQz7wfigQbgQxygEXjIAjwDcJEV+PbYb1KAlNDusgE+Q1Va3EPFptJDjwVVZfcNiqwCV9BiIlhW9DdPkEn5GggKRV4igVL2AYJGpc8TFAMa5lXhzHuc69dwEO6DkBI9OhNVii60ERu3VxrjRUVRet7DsMoUbpgny+LRb5b0K2C/CAWejCxCSYVl9wcQSaMEzuRRArcqebzxcMCnUcKQsBKiiVoJoR1+4DfWSodILCGa5zXTvKWo5L5ars0C/iuh003F7GecbG62YVujunzypDqZTcsK76HF2UYP41HM4WoO7eEWNLUUyaHf/3L9JvXnBwjzS/wAoXR0PDbjCSUAAAAASUVORK5CYII=) repeat var(--coast-global-bg-color, #f6f6f8);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}:host.plugin-hover>div{pointer-events:none}.active>:host div{background-color:var(--coast-empty-color, #d4d4d4)}\n"] });
479
+ ItemBlankComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: ItemBlankComponent, selector: "rs-item-blank", ngImport: i0, template: "<div>\n <span>\u62D6\u62FD\u7EC4\u4EF6\u5230\u6B64\u5904</span>\n</div>\n", styles: [":host{flex:1;margin:8px;border:1px solid var(--coast-border-color, #dddddd);background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AQMAAAAAMksxAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRF8fHxAAAAMCd7XAAAAAJ0Uk5T/wDltzBKAAABJUlEQVR4nFVSy23EIBCdAiKxBaxCC1tBaGk7YG/OjZYSOQptLKKB8Y0D8ssbjBPl9gQz7wfigQbgQxygEXjIAjwDcJEV+PbYb1KAlNDusgE+Q1Va3EPFptJDjwVVZfcNiqwCV9BiIlhW9DdPkEn5GggKRV4igVL2AYJGpc8TFAMa5lXhzHuc69dwEO6DkBI9OhNVii60ERu3VxrjRUVRet7DsMoUbpgny+LRb5b0K2C/CAWejCxCSYVl9wcQSaMEzuRRArcqebzxcMCnUcKQsBKiiVoJoR1+4DfWSodILCGa5zXTvKWo5L5ars0C/iuh003F7GecbG62YVujunzypDqZTcsK76HF2UYP41HM4WoO7eEWNLUUyaHf/3L9JvXnBwjzS/wAoXR0PDbjCSUAAAAASUVORK5CYII=) repeat var(--coast-global-bg-color, #f6f6f8);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}:host.plugin-hover>div{pointer-events:none}.active>:host div{background-color:var(--coast-empty-color, #d4d4d4)}\n"] });
480
480
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ItemBlankComponent, decorators: [{
481
481
  type: Component,
482
- args: [{ selector: 'rs-item-blank', template: "<div>\r\n <span>\u62D6\u62FD\u7EC4\u4EF6\u5230\u6B64\u5904</span>\r\n</div>\r\n", styles: [":host{flex:1;margin:8px;border:1px solid var(--coast-border-color, #dddddd);background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AQMAAAAAMksxAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRF8fHxAAAAMCd7XAAAAAJ0Uk5T/wDltzBKAAABJUlEQVR4nFVSy23EIBCdAiKxBaxCC1tBaGk7YG/OjZYSOQptLKKB8Y0D8ssbjBPl9gQz7wfigQbgQxygEXjIAjwDcJEV+PbYb1KAlNDusgE+Q1Va3EPFptJDjwVVZfcNiqwCV9BiIlhW9DdPkEn5GggKRV4igVL2AYJGpc8TFAMa5lXhzHuc69dwEO6DkBI9OhNVii60ERu3VxrjRUVRet7DsMoUbpgny+LRb5b0K2C/CAWejCxCSYVl9wcQSaMEzuRRArcqebzxcMCnUcKQsBKiiVoJoR1+4DfWSodILCGa5zXTvKWo5L5ars0C/iuh003F7GecbG62YVujunzypDqZTcsK76HF2UYP41HM4WoO7eEWNLUUyaHf/3L9JvXnBwjzS/wAoXR0PDbjCSUAAAAASUVORK5CYII=) repeat var(--coast-global-bg-color, #f6f6f8);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}:host.plugin-hover>div{pointer-events:none}.active>:host div{background-color:var(--coast-empty-color, #d4d4d4)}\n"] }]
482
+ args: [{ selector: 'rs-item-blank', template: "<div>\n <span>\u62D6\u62FD\u7EC4\u4EF6\u5230\u6B64\u5904</span>\n</div>\n", styles: [":host{flex:1;margin:8px;border:1px solid var(--coast-border-color, #dddddd);background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AQMAAAAAMksxAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAZQTFRF8fHxAAAAMCd7XAAAAAJ0Uk5T/wDltzBKAAABJUlEQVR4nFVSy23EIBCdAiKxBaxCC1tBaGk7YG/OjZYSOQptLKKB8Y0D8ssbjBPl9gQz7wfigQbgQxygEXjIAjwDcJEV+PbYb1KAlNDusgE+Q1Va3EPFptJDjwVVZfcNiqwCV9BiIlhW9DdPkEn5GggKRV4igVL2AYJGpc8TFAMa5lXhzHuc69dwEO6DkBI9OhNVii60ERu3VxrjRUVRet7DsMoUbpgny+LRb5b0K2C/CAWejCxCSYVl9wcQSaMEzuRRArcqebzxcMCnUcKQsBKiiVoJoR1+4DfWSodILCGa5zXTvKWo5L5ars0C/iuh003F7GecbG62YVujunzypDqZTcsK76HF2UYP41HM4WoO7eEWNLUUyaHf/3L9JvXnBwjzS/wAoXR0PDbjCSUAAAAASUVORK5CYII=) repeat var(--coast-global-bg-color, #f6f6f8);display:flex;flex-flow:row nowrap;justify-content:center;pointer-events:all}:host div{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div span{text-align:center;-webkit-user-select:none;user-select:none}:host.plugin-hover>div{pointer-events:none}.active>:host div{background-color:var(--coast-empty-color, #d4d4d4)}\n"] }]
483
483
  }] });
484
484
 
485
485
  class BoxItemComponent {
@@ -662,10 +662,10 @@ class BoxItemComponent {
662
662
  }
663
663
  }
664
664
  BoxItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BoxItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
665
- BoxItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BoxItemComponent, selector: "rs-box-item", outputs: { leaveOneItem: "leaveOneItem" }, host: { properties: { "style.flex-direction": "this._direction", "style": "this._style" } }, viewQueries: [{ propertyName: "itemHosts", predicate: BoxItemHostDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngFor=\"let item of config.list; index as index\">\r\n <ng-container *ngIf=\"boxContainer.editMode\">\r\n <ng-container *ngIf=\"item.type === 'plugin'\">\r\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\r\n [data]=\"{boxItem: this, item, index}\"\r\n handle=\".icon-drag\"\r\n group=\"rsBoxContainerDragGroup\"\r\n (onDragMove)=\"onDragMove($event)\"\r\n (onDragEnd)=\"onDragEnd($event)\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </dx-draggable>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.type === 'item'\">\r\n <div [ngStyle]=\"calcStyle(item)\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.type === 'blank'\">\r\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\r\n [data]=\"{boxItem: this, item, index}\"\r\n group=\"rsBoxContainerDragGroup\"\r\n (onDragStart)=\"$event.cancel = true\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </dx-draggable>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!boxContainer.editMode\">\r\n <div [ngStyle]=\"calcStyle(item)\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{flex:1;display:flex;flex-flow:row nowrap;pointer-events:all}:host dx-draggable,:host div{display:flex;flex-flow:row nowrap}:host dx-draggable.active,:host div.active{background-color:var(--coast-empty-color, #d4d4d4)}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$1.DxDraggableComponent, selector: "dx-draggable", inputs: ["autoScroll", "boundary", "clone", "container", "cursorOffset", "data", "dragDirection", "dragTemplate", "elementAttr", "group", "handle", "height", "rtlEnabled", "scrollSensitivity", "scrollSpeed", "width"], outputs: ["onDisposing", "onDragEnd", "onDragMove", "onDragStart", "onInitialized", "onOptionChanged", "autoScrollChange", "boundaryChange", "cloneChange", "containerChange", "cursorOffsetChange", "dataChange", "dragDirectionChange", "dragTemplateChange", "elementAttrChange", "groupChange", "handleChange", "heightChange", "rtlEnabledChange", "scrollSensitivityChange", "scrollSpeedChange", "widthChange"] }, { kind: "directive", type: BoxItemHostDirective, selector: "[rsBoxItemHost]", inputs: ["hostId"] }] });
665
+ BoxItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BoxItemComponent, selector: "rs-box-item", outputs: { leaveOneItem: "leaveOneItem" }, host: { properties: { "style.flex-direction": "this._direction", "style": "this._style" } }, viewQueries: [{ propertyName: "itemHosts", predicate: BoxItemHostDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngFor=\"let item of config.list; index as index\">\n <ng-container *ngIf=\"boxContainer.editMode\">\n <ng-container *ngIf=\"item.type === 'plugin'\">\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\n [data]=\"{boxItem: this, item, index}\"\n handle=\".icon-drag\"\n group=\"rsBoxContainerDragGroup\"\n (onDragMove)=\"onDragMove($event)\"\n (onDragEnd)=\"onDragEnd($event)\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </dx-draggable>\n </ng-container>\n <ng-container *ngIf=\"item.type === 'item'\">\n <div [ngStyle]=\"calcStyle(item)\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"item.type === 'blank'\">\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\n [data]=\"{boxItem: this, item, index}\"\n group=\"rsBoxContainerDragGroup\"\n (onDragStart)=\"$event.cancel = true\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </dx-draggable>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!boxContainer.editMode\">\n <div [ngStyle]=\"calcStyle(item)\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{flex:1;display:flex;flex-flow:row nowrap;pointer-events:all}:host dx-draggable,:host div{display:flex;flex-flow:row nowrap}:host dx-draggable.active,:host div.active{background-color:var(--coast-empty-color, #d4d4d4)}\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: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$1.DxDraggableComponent, selector: "dx-draggable", inputs: ["autoScroll", "boundary", "clone", "container", "cursorOffset", "data", "dragDirection", "dragTemplate", "elementAttr", "group", "handle", "height", "rtlEnabled", "scrollSensitivity", "scrollSpeed", "width"], outputs: ["onDisposing", "onDragEnd", "onDragMove", "onDragStart", "onInitialized", "onOptionChanged", "autoScrollChange", "boundaryChange", "cloneChange", "containerChange", "cursorOffsetChange", "dataChange", "dragDirectionChange", "dragTemplateChange", "elementAttrChange", "groupChange", "handleChange", "heightChange", "rtlEnabledChange", "scrollSensitivityChange", "scrollSpeedChange", "widthChange"] }, { kind: "directive", type: BoxItemHostDirective, selector: "[rsBoxItemHost]", inputs: ["hostId"] }] });
666
666
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BoxItemComponent, decorators: [{
667
667
  type: Component,
668
- args: [{ selector: 'rs-box-item', template: "<ng-container *ngFor=\"let item of config.list; index as index\">\r\n <ng-container *ngIf=\"boxContainer.editMode\">\r\n <ng-container *ngIf=\"item.type === 'plugin'\">\r\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\r\n [data]=\"{boxItem: this, item, index}\"\r\n handle=\".icon-drag\"\r\n group=\"rsBoxContainerDragGroup\"\r\n (onDragMove)=\"onDragMove($event)\"\r\n (onDragEnd)=\"onDragEnd($event)\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </dx-draggable>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.type === 'item'\">\r\n <div [ngStyle]=\"calcStyle(item)\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.type === 'blank'\">\r\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\r\n [data]=\"{boxItem: this, item, index}\"\r\n group=\"rsBoxContainerDragGroup\"\r\n (onDragStart)=\"$event.cancel = true\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </dx-draggable>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!boxContainer.editMode\">\r\n <div [ngStyle]=\"calcStyle(item)\">\r\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n", styles: [":host{flex:1;display:flex;flex-flow:row nowrap;pointer-events:all}:host dx-draggable,:host div{display:flex;flex-flow:row nowrap}:host dx-draggable.active,:host div.active{background-color:var(--coast-empty-color, #d4d4d4)}\n"] }]
668
+ args: [{ selector: 'rs-box-item', template: "<ng-container *ngFor=\"let item of config.list; index as index\">\n <ng-container *ngIf=\"boxContainer.editMode\">\n <ng-container *ngIf=\"item.type === 'plugin'\">\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\n [data]=\"{boxItem: this, item, index}\"\n handle=\".icon-drag\"\n group=\"rsBoxContainerDragGroup\"\n (onDragMove)=\"onDragMove($event)\"\n (onDragEnd)=\"onDragEnd($event)\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </dx-draggable>\n </ng-container>\n <ng-container *ngIf=\"item.type === 'item'\">\n <div [ngStyle]=\"calcStyle(item)\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </div>\n </ng-container>\n <ng-container *ngIf=\"item.type === 'blank'\">\n <dx-draggable [ngStyle]=\"calcStyle(item)\"\n [data]=\"{boxItem: this, item, index}\"\n group=\"rsBoxContainerDragGroup\"\n (onDragStart)=\"$event.cancel = true\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </dx-draggable>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!boxContainer.editMode\">\n <div [ngStyle]=\"calcStyle(item)\">\n <ng-template rsBoxItemHost [hostId]=\"index\"></ng-template>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{flex:1;display:flex;flex-flow:row nowrap;pointer-events:all}:host dx-draggable,:host div{display:flex;flex-flow:row nowrap}:host dx-draggable.active,:host div.active{background-color:var(--coast-empty-color, #d4d4d4)}\n"] }]
669
669
  }], propDecorators: { _direction: [{
670
670
  type: HostBinding,
671
671
  args: ['style.flex-direction']
@@ -785,10 +785,10 @@ class BoxContainerComponent {
785
785
  }
786
786
  }
787
787
  BoxContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BoxContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
788
- BoxContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BoxContainerComponent, selector: "rs-box-container", inputs: { config: "config", model: "model", opener: "opener", params: "params", readonly: "readonly", tabViewContainerRef: "tabViewContainerRef" }, viewQueries: [{ propertyName: "boxContainerContent", first: true, predicate: ["boxContainerContent"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #boxContainerContent></ng-container>\r\n", styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap}\n"] });
788
+ BoxContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BoxContainerComponent, selector: "rs-box-container", inputs: { config: "config", model: "model", opener: "opener", params: "params", readonly: "readonly", tabViewContainerRef: "tabViewContainerRef" }, viewQueries: [{ propertyName: "boxContainerContent", first: true, predicate: ["boxContainerContent"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container #boxContainerContent></ng-container>\n", styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap}\n"] });
789
789
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BoxContainerComponent, decorators: [{
790
790
  type: Component,
791
- args: [{ selector: 'rs-box-container', template: "<ng-container #boxContainerContent></ng-container>\r\n", styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap}\n"] }]
791
+ args: [{ selector: 'rs-box-container', template: "<ng-container #boxContainerContent></ng-container>\n", styles: [":host{flex:1;position:relative;display:flex;flex-flow:row nowrap}\n"] }]
792
792
  }], propDecorators: { config: [{
793
793
  type: Input
794
794
  }], model: [{
@@ -1676,10 +1676,10 @@ class CodeEditorComponent {
1676
1676
  }
1677
1677
  }
1678
1678
  CodeEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CodeEditorComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
1679
- CodeEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CodeEditorComponent, selector: "rs-code-editor", inputs: { code: "code", language: "language", readonly: "readonly", enableMinimap: "enableMinimap", consoleMessage: "consoleMessage" }, outputs: { codeChange: "codeChange", onContentReady: "onContentReady" }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, static: true }], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<div class=\"editor-container\" #editorContainer></div>\r\n<div *ngIf=\"consoleMessage\" class=\"editor-console\">{{consoleMessage}}</div>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host .editor-container{flex:1}:host .editor-console{flex:0 0 30px;padding:4px;border:1px solid var(--coast-border-color, #dddddd);background-color:var(--coast-empty-color, #d4d4d4)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }] });
1679
+ CodeEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CodeEditorComponent, selector: "rs-code-editor", inputs: { code: "code", language: "language", readonly: "readonly", enableMinimap: "enableMinimap", consoleMessage: "consoleMessage" }, outputs: { codeChange: "codeChange", onContentReady: "onContentReady" }, viewQueries: [{ propertyName: "editorContainer", first: true, predicate: ["editorContainer"], descendants: true, static: true }], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\n [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<div class=\"editor-container\" #editorContainer></div>\n<div *ngIf=\"consoleMessage\" class=\"editor-console\">{{consoleMessage}}</div>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host .editor-container{flex:1}:host .editor-console{flex:0 0 30px;padding:4px;border:1px solid var(--coast-border-color, #dddddd);background-color:var(--coast-empty-color, #d4d4d4)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }] });
1680
1680
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CodeEditorComponent, decorators: [{
1681
1681
  type: Component,
1682
- args: [{ selector: 'rs-code-editor', template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<div class=\"editor-container\" #editorContainer></div>\r\n<div *ngIf=\"consoleMessage\" class=\"editor-console\">{{consoleMessage}}</div>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host .editor-container{flex:1}:host .editor-console{flex:0 0 30px;padding:4px;border:1px solid var(--coast-border-color, #dddddd);background-color:var(--coast-empty-color, #d4d4d4)}\n"] }]
1682
+ args: [{ selector: 'rs-code-editor', template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\n [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<div class=\"editor-container\" #editorContainer></div>\n<div *ngIf=\"consoleMessage\" class=\"editor-console\">{{consoleMessage}}</div>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host .editor-container{flex:1}:host .editor-console{flex:0 0 30px;padding:4px;border:1px solid var(--coast-border-color, #dddddd);background-color:var(--coast-empty-color, #d4d4d4)}\n"] }]
1683
1683
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { code: [{
1684
1684
  type: Input
1685
1685
  }], codeChange: [{
@@ -1758,10 +1758,10 @@ class CamundaBpmnEditorComponent {
1758
1758
  }
1759
1759
  }
1760
1760
  CamundaBpmnEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CamundaBpmnEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1761
- CamundaBpmnEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CamundaBpmnEditorComponent, selector: "rs-camunda-bpmn-editor", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "config", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\r\n <div class=\"container\" #container></div>\r\n <div class=\"config\" #config></div>\r\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\r\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\r\n (onClick)=\"showXml()\"></dx-button>\r\n</div>\r\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CodeEditorComponent, selector: "rs-code-editor", inputs: ["code", "language", "readonly", "enableMinimap", "consoleMessage"], outputs: ["codeChange", "onContentReady"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
1761
+ CamundaBpmnEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: CamundaBpmnEditorComponent, selector: "rs-camunda-bpmn-editor", viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "config", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"main\">\n <div class=\"container\" #container></div>\n <div class=\"config\" #config></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CodeEditorComponent, selector: "rs-code-editor", inputs: ["code", "language", "readonly", "enableMinimap", "consoleMessage"], outputs: ["codeChange", "onContentReady"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
1762
1762
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CamundaBpmnEditorComponent, decorators: [{
1763
1763
  type: Component,
1764
- args: [{ selector: 'rs-camunda-bpmn-editor', template: "<div class=\"main\">\r\n <div class=\"container\" #container></div>\r\n <div class=\"config\" #config></div>\r\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\r\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\r\n </div>\r\n</div>\r\n<div class=\"footer\">\r\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\r\n (onClick)=\"showXml()\"></dx-button>\r\n</div>\r\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"] }]
1764
+ args: [{ selector: 'rs-camunda-bpmn-editor', template: "<div class=\"main\">\n <div class=\"container\" #container></div>\n <div class=\"config\" #config></div>\n <div class=\"xml-viewer\" [ngStyle]=\"{display: isShowXml ? 'flex' : 'none'}\">\n <rs-code-editor language=\"xml\" [code]=\"xml\" [readonly]=\"true\" [enableMinimap]=\"true\"></rs-code-editor>\n </div>\n</div>\n<div class=\"footer\">\n <dx-button [type]=\"isShowXml ? 'default' : 'normal'\" text=\"XML\" [hoverStateEnabled]=\"false\"\n (onClick)=\"showXml()\"></dx-button>\n</div>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .main{flex:1;display:flex;flex-flow:row nowrap;position:relative}:host .main .container{flex:1}:host .main .config{flex:0 0 360px;border:1px solid var(--coast-border-color, #dddddd)}:host .main .xml-viewer{position:absolute;width:100%;height:100%;display:flex;flex-flow:column nowrap;z-index:var(--coast-z-index-drawer, 1040)}:host .main .xml-viewer rs-code-editor{flex:1}:host .footer{flex:0 0 24px;border:1px solid var(--coast-border-color, #dddddd)}\n"] }]
1765
1765
  }], propDecorators: { container: [{
1766
1766
  type: ViewChild,
1767
1767
  args: ['container']
@@ -1846,6 +1846,22 @@ class DataGridService {
1846
1846
  }
1847
1847
  });
1848
1848
  }
1849
+ getOneByFilter(tenant, className, key, value, view) {
1850
+ let api = 'api/data/' + className;
1851
+ return this.http.get(api, {
1852
+ params: {
1853
+ tenant,
1854
+ view: view || '',
1855
+ filter: '["' + key + '","=","' + value + '"]',
1856
+ limit: 1
1857
+ }
1858
+ }).pipe(map(response => {
1859
+ if (response.data.count === 1) {
1860
+ return response.data.list[0];
1861
+ }
1862
+ return {};
1863
+ }));
1864
+ }
1849
1865
  getMany(tenant, className, params) {
1850
1866
  const api = 'api/data/' + className;
1851
1867
  return this.http.get(api + params, {
@@ -1949,6 +1965,15 @@ class DataGridService {
1949
1965
  responseType: "blob"
1950
1966
  });
1951
1967
  }
1968
+ getInstanceCaption(tenant, className, oid) {
1969
+ return this.http.get('api/data/' + className + '/' + oid + '/caption', {
1970
+ params: {
1971
+ tenant
1972
+ }
1973
+ }).pipe(map(response => {
1974
+ return response.data;
1975
+ }));
1976
+ }
1952
1977
  getUserInfo(uid) {
1953
1978
  if (!this.userInfoCache.hasOwnProperty(uid)) {
1954
1979
  this.userInfoCache[uid] = this.http.get('api/data/custom', {
@@ -1982,20 +2007,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
1982
2007
  type: Injectable
1983
2008
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
1984
2009
 
1985
- class MasterDetailTemplateDirective {
1986
- constructor(templateRef) {
1987
- this.templateRef = templateRef;
1988
- }
1989
- }
1990
- MasterDetailTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MasterDetailTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1991
- MasterDetailTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: MasterDetailTemplateDirective, selector: "[rsMasterDetailTemplate]", ngImport: i0 });
1992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: MasterDetailTemplateDirective, decorators: [{
1993
- type: Directive,
1994
- args: [{
1995
- selector: '[rsMasterDetailTemplate]'
1996
- }]
1997
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
1998
-
1999
2010
  class RowButtonsTemplateDirective {
2000
2011
  constructor(templateRef) {
2001
2012
  this.templateRef = templateRef;
@@ -2010,19 +2021,178 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2010
2021
  }]
2011
2022
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2012
2023
 
2013
- class InstanceLinkTemplateDirective {
2014
- constructor(templateRef) {
2015
- this.templateRef = templateRef;
2024
+ function notify_error(message) {
2025
+ notify({
2026
+ displayTime: 12000,
2027
+ message,
2028
+ type: 'error',
2029
+ width: '300px'
2030
+ }, {
2031
+ direction: 'up-push',
2032
+ position: 'bottom right'
2033
+ });
2034
+ }
2035
+ function notify_warning(message) {
2036
+ notify({
2037
+ displayTime: 8000,
2038
+ message,
2039
+ type: 'warning',
2040
+ width: '300px'
2041
+ }, {
2042
+ direction: 'up-push',
2043
+ position: 'bottom right'
2044
+ });
2045
+ }
2046
+ function notify_success(message) {
2047
+ notify({
2048
+ displayTime: 4000,
2049
+ message,
2050
+ type: 'success',
2051
+ width: '300px'
2052
+ }, {
2053
+ direction: 'down-push',
2054
+ position: 'top right'
2055
+ });
2056
+ }
2057
+ function format_date(date, locale) {
2058
+ return formatDate(date, 'yyyy/MM/dd', locale, 'GMT+8');
2059
+ }
2060
+ function format_datetime(date, locale) {
2061
+ return formatDate(date, 'yyyy/MM/dd HH:mm:ss', locale, 'GMT+8');
2062
+ }
2063
+ function file_type_icon(name) {
2064
+ const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
2065
+ switch (type) {
2066
+ case 'doc':
2067
+ case 'docx':
2068
+ return 'word';
2069
+ case 'xls':
2070
+ case 'xlsx':
2071
+ case 'csv':
2072
+ return 'excel';
2073
+ case 'ppt':
2074
+ case 'pptx':
2075
+ return 'ppt';
2076
+ case 'pdf':
2077
+ return 'pdf';
2078
+ case 'txt':
2079
+ case 'xml':
2080
+ case 'json':
2081
+ case 'js':
2082
+ return 'text';
2083
+ case 'png':
2084
+ case 'jpg':
2085
+ case 'jpeg':
2086
+ case 'gif':
2087
+ case 'bmp':
2088
+ return 'image';
2089
+ case 'zip':
2090
+ case 'rar':
2091
+ case '7z':
2092
+ case 'jar':
2093
+ return 'zip';
2094
+ default:
2095
+ return 'unknown';
2016
2096
  }
2017
2097
  }
2018
- InstanceLinkTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InstanceLinkTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2019
- InstanceLinkTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: InstanceLinkTemplateDirective, selector: "[rsInstanceLinkTemplate]", ngImport: i0 });
2020
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InstanceLinkTemplateDirective, decorators: [{
2021
- type: Directive,
2022
- args: [{
2023
- selector: '[rsInstanceLinkTemplate]'
2024
- }]
2025
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
2098
+ function support_preview_ext() {
2099
+ return ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp', 'doc', 'docx', 'txt', 'xml', 'json', 'js', 'xls', 'xlsx', 'csv', 'ppt', 'pptx'];
2100
+ }
2101
+ function format_file_size(size) {
2102
+ const labels = ['b', 'Kb', 'Mb', 'Gb'];
2103
+ const count = labels.length - 1;
2104
+ let i = 0;
2105
+ while (i < count && size >= 1024) {
2106
+ size /= 1024;
2107
+ i++;
2108
+ }
2109
+ return Math.round(size * 100) / 100 + " " + labels[i];
2110
+ }
2111
+ function download_file(blob, filename, callback) {
2112
+ const url = window.webkitURL.createObjectURL(blob);
2113
+ const a = document.createElement('a');
2114
+ document.body.appendChild(a);
2115
+ a.setAttribute('style', 'display:none');
2116
+ a.setAttribute('href', url);
2117
+ a.setAttribute('download', decodeURIComponent(filename));
2118
+ a.click();
2119
+ setTimeout(() => {
2120
+ if (callback) {
2121
+ callback();
2122
+ }
2123
+ a.remove();
2124
+ });
2125
+ }
2126
+ function validate(validator) {
2127
+ return __awaiter(this, void 0, void 0, function* () {
2128
+ return new Promise(resolve => {
2129
+ var _a;
2130
+ const validateResult = validator.instance.validate();
2131
+ if (!validateResult.isValid) {
2132
+ resolve(false);
2133
+ }
2134
+ if (validateResult.status === 'pending') {
2135
+ (_a = validateResult.complete) === null || _a === void 0 ? void 0 : _a.then((result) => {
2136
+ if (result.isValid) {
2137
+ resolve(true);
2138
+ }
2139
+ else {
2140
+ resolve(false);
2141
+ }
2142
+ });
2143
+ }
2144
+ else {
2145
+ resolve(true);
2146
+ }
2147
+ });
2148
+ });
2149
+ }
2150
+ function validate_group(validationGroup) {
2151
+ return __awaiter(this, void 0, void 0, function* () {
2152
+ const top = validationGroup.element.nativeElement;
2153
+ let sourceNode;
2154
+ const targetClassName = 'dx-field';
2155
+ const findTargetNode = (node) => {
2156
+ sourceNode = node;
2157
+ while (true) {
2158
+ if (node.classList.contains(targetClassName)) {
2159
+ return node;
2160
+ }
2161
+ else {
2162
+ node = node.parentElement;
2163
+ if (node === top) {
2164
+ return sourceNode;
2165
+ }
2166
+ }
2167
+ }
2168
+ };
2169
+ return new Promise(resolve => {
2170
+ var _a, _b;
2171
+ const validateResult = validationGroup.instance.validate();
2172
+ if (!validateResult.isValid) {
2173
+ const brokenElement = ((_a = validateResult.brokenRules) === null || _a === void 0 ? void 0 : _a[0]).validator.element();
2174
+ findTargetNode(brokenElement).scrollIntoView();
2175
+ resolve(false);
2176
+ }
2177
+ if (validateResult.status === 'pending') {
2178
+ (_b = validateResult.complete) === null || _b === void 0 ? void 0 : _b.then((result) => {
2179
+ var _a;
2180
+ if (result.isValid) {
2181
+ resolve(true);
2182
+ }
2183
+ else {
2184
+ const brokenElement = ((_a = result.brokenRules) === null || _a === void 0 ? void 0 : _a[0]).validator.element();
2185
+ findTargetNode(brokenElement).scrollIntoView();
2186
+ resolve(false);
2187
+ }
2188
+ });
2189
+ }
2190
+ else {
2191
+ resolve(true);
2192
+ }
2193
+ });
2194
+ });
2195
+ }
2026
2196
 
2027
2197
  class DataGridFactory {
2028
2198
  constructor(http) {
@@ -2073,7 +2243,6 @@ class DataGridFactory {
2073
2243
  dataField: field.name,
2074
2244
  caption: field.caption,
2075
2245
  dataType: 'string',
2076
- alignment: 'center',
2077
2246
  cssClass: 'cell-vertical-middle',
2078
2247
  allowHeaderFiltering: false,
2079
2248
  allowFiltering: false,
@@ -2099,12 +2268,6 @@ class DataGridFactory {
2099
2268
  visible: field.visible,
2100
2269
  fixed: field.fixed
2101
2270
  };
2102
- if (field.isPrimaryKey) {
2103
- column.instanceInfo = {
2104
- tenant,
2105
- className
2106
- };
2107
- }
2108
2271
  switch (field.dataType) {
2109
2272
  case 'BOOLEAN':
2110
2273
  column.allowHeaderFiltering = false;
@@ -2338,11 +2501,6 @@ class DataGridFactory {
2338
2501
  visible: field.visible,
2339
2502
  fixed: field.fixed
2340
2503
  };
2341
- column.instanceInfo = {
2342
- tenant,
2343
- className: field.targetClassName,
2344
- key: field.name
2345
- };
2346
2504
  switch (field.relationType) {
2347
2505
  case 'MANY_TO_ONE':
2348
2506
  case 'ONE_TO_ONE':
@@ -2360,16 +2518,24 @@ class DataGridFactory {
2360
2518
  });
2361
2519
  return result;
2362
2520
  }
2363
- makeDataGridDataSource(tenant, className, view, extraFilter, dataGridName) {
2521
+ makeDataGridDataSource(tenant, className, view, extraFilter, keyExpr, dataGridName) {
2522
+ if (!keyExpr) {
2523
+ keyExpr = 'oid';
2524
+ }
2364
2525
  return new CustomStore({
2365
- key: 'oid',
2526
+ key: keyExpr,
2366
2527
  byKey: (key) => {
2367
- return lastValueFrom(this.service.getOne(tenant, className, key).pipe(map(response => response.data)));
2528
+ if (keyExpr === 'oid') {
2529
+ return lastValueFrom(this.service.getOne(tenant, className, key).pipe(map(response => response.data)));
2530
+ }
2531
+ else {
2532
+ return lastValueFrom(this.service.getOneByFilter(tenant, className, keyExpr, key, view));
2533
+ }
2368
2534
  },
2369
2535
  load: (loadOptions) => {
2370
2536
  if (loadOptions.dataField) {
2371
2537
  // 未重写headerFilter的dataSource时,headerFilter会调用load方法加载筛选树,重写该方法查询该表所有数据
2372
- // 该方式存在风险,无法识别一定是通过headerFilter过滤才存在dataField参数
2538
+ // 该方式存在风险,无法识别DevExtreme一定是通过headerFilter过滤才存在dataField参数
2373
2539
  return lastValueFrom(this.service.getColumnDataSource(tenant, className, view, loadOptions.dataField));
2374
2540
  }
2375
2541
  let params = '?';
@@ -2410,7 +2576,7 @@ class DataGridFactory {
2410
2576
  if (filter) {
2411
2577
  params += '&filter=' + encodeURIComponent(JSON.stringify(filter));
2412
2578
  }
2413
- params += '&view=' + view || '';
2579
+ params += '&view=' + (view || '');
2414
2580
  if (dataGridName) {
2415
2581
  params += '&dataGridName=' + dataGridName;
2416
2582
  }
@@ -2428,179 +2594,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2428
2594
  }]
2429
2595
  }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
2430
2596
 
2431
- function notify_error(message) {
2432
- notify({
2433
- displayTime: 12000,
2434
- message,
2435
- type: 'error',
2436
- width: '300px'
2437
- }, {
2438
- direction: 'up-push',
2439
- position: 'bottom right'
2440
- });
2441
- }
2442
- function notify_warning(message) {
2443
- notify({
2444
- displayTime: 8000,
2445
- message,
2446
- type: 'warning',
2447
- width: '300px'
2448
- }, {
2449
- direction: 'up-push',
2450
- position: 'bottom right'
2451
- });
2452
- }
2453
- function notify_success(message) {
2454
- notify({
2455
- displayTime: 4000,
2456
- message,
2457
- type: 'success',
2458
- width: '300px'
2459
- }, {
2460
- direction: 'down-push',
2461
- position: 'top right'
2462
- });
2463
- }
2464
- function format_date(date, locale) {
2465
- return formatDate(date, 'yyyy/MM/dd', locale, 'GMT+8');
2466
- }
2467
- function format_datetime(date, locale) {
2468
- return formatDate(date, 'yyyy/MM/dd HH:mm:ss', locale, 'GMT+8');
2469
- }
2470
- function file_type_icon(name) {
2471
- const type = name.substring(name.lastIndexOf('.') + 1).toLocaleLowerCase();
2472
- switch (type) {
2473
- case 'doc':
2474
- case 'docx':
2475
- return 'word';
2476
- case 'xls':
2477
- case 'xlsx':
2478
- case 'csv':
2479
- return 'excel';
2480
- case 'ppt':
2481
- case 'pptx':
2482
- return 'ppt';
2483
- case 'pdf':
2484
- return 'pdf';
2485
- case 'txt':
2486
- case 'xml':
2487
- case 'json':
2488
- case 'js':
2489
- return 'text';
2490
- case 'png':
2491
- case 'jpg':
2492
- case 'jpeg':
2493
- case 'gif':
2494
- case 'bmp':
2495
- return 'image';
2496
- case 'zip':
2497
- case 'rar':
2498
- case '7z':
2499
- case 'jar':
2500
- return 'zip';
2501
- default:
2502
- return 'unknown';
2503
- }
2504
- }
2505
- function support_preview_ext() {
2506
- return ['pdf', 'png', 'jpg', 'jpeg', 'gif', 'bmp', 'doc', 'docx', 'txt', 'xml', 'json', 'js', 'xls', 'xlsx', 'csv', 'ppt', 'pptx'];
2507
- }
2508
- function format_file_size(size) {
2509
- const labels = ['b', 'Kb', 'Mb', 'Gb'];
2510
- const count = labels.length - 1;
2511
- let i = 0;
2512
- while (i < count && size >= 1024) {
2513
- size /= 1024;
2514
- i++;
2515
- }
2516
- return Math.round(size * 100) / 100 + " " + labels[i];
2517
- }
2518
- function download_file(blob, filename, callback) {
2519
- const url = window.webkitURL.createObjectURL(blob);
2520
- const a = document.createElement('a');
2521
- document.body.appendChild(a);
2522
- a.setAttribute('style', 'display:none');
2523
- a.setAttribute('href', url);
2524
- a.setAttribute('download', decodeURIComponent(filename));
2525
- a.click();
2526
- setTimeout(() => {
2527
- if (callback) {
2528
- callback();
2529
- }
2530
- a.remove();
2531
- });
2532
- }
2533
- function validate(validator) {
2534
- return __awaiter(this, void 0, void 0, function* () {
2535
- return new Promise(resolve => {
2536
- var _a;
2537
- const validateResult = validator.instance.validate();
2538
- if (!validateResult.isValid) {
2539
- resolve(false);
2540
- }
2541
- if (validateResult.status === 'pending') {
2542
- (_a = validateResult.complete) === null || _a === void 0 ? void 0 : _a.then((result) => {
2543
- if (result.isValid) {
2544
- resolve(true);
2545
- }
2546
- else {
2547
- resolve(false);
2548
- }
2549
- });
2550
- }
2551
- else {
2552
- resolve(true);
2553
- }
2554
- });
2555
- });
2556
- }
2557
- function validate_group(validationGroup) {
2558
- return __awaiter(this, void 0, void 0, function* () {
2559
- const top = validationGroup.element.nativeElement;
2560
- let sourceNode;
2561
- const targetClassName = 'dx-field';
2562
- const findTargetNode = (node) => {
2563
- sourceNode = node;
2564
- while (true) {
2565
- if (node.classList.contains(targetClassName)) {
2566
- return node;
2567
- }
2568
- else {
2569
- node = node.parentElement;
2570
- if (node === top) {
2571
- return sourceNode;
2572
- }
2573
- }
2574
- }
2575
- };
2576
- return new Promise(resolve => {
2577
- var _a, _b;
2578
- const validateResult = validationGroup.instance.validate();
2579
- if (!validateResult.isValid) {
2580
- const brokenElement = ((_a = validateResult.brokenRules) === null || _a === void 0 ? void 0 : _a[0]).validator.element();
2581
- findTargetNode(brokenElement).scrollIntoView();
2582
- resolve(false);
2583
- }
2584
- if (validateResult.status === 'pending') {
2585
- (_b = validateResult.complete) === null || _b === void 0 ? void 0 : _b.then((result) => {
2586
- var _a;
2587
- if (result.isValid) {
2588
- resolve(true);
2589
- }
2590
- else {
2591
- const brokenElement = ((_a = result.brokenRules) === null || _a === void 0 ? void 0 : _a[0]).validator.element();
2592
- findTargetNode(brokenElement).scrollIntoView();
2593
- resolve(false);
2594
- }
2595
- });
2596
- }
2597
- else {
2598
- resolve(true);
2599
- }
2600
- });
2601
- });
2602
- }
2603
-
2604
2597
  class FileCellTemplateComponent {
2605
2598
  constructor(service, domSanitizer) {
2606
2599
  this.service = service;
@@ -2632,10 +2625,6 @@ class FileCellTemplateComponent {
2632
2625
  </table>
2633
2626
  `);
2634
2627
  this.icon = file_type_icon(this.filename);
2635
- // 重绘表格宽高
2636
- setTimeout(() => {
2637
- this.service.cellTemplateLoaded$.emit();
2638
- });
2639
2628
  }
2640
2629
  preview(tooltip) {
2641
2630
  if (!window.coast.tabManager) {
@@ -2675,471 +2664,625 @@ class FileCellTemplateComponent {
2675
2664
  }
2676
2665
  }
2677
2666
  FileCellTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, deps: [{ token: DataGridService }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2678
- FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { file: "file" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
2667
+ FileCellTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: { file: "file" }, ngImport: i0, template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\" (onClick)=\"$event.event?.stopPropagation()\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
2679
2668
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FileCellTemplateComponent, decorators: [{
2680
2669
  type: Component,
2681
- args: [{ selector: 'rs-file-cell-template', template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n" }]
2670
+ args: [{ selector: 'rs-file-cell-template', template: "<dx-button #fileBtn type=\"default\" stylingMode=\"text\" (onClick)=\"$event.event?.stopPropagation()\">\r\n <i class=\"coast-icon-file-{{icon}}\" style=\"padding-right: 4px;\"></i>\r\n {{ filename }}\r\n <dx-tooltip #tooltip\r\n [target]=\"fileBtn.instance.element()\"\r\n [position]=\"'top'\"\r\n [visible]=\"false\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-file\" text=\"\u9884\u89C8\"\r\n (onClick)=\"preview(tooltip)\" [disabled]=\"!supportPreview || loading\"></dx-button>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-download\" text=\"\u4E0B\u8F7D\"\r\n (onClick)=\"download()\" [disabled]=\"loading\"></dx-button>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button><br/>\r\n" }]
2682
2671
  }], ctorParameters: function () { return [{ type: DataGridService }, { type: i2$2.DomSanitizer }]; }, propDecorators: { file: [{
2683
2672
  type: Input
2684
2673
  }] } });
2685
2674
 
2686
- class UserInfoTemplateComponent {
2687
- constructor(service, domSanitizer) {
2688
- this.service = service;
2689
- this.domSanitizer = domSanitizer;
2675
+ class DataDetailService {
2676
+ constructor(http) {
2677
+ this.http = http;
2690
2678
  }
2691
- ngOnInit() {
2692
- this.service.getUserInfo(this.uid).subscribe(response => {
2693
- this.displayName = response.displayName;
2694
- const userInfo = response.userInfo;
2695
- let content = '<table>';
2696
- for (const item of userInfo) {
2697
- content += `
2698
- <tr>
2699
- <td style="text-align: right;">${item.caption}:</td>
2700
- <td style="text-align: left;">${item.value}</td>
2701
- </tr>
2702
- `;
2679
+ getSectionList(tenant, className, oid) {
2680
+ return this.http.get('api/data/custom', {
2681
+ params: {
2682
+ tenant,
2683
+ className,
2684
+ oid,
2685
+ executor: 'com.cs.system.section.LoadSections'
2703
2686
  }
2704
- content += '</table>';
2705
- this.content = this.domSanitizer.bypassSecurityTrustHtml(content);
2706
- // 重绘表格宽高
2707
- setTimeout(() => {
2708
- this.service.cellTemplateLoaded$.emit();
2709
- });
2710
2687
  });
2711
2688
  }
2712
2689
  }
2713
- UserInfoTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UserInfoTemplateComponent, deps: [{ token: DataGridService }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2714
- UserInfoTemplateComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: UserInfoTemplateComponent, selector: "rs-user-info-template", inputs: { uid: "uid" }, ngImport: i0, template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\">\r\n {{displayName}}\r\n <dx-tooltip [target]=\"textDiv.instance.element()\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button>\r\n<br/>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
2715
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UserInfoTemplateComponent, decorators: [{
2716
- type: Component,
2717
- args: [{ selector: 'rs-user-info-template', template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\">\r\n {{displayName}}\r\n <dx-tooltip [target]=\"textDiv.instance.element()\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button>\r\n<br/>\r\n" }]
2718
- }], ctorParameters: function () { return [{ type: DataGridService }, { type: i2$2.DomSanitizer }]; }, propDecorators: { uid: [{
2719
- type: Input
2720
- }] } });
2690
+ DataDetailService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2691
+ DataDetailServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailService });
2692
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailService, decorators: [{
2693
+ type: Injectable
2694
+ }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
2721
2695
 
2722
- class UnitInfoTemplateComponent {
2723
- constructor(service, domSanitizer) {
2724
- this.service = service;
2725
- this.domSanitizer = domSanitizer;
2696
+ class FormService {
2697
+ constructor(http) {
2698
+ this.http = http;
2726
2699
  }
2727
- ngOnInit() {
2728
- this.service.getUnitInfo(this.uid).subscribe(response => {
2729
- this.displayName = response.displayName;
2730
- const unitInfo = response.unitInfo;
2731
- let content = '<table>';
2732
- for (const item of unitInfo) {
2733
- content += `
2734
- <tr>
2735
- <td style="text-align: right;">${item.caption}:</td>
2736
- <td style="text-align: left;">${item.value}</td>
2737
- </tr>
2738
- `;
2700
+ getFormTemplateConfig(tenant, className, template) {
2701
+ return this.http.get('api/metadata/form/' + className, {
2702
+ params: {
2703
+ tenant,
2704
+ template: template || ''
2739
2705
  }
2740
- content += '</table>';
2741
- this.content = this.domSanitizer.bypassSecurityTrustHtml(content);
2742
- // 重绘表格宽高
2743
- setTimeout(() => {
2744
- this.service.cellTemplateLoaded$.emit();
2745
- });
2746
2706
  });
2747
2707
  }
2748
- }
2749
- UnitInfoTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UnitInfoTemplateComponent, deps: [{ token: DataGridService }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2750
- UnitInfoTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: UnitInfoTemplateComponent, selector: "rs-unit-info-template", inputs: { uid: "uid" }, ngImport: i0, template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\">\r\n {{displayName}}\r\n <dx-tooltip [target]=\"textDiv.instance.element()\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button>\r\n<br/>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
2751
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UnitInfoTemplateComponent, decorators: [{
2752
- type: Component,
2753
- args: [{ selector: 'rs-unit-info-template', template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\">\r\n {{displayName}}\r\n <dx-tooltip [target]=\"textDiv.instance.element()\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <div [innerHTML]=\"content\"></div>\r\n </div>\r\n </dx-tooltip>\r\n</dx-button>\r\n<br/>\r\n" }]
2754
- }], ctorParameters: function () { return [{ type: DataGridService }, { type: i2$2.DomSanitizer }]; }, propDecorators: { uid: [{
2755
- type: Input
2756
- }] } });
2757
-
2758
- class DataGridComponent {
2759
- constructor(factory, service) {
2760
- this.factory = factory;
2761
- this.service = service;
2762
- this.tenant = 'T';
2763
- this.enableMasterDetail = false;
2764
- this.selectionMode = 'none';
2765
- this.onDxDataGridCellPrepared = new EventEmitter();
2766
- this.onDxDataGridContentReady = new EventEmitter();
2767
- this.onDxDataGridSelectionChanged = new EventEmitter();
2768
- this.dataSource = {};
2769
- this.columns = [];
2770
- }
2771
- ngOnInit() {
2772
- this.reload();
2773
- this.service.cellTemplateLoaded$.pipe(debounceTime(200)).subscribe(() => {
2774
- this.dxDataGrid.instance.resize();
2708
+ getOne(tenant, className, oid, template, isCopy) {
2709
+ let api = 'api/data/' + className + '/' + oid;
2710
+ return this.http.get(api, {
2711
+ params: {
2712
+ tenant,
2713
+ template: template || '',
2714
+ isCopy: !!isCopy
2715
+ }
2775
2716
  });
2776
2717
  }
2777
- reload() {
2778
- this.columns.length = 0;
2779
- this.factory.makeDataGridColumns(this.tenant, this.className, this.view).subscribe(columns => {
2780
- if (this.customColumnFn) {
2781
- this.customColumnFn(columns);
2718
+ getInitModelByTemplate(tenant, className, template) {
2719
+ let api = 'api/data/' + className + '/new';
2720
+ return this.http.get(api, {
2721
+ params: {
2722
+ tenant,
2723
+ className,
2724
+ template: template || ''
2782
2725
  }
2783
- this.columns = columns;
2784
2726
  });
2785
- this.dataSource = this.factory.makeDataGridDataSource(this.tenant, this.className, this.view, this.filter, this.dataGridName);
2786
2727
  }
2787
- convertMultipleValueCellText(cellInfo) {
2788
- if (!cellInfo.value) {
2789
- return;
2728
+ createOrUpdate(tenant, className, model) {
2729
+ let api = 'api/data/' + className;
2730
+ if (model.oid) {
2731
+ api += '/' + model.oid;
2790
2732
  }
2791
- if (Array.isArray(cellInfo.value)) {
2792
- if (cellInfo.column.lookup) {
2793
- return cellInfo.value.map((item) => cellInfo.column.lookup.calculateCellValue(item)).join('<br />');
2794
- }
2795
- return cellInfo.value.join('<br />');
2796
- }
2797
- if (cellInfo.column.lookup) {
2798
- return cellInfo.column.lookup.calculateCellValue(cellInfo.value);
2799
- }
2800
- return cellInfo.value;
2801
- }
2802
- getOriginalValue(cellInfo, key) {
2803
- const config = cellInfo.column[key];
2804
- if (config) {
2805
- const value = cellInfo.data[config.field];
2806
- if (value) {
2807
- if (Array.isArray(value)) {
2808
- return value;
2809
- }
2810
- return [value];
2733
+ return this.http.post(api, model, {
2734
+ params: {
2735
+ tenant
2811
2736
  }
2812
- return [];
2813
- }
2814
- return cellInfo.data[key];
2737
+ });
2815
2738
  }
2816
- refresh(callback) {
2817
- this.dxDataGrid.instance.refresh().then(() => {
2818
- if (callback) {
2819
- callback();
2820
- }
2739
+ }
2740
+ FormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2741
+ FormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService });
2742
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService, decorators: [{
2743
+ type: Injectable
2744
+ }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
2745
+
2746
+ class FormComponent {
2747
+ constructor(viewContainerRef, service, elementRef) {
2748
+ this.viewContainerRef = viewContainerRef;
2749
+ this.service = service;
2750
+ this.elementRef = elementRef;
2751
+ this.tenant = 'T';
2752
+ this.onlyFrontEnd = false; // 仅前端,不通过oid获取实例model
2753
+ this.readonly = false;
2754
+ this.submitCallback = new EventEmitter();
2755
+ this.loading = false;
2756
+ this.changeFilter = new ChangeFilter();
2757
+ }
2758
+ ngOnInit() {
2759
+ this.load();
2760
+ this.changeFilter.anyNotFirst(['tenant', 'className', 'oid', 'copyOid', 'template'], () => {
2761
+ this.load();
2821
2762
  });
2822
2763
  }
2823
- getSelectedRowKeys() {
2824
- return this.dxDataGrid.instance.getSelectedRowKeys();
2764
+ ngOnChanges(changes) {
2765
+ this.changeFilter.doFilter(changes);
2825
2766
  }
2826
- onCellPrepared($event) {
2827
- this.onDxDataGridCellPrepared.emit($event);
2767
+ ngOnDestroy() {
2768
+ this.changeFilter.dispose();
2828
2769
  }
2829
- onContentReady($event) {
2830
- this.onDxDataGridContentReady.emit($event);
2770
+ load() {
2771
+ this.loading = true;
2772
+ this.params = Object.assign(this.params || {}, {
2773
+ __form: {
2774
+ tenant: this.tenant,
2775
+ className: this.className,
2776
+ oid: this.oid,
2777
+ copyOid: this.copyOid,
2778
+ template: this.template
2779
+ }
2780
+ });
2781
+ this.service.getFormTemplateConfig(this.tenant, this.className, this.template).subscribe(response => {
2782
+ this.config = response.data.template;
2783
+ if (this.onlyFrontEnd) {
2784
+ this.loading = false;
2785
+ }
2786
+ else if (this.copyOid || this.oid) {
2787
+ this.service.getOne(this.tenant, this.className, this.copyOid || this.oid, this.template, this.copyOid)
2788
+ .subscribe(response => {
2789
+ this.model = response.data;
2790
+ this.loading = false;
2791
+ });
2792
+ }
2793
+ else {
2794
+ this.service.getInitModelByTemplate(this.tenant, this.className, this.template).subscribe(response => {
2795
+ this.model = response.data;
2796
+ this.loading = false;
2797
+ });
2798
+ }
2799
+ });
2831
2800
  }
2832
- onSelectionChanged($event) {
2833
- this.onDxDataGridSelectionChanged.emit($event);
2801
+ submitForm() {
2802
+ this.validate().then(isValid => {
2803
+ if (isValid) {
2804
+ const mergeModel = Object.assign({}, this.model);
2805
+ if (this.extraAttrMap) {
2806
+ for (const entry of this.extraAttrMap) {
2807
+ mergeModel[entry.name] = entry.value;
2808
+ }
2809
+ }
2810
+ this.service.createOrUpdate(this.tenant, this.className, Object.assign({ oid: this.oid }, mergeModel)).subscribe(response => {
2811
+ this.submitCallback.emit(response);
2812
+ });
2813
+ }
2814
+ else {
2815
+ this.submitCallback.emit({ success: false });
2816
+ }
2817
+ });
2834
2818
  }
2835
- onEditorPreparing($event) {
2836
- if ($event.parentType === 'filterRow' && $event.editorName === 'dxTextBox') {
2837
- $event.editorOptions.valueChangeEvent = 'blur';
2838
- $event.editorOptions.onEnterKey = (e) => {
2839
- e.component.blur();
2840
- };
2819
+ scrollToAnchorPoint(anchorPointId) {
2820
+ const points = this.elementRef.nativeElement.getElementsByClassName('__anchor_point_' + anchorPointId);
2821
+ if (points.length > 0) {
2822
+ points[0].scrollIntoView();
2841
2823
  }
2842
2824
  }
2825
+ validate() {
2826
+ return validate_group(this.validator);
2827
+ }
2828
+ submit() {
2829
+ this.formSubmitter.instance.element().click();
2830
+ }
2843
2831
  }
2844
- DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, deps: [{ token: DataGridFactory }, { token: DataGridService }], target: i0.ɵɵFactoryTarget.Component });
2845
- DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail", dataGridName: "dataGridName", selectionMode: "selectionMode", customColumnFn: "customColumnFn" }, outputs: { onDxDataGridCellPrepared: "onDxDataGridCellPrepared", onDxDataGridContentReady: "onDxDataGridContentReady", onDxDataGridSelectionChanged: "onDxDataGridSelectionChanged" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }, { propertyName: "rowButtonsTemplate", first: true, predicate: RowButtonsTemplateDirective, descendants: true }, { propertyName: "instanceLinkTemplate", first: true, predicate: InstanceLinkTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [syncLookupFilterValues]=\"false\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n (onCellPrepared)=\"onCellPrepared($event)\"\r\n (onEditorPreparing)=\"onEditorPreparing($event)\"\r\n (onContentReady)=\"onContentReady($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowExpanding)=\"$event.component.collapseAll(-1)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"true\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'masterDetailTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"instanceLinkTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{ cellInfo.rowIndex + 1 }}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{ cellInfo.value }}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [file]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [uid]=\"user\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [uid]=\"unit\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5$1.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6$1.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i6$1.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i6$1.DxoTextsComponent, selector: "dxo-texts", inputs: ["fix", "leftPosition", "rightPosition", "unfix", "addRow", "cancelAllChanges", "cancelRowChanges", "confirmDeleteMessage", "confirmDeleteTitle", "deleteRow", "editRow", "saveAllChanges", "saveRowChanges", "undeleteRow", "validationCancelChanges", "exportAll", "exportSelectedRows", "exportTo", "clearFilter", "createFilter", "filterEnabledHint", "groupByThisColumn", "groupContinuedMessage", "groupContinuesMessage", "ungroup", "ungroupAll", "cancel", "emptyValue", "ok", "avg", "avgOtherColumn", "count", "max", "maxOtherColumn", "min", "minOtherColumn", "sum", "sumOtherColumn", "allFields", "columnFields", "dataFields", "filterFields", "rowFields", "columnFieldArea", "dataFieldArea", "filterFieldArea", "rowFieldArea", "collapseAll", "dataNotAvailable", "expandAll", "exportToExcel", "grandTotal", "noData", "removeAllSorting", "showFieldChooser", "sortColumnBySummary", "sortRowBySummary", "total", "addRowToNode"] }, { kind: "component", type: i6$1.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6$1.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6$1.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i6$1.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6$1.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6$1.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i6$1.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6$1.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: ["file"] }, { kind: "component", type: UserInfoTemplateComponent, selector: "rs-user-info-template", inputs: ["uid"] }, { kind: "component", type: UnitInfoTemplateComponent, selector: "rs-unit-info-template", inputs: ["uid"] }] });
2846
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, decorators: [{
2832
+ FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, deps: [{ token: i0.ViewContainerRef }, { token: FormService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2833
+ FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FormComponent, selector: "rs-form", inputs: { tenant: "tenant", className: "className", oid: "oid", copyOid: "copyOid", template: "template", extraAttrMap: "extraAttrMap", opener: "opener", params: "params", tabViewContainerRef: "tabViewContainerRef", onlyFrontEnd: "onlyFrontEnd", model: "model", readonly: "readonly" }, outputs: { submitCallback: "submitCallback" }, providers: [FormService], viewQueries: [{ propertyName: "validator", first: true, predicate: DxValidationGroupComponent, descendants: true }, { propertyName: "formSubmitter", first: true, predicate: ["formSubmitter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:row nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BoxContainerComponent, selector: "rs-box-container", inputs: ["config", "model", "opener", "params", "readonly", "tabViewContainerRef"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }] });
2834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, decorators: [{
2847
2835
  type: Component,
2848
- args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [syncLookupFilterValues]=\"false\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n (onCellPrepared)=\"onCellPrepared($event)\"\r\n (onEditorPreparing)=\"onEditorPreparing($event)\"\r\n (onContentReady)=\"onContentReady($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowExpanding)=\"$event.component.collapseAll(-1)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"true\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'masterDetailTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"instanceLinkTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{ cellInfo.rowIndex + 1 }}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{ cellInfo.value }}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [file]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [uid]=\"user\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [uid]=\"unit\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
2849
- }], ctorParameters: function () { return [{ type: DataGridFactory }, { type: DataGridService }]; }, propDecorators: { tenant: [{
2836
+ args: [{ selector: 'rs-form', providers: [FormService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:row nowrap}\n"] }]
2837
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: FormService }, { type: i0.ElementRef }]; }, propDecorators: { tenant: [{
2850
2838
  type: Input
2851
2839
  }], className: [{
2852
2840
  type: Input
2853
- }], view: [{
2841
+ }], oid: [{
2854
2842
  type: Input
2855
- }], filter: [{
2843
+ }], copyOid: [{
2856
2844
  type: Input
2857
- }], enableMasterDetail: [{
2845
+ }], template: [{
2858
2846
  type: Input
2859
- }], dataGridName: [{
2847
+ }], extraAttrMap: [{
2860
2848
  type: Input
2861
- }], selectionMode: [{
2849
+ }], opener: [{
2862
2850
  type: Input
2863
- }], customColumnFn: [{
2851
+ }], params: [{
2864
2852
  type: Input
2865
- }], onDxDataGridCellPrepared: [{
2866
- type: Output
2867
- }], onDxDataGridContentReady: [{
2868
- type: Output
2869
- }], onDxDataGridSelectionChanged: [{
2870
- type: Output
2871
- }], dxDataGrid: [{
2853
+ }], tabViewContainerRef: [{
2854
+ type: Input
2855
+ }], onlyFrontEnd: [{
2856
+ type: Input
2857
+ }], model: [{
2858
+ type: Input
2859
+ }], readonly: [{
2860
+ type: Input
2861
+ }], validator: [{
2872
2862
  type: ViewChild,
2873
- args: [DxDataGridComponent, { static: true }]
2874
- }], masterDetailTemplate: [{
2875
- type: ContentChild,
2876
- args: [MasterDetailTemplateDirective]
2877
- }], rowButtonsTemplate: [{
2878
- type: ContentChild,
2879
- args: [RowButtonsTemplateDirective]
2880
- }], instanceLinkTemplate: [{
2881
- type: ContentChild,
2882
- args: [InstanceLinkTemplateDirective]
2863
+ args: [DxValidationGroupComponent]
2864
+ }], formSubmitter: [{
2865
+ type: ViewChild,
2866
+ args: ['formSubmitter']
2867
+ }], submitCallback: [{
2868
+ type: Output
2883
2869
  }] } });
2884
2870
 
2885
- class DataGridModule {
2871
+ class DataDetailComponent {
2872
+ constructor(viewContainerRef, service) {
2873
+ this.viewContainerRef = viewContainerRef;
2874
+ this.service = service;
2875
+ this.sections = [];
2876
+ this.loading = false;
2877
+ }
2878
+ ngOnInit() {
2879
+ this.loading = true;
2880
+ this.service.getSectionList(this.tenant, this.className, this.oid).subscribe(response => {
2881
+ window.coast.tabManager.add.next({
2882
+ id: 'detail:' + this.tenant + '_' + this.className + '_' + this.oid,
2883
+ title: response.data.title
2884
+ });
2885
+ this.sections = response.data.list;
2886
+ this.loading = false;
2887
+ });
2888
+ }
2886
2889
  }
2887
- DataGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2888
- DataGridModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, declarations: [DataGridComponent,
2889
- FileCellTemplateComponent,
2890
- InstanceLinkTemplateDirective,
2891
- MasterDetailTemplateDirective,
2892
- RowButtonsTemplateDirective,
2893
- UserInfoTemplateComponent,
2894
- UnitInfoTemplateComponent], imports: [CommonModule,
2895
- DevExtremeModule], exports: [DataGridComponent,
2896
- InstanceLinkTemplateDirective,
2897
- MasterDetailTemplateDirective,
2898
- RowButtonsTemplateDirective] });
2899
- DataGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, imports: [CommonModule,
2900
- DevExtremeModule] });
2901
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, decorators: [{
2902
- type: NgModule,
2903
- args: [{
2904
- declarations: [
2905
- DataGridComponent,
2906
- FileCellTemplateComponent,
2907
- InstanceLinkTemplateDirective,
2908
- MasterDetailTemplateDirective,
2909
- RowButtonsTemplateDirective,
2910
- UserInfoTemplateComponent,
2911
- UnitInfoTemplateComponent
2912
- ],
2913
- imports: [
2914
- CommonModule,
2915
- DevExtremeModule
2916
- ],
2917
- exports: [
2918
- DataGridComponent,
2919
- InstanceLinkTemplateDirective,
2920
- MasterDetailTemplateDirective,
2921
- RowButtonsTemplateDirective
2922
- ]
2923
- }]
2924
- }] });
2890
+ DataDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailComponent, deps: [{ token: i0.ViewContainerRef }, { token: DataDetailService }], target: i0.ɵɵFactoryTarget.Component });
2891
+ DataDetailComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataDetailComponent, selector: "coast-data-detail", providers: [DataDetailService], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\n [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<div *ngIf=\"!loading && sections.length === 0\" class=\"empty\">\n <span>\u60A8\u65E0\u6743\u67E5\u770B\u8BE5\u6570\u636E\u5B9E\u4F8B\u4EFB\u4F55\u4FE1\u606F</span>\n</div>\n<ng-container *ngIf=\"sections.length > 0\">\n <dx-accordion [collapsible]=\"true\" [multiple]=\"true\" [deferRendering]=\"false\" [dataSource]=\"sections\"\n [selectedItems]=\"sections\">\n <div *dxTemplate=\"let section of 'title'\" class=\"section-title\">\n <div class=\"section-title-name\">{{ section.name }}</div>\n </div>\n <div *dxTemplate=\"let section of 'item'\">\n <rs-form [tenant]=\"tenant\" [className]=\"className\" [oid]=\"oid\" [template]=\"section.formTemplate\" [params]=\"params\"\n [tabViewContainerRef]=\"tabViewContainerRef\" [readonly]=\"true\"></rs-form>\n </div>\n </dx-accordion>\n</ng-container>\n", styles: [":host{flex:1;padding:24px;display:flex;flex-flow:column nowrap}:host div.empty{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div.empty span{text-align:center;-webkit-user-select:none;user-select:none}:host .section-title{border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .section-title .section-title-name{height:24px;font-size:14px;font-weight:700;padding:4px 8px;display:flex;flex-flow:column nowrap;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.DxAccordionComponent, selector: "dx-accordion", inputs: ["accessKey", "activeStateEnabled", "animationDuration", "collapsible", "dataSource", "deferRendering", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "itemHoldTimeout", "items", "itemTemplate", "itemTitleTemplate", "keyExpr", "multiple", "noDataText", "repaintChangesOnly", "rtlEnabled", "selectedIndex", "selectedItem", "selectedItemKeys", "selectedItems", "tabIndex", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onItemClick", "onItemContextMenu", "onItemHold", "onItemRendered", "onItemTitleClick", "onOptionChanged", "onSelectionChanged", "accessKeyChange", "activeStateEnabledChange", "animationDurationChange", "collapsibleChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemHoldTimeoutChange", "itemsChange", "itemTemplateChange", "itemTitleTemplateChange", "keyExprChange", "multipleChange", "noDataTextChange", "repaintChangesOnlyChange", "rtlEnabledChange", "selectedIndexChange", "selectedItemChange", "selectedItemKeysChange", "selectedItemsChange", "tabIndexChange", "visibleChange", "widthChange"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: FormComponent, selector: "rs-form", inputs: ["tenant", "className", "oid", "copyOid", "template", "extraAttrMap", "opener", "params", "tabViewContainerRef", "onlyFrontEnd", "model", "readonly"], outputs: ["submitCallback"] }] });
2892
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailComponent, decorators: [{
2893
+ type: Component,
2894
+ args: [{ selector: 'coast-data-detail', providers: [DataDetailService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\n [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<div *ngIf=\"!loading && sections.length === 0\" class=\"empty\">\n <span>\u60A8\u65E0\u6743\u67E5\u770B\u8BE5\u6570\u636E\u5B9E\u4F8B\u4EFB\u4F55\u4FE1\u606F</span>\n</div>\n<ng-container *ngIf=\"sections.length > 0\">\n <dx-accordion [collapsible]=\"true\" [multiple]=\"true\" [deferRendering]=\"false\" [dataSource]=\"sections\"\n [selectedItems]=\"sections\">\n <div *dxTemplate=\"let section of 'title'\" class=\"section-title\">\n <div class=\"section-title-name\">{{ section.name }}</div>\n </div>\n <div *dxTemplate=\"let section of 'item'\">\n <rs-form [tenant]=\"tenant\" [className]=\"className\" [oid]=\"oid\" [template]=\"section.formTemplate\" [params]=\"params\"\n [tabViewContainerRef]=\"tabViewContainerRef\" [readonly]=\"true\"></rs-form>\n </div>\n </dx-accordion>\n</ng-container>\n", styles: [":host{flex:1;padding:24px;display:flex;flex-flow:column nowrap}:host div.empty{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div.empty span{text-align:center;-webkit-user-select:none;user-select:none}:host .section-title{border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .section-title .section-title-name{height:24px;font-size:14px;font-weight:700;padding:4px 8px;display:flex;flex-flow:column nowrap;justify-content:center}\n"] }]
2895
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: DataDetailService }]; } });
2925
2896
 
2926
- class DataDetailService {
2927
- constructor(http) {
2928
- this.http = http;
2897
+ class DrawerComponent {
2898
+ constructor(elementRef) {
2899
+ this.elementRef = elementRef;
2900
+ this.size = 'default';
2901
+ this._width = '480px';
2929
2902
  }
2930
- getSectionList(tenant, className, oid) {
2931
- return this.http.get('api/data/custom', {
2932
- params: {
2933
- tenant,
2934
- className,
2935
- oid,
2936
- executor: 'com.cs.system.section.LoadSections'
2903
+ ngOnInit() {
2904
+ if (this.size === 'large') {
2905
+ this._width = '960px';
2906
+ }
2907
+ }
2908
+ show() {
2909
+ // 若存在多层抽屉,仅保留最上层遮罩颜色,下层遮罩设置为透明
2910
+ const nodeName = this.elementRef.nativeElement.nodeName;
2911
+ const drawers = this._parentViewContainerRef.element.nativeElement.parentElement.querySelectorAll(nodeName);
2912
+ for (let i = 0; i < drawers.length; i++) {
2913
+ if (i === drawers.length - 1) {
2914
+ drawers[i].querySelector('.drawer-backdrop').style.backgroundColor = 'rgba(37, 43, 58, 0.05)';
2937
2915
  }
2938
- });
2916
+ else {
2917
+ drawers[i].querySelector('.drawer-backdrop').style.backgroundColor = 'rgba(37, 43, 58, 0)';
2918
+ }
2919
+ }
2920
+ }
2921
+ hide($event, backdrop) {
2922
+ // 在service中重写
2923
+ }
2924
+ ngOnDestroy() {
2925
+ // 若存在多层抽屉,下一层遮罩设置为不透明
2926
+ const nodeName = this.elementRef.nativeElement.nodeName;
2927
+ const nextDrawer = this._parentViewContainerRef.element.nativeElement.parentElement.querySelector(nodeName + ':nth-last-child(2)');
2928
+ if (nextDrawer) {
2929
+ nextDrawer.querySelector('.drawer-backdrop').style.backgroundColor = 'rgba(37, 43, 58, 0.05)';
2930
+ }
2939
2931
  }
2940
2932
  }
2941
- DataDetailService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2942
- DataDetailServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailService });
2943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailService, decorators: [{
2944
- type: Injectable
2945
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
2933
+ DrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2934
+ DrawerComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DrawerComponent, selector: "rs-drawer", ngImport: i0, template: "<div #drawerBackdrop class=\"drawer-backdrop\" (click)=\"hide($event, drawerBackdrop)\">\n <div class=\"drawer\" [ngStyle]=\"{width: _width}\">\n <div *ngIf=\"headerTemplate\" class=\"drawer-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: headerTemplateContext}\"></ng-template>\n </div>\n <div class=\"drawer-content\">\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\n </div>\n <div class=\"drawer-close\">\n <dx-button height=\"40px\" icon=\"coast-icon coast-icon-arrow-right-filling\" (onClick)=\"hide($event)\"></dx-button>\n </div>\n </div>\n</div>\n", styles: [":host .drawer-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-drawer, 1040) - 1)}:host .drawer-backdrop .drawer{position:absolute;right:0;height:100%;z-index:var(--coast-z-index-drawer, 1040);background-color:var(--coast-base-bg-color, #fff);display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-header{flex:0 0 36px;padding:8px;border-bottom:1px solid var(--coast-border-color, #dddddd);display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end}:host .drawer-backdrop .drawer .drawer-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-close{position:absolute;height:100%;width:20px;top:0;left:-20px;display:flex;flex-flow:row nowrap;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
2935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, decorators: [{
2936
+ type: Component,
2937
+ args: [{ selector: 'rs-drawer', template: "<div #drawerBackdrop class=\"drawer-backdrop\" (click)=\"hide($event, drawerBackdrop)\">\n <div class=\"drawer\" [ngStyle]=\"{width: _width}\">\n <div *ngIf=\"headerTemplate\" class=\"drawer-header\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: headerTemplateContext}\"></ng-template>\n </div>\n <div class=\"drawer-content\">\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\n </div>\n <div class=\"drawer-close\">\n <dx-button height=\"40px\" icon=\"coast-icon coast-icon-arrow-right-filling\" (onClick)=\"hide($event)\"></dx-button>\n </div>\n </div>\n</div>\n", styles: [":host .drawer-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-drawer, 1040) - 1)}:host .drawer-backdrop .drawer{position:absolute;right:0;height:100%;z-index:var(--coast-z-index-drawer, 1040);background-color:var(--coast-base-bg-color, #fff);display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-header{flex:0 0 36px;padding:8px;border-bottom:1px solid var(--coast-border-color, #dddddd);display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end}:host .drawer-backdrop .drawer .drawer-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-close{position:absolute;height:100%;width:20px;top:0;left:-20px;display:flex;flex-flow:row nowrap;align-items:center}\n"] }]
2938
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
2946
2939
 
2947
- class FormService {
2948
- constructor(http) {
2949
- this.http = http;
2940
+ class DrawerService {
2941
+ constructor() {
2950
2942
  }
2951
- getFormTemplateConfig(tenant, className, template) {
2952
- return this.http.get('api/metadata/form/' + className, {
2953
- params: {
2954
- tenant,
2955
- template: template || ''
2943
+ open(viewContainerRef, size = 'default', contentTemplate, contentTemplateContext, headerTemplate, headerTemplateContext) {
2944
+ const drawerRef = viewContainerRef.createComponent(DrawerComponent);
2945
+ drawerRef.instance.hide = ($event, backdrop) => {
2946
+ if ($event.target === backdrop) {
2947
+ drawerRef.hostView.destroy();
2956
2948
  }
2957
- });
2949
+ };
2950
+ drawerRef.instance.size = size;
2951
+ drawerRef.instance.headerTemplate = headerTemplate;
2952
+ drawerRef.instance.headerTemplateContext = headerTemplateContext;
2953
+ drawerRef.instance.contentTemplate = contentTemplate;
2954
+ drawerRef.instance.contentTemplateContext = contentTemplateContext;
2955
+ drawerRef.instance._parentViewContainerRef = viewContainerRef;
2956
+ drawerRef.instance.show();
2957
+ return drawerRef.instance;
2958
2958
  }
2959
- getOne(tenant, className, oid, template, isCopy) {
2960
- let api = 'api/data/' + className + '/' + oid;
2961
- return this.http.get(api, {
2962
- params: {
2963
- tenant,
2964
- template: template || '',
2965
- isCopy: !!isCopy
2966
- }
2967
- });
2959
+ }
2960
+ DrawerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2961
+ DrawerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerService, providedIn: 'root' });
2962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerService, decorators: [{
2963
+ type: Injectable,
2964
+ args: [{
2965
+ providedIn: 'root'
2966
+ }]
2967
+ }], ctorParameters: function () { return []; } });
2968
+
2969
+ class InstanceLinkTemplateComponent {
2970
+ constructor(service, drawerService) {
2971
+ this.service = service;
2972
+ this.drawerService = drawerService;
2968
2973
  }
2969
- getInitModelByTemplate(tenant, className, template) {
2970
- let api = 'api/data/' + className + '/new';
2971
- return this.http.get(api, {
2972
- params: {
2973
- tenant,
2974
- className,
2975
- template: template || ''
2974
+ openNewTab($event) {
2975
+ var _a;
2976
+ (_a = $event.event) === null || _a === void 0 ? void 0 : _a.stopPropagation();
2977
+ if (!window.coast.tabManager) {
2978
+ notify_warning('此操作仅能在coast-web项目中执行,type:detail,config:tenant=' + this.tenant + ',className=' + this.className + ',oid=' + this.oid);
2979
+ return;
2980
+ }
2981
+ window.coast.tabManager.add.next({
2982
+ type: 'detail',
2983
+ id: 'detail:' + this.tenant + '_' + this.className + '_' + this.oid,
2984
+ title: '',
2985
+ component: DataDetailComponent,
2986
+ config: {
2987
+ tenant: this.tenant,
2988
+ className: this.className,
2989
+ oid: this.oid
2976
2990
  }
2977
2991
  });
2978
2992
  }
2979
- createOrUpdate(tenant, className, model) {
2980
- let api = 'api/data/' + className;
2981
- if (model.oid) {
2982
- api += '/' + model.oid;
2993
+ openDrawer($event) {
2994
+ var _a;
2995
+ (_a = $event.event) === null || _a === void 0 ? void 0 : _a.stopPropagation();
2996
+ this.drawerService.open(this.drawerViewContainerRef, 'default', this.drawerFormContentTemplate, {
2997
+ template: this.drawerFormTemplate || 'About'
2998
+ }, this.drawerFormHeaderTemplate);
2999
+ }
3000
+ }
3001
+ InstanceLinkTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InstanceLinkTemplateComponent, deps: [{ token: DataGridService }, { token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });
3002
+ InstanceLinkTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: InstanceLinkTemplateComponent, selector: "rs-instance-link-template", inputs: { tenant: "tenant", className: "className", oid: "oid", instanceLinkType: "instanceLinkType", drawerViewContainerRef: "drawerViewContainerRef", drawerFormTemplate: "drawerFormTemplate" }, viewQueries: [{ propertyName: "drawerFormHeaderTemplate", first: true, predicate: ["drawerFormHeaderTemplate"], descendants: true, static: true }, { propertyName: "drawerFormContentTemplate", first: true, predicate: ["drawerFormContentTemplate"], descendants: true, static: true }], ngImport: i0, template: "<dx-button *ngIf=\"instanceLinkType === 'tab'\"\n type=\"default\"\n stylingMode=\"text\"\n icon=\"coast-icon coast-icon-send\"\n hint=\"\u67E5\u770B\u8BE6\u60C5\"\n (onClick)=\"openNewTab($event)\"></dx-button>\n<dx-button *ngIf=\"instanceLinkType === 'drawer'\"\n type=\"default\"\n stylingMode=\"text\"\n icon=\"coast-icon coast-icon-send\"\n hint=\"\u67E5\u770B\u8BE6\u60C5\"\n (onClick)=\"openDrawer($event)\"></dx-button>\n<ng-template #drawerFormHeaderTemplate>\n <dx-button icon=\"coast-icon coast-icon-send\" text=\"\u5728\u65B0\u9009\u9879\u5361\u4E2D\u67E5\u770B\" (onClick)=\"openNewTab($event)\"></dx-button>\n</ng-template>\n<ng-template #drawerFormContentTemplate let-modalContext>\n <rs-form [tenant]=\"tenant\"\n [className]=\"className\"\n [oid]=\"oid\"\n [template]=\"modalContext.template\"\n [readonly]=\"true\"></rs-form>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: FormComponent, selector: "rs-form", inputs: ["tenant", "className", "oid", "copyOid", "template", "extraAttrMap", "opener", "params", "tabViewContainerRef", "onlyFrontEnd", "model", "readonly"], outputs: ["submitCallback"] }] });
3003
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InstanceLinkTemplateComponent, decorators: [{
3004
+ type: Component,
3005
+ args: [{ selector: 'rs-instance-link-template', template: "<dx-button *ngIf=\"instanceLinkType === 'tab'\"\n type=\"default\"\n stylingMode=\"text\"\n icon=\"coast-icon coast-icon-send\"\n hint=\"\u67E5\u770B\u8BE6\u60C5\"\n (onClick)=\"openNewTab($event)\"></dx-button>\n<dx-button *ngIf=\"instanceLinkType === 'drawer'\"\n type=\"default\"\n stylingMode=\"text\"\n icon=\"coast-icon coast-icon-send\"\n hint=\"\u67E5\u770B\u8BE6\u60C5\"\n (onClick)=\"openDrawer($event)\"></dx-button>\n<ng-template #drawerFormHeaderTemplate>\n <dx-button icon=\"coast-icon coast-icon-send\" text=\"\u5728\u65B0\u9009\u9879\u5361\u4E2D\u67E5\u770B\" (onClick)=\"openNewTab($event)\"></dx-button>\n</ng-template>\n<ng-template #drawerFormContentTemplate let-modalContext>\n <rs-form [tenant]=\"tenant\"\n [className]=\"className\"\n [oid]=\"oid\"\n [template]=\"modalContext.template\"\n [readonly]=\"true\"></rs-form>\n</ng-template>\n" }]
3006
+ }], ctorParameters: function () { return [{ type: DataGridService }, { type: DrawerService }]; }, propDecorators: { tenant: [{
3007
+ type: Input
3008
+ }], className: [{
3009
+ type: Input
3010
+ }], oid: [{
3011
+ type: Input
3012
+ }], instanceLinkType: [{
3013
+ type: Input
3014
+ }], drawerViewContainerRef: [{
3015
+ type: Input
3016
+ }], drawerFormTemplate: [{
3017
+ type: Input
3018
+ }], drawerFormHeaderTemplate: [{
3019
+ type: ViewChild,
3020
+ args: ['drawerFormHeaderTemplate', { static: true }]
3021
+ }], drawerFormContentTemplate: [{
3022
+ type: ViewChild,
3023
+ args: ['drawerFormContentTemplate', { static: true }]
3024
+ }] } });
3025
+
3026
+ class UnitInfoTemplateComponent {
3027
+ constructor(service, domSanitizer) {
3028
+ this.service = service;
3029
+ this.domSanitizer = domSanitizer;
3030
+ }
3031
+ ngOnInit() {
3032
+ const needRemoteDisplayName = Array.isArray(this.cellInfo.value);
3033
+ if (!needRemoteDisplayName) {
3034
+ this.displayName = this.cellInfo.value;
2983
3035
  }
2984
- return this.http.post(api, model, {
2985
- params: {
2986
- tenant
3036
+ this.service.getUnitInfo(this.uid).subscribe(response => {
3037
+ if (needRemoteDisplayName) {
3038
+ this.displayName = response.displayName;
3039
+ }
3040
+ const unitInfo = response.unitInfo;
3041
+ let content = '<table>';
3042
+ for (const item of unitInfo) {
3043
+ content += `
3044
+ <tr>
3045
+ <td style="text-align: right;">${item.caption}:</td>
3046
+ <td style="text-align: left;">${item.value}</td>
3047
+ </tr>
3048
+ `;
2987
3049
  }
3050
+ content += '</table>';
3051
+ this.content = this.domSanitizer.bypassSecurityTrustHtml(content);
3052
+ // 重绘表格宽高
3053
+ setTimeout(() => {
3054
+ this.service.cellTemplateLoaded$.emit();
3055
+ });
2988
3056
  });
2989
3057
  }
2990
3058
  }
2991
- FormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2992
- FormServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService });
2993
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormService, decorators: [{
2994
- type: Injectable
2995
- }], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
3059
+ UnitInfoTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UnitInfoTemplateComponent, deps: [{ token: DataGridService }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
3060
+ UnitInfoTemplateComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: UnitInfoTemplateComponent, selector: "rs-unit-info-template", inputs: { uid: "uid", cellInfo: "cellInfo" }, ngImport: i0, template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\" (onClick)=\"$event.event?.stopPropagation()\">\n {{ displayName }}\n <dx-tooltip [target]=\"textDiv.instance.element()\"\n [position]=\"'top'\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n </div>\n </dx-tooltip>\n</dx-button>\n<br/>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
3061
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UnitInfoTemplateComponent, decorators: [{
3062
+ type: Component,
3063
+ args: [{ selector: 'rs-unit-info-template', template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\" (onClick)=\"$event.event?.stopPropagation()\">\n {{ displayName }}\n <dx-tooltip [target]=\"textDiv.instance.element()\"\n [position]=\"'top'\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n </div>\n </dx-tooltip>\n</dx-button>\n<br/>\n" }]
3064
+ }], ctorParameters: function () { return [{ type: DataGridService }, { type: i2$2.DomSanitizer }]; }, propDecorators: { uid: [{
3065
+ type: Input
3066
+ }], cellInfo: [{
3067
+ type: Input
3068
+ }] } });
2996
3069
 
2997
- class FormComponent {
2998
- constructor(viewContainerRef, service, elementRef) {
2999
- this.viewContainerRef = viewContainerRef;
3070
+ class UserInfoTemplateComponent {
3071
+ constructor(service, domSanitizer) {
3000
3072
  this.service = service;
3001
- this.elementRef = elementRef;
3002
- this.tenant = 'T';
3003
- this.onlyFrontEnd = false; // 仅前端,不通过oid获取实例model
3004
- this.readonly = false;
3005
- this.submitCallback = new EventEmitter();
3006
- this.loading = false;
3007
- this.changeFilter = new ChangeFilter();
3073
+ this.domSanitizer = domSanitizer;
3008
3074
  }
3009
3075
  ngOnInit() {
3010
- this.load();
3011
- this.changeFilter.anyNotFirst(['tenant', 'className', 'oid', 'copyOid', 'template'], () => {
3012
- this.load();
3076
+ const needRemoteDisplayName = Array.isArray(this.cellInfo.value);
3077
+ if (!needRemoteDisplayName) {
3078
+ this.displayName = this.cellInfo.value;
3079
+ }
3080
+ this.service.getUserInfo(this.uid).subscribe(response => {
3081
+ if (needRemoteDisplayName) {
3082
+ this.displayName = response.displayName;
3083
+ }
3084
+ const userInfo = response.userInfo;
3085
+ let content = '<table>';
3086
+ for (const item of userInfo) {
3087
+ content += `
3088
+ <tr>
3089
+ <td style="text-align: right;">${item.caption}:</td>
3090
+ <td style="text-align: left;">${item.value}</td>
3091
+ </tr>
3092
+ `;
3093
+ }
3094
+ content += '</table>';
3095
+ this.content = this.domSanitizer.bypassSecurityTrustHtml(content);
3096
+ // 重绘表格宽高
3097
+ setTimeout(() => {
3098
+ this.service.cellTemplateLoaded$.emit();
3099
+ });
3013
3100
  });
3014
3101
  }
3015
- ngOnChanges(changes) {
3016
- this.changeFilter.doFilter(changes);
3017
- }
3018
- ngOnDestroy() {
3019
- this.changeFilter.dispose();
3020
- }
3021
- load() {
3022
- this.loading = true;
3023
- this.params = Object.assign(this.params || {}, {
3024
- __form: {
3025
- tenant: this.tenant,
3026
- className: this.className,
3027
- oid: this.oid,
3028
- copyOid: this.copyOid,
3029
- template: this.template
3030
- }
3102
+ }
3103
+ UserInfoTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UserInfoTemplateComponent, deps: [{ token: DataGridService }, { token: i2$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
3104
+ UserInfoTemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: UserInfoTemplateComponent, selector: "rs-user-info-template", inputs: { uid: "uid", cellInfo: "cellInfo" }, ngImport: i0, template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\" (onClick)=\"$event.event?.stopPropagation()\">\n {{ displayName }}\n <dx-tooltip [target]=\"textDiv.instance.element()\"\n [position]=\"'top'\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n </div>\n </dx-tooltip>\n</dx-button>\n<br/>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
3105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: UserInfoTemplateComponent, decorators: [{
3106
+ type: Component,
3107
+ args: [{ selector: 'rs-user-info-template', template: "<dx-button #textDiv type=\"default\" stylingMode=\"text\" (onClick)=\"$event.event?.stopPropagation()\">\n {{ displayName }}\n <dx-tooltip [target]=\"textDiv.instance.element()\"\n [position]=\"'top'\"\n [showEvent]=\"'click'\">\n <div *dxTemplate=\"let data of 'content'\">\n <div [innerHTML]=\"content\"></div>\n </div>\n </dx-tooltip>\n</dx-button>\n<br/>\n" }]
3108
+ }], ctorParameters: function () { return [{ type: DataGridService }, { type: i2$2.DomSanitizer }]; }, propDecorators: { uid: [{
3109
+ type: Input
3110
+ }], cellInfo: [{
3111
+ type: Input
3112
+ }] } });
3113
+
3114
+ class DataGridComponent {
3115
+ constructor(factory, service, viewContainerRef) {
3116
+ this.factory = factory;
3117
+ this.service = service;
3118
+ this.viewContainerRef = viewContainerRef;
3119
+ this.tenant = 'T';
3120
+ this.keyExpr = ''; // 用于实例属性选择器,加载组件值时以选中字段为主键获取选中行数据
3121
+ this.onlyFrontEnd = false; // 仅前端,不通过获取表格数据
3122
+ this.dataSource = {};
3123
+ this.selectionMode = 'none';
3124
+ this.selectedRowKeys = [];
3125
+ this.selectedRowKeysChange = new EventEmitter();
3126
+ this.showRowNum = true;
3127
+ this.instanceLinkType = 'tab';
3128
+ this.drawerInstanceLinkViewContainerRef = this.viewContainerRef;
3129
+ this.onCellPrepared = new EventEmitter();
3130
+ this.onContentReady = new EventEmitter();
3131
+ this.onEditorPreparing = new EventEmitter();
3132
+ this.onRowClick = new EventEmitter();
3133
+ this.onRowDblClick = new EventEmitter();
3134
+ this.onSelectionChanged = new EventEmitter();
3135
+ this.columns = [];
3136
+ }
3137
+ ngOnInit() {
3138
+ this.reload();
3139
+ this.service.cellTemplateLoaded$.pipe(debounceTime(200)).subscribe(() => {
3140
+ this.dxDataGrid.instance.resize();
3031
3141
  });
3032
- this.service.getFormTemplateConfig(this.tenant, this.className, this.template).subscribe(response => {
3033
- this.config = response.data.template;
3034
- if (this.onlyFrontEnd) {
3035
- this.loading = false;
3142
+ }
3143
+ reload() {
3144
+ this.columns.length = 0;
3145
+ this.factory.makeDataGridColumns(this.tenant, this.className, this.view).subscribe(columns => {
3146
+ if (this.customColumnFn) {
3147
+ this.customColumnFn(columns);
3036
3148
  }
3037
- else if (this.copyOid || this.oid) {
3038
- this.service.getOne(this.tenant, this.className, this.copyOid || this.oid, this.template, this.copyOid)
3039
- .subscribe(response => {
3040
- this.model = response.data;
3041
- this.loading = false;
3149
+ if (this.instanceLinkType === 'tab' || this.instanceLinkType === 'drawer') {
3150
+ columns.unshift({
3151
+ fixed: true,
3152
+ width: 48,
3153
+ cellTemplate: 'instanceLinkTemplate',
3154
+ alignment: 'center',
3155
+ cssClass: 'cell-vertical-middle'
3042
3156
  });
3043
3157
  }
3044
- else {
3045
- this.service.getInitModelByTemplate(this.tenant, this.className, this.template).subscribe(response => {
3046
- this.model = response.data;
3047
- this.loading = false;
3158
+ if (this.showRowNum) {
3159
+ columns.unshift({
3160
+ fixed: true,
3161
+ width: 48,
3162
+ cellTemplate: 'rowIndexTemplate',
3163
+ alignment: 'center',
3164
+ cssClass: 'cell-vertical-middle'
3048
3165
  });
3049
3166
  }
3167
+ this.columns = columns;
3050
3168
  });
3169
+ if (this.onlyFrontEnd) {
3170
+ if (this.dataSource && !Array.isArray(this.dataSource)) {
3171
+ notify_error('if onlyFrontEnd set true, you have to set dataSource as an Array');
3172
+ }
3173
+ }
3174
+ else {
3175
+ this.dataSource = this.factory.makeDataGridDataSource(this.tenant, this.className, this.view, this.filter, this.keyExpr, this.dataGridName);
3176
+ }
3051
3177
  }
3052
- submitForm() {
3053
- this.validate().then(isValid => {
3054
- if (isValid) {
3055
- if (this.extraAttrMap) {
3056
- for (const entry of this.extraAttrMap) {
3057
- this.model[entry.name] = entry.value;
3058
- }
3178
+ convertMultipleValueCellText(cellInfo) {
3179
+ if (!cellInfo.value) {
3180
+ return;
3181
+ }
3182
+ if (Array.isArray(cellInfo.value)) {
3183
+ if (cellInfo.column.lookup) {
3184
+ return cellInfo.value.map((item) => cellInfo.column.lookup.calculateCellValue(item)).join('<br />');
3185
+ }
3186
+ return cellInfo.value.join('<br />');
3187
+ }
3188
+ if (cellInfo.column.lookup) {
3189
+ return cellInfo.column.lookup.calculateCellValue(cellInfo.value);
3190
+ }
3191
+ return cellInfo.value;
3192
+ }
3193
+ getOriginalValue(cellInfo, key) {
3194
+ const config = cellInfo.column[key];
3195
+ if (config) {
3196
+ const value = cellInfo.data[config.field];
3197
+ if (value) {
3198
+ if (Array.isArray(value)) {
3199
+ return value;
3059
3200
  }
3060
- this.service.createOrUpdate(this.tenant, this.className, Object.assign({ oid: this.oid }, this.model)).subscribe(response => {
3061
- this.submitCallback.emit(response);
3062
- });
3201
+ return [value];
3063
3202
  }
3064
- else {
3065
- this.submitCallback.emit({ success: false });
3203
+ return [];
3204
+ }
3205
+ return cellInfo.data[key];
3206
+ }
3207
+ getSelectedRowKeys() {
3208
+ return this.dxDataGrid.instance.getSelectedRowKeys();
3209
+ }
3210
+ refresh(callback) {
3211
+ this.dxDataGrid.instance.refresh().then(() => {
3212
+ if (callback) {
3213
+ callback();
3066
3214
  }
3067
3215
  });
3068
3216
  }
3069
- scrollToAnchorPoint(anchorPointId) {
3070
- const points = this.elementRef.nativeElement.getElementsByClassName('__anchor_point_' + anchorPointId);
3071
- if (points.length > 0) {
3072
- points[0].scrollIntoView();
3217
+ onDxDataGridEditorPreparing($event) {
3218
+ if ($event.parentType === 'filterRow' && $event.editorName === 'dxTextBox') {
3219
+ $event.editorOptions.valueChangeEvent = 'blur';
3220
+ $event.editorOptions.onEnterKey = (e) => {
3221
+ e.component.blur();
3222
+ };
3073
3223
  }
3074
- }
3075
- validate() {
3076
- return validate_group(this.validator);
3077
- }
3078
- submit() {
3079
- this.formSubmitter.instance.element().click();
3224
+ this.onEditorPreparing.emit($event);
3080
3225
  }
3081
3226
  }
3082
- FormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, deps: [{ token: i0.ViewContainerRef }, { token: FormService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3083
- FormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: FormComponent, selector: "rs-form", inputs: { tenant: "tenant", className: "className", oid: "oid", copyOid: "copyOid", template: "template", extraAttrMap: "extraAttrMap", opener: "opener", params: "params", tabViewContainerRef: "tabViewContainerRef", onlyFrontEnd: "onlyFrontEnd", model: "model", readonly: "readonly" }, outputs: { submitCallback: "submitCallback" }, providers: [FormService], viewQueries: [{ propertyName: "validator", first: true, predicate: DxValidationGroupComponent, descendants: true }, { propertyName: "formSubmitter", first: true, predicate: ["formSubmitter"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:row nowrap}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BoxContainerComponent, selector: "rs-box-container", inputs: ["config", "model", "opener", "params", "readonly", "tabViewContainerRef"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i7.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }] });
3084
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, decorators: [{
3227
+ DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, deps: [{ token: DataGridFactory }, { token: DataGridService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
3228
+ DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", customColumnFn: "customColumnFn", keyExpr: "keyExpr", dataGridName: "dataGridName", height: "height", onlyFrontEnd: "onlyFrontEnd", dataSource: "dataSource", selectionMode: "selectionMode", selectedRowKeys: "selectedRowKeys", showRowNum: "showRowNum", instanceLinkType: "instanceLinkType", drawerInstanceLinkViewContainerRef: "drawerInstanceLinkViewContainerRef", drawerInstanceLinkFormTemplate: "drawerInstanceLinkFormTemplate" }, outputs: { selectedRowKeysChange: "selectedRowKeysChange", onCellPrepared: "onCellPrepared", onContentReady: "onContentReady", onEditorPreparing: "onEditorPreparing", onRowClick: "onRowClick", onRowDblClick: "onRowDblClick", onSelectionChanged: "onSelectionChanged" }, providers: [DataGridService], queries: [{ propertyName: "rowButtonsTemplate", first: true, predicate: RowButtonsTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n [syncLookupFilterValues]=\"false\"\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [height]=\"height\"\r\n [keyExpr]=\"keyExpr\"\r\n [selectedRowKeys]=\"selectedRowKeys\"\r\n (selectedRowKeysChange)=\"selectedRowKeysChange.emit($event)\"\r\n (onCellPrepared)=\"onCellPrepared.emit($event)\"\r\n (onContentReady)=\"onContentReady.emit($event)\"\r\n (onEditorPreparing)=\"onDxDataGridEditorPreparing($event)\"\r\n (onRowClick)=\"onRowClick.emit($event)\"\r\n (onRowDblClick)=\"onRowDblClick.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"!onlyFrontEnd\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{ cellInfo.rowIndex + 1 }}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <rs-instance-link-template [tenant]=\"tenant\"\r\n [className]=\"className\"\r\n [oid]=\"cellInfo.data.oid\"\r\n [instanceLinkType]=\"instanceLinkType\"\r\n [drawerViewContainerRef]=\"drawerInstanceLinkViewContainerRef\"\r\n [drawerFormTemplate]=\"drawerInstanceLinkFormTemplate\">\r\n </rs-instance-link-template>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{ cellInfo.value }}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [file]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [uid]=\"user\" [cellInfo]=\"cellInfo\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [uid]=\"unit\" [cellInfo]=\"cellInfo\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5$1.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6$1.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i6$1.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i6$1.DxoTextsComponent, selector: "dxo-texts", inputs: ["fix", "leftPosition", "rightPosition", "unfix", "addRow", "cancelAllChanges", "cancelRowChanges", "confirmDeleteMessage", "confirmDeleteTitle", "deleteRow", "editRow", "saveAllChanges", "saveRowChanges", "undeleteRow", "validationCancelChanges", "exportAll", "exportSelectedRows", "exportTo", "clearFilter", "createFilter", "filterEnabledHint", "groupByThisColumn", "groupContinuedMessage", "groupContinuesMessage", "ungroup", "ungroupAll", "cancel", "emptyValue", "ok", "avg", "avgOtherColumn", "count", "max", "maxOtherColumn", "min", "minOtherColumn", "sum", "sumOtherColumn", "allFields", "columnFields", "dataFields", "filterFields", "rowFields", "columnFieldArea", "dataFieldArea", "filterFieldArea", "rowFieldArea", "collapseAll", "dataNotAvailable", "expandAll", "exportToExcel", "grandTotal", "noData", "removeAllSorting", "showFieldChooser", "sortColumnBySummary", "sortRowBySummary", "total", "addRowToNode"] }, { kind: "component", type: i6$1.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6$1.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6$1.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6$1.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6$1.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i6$1.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6$1.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: ["file"] }, { kind: "component", type: InstanceLinkTemplateComponent, selector: "rs-instance-link-template", inputs: ["tenant", "className", "oid", "instanceLinkType", "drawerViewContainerRef", "drawerFormTemplate"] }, { kind: "component", type: UnitInfoTemplateComponent, selector: "rs-unit-info-template", inputs: ["uid", "cellInfo"] }, { kind: "component", type: UserInfoTemplateComponent, selector: "rs-user-info-template", inputs: ["uid", "cellInfo"] }] });
3229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, decorators: [{
3085
3230
  type: Component,
3086
- args: [{ selector: 'rs-form', providers: [FormService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<dx-validation-group *ngIf=\"!loading\">\r\n <rs-box-container [config]=\"config\"\r\n [model]=\"model\"\r\n [opener]=\"this\"\r\n [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\"\r\n [readonly]=\"readonly\"></rs-box-container>\r\n <dx-button #formSubmitter [visible]=\"false\" (onClick)=\"submitForm()\"></dx-button>\r\n</dx-validation-group>\r\n", styles: [":host{padding:12px 24px 20px}:host dx-validation-group{display:flex;flex-flow:row nowrap}\n"] }]
3087
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: FormService }, { type: i0.ElementRef }]; }, propDecorators: { tenant: [{
3231
+ args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n [syncLookupFilterValues]=\"false\"\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [height]=\"height\"\r\n [keyExpr]=\"keyExpr\"\r\n [selectedRowKeys]=\"selectedRowKeys\"\r\n (selectedRowKeysChange)=\"selectedRowKeysChange.emit($event)\"\r\n (onCellPrepared)=\"onCellPrepared.emit($event)\"\r\n (onContentReady)=\"onContentReady.emit($event)\"\r\n (onEditorPreparing)=\"onDxDataGridEditorPreparing($event)\"\r\n (onRowClick)=\"onRowClick.emit($event)\"\r\n (onRowDblClick)=\"onRowDblClick.emit($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged.emit($event)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"!onlyFrontEnd\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{ cellInfo.rowIndex + 1 }}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <rs-instance-link-template [tenant]=\"tenant\"\r\n [className]=\"className\"\r\n [oid]=\"cellInfo.data.oid\"\r\n [instanceLinkType]=\"instanceLinkType\"\r\n [drawerViewContainerRef]=\"drawerInstanceLinkViewContainerRef\"\r\n [drawerFormTemplate]=\"drawerInstanceLinkFormTemplate\">\r\n </rs-instance-link-template>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{ cellInfo.value }}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [file]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [uid]=\"user\" [cellInfo]=\"cellInfo\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [uid]=\"unit\" [cellInfo]=\"cellInfo\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
3232
+ }], ctorParameters: function () { return [{ type: DataGridFactory }, { type: DataGridService }, { type: i0.ViewContainerRef }]; }, propDecorators: { tenant: [{
3088
3233
  type: Input
3089
3234
  }], className: [{
3090
3235
  type: Input
3091
- }], oid: [{
3092
- type: Input
3093
- }], copyOid: [{
3236
+ }], view: [{
3094
3237
  type: Input
3095
- }], template: [{
3238
+ }], filter: [{
3096
3239
  type: Input
3097
- }], extraAttrMap: [{
3240
+ }], customColumnFn: [{
3098
3241
  type: Input
3099
- }], opener: [{
3242
+ }], keyExpr: [{
3100
3243
  type: Input
3101
- }], params: [{
3244
+ }], dataGridName: [{
3102
3245
  type: Input
3103
- }], tabViewContainerRef: [{
3246
+ }], height: [{
3104
3247
  type: Input
3105
3248
  }], onlyFrontEnd: [{
3106
3249
  type: Input
3107
- }], model: [{
3250
+ }], dataSource: [{
3108
3251
  type: Input
3109
- }], readonly: [{
3252
+ }], selectionMode: [{
3110
3253
  type: Input
3111
- }], validator: [{
3112
- type: ViewChild,
3113
- args: [DxValidationGroupComponent]
3114
- }], formSubmitter: [{
3115
- type: ViewChild,
3116
- args: ['formSubmitter']
3117
- }], submitCallback: [{
3254
+ }], selectedRowKeys: [{
3255
+ type: Input
3256
+ }], selectedRowKeysChange: [{
3257
+ type: Output
3258
+ }], showRowNum: [{
3259
+ type: Input
3260
+ }], instanceLinkType: [{
3261
+ type: Input
3262
+ }], drawerInstanceLinkViewContainerRef: [{
3263
+ type: Input
3264
+ }], drawerInstanceLinkFormTemplate: [{
3265
+ type: Input
3266
+ }], onCellPrepared: [{
3267
+ type: Output
3268
+ }], onContentReady: [{
3269
+ type: Output
3270
+ }], onEditorPreparing: [{
3271
+ type: Output
3272
+ }], onRowClick: [{
3273
+ type: Output
3274
+ }], onRowDblClick: [{
3275
+ type: Output
3276
+ }], onSelectionChanged: [{
3118
3277
  type: Output
3278
+ }], dxDataGrid: [{
3279
+ type: ViewChild,
3280
+ args: [DxDataGridComponent, { static: true }]
3281
+ }], rowButtonsTemplate: [{
3282
+ type: ContentChild,
3283
+ args: [RowButtonsTemplateDirective]
3119
3284
  }] } });
3120
3285
 
3121
- class DataDetailComponent {
3122
- constructor(viewContainerRef, service) {
3123
- this.viewContainerRef = viewContainerRef;
3124
- this.service = service;
3125
- this.sections = [];
3126
- this.loading = false;
3127
- }
3128
- ngOnInit() {
3129
- this.loading = true;
3130
- this.service.getSectionList(this.tenant, this.className, this.oid).subscribe(response => {
3131
- this.sections = response.data.list;
3132
- this.loading = false;
3133
- });
3134
- }
3135
- }
3136
- DataDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailComponent, deps: [{ token: i0.ViewContainerRef }, { token: DataDetailService }], target: i0.ɵɵFactoryTarget.Component });
3137
- DataDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataDetailComponent, selector: "coast-data-detail", providers: [DataDetailService], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<div *ngIf=\"!loading && sections.length === 0\" class=\"empty\">\r\n <span>\u60A8\u65E0\u6743\u67E5\u770B\u8BE5\u6570\u636E\u5B9E\u4F8B\u4EFB\u4F55\u4FE1\u606F</span>\r\n</div>\r\n<ng-container *ngIf=\"sections.length > 0\">\r\n <dx-accordion [collapsible]=\"true\" [multiple]=\"true\" [deferRendering]=\"false\" [dataSource]=\"sections\"\r\n [selectedItems]=\"sections\">\r\n <div *dxTemplate=\"let section of 'title'\" class=\"section-title\">\r\n <div class=\"section-title-name\">{{ section.name }}</div>\r\n </div>\r\n <div *dxTemplate=\"let section of 'item'\">\r\n <rs-form [tenant]=\"tenant\" [className]=\"className\" [oid]=\"oid\" [template]=\"section.formTemplate\" [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\" [readonly]=\"true\"></rs-form>\r\n </div>\r\n </dx-accordion>\r\n</ng-container>\r\n", styles: [":host{flex:1;padding:24px;display:flex;flex-flow:column nowrap}:host div.empty{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div.empty span{text-align:center;-webkit-user-select:none;user-select:none}:host .section-title{border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .section-title .section-title-name{height:24px;font-size:14px;font-weight:700;padding:4px 8px;display:flex;flex-flow:column nowrap;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.DxAccordionComponent, selector: "dx-accordion", inputs: ["accessKey", "activeStateEnabled", "animationDuration", "collapsible", "dataSource", "deferRendering", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "itemHoldTimeout", "items", "itemTemplate", "itemTitleTemplate", "keyExpr", "multiple", "noDataText", "repaintChangesOnly", "rtlEnabled", "selectedIndex", "selectedItem", "selectedItemKeys", "selectedItems", "tabIndex", "visible", "width"], outputs: ["onContentReady", "onDisposing", "onInitialized", "onItemClick", "onItemContextMenu", "onItemHold", "onItemRendered", "onItemTitleClick", "onOptionChanged", "onSelectionChanged", "accessKeyChange", "activeStateEnabledChange", "animationDurationChange", "collapsibleChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "itemHoldTimeoutChange", "itemsChange", "itemTemplateChange", "itemTitleTemplateChange", "keyExprChange", "multipleChange", "noDataTextChange", "repaintChangesOnlyChange", "rtlEnabledChange", "selectedIndexChange", "selectedItemChange", "selectedItemKeysChange", "selectedItemsChange", "tabIndexChange", "visibleChange", "widthChange"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i6.DxLoadPanelComponent, selector: "dx-load-panel", inputs: ["animation", "closeOnOutsideClick", "container", "copyRootClassesToWrapper", "deferRendering", "delay", "elementAttr", "focusStateEnabled", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "indicatorSrc", "maxHeight", "maxWidth", "message", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showIndicator", "showPane", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "delayChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "indicatorSrcChange", "maxHeightChange", "maxWidthChange", "messageChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showIndicatorChange", "showPaneChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: FormComponent, selector: "rs-form", inputs: ["tenant", "className", "oid", "copyOid", "template", "extraAttrMap", "opener", "params", "tabViewContainerRef", "onlyFrontEnd", "model", "readonly"], outputs: ["submitCallback"] }] });
3138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailComponent, decorators: [{
3139
- type: Component,
3140
- args: [{ selector: 'coast-data-detail', providers: [DataDetailService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\"\r\n [visible]=\"loading\">\r\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\r\n</dx-load-panel>\r\n<div *ngIf=\"!loading && sections.length === 0\" class=\"empty\">\r\n <span>\u60A8\u65E0\u6743\u67E5\u770B\u8BE5\u6570\u636E\u5B9E\u4F8B\u4EFB\u4F55\u4FE1\u606F</span>\r\n</div>\r\n<ng-container *ngIf=\"sections.length > 0\">\r\n <dx-accordion [collapsible]=\"true\" [multiple]=\"true\" [deferRendering]=\"false\" [dataSource]=\"sections\"\r\n [selectedItems]=\"sections\">\r\n <div *dxTemplate=\"let section of 'title'\" class=\"section-title\">\r\n <div class=\"section-title-name\">{{ section.name }}</div>\r\n </div>\r\n <div *dxTemplate=\"let section of 'item'\">\r\n <rs-form [tenant]=\"tenant\" [className]=\"className\" [oid]=\"oid\" [template]=\"section.formTemplate\" [params]=\"params\"\r\n [tabViewContainerRef]=\"tabViewContainerRef\" [readonly]=\"true\"></rs-form>\r\n </div>\r\n </dx-accordion>\r\n</ng-container>\r\n", styles: [":host{flex:1;padding:24px;display:flex;flex-flow:column nowrap}:host div.empty{flex:1;padding:16px;display:flex;flex-flow:row nowrap;justify-content:center;align-items:center}:host div.empty span{text-align:center;-webkit-user-select:none;user-select:none}:host .section-title{border-bottom:1px solid var(--coast-border-color, #dddddd)}:host .section-title .section-title-name{height:24px;font-size:14px;font-weight:700;padding:4px 8px;display:flex;flex-flow:column nowrap;justify-content:center}\n"] }]
3141
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: DataDetailService }]; } });
3142
-
3143
3286
  class FormModule {
3144
3287
  }
3145
3288
  FormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -3166,6 +3309,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3166
3309
  }]
3167
3310
  }] });
3168
3311
 
3312
+ class DataGridModule {
3313
+ }
3314
+ DataGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3315
+ DataGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, declarations: [DataGridComponent,
3316
+ FileCellTemplateComponent,
3317
+ InstanceLinkTemplateComponent,
3318
+ UnitInfoTemplateComponent,
3319
+ UserInfoTemplateComponent,
3320
+ RowButtonsTemplateDirective], imports: [CommonModule,
3321
+ DevExtremeModule,
3322
+ FormModule], exports: [DataGridComponent,
3323
+ RowButtonsTemplateDirective] });
3324
+ DataGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, imports: [CommonModule,
3325
+ DevExtremeModule,
3326
+ FormModule] });
3327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, decorators: [{
3328
+ type: NgModule,
3329
+ args: [{
3330
+ declarations: [
3331
+ DataGridComponent,
3332
+ FileCellTemplateComponent,
3333
+ InstanceLinkTemplateComponent,
3334
+ UnitInfoTemplateComponent,
3335
+ UserInfoTemplateComponent,
3336
+ RowButtonsTemplateDirective
3337
+ ],
3338
+ imports: [
3339
+ CommonModule,
3340
+ DevExtremeModule,
3341
+ FormModule
3342
+ ],
3343
+ exports: [
3344
+ DataGridComponent,
3345
+ RowButtonsTemplateDirective
3346
+ ]
3347
+ }]
3348
+ }] });
3349
+
3169
3350
  class DataDetailModule {
3170
3351
  }
3171
3352
  DataDetailModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataDetailModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -3192,49 +3373,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3192
3373
  }]
3193
3374
  }] });
3194
3375
 
3195
- class DrawerComponent {
3196
- constructor(elementRef) {
3197
- this.elementRef = elementRef;
3198
- this.size = 'default';
3199
- this._width = '480px';
3200
- }
3201
- ngOnInit() {
3202
- if (this.size === 'large') {
3203
- this._width = '960px';
3204
- }
3205
- }
3206
- show() {
3207
- // 若存在多层抽屉,仅保留最上层遮罩颜色,下层遮罩设置为透明
3208
- const nodeName = this.elementRef.nativeElement.nodeName;
3209
- const drawers = this._parentViewContainerRef.element.nativeElement.parentElement.querySelectorAll(nodeName);
3210
- for (let i = 0; i < drawers.length; i++) {
3211
- if (i === drawers.length - 1) {
3212
- drawers[i].querySelector('.drawer-backdrop').style.backgroundColor = 'rgba(37, 43, 58, 0.05)';
3213
- }
3214
- else {
3215
- drawers[i].querySelector('.drawer-backdrop').style.backgroundColor = 'rgba(37, 43, 58, 0)';
3216
- }
3217
- }
3218
- }
3219
- hide($event, backdrop) {
3220
- // 在service中重写
3221
- }
3222
- ngOnDestroy() {
3223
- // 若存在多层抽屉,下一层遮罩设置为不透明
3224
- const nodeName = this.elementRef.nativeElement.nodeName;
3225
- const nextDrawer = this._parentViewContainerRef.element.nativeElement.parentElement.querySelector(nodeName + ':nth-last-child(2)');
3226
- if (nextDrawer) {
3227
- nextDrawer.querySelector('.drawer-backdrop').style.backgroundColor = 'rgba(37, 43, 58, 0.05)';
3228
- }
3229
- }
3230
- }
3231
- DrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
3232
- DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DrawerComponent, selector: "rs-drawer", ngImport: i0, template: "<div #drawerBackdrop class=\"drawer-backdrop\" (click)=\"hide($event, drawerBackdrop)\">\r\n <div class=\"drawer\" [ngStyle]=\"{width: _width}\">\r\n <div *ngIf=\"headerTemplate\" class=\"drawer-header\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: headerTemplateContext}\"></ng-template>\r\n </div>\r\n <div class=\"drawer-content\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\r\n </div>\r\n <div class=\"drawer-close\">\r\n <dx-button height=\"40px\" icon=\"coast-icon coast-icon-arrow-right-filling\" (onClick)=\"hide($event)\"></dx-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .drawer-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-drawer, 1040) - 1)}:host .drawer-backdrop .drawer{position:absolute;right:0;height:100%;z-index:var(--coast-z-index-drawer, 1040);background-color:var(--coast-base-bg-color, #fff);display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-header{flex:0 0 36px;padding:8px;border-bottom:1px solid var(--coast-border-color, #dddddd);display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end}:host .drawer-backdrop .drawer .drawer-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-close{position:absolute;height:100%;width:20px;top:0;left:-20px;display:flex;flex-flow:row nowrap;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }] });
3233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, decorators: [{
3234
- type: Component,
3235
- args: [{ selector: 'rs-drawer', template: "<div #drawerBackdrop class=\"drawer-backdrop\" (click)=\"hide($event, drawerBackdrop)\">\r\n <div class=\"drawer\" [ngStyle]=\"{width: _width}\">\r\n <div *ngIf=\"headerTemplate\" class=\"drawer-header\">\r\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: headerTemplateContext}\"></ng-template>\r\n </div>\r\n <div class=\"drawer-content\">\r\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"{$implicit: contentTemplateContext}\"></ng-template>\r\n </div>\r\n <div class=\"drawer-close\">\r\n <dx-button height=\"40px\" icon=\"coast-icon coast-icon-arrow-right-filling\" (onClick)=\"hide($event)\"></dx-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .drawer-backdrop{position:absolute;inset:0;z-index:calc(var(--coast-z-index-drawer, 1040) - 1)}:host .drawer-backdrop .drawer{position:absolute;right:0;height:100%;z-index:var(--coast-z-index-drawer, 1040);background-color:var(--coast-base-bg-color, #fff);display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-header{flex:0 0 36px;padding:8px;border-bottom:1px solid var(--coast-border-color, #dddddd);display:flex;flex-flow:row nowrap;align-items:center;justify-content:flex-end}:host .drawer-backdrop .drawer .drawer-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .drawer-backdrop .drawer .drawer-close{position:absolute;height:100%;width:20px;top:0;left:-20px;display:flex;flex-flow:row nowrap;align-items:center}\n"] }]
3236
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
3237
-
3238
3376
  class DrawerModule {
3239
3377
  }
3240
3378
  DrawerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -3255,35 +3393,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3255
3393
  }]
3256
3394
  }] });
3257
3395
 
3258
- class DrawerService {
3259
- constructor() {
3260
- }
3261
- open(viewContainerRef, size = 'default', contentTemplate, contentTemplateContext, headerTemplate, headerTemplateContext) {
3262
- const drawerRef = viewContainerRef.createComponent(DrawerComponent);
3263
- drawerRef.instance.hide = ($event, backdrop) => {
3264
- if ($event.target === backdrop) {
3265
- drawerRef.hostView.destroy();
3266
- }
3267
- };
3268
- drawerRef.instance.size = size;
3269
- drawerRef.instance.headerTemplate = headerTemplate;
3270
- drawerRef.instance.headerTemplateContext = headerTemplateContext;
3271
- drawerRef.instance.contentTemplate = contentTemplate;
3272
- drawerRef.instance.contentTemplateContext = contentTemplateContext;
3273
- drawerRef.instance._parentViewContainerRef = viewContainerRef;
3274
- drawerRef.instance.show();
3275
- return drawerRef.instance;
3276
- }
3277
- }
3278
- DrawerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3279
- DrawerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerService, providedIn: 'root' });
3280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerService, decorators: [{
3281
- type: Injectable,
3282
- args: [{
3283
- providedIn: 'root'
3284
- }]
3285
- }], ctorParameters: function () { return []; } });
3286
-
3287
3396
  class TooltipContentTemplateDirective {
3288
3397
  constructor(templateRef) {
3289
3398
  this.templateRef = templateRef;
@@ -3315,10 +3424,10 @@ class DynamicParamsComponent {
3315
3424
  }
3316
3425
  }
3317
3426
  DynamicParamsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DynamicParamsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3318
- DynamicParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DynamicParamsComponent, selector: "rs-dynamic-params", inputs: { label: "label", showHelp: "showHelp", keyPlaceholder: "keyPlaceholder", valuePlaceholder: "valuePlaceholder", params: "params", required: "required", readonly: "readonly" }, queries: [{ propertyName: "tooltipContentTemplate", first: true, predicate: TooltipContentTemplateDirective, descendants: true }], ngImport: i0, template: "<div class=\"dx-field\">\r\n <div class=\"dx-field-label\">\r\n <span>{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"required-mark\">&nbsp;*</span>\r\n <i *ngIf=\"showHelp\" #dynamicParamsSpan class=\"coast-icon-help cursor-pointer\">\r\n <dx-tooltip [target]=\"dynamicParamsSpan\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'mouseover'\"\r\n [hideEvent]=\"'mouseout'\">\r\n <div *dxTemplate=\"let data of 'content'\"\r\n style=\"display: flex; flex-flow: column nowrap;align-items: flex-start;\">\r\n <ng-container [ngTemplateOutlet]=\"tooltipContentTemplate.templateRef\"></ng-container>\r\n </div>\r\n </dx-tooltip>\r\n </i>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-add\" (onClick)=\"add()\"\r\n [disabled]=\"readonly\"></dx-button>\r\n </div>\r\n <div class=\"dx-field-value\">\r\n <div *ngFor=\"let param of params; let index = index\">\r\n <dx-text-box [placeholder]=\"keyPlaceholder\" [(value)]=\"param.name\" [disabled]=\"readonly\"></dx-text-box>\r\n <dx-text-box [placeholder]=\"valuePlaceholder\" [(value)]=\"param.value\" [disabled]=\"readonly\"></dx-text-box>\r\n <dx-button type=\"danger\" stylingMode=\"text\" icon=\"coast-icon coast-icon-close\"\r\n (onClick)=\"delete(index)\" [disabled]=\"readonly\"></dx-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .dx-field .dx-field-label{display:flex;align-items:center}:host .dx-field .dx-field-value div{display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-value div dx-text-box{flex:1}\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: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i4$1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
3427
+ DynamicParamsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DynamicParamsComponent, selector: "rs-dynamic-params", inputs: { label: "label", showHelp: "showHelp", keyPlaceholder: "keyPlaceholder", valuePlaceholder: "valuePlaceholder", params: "params", required: "required", readonly: "readonly" }, queries: [{ propertyName: "tooltipContentTemplate", first: true, predicate: TooltipContentTemplateDirective, descendants: true }], ngImport: i0, template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>{{ label }}</span>\n <span *ngIf=\"required\" class=\"required-mark\">&nbsp;*</span>\n <i *ngIf=\"showHelp\" #dynamicParamsSpan class=\"coast-icon-help cursor-pointer\">\n <dx-tooltip [target]=\"dynamicParamsSpan\"\n [position]=\"'top'\"\n [showEvent]=\"'mouseover'\"\n [hideEvent]=\"'mouseout'\">\n <div *dxTemplate=\"let data of 'content'\"\n style=\"display: flex; flex-flow: column nowrap;align-items: flex-start;\">\n <ng-container [ngTemplateOutlet]=\"tooltipContentTemplate.templateRef\"></ng-container>\n </div>\n </dx-tooltip>\n </i>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-add\" (onClick)=\"add()\"\n [disabled]=\"readonly\"></dx-button>\n </div>\n <div class=\"dx-field-value\">\n <div *ngFor=\"let param of params; let index = index\">\n <dx-text-box [placeholder]=\"keyPlaceholder\" [(value)]=\"param.name\" [disabled]=\"readonly\"></dx-text-box>\n <dx-text-box [placeholder]=\"valuePlaceholder\" [(value)]=\"param.value\" [disabled]=\"readonly\"></dx-text-box>\n <dx-button type=\"danger\" stylingMode=\"text\" icon=\"coast-icon coast-icon-close\"\n (onClick)=\"delete(index)\" [disabled]=\"readonly\"></dx-button>\n </div>\n </div>\n</div>\n", styles: [":host .dx-field .dx-field-label{display:flex;align-items:center}:host .dx-field .dx-field-value div{display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-value div dx-text-box{flex:1}\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: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i4$1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i5.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
3319
3428
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DynamicParamsComponent, decorators: [{
3320
3429
  type: Component,
3321
- args: [{ selector: 'rs-dynamic-params', template: "<div class=\"dx-field\">\r\n <div class=\"dx-field-label\">\r\n <span>{{ label }}</span>\r\n <span *ngIf=\"required\" class=\"required-mark\">&nbsp;*</span>\r\n <i *ngIf=\"showHelp\" #dynamicParamsSpan class=\"coast-icon-help cursor-pointer\">\r\n <dx-tooltip [target]=\"dynamicParamsSpan\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'mouseover'\"\r\n [hideEvent]=\"'mouseout'\">\r\n <div *dxTemplate=\"let data of 'content'\"\r\n style=\"display: flex; flex-flow: column nowrap;align-items: flex-start;\">\r\n <ng-container [ngTemplateOutlet]=\"tooltipContentTemplate.templateRef\"></ng-container>\r\n </div>\r\n </dx-tooltip>\r\n </i>\r\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-add\" (onClick)=\"add()\"\r\n [disabled]=\"readonly\"></dx-button>\r\n </div>\r\n <div class=\"dx-field-value\">\r\n <div *ngFor=\"let param of params; let index = index\">\r\n <dx-text-box [placeholder]=\"keyPlaceholder\" [(value)]=\"param.name\" [disabled]=\"readonly\"></dx-text-box>\r\n <dx-text-box [placeholder]=\"valuePlaceholder\" [(value)]=\"param.value\" [disabled]=\"readonly\"></dx-text-box>\r\n <dx-button type=\"danger\" stylingMode=\"text\" icon=\"coast-icon coast-icon-close\"\r\n (onClick)=\"delete(index)\" [disabled]=\"readonly\"></dx-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host .dx-field .dx-field-label{display:flex;align-items:center}:host .dx-field .dx-field-value div{display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-value div dx-text-box{flex:1}\n"] }]
3430
+ args: [{ selector: 'rs-dynamic-params', template: "<div class=\"dx-field\">\n <div class=\"dx-field-label\">\n <span>{{ label }}</span>\n <span *ngIf=\"required\" class=\"required-mark\">&nbsp;*</span>\n <i *ngIf=\"showHelp\" #dynamicParamsSpan class=\"coast-icon-help cursor-pointer\">\n <dx-tooltip [target]=\"dynamicParamsSpan\"\n [position]=\"'top'\"\n [showEvent]=\"'mouseover'\"\n [hideEvent]=\"'mouseout'\">\n <div *dxTemplate=\"let data of 'content'\"\n style=\"display: flex; flex-flow: column nowrap;align-items: flex-start;\">\n <ng-container [ngTemplateOutlet]=\"tooltipContentTemplate.templateRef\"></ng-container>\n </div>\n </dx-tooltip>\n </i>\n <dx-button type=\"default\" stylingMode=\"text\" icon=\"coast-icon coast-icon-add\" (onClick)=\"add()\"\n [disabled]=\"readonly\"></dx-button>\n </div>\n <div class=\"dx-field-value\">\n <div *ngFor=\"let param of params; let index = index\">\n <dx-text-box [placeholder]=\"keyPlaceholder\" [(value)]=\"param.name\" [disabled]=\"readonly\"></dx-text-box>\n <dx-text-box [placeholder]=\"valuePlaceholder\" [(value)]=\"param.value\" [disabled]=\"readonly\"></dx-text-box>\n <dx-button type=\"danger\" stylingMode=\"text\" icon=\"coast-icon coast-icon-close\"\n (onClick)=\"delete(index)\" [disabled]=\"readonly\"></dx-button>\n </div>\n </div>\n</div>\n", styles: [":host .dx-field .dx-field-label{display:flex;align-items:center}:host .dx-field .dx-field-value div{display:flex;flex-flow:row nowrap}:host .dx-field .dx-field-value div dx-text-box{flex:1}\n"] }]
3322
3431
  }], propDecorators: { label: [{
3323
3432
  type: Input
3324
3433
  }], showHelp: [{
@@ -3478,10 +3587,10 @@ class IconSelectorComponent {
3478
3587
  }
3479
3588
  }
3480
3589
  IconSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: IconSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3481
- IconSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: IconSelectorComponent, selector: "rs-icon-selector", inputs: { target: "target" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["iconSelector"], descendants: true, static: true }, { propertyName: "iconZoomOut", first: true, predicate: ["iconZoomOut"], descendants: true, static: true }], ngImport: i0, template: "<dx-popover #iconSelector\r\n maxWidth=\"280\"\r\n maxHeight=\"280\"\r\n [target]=\"target\"\r\n [showEvent]=\"{name: 'click'}\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <ng-container *ngFor=\"let icon of iconList; let index=index\">\r\n <dx-button [icon]=\"'coast-icon ' + icon\" (onClick)=\"selectIcon(icon)\"\r\n (mouseenter)=\"zoomOut($event, icon)\" (mouseleave)=\"iconZoomOut.instance.hide()\"></dx-button>\r\n </ng-container>\r\n </div>\r\n</dx-popover>\r\n<dx-popover #iconZoomOut height=\"72px\" [enableBodyScroll]=\"false\">\r\n <div *dxTemplate=\"let data of 'content'\"\r\n style=\"display: flex; flex-flow: column nowrap; align-items: center; justify-content: center;\">\r\n <i [class]=\"hoverIcon\" style=\"font-size: 36px;\"></i>\r\n <span>{{hoverIcon?.substring(11)}}</span>\r\n </div>\r\n</dx-popover>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i4$2.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "enableBodyScroll", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "enableBodyScrollChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
3590
+ IconSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: IconSelectorComponent, selector: "rs-icon-selector", inputs: { target: "target" }, outputs: { select: "select" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["iconSelector"], descendants: true, static: true }, { propertyName: "iconZoomOut", first: true, predicate: ["iconZoomOut"], descendants: true, static: true }], ngImport: i0, template: "<dx-popover #iconSelector\n maxWidth=\"280\"\n maxHeight=\"280\"\n [target]=\"target\"\n [showEvent]=\"{name: 'click'}\">\n <div *dxTemplate=\"let data of 'content'\">\n <ng-container *ngFor=\"let icon of iconList; let index=index\">\n <dx-button [icon]=\"'coast-icon ' + icon\" (onClick)=\"selectIcon(icon)\"\n (mouseenter)=\"zoomOut($event, icon)\" (mouseleave)=\"iconZoomOut.instance.hide()\"></dx-button>\n </ng-container>\n </div>\n</dx-popover>\n<dx-popover #iconZoomOut height=\"72px\" [enableBodyScroll]=\"false\">\n <div *dxTemplate=\"let data of 'content'\"\n style=\"display: flex; flex-flow: column nowrap; align-items: center; justify-content: center;\">\n <i [class]=\"hoverIcon\" style=\"font-size: 36px;\"></i>\n <span>{{hoverIcon?.substring(11)}}</span>\n </div>\n</dx-popover>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i4.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i4$2.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "enableBodyScroll", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "enableBodyScrollChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }] });
3482
3591
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: IconSelectorComponent, decorators: [{
3483
3592
  type: Component,
3484
- args: [{ selector: 'rs-icon-selector', template: "<dx-popover #iconSelector\r\n maxWidth=\"280\"\r\n maxHeight=\"280\"\r\n [target]=\"target\"\r\n [showEvent]=\"{name: 'click'}\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <ng-container *ngFor=\"let icon of iconList; let index=index\">\r\n <dx-button [icon]=\"'coast-icon ' + icon\" (onClick)=\"selectIcon(icon)\"\r\n (mouseenter)=\"zoomOut($event, icon)\" (mouseleave)=\"iconZoomOut.instance.hide()\"></dx-button>\r\n </ng-container>\r\n </div>\r\n</dx-popover>\r\n<dx-popover #iconZoomOut height=\"72px\" [enableBodyScroll]=\"false\">\r\n <div *dxTemplate=\"let data of 'content'\"\r\n style=\"display: flex; flex-flow: column nowrap; align-items: center; justify-content: center;\">\r\n <i [class]=\"hoverIcon\" style=\"font-size: 36px;\"></i>\r\n <span>{{hoverIcon?.substring(11)}}</span>\r\n </div>\r\n</dx-popover>\r\n" }]
3593
+ args: [{ selector: 'rs-icon-selector', template: "<dx-popover #iconSelector\n maxWidth=\"280\"\n maxHeight=\"280\"\n [target]=\"target\"\n [showEvent]=\"{name: 'click'}\">\n <div *dxTemplate=\"let data of 'content'\">\n <ng-container *ngFor=\"let icon of iconList; let index=index\">\n <dx-button [icon]=\"'coast-icon ' + icon\" (onClick)=\"selectIcon(icon)\"\n (mouseenter)=\"zoomOut($event, icon)\" (mouseleave)=\"iconZoomOut.instance.hide()\"></dx-button>\n </ng-container>\n </div>\n</dx-popover>\n<dx-popover #iconZoomOut height=\"72px\" [enableBodyScroll]=\"false\">\n <div *dxTemplate=\"let data of 'content'\"\n style=\"display: flex; flex-flow: column nowrap; align-items: center; justify-content: center;\">\n <i [class]=\"hoverIcon\" style=\"font-size: 36px;\"></i>\n <span>{{hoverIcon?.substring(11)}}</span>\n </div>\n</dx-popover>\n" }]
3485
3594
  }], ctorParameters: function () { return []; }, propDecorators: { target: [{
3486
3595
  type: Input
3487
3596
  }], select: [{
@@ -3896,5 +4005,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
3896
4005
  * Generated bundle index. Do not edit.
3897
4006
  */
3898
4007
 
3899
- export { BoxContainerComponent, BoxContainerModule, CamundaBpmnEditorComponent, CamundaBpmnEditorModule, ChangeFilter, CodeEditorComponent, CodeEditorModule, DataDetailComponent, DataDetailModule, DataGridComponent, DataGridFactory, DataGridModule, DataGridService, DrawerComponent, DrawerModule, DrawerService, DynamicParamsComponent, DynamicParamsModule, FormComponent, FormModule, FormService, FullscreenDirective, IconSelectorComponent, IconSelectorModule, InstanceLinkTemplateDirective, ItemConfigComponent, ItemStyleComponent, MasterDetailTemplateDirective, ModalComponent, ModalModule, ModalService, PdfViewerComponent, PluginManager, RowButtonsTemplateDirective, TooltipContentTemplateDirective, WebsocketModule, WebsocketService, download_file, file_type_icon, format_date, format_datetime, format_file_size, notify_error, notify_success, notify_warning, support_preview_ext, validate, validate_group };
4008
+ export { BoxContainerComponent, BoxContainerModule, CamundaBpmnEditorComponent, CamundaBpmnEditorModule, ChangeFilter, CodeEditorComponent, CodeEditorModule, DataDetailComponent, DataDetailModule, DataGridComponent, DataGridFactory, DataGridModule, DataGridService, DrawerComponent, DrawerModule, DrawerService, DynamicParamsComponent, DynamicParamsModule, FormComponent, FormModule, FormService, FullscreenDirective, IconSelectorComponent, IconSelectorModule, ItemConfigComponent, ItemStyleComponent, ModalComponent, ModalModule, ModalService, PdfViewerComponent, PluginManager, RowButtonsTemplateDirective, TooltipContentTemplateDirective, WebsocketModule, WebsocketService, download_file, file_type_icon, format_date, format_datetime, format_file_size, notify_error, notify_success, notify_warning, support_preview_ext, validate, validate_group };
3900
4009
  //# sourceMappingURL=ngx-rs-ant.mjs.map