ngx-rs-ant 0.8.8 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, HostBinding, EventEmitter, Output, HostListener, ViewContainerRef, ViewChild, Directive, ViewChildren, NgModule, Injectable, ContentChild } from '@angular/core';
2
+ import { Component, Input, HostBinding, EventEmitter, Output, HostListener, ViewContainerRef, ViewChild, Directive, ViewChildren, NgModule, Injectable, LOCALE_ID, Inject, ContentChild } from '@angular/core';
3
3
  import { PluginFactory } from 'coast-plugin-register';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule } from '@angular/common';
@@ -9,12 +9,13 @@ import * as i2$1 from 'ng-devui/input-number';
9
9
  import * as i5 from '@angular/forms';
10
10
  import { FormsModule, UntypedFormGroup, ReactiveFormsModule } from '@angular/forms';
11
11
  import { DevUIModule, FormLayout } from 'ng-devui';
12
- import CustomStore from 'devextreme/data/custom_store';
13
12
  import * as i3 from 'devextreme-angular';
14
13
  import { DxDataGridComponent, DxDataGridModule } from 'devextreme-angular';
15
14
  import * as i1$1 from '@angular/common/http';
15
+ import CustomStore from 'devextreme/data/custom_store';
16
16
  import * as i4 from 'devextreme-angular/ui/nested';
17
17
  import * as i5$1 from 'devextreme-angular/core';
18
+ import * as i6 from 'ng-devui/popover';
18
19
  import * as i2$2 from 'ng-devui/button';
19
20
  import * as i3$1 from 'ng-devui/form';
20
21
  import * as i4$1 from 'ng-devui/text-input';
@@ -748,6 +749,87 @@ class DataGridService {
748
749
  };
749
750
  }));
750
751
  }
752
+ getConstraintEntries(name) {
753
+ return this.http.get('api/metadata/constraint/' + name).pipe(map(response => {
754
+ return response.data;
755
+ }));
756
+ }
757
+ getUserColumnDataSource(className, view, field) {
758
+ return this.http.get('api/data/custom', {
759
+ params: {
760
+ executor: 'com.cs.system.data.grid.header.filter.GetUserColumnDataSource',
761
+ className,
762
+ view: view || '',
763
+ field
764
+ }
765
+ }).pipe(map(response => {
766
+ response.data.list.unshift({
767
+ value: '',
768
+ text: '(空白)'
769
+ });
770
+ response.data.list.push({
771
+ value: '__',
772
+ text: '',
773
+ visible: false
774
+ });
775
+ return response.data.list;
776
+ }));
777
+ }
778
+ getUnitColumnDataSource(className, view, field) {
779
+ return this.http.get('api/data/custom', {
780
+ params: {
781
+ executor: 'com.cs.system.data.grid.header.filter.GetUnitColumnDataSource',
782
+ className,
783
+ view: view || '',
784
+ field
785
+ }
786
+ }).pipe(map(response => {
787
+ response.data.list.unshift({
788
+ value: '',
789
+ text: '(空白)'
790
+ });
791
+ response.data.list.push({
792
+ value: '__',
793
+ text: '',
794
+ visible: false
795
+ });
796
+ return response.data.list;
797
+ }));
798
+ }
799
+ getConstraintColumnDataSource(className, view, field, constraintName) {
800
+ return this.http.get('api/data/custom', {
801
+ params: {
802
+ executor: 'com.cs.system.data.grid.header.filter.GetConstraintColumnDataSource',
803
+ className,
804
+ view: view || '',
805
+ field,
806
+ constraintName
807
+ }
808
+ }).pipe(map(response => {
809
+ response.data.list.unshift({
810
+ value: '',
811
+ text: '(空白)'
812
+ });
813
+ response.data.list.push({
814
+ value: '__',
815
+ text: '',
816
+ visible: false
817
+ });
818
+ return response.data.list;
819
+ }));
820
+ }
821
+ getColumnDataSource(className, view, field) {
822
+ return this.http.get('api/data/custom', {
823
+ params: {
824
+ executor: 'com.cs.system.data.grid.header.filter.GetColumnDataSource',
825
+ className,
826
+ view: view || '',
827
+ field
828
+ }
829
+ }).pipe(map(response => {
830
+ return response.data.list;
831
+ }));
832
+ }
751
833
  }
752
834
  DataGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridService, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
753
835
  DataGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridService });
@@ -770,8 +852,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
770
852
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
771
853
 
772
854
  class DataGridComponent {
773
- constructor(service) {
855
+ constructor(service, locale) {
774
856
  this.service = service;
857
+ this.locale = locale;
775
858
  this.enableMasterDetail = false;
776
859
  this.dataSource = {};
777
860
  this.columns = [];
@@ -815,36 +898,177 @@ class DataGridComponent {
815
898
  this.dxDataGrid.instance?.state(null);
816
899
  this.service.getMetadataByView(this.tenant, this.className, this.view || '').subscribe((response) => {
817
900
  this.columns = [];
818
- for (let column of response.data.columns) {
819
- if (column.type === 'NORMAL') {
901
+ for (let field of response.data.columns) {
902
+ if (field.type === 'FILE') {
820
903
  this.columns.push({
821
- dataField: column.name,
822
- caption: column.caption,
823
- dataType: this.typeMap[column.dataType].dataType,
904
+ dataField: field.name,
905
+ caption: field.caption,
906
+ dataType: 'string',
824
907
  alignment: 'left',
825
- filterOperations: this.typeMap[column.dataType].filterOperations,
826
- format: this.typeMap[column.dataType].format
908
+ allowHeaderFiltering: false,
909
+ filterOperations: [],
910
+ visible: field.visible
827
911
  });
828
912
  }
829
- else if (column.type === 'FILE') {
830
- this.columns.push({
831
- dataField: column.name,
832
- caption: column.caption,
833
- dataType: 'string',
913
+ else if (field.type === 'NORMAL') {
914
+ const column = {
915
+ dataField: field.name,
916
+ caption: field.caption,
917
+ dataType: this.typeMap[field.dataType].dataType,
834
918
  alignment: 'left',
835
- filterOperations: []
836
- });
919
+ allowHeaderFiltering: true,
920
+ headerFilter: {
921
+ allowSelectAll: false
922
+ },
923
+ filterOperations: this.typeMap[field.dataType].filterOperations,
924
+ format: this.typeMap[field.dataType].format,
925
+ visible: field.visible
926
+ };
927
+ this.columns.push(column);
928
+ switch (field.dataType) {
929
+ case 'BOOLEAN':
930
+ column.allowHeaderFiltering = false;
931
+ column.alignment = 'center';
932
+ column.trueText = '是';
933
+ column.falseText = '否';
934
+ break;
935
+ case 'DATE':
936
+ case 'DATETIME':
937
+ column.headerFilter.dataSource = (options) => {
938
+ console.log(options);
939
+ options.dataSource.group.length = 3;
940
+ options.dataSource.postProcess = (data) => {
941
+ data.forEach((year) => {
942
+ year.text = year.key + '年';
943
+ year.items.forEach((month) => {
944
+ month.text = month.key + '月';
945
+ month.items.forEach((day) => {
946
+ day.text = day.key + '日';
947
+ day.items = [];
948
+ });
949
+ });
950
+ });
951
+ data.unshift({
952
+ key: '',
953
+ value: null,
954
+ text: '(空白)'
955
+ });
956
+ };
957
+ };
958
+ break;
959
+ case 'DOUBLE':
960
+ case 'INTEGER':
961
+ column.headerFilter.dataSource = (options) => {
962
+ options.dataSource.postProcess = (data) => {
963
+ data.unshift({
964
+ key: '',
965
+ value: null,
966
+ text: '(空白)'
967
+ });
968
+ data.push({
969
+ key: '__',
970
+ value: '__',
971
+ text: '__',
972
+ visible: false
973
+ });
974
+ };
975
+ };
976
+ break;
977
+ case 'STRING':
978
+ switch (field.config.constraint.type) {
979
+ case 'USER':
980
+ column.dataField = '__' + field.name + '\u0001User_displayName';
981
+ column.headerFilter.dataSource = {
982
+ store: new CustomStore({
983
+ load: () => {
984
+ return lastValueFrom(this.service.getUserColumnDataSource(this.className, this.view, field.name));
985
+ }
986
+ }),
987
+ paginate: true
988
+ };
989
+ column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
990
+ if (target === 'headerFilter') {
991
+ if (this.defaultCalculateFilterExpression) {
992
+ this.dataField = '__' + field.name + '\u0001User_username';
993
+ return this.defaultCalculateFilterExpression.apply(this, [filterValue, selectedFilterOperation, target]);
994
+ }
995
+ }
996
+ return [
997
+ [column.name, selectedFilterOperation, filterValue],
998
+ 'or',
999
+ ['__' + field.name + '\u0001User_username', selectedFilterOperation, filterValue]
1000
+ ];
1001
+ };
1002
+ break;
1003
+ case 'UNIT':
1004
+ column.dataField = '__' + field.name + '\u0001Role_displayName';
1005
+ column.headerFilter.dataSource = {
1006
+ store: new CustomStore({
1007
+ load: () => {
1008
+ return lastValueFrom(this.service.getUnitColumnDataSource(this.className, this.view, field.name));
1009
+ }
1010
+ }),
1011
+ paginate: true
1012
+ };
1013
+ column.calculateFilterExpression = function (filterValue, selectedFilterOperation, target) {
1014
+ if (target === 'headerFilter') {
1015
+ if (this.defaultCalculateFilterExpression) {
1016
+ this.dataField = '__' + field.name + '\u0001Role_name';
1017
+ return this.defaultCalculateFilterExpression.apply(this, [filterValue, selectedFilterOperation, target]);
1018
+ }
1019
+ }
1020
+ return [
1021
+ [column.name, selectedFilterOperation, filterValue],
1022
+ 'or',
1023
+ ['__' + field.name + '\u0001Role_name', selectedFilterOperation, filterValue]
1024
+ ];
1025
+ };
1026
+ break;
1027
+ case 'CUSTOM':
1028
+ column.headerFilter.dataSource = {
1029
+ store: new CustomStore({
1030
+ load: () => {
1031
+ return lastValueFrom(this.service.getConstraintColumnDataSource(this.className, this.view, field.name, field.config.constraint.name));
1032
+ }
1033
+ }),
1034
+ paginate: true
1035
+ };
1036
+ column.filterOperations = ['='];
1037
+ column.lookup = {
1038
+ dataSource: {
1039
+ store: new CustomStore({
1040
+ load: () => {
1041
+ return lastValueFrom(this.service.getConstraintEntries(field.config.constraint.name));
1042
+ }
1043
+ }),
1044
+ paginate: true
1045
+ },
1046
+ valueExpr: 'store',
1047
+ displayExpr: 'display'
1048
+ };
1049
+ break;
1050
+ }
1051
+ break;
1052
+ case 'TEXT':
1053
+ column.cellTemplate = 'textCellTemplate';
1054
+ break;
1055
+ }
837
1056
  }
838
- else if (column.type === 'RELATION') {
1057
+ else if (field.type === 'RELATION') {
839
1058
  this.columns.push({
840
- dataField: column.name,
841
- caption: column.caption,
1059
+ dataField: field.name,
1060
+ caption: field.caption,
842
1061
  dataType: 'string',
843
1062
  alignment: 'left',
844
- filterOperations: ['=']
1063
+ allowHeaderFiltering: false,
1064
+ filterOperations: ['='],
1065
+ visible: field.visible
845
1066
  });
846
1067
  }
847
1068
  }
1069
+ if (this.customColumnFn) {
1070
+ this.customColumnFn(this.columns);
1071
+ }
848
1072
  });
849
1073
  this.dataSource = new CustomStore({
850
1074
  key: 'oid',
@@ -852,6 +1076,11 @@ class DataGridComponent {
852
1076
  return lastValueFrom(this.service.getOne(this.tenant, this.className, key));
853
1077
  },
854
1078
  load: (loadOptions) => {
1079
+ if (loadOptions.dataField) {
1080
+ // 未重写headerFilter的dataSource时,headerFilter会调用load方法加载筛选树,重写该方法查询该表所有数据
1081
+ // 该方式存在风险,无法识别一定是通过headerFilter过滤才存在dataField参数
1082
+ return lastValueFrom(this.service.getColumnDataSource(this.className, this.view, loadOptions.dataField));
1083
+ }
855
1084
  let params = '?';
856
1085
  if (loadOptions.skip || loadOptions.take) {
857
1086
  params += 'offset=' + loadOptions.skip;
@@ -901,16 +1130,16 @@ class DataGridComponent {
901
1130
  }
902
1131
  });
903
1132
  }
904
- getSelectedRowKeys() {
905
- return this.dxDataGrid.instance.getSelectedRowKeys();
906
- }
907
1133
  }
908
- DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, deps: [{ token: DataGridService }], target: i0.ɵɵFactoryTarget.Component });
909
- DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n</dx-data-grid>\n", styles: [":host{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: "component", type: i3.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: i4.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i4.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i4.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i4.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i4.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i4.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i4.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i4.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i4.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i5$1.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }] });
1134
+ DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, deps: [{ token: DataGridService }, { token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Component });
1135
+ DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail", customColumnFn: "customColumnFn" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [syncLookupFilterValues]=\"false\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-header-filter [visible]=\"true\">\n <dxo-search [enabled]=\"true\"></dxo-search>\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\n </dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\n <div dPopover #textDiv\n [content]=\"cellInfo.value\"\n [controlled]=\"textDiv.clientWidth < textDiv.scrollWidth\"\n [popMaxWidth]=\"240\"\n [popoverStyle]=\"{ backgroundColor: '#fff', color: 'rgb(51, 51, 51)' }\"\n style=\"max-width: 240px; text-overflow: ellipsis; overflow: hidden;\"\n [ngStyle]=\"{ cursor: textDiv.clientWidth < textDiv.scrollWidth ? 'pointer': 'default'}\">{{cellInfo.value}}</div>\n </div>\n</dx-data-grid>\n", styles: [":host{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: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.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: i4.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i4.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i4.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: i4.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i4.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "svgToCanvas", "allowExportSelectedData", "texts"] }, { kind: "component", type: i4.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i4.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i4.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i4.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i4.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i4.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i4.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i5$1.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[dPopover]", inputs: ["content", "controlled", "position", "showAnimation", "showAnimate", "scrollElement", "appendToBody", "zIndex", "popType", "popMaxWidth", "trigger", "hoverToContent", "hoverDelayTime", "popoverStyle", "mouseEnterDelay", "mouseLeaveDelay", "visible"], exportAs: ["dPopover"] }] });
910
1136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, decorators: [{
911
1137
  type: Component,
912
- args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n</dx-data-grid>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
913
- }], ctorParameters: function () { return [{ type: DataGridService }]; }, propDecorators: { tenant: [{
1138
+ args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [dataSource]=\"dataSource\"\n [columns]=\"columns\"\n [syncLookupFilterValues]=\"false\"\n [showBorders]=\"true\"\n [showColumnLines]=\"true\"\n [showRowLines]=\"true\"\n [hoverStateEnabled]=\"true\"\n [rowAlternationEnabled]=\"true\"\n [columnAutoWidth]=\"true\"\n [allowColumnResizing]=\"true\"\n columnResizingMode=\"widget\"\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\n (onRowExpanding)=\"$event.component.collapseAll(-1)\"\n>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n <dxo-selection mode=\"multiple\" selectAllMode=\"page\"></dxo-selection>\n <dxo-header-filter [visible]=\"true\">\n <dxo-search [enabled]=\"true\"></dxo-search>\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\n </dxo-header-filter>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-remote-operations [filtering]=\"true\"\n [sorting]=\"true\"\n [paging]=\"true\">\n </dxo-remote-operations>\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\n <dxo-pager [visible]=\"true\"\n [showInfo]=\"true\"\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\n [showPageSizeSelector]=\"true\"\n [allowedPageSizes]=\"[15, 30, 50]\"\n ></dxo-pager>\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\n <dxo-export [allowExportSelectedData]=\"true\"\n [fileName]=\"className\"></dxo-export>\n <div *dxTemplate=\"let rowInfo of 'masterDetailTemplate'\">\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\n [ngTemplateOutletContext]=\"{$implicit: rowInfo}\"></ng-container>\n </div>\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\n {{cellInfo.rowIndex + 1}}\n </div>\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\n <div dPopover #textDiv\n [content]=\"cellInfo.value\"\n [controlled]=\"textDiv.clientWidth < textDiv.scrollWidth\"\n [popMaxWidth]=\"240\"\n [popoverStyle]=\"{ backgroundColor: '#fff', color: 'rgb(51, 51, 51)' }\"\n style=\"max-width: 240px; text-overflow: ellipsis; overflow: hidden;\"\n [ngStyle]=\"{ cursor: textDiv.clientWidth < textDiv.scrollWidth ? 'pointer': 'default'}\">{{cellInfo.value}}</div>\n </div>\n</dx-data-grid>\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
1139
+ }], ctorParameters: function () { return [{ type: DataGridService }, { type: undefined, decorators: [{
1140
+ type: Inject,
1141
+ args: [LOCALE_ID]
1142
+ }] }]; }, propDecorators: { tenant: [{
914
1143
  type: Input
915
1144
  }], className: [{
916
1145
  type: Input
@@ -920,6 +1149,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
920
1149
  type: Input
921
1150
  }], enableMasterDetail: [{
922
1151
  type: Input
1152
+ }], customColumnFn: [{
1153
+ type: Input
923
1154
  }], dxDataGrid: [{
924
1155
  type: ViewChild,
925
1156
  args: [DxDataGridComponent, { static: true }]
@@ -933,10 +1164,12 @@ class DataGridModule {
933
1164
  DataGridModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
934
1165
  DataGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, declarations: [DataGridComponent,
935
1166
  MasterDetailTemplateDirective], imports: [CommonModule,
936
- DxDataGridModule], exports: [DataGridComponent,
1167
+ DxDataGridModule,
1168
+ DevUIModule], exports: [DataGridComponent,
937
1169
  MasterDetailTemplateDirective] });
938
1170
  DataGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, imports: [CommonModule,
939
- DxDataGridModule] });
1171
+ DxDataGridModule,
1172
+ DevUIModule] });
940
1173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridModule, decorators: [{
941
1174
  type: NgModule,
942
1175
  args: [{
@@ -946,7 +1179,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
946
1179
  ],
947
1180
  imports: [
948
1181
  CommonModule,
949
- DxDataGridModule
1182
+ DxDataGridModule,
1183
+ DevUIModule
950
1184
  ],
951
1185
  exports: [
952
1186
  DataGridComponent,