ngx-rs-ant 1.6.5 → 1.6.7

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 (32) hide show
  1. package/box-container/box-container.component.d.ts +2 -1
  2. package/camunda-bpmn-editor/custom/hide-other/{GatewayReplaceMenuProvider.d.ts → CustomReplaceMenuProvider.d.ts} +1 -1
  3. package/camunda-bpmn-editor/custom/hide-other/HideOtherContextPadProvider.d.ts +1 -1
  4. package/camunda-bpmn-editor/custom/hide-other/index.d.ts +2 -2
  5. package/camunda-bpmn-editor/custom/user-task/initUserTask.d.ts +1 -0
  6. package/data-grid/data-grid.service.d.ts +0 -1
  7. package/data-grid/instance-link-template/instance-link-template.component.d.ts +1 -0
  8. package/drawer/drawer.component.d.ts +3 -5
  9. package/drawer/drawer.service.d.ts +1 -2
  10. package/esm2020/box-container/PluginManager.mjs +2 -1
  11. package/esm2020/box-container/box-container.component.mjs +4 -2
  12. package/esm2020/camunda-bpmn-editor/camunda-bpmn-editor.component.mjs +1 -2
  13. package/esm2020/camunda-bpmn-editor/custom/hide-other/CustomReplaceMenuProvider.mjs +22 -0
  14. package/esm2020/camunda-bpmn-editor/custom/hide-other/HideOtherContextPadProvider.mjs +7 -2
  15. package/esm2020/camunda-bpmn-editor/custom/hide-other/HideOtherPaletteProvider.mjs +2 -2
  16. package/esm2020/camunda-bpmn-editor/custom/hide-other/index.mjs +3 -3
  17. package/esm2020/camunda-bpmn-editor/custom/service-task/ServiceTaskContextPadProvider.mjs +1 -1
  18. package/esm2020/camunda-bpmn-editor/custom/user-task/UserTaskContextPadProvider.mjs +4 -7
  19. package/esm2020/camunda-bpmn-editor/custom/user-task/UserTaskPaletteProvider.mjs +3 -4
  20. package/esm2020/camunda-bpmn-editor/custom/user-task/initUserTask.mjs +13 -0
  21. package/esm2020/data-grid/data-grid.service.mjs +1 -10
  22. package/esm2020/data-grid/instance-link-template/instance-link-template.component.mjs +5 -3
  23. package/esm2020/drawer/drawer.component.mjs +7 -14
  24. package/esm2020/drawer/drawer.service.mjs +11 -7
  25. package/esm2020/form/form.component.mjs +1 -1
  26. package/esm2020/util/change-filter.mjs +3 -2
  27. package/fesm2015/ngx-rs-ant.mjs +53 -47
  28. package/fesm2015/ngx-rs-ant.mjs.map +1 -1
  29. package/fesm2020/ngx-rs-ant.mjs +52 -47
  30. package/fesm2020/ngx-rs-ant.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/esm2020/camunda-bpmn-editor/custom/hide-other/GatewayReplaceMenuProvider.mjs +0 -22
@@ -296,6 +296,7 @@ class PluginManager {
296
296
  }
297
297
  instance.opener = boxItem.boxContainer.opener;
298
298
  instance.params = boxItem.boxContainer.params;
299
+ instance.tabId = boxItem.boxContainer.tabId;
299
300
  instance.tabViewContainerRef = boxItem.boxContainer.tabViewContainerRef;
300
301
  if (boxItem.boxContainer.editMode) {
301
302
  instance.onRemove = () => {
@@ -781,8 +782,9 @@ class ChangeFilter {
781
782
  this.subscriptions.add(this.subject.subscribe(changes => {
782
783
  let hasChange = false;
783
784
  for (let key of keys) {
784
- if (changes[key] && !changes[key].isFirstChange()) {
785
+ if (changes[key] && !(changes[key].previousValue == changes[key].currentValue) && !changes[key].isFirstChange()) {
785
786
  hasChange = true;
787
+ break;
786
788
  }
787
789
  }
788
790
  if (hasChange) {
@@ -846,7 +848,7 @@ class BoxContainerComponent {
846
848
  }
847
849
  }
848
850
  BoxContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BoxContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
849
- BoxContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BoxContainerComponent, selector: "rs-box-container", inputs: { id: "id", editMode: "editMode", 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"] });
851
+ BoxContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: BoxContainerComponent, selector: "rs-box-container", inputs: { id: "id", editMode: "editMode", config: "config", model: "model", opener: "opener", params: "params", readonly: "readonly", tabId: "tabId", 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"] });
850
852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: BoxContainerComponent, decorators: [{
851
853
  type: Component,
852
854
  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"] }]
@@ -864,6 +866,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
864
866
  type: Input
865
867
  }], readonly: [{
866
868
  type: Input
869
+ }], tabId: [{
870
+ type: Input
867
871
  }], tabViewContainerRef: [{
868
872
  type: Input
869
873
  }], boxContainerContent: [{
@@ -967,6 +971,19 @@ var customTranslateModule = {
967
971
  translate: ['value', customTranslate]
968
972
  };
969
973
 
974
+ function initUserTask(moddle, modeling, userTask) {
975
+ console.log(userTask);
976
+ const loopCharacteristics = moddle.create('bpmn:MultiInstanceLoopCharacteristics');
977
+ modeling.updateModdleProperties(userTask, loopCharacteristics, {
978
+ ['camunda:collection']: '${workflowHelper.collectUsers(execution, "' + userTask.id + '")}',
979
+ ['camunda:elementVariable']: 'user'
980
+ });
981
+ modeling.updateProperties(userTask, {
982
+ loopCharacteristics,
983
+ ['camunda:assignee']: '${user}'
984
+ });
985
+ }
986
+
970
987
  class UserTaskPaletteProvider {
971
988
  constructor(palette, translate, elementFactory, moddle, modeling, create) {
972
989
  this.translate = translate;
@@ -992,9 +1009,7 @@ class UserTaskPaletteProvider {
992
1009
  }
993
1010
  createUserTask(event) {
994
1011
  const shape = this.elementFactory.createShape({ type: 'bpmn:UserTask' });
995
- const loopCharacteristics = this.moddle.create('bpmn:MultiInstanceLoopCharacteristics');
996
- loopCharacteristics.set('isSequential', false);
997
- this.modeling.updateProperties(shape, { loopCharacteristics });
1012
+ initUserTask(this.moddle, this.modeling, shape);
998
1013
  this.create.start(event, shape);
999
1014
  }
1000
1015
  }
@@ -1035,17 +1050,13 @@ class UserTaskContextPadProvider {
1035
1050
  }
1036
1051
  appendUserTask(event, source) {
1037
1052
  const shape = this.elementFactory.createShape({ type: 'bpmn:UserTask' });
1038
- const loopCharacteristics = this.moddle.create('bpmn:MultiInstanceLoopCharacteristics');
1039
- loopCharacteristics.set('isSequential', false);
1040
- this.modeling.updateProperties(shape, { loopCharacteristics });
1053
+ initUserTask(this.moddle, this.modeling, shape);
1041
1054
  this.autoPlace.append(source, shape);
1042
1055
  this.appendPreview.cleanUp();
1043
1056
  }
1044
1057
  appendUserTaskStart(event, source) {
1045
1058
  const shape = this.elementFactory.createShape({ type: 'bpmn:UserTask' });
1046
- const loopCharacteristics = this.moddle.create('bpmn:MultiInstanceLoopCharacteristics');
1047
- loopCharacteristics.set('isSequential', false);
1048
- this.modeling.updateProperties(shape, { loopCharacteristics });
1059
+ initUserTask(this.moddle, this.modeling, shape);
1049
1060
  this.create.start(event, shape, {
1050
1061
  source: source
1051
1062
  });
@@ -1150,7 +1161,7 @@ class HideOtherPaletteProvider {
1150
1161
  'create.end-event',
1151
1162
  'create.user-task',
1152
1163
  'create.service-task',
1153
- // 'create.exclusive-gateway'
1164
+ 'create.exclusive-gateway'
1154
1165
  ];
1155
1166
  palette.registerProvider(0, this);
1156
1167
  }
@@ -1185,6 +1196,11 @@ class HideOtherContextPadProvider {
1185
1196
  };
1186
1197
  }
1187
1198
  else if (is(element, 'bpmn:SequenceFlow')) {
1199
+ if (is(element.businessObject.sourceRef, 'bpmn:Task')) {
1200
+ return {
1201
+ 'delete': entries['delete']
1202
+ };
1203
+ }
1188
1204
  if (entries['replace']) {
1189
1205
  return {
1190
1206
  'replace': this.createReplaceAction(element),
@@ -1209,7 +1225,7 @@ class HideOtherContextPadProvider {
1209
1225
  return {
1210
1226
  'append.user-task': entries['append.user-task'],
1211
1227
  'append.service-task': entries['append.service-task'],
1212
- // 'append.gateway': entries['append.gateway'],
1228
+ 'append.gateway': entries['append.gateway'],
1213
1229
  'append.end-event': entries['append.end-event'],
1214
1230
  'connect': entries['connect'],
1215
1231
  'delete': entries['delete']
@@ -1247,7 +1263,7 @@ class HideOtherContextPadProvider {
1247
1263
  }
1248
1264
  }
1249
1265
 
1250
- class GatewayReplaceMenuProvider {
1266
+ class CustomReplaceMenuProvider {
1251
1267
  constructor(popupMenu) {
1252
1268
  popupMenu.registerProvider('bpmn-replace', 0, this);
1253
1269
  }
@@ -1272,7 +1288,7 @@ var customHideOtherModule = {
1272
1288
  __init__: ['hideOtherPaletteProvider', 'hideOtherContextPadProvider', 'gatewayReplaceMenuProvider'],
1273
1289
  hideOtherPaletteProvider: ['type', HideOtherPaletteProvider],
1274
1290
  hideOtherContextPadProvider: ['type', HideOtherContextPadProvider],
1275
- gatewayReplaceMenuProvider: ['type', GatewayReplaceMenuProvider]
1291
+ gatewayReplaceMenuProvider: ['type', CustomReplaceMenuProvider]
1276
1292
  };
1277
1293
 
1278
1294
  class CodeEditorComponent {
@@ -1399,7 +1415,6 @@ class CamundaBpmnEditorComponent {
1399
1415
  customUserTaskModule,
1400
1416
  customServiceTaskModule,
1401
1417
  customHideOtherModule,
1402
- // customPropertiesPanelModule
1403
1418
  ]
1404
1419
  });
1405
1420
  const logo = this.modeler._container.querySelector('.bjs-powered-by');
@@ -1659,15 +1674,6 @@ class DataGridService {
1659
1674
  responseType: "blob"
1660
1675
  });
1661
1676
  }
1662
- getInstanceCaption(tenant, className, oid) {
1663
- return this.http.get('api/data/' + className + '/' + oid + '/caption', {
1664
- params: {
1665
- tenant
1666
- }
1667
- }).pipe(map(response => {
1668
- return response.data;
1669
- }));
1670
- }
1671
1677
  getUserInfo(uid) {
1672
1678
  if (!this.userInfoCache.hasOwnProperty(uid)) {
1673
1679
  this.userInfoCache[uid] = this.http.get('api/data/custom', {
@@ -2572,7 +2578,7 @@ class FormComponent {
2572
2578
  }
2573
2579
  }
2574
2580
  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 });
2575
- 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: { onDataLoaded: "onDataLoaded", 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-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\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:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BoxContainerComponent, selector: "rs-box-container", inputs: ["id", "editMode", "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: i3.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$1.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { 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.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: i8.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }, { kind: "component", type: i9.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
2581
+ 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: { onDataLoaded: "onDataLoaded", 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-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\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:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BoxContainerComponent, selector: "rs-box-container", inputs: ["id", "editMode", "config", "model", "opener", "params", "readonly", "tabId", "tabViewContainerRef"] }, { kind: "component", type: i6$1.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }, { kind: "component", type: i3.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$1.DxiValidationRuleComponent, selector: "dxi-validation-rule", inputs: ["message", "trim", "type", "ignoreEmptyValue", "max", "min", "reevaluate", "validationCallback", "comparisonTarget", "comparisonType", "pattern"] }, { 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.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: i8.DxValidationGroupComponent, selector: "dx-validation-group", inputs: ["elementAttr", "height", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "elementAttrChange", "heightChange", "widthChange"] }, { kind: "component", type: i9.DxValidatorComponent, selector: "dx-validator", inputs: ["adapter", "elementAttr", "height", "name", "validationGroup", "validationRules", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onValidated", "adapterChange", "elementAttrChange", "heightChange", "nameChange", "validationGroupChange", "validationRulesChange", "widthChange"] }] });
2576
2582
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: FormComponent, decorators: [{
2577
2583
  type: Component,
2578
2584
  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-text-box height=\"0\" style=\"border: none;\">\r\n <dx-validator>\r\n <dxi-validation-rule *ngIf=\"extraValidator\" type=\"async\"\r\n [validationCallback]=\"extraValidate\"></dxi-validation-rule>\r\n </dx-validator>\r\n </dx-text-box>\r\n <div *ngIf=\"extraValidateMessage\" class=\"dx-field\">\r\n <div class=\"dx-field-value\">\r\n <div class=\"dx-toast-error dx-toast-content\">\r\n <div class=\"dx-toast-message\">{{ extraValidateMessage }}</div>\r\n </div>\r\n </div>\r\n </div>\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:column nowrap}:host dx-validation-group .dx-field{top:16px}:host dx-validation-group .dx-field .dx-field-value .dx-toast-content{padding:4px 8px}\n"] }]
@@ -2639,8 +2645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2639
2645
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: DataDetailService }]; } });
2640
2646
 
2641
2647
  class DrawerComponent {
2642
- constructor(elementRef) {
2643
- this.elementRef = elementRef;
2648
+ constructor() {
2644
2649
  this.size = 'default';
2645
2650
  this._width = '480px';
2646
2651
  }
@@ -2655,14 +2660,6 @@ class DrawerComponent {
2655
2660
  this._width = this.size;
2656
2661
  }
2657
2662
  }
2658
- show() {
2659
- // 若存在多层抽屉,仅保留最上层
2660
- const nodeName = this.elementRef.nativeElement.nodeName;
2661
- const drawers = this._parentViewContainerRef.element.nativeElement.parentElement.querySelectorAll(nodeName);
2662
- for (let i = 0; i < drawers.length - 1; i++) {
2663
- drawers[i].querySelector('.drawer-close .coast-icon-arrow-right-filling').click();
2664
- }
2665
- }
2666
2663
  hide($event) {
2667
2664
  // 在service中重写
2668
2665
  }
@@ -2670,15 +2667,17 @@ class DrawerComponent {
2670
2667
  $event.stopPropagation();
2671
2668
  }
2672
2669
  autoHide($event) {
2673
- this.hide();
2670
+ if (this.config?.hideOnOutsideClick) {
2671
+ this.hide();
2672
+ }
2674
2673
  }
2675
2674
  }
2676
- DrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2675
+ DrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2677
2676
  DrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DrawerComponent, selector: "rs-drawer", host: { listeners: { "click": "stopPropagation($event)", "window:click": "autoHide($event)" } }, ngImport: i0, template: "<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=\"80px\" icon=\"coast-icon coast-icon-arrow-right-filling\" (onClick)=\"hide($event)\"></dx-button>\n </div>\n</div>\n", styles: [":host .drawer{position:absolute;top:0;right:0;bottom:0;height:100%;z-index:var(--coast-z-index-drawer, 2000);background-color:var(--coast-base-bg-color, #fff);border-left:1px solid var(--coast-border-color, #dddddd);box-shadow:-8px 0 4px -4px #252b3a3d;display:flex;flex-flow:column nowrap}:host .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 .drawer-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .drawer .drawer-close{position:absolute;height:100%;width:20px;top:0;left:-20px;display:flex;flex-flow:row nowrap;align-items:center}:host .drawer .drawer-close dx-button{box-shadow:-8px 0 4px -4px #252b3a3d}\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: i3.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"] }] });
2678
2677
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DrawerComponent, decorators: [{
2679
2678
  type: Component,
2680
2679
  args: [{ selector: 'rs-drawer', template: "<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=\"80px\" icon=\"coast-icon coast-icon-arrow-right-filling\" (onClick)=\"hide($event)\"></dx-button>\n </div>\n</div>\n", styles: [":host .drawer{position:absolute;top:0;right:0;bottom:0;height:100%;z-index:var(--coast-z-index-drawer, 2000);background-color:var(--coast-base-bg-color, #fff);border-left:1px solid var(--coast-border-color, #dddddd);box-shadow:-8px 0 4px -4px #252b3a3d;display:flex;flex-flow:column nowrap}:host .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 .drawer-content{flex:1;overflow:auto;display:flex;flex-flow:column nowrap}:host .drawer .drawer-close{position:absolute;height:100%;width:20px;top:0;left:-20px;display:flex;flex-flow:row nowrap;align-items:center}:host .drawer .drawer-close dx-button{box-shadow:-8px 0 4px -4px #252b3a3d}\n"] }]
2681
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { stopPropagation: [{
2680
+ }], ctorParameters: function () { return []; }, propDecorators: { stopPropagation: [{
2682
2681
  type: HostListener,
2683
2682
  args: ['click', ['$event']]
2684
2683
  }], autoHide: [{
@@ -2687,9 +2686,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2687
2686
  }] } });
2688
2687
 
2689
2688
  class DrawerService {
2690
- constructor() {
2691
- }
2692
- open(viewContainerRef, size = 'default', contentTemplate, contentTemplateContext, headerTemplate, headerTemplateContext) {
2689
+ open(viewContainerRef, size = 'default', contentTemplate, contentTemplateContext, headerTemplate, headerTemplateContext, config) {
2690
+ // 若已存在抽屉,先关闭
2691
+ const drawers = viewContainerRef.element.nativeElement.parentElement.querySelectorAll('RS-DRAWER');
2692
+ for (let i = 0; i < drawers.length; i++) {
2693
+ drawers[i].querySelector('.drawer-close .coast-icon-arrow-right-filling').click();
2694
+ }
2693
2695
  const drawerRef = viewContainerRef.createComponent(DrawerComponent);
2694
2696
  drawerRef.instance.hide = ($event) => {
2695
2697
  $event?.event?.stopPropagation();
@@ -2700,8 +2702,9 @@ class DrawerService {
2700
2702
  drawerRef.instance.headerTemplateContext = headerTemplateContext;
2701
2703
  drawerRef.instance.contentTemplate = contentTemplate;
2702
2704
  drawerRef.instance.contentTemplateContext = contentTemplateContext;
2703
- drawerRef.instance._parentViewContainerRef = viewContainerRef;
2704
- drawerRef.instance.show();
2705
+ drawerRef.instance.config = config || {
2706
+ hideOnOutsideClick: true
2707
+ };
2705
2708
  return drawerRef.instance;
2706
2709
  }
2707
2710
  }
@@ -2712,11 +2715,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
2712
2715
  args: [{
2713
2716
  providedIn: 'root'
2714
2717
  }]
2715
- }], ctorParameters: function () { return []; } });
2718
+ }] });
2716
2719
 
2717
2720
  class InstanceLinkTemplateComponent {
2718
2721
  constructor(drawerService) {
2719
2722
  this.drawerService = drawerService;
2723
+ this.loading = false;
2720
2724
  }
2721
2725
  openNewTab($event) {
2722
2726
  $event.event?.stopPropagation();
@@ -2738,16 +2742,17 @@ class InstanceLinkTemplateComponent {
2738
2742
  }
2739
2743
  openDrawer($event) {
2740
2744
  $event.event?.stopPropagation();
2745
+ this.loading = true;
2741
2746
  this.drawerService.open(this.drawerViewContainerRef, this.drawerSize || 'default', this.drawerFormContentTemplate, {
2742
2747
  template: this.drawerFormTemplate || 'About'
2743
2748
  }, this.drawerFormHeaderTemplate);
2744
2749
  }
2745
2750
  }
2746
2751
  InstanceLinkTemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InstanceLinkTemplateComponent, deps: [{ token: DrawerService }], target: i0.ɵɵFactoryTarget.Component });
2747
- 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", drawerSize: "drawerSize", 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 [tabViewContainerRef]=\"drawerViewContainerRef\"\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: i3.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: ["onDataLoaded", "submitCallback"] }] });
2752
+ 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", drawerSize: "drawerSize", 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 [tabViewContainerRef]=\"drawerViewContainerRef\"\n (onDataLoaded)=\"loading = false\"\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: i3.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: ["onDataLoaded", "submitCallback"] }] });
2748
2753
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InstanceLinkTemplateComponent, decorators: [{
2749
2754
  type: Component,
2750
- 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 [tabViewContainerRef]=\"drawerViewContainerRef\"\n [readonly]=\"true\"></rs-form>\n</ng-template>\n" }]
2755
+ 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 [tabViewContainerRef]=\"drawerViewContainerRef\"\n (onDataLoaded)=\"loading = false\"\n [readonly]=\"true\"></rs-form>\n</ng-template>\n" }]
2751
2756
  }], ctorParameters: function () { return [{ type: DrawerService }]; }, propDecorators: { tenant: [{
2752
2757
  type: Input
2753
2758
  }], className: [{