ngx-rs-ant 2.3.2 → 2.3.4

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.
@@ -220,7 +220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
220
220
 
221
221
  class PluginManager {
222
222
  static createComponent(boxItem, index, style, config) {
223
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
223
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
224
224
  let plugin = PluginFactory.get(config.name);
225
225
  if (!plugin) {
226
226
  console.error('undefined plugin: ' + config.name);
@@ -248,18 +248,24 @@ class PluginManager {
248
248
  instance.model = (_l = boxItem.boxContainer.context) === null || _l === void 0 ? void 0 : _l.__model;
249
249
  instance.opener = (_m = boxItem.boxContainer.context) === null || _m === void 0 ? void 0 : _m.__opener;
250
250
  instance.valueChange = (_o = boxItem.boxContainer.context) === null || _o === void 0 ? void 0 : _o.__valueChange;
251
+ instance.modelValueChanged = (_p = boxItem.boxContainer.context) === null || _p === void 0 ? void 0 : _p.__modelValueChanged;
251
252
  if (instance.valueChange) {
252
253
  instance.valueChange.subscribe(instance.defaultValueChanged.bind(instance));
253
254
  instance.ngOnDestroy = () => {
254
255
  instance.valueChange.unsubscribe();
255
256
  };
256
257
  }
258
+ if (instance.modelValueChanged) {
259
+ instance.ngOnDestroy = () => {
260
+ instance.modelValueChanged.unsubscribe();
261
+ };
262
+ }
257
263
  if (boxItem.boxContainer.readonly) {
258
264
  instance.readonly = true;
259
265
  }
260
266
  }
261
267
  if (PluginFactory.hasType(plugin, 'modal')) {
262
- instance.opener = (_p = boxItem.boxContainer.context) === null || _p === void 0 ? void 0 : _p.__opener;
268
+ instance.opener = (_q = boxItem.boxContainer.context) === null || _q === void 0 ? void 0 : _q.__opener;
263
269
  }
264
270
  instance.params = boxItem.boxContainer.params;
265
271
  instance.tabViewContainerRef = boxItem.boxContainer.tabViewContainerRef;
@@ -2158,7 +2164,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
2158
2164
 
2159
2165
  class DataGridFactory {
2160
2166
  constructor(http) {
2161
- this.http = http;
2162
2167
  this.typeMap = {
2163
2168
  STRING: {
2164
2169
  dataType: 'string',
@@ -2266,9 +2271,29 @@ class DataGridFactory {
2266
2271
  break;
2267
2272
  case 'DOUBLE':
2268
2273
  case 'INTEGER':
2274
+ column.headerFilter.dataSource = (options) => {
2275
+ options.dataSource.postProcess = (data) => {
2276
+ data.push({
2277
+ key: '__',
2278
+ value: '__',
2279
+ text: '__',
2280
+ visible: false
2281
+ });
2282
+ };
2283
+ };
2269
2284
  column.alignment = 'right';
2270
2285
  break;
2271
2286
  case 'STRING':
2287
+ column.headerFilter.dataSource = (options) => {
2288
+ options.dataSource.postProcess = (data) => {
2289
+ data.push({
2290
+ key: '__',
2291
+ value: '__',
2292
+ text: '__',
2293
+ visible: false
2294
+ });
2295
+ };
2296
+ };
2272
2297
  switch (field.config.constraint.type) {
2273
2298
  case 'USER':
2274
2299
  if (column.viewConfig) {
@@ -2669,6 +2694,7 @@ class FormComponent extends UniqueId {
2669
2694
  this.loading = false;
2670
2695
  this.changeFilter = new ChangeFilter();
2671
2696
  this.valueChange = new Subject();
2697
+ this.modelValueChanged = new EventEmitter();
2672
2698
  this.extraValidate = this.extraValidate.bind(this);
2673
2699
  }
2674
2700
  ngOnInit() {
@@ -2683,6 +2709,7 @@ class FormComponent extends UniqueId {
2683
2709
  ngOnDestroy() {
2684
2710
  this.changeFilter.dispose();
2685
2711
  this.valueChange.unsubscribe();
2712
+ this.modelValueChanged.unsubscribe();
2686
2713
  }
2687
2714
  load() {
2688
2715
  this.loading = true;
@@ -2697,7 +2724,8 @@ class FormComponent extends UniqueId {
2697
2724
  },
2698
2725
  __model: this.model || {},
2699
2726
  __opener: this,
2700
- __valueChange: this.valueChange
2727
+ __valueChange: this.valueChange,
2728
+ __modelValueChanged: this.modelValueChanged
2701
2729
  };
2702
2730
  this.service.getFormTemplateConfig(this.tenant, this.className, this.template).subscribe(response => {
2703
2731
  this.config = response.data.template;
@@ -2949,9 +2977,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
2949
2977
  }] } });
2950
2978
 
2951
2979
  class DataGridComponent {
2952
- constructor(factory, service, viewContainerRef) {
2953
- this.factory = factory;
2980
+ constructor(service, factory, viewContainerRef) {
2954
2981
  this.service = service;
2982
+ this.factory = factory;
2955
2983
  this.viewContainerRef = viewContainerRef;
2956
2984
  this.tenant = 'T';
2957
2985
  this.keyExpr = ''; // 用于实例属性选择器,加载组件值时以选中字段为主键获取选中行数据
@@ -3067,12 +3095,12 @@ class DataGridComponent {
3067
3095
  this.onEditorPreparing.emit($event);
3068
3096
  }
3069
3097
  }
3070
- DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DataGridComponent, deps: [{ token: DataGridFactory }, { token: DataGridService }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
3098
+ DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DataGridComponent, deps: [{ token: DataGridService }, { token: DataGridFactory }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
3071
3099
  DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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", pageSize: "pageSize", disablePage: "disablePage", dataSource: "dataSource", selectionMode: "selectionMode", selectedRowKeys: "selectedRowKeys", showRowNum: "showRowNum", instanceLinkType: "instanceLinkType", drawerInstanceLinkViewContainerRef: "drawerInstanceLinkViewContainerRef", drawerInstanceLinkSize: "drawerInstanceLinkSize", drawerInstanceLinkShowHeader: "drawerInstanceLinkShowHeader", 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 }, { propertyName: "customTemplate", first: true, predicate: CustomTemplateDirective, 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 [showColumnLines]=\"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]=\"!onlyFrontEnd\"\r\n [sorting]=\"!onlyFrontEnd\"\r\n [paging]=\"!onlyFrontEnd\">\r\n </dxo-remote-operations>\r\n <dxo-paging [enabled]=\"!disablePage\" [pageSize]=\"pageSize\"></dxo-paging>\r\n <dxo-pager [visible]=\"!disablePage\"\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]=\"allowedPageSizes\"\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 [drawerSize]=\"drawerInstanceLinkSize\"\r\n [drawerShowHeader]=\"drawerInstanceLinkShowHeader\"\r\n [drawerFormTemplate]=\"drawerInstanceLinkFormTemplate\">\r\n </rs-instance-link-template>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'cellComponentTemplate'\">\r\n <rs-cell-component-template [tenant]=\"tenant\" [className]=\"className\"\r\n [cellInfo]=\"cellInfo\"></rs-cell-component-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 'customTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"customTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{min-height:120px;display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.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.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i6.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i6.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.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: InstanceLinkTemplateComponent, selector: "rs-instance-link-template", inputs: ["tenant", "className", "oid", "instanceLinkType", "drawerViewContainerRef", "drawerSize", "drawerShowHeader", "drawerFormTemplate"] }, { kind: "component", type: CellComponentTemplateComponent, selector: "rs-cell-component-template", inputs: ["tenant", "className", "cellInfo"] }] });
3072
3100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DataGridComponent, decorators: [{
3073
3101
  type: Component,
3074
3102
  args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [showColumnLines]=\"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]=\"!onlyFrontEnd\"\r\n [sorting]=\"!onlyFrontEnd\"\r\n [paging]=\"!onlyFrontEnd\">\r\n </dxo-remote-operations>\r\n <dxo-paging [enabled]=\"!disablePage\" [pageSize]=\"pageSize\"></dxo-paging>\r\n <dxo-pager [visible]=\"!disablePage\"\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]=\"allowedPageSizes\"\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 [drawerSize]=\"drawerInstanceLinkSize\"\r\n [drawerShowHeader]=\"drawerInstanceLinkShowHeader\"\r\n [drawerFormTemplate]=\"drawerInstanceLinkFormTemplate\">\r\n </rs-instance-link-template>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'cellComponentTemplate'\">\r\n <rs-cell-component-template [tenant]=\"tenant\" [className]=\"className\"\r\n [cellInfo]=\"cellInfo\"></rs-cell-component-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 'customTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"customTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{min-height:120px;display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
3075
- }], ctorParameters: function () { return [{ type: DataGridFactory }, { type: DataGridService }, { type: i0.ViewContainerRef }]; }, propDecorators: { tenant: [{
3103
+ }], ctorParameters: function () { return [{ type: DataGridService }, { type: DataGridFactory }, { type: i0.ViewContainerRef }]; }, propDecorators: { tenant: [{
3076
3104
  type: Input
3077
3105
  }], className: [{
3078
3106
  type: Input
@@ -3887,10 +3915,11 @@ class FormItemComponentBase extends ComponentBase {
3887
3915
  this.readonly = false;
3888
3916
  }
3889
3917
  defaultValueChanged(change) {
3890
- if (!this.field) {
3918
+ var _a;
3919
+ const thisField = this.field;
3920
+ if (!thisField) {
3891
3921
  return;
3892
3922
  }
3893
- const thisField = this.field;
3894
3923
  if (Array.isArray(thisField)) {
3895
3924
  if (!thisField.includes(change.field)) {
3896
3925
  return;
@@ -3907,6 +3936,10 @@ class FormItemComponentBase extends ComponentBase {
3907
3936
  return;
3908
3937
  }
3909
3938
  this.model[change.field] = change.value;
3939
+ (_a = this.modelValueChanged) === null || _a === void 0 ? void 0 : _a.emit({
3940
+ field: thisField,
3941
+ value: change.field
3942
+ });
3910
3943
  }
3911
3944
  }
3912
3945
 
@@ -4730,6 +4763,7 @@ class WordDesignerComponent {
4730
4763
  this.wordDesignerService = wordDesignerService;
4731
4764
  this.viewContainerRef = viewContainerRef;
4732
4765
  this.modalService = modalService;
4766
+ this.onTemplateFileUploaded = new EventEmitter();
4733
4767
  this.needUpload = false;
4734
4768
  this.pasteMode = false;
4735
4769
  this.mouseInViewer = false;
@@ -4789,6 +4823,7 @@ class WordDesignerComponent {
4789
4823
  this.uploadInput.nativeElement.value = '';
4790
4824
  this.loadTemplateAndConfig(response);
4791
4825
  this.loading = false;
4826
+ this.onTemplateFileUploaded.emit();
4792
4827
  });
4793
4828
  }
4794
4829
  openReplaceTemplateFileModal() {
@@ -4855,7 +4890,7 @@ class WordDesignerComponent {
4855
4890
  }
4856
4891
  }
4857
4892
  WordDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WordDesignerComponent, deps: [{ token: SectionService }, { token: WordDesignerService }, { token: i0.ViewContainerRef }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
4858
- WordDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WordDesignerComponent, selector: "rs-word-designer", inputs: { tenant: "tenant", className: "className", oid: "oid", instanceClassName: "instanceClassName", filterCategories: "filterCategories", params: "params", tabViewContainerRef: "tabViewContainerRef" }, host: { listeners: { "window:keydown": "handleKeyDown($event)" } }, providers: [WordDesignerService], viewQueries: [{ propertyName: "uploadInput", first: true, predicate: ["uploadInput"], descendants: true, static: true }, { propertyName: "replaceFileModalTemplate", first: true, predicate: ["replaceFileModalTemplate"], descendants: true, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true, static: true }, { propertyName: "previewFooterTemplate", first: true, predicate: ["previewFooterTemplate"], descendants: true, static: true }], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"\n [tabViewContainerRef]=\"tabViewContainerRef\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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.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: SectionComponent, selector: "rs-section", inputs: ["section", "editMode", "pasteMode", "readonly"] }, { kind: "component", type: MarkConfigComponent, selector: "rs-mark-config", inputs: ["tenant", "templateClassName", "templateOid", "instanceClassName", "filterCategories", "mark", "marks", "params", "tabViewContainerRef"] }] });
4893
+ WordDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WordDesignerComponent, selector: "rs-word-designer", inputs: { tenant: "tenant", className: "className", oid: "oid", instanceClassName: "instanceClassName", filterCategories: "filterCategories", params: "params", tabViewContainerRef: "tabViewContainerRef" }, outputs: { onTemplateFileUploaded: "onTemplateFileUploaded" }, host: { listeners: { "window:keydown": "handleKeyDown($event)" } }, providers: [WordDesignerService], viewQueries: [{ propertyName: "uploadInput", first: true, predicate: ["uploadInput"], descendants: true, static: true }, { propertyName: "replaceFileModalTemplate", first: true, predicate: ["replaceFileModalTemplate"], descendants: true, static: true }, { propertyName: "previewTemplate", first: true, predicate: ["previewTemplate"], descendants: true, static: true }, { propertyName: "previewFooterTemplate", first: true, predicate: ["previewFooterTemplate"], descendants: true, static: true }], ngImport: i0, template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"\n [tabViewContainerRef]=\"tabViewContainerRef\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.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.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: SectionComponent, selector: "rs-section", inputs: ["section", "editMode", "pasteMode", "readonly"] }, { kind: "component", type: MarkConfigComponent, selector: "rs-mark-config", inputs: ["tenant", "templateClassName", "templateOid", "instanceClassName", "filterCategories", "mark", "marks", "params", "tabViewContainerRef"] }] });
4859
4894
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WordDesignerComponent, decorators: [{
4860
4895
  type: Component,
4861
4896
  args: [{ selector: 'rs-word-designer', providers: [WordDesignerService], template: "<dx-load-panel [container]=\"viewContainerRef.element.nativeElement\" [showPane]=\"false\" [visible]=\"loading\">\n <dxo-position [of]=\"viewContainerRef.element.nativeElement\"></dxo-position>\n</dx-load-panel>\n<input #uploadInput type=\"file\" name=\"file\"\n accept=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" (change)=\"upload()\"\n style=\"display: none;\"/>\n<div class=\"coast-card\">\n <div class=\"coast-card-content\">\n <div class=\"content-main\" [class.show-upload-btn]=\"needUpload\">\n <ng-container *ngIf=\"needUpload\">\n <dx-button type=\"success\" text=\"\u4E0A\u4F20\u6587\u4EF6\" (onClick)=\"uploadInput.click()\"></dx-button>\n </ng-container>\n <div *ngIf=\"!needUpload\" class=\"left-panel\">\n <div *ngIf=\"pasteMode\" class=\"paste-mode-bar\">\n <span\n class=\"message\">\u5DF2\u8FDB\u5165\u6279\u91CF\u7C98\u8D34\u914D\u7F6E\u6A21\u5F0F\uFF0C\u652F\u6301Ctrl\u3001Shift\u952E\u5FEB\u6377\u9009\u62E9\uFF0C\u6309Ctrl+V\u7EC4\u5408\u952E\u7C98\u8D34\u914D\u7F6E\uFF0C\u6309Esc\u952E\u53D6\u6D88\u64CD\u4F5C\u5E76\u9000\u51FA\u8BE5\u6A21\u5F0F</span>\n <dx-button [width]=\"48\" text=\"\u9000\u51FA\" (onClick)=\"exitPasteMode()\"></dx-button>\n </div>\n <div class=\"content\"\n (mouseenter)=\"mouseInViewer = true;\"\n (mouseleave)=\"mouseInViewer = false;\"\n (mousewheel)=\"scaleByMouse($event)\">\n <div *ngIf=\"!needUpload\" class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\" [editMode]=\"true\" [pasteMode]=\"pasteMode\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"right-panel\">\n <div class=\"header\">\n <dx-button type=\"default\" text=\"\u66FF\u6362\u6587\u4EF6\" (onClick)=\"openReplaceTemplateFileModal()\"\n [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-download\" hint=\"\u4E0B\u8F7D\u6587\u4EF6\"\n (onClick)=\"downloadTemplateFile()\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-up\" hint=\"\u4E0A\u4E00\u4E2A(Alt + \u2191)\"\n (onClick)=\"service.switchMark(-1)\" [disabled]=\"loading\"></dx-button>\n <dx-button icon=\"coast-icon coast-icon-direction-down\" hint=\"\u4E0B\u4E00\u4E2A(Alt + \u2193)\"\n (onClick)=\"service.switchMark(1)\" [disabled]=\"loading\"></dx-button>\n <dx-button [type]=\"pasteMode ? 'success' : 'default'\" text=\"\u590D\u5236\" hint=\"\u590D\u5236(Ctrl + c)\"\n (onClick)=\"copyMarkConfig()\"></dx-button>\n <dx-button type=\"danger\" text=\"\u7C98\u8D34\" hint=\"\u7C98\u8D34(Ctrl + v)\" (onClick)=\"pasteMarkConfig()\"\n [disabled]=\"loading || !pasteMode\"></dx-button>\n </div>\n <div class=\"config\" *ngIf=\"service.activeMark\">\n <rs-mark-config [tenant]=\"tenant\"\n [templateClassName]=\"className\"\n [templateOid]=\"oid\"\n [instanceClassName]=\"instanceClassName\"\n [filterCategories]=\"filterCategories\"\n [mark]=\"service.activeMark\"\n [marks]=\"service.marks\"\n [tabViewContainerRef]=\"tabViewContainerRef\"></rs-mark-config>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"!needUpload\" class=\"footer\">\n <div class=\"left\">\n <dx-button text=\"\u653E\u5927\" (onClick)=\"scale(0.1)\"></dx-button>\n <dx-button text=\"\u8FD8\u539F\" (onClick)=\"scale(0)\"></dx-button>\n <dx-button text=\"\u7F29\u5C0F\" (onClick)=\"scale(-0.1)\"></dx-button>\n </div>\n <div class=\"right\">\n <dx-button type=\"default\" text=\"\u9884\u89C8\" (onClick)=\"preview()\" [disabled]=\"needUpload || loading\"></dx-button>\n <dx-button type=\"success\" text=\"\u4FDD\u5B58\" (onClick)=\"saveConfig()\" [disabled]=\"needUpload || loading\"></dx-button>\n </div>\n </div>\n</div>\n<ng-template #replaceFileModalTemplate>\n <div class=\"confirm-message\">\n <span>\u66FF\u6362\u6587\u4EF6\u53EF\u4EE5\u6309\u7167\u4E66\u7B7E\u6807\u8BC6\u7EE7\u627F\u5DF2\u4FDD\u5B58\u7684\u4E66\u7B7E\u914D\u7F6E\uFF0C\u8BF7\u9009\u62E9\u64CD\u4F5C\uFF1A</span>\n </div>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"default\" text=\"\u7EE7\u627F\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(true)\"></dx-button>\n <dx-button type=\"danger\" text=\"\u6E05\u9664\u914D\u7F6E\" (onClick)=\"replaceTemplateFile(false)\"></dx-button>\n <dx-button type=\"normal\" text=\"\u53D6\u6D88\" (onClick)=\"replaceFileModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n<ng-template #previewTemplate>\n <div class=\"preview-viewer\">\n <div class=\"viewer-container\">\n <div class=\"viewer\">\n <ng-container *ngFor=\"let section of sections\">\n <rs-section [section]=\"section\"></rs-section>\n </ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n<ng-template #previewFooterTemplate>\n <div class=\"form-buttons\">\n <div class=\"buttons-wrapper\">\n <dx-button type=\"normal\" text=\"\u5173\u95ED\" (onClick)=\"previewModal?.hide()\"></dx-button>\n </div>\n </div>\n</ng-template>\n", styles: [":host{flex:1;display:flex;flex-flow:column nowrap}:host .coast-card{flex:1;padding:0}:host .coast-card .content-main{display:flex;flex-flow:row nowrap;padding:16px 0 0 16px;margin:0}:host .coast-card .content-main.show-upload-btn{padding:16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));align-items:center;justify-content:center}:host .coast-card .content-main .left-panel{flex:auto;width:0;overflow-x:auto;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}:host .coast-card .content-main .left-panel .paste-mode-bar{flex:none;padding:8px;background-color:var(--coast-base-bg-color, rgb(255, 255, 255));border:1px solid var(--coast-border-color, rgb(221, 221, 221));display:flex;flex-flow:row nowrap;justify-content:space-between;align-items:center}:host .coast-card .content-main .left-panel .paste-mode-bar .message{font-weight:700}:host .coast-card .content-main .left-panel .content{flex:auto;height:0;overflow-y:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}:host .coast-card .content-main .left-panel .content .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}:host .coast-card .content-main .right-panel{flex:0 0 320px;display:flex;flex-flow:column nowrap;border-left:1px solid var(--coast-border-color, rgb(221, 221, 221))}:host .coast-card .content-main .right-panel .header{flex:none;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:0 16px 16px}:host .coast-card .content-main .right-panel .header>dx-button:not(:last-child){margin-right:8px}:host .coast-card .content-main .right-panel .config{flex:auto;height:0;overflow:auto;padding:24px;display:flex;flex-flow:column nowrap}:host .coast-card .footer{flex:none;border-top:1px solid var(--coast-border-color, rgb(221, 221, 221));padding:12px 24px;display:flex;flex-flow:row nowrap;justify-content:space-between}:host .coast-card .footer dx-button{width:80px}:host .coast-card .footer dx-button:not(:last-child){margin-right:8px}.confirm-message{padding:24px;margin-bottom:12px;border-bottom:1px solid var(--coast-border-color, rgb(221, 221, 221))}.confirm-message span{font-size:14px}.preview-viewer{flex:auto;height:0;overflow-y:auto;margin:0 16px;background-color:var(--coast-empty-color, rgb(229, 229, 229));display:flex;flex-flow:column nowrap}.preview-viewer .viewer-container{flex:auto;height:0;overflow-x:auto;padding:8px 16px 0;display:flex;flex-flow:row nowrap}.preview-viewer .viewer-container .viewer{margin:auto;display:flex;flex-flow:column nowrap;align-items:center;z-index:0}\n"] }]
@@ -4873,6 +4908,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4873
4908
  type: Input
4874
4909
  }], tabViewContainerRef: [{
4875
4910
  type: Input
4911
+ }], onTemplateFileUploaded: [{
4912
+ type: Output
4876
4913
  }], uploadInput: [{
4877
4914
  type: ViewChild,
4878
4915
  args: ['uploadInput', { static: true }]