d2coreui 21.0.6 → 21.0.10
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.
- package/components/date/dateTimeInput.js +1 -0
- package/components/date/dateTimeInput.js.map +1 -1
- package/components/date/{MillisecondDatePicker.d.ts → millisecondDatePicker.d.ts} +0 -0
- package/components/date/{MillisecondDatePicker.js → millisecondDatePicker.js} +1 -1
- package/components/date/{MillisecondDatePicker.js.map → millisecondDatePicker.js.map} +1 -1
- package/components/grid/cell/dateCellEditor.js +2 -2
- package/components/grid/cell/dateCellEditor.js.map +1 -1
- package/components/grid/dataGrid.js +23 -22
- package/components/grid/dataGrid.js.map +1 -1
- package/components/grid/extendedDataGrid.d.ts +1 -0
- package/components/grid/extendedDataGrid.js +9 -2
- package/components/grid/extendedDataGrid.js.map +1 -1
- package/components/icons/maximize.png +0 -0
- package/components/icons/more.png +0 -0
- package/components/icons/more2.png +0 -0
- package/components/icons/popout.png +0 -0
- package/components/icons/restore.png +0 -0
- package/components/input/maskedInput.d.ts +3 -3
- package/components/modal/draggableModalProvider.js +1 -1
- package/components/modal/draggableModalProvider.js.map +1 -1
- package/components/modal/impl/{DraggableModal.d.ts → draggableModal.d.ts} +0 -0
- package/components/modal/impl/{DraggableModal.js → draggableModal.js} +3 -3
- package/components/modal/impl/{DraggableModal.js.map → draggableModal.js.map} +1 -1
- package/components/modal/impl/{DraggableModalContext.d.ts → draggableModalContext.d.ts} +0 -0
- package/components/modal/impl/{DraggableModalContext.js → draggableModalContext.js} +1 -1
- package/components/modal/impl/{DraggableModalContext.js.map → draggableModalContext.js.map} +1 -1
- package/components/modal/impl/{DraggableModalInner.d.ts → draggableModalInner.d.ts} +2 -2
- package/components/modal/impl/{DraggableModalInner.js → draggableModalInner.js} +2 -2
- package/components/modal/impl/{DraggableModalInner.js.map → draggableModalInner.js.map} +1 -1
- package/components/modal/impl/index.d.ts +2 -2
- package/components/modal/impl/index.js +2 -2
- package/components/modal/impl/index.js.map +1 -1
- package/components/modal/impl/{ResizeHandle.d.ts → resizeHandle.d.ts} +0 -0
- package/components/modal/impl/{ResizeHandle.js → resizeHandle.js} +1 -1
- package/components/modal/impl/{ResizeHandle.js.map → resizeHandle.js.map} +1 -1
- package/components/text/{TextFit.d.ts → textFit.d.ts} +0 -0
- package/components/text/{TextFit.js → textFit.js} +1 -1
- package/components/text/{TextFit.js.map → textFit.js.map} +1 -1
- package/package.json +6 -4
- package/style/index.less +4 -0
|
@@ -24,6 +24,7 @@ import { ColumnUtils } from "./columnUtils";
|
|
|
24
24
|
const CONFIGURATION_VERSION = 1;
|
|
25
25
|
export default class ExtendedDataGrid extends React.Component {
|
|
26
26
|
constructor(props) {
|
|
27
|
+
var _a;
|
|
27
28
|
super(props);
|
|
28
29
|
let gridConfiguration = {
|
|
29
30
|
version: CONFIGURATION_VERSION,
|
|
@@ -64,6 +65,13 @@ export default class ExtendedDataGrid extends React.Component {
|
|
|
64
65
|
}
|
|
65
66
|
this.dataLoaded = false;
|
|
66
67
|
this.dataTransaction = { add: [], remove: [], update: [] };
|
|
68
|
+
const debounceInterval = (_a = props.updateDataDebounceInterval) !== null && _a !== void 0 ? _a : 500;
|
|
69
|
+
if (debounceInterval > 0) {
|
|
70
|
+
this._updateDataDebounced = debounce(this._updateData.bind(this), debounceInterval, { maxWait: debounceInterval });
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this._updateDataDebounced = this._updateData.bind(this);
|
|
74
|
+
}
|
|
67
75
|
this.renderToolbarButtons = this.renderToolbarButtons.bind(this);
|
|
68
76
|
this._onLoadData = this._onLoadData.bind(this);
|
|
69
77
|
this._onGridReady = this._onGridReady.bind(this);
|
|
@@ -71,7 +79,6 @@ export default class ExtendedDataGrid extends React.Component {
|
|
|
71
79
|
this._onSearch = this._onSearch.bind(this);
|
|
72
80
|
this._onSearchStringChanged = this._onSearchStringChanged.bind(this);
|
|
73
81
|
this.renderToolbar = this.renderToolbar.bind(this);
|
|
74
|
-
this._updateDataDebounced = debounce(this._updateData.bind(this), 500, { maxWait: 500 });
|
|
75
82
|
this._followLastRecordDebounced = debounce(this._followLastRecordDebounced.bind(this), 500, { maxWait: 500 });
|
|
76
83
|
this._onRowDataUpdated = this._onRowDataUpdated.bind(this);
|
|
77
84
|
this._onChangeRowStyleRules = this._onChangeRowStyleRules.bind(this);
|
|
@@ -257,7 +264,7 @@ export default class ExtendedDataGrid extends React.Component {
|
|
|
257
264
|
}
|
|
258
265
|
}
|
|
259
266
|
addRecords(dataArray, addIndex) {
|
|
260
|
-
dataArray.forEach(data => this.addRecord(data, addIndex));
|
|
267
|
+
(addIndex ? dataArray.reverse() : dataArray).forEach(data => this.addRecord(data, addIndex));
|
|
261
268
|
}
|
|
262
269
|
removeRecord(data) {
|
|
263
270
|
const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendedDataGrid.js","sourceRoot":"","sources":["../../../../components/grid/extendedDataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\r\nimport FlexLayout, {Actions} from \"flexlayout-react\";\r\nimport {ExclamationOutlined, EyeInvisibleOutlined, EyeOutlined, FilterOutlined} from \"@ant-design/icons\";\r\nimport {Badge, Button, Empty} from \"antd\";\r\nimport DataGrid, {\r\n DataGridFilterProps,\r\n DataGridProps,\r\n DataGridSearchProps,\r\n DataGridViewportChangedEvent,\r\n OnLoadDataCallback,\r\n SortItem\r\n} from \"./dataGrid\";\r\nimport debounce from \"lodash/debounce\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport isEqual from \"lodash/isEqual\"\r\nimport isEqualWith from \"lodash/isEqualWith\"\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport tableDefaultRowStyleRules, {RowStyleRule} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {\r\n ColDef,\r\n ColumnApi,\r\n ColumnState,\r\n GridApi,\r\n GridReadyEvent,\r\n RowDataUpdatedEvent,\r\n SelectionChangedEvent,\r\n TextFilter,\r\n TextFilterModel,\r\n ViewportChangedEvent\r\n} from \"ag-grid-community\";\r\nimport Model from \"flexlayout-react/declarations/model/Model\";\r\nimport {ColumnUtils} from \"./columnUtils\";\r\nimport {DataChangeStateEnum} from \"d2core/types/dataChangeStateEnum\";\r\n\r\nconst CONFIGURATION_VERSION = 1;\r\n\r\nexport interface GridConfiguration {\r\n // version of configuration\r\n version?: number\r\n // current layout model of panels (filter, table, detail)\r\n layoutModel?: any\r\n // current state of table columns\r\n columnModel?: ColumnState[]\r\n //current page size of the table\r\n pageSize: number\r\n // default page size, applied when user reverts configuration\r\n defaultPageSize?: number\r\n // table scrolls to lastly added record automatically\r\n followLastRecord?: boolean;\r\n // table sort model applied/required for follow last record functionality\r\n followLastRecordSortModel?: SortItem[]\r\n // flag if follow last record feature could be turned on/off by user\r\n followLastRecordEditable?: boolean\r\n // allow showing floating column filters beneath column names\r\n columnSearchVisible?: boolean\r\n // rules which apply to table rows\r\n rowStyleRules?: RowStyleRule[]\r\n // default rules which apply to table rows\r\n defaultRowStyleRules?: RowStyleRule[]\r\n // show milliseconds in datetime, time columns\r\n showMilliseconds?: boolean\r\n defaultShowMilliseconds?: boolean\r\n // hide year in date columns\r\n hideYear?: boolean\r\n defaultHideYear?: boolean\r\n}\r\n\r\ninterface ExtendedDataGridSearchProps extends DataGridSearchProps {\r\n initialSearchHistory?: string[]\r\n}\r\n\r\ninterface ExtendedDataGridFilterProps extends DataGridFilterProps {\r\n quickFilterEnabled?: boolean\r\n}\r\n\r\nexport interface FilterPanelRendererParams {\r\n defaultFilter?: any,\r\n // flag if filter is different than default filter\r\n filterChanged: boolean\r\n}\r\n\r\nexport interface ExtendedDataGridProps extends Omit<DataGridProps, \"paging\"> {\r\n defaultGridConfiguration: GridConfiguration\r\n\r\n // handler called during changes to data grid configuration\r\n onChangeConfiguration?(gridConfiguration: GridConfiguration): void\r\n\r\n // allow changing configuration\r\n disableConfigurationChange?: boolean\r\n\r\n filter?: ExtendedDataGridFilterProps\r\n search?: ExtendedDataGridSearchProps\r\n\r\n paging?: {\r\n /**\r\n * Page size change handler\r\n * @param currentPageSize - current page size represents number rows available\r\n * @param definedPageSize -\r\n */\r\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\r\n }\r\n // configuration of filter panel on the left side\r\n filterPanel?: {\r\n // default width of filter panel\r\n defaultWidth?: number\r\n // flag if panel is hidden, by default it is shown\r\n hidden?: boolean\r\n // default filter parameters\r\n defaultFilter?: any\r\n // filter panel render function\r\n renderer?(parameters: FilterPanelRendererParams): ReactElement\r\n }\r\n // configuration of detail panel on the right side\r\n detailPanel?: {\r\n // default width of detail panel on the left side\r\n defaultWidth?: number\r\n // detail panel render function\r\n renderer(): ReactElement\r\n }\r\n // panel placed directly below table, usually contains context buttons\r\n controlPanel?: {\r\n // control panel render function\r\n renderer?(): JSX.Element | null\r\n }\r\n\r\n // handler notifying data of the table has changed\r\n onDataChanged?(): void\r\n}\r\n\r\ninterface ExtendedDataGridState {\r\n // current layout model of panels (filter, table, detail)\r\n layoutModel: Model\r\n // current table configuration\r\n gridConfiguration: GridConfiguration\r\n // currently entered search string\r\n searchString: string\r\n // history of entered search strings\r\n searchHistory: string[]\r\n // default filter parameters\r\n defaultFilter: any\r\n // flag if advanced table configuration is visible\r\n tableConfigVisible: boolean\r\n // flag if filter has changed, so data doesn't correspond to current filter (color of search button changes to yellow)\r\n filterChanged: boolean\r\n // flag renders badge with exclamation after search button to notify user that table data are not actual\r\n tableNeedToBeReloaded: boolean\r\n}\r\n\r\n/**\r\n * Transaction class (more correct than RowDataTransaction)\r\n */\r\ninterface DataGridTransaction<T> {\r\n addIndex?: number;\r\n add: T[];\r\n remove: T[];\r\n update: T[];\r\n}\r\n\r\nexport default class ExtendedDataGrid<T extends { id: number | string }> extends React.Component<ExtendedDataGridProps, ExtendedDataGridState> {\r\n public static defaultProps = {\r\n rowStyleRules: tableDefaultRowStyleRules()\r\n };\r\n\r\n dataGrid?: DataGrid;\r\n private gridApi?: GridApi;\r\n private columnApi?: ColumnApi;\r\n // flag if data are loaded\r\n private dataLoaded: boolean;\r\n // transaction object used to update data from class\r\n private dataTransaction: DataGridTransaction<T>;\r\n\r\n private _updateDataDebounced?(): void;\r\n\r\n constructor(props: Readonly<ExtendedDataGridProps>) {\r\n super(props);\r\n let gridConfiguration: GridConfiguration = {\r\n version: CONFIGURATION_VERSION,\r\n pageSize: 0\r\n };\r\n const gridConfigurationOk = props.defaultGridConfiguration && (!props.defaultGridConfiguration.version || props.defaultGridConfiguration.version === CONFIGURATION_VERSION);\r\n const layoutModelExists = gridConfigurationOk && !!props.defaultGridConfiguration.layoutModel;\r\n gridConfiguration.layoutModel = layoutModelExists ? props.defaultGridConfiguration.layoutModel : this._getInitialLayoutModel(props);\r\n gridConfiguration.columnModel = gridConfigurationOk && props.defaultGridConfiguration.columnModel ? props.defaultGridConfiguration.columnModel : undefined;\r\n gridConfiguration.pageSize = gridConfigurationOk && props.defaultGridConfiguration.pageSize ? props.defaultGridConfiguration.pageSize : 0;\r\n gridConfiguration.defaultPageSize = gridConfigurationOk && props.defaultGridConfiguration.defaultPageSize ? props.defaultGridConfiguration.defaultPageSize : undefined;\r\n gridConfiguration.followLastRecord = gridConfigurationOk && props.defaultGridConfiguration.followLastRecord;\r\n gridConfiguration.followLastRecordSortModel = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordSortModel ? props.defaultGridConfiguration.followLastRecordSortModel : undefined;\r\n gridConfiguration.followLastRecordEditable = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordEditable;\r\n gridConfiguration.columnSearchVisible = gridConfigurationOk && props.defaultGridConfiguration.columnSearchVisible;\r\n gridConfiguration.rowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.rowStyleRules ? props.defaultGridConfiguration.rowStyleRules : tableDefaultRowStyleRules();\r\n gridConfiguration.defaultRowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.defaultRowStyleRules ? props.defaultGridConfiguration.defaultRowStyleRules : tableDefaultRowStyleRules();\r\n gridConfiguration.showMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.showMilliseconds ? props.defaultGridConfiguration.showMilliseconds : false;\r\n gridConfiguration.defaultShowMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.defaultShowMilliseconds ? props.defaultGridConfiguration.defaultShowMilliseconds : false;\r\n gridConfiguration.hideYear = gridConfigurationOk && props.defaultGridConfiguration.hideYear ? props.defaultGridConfiguration.hideYear : false;\r\n gridConfiguration.defaultHideYear = gridConfigurationOk && props.defaultGridConfiguration.defaultHideYear ? props.defaultGridConfiguration.defaultHideYear : false;\r\n\r\n this.state = {\r\n layoutModel: FlexLayout.Model.fromJson(gridConfiguration.layoutModel),\r\n gridConfiguration: gridConfiguration,\r\n // search context\r\n searchString: \"\",\r\n searchHistory: props.search && props.search.initialSearchHistory ? [...props.search.initialSearchHistory] : [],\r\n // visibility flags\r\n tableConfigVisible: false,\r\n\r\n defaultFilter: this.props.filterPanel && this.props.filterPanel.defaultFilter ? cloneDeep(this.props.filterPanel.defaultFilter) : undefined,\r\n filterChanged: false,\r\n tableNeedToBeReloaded: false\r\n };\r\n\r\n if (!layoutModelExists && props.filterPanel && props.filterPanel.hidden) {\r\n // hide filter panel if it is not explicitly shown\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\r\n this.state.gridConfiguration.layoutModel.layout.children[0].width = 0;\r\n }\r\n if (props.detailPanel) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\r\n }\r\n\r\n this.dataLoaded = false;\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n\r\n this.renderToolbarButtons = this.renderToolbarButtons.bind(this);\r\n this._onLoadData = this._onLoadData.bind(this);\r\n this._onGridReady = this._onGridReady.bind(this);\r\n this._onPaginationChanged = this._onPaginationChanged.bind(this);\r\n this._onSearch = this._onSearch.bind(this);\r\n this._onSearchStringChanged = this._onSearchStringChanged.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n this._updateDataDebounced = debounce(this._updateData.bind(this), 500, {maxWait: 500});\r\n this._followLastRecordDebounced = debounce(this._followLastRecordDebounced.bind(this), 500, {maxWait: 500});\r\n this._onRowDataUpdated = this._onRowDataUpdated.bind(this);\r\n this._onChangeRowStyleRules = this._onChangeRowStyleRules.bind(this);\r\n this.showFilterPanel = this.showFilterPanel.bind(this);\r\n this.showDetailPanel = this.showDetailPanel.bind(this);\r\n this.selectNextPreviousRecord = this.selectNextPreviousRecord.bind(this);\r\n this._onSelectionChanged = this._onSelectionChanged.bind(this);\r\n this._onViewportChanged = this._onViewportChanged.bind(this);\r\n }\r\n\r\n _getInitialLayoutModel(props: ExtendedDataGridProps) {\r\n const renderFilter = props.filterPanel && props.filterPanel.renderer;\r\n const renderDetail = props.detailPanel;\r\n const layoutModel: any = {\r\n global: {\r\n tabSetEnableTabStrip: false,\r\n splitterSize: 4,\r\n },\r\n borders: [],\r\n layout: {\r\n \"type\": \"row\",\r\n \"weight\": 100,\r\n \"children\": [{\r\n \"type\": \"tabset\",\r\n \"weight\": 100,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Data\",\r\n \"component\": \"data-panel\",\r\n }\r\n ]\r\n }]\r\n }\r\n };\r\n if (renderFilter) {\r\n layoutModel.layout[\"children\"].unshift({\r\n \"type\": \"tabset\",\r\n \"width\": props.filterPanel && props.filterPanel.defaultWidth ? props.filterPanel.defaultWidth : 228,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Filter\",\r\n \"component\": \"filter-panel\",\r\n }\r\n ]\r\n });\r\n }\r\n if (renderDetail) {\r\n layoutModel.layout[\"children\"].push({\r\n \"type\": \"tabset\",\r\n \"width\": props.detailPanel ? (props.detailPanel.defaultWidth ? props.detailPanel.defaultWidth : 220) : 0,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Detail\",\r\n \"component\": \"detail-panel\",\r\n }\r\n ]\r\n },);\r\n }\r\n return layoutModel;\r\n }\r\n\r\n getConfiguration(): GridConfiguration {\r\n return this.state.gridConfiguration;\r\n }\r\n\r\n getSearchContext(): { searchString: string, searchHistory: string[] } {\r\n // reverse searchHistory before storing it\r\n const searchHistory = [...this.state.searchHistory];\r\n searchHistory.reverse();\r\n return {\r\n searchString: this.state.searchString,\r\n searchHistory: searchHistory\r\n };\r\n }\r\n\r\n loadData(callback?: () => void): void {\r\n this.dataGrid?.loadData(callback);\r\n }\r\n\r\n isActive(): boolean {\r\n return !!this.dataGrid && this.dataGrid.isActive();\r\n }\r\n\r\n private _changeConfiguration(configuration: Partial<GridConfiguration>, callback?: () => void): void {\r\n if (this.props.disableConfigurationChange) {\r\n return;\r\n }\r\n const newConfiguration = Object.assign(this.state.gridConfiguration, configuration);\r\n this.setState({gridConfiguration: newConfiguration}, callback);\r\n if (this.props.onChangeConfiguration) {\r\n this.props.onChangeConfiguration(this.state.gridConfiguration);\r\n }\r\n }\r\n\r\n private _onGridReady(event: GridReadyEvent): void {\r\n this.gridApi = event.api;\r\n this.columnApi = event.columnApi;\r\n this._reloadTableConfiguration();\r\n if (this.props.onGridReady) {\r\n this.props.onGridReady(event);\r\n }\r\n }\r\n\r\n private _onLoadData(callback: OnLoadDataCallback): void {\r\n if (this.state.tableNeedToBeReloaded) {\r\n this.setState({tableNeedToBeReloaded: false});\r\n }\r\n this.props.onLoadData((recordsCount) => {\r\n this.dataLoaded = true;\r\n // clear meanwhile dynamically added/removed/updated data records\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n this.followLastRecord();\r\n callback(recordsCount);\r\n })\r\n }\r\n\r\n private _onPaginationChanged(currentPageSize: number | null, definedPageSize: number): void {\r\n if (this.dataLoaded) {\r\n const definedPageSizeChanged = this.state.gridConfiguration.pageSize !== definedPageSize;\r\n if (definedPageSizeChanged) {\r\n this._changeConfiguration({pageSize: definedPageSize});\r\n this._followLastRecordDebounced();\r\n }\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(currentPageSize, definedPageSize);\r\n }\r\n }\r\n }\r\n\r\n private _onSearchStringChanged(searchString: string): void {\r\n this.setState({searchString: searchString});\r\n if (this.props.search && this.props.search.onChange) {\r\n this.props.search.onChange(searchString);\r\n }\r\n }\r\n\r\n private _onSearch(): void {\r\n const currentSearchString = this.state.searchString;\r\n let searchHistory: string[] = this.state.searchHistory;\r\n\r\n // remove search string from history\r\n searchHistory = searchHistory.filter((searchString) => searchString !== currentSearchString);\r\n // add new search string to first position in history\r\n searchHistory.unshift(currentSearchString);\r\n searchHistory = searchHistory.slice(0, 10);\r\n this.setState({\r\n searchHistory: searchHistory,\r\n });\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }\r\n\r\n private _reloadTableConfiguration(): void {\r\n if (this.gridApi && this.columnApi) {\r\n if (this.state.gridConfiguration.columnModel) {\r\n ColumnUtils.mergeColumnsState(this.state.gridConfiguration.columnModel, this.props.columnDefs as ColDef[]);\r\n this.columnApi.applyColumnState({state: this.state.gridConfiguration.columnModel, applyOrder: true});\r\n } else {\r\n this.columnApi.resetColumnState();\r\n const columnState = this.columnApi.getColumnState();\r\n this._changeConfiguration({columnModel: columnState});\r\n }\r\n }\r\n }\r\n\r\n clearTransaction() {\r\n this.dataTransaction.add = [];\r\n this.dataTransaction.remove = [];\r\n this.dataTransaction.update = [];\r\n this.dataTransaction.addIndex = undefined;\r\n }\r\n\r\n removeFromTransaction(item: T) {\r\n this.dataTransaction.add = this.dataTransaction.add.filter(value => value.id !== item.id);\r\n this.dataTransaction.remove = this.dataTransaction.remove.filter(value => value.id !== item.id);\r\n this.dataTransaction.update = this.dataTransaction.update.filter(value => value.id !== item.id);\r\n }\r\n\r\n addRecord(data: T, addIndex?: number): void {\r\n const markedToRemove = this.dataTransaction.remove.find((value => value.id === data.id));\r\n if (markedToRemove) {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.update.push(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.add.push(data);\r\n if (addIndex !== undefined) {\r\n this.dataTransaction.addIndex = addIndex;\r\n }\r\n }\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n\r\n addRecords(dataArray: T[], addIndex?: number): void {\r\n dataArray.forEach(data => this.addRecord(data, addIndex));\r\n }\r\n\r\n removeRecord(data: T): void {\r\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\r\n if (markedToAdd) {\r\n this.removeFromTransaction(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.remove.push(data);\r\n }\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n\r\n removeRecords(dataList: T[]): void {\r\n dataList.forEach((data) => {\r\n this.removeRecord(data);\r\n })\r\n }\r\n\r\n updateRecord(data: (T & { dataChangeState?: DataChangeStateEnum })) {\r\n switch (data.dataChangeState) {\r\n case DataChangeStateEnum.CREATED:\r\n this.addRecord(data);\r\n break;\r\n case DataChangeStateEnum.REMOVED:\r\n this.removeRecord(data);\r\n break;\r\n default:\r\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\r\n if (markedToAdd) {\r\n this.addRecord(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.update.push(data);\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n updateRecords(dataList: (T & { dataChangeState?: DataChangeStateEnum })[]) {\r\n dataList.forEach((data) => {\r\n this.updateRecord(data);\r\n });\r\n }\r\n\r\n private _updateData(): void {\r\n // remove duplicates, preserve last version of object\r\n this.dataTransaction.update.forEach(data => {\r\n const rowNode = this.gridApi ? this.gridApi.getRowNode(data.id + \"\") : null;\r\n if (rowNode) {\r\n rowNode.updateData(data);\r\n if (this.props.filter && this.props.filter.quickFilterEnabled) {\r\n rowNode.resetQuickFilterAggregateText();\r\n }\r\n } else {\r\n this.dataTransaction.add.push(data);\r\n }\r\n });\r\n // we have already processed them\r\n this.dataTransaction.update = [];\r\n if (this.dataTransaction.add.length > 0 || this.dataTransaction.remove.length > 0) {\r\n this.dataTransaction.remove.forEach((object) => {\r\n const node = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\r\n if (node && node.isSelected()) {\r\n node.setSelected(false);\r\n }\r\n });\r\n // upgrade grid\r\n if (this.gridApi) {\r\n this.gridApi.applyTransaction(this.dataTransaction);\r\n }\r\n if (this.props.rowData) {\r\n // automatically updating client side array of records\r\n if (this.dataTransaction.addIndex !== undefined) {\r\n this.props.rowData.splice(this.dataTransaction.addIndex, 0, ...this.dataTransaction.add);\r\n } else {\r\n this.props.rowData.push(...this.dataTransaction.add);\r\n }\r\n this.dataTransaction.remove.forEach((object) => {\r\n const index = this.props.rowData ? this.props.rowData.indexOf(object) : -1;\r\n if (index >= 0 && this.props.rowData) {\r\n this.props.rowData.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n }\r\n if (this.props.onDataChanged) {\r\n this.props.onDataChanged();\r\n }\r\n }\r\n\r\n enableFollowLastRecord(enable: boolean): void {\r\n if (enable) {\r\n if (this.gridApi && this.state.gridConfiguration.followLastRecordSortModel) {\r\n this.dataGrid?.setSortModel(this.state.gridConfiguration.followLastRecordSortModel);\r\n this.gridApi.onSortChanged();\r\n }\r\n this._changeConfiguration({followLastRecord: true});\r\n this._followLastRecordDebounced();\r\n } else {\r\n if (this.state.gridConfiguration.followLastRecord) {\r\n this._changeConfiguration({followLastRecord: false});\r\n }\r\n }\r\n }\r\n\r\n _followLastRecordDebounced(): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\r\n this.followLastRecord();\r\n }\r\n }\r\n\r\n /**\r\n * Scrolls table to last record added to the tail of the table\r\n */\r\n followLastRecord(): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\r\n if (this.gridApi) {\r\n let lastIndex = -1;\r\n this.gridApi.forEachNodeAfterFilterAndSort((_, index) => {\r\n lastIndex = index;\r\n });\r\n if (lastIndex >= 0) {\r\n this.gridApi.ensureIndexVisible(lastIndex);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public setColumnModel(columnModel: ColumnState[]) {\r\n this.dataGrid?.setColumnState(columnModel);\r\n }\r\n\r\n public setSortModel(sortModel: SortItem[]) {\r\n this.dataGrid?.setSortModel(sortModel);\r\n }\r\n\r\n public getSortModel(): SortItem[] {\r\n return this.dataGrid?.getSortModel() ?? [];\r\n }\r\n\r\n _onRowDataUpdated(event: RowDataUpdatedEvent): void {\r\n this._followLastRecordDebounced();\r\n if (this.props.onRowDataUpdated) {\r\n this.props.onRowDataUpdated(event);\r\n }\r\n }\r\n\r\n showFilterPanel(show: boolean): void {\r\n if (show) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: this.props.filterPanel && this.props.filterPanel.defaultWidth ? this.props.filterPanel.defaultWidth : 250}));\r\n } else {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\r\n }\r\n }\r\n\r\n showDetailPanel(show: boolean): void {\r\n if (show) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: this.props.detailPanel && this.props.detailPanel.defaultWidth ? this.props.detailPanel.defaultWidth : 250}));\r\n } else {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\r\n }\r\n }\r\n\r\n selectNextPreviousRecord(previous: boolean): void {\r\n let selectedNodes = this.gridApi?.getSelectedNodes();\r\n if (selectedNodes && selectedNodes.length === 1) {\r\n let selectedNode = selectedNodes[0];\r\n if (this.props.rowData && this.props.rowData.length > 0) {\r\n this.gridApi?.forEachNodeAfterFilterAndSort((node) => {\r\n if ((!previous && node.childIndex === (selectedNode.childIndex + 1)) || (previous && node.childIndex === (selectedNode.childIndex - 1))) {\r\n node.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(node);\r\n }\r\n });\r\n } else if (this.props.rowModelType === \"infinite\" && selectedNode.rowIndex !== null) {\r\n const nextRowIndex = !previous ? selectedNode.rowIndex + 1 : (selectedNode.rowIndex !== 0 ? selectedNode.rowIndex - 1 : 0);\r\n const nextNode = this.gridApi?.getDisplayedRowAtIndex(nextRowIndex);\r\n if (nextNode) {\r\n nextNode.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(nextNode);\r\n }\r\n }\r\n }\r\n }\r\n\r\n changeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\r\n this.state.gridConfiguration.rowStyleRules = rowStyleRules;\r\n this.setState({gridConfiguration: this.state.gridConfiguration}, () => {\r\n this.gridApi?.redrawRows();\r\n });\r\n }\r\n\r\n _onChangeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\r\n this.changeRowStyleRules(rowStyleRules);\r\n if (this.props.onChangeRowStyleRules) {\r\n this.props.onChangeRowStyleRules(rowStyleRules);\r\n }\r\n }\r\n\r\n onPanelFilterApplied(newFilter: any): void {\r\n const filterChanged = !isEqualWith(newFilter, this.state.defaultFilter, this.equalValues);\r\n if (filterChanged !== this.state.filterChanged) {\r\n this.setState({filterChanged: filterChanged});\r\n }\r\n }\r\n\r\n getUiColumnFilterValue(colId: string): string {\r\n const nameFilterModel: TextFilterModel = (this.gridApi?.getFilterInstance(colId) as TextFilter).getModelFromUi() as TextFilterModel;\r\n return nameFilterModel && nameFilterModel.filter ? nameFilterModel.filter : \"\";\r\n }\r\n\r\n removeUiColumnFilterValue(colId: string) {\r\n const filterInstance = this.gridApi?.getFilterInstance(colId) as TextFilter;\r\n const nameFilterModel: TextFilterModel = filterInstance.getModelFromUi() as TextFilterModel;\r\n if (nameFilterModel) {\r\n nameFilterModel.filter = \"\";\r\n // we need to hack this typescript protected declaration\r\n // @ts-ignore\r\n filterInstance.resetUiToDefaults(false);\r\n }\r\n }\r\n\r\n /**\r\n * Applies UI column filter values silently without redrawing ag-grid\r\n * @param colId\r\n */\r\n applyUiColumnFilterValue(colId: string) {\r\n (this.gridApi?.getFilterInstance(colId) as TextFilter)?.applyModel?.();\r\n }\r\n\r\n private equalValues(value: any, otherValue: any): (boolean | undefined) {\r\n if ((value === undefined || value === null) && (otherValue === undefined || otherValue === null)) {\r\n return true;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _onSelectionChanged(event: SelectionChangedEvent): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.gridApi && this.gridApi.getSelectedRows().length > 0) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n if (this.props.onSelectionChanged) {\r\n this.props.onSelectionChanged(event);\r\n }\r\n }\r\n\r\n private _onViewportChanged(event: ViewportChangedEvent) {\r\n const dataGridEvent = event as DataGridViewportChangedEvent;\r\n if (this.state.gridConfiguration.followLastRecord && dataGridEvent.rowsScrollingDelta < 0) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n if (this.props.onViewportChanged) {\r\n this.props.onViewportChanged(dataGridEvent);\r\n }\r\n }\r\n\r\n private renderToolbarButtons(): ReactElement {\r\n const renderFilter = this.props.filterPanel && this.props.filterPanel.renderer;\r\n const filterPanelVisible = renderFilter && this.isFilterPanelVisible();\r\n return (\r\n <React.Fragment>\r\n {renderFilter && <Button type={filterPanelVisible ? \"primary\" : \"default\"} key=\"filter-button\"\r\n title={i18n(\"Show/Hide filter panel\")}\r\n onClick={() => {\r\n this.showFilterPanel(!filterPanelVisible);\r\n }}>\r\n <FilterOutlined/>\r\n </Button>}\r\n {this.props.toolbar?.toolbarButtons}\r\n {this.state.gridConfiguration.followLastRecordEditable &&\r\n <Button key=\"track-button\"\r\n title={i18n(\"Track last added record to table\")}\r\n onClick={(e) => {\r\n this.enableFollowLastRecord(!this.state.gridConfiguration.followLastRecord);\r\n (e.target as HTMLButtonElement).blur();\r\n }}>\r\n {this.state.gridConfiguration.followLastRecord ? <EyeOutlined/> : <EyeInvisibleOutlined/>}\r\n </Button>}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n private renderToolbar(originalToolbar: ReactElement): ReactElement {\r\n let toolbarToRender = originalToolbar;\r\n if (this.props.toolbar && this.props.toolbar.renderToolbar) {\r\n const searchBar = this.props.toolbar.renderToolbar(originalToolbar);\r\n if (searchBar) {\r\n toolbarToRender = searchBar;\r\n }\r\n }\r\n\r\n const statsBadge = this.renderSearchBadge();\r\n return (<div style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\r\n {toolbarToRender}\r\n {statsBadge}\r\n </div>);\r\n }\r\n\r\n private renderSearchBadge(): ReactElement | undefined {\r\n if (this.state.tableNeedToBeReloaded) {\r\n return (\r\n <Badge count={\r\n <span className=\"ant-badge-count\"\r\n title={i18n(\"Records has been added or removed, table need to be reloaded in order to see actual records\")}\r\n style={{color: \"#fa541c\", background: \"#fff2e8\", borderColor: \"#ffbb96\"}}>\r\n <ExclamationOutlined style={{color: '#fa541c'}}/>\r\n </span>\r\n } style={{cursor: \"hand\"}} offset={[10, -10]}/>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n isFilterPanelVisible(): boolean {\r\n return this.state.gridConfiguration.layoutModel ? this.state.gridConfiguration.layoutModel.layout.children[0].width > 0 : true;\r\n }\r\n\r\n renderDataGrid(): ReactElement {\r\n const {\r\n defaultGridConfiguration,\r\n onGridReady, onLoadData, onSortChanged, onColumnsChanged, onSelectionChanged, onViewportChanged,\r\n onTableConfigVisible, toolbar,\r\n paging, filter, search, onChangeConfiguration, onDataChanged, onChangeRowStyleRules,\r\n filterPanel, controlPanel,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <DataGrid\r\n {...rest}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid ? dataGrid : undefined;\r\n }}\r\n onLoadData={this._onLoadData}\r\n onGridReady={this._onGridReady}\r\n paging={{\r\n pageSize: this.state.gridConfiguration.pageSize,\r\n defaultPageSize: this.state.gridConfiguration.defaultPageSize,\r\n onPaginationChanged: this._onPaginationChanged,\r\n }}\r\n filter={{\r\n columnSearchVisible: this.state.gridConfiguration.columnSearchVisible,\r\n getFilterModel: filter ? filter.getFilterModel : undefined,\r\n onColumnSearchVisible: (visible) => {\r\n this._changeConfiguration({columnSearchVisible: visible});\r\n if (filter?.onColumnSearchVisible) {\r\n filter.onColumnSearchVisible(visible);\r\n }\r\n },\r\n onFilterModified: filter ? filter.onFilterModified : undefined,\r\n onFilterChanged: filter ? filter.onFilterChanged : undefined,\r\n onFilterConfirmed: filter ? filter.onFilterConfirmed : undefined,\r\n }}\r\n search={{\r\n hidden: !!search ? search.hidden : undefined,\r\n inputReadonly: !!search ? search.inputReadonly : undefined,\r\n placeholder: !!search ? search.placeholder : undefined,\r\n searchString: !!search && search.searchString !== undefined ? search.searchString : this.state.searchString,\r\n stringFormatter: !!search ? search.stringFormatter : undefined,\r\n searchHistory: !!search && search.searchHistory !== undefined ? search.searchHistory : this.state.searchHistory,\r\n searchButtonClassName: !!search ? search.searchButtonClassName : undefined,\r\n searchButtonDisabled: !!search ? search.searchButtonDisabled : undefined,\r\n searchRenderer: search?.searchRenderer,\r\n onChange: this._onSearchStringChanged,\r\n onSearch: this._onSearch\r\n }}\r\n toolbar={{\r\n renderToolbar: this.renderToolbar,\r\n toolbarButtons: this.renderToolbarButtons(),\r\n hideRecordCount: toolbar?.hideRecordCount\r\n }}\r\n onSortChanged={(event) => {\r\n const sortModel = this.dataGrid?.getSortModel();\r\n if (this.state.gridConfiguration.followLastRecord && this.state.gridConfiguration.followLastRecordSortModel && !isEqual(this.state.gridConfiguration.followLastRecordSortModel, sortModel)) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n const columnState = this.columnApi?.getColumnState();\r\n this._changeConfiguration({columnModel: columnState});\r\n if (onSortChanged) {\r\n onSortChanged(event);\r\n }\r\n }}\r\n onColumnsChanged={(columnModel, event) => {\r\n this._changeConfiguration({columnModel: columnModel});\r\n if (onColumnsChanged) {\r\n onColumnsChanged(columnModel, event);\r\n }\r\n }}\r\n onRowDataUpdated={this._onRowDataUpdated}\r\n tableConfigVisible={this.state.tableConfigVisible}\r\n onTableConfigVisible={(visible) => {\r\n this.setState({tableConfigVisible: visible});\r\n if (onTableConfigVisible) {\r\n onTableConfigVisible(visible);\r\n }\r\n }}\r\n onSelectionChanged={this._onSelectionChanged}\r\n rowStyleRules={this.state.gridConfiguration.rowStyleRules as RowStyleRule[]}\r\n defaultRowStyleRules={this.state.gridConfiguration.defaultRowStyleRules}\r\n onChangeRowStyleRules={this._onChangeRowStyleRules}\r\n onViewportChanged={this._onViewportChanged}\r\n showMilliseconds={this.state.gridConfiguration.showMilliseconds}\r\n defaultShowMilliseconds={this.state.gridConfiguration.defaultShowMilliseconds}\r\n onShowMilliseconds={(showMillis, callback) => {\r\n this._changeConfiguration({showMilliseconds: showMillis}, callback);\r\n }}\r\n hideYear={this.state.gridConfiguration.hideYear}\r\n defaultHideYear={this.state.gridConfiguration.defaultHideYear}\r\n onShowYear={(showYear, callback) => {\r\n this._changeConfiguration({hideYear: !showYear}, callback);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderDataGridWithControlPanel() {\r\n if (this.props.controlPanel && this.props.controlPanel.renderer) {\r\n return (\r\n <div key=\"table-with-control-panel\" style={{\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n width: \"100%\"\r\n }}>\r\n <div key=\"table-with-control-panel-wrapper\" style={{flex: \"1 1 auto\", overflow: \"auto\"}}>\r\n {this.renderDataGrid()}\r\n </div>\r\n {this.props.controlPanel.renderer()}\r\n </div>);\r\n }\r\n return this.renderDataGrid();\r\n }\r\n\r\n render() {\r\n const {filterPanel, detailPanel} = this.props;\r\n if (filterPanel || detailPanel) {\r\n return (\r\n <FlexLayout.Layout model={this.state.layoutModel}\r\n onModelChange={(model) => {\r\n this._changeConfiguration({layoutModel: model.toJson()});\r\n }}\r\n onAction={(action) => {\r\n if (action.type === Actions.ADJUST_SPLIT && action.data.node1 === \"#4\" && action.data.node2 === \"#6\") { // disable moving splitter for filter panel\r\n return undefined;\r\n }\r\n return action;\r\n }}\r\n factory={(node) => {\r\n const component = node.getComponent();\r\n if (component === \"filter-panel\") {\r\n return filterPanel && filterPanel.renderer && filterPanel.renderer({\r\n defaultFilter: this.state.defaultFilter,\r\n filterChanged: this.state.filterChanged\r\n });\r\n } else if (component === \"data-panel\") {\r\n return this.renderDataGridWithControlPanel();\r\n } else if (component === \"detail-panel\") {\r\n return detailPanel && detailPanel.renderer();\r\n }\r\n return <Empty/>\r\n }}\r\n />\r\n );\r\n } else {\r\n return this.renderDataGridWithControlPanel();\r\n }\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"extendedDataGrid.js","sourceRoot":"","sources":["../../../../components/grid/extendedDataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\r\nimport FlexLayout, {Actions} from \"flexlayout-react\";\r\nimport {ExclamationOutlined, EyeInvisibleOutlined, EyeOutlined, FilterOutlined} from \"@ant-design/icons\";\r\nimport {Badge, Button, Empty} from \"antd\";\r\nimport DataGrid, {\r\n DataGridFilterProps,\r\n DataGridProps,\r\n DataGridSearchProps,\r\n DataGridViewportChangedEvent,\r\n OnLoadDataCallback,\r\n SortItem\r\n} from \"./dataGrid\";\r\nimport debounce from \"lodash/debounce\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport isEqual from \"lodash/isEqual\"\r\nimport isEqualWith from \"lodash/isEqualWith\"\r\nimport cloneDeep from \"lodash/cloneDeep\";\r\nimport tableDefaultRowStyleRules, {RowStyleRule} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\r\nimport {\r\n ColDef,\r\n ColumnApi,\r\n ColumnState,\r\n GridApi,\r\n GridReadyEvent,\r\n RowDataUpdatedEvent,\r\n SelectionChangedEvent,\r\n TextFilter,\r\n TextFilterModel,\r\n ViewportChangedEvent\r\n} from \"ag-grid-community\";\r\nimport Model from \"flexlayout-react/declarations/model/Model\";\r\nimport {ColumnUtils} from \"./columnUtils\";\r\nimport {DataChangeStateEnum} from \"d2core/types/dataChangeStateEnum\";\r\n\r\nconst CONFIGURATION_VERSION = 1;\r\n\r\nexport interface GridConfiguration {\r\n // version of configuration\r\n version?: number\r\n // current layout model of panels (filter, table, detail)\r\n layoutModel?: any\r\n // current state of table columns\r\n columnModel?: ColumnState[]\r\n //current page size of the table\r\n pageSize: number\r\n // default page size, applied when user reverts configuration\r\n defaultPageSize?: number\r\n // table scrolls to lastly added record automatically\r\n followLastRecord?: boolean;\r\n // table sort model applied/required for follow last record functionality\r\n followLastRecordSortModel?: SortItem[]\r\n // flag if follow last record feature could be turned on/off by user\r\n followLastRecordEditable?: boolean\r\n // allow showing floating column filters beneath column names\r\n columnSearchVisible?: boolean\r\n // rules which apply to table rows\r\n rowStyleRules?: RowStyleRule[]\r\n // default rules which apply to table rows\r\n defaultRowStyleRules?: RowStyleRule[]\r\n // show milliseconds in datetime, time columns\r\n showMilliseconds?: boolean\r\n defaultShowMilliseconds?: boolean\r\n // hide year in date columns\r\n hideYear?: boolean\r\n defaultHideYear?: boolean\r\n}\r\n\r\ninterface ExtendedDataGridSearchProps extends DataGridSearchProps {\r\n initialSearchHistory?: string[]\r\n}\r\n\r\ninterface ExtendedDataGridFilterProps extends DataGridFilterProps {\r\n quickFilterEnabled?: boolean\r\n}\r\n\r\nexport interface FilterPanelRendererParams {\r\n defaultFilter?: any,\r\n // flag if filter is different than default filter\r\n filterChanged: boolean\r\n}\r\n\r\nexport interface ExtendedDataGridProps extends Omit<DataGridProps, \"paging\"> {\r\n defaultGridConfiguration: GridConfiguration\r\n\r\n // handler called during changes to data grid configuration\r\n onChangeConfiguration?(gridConfiguration: GridConfiguration): void\r\n\r\n // allow changing configuration\r\n disableConfigurationChange?: boolean\r\n\r\n filter?: ExtendedDataGridFilterProps\r\n search?: ExtendedDataGridSearchProps\r\n\r\n paging?: {\r\n /**\r\n * Page size change handler\r\n * @param currentPageSize - current page size represents number rows available\r\n * @param definedPageSize -\r\n */\r\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\r\n }\r\n // configuration of filter panel on the left side\r\n filterPanel?: {\r\n // default width of filter panel\r\n defaultWidth?: number\r\n // flag if panel is hidden, by default it is shown\r\n hidden?: boolean\r\n // default filter parameters\r\n defaultFilter?: any\r\n // filter panel render function\r\n renderer?(parameters: FilterPanelRendererParams): ReactElement\r\n }\r\n // configuration of detail panel on the right side\r\n detailPanel?: {\r\n // default width of detail panel on the left side\r\n defaultWidth?: number\r\n // detail panel render function\r\n renderer(): ReactElement\r\n }\r\n // panel placed directly below table, usually contains context buttons\r\n controlPanel?: {\r\n // control panel render function\r\n renderer?(): JSX.Element | null\r\n }\r\n\r\n // handler notifying data of the table has changed\r\n onDataChanged?(): void\r\n\r\n // time between value updates in ms, 0 means no debounce\r\n updateDataDebounceInterval?: number\r\n}\r\n\r\ninterface ExtendedDataGridState {\r\n // current layout model of panels (filter, table, detail)\r\n layoutModel: Model\r\n // current table configuration\r\n gridConfiguration: GridConfiguration\r\n // currently entered search string\r\n searchString: string\r\n // history of entered search strings\r\n searchHistory: string[]\r\n // default filter parameters\r\n defaultFilter: any\r\n // flag if advanced table configuration is visible\r\n tableConfigVisible: boolean\r\n // flag if filter has changed, so data doesn't correspond to current filter (color of search button changes to yellow)\r\n filterChanged: boolean\r\n // flag renders badge with exclamation after search button to notify user that table data are not actual\r\n tableNeedToBeReloaded: boolean\r\n}\r\n\r\n/**\r\n * Transaction class (more correct than RowDataTransaction)\r\n */\r\ninterface DataGridTransaction<T> {\r\n addIndex?: number;\r\n add: T[];\r\n remove: T[];\r\n update: T[];\r\n}\r\n\r\nexport default class ExtendedDataGrid<T extends { id: number | string }> extends React.Component<ExtendedDataGridProps, ExtendedDataGridState> {\r\n public static defaultProps = {\r\n rowStyleRules: tableDefaultRowStyleRules()\r\n };\r\n\r\n dataGrid?: DataGrid;\r\n private gridApi?: GridApi;\r\n private columnApi?: ColumnApi;\r\n // flag if data are loaded\r\n private dataLoaded: boolean;\r\n // transaction object used to update data from class\r\n private dataTransaction: DataGridTransaction<T>;\r\n\r\n private _updateDataDebounced?(): void;\r\n\r\n constructor(props: Readonly<ExtendedDataGridProps>) {\r\n super(props);\r\n let gridConfiguration: GridConfiguration = {\r\n version: CONFIGURATION_VERSION,\r\n pageSize: 0\r\n };\r\n const gridConfigurationOk = props.defaultGridConfiguration && (!props.defaultGridConfiguration.version || props.defaultGridConfiguration.version === CONFIGURATION_VERSION);\r\n const layoutModelExists = gridConfigurationOk && !!props.defaultGridConfiguration.layoutModel;\r\n gridConfiguration.layoutModel = layoutModelExists ? props.defaultGridConfiguration.layoutModel : this._getInitialLayoutModel(props);\r\n gridConfiguration.columnModel = gridConfigurationOk && props.defaultGridConfiguration.columnModel ? props.defaultGridConfiguration.columnModel : undefined;\r\n gridConfiguration.pageSize = gridConfigurationOk && props.defaultGridConfiguration.pageSize ? props.defaultGridConfiguration.pageSize : 0;\r\n gridConfiguration.defaultPageSize = gridConfigurationOk && props.defaultGridConfiguration.defaultPageSize ? props.defaultGridConfiguration.defaultPageSize : undefined;\r\n gridConfiguration.followLastRecord = gridConfigurationOk && props.defaultGridConfiguration.followLastRecord;\r\n gridConfiguration.followLastRecordSortModel = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordSortModel ? props.defaultGridConfiguration.followLastRecordSortModel : undefined;\r\n gridConfiguration.followLastRecordEditable = gridConfigurationOk && props.defaultGridConfiguration.followLastRecordEditable;\r\n gridConfiguration.columnSearchVisible = gridConfigurationOk && props.defaultGridConfiguration.columnSearchVisible;\r\n gridConfiguration.rowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.rowStyleRules ? props.defaultGridConfiguration.rowStyleRules : tableDefaultRowStyleRules();\r\n gridConfiguration.defaultRowStyleRules = gridConfigurationOk && props.defaultGridConfiguration.defaultRowStyleRules ? props.defaultGridConfiguration.defaultRowStyleRules : tableDefaultRowStyleRules();\r\n gridConfiguration.showMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.showMilliseconds ? props.defaultGridConfiguration.showMilliseconds : false;\r\n gridConfiguration.defaultShowMilliseconds = gridConfigurationOk && props.defaultGridConfiguration.defaultShowMilliseconds ? props.defaultGridConfiguration.defaultShowMilliseconds : false;\r\n gridConfiguration.hideYear = gridConfigurationOk && props.defaultGridConfiguration.hideYear ? props.defaultGridConfiguration.hideYear : false;\r\n gridConfiguration.defaultHideYear = gridConfigurationOk && props.defaultGridConfiguration.defaultHideYear ? props.defaultGridConfiguration.defaultHideYear : false;\r\n\r\n this.state = {\r\n layoutModel: FlexLayout.Model.fromJson(gridConfiguration.layoutModel),\r\n gridConfiguration: gridConfiguration,\r\n // search context\r\n searchString: \"\",\r\n searchHistory: props.search && props.search.initialSearchHistory ? [...props.search.initialSearchHistory] : [],\r\n // visibility flags\r\n tableConfigVisible: false,\r\n\r\n defaultFilter: this.props.filterPanel && this.props.filterPanel.defaultFilter ? cloneDeep(this.props.filterPanel.defaultFilter) : undefined,\r\n filterChanged: false,\r\n tableNeedToBeReloaded: false\r\n };\r\n\r\n if (!layoutModelExists && props.filterPanel && props.filterPanel.hidden) {\r\n // hide filter panel if it is not explicitly shown\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\r\n this.state.gridConfiguration.layoutModel.layout.children[0].width = 0;\r\n }\r\n if (props.detailPanel) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\r\n }\r\n\r\n this.dataLoaded = false;\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n\r\n const debounceInterval: number = props.updateDataDebounceInterval ?? 500;\r\n if (debounceInterval > 0) {\r\n this._updateDataDebounced = debounce(this._updateData.bind(this), debounceInterval, {maxWait: debounceInterval});\r\n } else {\r\n this._updateDataDebounced = this._updateData.bind(this);\r\n }\r\n\r\n this.renderToolbarButtons = this.renderToolbarButtons.bind(this);\r\n this._onLoadData = this._onLoadData.bind(this);\r\n this._onGridReady = this._onGridReady.bind(this);\r\n this._onPaginationChanged = this._onPaginationChanged.bind(this);\r\n this._onSearch = this._onSearch.bind(this);\r\n this._onSearchStringChanged = this._onSearchStringChanged.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n this._followLastRecordDebounced = debounce(this._followLastRecordDebounced.bind(this), 500, {maxWait: 500});\r\n this._onRowDataUpdated = this._onRowDataUpdated.bind(this);\r\n this._onChangeRowStyleRules = this._onChangeRowStyleRules.bind(this);\r\n this.showFilterPanel = this.showFilterPanel.bind(this);\r\n this.showDetailPanel = this.showDetailPanel.bind(this);\r\n this.selectNextPreviousRecord = this.selectNextPreviousRecord.bind(this);\r\n this._onSelectionChanged = this._onSelectionChanged.bind(this);\r\n this._onViewportChanged = this._onViewportChanged.bind(this);\r\n }\r\n\r\n _getInitialLayoutModel(props: ExtendedDataGridProps) {\r\n const renderFilter = props.filterPanel && props.filterPanel.renderer;\r\n const renderDetail = props.detailPanel;\r\n const layoutModel: any = {\r\n global: {\r\n tabSetEnableTabStrip: false,\r\n splitterSize: 4,\r\n },\r\n borders: [],\r\n layout: {\r\n \"type\": \"row\",\r\n \"weight\": 100,\r\n \"children\": [{\r\n \"type\": \"tabset\",\r\n \"weight\": 100,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Data\",\r\n \"component\": \"data-panel\",\r\n }\r\n ]\r\n }]\r\n }\r\n };\r\n if (renderFilter) {\r\n layoutModel.layout[\"children\"].unshift({\r\n \"type\": \"tabset\",\r\n \"width\": props.filterPanel && props.filterPanel.defaultWidth ? props.filterPanel.defaultWidth : 228,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Filter\",\r\n \"component\": \"filter-panel\",\r\n }\r\n ]\r\n });\r\n }\r\n if (renderDetail) {\r\n layoutModel.layout[\"children\"].push({\r\n \"type\": \"tabset\",\r\n \"width\": props.detailPanel ? (props.detailPanel.defaultWidth ? props.detailPanel.defaultWidth : 220) : 0,\r\n \"selected\": 0,\r\n \"children\": [\r\n {\r\n \"type\": \"tab\",\r\n \"name\": \"Detail\",\r\n \"component\": \"detail-panel\",\r\n }\r\n ]\r\n },);\r\n }\r\n return layoutModel;\r\n }\r\n\r\n getConfiguration(): GridConfiguration {\r\n return this.state.gridConfiguration;\r\n }\r\n\r\n getSearchContext(): { searchString: string, searchHistory: string[] } {\r\n // reverse searchHistory before storing it\r\n const searchHistory = [...this.state.searchHistory];\r\n searchHistory.reverse();\r\n return {\r\n searchString: this.state.searchString,\r\n searchHistory: searchHistory\r\n };\r\n }\r\n\r\n loadData(callback?: () => void): void {\r\n this.dataGrid?.loadData(callback);\r\n }\r\n\r\n isActive(): boolean {\r\n return !!this.dataGrid && this.dataGrid.isActive();\r\n }\r\n\r\n private _changeConfiguration(configuration: Partial<GridConfiguration>, callback?: () => void): void {\r\n if (this.props.disableConfigurationChange) {\r\n return;\r\n }\r\n const newConfiguration = Object.assign(this.state.gridConfiguration, configuration);\r\n this.setState({gridConfiguration: newConfiguration}, callback);\r\n if (this.props.onChangeConfiguration) {\r\n this.props.onChangeConfiguration(this.state.gridConfiguration);\r\n }\r\n }\r\n\r\n private _onGridReady(event: GridReadyEvent): void {\r\n this.gridApi = event.api;\r\n this.columnApi = event.columnApi;\r\n this._reloadTableConfiguration();\r\n if (this.props.onGridReady) {\r\n this.props.onGridReady(event);\r\n }\r\n }\r\n\r\n private _onLoadData(callback: OnLoadDataCallback): void {\r\n if (this.state.tableNeedToBeReloaded) {\r\n this.setState({tableNeedToBeReloaded: false});\r\n }\r\n this.props.onLoadData((recordsCount) => {\r\n this.dataLoaded = true;\r\n // clear meanwhile dynamically added/removed/updated data records\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n this.followLastRecord();\r\n callback(recordsCount);\r\n })\r\n }\r\n\r\n private _onPaginationChanged(currentPageSize: number | null, definedPageSize: number): void {\r\n if (this.dataLoaded) {\r\n const definedPageSizeChanged = this.state.gridConfiguration.pageSize !== definedPageSize;\r\n if (definedPageSizeChanged) {\r\n this._changeConfiguration({pageSize: definedPageSize});\r\n this._followLastRecordDebounced();\r\n }\r\n if (this.props.paging && this.props.paging.onPaginationChanged) {\r\n this.props.paging.onPaginationChanged(currentPageSize, definedPageSize);\r\n }\r\n }\r\n }\r\n\r\n private _onSearchStringChanged(searchString: string): void {\r\n this.setState({searchString: searchString});\r\n if (this.props.search && this.props.search.onChange) {\r\n this.props.search.onChange(searchString);\r\n }\r\n }\r\n\r\n private _onSearch(): void {\r\n const currentSearchString = this.state.searchString;\r\n let searchHistory: string[] = this.state.searchHistory;\r\n\r\n // remove search string from history\r\n searchHistory = searchHistory.filter((searchString) => searchString !== currentSearchString);\r\n // add new search string to first position in history\r\n searchHistory.unshift(currentSearchString);\r\n searchHistory = searchHistory.slice(0, 10);\r\n this.setState({\r\n searchHistory: searchHistory,\r\n });\r\n if (this.props.search && this.props.search.onSearch) {\r\n this.props.search.onSearch();\r\n }\r\n }\r\n\r\n private _reloadTableConfiguration(): void {\r\n if (this.gridApi && this.columnApi) {\r\n if (this.state.gridConfiguration.columnModel) {\r\n ColumnUtils.mergeColumnsState(this.state.gridConfiguration.columnModel, this.props.columnDefs as ColDef[]);\r\n this.columnApi.applyColumnState({state: this.state.gridConfiguration.columnModel, applyOrder: true});\r\n } else {\r\n this.columnApi.resetColumnState();\r\n const columnState = this.columnApi.getColumnState();\r\n this._changeConfiguration({columnModel: columnState});\r\n }\r\n }\r\n }\r\n\r\n clearTransaction() {\r\n this.dataTransaction.add = [];\r\n this.dataTransaction.remove = [];\r\n this.dataTransaction.update = [];\r\n this.dataTransaction.addIndex = undefined;\r\n }\r\n\r\n removeFromTransaction(item: T) {\r\n this.dataTransaction.add = this.dataTransaction.add.filter(value => value.id !== item.id);\r\n this.dataTransaction.remove = this.dataTransaction.remove.filter(value => value.id !== item.id);\r\n this.dataTransaction.update = this.dataTransaction.update.filter(value => value.id !== item.id);\r\n }\r\n\r\n addRecord(data: T, addIndex?: number): void {\r\n const markedToRemove = this.dataTransaction.remove.find((value => value.id === data.id));\r\n if (markedToRemove) {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.update.push(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.add.push(data);\r\n if (addIndex !== undefined) {\r\n this.dataTransaction.addIndex = addIndex;\r\n }\r\n }\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n\r\n addRecords(dataArray: T[], addIndex?: number): void {\r\n (addIndex ? dataArray.reverse() : dataArray).forEach(data => this.addRecord(data, addIndex));\r\n }\r\n\r\n removeRecord(data: T): void {\r\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\r\n if (markedToAdd) {\r\n this.removeFromTransaction(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.remove.push(data);\r\n }\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n\r\n removeRecords(dataList: T[]): void {\r\n dataList.forEach((data) => {\r\n this.removeRecord(data);\r\n })\r\n }\r\n\r\n updateRecord(data: (T & { dataChangeState?: DataChangeStateEnum })) {\r\n switch (data.dataChangeState) {\r\n case DataChangeStateEnum.CREATED:\r\n this.addRecord(data);\r\n break;\r\n case DataChangeStateEnum.REMOVED:\r\n this.removeRecord(data);\r\n break;\r\n default:\r\n const markedToAdd = this.dataTransaction.add.find((value => value.id === data.id));\r\n if (markedToAdd) {\r\n this.addRecord(data);\r\n } else {\r\n this.removeFromTransaction(data);\r\n this.dataTransaction.update.push(data);\r\n if (this._updateDataDebounced) {\r\n this._updateDataDebounced();\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n updateRecords(dataList: (T & { dataChangeState?: DataChangeStateEnum })[]) {\r\n dataList.forEach((data) => {\r\n this.updateRecord(data);\r\n });\r\n }\r\n\r\n private _updateData(): void {\r\n // remove duplicates, preserve last version of object\r\n this.dataTransaction.update.forEach(data => {\r\n const rowNode = this.gridApi ? this.gridApi.getRowNode(data.id + \"\") : null;\r\n if (rowNode) {\r\n rowNode.updateData(data);\r\n if (this.props.filter && this.props.filter.quickFilterEnabled) {\r\n rowNode.resetQuickFilterAggregateText();\r\n }\r\n } else {\r\n this.dataTransaction.add.push(data);\r\n }\r\n });\r\n // we have already processed them\r\n this.dataTransaction.update = [];\r\n if (this.dataTransaction.add.length > 0 || this.dataTransaction.remove.length > 0) {\r\n this.dataTransaction.remove.forEach((object) => {\r\n const node = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\r\n if (node && node.isSelected()) {\r\n node.setSelected(false);\r\n }\r\n });\r\n // upgrade grid\r\n if (this.gridApi) {\r\n this.gridApi.applyTransaction(this.dataTransaction);\r\n }\r\n if (this.props.rowData) {\r\n // automatically updating client side array of records\r\n if (this.dataTransaction.addIndex !== undefined) {\r\n this.props.rowData.splice(this.dataTransaction.addIndex, 0, ...this.dataTransaction.add);\r\n } else {\r\n this.props.rowData.push(...this.dataTransaction.add);\r\n }\r\n this.dataTransaction.remove.forEach((object) => {\r\n const index = this.props.rowData ? this.props.rowData.indexOf(object) : -1;\r\n if (index >= 0 && this.props.rowData) {\r\n this.props.rowData.splice(index, 1);\r\n }\r\n });\r\n }\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n }\r\n if (this.props.onDataChanged) {\r\n this.props.onDataChanged();\r\n }\r\n }\r\n\r\n enableFollowLastRecord(enable: boolean): void {\r\n if (enable) {\r\n if (this.gridApi && this.state.gridConfiguration.followLastRecordSortModel) {\r\n this.dataGrid?.setSortModel(this.state.gridConfiguration.followLastRecordSortModel);\r\n this.gridApi.onSortChanged();\r\n }\r\n this._changeConfiguration({followLastRecord: true});\r\n this._followLastRecordDebounced();\r\n } else {\r\n if (this.state.gridConfiguration.followLastRecord) {\r\n this._changeConfiguration({followLastRecord: false});\r\n }\r\n }\r\n }\r\n\r\n _followLastRecordDebounced(): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\r\n this.followLastRecord();\r\n }\r\n }\r\n\r\n /**\r\n * Scrolls table to last record added to the tail of the table\r\n */\r\n followLastRecord(): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.props.rowData && this.props.rowData.length > 0) {\r\n if (this.gridApi) {\r\n let lastIndex = -1;\r\n this.gridApi.forEachNodeAfterFilterAndSort((_, index) => {\r\n lastIndex = index;\r\n });\r\n if (lastIndex >= 0) {\r\n this.gridApi.ensureIndexVisible(lastIndex);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public setColumnModel(columnModel: ColumnState[]) {\r\n this.dataGrid?.setColumnState(columnModel);\r\n }\r\n\r\n public setSortModel(sortModel: SortItem[]) {\r\n this.dataGrid?.setSortModel(sortModel);\r\n }\r\n\r\n public getSortModel(): SortItem[] {\r\n return this.dataGrid?.getSortModel() ?? [];\r\n }\r\n\r\n _onRowDataUpdated(event: RowDataUpdatedEvent): void {\r\n this._followLastRecordDebounced();\r\n if (this.props.onRowDataUpdated) {\r\n this.props.onRowDataUpdated(event);\r\n }\r\n }\r\n\r\n showFilterPanel(show: boolean): void {\r\n if (show) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: this.props.filterPanel && this.props.filterPanel.defaultWidth ? this.props.filterPanel.defaultWidth : 250}));\r\n } else {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(\"#2\", {width: 0}));\r\n }\r\n }\r\n\r\n showDetailPanel(show: boolean): void {\r\n if (show) {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: this.props.detailPanel && this.props.detailPanel.defaultWidth ? this.props.detailPanel.defaultWidth : 250}));\r\n } else {\r\n this.state.layoutModel.doAction(FlexLayout.Actions.updateNodeAttributes(this.props.filterPanel ? \"#6\" : \"#4\", {width: 0}));\r\n }\r\n }\r\n\r\n selectNextPreviousRecord(previous: boolean): void {\r\n let selectedNodes = this.gridApi?.getSelectedNodes();\r\n if (selectedNodes && selectedNodes.length === 1) {\r\n let selectedNode = selectedNodes[0];\r\n if (this.props.rowData && this.props.rowData.length > 0) {\r\n this.gridApi?.forEachNodeAfterFilterAndSort((node) => {\r\n if ((!previous && node.childIndex === (selectedNode.childIndex + 1)) || (previous && node.childIndex === (selectedNode.childIndex - 1))) {\r\n node.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(node);\r\n }\r\n });\r\n } else if (this.props.rowModelType === \"infinite\" && selectedNode.rowIndex !== null) {\r\n const nextRowIndex = !previous ? selectedNode.rowIndex + 1 : (selectedNode.rowIndex !== 0 ? selectedNode.rowIndex - 1 : 0);\r\n const nextNode = this.gridApi?.getDisplayedRowAtIndex(nextRowIndex);\r\n if (nextNode) {\r\n nextNode.setSelected(true, true);\r\n this.gridApi?.ensureNodeVisible(nextNode);\r\n }\r\n }\r\n }\r\n }\r\n\r\n changeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\r\n this.state.gridConfiguration.rowStyleRules = rowStyleRules;\r\n this.setState({gridConfiguration: this.state.gridConfiguration}, () => {\r\n this.gridApi?.redrawRows();\r\n });\r\n }\r\n\r\n _onChangeRowStyleRules(rowStyleRules: RowStyleRule[]): void {\r\n this.changeRowStyleRules(rowStyleRules);\r\n if (this.props.onChangeRowStyleRules) {\r\n this.props.onChangeRowStyleRules(rowStyleRules);\r\n }\r\n }\r\n\r\n onPanelFilterApplied(newFilter: any): void {\r\n const filterChanged = !isEqualWith(newFilter, this.state.defaultFilter, this.equalValues);\r\n if (filterChanged !== this.state.filterChanged) {\r\n this.setState({filterChanged: filterChanged});\r\n }\r\n }\r\n\r\n getUiColumnFilterValue(colId: string): string {\r\n const nameFilterModel: TextFilterModel = (this.gridApi?.getFilterInstance(colId) as TextFilter).getModelFromUi() as TextFilterModel;\r\n return nameFilterModel && nameFilterModel.filter ? nameFilterModel.filter : \"\";\r\n }\r\n\r\n removeUiColumnFilterValue(colId: string) {\r\n const filterInstance = this.gridApi?.getFilterInstance(colId) as TextFilter;\r\n const nameFilterModel: TextFilterModel = filterInstance.getModelFromUi() as TextFilterModel;\r\n if (nameFilterModel) {\r\n nameFilterModel.filter = \"\";\r\n // we need to hack this typescript protected declaration\r\n // @ts-ignore\r\n filterInstance.resetUiToDefaults(false);\r\n }\r\n }\r\n\r\n /**\r\n * Applies UI column filter values silently without redrawing ag-grid\r\n * @param colId\r\n */\r\n applyUiColumnFilterValue(colId: string) {\r\n (this.gridApi?.getFilterInstance(colId) as TextFilter)?.applyModel?.();\r\n }\r\n\r\n private equalValues(value: any, otherValue: any): (boolean | undefined) {\r\n if ((value === undefined || value === null) && (otherValue === undefined || otherValue === null)) {\r\n return true;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _onSelectionChanged(event: SelectionChangedEvent): void {\r\n if (this.state.gridConfiguration.followLastRecord && this.gridApi && this.gridApi.getSelectedRows().length > 0) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n if (this.props.onSelectionChanged) {\r\n this.props.onSelectionChanged(event);\r\n }\r\n }\r\n\r\n private _onViewportChanged(event: ViewportChangedEvent) {\r\n const dataGridEvent = event as DataGridViewportChangedEvent;\r\n if (this.state.gridConfiguration.followLastRecord && dataGridEvent.rowsScrollingDelta < 0) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n if (this.props.onViewportChanged) {\r\n this.props.onViewportChanged(dataGridEvent);\r\n }\r\n }\r\n\r\n private renderToolbarButtons(): ReactElement {\r\n const renderFilter = this.props.filterPanel && this.props.filterPanel.renderer;\r\n const filterPanelVisible = renderFilter && this.isFilterPanelVisible();\r\n return (\r\n <React.Fragment>\r\n {renderFilter && <Button type={filterPanelVisible ? \"primary\" : \"default\"} key=\"filter-button\"\r\n title={i18n(\"Show/Hide filter panel\")}\r\n onClick={() => {\r\n this.showFilterPanel(!filterPanelVisible);\r\n }}>\r\n <FilterOutlined/>\r\n </Button>}\r\n {this.props.toolbar?.toolbarButtons}\r\n {this.state.gridConfiguration.followLastRecordEditable &&\r\n <Button key=\"track-button\"\r\n title={i18n(\"Track last added record to table\")}\r\n onClick={(e) => {\r\n this.enableFollowLastRecord(!this.state.gridConfiguration.followLastRecord);\r\n (e.target as HTMLButtonElement).blur();\r\n }}>\r\n {this.state.gridConfiguration.followLastRecord ? <EyeOutlined/> : <EyeInvisibleOutlined/>}\r\n </Button>}\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n private renderToolbar(originalToolbar: ReactElement): ReactElement {\r\n let toolbarToRender = originalToolbar;\r\n if (this.props.toolbar && this.props.toolbar.renderToolbar) {\r\n const searchBar = this.props.toolbar.renderToolbar(originalToolbar);\r\n if (searchBar) {\r\n toolbarToRender = searchBar;\r\n }\r\n }\r\n\r\n const statsBadge = this.renderSearchBadge();\r\n return (<div style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\r\n {toolbarToRender}\r\n {statsBadge}\r\n </div>);\r\n }\r\n\r\n private renderSearchBadge(): ReactElement | undefined {\r\n if (this.state.tableNeedToBeReloaded) {\r\n return (\r\n <Badge count={\r\n <span className=\"ant-badge-count\"\r\n title={i18n(\"Records has been added or removed, table need to be reloaded in order to see actual records\")}\r\n style={{color: \"#fa541c\", background: \"#fff2e8\", borderColor: \"#ffbb96\"}}>\r\n <ExclamationOutlined style={{color: '#fa541c'}}/>\r\n </span>\r\n } style={{cursor: \"hand\"}} offset={[10, -10]}/>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n isFilterPanelVisible(): boolean {\r\n return this.state.gridConfiguration.layoutModel ? this.state.gridConfiguration.layoutModel.layout.children[0].width > 0 : true;\r\n }\r\n\r\n renderDataGrid(): ReactElement {\r\n const {\r\n defaultGridConfiguration,\r\n onGridReady, onLoadData, onSortChanged, onColumnsChanged, onSelectionChanged, onViewportChanged,\r\n onTableConfigVisible, toolbar,\r\n paging, filter, search, onChangeConfiguration, onDataChanged, onChangeRowStyleRules,\r\n filterPanel, controlPanel,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n <DataGrid\r\n {...rest}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid ? dataGrid : undefined;\r\n }}\r\n onLoadData={this._onLoadData}\r\n onGridReady={this._onGridReady}\r\n paging={{\r\n pageSize: this.state.gridConfiguration.pageSize,\r\n defaultPageSize: this.state.gridConfiguration.defaultPageSize,\r\n onPaginationChanged: this._onPaginationChanged,\r\n }}\r\n filter={{\r\n columnSearchVisible: this.state.gridConfiguration.columnSearchVisible,\r\n getFilterModel: filter ? filter.getFilterModel : undefined,\r\n onColumnSearchVisible: (visible) => {\r\n this._changeConfiguration({columnSearchVisible: visible});\r\n if (filter?.onColumnSearchVisible) {\r\n filter.onColumnSearchVisible(visible);\r\n }\r\n },\r\n onFilterModified: filter ? filter.onFilterModified : undefined,\r\n onFilterChanged: filter ? filter.onFilterChanged : undefined,\r\n onFilterConfirmed: filter ? filter.onFilterConfirmed : undefined,\r\n }}\r\n search={{\r\n hidden: !!search ? search.hidden : undefined,\r\n inputReadonly: !!search ? search.inputReadonly : undefined,\r\n placeholder: !!search ? search.placeholder : undefined,\r\n searchString: !!search && search.searchString !== undefined ? search.searchString : this.state.searchString,\r\n stringFormatter: !!search ? search.stringFormatter : undefined,\r\n searchHistory: !!search && search.searchHistory !== undefined ? search.searchHistory : this.state.searchHistory,\r\n searchButtonClassName: !!search ? search.searchButtonClassName : undefined,\r\n searchButtonDisabled: !!search ? search.searchButtonDisabled : undefined,\r\n searchRenderer: search?.searchRenderer,\r\n onChange: this._onSearchStringChanged,\r\n onSearch: this._onSearch\r\n }}\r\n toolbar={{\r\n renderToolbar: this.renderToolbar,\r\n toolbarButtons: this.renderToolbarButtons(),\r\n hideRecordCount: toolbar?.hideRecordCount\r\n }}\r\n onSortChanged={(event) => {\r\n const sortModel = this.dataGrid?.getSortModel();\r\n if (this.state.gridConfiguration.followLastRecord && this.state.gridConfiguration.followLastRecordSortModel && !isEqual(this.state.gridConfiguration.followLastRecordSortModel, sortModel)) {\r\n this.enableFollowLastRecord(false);\r\n }\r\n const columnState = this.columnApi?.getColumnState();\r\n this._changeConfiguration({columnModel: columnState});\r\n if (onSortChanged) {\r\n onSortChanged(event);\r\n }\r\n }}\r\n onColumnsChanged={(columnModel, event) => {\r\n this._changeConfiguration({columnModel: columnModel});\r\n if (onColumnsChanged) {\r\n onColumnsChanged(columnModel, event);\r\n }\r\n }}\r\n onRowDataUpdated={this._onRowDataUpdated}\r\n tableConfigVisible={this.state.tableConfigVisible}\r\n onTableConfigVisible={(visible) => {\r\n this.setState({tableConfigVisible: visible});\r\n if (onTableConfigVisible) {\r\n onTableConfigVisible(visible);\r\n }\r\n }}\r\n onSelectionChanged={this._onSelectionChanged}\r\n rowStyleRules={this.state.gridConfiguration.rowStyleRules as RowStyleRule[]}\r\n defaultRowStyleRules={this.state.gridConfiguration.defaultRowStyleRules}\r\n onChangeRowStyleRules={this._onChangeRowStyleRules}\r\n onViewportChanged={this._onViewportChanged}\r\n showMilliseconds={this.state.gridConfiguration.showMilliseconds}\r\n defaultShowMilliseconds={this.state.gridConfiguration.defaultShowMilliseconds}\r\n onShowMilliseconds={(showMillis, callback) => {\r\n this._changeConfiguration({showMilliseconds: showMillis}, callback);\r\n }}\r\n hideYear={this.state.gridConfiguration.hideYear}\r\n defaultHideYear={this.state.gridConfiguration.defaultHideYear}\r\n onShowYear={(showYear, callback) => {\r\n this._changeConfiguration({hideYear: !showYear}, callback);\r\n }}\r\n />\r\n );\r\n }\r\n\r\n private renderDataGridWithControlPanel() {\r\n if (this.props.controlPanel && this.props.controlPanel.renderer) {\r\n return (\r\n <div key=\"table-with-control-panel\" style={{\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n height: \"100%\",\r\n width: \"100%\"\r\n }}>\r\n <div key=\"table-with-control-panel-wrapper\" style={{flex: \"1 1 auto\", overflow: \"auto\"}}>\r\n {this.renderDataGrid()}\r\n </div>\r\n {this.props.controlPanel.renderer()}\r\n </div>);\r\n }\r\n return this.renderDataGrid();\r\n }\r\n\r\n render() {\r\n const {filterPanel, detailPanel} = this.props;\r\n if (filterPanel || detailPanel) {\r\n return (\r\n <FlexLayout.Layout model={this.state.layoutModel}\r\n onModelChange={(model) => {\r\n this._changeConfiguration({layoutModel: model.toJson()});\r\n }}\r\n onAction={(action) => {\r\n if (action.type === Actions.ADJUST_SPLIT && action.data.node1 === \"#4\" && action.data.node2 === \"#6\") { // disable moving splitter for filter panel\r\n return undefined;\r\n }\r\n return action;\r\n }}\r\n factory={(node) => {\r\n const component = node.getComponent();\r\n if (component === \"filter-panel\") {\r\n return filterPanel && filterPanel.renderer && filterPanel.renderer({\r\n defaultFilter: this.state.defaultFilter,\r\n filterChanged: this.state.filterChanged\r\n });\r\n } else if (component === \"data-panel\") {\r\n return this.renderDataGridWithControlPanel();\r\n } else if (component === \"detail-panel\") {\r\n return detailPanel && detailPanel.renderer();\r\n }\r\n return <Empty/>\r\n }}\r\n />\r\n );\r\n } else {\r\n return this.renderDataGridWithControlPanel();\r\n }\r\n }\r\n}"]}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -47,7 +47,7 @@ export default class MaskedInput extends Component<MaskedInputProps> {
|
|
|
47
47
|
onKeyPress?: React.KeyboardEventHandler<HTMLInputElement> | ((e: TKeyboardEvent) => void) | undefined;
|
|
48
48
|
prefixCls?: string | undefined;
|
|
49
49
|
size?: import("antd/lib/button").ButtonSize;
|
|
50
|
-
type?: import("antd/lib/_util/type").LiteralUnion<"number" | "button" | "time" | "search" | "image" | "text" | "hidden" | "color" | "
|
|
50
|
+
type?: import("antd/lib/_util/type").LiteralUnion<"number" | "button" | "time" | "search" | "image" | "text" | "hidden" | "color" | "checkbox" | "date" | "datetime-local" | "email" | "file" | "month" | "password" | "radio" | "range" | "reset" | "submit" | "tel" | "url" | "week", string> | undefined;
|
|
51
51
|
onPressEnter?: React.KeyboardEventHandler<HTMLInputElement> | undefined;
|
|
52
52
|
addonBefore?: React.ReactNode;
|
|
53
53
|
addonAfter?: React.ReactNode;
|
|
@@ -123,7 +123,7 @@ export default class MaskedInput extends Component<MaskedInputProps> {
|
|
|
123
123
|
itemRef?: string | undefined;
|
|
124
124
|
results?: number | undefined;
|
|
125
125
|
security?: string | undefined;
|
|
126
|
-
unselectable?: "
|
|
126
|
+
unselectable?: "on" | "off" | undefined;
|
|
127
127
|
inputMode?: "none" | "search" | "text" | "email" | "tel" | "url" | "numeric" | "decimal" | undefined;
|
|
128
128
|
is?: string | undefined;
|
|
129
129
|
'aria-activedescendant'?: string | undefined;
|
|
@@ -144,7 +144,7 @@ export default class MaskedInput extends Component<MaskedInputProps> {
|
|
|
144
144
|
'aria-expanded'?: (boolean | "true" | "false") | undefined;
|
|
145
145
|
'aria-flowto'?: string | undefined;
|
|
146
146
|
'aria-grabbed'?: (boolean | "true" | "false") | undefined;
|
|
147
|
-
'aria-haspopup'?: boolean | "dialog" | "menu" | "true" | "false" | "
|
|
147
|
+
'aria-haspopup'?: boolean | "dialog" | "menu" | "true" | "false" | "grid" | "listbox" | "tree" | undefined;
|
|
148
148
|
'aria-hidden'?: (boolean | "true" | "false") | undefined;
|
|
149
149
|
'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
|
|
150
150
|
'aria-keyshortcuts'?: string | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useEffect, useReducer } from 'react';
|
|
3
|
-
import { DraggableModalContext } from 'd2coreui/components/modal/impl/
|
|
3
|
+
import { DraggableModalContext } from 'd2coreui/components/modal/impl/draggableModalContext';
|
|
4
4
|
import { getWindowSize } from 'd2coreui/components/modal/impl/getWindowSize';
|
|
5
5
|
import { draggableModalReducer, initialModalsState } from 'd2coreui/components/modal/impl/draggableModalReducer';
|
|
6
6
|
export const DraggableModalProvider = ({ children, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draggableModalProvider.js","sourceRoot":"","sources":["../../../../components/modal/draggableModalProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAC,qBAAqB,EAAC,MAAM,sDAAsD,CAAA;AAC1F,OAAO,EAAC,aAAa,EAAC,MAAM,8CAA8C,CAAA;AAC1E,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,sDAAsD,CAAA;AAE9G,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACnC,QAAQ,GAGX,EAAsB,EAAE;IACrB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;IAE/E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAE5B,OAAO;SACV;QACD,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;QACtF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC3C,QAAQ,EAAE,CAAA;QACV,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC/D,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,CACH,oBAAC,qBAAqB,CAAC,QAAQ,IAC3B,KAAK,EAAE;YACH,KAAK;YACL,QAAQ;SACX,IAEA,QAAQ,CACoB,CACpC,CAAA;AACL,CAAC,CAAA","sourcesContent":["import * as React from 'react'\r\nimport {useEffect, useReducer} from 'react'\r\nimport {DraggableModalContext} from 'd2coreui/components/modal/impl/
|
|
1
|
+
{"version":3,"file":"draggableModalProvider.js","sourceRoot":"","sources":["../../../../components/modal/draggableModalProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,SAAS,EAAE,UAAU,EAAC,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAC,qBAAqB,EAAC,MAAM,sDAAsD,CAAA;AAC1F,OAAO,EAAC,aAAa,EAAC,MAAM,8CAA8C,CAAA;AAC1E,OAAO,EAAC,qBAAqB,EAAE,kBAAkB,EAAC,MAAM,sDAAsD,CAAA;AAE9G,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACnC,QAAQ,GAGX,EAAsB,EAAE;IACrB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAA;IAE/E,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAE5B,OAAO;SACV;QACD,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;QACtF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC3C,QAAQ,EAAE,CAAA;QACV,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC/D,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,CACH,oBAAC,qBAAqB,CAAC,QAAQ,IAC3B,KAAK,EAAE;YACH,KAAK;YACL,QAAQ;SACX,IAEA,QAAQ,CACoB,CACpC,CAAA;AACL,CAAC,CAAA","sourcesContent":["import * as React from 'react'\r\nimport {useEffect, useReducer} from 'react'\r\nimport {DraggableModalContext} from 'd2coreui/components/modal/impl/draggableModalContext'\r\nimport {getWindowSize} from 'd2coreui/components/modal/impl/getWindowSize'\r\nimport {draggableModalReducer, initialModalsState} from 'd2coreui/components/modal/impl/draggableModalReducer'\r\n\r\nexport const DraggableModalProvider = ({\r\n children,\r\n}: {\r\n children: React.ReactNode\r\n}): React.ReactElement => {\r\n const [state, dispatch] = useReducer(draggableModalReducer, initialModalsState)\r\n\r\n useEffect(() => {\r\n if (typeof window !== 'object') {\r\n // @ts-ignore\r\n return;\r\n }\r\n const onResize = (): void => dispatch({ type: 'windowResize', size: getWindowSize() })\r\n window.addEventListener('resize', onResize)\r\n onResize()\r\n return () => window.removeEventListener('resize', onResize)\r\n }, [dispatch])\r\n\r\n return (\r\n <DraggableModalContext.Provider\r\n value={{\r\n state,\r\n dispatch,\r\n }}\r\n >\r\n {children}\r\n </DraggableModalContext.Provider>\r\n )\r\n}\r\n"]}
|
|
File without changes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useContext } from 'react';
|
|
3
3
|
import { useUID } from 'react-uid';
|
|
4
|
-
import { DraggableModalContext } from './
|
|
5
|
-
import { DraggableModalInner } from './
|
|
4
|
+
import { DraggableModalContext } from './draggableModalContext';
|
|
5
|
+
import { DraggableModalInner } from './draggableModalInner';
|
|
6
6
|
import { getOrCreateModalState } from './draggableModalReducer';
|
|
7
7
|
import '../../../style/modal/DraggableModal.css';
|
|
8
8
|
export const DraggableModal = (props) => {
|
|
@@ -15,4 +15,4 @@ export const DraggableModal = (props) => {
|
|
|
15
15
|
const modalState = getOrCreateModalState(state, id, props.initialWidth, props.initialHeight);
|
|
16
16
|
return React.createElement(DraggableModalInner, Object.assign({ id: id, dispatch: dispatch, modalState: modalState }, props));
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=draggableModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"draggableModal.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,UAAU,EAAC,MAAM,OAAO,CAAA;AAChC,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAA;AAChC,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAC,qBAAqB,EAAC,MAAM,yBAAyB,CAAA;AAE7D,OAAO,yCAAyC,CAAA;AAShD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAsB,EAAE;IAE7E,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAGpB,MAAM,aAAa,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACxD,IAAI,CAAC,aAAa,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;KACjC;IAED,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,aAAa,CAAC;IACxC,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAK7F,OAAO,oBAAC,mBAAmB,kBAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,IAAM,KAAK,EAAI,CAAA;AACjG,CAAC,CAAC","sourcesContent":["import * as React from 'react'\r\nimport {useContext} from 'react'\r\nimport {useUID} from 'react-uid'\r\nimport {DraggableModalContext} from './draggableModalContext'\r\nimport {DraggableModalInner} from './draggableModalInner'\r\nimport {getOrCreateModalState} from './draggableModalReducer'\r\nimport {ModalProps} from 'antd/lib/modal'\r\nimport '../../../style/modal/DraggableModal.css'\r\n\r\nexport interface DraggableModalProps extends Omit<ModalProps, \"width\"> {\r\n initialWidth?: number,\r\n initialHeight?: number\r\n // resize dialog handler\r\n onResize?(size: { width: number, height: number }): void\r\n}\r\n\r\nexport const DraggableModal = (props: DraggableModalProps): React.ReactElement => {\r\n // Get the unique ID of this modal.\r\n const id = useUID();\r\n\r\n // Get modal provider.\r\n const modalProvider = useContext(DraggableModalContext);\r\n if (!modalProvider) {\r\n throw new Error('No Provider')\r\n }\r\n\r\n const {dispatch, state} = modalProvider;\r\n const modalState = getOrCreateModalState(state, id, props.initialWidth, props.initialHeight);\r\n\r\n // We do this so that we don't re-render all modals for every state change.\r\n // DraggableModalInner uses React.memo, so it only re-renders if\r\n // if props change (e.g. modalState).\r\n return <DraggableModalInner id={id} dispatch={dispatch} modalState={modalState} {...props} />\r\n};\r\n"]}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"draggableModalContext.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModalContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAW9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAoC,IAAI,CAAC,CAAA","sourcesContent":["import * as React from 'react'\r\nimport {Action, ModalsState} from './draggableModalReducer'\r\n\r\nexport interface DraggableModalContextMethods {\r\n dispatch: (action: Action) => void\r\n}\r\n\r\nexport interface DraggableModalContextValue extends DraggableModalContextMethods {\r\n state: ModalsState\r\n}\r\n\r\nexport const DraggableModalContext = React.createContext<DraggableModalContextValue | null>(null)\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { DraggableModalContextMethods } from './
|
|
2
|
+
import { DraggableModalContextMethods } from './draggableModalContext';
|
|
3
3
|
import { ModalID, ModalState } from './draggableModalReducer';
|
|
4
|
-
import { DraggableModalProps } from "./
|
|
4
|
+
import { DraggableModalProps } from "./draggableModal";
|
|
5
5
|
interface ContextProps extends DraggableModalContextMethods {
|
|
6
6
|
id: ModalID;
|
|
7
7
|
modalState: ModalState;
|
|
@@ -12,7 +12,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import { memo, useCallback, useEffect, useMemo } from 'react';
|
|
14
14
|
import { Modal } from 'antd';
|
|
15
|
-
import { ResizeHandle } from './
|
|
15
|
+
import { ResizeHandle } from './resizeHandle';
|
|
16
16
|
import { useDrag } from './useDrag';
|
|
17
17
|
import { usePrevious } from './usePrevious';
|
|
18
18
|
import { useResize } from './useResize';
|
|
@@ -53,4 +53,4 @@ export const DraggableModalInner = memo((_a) => {
|
|
|
53
53
|
React.createElement(ResizeHandle, { onMouseDown: onMouseResize })));
|
|
54
54
|
});
|
|
55
55
|
DraggableModalInner.displayName = 'DraggableModalInner';
|
|
56
|
-
//# sourceMappingURL=
|
|
56
|
+
//# sourceMappingURL=draggableModalInner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"draggableModalInner.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModalInner.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAC,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAC,KAAK,EAAC,MAAM,MAAM,CAAA;AAC1B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAA;AAGrC,MAAM,UAAU,GAAwB,EAAC,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,EAAC,CAAA;AAY5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CACnC,CAAC,EAS2B,EAAE,EAAE;QAT/B,EACI,EAAE,EACF,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,KAAK,EACL,QAAQ,OAEe,EADpB,UAAU,cARjB,4EASC,CADgB;IAGd,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,aAAa,EAAC,EAAC,CAAC,CAAC;QACxG,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAA;IAChD,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAGnB,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,KAAK,eAAe,EAAE;YAC7B,IAAI,OAAO,EAAE;gBACT,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;aAC/B;iBAAM;gBACH,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;aAC/B;SACJ;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7C,MAAM,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAC,GAAG,UAAU,CAAC;IAEjD,MAAM,KAAK,GAAwB,OAAO,CACtC,GAAG,EAAE,CAAC,iCAAK,UAAU,KAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,IAAE,EAChD,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CACjB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEhF,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,iBAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAK,IAAI,EAAE,EAAE;QAC5E,QAAQ;QACR,EAAE;KACL,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;QACrD,OAAO,QAAQ,iBAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAK,IAAI,EAAE,CAAC;IACnD,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IAEpB,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAErE,MAAM,YAAY,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CACF,6BACI,SAAS,EAAC,kCAAkC,EAC5C,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,IAEf,KAAK,CACJ,CACT,EACD,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAChC,CAAC;IAEF,OAAO,CACH,oBAAC,KAAK,kBACF,aAAa,EAAC,4BAA4B,EAC1C,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,IAAI,EACpB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,OAAO,IACZ,UAAU;QAEb,QAAQ;QACT,oBAAC,YAAY,IAAC,WAAW,EAAE,aAAa,GAAG,CACvC,CACX,CAAA;AACL,CAAC,CACJ,CAAC;AAEF,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC","sourcesContent":["import * as React from 'react'\r\nimport {memo, useCallback, useEffect, useMemo} from 'react'\r\nimport {Modal} from 'antd'\r\nimport {ResizeHandle} from './resizeHandle'\r\nimport {useDrag} from './useDrag'\r\nimport {DraggableModalContextMethods} from './draggableModalContext'\r\nimport {usePrevious} from './usePrevious'\r\nimport {ModalID, ModalState} from './draggableModalReducer'\r\nimport {useResize} from './useResize'\r\nimport {DraggableModalProps} from \"./draggableModal\";\r\n\r\nconst modalStyle: React.CSSProperties = {margin: 0, paddingBottom: 0, pointerEvents: 'auto'}\r\n\r\ninterface ContextProps extends DraggableModalContextMethods {\r\n id: ModalID\r\n modalState: ModalState\r\n}\r\n\r\n//export type DraggableModalInnerProps = ModalProps & { children?: React.ReactNode } & ContextProps\r\nexport interface DraggableModalInnerProps extends DraggableModalProps, ContextProps {\r\n children?: React.ReactNode\r\n}\r\n\r\nexport const DraggableModalInner = memo(\r\n ({\r\n id,\r\n modalState,\r\n dispatch,\r\n visible,\r\n children,\r\n title,\r\n onResize,\r\n ...otherProps\r\n }: DraggableModalInnerProps) => {\r\n // Call on mount and unmount.\r\n useEffect(() => {\r\n dispatch({type: 'mount', id, size: {width: otherProps.initialWidth, height: otherProps.initialHeight}});\r\n return () => dispatch({type: 'unmount', id})\r\n }, [dispatch, id]);\r\n\r\n // Bring this to the front if it's been opened with props.\r\n const visiblePrevious = usePrevious(visible);\r\n useEffect(() => {\r\n if (visible !== visiblePrevious) {\r\n if (visible) {\r\n dispatch({type: 'show', id})\r\n } else {\r\n dispatch({type: 'hide', id})\r\n }\r\n }\r\n }, [visible, visiblePrevious, id, dispatch]);\r\n\r\n const {zIndex, x, y, width, height} = modalState;\r\n\r\n const style: React.CSSProperties = useMemo(\r\n () => ({...modalStyle, top: y, left: x, height}),\r\n [y, x, height],\r\n );\r\n\r\n const onFocus = useCallback(() => dispatch({type: 'focus', id}), [id, dispatch])\r\n\r\n const onDragWithID = useCallback(args => dispatch({type: 'drag', id, ...args}), [\r\n dispatch,\r\n id,\r\n ]);\r\n\r\n const onResizeWithID = useCallback((args) => {\r\n onResize?.({width: args.width, height: args.height});\r\n return dispatch({type: 'resize', id, ...args});\r\n }, [dispatch, id,]);\r\n\r\n const onMouseDrag = useDrag(x, y, onDragWithID);\r\n const onMouseResize = useResize(x, y, width, height, onResizeWithID);\r\n\r\n const titleElement = useMemo(\r\n () => (\r\n <div\r\n className=\"ant-design-draggable-modal-title\"\r\n onMouseDown={onMouseDrag}\r\n onClick={onFocus}\r\n >\r\n {title}\r\n </div>\r\n ),\r\n [onMouseDrag, onFocus, title],\r\n );\r\n\r\n return (\r\n <Modal\r\n wrapClassName=\"ant-design-draggable-modal\"\r\n style={style}\r\n destroyOnClose={true}\r\n width={width}\r\n zIndex={zIndex}\r\n title={titleElement}\r\n visible={visible}\r\n {...otherProps}\r\n >\r\n {children}\r\n <ResizeHandle onMouseDown={onMouseResize}/>\r\n </Modal>\r\n )\r\n },\r\n);\r\n\r\nDraggableModalInner.displayName = 'DraggableModalInner';\r\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './
|
|
1
|
+
export * from './draggableModal';
|
|
2
|
+
export * from './draggableModalContext';
|
|
3
3
|
export * from '../draggableModalProvider';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../components/modal/impl/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA","sourcesContent":["export * from './
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../components/modal/impl/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA","sourcesContent":["export * from './draggableModal'\r\nexport * from './draggableModalContext'\r\nexport * from '../draggableModalProvider'\r\n"]}
|