d2coreui 23.0.37 → 23.0.38
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/dateRangeInput.js +3 -3
- package/components/date/dateRangeInput.js.map +1 -1
- package/components/date/dateRangeInputConfirm.js +3 -3
- package/components/date/dateRangeInputConfirm.js.map +1 -1
- package/components/date/dateTimeInput.d.ts +2 -1
- package/components/date/dateTimeInput.js +5 -5
- package/components/date/dateTimeInput.js.map +1 -1
- package/components/grid/cell/customEnumCellEditor.js +7 -7
- package/components/grid/cell/customEnumCellEditor.js.map +1 -1
- package/components/grid/cell/dateCellEditor.js +3 -4
- package/components/grid/cell/dateCellEditor.js.map +1 -1
- package/components/grid/cell/simpleStatusTextCellEditor.js +7 -7
- package/components/grid/cell/simpleStatusTextCellEditor.js.map +1 -1
- package/components/grid/cell/statusTextCellEditor.js +6 -6
- package/components/grid/cell/statusTextCellEditor.js.map +1 -1
- package/components/grid/dataGrid.js +3 -4
- package/components/grid/dataGrid.js.map +1 -1
- package/components/grid/extendedDataGrid.js +1 -1
- package/components/grid/extendedDataGrid.js.map +1 -1
- package/components/modal/impl/draggableModalInner.js +2 -2
- package/components/modal/impl/draggableModalInner.js.map +1 -1
- package/components/modal/impl/draggableModalReducer.d.ts +0 -2
- package/components/modal/impl/draggableModalReducer.js +5 -8
- package/components/modal/impl/draggableModalReducer.js.map +1 -1
- package/package.json +1 -1
|
@@ -634,7 +634,7 @@ class ExtendedDataGrid extends React.Component {
|
|
|
634
634
|
const { filterPanel, detailPanel } = this.props;
|
|
635
635
|
const { sizes } = this.state;
|
|
636
636
|
const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;
|
|
637
|
-
return (React.createElement("div", { ref: this.containerRef, style: { width: "100%", height: "100%", contain: "size layout" } },
|
|
637
|
+
return (React.createElement("div", { ref: this.containerRef, style: { width: "100%", height: "100%", contain: "size layout", minWidth: "1px" } },
|
|
638
638
|
React.createElement(Splitter, { lazy: true, onCollapse: (_, sizes) => this._onResize(sizes), onResize: this._onResize, onResizeEnd: this._onResize },
|
|
639
639
|
React.createElement(Splitter.Panel, { resizable: (filterPanelWidth !== null && filterPanelWidth !== void 0 ? filterPanelWidth : 0) > 0, collapsible: { end: (filterPanelWidth !== null && filterPanelWidth !== void 0 ? filterPanelWidth : 0) > 0 }, size: filterPanelWidth }, (filterPanel === null || filterPanel === void 0 ? void 0 : filterPanel.renderer) && (filterPanel === null || filterPanel === void 0 ? void 0 : filterPanel.renderer({
|
|
640
640
|
defaultFilter: this.state.defaultFilter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendedDataGrid.js","sourceRoot":"","sources":["../../../../components/grid/extendedDataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {createRef, ReactElement} from \"react\";\r\nimport {ExclamationOutlined, EyeInvisibleOutlined, EyeOutlined, FilterOutlined} from \"@ant-design/icons\";\r\nimport {Badge, Button, Splitter} 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 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 {ColumnUtils} from \"./columnUtils\";\r\nimport {DataChangeStateEnum} from \"d2core/types/dataChangeStateEnum\";\r\n\r\nconst CONFIGURATION_VERSION = 2;\r\n\r\nexport interface GridConfiguration {\r\n // version of configuration\r\n version?: number\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 // panels width\r\n filterPanelWidth?: number\r\n detailPanelWidth?: number\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 // toolbar icon\r\n icon?: React.ReactNode\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?(): React.ReactElement | 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 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 sizes: (number|undefined)[]\r\n width: number\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 {\r\n id: number | string\r\n}> 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 // 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 private containerRef = createRef<HTMLDivElement>();\r\n private resizeObserver: ResizeObserver | null = null;\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 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 gridConfiguration.filterPanelWidth = gridConfigurationOk && props.defaultGridConfiguration.filterPanelWidth\r\n ? props.defaultGridConfiguration.filterPanelWidth\r\n : (props.filterPanel ? (props.filterPanel.defaultWidth ? props.filterPanel.defaultWidth : 220) : 0);\r\n gridConfiguration.detailPanelWidth = gridConfigurationOk && props.defaultGridConfiguration.detailPanelWidth ? props.defaultGridConfiguration.detailPanelWidth : 0;\r\n\r\n this.state = {\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 // panel layout sizes\r\n sizes: [gridConfiguration.filterPanelWidth, undefined, gridConfiguration.detailPanelWidth],\r\n 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 this._onResize = this._onResize.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n if (entry.contentRect) {\r\n const oldWidth = this.state.width;\r\n const width = entry.contentRect.width;\r\n const diff = width - oldWidth;\r\n const [a, b, c] = this.state.sizes;\r\n this.setState({width: width, sizes: [a, b !== undefined ? (b + diff) : b, c]});\r\n }\r\n }\r\n });\r\n\r\n if (this.containerRef.current) {\r\n this.resizeObserver.observe(this.containerRef.current);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\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 focus() {\r\n this.dataGrid?.focus();\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._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) {\r\n if (this.state.gridConfiguration.columnModel) {\r\n ColumnUtils.mergeColumnsState(this.state.gridConfiguration.columnModel, this.props.columnDefs as ColDef[]);\r\n this.gridApi.applyColumnState({state: this.state.gridConfiguration.columnModel, applyOrder: true});\r\n } else {\r\n this.gridApi.resetColumnState();\r\n const columnState = this.gridApi.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 /** Set new data to the grid */\r\n setRowData(dataArray: T[]): void {\r\n // reset transaction data received till this new data list is loaded,\r\n // we can do it here, because communication is serialized in one thread\r\n // and all push changes to new list data will come only after this method is finished\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n this.dataGrid?.setRowData(dataArray);\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.CONFIGURED:\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 const {gridConfiguration, sizes} = this.state;\r\n const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;\r\n\r\n if (show) {\r\n if (filterPanelWidth === 0) {\r\n const width = this.props.filterPanel?.defaultWidth ?? 250;\r\n\r\n if (middleWidth !== undefined) {\r\n this.setState({sizes: [width, middleWidth - width, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: width}});\r\n } else {\r\n this.setState({sizes: [width, undefined, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: width}});\r\n }\r\n }\r\n } else {\r\n if (middleWidth !== undefined && filterPanelWidth !== undefined) {\r\n this.setState({sizes: [0, middleWidth + filterPanelWidth, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: 0}});\r\n } else {\r\n this.setState({sizes: [0, undefined, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: 0}});\r\n }\r\n }\r\n }\r\n\r\n showDetailPanel(show: boolean): void {\r\n const {gridConfiguration, sizes} = this.state;\r\n const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;\r\n\r\n if (show) {\r\n if (detailPanelWidth === 0) {\r\n const width = this.props.detailPanel && this.props.detailPanel.defaultWidth ? this.props.detailPanel.defaultWidth : 250;\r\n\r\n if (middleWidth !== undefined) {\r\n this.setState({sizes: [filterPanelWidth, middleWidth - width, width], gridConfiguration: {...gridConfiguration, detailPanelWidth: width}});\r\n } else {\r\n this.setState({sizes: [filterPanelWidth, undefined, width], gridConfiguration: {...gridConfiguration, detailPanelWidth: width}});\r\n }\r\n }\r\n } else {\r\n if (middleWidth !== undefined && detailPanelWidth !== undefined) {\r\n this.setState({sizes: [filterPanelWidth, middleWidth + detailPanelWidth, 0], gridConfiguration: {...gridConfiguration, detailPanelWidth: 0}});\r\n } else {\r\n this.setState({sizes: [filterPanelWidth, undefined, 0], gridConfiguration: {...gridConfiguration, detailPanelWidth: 0}});\r\n }\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?.getColumnFilterModel(colId) as TextFilterModel;\r\n return nameFilterModel && nameFilterModel.filter ? nameFilterModel.filter : \"\";\r\n }\r\n\r\n async removeUiColumnFilterValue(colId: string) {\r\n const filterInstance = await this.gridApi?.getColumnFilterInstance(colId);\r\n const textFilterInstance = filterInstance as TextFilter;\r\n const nameFilterModel: TextFilterModel = textFilterInstance.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 textFilterInstance.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 async applyUiColumnFilterValue(colId: string) {\r\n const filterInstance = await this.gridApi?.getColumnFilterInstance(colId);\r\n ((filterInstance) 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 {this.props.filterPanel?.icon ?? <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.filterPanelWidth ?? 0) > 0;\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, detailPanel,\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 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 searchButtonHidden: !!search ? search.searchButtonHidden : undefined,\r\n searchButtonIcon: !!search ? search.searchButtonIcon : undefined,\r\n searchButtonDanger: !!search ? search.searchButtonDanger : 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 extraContent: toolbar?.extraContent,\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.gridApi?.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: \"hidden\"}}>\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 const {sizes} = this.state;\r\n const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;\r\n\r\n return (\r\n <div ref={this.containerRef} style={{width: \"100%\", height: \"100%\", contain: \"size layout\"}}>\r\n <Splitter lazy\r\n onCollapse={(_, sizes) => this._onResize(sizes)}\r\n onResize={this._onResize}\r\n onResizeEnd={this._onResize}>\r\n <Splitter.Panel resizable={(filterPanelWidth ?? 0) > 0}\r\n collapsible={{end: (filterPanelWidth ?? 0) > 0}}\r\n size={filterPanelWidth}>\r\n {filterPanel?.renderer && filterPanel?.renderer({\r\n defaultFilter: this.state.defaultFilter,\r\n filterChanged: this.state.filterChanged\r\n })}\r\n </Splitter.Panel>\r\n <Splitter.Panel size={middleWidth}>\r\n {this.renderDataGridWithControlPanel()}\r\n </Splitter.Panel>\r\n <Splitter.Panel resizable={(detailPanelWidth ?? 0) > 0}\r\n collapsible={{start: (detailPanelWidth ?? 0) > 0}}\r\n size={detailPanelWidth}>\r\n {detailPanel && detailPanel.renderer()}\r\n </Splitter.Panel>\r\n </Splitter>\r\n </div>\r\n );\r\n }\r\n\r\n private _onResize(sizes: number[]) {\r\n const {gridConfiguration} = this.state;\r\n this.setState({sizes: sizes, gridConfiguration: {...gridConfiguration, filterPanelWidth: sizes[0], detailPanelWidth: sizes[2]}});\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, {createRef, ReactElement} from \"react\";\r\nimport {ExclamationOutlined, EyeInvisibleOutlined, EyeOutlined, FilterOutlined} from \"@ant-design/icons\";\r\nimport {Badge, Button, Splitter} 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 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 {ColumnUtils} from \"./columnUtils\";\r\nimport {DataChangeStateEnum} from \"d2core/types/dataChangeStateEnum\";\r\n\r\nconst CONFIGURATION_VERSION = 2;\r\n\r\nexport interface GridConfiguration {\r\n // version of configuration\r\n version?: number\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 // panels width\r\n filterPanelWidth?: number\r\n detailPanelWidth?: number\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 // toolbar icon\r\n icon?: React.ReactNode\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?(): React.ReactElement | 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 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 sizes: (number|undefined)[]\r\n width: number\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 {\r\n id: number | string\r\n}> 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 // 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 private containerRef = createRef<HTMLDivElement>();\r\n private resizeObserver: ResizeObserver | null = null;\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 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 gridConfiguration.filterPanelWidth = gridConfigurationOk && props.defaultGridConfiguration.filterPanelWidth\r\n ? props.defaultGridConfiguration.filterPanelWidth\r\n : (props.filterPanel ? (props.filterPanel.defaultWidth ? props.filterPanel.defaultWidth : 220) : 0);\r\n gridConfiguration.detailPanelWidth = gridConfigurationOk && props.defaultGridConfiguration.detailPanelWidth ? props.defaultGridConfiguration.detailPanelWidth : 0;\r\n\r\n this.state = {\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 // panel layout sizes\r\n sizes: [gridConfiguration.filterPanelWidth, undefined, gridConfiguration.detailPanelWidth],\r\n 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 this._onResize = this._onResize.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n if (entry.contentRect) {\r\n const oldWidth = this.state.width;\r\n const width = entry.contentRect.width;\r\n const diff = width - oldWidth;\r\n const [a, b, c] = this.state.sizes;\r\n this.setState({width: width, sizes: [a, b !== undefined ? (b + diff) : b, c]});\r\n }\r\n }\r\n });\r\n\r\n if (this.containerRef.current) {\r\n this.resizeObserver.observe(this.containerRef.current);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\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 focus() {\r\n this.dataGrid?.focus();\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._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) {\r\n if (this.state.gridConfiguration.columnModel) {\r\n ColumnUtils.mergeColumnsState(this.state.gridConfiguration.columnModel, this.props.columnDefs as ColDef[]);\r\n this.gridApi.applyColumnState({state: this.state.gridConfiguration.columnModel, applyOrder: true});\r\n } else {\r\n this.gridApi.resetColumnState();\r\n const columnState = this.gridApi.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 /** Set new data to the grid */\r\n setRowData(dataArray: T[]): void {\r\n // reset transaction data received till this new data list is loaded,\r\n // we can do it here, because communication is serialized in one thread\r\n // and all push changes to new list data will come only after this method is finished\r\n this.dataTransaction = {add: [], remove: [], update: []};\r\n this.dataGrid?.setRowData(dataArray);\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.CONFIGURED:\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 const {gridConfiguration, sizes} = this.state;\r\n const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;\r\n\r\n if (show) {\r\n if (filterPanelWidth === 0) {\r\n const width = this.props.filterPanel?.defaultWidth ?? 250;\r\n\r\n if (middleWidth !== undefined) {\r\n this.setState({sizes: [width, middleWidth - width, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: width}});\r\n } else {\r\n this.setState({sizes: [width, undefined, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: width}});\r\n }\r\n }\r\n } else {\r\n if (middleWidth !== undefined && filterPanelWidth !== undefined) {\r\n this.setState({sizes: [0, middleWidth + filterPanelWidth, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: 0}});\r\n } else {\r\n this.setState({sizes: [0, undefined, detailPanelWidth], gridConfiguration: {...gridConfiguration, filterPanelWidth: 0}});\r\n }\r\n }\r\n }\r\n\r\n showDetailPanel(show: boolean): void {\r\n const {gridConfiguration, sizes} = this.state;\r\n const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;\r\n\r\n if (show) {\r\n if (detailPanelWidth === 0) {\r\n const width = this.props.detailPanel && this.props.detailPanel.defaultWidth ? this.props.detailPanel.defaultWidth : 250;\r\n\r\n if (middleWidth !== undefined) {\r\n this.setState({sizes: [filterPanelWidth, middleWidth - width, width], gridConfiguration: {...gridConfiguration, detailPanelWidth: width}});\r\n } else {\r\n this.setState({sizes: [filterPanelWidth, undefined, width], gridConfiguration: {...gridConfiguration, detailPanelWidth: width}});\r\n }\r\n }\r\n } else {\r\n if (middleWidth !== undefined && detailPanelWidth !== undefined) {\r\n this.setState({sizes: [filterPanelWidth, middleWidth + detailPanelWidth, 0], gridConfiguration: {...gridConfiguration, detailPanelWidth: 0}});\r\n } else {\r\n this.setState({sizes: [filterPanelWidth, undefined, 0], gridConfiguration: {...gridConfiguration, detailPanelWidth: 0}});\r\n }\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?.getColumnFilterModel(colId) as TextFilterModel;\r\n return nameFilterModel && nameFilterModel.filter ? nameFilterModel.filter : \"\";\r\n }\r\n\r\n async removeUiColumnFilterValue(colId: string) {\r\n const filterInstance = await this.gridApi?.getColumnFilterInstance(colId);\r\n const textFilterInstance = filterInstance as TextFilter;\r\n const nameFilterModel: TextFilterModel = textFilterInstance.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 textFilterInstance.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 async applyUiColumnFilterValue(colId: string) {\r\n const filterInstance = await this.gridApi?.getColumnFilterInstance(colId);\r\n ((filterInstance) 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 {this.props.filterPanel?.icon ?? <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.filterPanelWidth ?? 0) > 0;\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, detailPanel,\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 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 searchButtonHidden: !!search ? search.searchButtonHidden : undefined,\r\n searchButtonIcon: !!search ? search.searchButtonIcon : undefined,\r\n searchButtonDanger: !!search ? search.searchButtonDanger : 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 extraContent: toolbar?.extraContent,\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.gridApi?.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: \"hidden\"}}>\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 const {sizes} = this.state;\r\n const [filterPanelWidth, middleWidth, detailPanelWidth] = sizes;\r\n\r\n return (\r\n <div ref={this.containerRef} style={{width: \"100%\", height: \"100%\", contain: \"size layout\", minWidth: \"1px\"}}>\r\n <Splitter lazy\r\n onCollapse={(_, sizes) => this._onResize(sizes)}\r\n onResize={this._onResize}\r\n onResizeEnd={this._onResize}>\r\n <Splitter.Panel resizable={(filterPanelWidth ?? 0) > 0}\r\n collapsible={{end: (filterPanelWidth ?? 0) > 0}}\r\n size={filterPanelWidth}>\r\n {filterPanel?.renderer && filterPanel?.renderer({\r\n defaultFilter: this.state.defaultFilter,\r\n filterChanged: this.state.filterChanged\r\n })}\r\n </Splitter.Panel>\r\n <Splitter.Panel size={middleWidth}>\r\n {this.renderDataGridWithControlPanel()}\r\n </Splitter.Panel>\r\n <Splitter.Panel resizable={(detailPanelWidth ?? 0) > 0}\r\n collapsible={{start: (detailPanelWidth ?? 0) > 0}}\r\n size={detailPanelWidth}>\r\n {detailPanel && detailPanel.renderer()}\r\n </Splitter.Panel>\r\n </Splitter>\r\n </div>\r\n );\r\n }\r\n\r\n private _onResize(sizes: number[]) {\r\n const {gridConfiguration} = this.state;\r\n this.setState({sizes: sizes, gridConfiguration: {...gridConfiguration, filterPanelWidth: sizes[0], detailPanelWidth: sizes[2]}});\r\n }\r\n}"]}
|
|
@@ -34,7 +34,7 @@ export const DraggableModalInner = memo((_a) => {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
}, [open, visiblePrevious, id, dispatch]);
|
|
37
|
-
const {
|
|
37
|
+
const { x, y, width, height } = modalState;
|
|
38
38
|
const style = useMemo(() => (Object.assign(Object.assign({}, modalStyle), { top: y, left: x, height })), [y, x, height]);
|
|
39
39
|
const onFocus = useCallback(() => dispatch({ type: 'focus', id }), [id, dispatch]);
|
|
40
40
|
const onDragWithID = useCallback((args) => dispatch(Object.assign({ type: 'drag', id }, args)), [
|
|
@@ -48,7 +48,7 @@ export const DraggableModalInner = memo((_a) => {
|
|
|
48
48
|
const onMouseDrag = useDrag(x, y, onDragWithID);
|
|
49
49
|
const onMouseResize = useResize(x, y, width, height, onResizeWithID);
|
|
50
50
|
const titleElement = useMemo(() => (React.createElement("div", { className: "ant-design-draggable-modal-title", onMouseDown: onMouseDrag, onClick: onFocus }, title)), [onMouseDrag, onFocus, title]);
|
|
51
|
-
return (React.createElement(Modal, Object.assign({ wrapClassName: "ant-design-draggable-modal", style: style,
|
|
51
|
+
return (React.createElement(Modal, Object.assign({ wrapClassName: "ant-design-draggable-modal", style: style, destroyOnHidden: true, width: width, title: titleElement, open: open }, otherProps),
|
|
52
52
|
children,
|
|
53
53
|
React.createElement(ResizeHandle, { onMouseDown: onMouseResize })));
|
|
54
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draggableModalInner.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModalInner.tsx"],"names":[],"mappings":";;;;;;;;;;;AAEA,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;AAc5F,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CACnC,CAAC,EAW2B,EAAE,EAAE;QAX/B,EACI,EAAE,EACF,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,OAEe,EADpB,UAAU,cAVjB,0GAWC,CADgB;IAGd,SAAS,CAAC,GAAG,EAAE;QACX,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAC,YAAY,EAAE,aAAa,EAAC,EAAC,CAAC,CAAC;QAC1E,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAA;IAChD,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAGhD,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACP,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;YAChC,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC,CAAA;YAChC,CAAC;QACL,CAAC;IACL,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE1C,MAAM,EAAC,
|
|
1
|
+
{"version":3,"file":"draggableModalInner.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModalInner.tsx"],"names":[],"mappings":"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","sourcesContent":["// https://github.com/CUBETIQ/antd-modal/\r\n\r\nimport * 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 initialWidth?: number\r\n initialHeight?: number\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 open,\r\n children,\r\n title,\r\n initialWidth,\r\n initialHeight,\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, intialState: {initialWidth, initialHeight}});\r\n return () => dispatch({type: 'unmount', id})\r\n }, [dispatch, id, initialWidth, initialHeight]);\r\n\r\n // Bring this to the front if it's been opened with props.\r\n const visiblePrevious = usePrevious(open);\r\n useEffect(() => {\r\n if (open !== visiblePrevious) {\r\n if (open) {\r\n dispatch({type: 'show', id})\r\n } else {\r\n dispatch({type: 'hide', id})\r\n }\r\n }\r\n }, [open, visiblePrevious, id, dispatch]);\r\n\r\n const {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: any) => dispatch({type: 'drag', id, ...args}), [\r\n dispatch,\r\n id,\r\n ]);\r\n\r\n const onResizeWithID = useCallback((args: any) => {\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 destroyOnHidden\r\n width={width}\r\n title={titleElement}\r\n open={open}\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\nif (process.env.NODE_ENV !== 'production') {\r\n DraggableModalInner.displayName = 'DraggableModalInner'\r\n}\r\n"]}
|
|
@@ -2,7 +2,6 @@ import { getWindowSize } from './getWindowSize';
|
|
|
2
2
|
import { clamp } from './clamp';
|
|
3
3
|
const mapObject = (o, f) => Object.assign({}, ...Object.keys(o).map(k => ({ [k]: f(o[k]) })));
|
|
4
4
|
export const initialModalsState = {
|
|
5
|
-
maxZIndex: 0,
|
|
6
5
|
windowSize: getWindowSize(),
|
|
7
6
|
modals: {},
|
|
8
7
|
};
|
|
@@ -11,14 +10,12 @@ export const initialModalState = {
|
|
|
11
10
|
y: 0,
|
|
12
11
|
width: 400,
|
|
13
12
|
height: 400,
|
|
14
|
-
zIndex: 0,
|
|
15
13
|
visible: false,
|
|
16
14
|
};
|
|
17
15
|
const getInitialModalState = ({ initialWidth = initialModalState.width, initialHeight = initialModalState.height, }) => {
|
|
18
16
|
return Object.assign(Object.assign({}, initialModalState), { width: initialWidth, height: initialHeight });
|
|
19
17
|
};
|
|
20
18
|
export const getModalState = ({ state, id, initialWidth, initialHeight, }) => state.modals[id] || getInitialModalState({ initialWidth, initialHeight });
|
|
21
|
-
const getNextZIndex = (state, id) => getModalState({ state, id }).zIndex === state.maxZIndex ? state.maxZIndex : state.maxZIndex + 1;
|
|
22
19
|
const clampDrag = (windowWidth, windowHeight, x, y, width, height) => {
|
|
23
20
|
const maxX = windowWidth - width;
|
|
24
21
|
const maxY = windowHeight - height;
|
|
@@ -37,27 +34,27 @@ export const draggableModalReducer = (state, action) => {
|
|
|
37
34
|
switch (action.type) {
|
|
38
35
|
case 'resize':
|
|
39
36
|
const size = clampResize(state.windowSize.width, state.windowSize.height, action.x, action.y, action.width, action.height);
|
|
40
|
-
return Object.assign(Object.assign({}, state), {
|
|
37
|
+
return Object.assign(Object.assign({}, state), { modals: Object.assign(Object.assign({}, state.modals), { [action.id]: Object.assign(Object.assign({}, state.modals[action.id]), size) }) });
|
|
41
38
|
case 'drag':
|
|
42
|
-
return Object.assign(Object.assign({}, state), {
|
|
39
|
+
return Object.assign(Object.assign({}, state), { modals: Object.assign(Object.assign({}, state.modals), { [action.id]: Object.assign(Object.assign({}, state.modals[action.id]), clampDrag(state.windowSize.width, state.windowSize.height, action.x, action.y, state.modals[action.id].width, state.modals[action.id].height)) }) });
|
|
43
40
|
case 'show': {
|
|
44
41
|
const modalState = state.modals[action.id];
|
|
45
42
|
const centerX = state.windowSize.width / 2 - modalState.width / 2;
|
|
46
43
|
const centerY = state.windowSize.height / 2 - modalState.height / 2;
|
|
47
44
|
const position = clampDrag(state.windowSize.width, state.windowSize.height, centerX, centerY, modalState.width, modalState.height);
|
|
48
45
|
const size = clampResize(state.windowSize.width, state.windowSize.height, position.x, position.y, modalState.width, modalState.height);
|
|
49
|
-
return Object.assign(Object.assign({}, state), {
|
|
46
|
+
return Object.assign(Object.assign({}, state), { modals: Object.assign(Object.assign({}, state.modals), { [action.id]: Object.assign(Object.assign(Object.assign(Object.assign({}, modalState), position), size), { visible: true }) }) });
|
|
50
47
|
}
|
|
51
48
|
case 'focus':
|
|
52
49
|
const modalState = state.modals[action.id];
|
|
53
|
-
return Object.assign(Object.assign({}, state), {
|
|
50
|
+
return Object.assign(Object.assign({}, state), { modals: Object.assign(Object.assign({}, state.modals), { [action.id]: Object.assign({}, modalState) }) });
|
|
54
51
|
case 'hide': {
|
|
55
52
|
const modalState = state.modals[action.id];
|
|
56
53
|
return Object.assign(Object.assign({}, state), { modals: Object.assign(Object.assign({}, state.modals), { [action.id]: Object.assign(Object.assign({}, modalState), { visible: false }) }) });
|
|
57
54
|
}
|
|
58
55
|
case 'mount':
|
|
59
56
|
const initialState = getInitialModalState(action.intialState);
|
|
60
|
-
return Object.assign(Object.assign({}, state), {
|
|
57
|
+
return Object.assign(Object.assign({}, state), { modals: Object.assign(Object.assign({}, state.modals), { [action.id]: Object.assign(Object.assign({}, initialState), { x: state.windowSize.width / 2 - initialState.width / 2, y: state.windowSize.height / 2 - initialState.height / 2 }) }) });
|
|
61
58
|
case 'unmount':
|
|
62
59
|
const modalsClone = Object.assign({}, state.modals);
|
|
63
60
|
delete modalsClone[action.id];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draggableModalReducer.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModalReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// https://github.com/CUBETIQ/antd-modal/\r\n\r\nimport {getWindowSize} from './getWindowSize'\r\nimport {clamp} from './clamp'\r\n\r\nconst mapObject = <T>(o: { [key: string]: T }, f: (value: T) => T): { [key: string]: T } =>\r\n Object.assign({}, ...Object.keys(o).map(k => ({[k]: f(o[k])})))\r\n\r\n// ID for a specific modal.\r\nexport type ModalID = string\r\n\r\n// State for a specific modal.\r\nexport interface ModalState {\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n zIndex: number\r\n visible: boolean\r\n}\r\n\r\n// State of all modals.\r\nexport interface ModalsState {\r\n maxZIndex: number\r\n windowSize: {\r\n width: number\r\n height: number\r\n }\r\n modals: {\r\n [key: string]: ModalState\r\n }\r\n}\r\n\r\nexport const initialModalsState: ModalsState = {\r\n maxZIndex: 0,\r\n windowSize: getWindowSize(),\r\n modals: {},\r\n};\r\n\r\nexport const initialModalState: ModalState = {\r\n x: 0,\r\n y: 0,\r\n width: 400,\r\n height: 400,\r\n zIndex: 0,\r\n visible: false,\r\n};\r\n\r\nconst getInitialModalState = ({\r\n initialWidth = initialModalState.width,\r\n initialHeight = initialModalState.height,\r\n }: {\r\n initialWidth?: number\r\n initialHeight?: number\r\n}) => {\r\n return {\r\n ...initialModalState,\r\n width: initialWidth,\r\n height: initialHeight,\r\n }\r\n}\r\n\r\nexport type Action =\r\n | { type: 'show'; id: ModalID }\r\n | { type: 'hide'; id: ModalID }\r\n | { type: 'focus'; id: ModalID }\r\n | { type: 'unmount'; id: ModalID }\r\n | { type: 'mount'; id: ModalID, intialState: { initialWidth?: number; initialHeight?: number } }\r\n | { type: 'windowResize'; size: { width: number; height: number } }\r\n | { type: 'drag'; id: ModalID; x: number; y: number }\r\n | {\r\n type: 'resize'\r\n id: ModalID\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n}\r\n\r\nexport const getModalState = ({\r\n state,\r\n id,\r\n initialWidth,\r\n initialHeight,\r\n }: {\r\n state: ModalsState\r\n id: ModalID\r\n initialWidth?: number\r\n initialHeight?: number\r\n}): ModalState => state.modals[id] || getInitialModalState({ initialWidth, initialHeight })\r\n\r\nconst getNextZIndex = (state: ModalsState, id: string): number =>\r\n getModalState({state, id}).zIndex === state.maxZIndex ? state.maxZIndex : state.maxZIndex + 1;\r\n\r\nconst clampDrag = (\r\n windowWidth: number,\r\n windowHeight: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n): { x: number; y: number } => {\r\n const maxX = windowWidth - width;\r\n const maxY = windowHeight - height;\r\n const clampedX = clamp(0, maxX, x);\r\n const clampedY = clamp(0, maxY, y);\r\n return {x: clampedX, y: clampedY}\r\n}\r\n\r\nconst clampResize = (\r\n windowWidth: number,\r\n windowHeight: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n): { width: number; height: number } => {\r\n const maxWidth = windowWidth - x;\r\n const maxHeight = windowHeight - y;\r\n const clampedWidth = clamp(200, maxWidth, width);\r\n const clampedHeight = clamp(200, maxHeight, height);\r\n return {width: clampedWidth, height: clampedHeight}\r\n}\r\n\r\nexport const draggableModalReducer = (state: ModalsState, action: Action): ModalsState => {\r\n switch (action.type) {\r\n case 'resize':\r\n const size = clampResize(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n action.x,\r\n action.y,\r\n action.width,\r\n action.height,\r\n )\r\n return {\r\n ...state,\r\n maxZIndex: getNextZIndex(state, action.id),\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...state.modals[action.id],\r\n ...size,\r\n zIndex: getNextZIndex(state, action.id),\r\n },\r\n },\r\n }\r\n case 'drag':\r\n return {\r\n ...state,\r\n maxZIndex: getNextZIndex(state, action.id),\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...state.modals[action.id],\r\n ...clampDrag(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n action.x,\r\n action.y,\r\n state.modals[action.id].width,\r\n state.modals[action.id].height,\r\n ),\r\n zIndex: getNextZIndex(state, action.id),\r\n },\r\n },\r\n }\r\n case 'show': {\r\n const modalState = state.modals[action.id]\r\n const centerX = state.windowSize.width / 2 - modalState.width / 2\r\n const centerY = state.windowSize.height / 2 - modalState.height / 2\r\n const position = clampDrag(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n centerX,\r\n centerY,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n const size = clampResize(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n position.x,\r\n position.y,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n return {\r\n ...state,\r\n maxZIndex: state.maxZIndex + 1,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...modalState,\r\n ...position,\r\n ...size,\r\n zIndex: state.maxZIndex + 1,\r\n visible: true,\r\n },\r\n },\r\n }\r\n }\r\n case 'focus':\r\n const modalState = state.modals[action.id]\r\n return {\r\n ...state,\r\n maxZIndex: state.maxZIndex + 1,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...modalState,\r\n zIndex: state.maxZIndex + 1,\r\n },\r\n },\r\n }\r\n case 'hide': {\r\n const modalState = state.modals[action.id]\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...modalState,\r\n visible: false,\r\n },\r\n },\r\n }\r\n }\r\n case 'mount':\r\n const initialState = getInitialModalState(action.intialState);\r\n return {\r\n ...state,\r\n maxZIndex: state.maxZIndex + 1,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...initialState,\r\n x: state.windowSize.width / 2 - initialState.width / 2,\r\n y: state.windowSize.height / 2 - initialState.height / 2,\r\n zIndex: state.maxZIndex + 1,\r\n },\r\n },\r\n };\r\n case 'unmount':\r\n const modalsClone = {...state.modals};\r\n delete modalsClone[action.id];\r\n return {\r\n ...state,\r\n modals: modalsClone,\r\n };\r\n case 'windowResize':\r\n return {\r\n ...state,\r\n windowSize: action.size,\r\n modals: mapObject(state.modals, (modalState: ModalState) => {\r\n if (!modalState.visible) {\r\n return modalState\r\n }\r\n const position = clampDrag(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n modalState.x,\r\n modalState.y,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n const size = clampResize(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n position.x,\r\n position.y,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n return {\r\n ...modalState,\r\n ...position,\r\n ...size,\r\n }\r\n }),\r\n }\r\n default:\r\n throw new Error()\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"draggableModalReducer.js","sourceRoot":"","sources":["../../../../../components/modal/impl/draggableModalReducer.ts"],"names":[],"mappings":"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","sourcesContent":["// https://github.com/CUBETIQ/antd-modal/\r\n\r\nimport {getWindowSize} from './getWindowSize'\r\nimport {clamp} from './clamp'\r\n\r\nconst mapObject = <T>(o: { [key: string]: T }, f: (value: T) => T): { [key: string]: T } =>\r\n Object.assign({}, ...Object.keys(o).map(k => ({[k]: f(o[k])})))\r\n\r\n// ID for a specific modal.\r\nexport type ModalID = string\r\n\r\n// State for a specific modal.\r\nexport interface ModalState {\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n visible: boolean\r\n}\r\n\r\n// State of all modals.\r\nexport interface ModalsState {\r\n windowSize: {\r\n width: number\r\n height: number\r\n }\r\n modals: {\r\n [key: string]: ModalState\r\n }\r\n}\r\n\r\nexport const initialModalsState: ModalsState = {\r\n windowSize: getWindowSize(),\r\n modals: {},\r\n};\r\n\r\nexport const initialModalState: ModalState = {\r\n x: 0,\r\n y: 0,\r\n width: 400,\r\n height: 400,\r\n visible: false,\r\n};\r\n\r\nconst getInitialModalState = ({\r\n initialWidth = initialModalState.width,\r\n initialHeight = initialModalState.height,\r\n }: {\r\n initialWidth?: number\r\n initialHeight?: number\r\n}) => {\r\n return {\r\n ...initialModalState,\r\n width: initialWidth,\r\n height: initialHeight,\r\n }\r\n}\r\n\r\nexport type Action =\r\n | { type: 'show'; id: ModalID }\r\n | { type: 'hide'; id: ModalID }\r\n | { type: 'focus'; id: ModalID }\r\n | { type: 'unmount'; id: ModalID }\r\n | { type: 'mount'; id: ModalID, intialState: { initialWidth?: number; initialHeight?: number } }\r\n | { type: 'windowResize'; size: { width: number; height: number } }\r\n | { type: 'drag'; id: ModalID; x: number; y: number }\r\n | {\r\n type: 'resize'\r\n id: ModalID\r\n x: number\r\n y: number\r\n width: number\r\n height: number\r\n}\r\n\r\nexport const getModalState = ({\r\n state,\r\n id,\r\n initialWidth,\r\n initialHeight,\r\n }: {\r\n state: ModalsState\r\n id: ModalID\r\n initialWidth?: number\r\n initialHeight?: number\r\n}): ModalState => state.modals[id] || getInitialModalState({ initialWidth, initialHeight })\r\n\r\nconst clampDrag = (\r\n windowWidth: number,\r\n windowHeight: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n): { x: number; y: number } => {\r\n const maxX = windowWidth - width;\r\n const maxY = windowHeight - height;\r\n const clampedX = clamp(0, maxX, x);\r\n const clampedY = clamp(0, maxY, y);\r\n return {x: clampedX, y: clampedY}\r\n}\r\n\r\nconst clampResize = (\r\n windowWidth: number,\r\n windowHeight: number,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n): { width: number; height: number } => {\r\n const maxWidth = windowWidth - x;\r\n const maxHeight = windowHeight - y;\r\n const clampedWidth = clamp(200, maxWidth, width);\r\n const clampedHeight = clamp(200, maxHeight, height);\r\n return {width: clampedWidth, height: clampedHeight}\r\n}\r\n\r\nexport const draggableModalReducer = (state: ModalsState, action: Action): ModalsState => {\r\n switch (action.type) {\r\n case 'resize':\r\n const size = clampResize(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n action.x,\r\n action.y,\r\n action.width,\r\n action.height,\r\n )\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...state.modals[action.id],\r\n ...size,\r\n },\r\n },\r\n }\r\n case 'drag':\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...state.modals[action.id],\r\n ...clampDrag(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n action.x,\r\n action.y,\r\n state.modals[action.id].width,\r\n state.modals[action.id].height,\r\n ),\r\n },\r\n },\r\n }\r\n case 'show': {\r\n const modalState = state.modals[action.id]\r\n const centerX = state.windowSize.width / 2 - modalState.width / 2\r\n const centerY = state.windowSize.height / 2 - modalState.height / 2\r\n const position = clampDrag(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n centerX,\r\n centerY,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n const size = clampResize(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n position.x,\r\n position.y,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...modalState,\r\n ...position,\r\n ...size,\r\n visible: true,\r\n },\r\n },\r\n }\r\n }\r\n case 'focus':\r\n const modalState = state.modals[action.id]\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...modalState,\r\n },\r\n },\r\n }\r\n case 'hide': {\r\n const modalState = state.modals[action.id]\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...modalState,\r\n visible: false,\r\n },\r\n },\r\n }\r\n }\r\n case 'mount':\r\n const initialState = getInitialModalState(action.intialState);\r\n return {\r\n ...state,\r\n modals: {\r\n ...state.modals,\r\n [action.id]: {\r\n ...initialState,\r\n x: state.windowSize.width / 2 - initialState.width / 2,\r\n y: state.windowSize.height / 2 - initialState.height / 2,\r\n },\r\n },\r\n };\r\n case 'unmount':\r\n const modalsClone = {...state.modals};\r\n delete modalsClone[action.id];\r\n return {\r\n ...state,\r\n modals: modalsClone,\r\n };\r\n case 'windowResize':\r\n return {\r\n ...state,\r\n windowSize: action.size,\r\n modals: mapObject(state.modals, (modalState: ModalState) => {\r\n if (!modalState.visible) {\r\n return modalState\r\n }\r\n const position = clampDrag(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n modalState.x,\r\n modalState.y,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n const size = clampResize(\r\n state.windowSize.width,\r\n state.windowSize.height,\r\n position.x,\r\n position.y,\r\n modalState.width,\r\n modalState.height,\r\n )\r\n return {\r\n ...modalState,\r\n ...position,\r\n ...size,\r\n }\r\n }),\r\n }\r\n default:\r\n throw new Error()\r\n }\r\n}\r\n"]}
|