d2aura 23.0.44 → 23.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { GridConfiguration } from "d2coreui/components/grid/extendedDataGrid";
2
+ import { FilterPanelRendererParams, GridConfiguration } from "d2coreui/components/grid/extendedDataGrid";
3
3
  import { DataGridColDef, OnLoadDataCallback } from "d2coreui/components/grid/dataGrid";
4
4
  import { RowDoubleClickedEvent, RowModelType, SelectionChangedEvent } from "ag-grid-community";
5
5
  import { Closeable } from "../api/abstractEntityApi";
@@ -58,6 +58,7 @@ export declare abstract class AbstractListPanel<T extends AuditableEntity, P ext
58
58
  protected onCloseDetailPanel(): void;
59
59
  protected onRowDoubleClicked(event: RowDoubleClickedEvent): void;
60
60
  protected getDetailPanelDefaultWidth(): number;
61
+ protected getFilterPanelDefaultWidth(): number | undefined;
61
62
  onSelectionChanged(event: SelectionChangedEvent): void;
62
63
  protected adaptNewRecord(newRecord: T): void;
63
64
  protected getDataToDelete(): T[];
@@ -76,6 +77,7 @@ export declare abstract class AbstractListPanel<T extends AuditableEntity, P ext
76
77
  protected renderShortcutPanel(): React.ReactNode | undefined;
77
78
  protected renderShortcutDrawer(): React.JSX.Element;
78
79
  protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement;
80
+ protected renderFilterPanel(_parameters?: FilterPanelRendererParams): React.ReactElement | undefined;
79
81
  renderToolbarButtons(): React.JSX.Element;
80
82
  protected renderControlPanel(): JSX.Element | null;
81
83
  protected getRowSelection(): "single" | "multiple";
@@ -94,6 +94,7 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
94
94
  this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);
95
95
  this.renderControlPanel = this.renderControlPanel.bind(this);
96
96
  this.renderToolbar = this.renderToolbar.bind(this);
97
+ this.renderFilterPanel = this.renderFilterPanel.bind(this);
97
98
  }
98
99
  async onLoadData(callback) {
99
100
  await super.onLoadData(callback);
@@ -166,6 +167,9 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
166
167
  getDetailPanelDefaultWidth() {
167
168
  return DETAIL_PANEL_DEFAULT_WIDTH;
168
169
  }
170
+ getFilterPanelDefaultWidth() {
171
+ return undefined;
172
+ }
169
173
  onSelectionChanged(event) {
170
174
  const selectedRows = event.api.getSelectedRows();
171
175
  if (selectedRows.length > 0) {
@@ -319,6 +323,9 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
319
323
  renderToolbar(originalSearchBar) {
320
324
  return originalSearchBar;
321
325
  }
326
+ renderFilterPanel(_parameters) {
327
+ return undefined;
328
+ }
322
329
  renderToolbarButtons() {
323
330
  if (this.isMobile()) {
324
331
  return (React.createElement(React.Fragment, null,
@@ -410,6 +417,15 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
410
417
  ];
411
418
  }
412
419
  render() {
420
+ const extendedDataGridProps = {};
421
+ if (this.renderFilterPanel() !== undefined) {
422
+ extendedDataGridProps.filterPanel = {
423
+ renderer: (parameters) => {
424
+ return this.renderFilterPanel(parameters);
425
+ },
426
+ defaultWidth: this.getFilterPanelDefaultWidth(),
427
+ };
428
+ }
413
429
  return (React.createElement("div", { style: { display: "flex", flexDirection: "column", height: "100%" } },
414
430
  React.createElement("div", { style: { padding: "10px 12px 0px", borderBottom: "2px solid #f5f5f5", fontWeight: 500 } }, this.renderBreadcrumb()),
415
431
  React.createElement("div", { style: { position: "relative", height: "100%" } },
@@ -439,9 +455,9 @@ export class AbstractListPanel extends AdvancedFilteredGrid {
439
455
  }, toolbar: {
440
456
  toolbarButtons: this.renderToolbarButtons(),
441
457
  renderToolbar: this.renderToolbar,
442
- }, animateRows: true, rowSelection: this.getRowSelection(), controlPanel: {
458
+ }, rowSelection: this.getRowSelection(), controlPanel: {
443
459
  renderer: this.renderControlPanel
444
- }, noRecordsOverlayRenderer: () => React.createElement("div", null) }))));
460
+ }, noRecordsOverlayRenderer: () => React.createElement("div", null), ...extendedDataGridProps }))));
445
461
  }
446
462
  }
447
463
  //# sourceMappingURL=abstractListPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstractListPanel.js","sourceRoot":"","sources":["../../../coreui/abstractListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid, {GridConfiguration} from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport {\r\n GridReadyEvent,\r\n IGetRowsParams,\r\n RowDoubleClickedEvent,\r\n RowModelType,\r\n SelectionChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {Closeable, PageableList} from \"../api/abstractEntityApi\";\r\nimport {Breadcrumb, Button, Drawer, Popover} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n BulbOutlined,\r\n CheckCircleOutlined,\r\n CloseCircleOutlined,\r\n CopyOutlined,\r\n DeleteOutlined,\r\n HistoryOutlined,\r\n MoreOutlined,\r\n PlusCircleOutlined,\r\n ProfileOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AuditableEntity from \"../api/types/auditableEntity\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"./components/advancedFilter/advancedFilteredGrid\";\r\nimport {GeneralEntityColumn} from \"./components/advancedFilter/advancedFilterColumnDefinitions\";\r\nimport AdvancedFilterButton from \"./components/advancedFilter/advancedFilterButton\";\r\nimport {PanelConfiguration} from \"../core/types/panelConfiguration\";\r\nimport auditEntityRowStyleRules from \"./components/grid/auditEntityRowStyleRules\";\r\nimport TitleWithCodePanel from \"./components/titleWithCodePanel/titleWithCodePanel\";\r\nimport EntityHistoryListPanel from \"./components/history/entityHistoryListPanel\";\r\nimport {AccessRight} from \"../api/types/accessRight\";\r\nimport {ERROR_COLOR, SUCCESS_COLOR} from \"../api/constants/constants\";\r\nimport AbstractEntityConfigPanel from \"./components/editor/abstractEntityConfigPanel\";\r\nimport {DbBoolean} from \"../api/types/dbBoolean\";\r\nimport {ItemType} from \"antd/es/breadcrumb/Breadcrumb\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport ColorTag from \"./components/colorTag/colorTag\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n compactBreadcrumb: css`\r\n ol {\r\n display: table;\r\n }\r\n\r\n ol li {\r\n display: table-cell;\r\n white-space: nowrap;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport const DETAIL_PANEL_DEFAULT_WIDTH = 560;\r\nconst MAX_WIDTH_MOBILE = 500;\r\n\r\nexport interface AbstractBreadcrumbItem {\r\n pageName: string\r\n code: string\r\n}\r\n\r\nexport interface AbstractListPanelConfiguration extends PanelConfiguration {\r\n gridConfiguration: GridConfiguration\r\n}\r\n\r\nexport interface AbstractListPanelProps<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridProps<T> {\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n getConfiguration(initialConfiguration: C): C\r\n\r\n onPanelConfigurationChanged(): void\r\n}\r\n\r\nexport interface AbstractListPanelState<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridState<T> {\r\n panelConfiguration: C\r\n detailPanelVisible: boolean\r\n modalDetailPanelVisible: boolean\r\n deletedRecordsVisible: boolean\r\n historyModalVisible: boolean\r\n dropdownMenuVisible: boolean\r\n waitingForNewEntity: boolean\r\n waitingForEntityCopy: boolean\r\n quickActionsListVisible: boolean\r\n accessRight: AccessRight\r\n}\r\n\r\nexport abstract class AbstractListPanel<\r\n T extends AuditableEntity,\r\n P extends AbstractListPanelProps<T, C>,\r\n S extends AbstractListPanelState<T, C>,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration,\r\n> extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n protected detailPanel: AbstractEntityConfigPanel<any, any> | null = null;\r\n protected entityHistoryListPanel: EntityHistoryListPanel<T> | null = null;\r\n protected refreshListHandler: Closeable | null = null;\r\n private idToSelect: number | undefined = undefined;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n this.onHistoryListPanelSelectionChanged = this.onHistoryListPanelSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n }\r\n\r\n protected initialState: Omit<AbstractListPanelState<T, C>, \"panelConfiguration\"> = {\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false,\r\n deletedRecordsVisible: false,\r\n historyModalVisible: false,\r\n dropdownMenuVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n setTimeout(() => {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n\r\n if (this.idToSelect !== undefined && pageableList.data.some(value => value.id === this.idToSelect)) {\r\n const rowNode = this.gridApi?.getRowNode(this.idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n rowNode?.setSelected(true, true);\r\n this.idToSelect = undefined;\r\n }\r\n }, 200);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityCopy: false,\r\n quickActionsListVisible: false,\r\n accessRight: AccessRight.NONE,\r\n filterConditions: [],\r\n }\r\n\r\n protected async onLoadData(callback: OnLoadDataCallback): Promise<void> {\r\n await super.onLoadData(callback);\r\n this.subscribeRefreshList();\r\n }\r\n\r\n protected subscribeRefreshList() {\r\n this.refreshListHandler = this.props.api.subscribeRefreshList(() => {\r\n this.gridApi?.refreshInfiniteCache();\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.refreshListHandler?.close();\r\n }\r\n\r\n protected initialGridConfiguration: GridConfiguration = {\r\n pageSize: -1,\r\n columnSearchVisible: true,\r\n rowStyleRules: auditEntityRowStyleRules(),\r\n defaultRowStyleRules: auditEntityRowStyleRules(),\r\n }\r\n\r\n getPanelConfiguration(): AbstractListPanelConfiguration {\r\n return this.state.panelConfiguration;\r\n }\r\n\r\n onPanelConfigurationChanged(configuration: Partial<AbstractListPanelConfiguration>) {\r\n const panelConfiguration = this.state.panelConfiguration;\r\n Object.assign(panelConfiguration, configuration);\r\n this.setState({panelConfiguration: panelConfiguration}, () => {\r\n this.props.onPanelConfigurationChanged();\r\n });\r\n }\r\n\r\n protected async onRecordsLoaded(): Promise<void> {\r\n const accessRight = await this.props.api.getAccessRight();\r\n this.setState({accessRight: accessRight});\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return !this.state.deletedRecordsVisible;\r\n }\r\n\r\n updateGrid(entity: T) {\r\n this.setState({modalDetailPanelVisible: false});\r\n this.idToSelect = entity.id;\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract renderDetailPanel(): React.ReactElement;\r\n\r\n abstract renderDetailPanelForHistory(entity: T | undefined, differences: string[]): React.ReactElement;\r\n\r\n protected focusFieldInDetailPanel(): void {\r\n this.detailPanel?.focusFirstField();\r\n }\r\n\r\n protected getAuditColumnDefs(): DataGridColDef[] {\r\n const auditColumnParams: Partial<DataGridColDef> = {\r\n group: i18n(\"Audit\"),\r\n initialHide: true,\r\n }\r\n\r\n return [\r\n this.getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, {headerName: i18n(\"Date of Insert\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.CREATED_BY, {headerName: i18n(\"Created By\"), ...auditColumnParams}),\r\n this.getDateTimeColumn(GeneralEntityColumn.MODIFY_DATE, {headerName: i18n(\"Modify Date\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.MODIFIED_BY, {headerName: i18n(\"Modified By\"), ...auditColumnParams}),\r\n this.getDbBooleanColumn(GeneralEntityColumn.VALIDITY, {headerName: i18n(\"Valid\"), ...auditColumnParams}),\r\n ]\r\n }\r\n\r\n protected onCloseDetailPanel() {\r\n this.setState({\r\n selectedData: this.gridApi?.getSelectedRows() ?? [],\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false\r\n });\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n protected onRowDoubleClicked(event: RowDoubleClickedEvent) {\r\n this.setState({\r\n selectedData: [event.data],\r\n detailPanelVisible: true,\r\n modalDetailPanelVisible: this.isMobile(),\r\n });\r\n\r\n if (!this.isMobile()) {\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n }\r\n\r\n protected getDetailPanelDefaultWidth(): number {\r\n return DETAIL_PANEL_DEFAULT_WIDTH;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: [], detailPanelVisible: false});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n protected adaptNewRecord(newRecord: T) {\r\n newRecord;\r\n }\r\n\r\n protected getDataToDelete() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.TRUE);\r\n }\r\n\r\n protected getDataToRecover() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.FALSE);\r\n }\r\n\r\n protected isValidityChangeDisabled(): boolean {\r\n return this.state.loading || this.state.selectedData[0]?.id === undefined;\r\n }\r\n\r\n protected renderValidityButton(): React.ReactNode | undefined {\r\n const operationDisabled = this.isValidityChangeDisabled();\r\n\r\n const dataToDelete = this.getDataToDelete();\r\n const dataToRecover = this.getDataToRecover();\r\n\r\n let allowedAction: \"delete\" | \"recover\" | \"none\" = \"none\";\r\n if (dataToDelete.length > 0) {\r\n allowedAction = \"delete\";\r\n } else if (dataToRecover.length > 0) {\r\n allowedAction = \"recover\";\r\n } else {\r\n allowedAction = \"none\";\r\n }\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={allowedAction === \"recover\" ? i18n(\"Mark Record As Valid\") : i18n(\"Mark Record As Deleted\")}\r\n disabled={operationDisabled || allowedAction === \"none\"}\r\n icon={allowedAction === \"recover\" ? <CheckCircleOutlined/> : <CloseCircleOutlined/>}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {allowedAction === \"recover\" ? i18n(\"Mark %n records as valid?\", dataToRecover.length) : i18n(\"Mark %n records as deleted?\", dataToDelete.length)}\r\n </span>,\r\n icon:\r\n allowedAction === \"delete\" ?\r\n <CloseCircleOutlined style={{color: ERROR_COLOR}}/>\r\n :\r\n <CheckCircleOutlined style={{color: SUCCESS_COLOR}}/>,\r\n onOk: async () => {\r\n for (const data of allowedAction === \"delete\" ? dataToDelete : dataToRecover) {\r\n const isOk = await this.props.api.setValidity(data, allowedAction === \"recover\");\r\n if (!isOk) {\r\n return;\r\n }\r\n }\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderAdvancedFilterButton(): React.ReactNode | undefined {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterConfig.listName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n onMenuItemClicked={() => {\r\n this.setState({dropdownMenuVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected isMobile(): boolean {\r\n return window.innerWidth <= MAX_WIDTH_MOBILE;\r\n }\r\n\r\n protected renderCopyButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Create Copy\")}\r\n disabled={disabled}\r\n loading={this.state.waitingForEntityCopy}\r\n icon={<CopyOutlined/>}\r\n onClick={async () => {\r\n this.setState({waitingForEntityCopy: true});\r\n const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n setTimeout(() => this.focusFieldInDetailPanel());\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderNewRecordButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"New Record\")}\r\n disabled={this.state.loading}\r\n loading={this.state.waitingForNewEntity}\r\n icon={<PlusCircleOutlined/>}\r\n onClick={() => {\r\n this.gridApi?.deselectAll();\r\n setTimeout(async () => {\r\n this.setState({waitingForNewEntity: true});\r\n const newRecord = await this.props.api.createNewEntity();\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], waitingForNewEntity: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n this.focusFieldInDetailPanel();\r\n }\r\n })\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderDetailPanelButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.detailPanelVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.detailPanelVisible ? \"Hide Detail\" : \"Show Detail\")}\r\n disabled={disabled}\r\n icon={<ProfileOutlined/>}\r\n onClick={() => {\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n const detailPanelVisible = this.state.detailPanelVisible;\r\n this.setState({detailPanelVisible: !detailPanelVisible});\r\n this.dataGrid?.showDetailPanel(!detailPanelVisible);\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderTrashButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.deletedRecordsVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.deletedRecordsVisible ? \"Hide Deleted Records\" : \"Show Deleted Records\")}\r\n icon={<DeleteOutlined/>}\r\n onClick={() => {\r\n this.setState({deletedRecordsVisible: !this.state.deletedRecordsVisible}, () => {\r\n this.gridApi?.refreshInfiniteCache();\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderShortcutButton(): React.ReactNode | undefined {\r\n if (this.renderShortcutPanel()) {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Quick Actions\")}\r\n disabled={disabled}\r\n icon={<BulbOutlined/>}\r\n onClick={() => {\r\n this.setState({quickActionsListVisible: true, dropdownMenuVisible: false});\r\n }}\r\n />\r\n )\r\n }\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalButtons(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderHistoryButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n disabled={this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined}\r\n onClick={() => {\r\n this.setState({historyModalVisible: true});\r\n }}\r\n >\r\n <HistoryOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n protected renderShortcutPanel(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderShortcutDrawer() {\r\n return (\r\n <Drawer\r\n title={<TitleWithCodePanel title={this.getPageTitle()} code={this.getBreadcrumbCode() ?? \"\"}/>}\r\n styles={{body: {padding: 0}}}\r\n placement=\"top\"\r\n height={240}\r\n onClose={() => {\r\n this.setState({quickActionsListVisible: false})\r\n }}\r\n open={this.state.quickActionsListVisible}\r\n >\r\n {this.renderShortcutPanel()}\r\n </Drawer>\r\n );\r\n }\r\n\r\n protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement {\r\n return originalSearchBar;\r\n }\r\n\r\n renderToolbarButtons() {\r\n if (this.isMobile()) {\r\n return (\r\n <>\r\n <Popover\r\n open={this.state.dropdownMenuVisible}\r\n onOpenChange={visible => {\r\n this.setState({dropdownMenuVisible: visible})\r\n }}\r\n content={\r\n <>\r\n <div>{this.renderAdvancedFilterButton()}</div>\r\n <div>{this.renderCopyButton()}</div>\r\n <div>{this.renderValidityButton()}</div>\r\n <div>{this.renderTrashButton()}</div>\r\n <div>{this.renderShortcutButton()}</div>\r\n <div>{this.renderAdditionalButtons()}</div>\r\n </>\r\n }\r\n trigger=\"click\"\r\n >\r\n <Button>\r\n <MoreOutlined/>\r\n </Button>\r\n </Popover>\r\n {this.renderNewRecordButton()}\r\n {this.renderDetailPanelButton()}\r\n </>\r\n )\r\n } else {\r\n return <>\r\n {this.renderAdvancedFilterButton()}\r\n {this.renderNewRecordButton()}\r\n {this.renderCopyButton()}\r\n {this.renderDetailPanelButton()}\r\n {this.renderValidityButton()}\r\n {this.renderTrashButton()}\r\n {this.renderHistoryButton()}\r\n {this.renderShortcutButton()}\r\n {this.renderAdditionalButtons()}\r\n </>\r\n }\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected getRowSelection(): \"single\" | \"multiple\" {\r\n return \"multiple\";\r\n }\r\n\r\n protected getRowModelType(): RowModelType {\r\n return \"infinite\";\r\n }\r\n\r\n protected getRowData(): T[] | undefined {\r\n return undefined;\r\n }\r\n\r\n abstract getPageTitle(): string\r\n\r\n protected getLoadedData(): T[] {\r\n const data: T[] = [];\r\n this.gridApi?.forEachNode(value => data.push(value.data));\r\n\r\n return data;\r\n }\r\n\r\n private renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n className=\"modal-no-header full-screen-modal\"\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n closable={false}\r\n open={this.state.modalDetailPanelVisible}\r\n styles={{body: {padding: 0}}}\r\n initialWidth={window.innerWidth}\r\n initialHeight={window.innerHeight}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected onHistoryListPanelSelectionChanged() {\r\n }\r\n\r\n protected isEqualCustomizerForHistory(key: string, value: any, other: any): boolean | undefined {\r\n key; value; other;\r\n return undefined;\r\n }\r\n\r\n private renderHistoryModalDialog(): React.ReactElement {\r\n const selectedEntity = this.state.selectedData[0];\r\n\r\n return (\r\n <ModalDialog\r\n styles={{body: {padding: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.historyModalVisible}\r\n onCancel={() => this.setState({historyModalVisible: false})}\r\n title={<TitleWithCodePanel title={i18n(\"History\")} code={selectedEntity?.code ?? \"\"}/>}\r\n initialWidth={window.innerWidth * 0.99}\r\n initialHeight={window.innerHeight * 0.95}\r\n >\r\n <EntityHistoryListPanel\r\n ref={component => this.entityHistoryListPanel = component}\r\n api={this.props.api}\r\n entity={selectedEntity}\r\n renderDetail={this.renderDetailPanelForHistory}\r\n detailPanelWidth={this.getDetailPanelDefaultWidth() * 2}\r\n onSelectionChanged={this.onHistoryListPanelSelectionChanged}\r\n isEqualCustomizer={this.isEqualCustomizerForHistory}\r\n />\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n private renderBreadcrumbItem(pageName: React.ReactNode, code?: string): ItemType {\r\n return {\r\n title: <>\r\n {pageName}\r\n {code && <ColorTag style={{marginLeft: 4, fontSize: 14}}>{code}</ColorTag>}\r\n </>,\r\n }\r\n }\r\n\r\n private renderBreadcrumb() {\r\n const pageTitle = this.getPageTitle();\r\n\r\n if (pageTitle) {\r\n const breadcrumbCode = this.getBreadcrumbCode();\r\n return (\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Breadcrumb\r\n className={css.styles.compactBreadcrumb}\r\n style={{paddingBottom: 10, fontSize: 20, overflowX: \"auto\"}}\r\n items={\r\n [\r\n ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],\r\n this.renderBreadcrumbItem(pageTitle, breadcrumbCode),\r\n ]\r\n }\r\n >\r\n </Breadcrumb>\r\n }</WithCss>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n protected getBreadcrumbCode() {\r\n return this.state.selectedData[0]?.code ?? undefined;\r\n }\r\n\r\n protected getExtendedBreadcrumbPath() {\r\n return [\r\n ...this.props.breadcrumbPath ?? [],\r\n {pageName: this.getPageTitle() ?? \"\", code: this.getBreadcrumbCode() ?? \"\"}\r\n ]\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\"}}>\r\n <div style={{padding: \"10px 12px 0px\", borderBottom: \"2px solid #f5f5f5\", fontWeight: 500}}>\r\n {this.renderBreadcrumb()}\r\n </div>\r\n <div style={{position: \"relative\", height: \"100%\"}}>\r\n {this.renderHistoryModalDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n {this.renderShortcutDrawer()}\r\n <ExtendedDataGrid<T>\r\n tablePanelStyle={{\r\n marginTop: 8,\r\n }}\r\n panelStyle={{\r\n paddingTop: 8,\r\n }}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={this.state.panelConfiguration.gridConfiguration}\r\n onChangeConfiguration={gridConfiguration => {\r\n this.onPanelConfigurationChanged({gridConfiguration: gridConfiguration});\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType={this.getRowModelType()}\r\n rowData={this.getRowData()}\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onSortChanged={() => {\r\n this.dataGrid?.loadData();\r\n }}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n detailPanel={{\r\n defaultWidth: this.getDetailPanelDefaultWidth(),\r\n renderer: this.renderDetailPanel\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n renderToolbar: this.renderToolbar,\r\n }}\r\n animateRows\r\n rowSelection={this.getRowSelection()}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
1
+ {"version":3,"file":"abstractListPanel.js","sourceRoot":"","sources":["../../../coreui/abstractListPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport ExtendedDataGrid, {\r\n ExtendedDataGridProps,\r\n FilterPanelRendererParams,\r\n GridConfiguration\r\n} from \"d2coreui/components/grid/extendedDataGrid\";\r\nimport {DataGridColDef, OnLoadDataCallback} from \"d2coreui/components/grid/dataGrid\";\r\nimport {\r\n GridReadyEvent,\r\n IGetRowsParams,\r\n RowDoubleClickedEvent,\r\n RowModelType,\r\n SelectionChangedEvent\r\n} from \"ag-grid-community\";\r\nimport {Closeable, PageableList} from \"../api/abstractEntityApi\";\r\nimport {Breadcrumb, Button, Drawer, Popover} from \"antd\";\r\nimport i18n from \"d2core/i18n/i18n\";\r\nimport {\r\n BulbOutlined,\r\n CheckCircleOutlined,\r\n CloseCircleOutlined,\r\n CopyOutlined,\r\n DeleteOutlined,\r\n HistoryOutlined,\r\n MoreOutlined,\r\n PlusCircleOutlined,\r\n ProfileOutlined\r\n} from \"@ant-design/icons\";\r\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\r\nimport AuditableEntity from \"../api/types/auditableEntity\";\r\nimport AdvancedFilteredGrid, {\r\n AdvancedFilteredGridProps,\r\n AdvancedFilteredGridState\r\n} from \"./components/advancedFilter/advancedFilteredGrid\";\r\nimport {GeneralEntityColumn} from \"./components/advancedFilter/advancedFilterColumnDefinitions\";\r\nimport AdvancedFilterButton from \"./components/advancedFilter/advancedFilterButton\";\r\nimport {PanelConfiguration} from \"../core/types/panelConfiguration\";\r\nimport auditEntityRowStyleRules from \"./components/grid/auditEntityRowStyleRules\";\r\nimport TitleWithCodePanel from \"./components/titleWithCodePanel/titleWithCodePanel\";\r\nimport EntityHistoryListPanel from \"./components/history/entityHistoryListPanel\";\r\nimport {AccessRight} from \"../api/types/accessRight\";\r\nimport {ERROR_COLOR, SUCCESS_COLOR} from \"../api/constants/constants\";\r\nimport AbstractEntityConfigPanel from \"./components/editor/abstractEntityConfigPanel\";\r\nimport {DbBoolean} from \"../api/types/dbBoolean\";\r\nimport {ItemType} from \"antd/es/breadcrumb/Breadcrumb\";\r\nimport {createStyles} from \"antd-style\";\r\nimport WithCss from \"d2coreui/components/style/withCss\";\r\nimport ColorTag from \"./components/colorTag/colorTag\";\r\n\r\nconst useStyles = createStyles(({css}) => {\r\n return {\r\n compactBreadcrumb: css`\r\n ol {\r\n display: table;\r\n }\r\n\r\n ol li {\r\n display: table-cell;\r\n white-space: nowrap;\r\n }\r\n `\r\n }\r\n});\r\n\r\nexport const DETAIL_PANEL_DEFAULT_WIDTH = 560;\r\nconst MAX_WIDTH_MOBILE = 500;\r\n\r\nexport interface AbstractBreadcrumbItem {\r\n pageName: string\r\n code: string\r\n}\r\n\r\nexport interface AbstractListPanelConfiguration extends PanelConfiguration {\r\n gridConfiguration: GridConfiguration\r\n}\r\n\r\nexport interface AbstractListPanelProps<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridProps<T> {\r\n breadcrumbPath?: AbstractBreadcrumbItem[]\r\n\r\n getConfiguration(initialConfiguration: C): C\r\n\r\n onPanelConfigurationChanged(): void\r\n}\r\n\r\nexport interface AbstractListPanelState<\r\n T extends AuditableEntity,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration\r\n> extends AdvancedFilteredGridState<T> {\r\n panelConfiguration: C\r\n detailPanelVisible: boolean\r\n modalDetailPanelVisible: boolean\r\n deletedRecordsVisible: boolean\r\n historyModalVisible: boolean\r\n dropdownMenuVisible: boolean\r\n waitingForNewEntity: boolean\r\n waitingForEntityCopy: boolean\r\n quickActionsListVisible: boolean\r\n accessRight: AccessRight\r\n}\r\n\r\nexport abstract class AbstractListPanel<\r\n T extends AuditableEntity,\r\n P extends AbstractListPanelProps<T, C>,\r\n S extends AbstractListPanelState<T, C>,\r\n C extends AbstractListPanelConfiguration = AbstractListPanelConfiguration,\r\n> extends AdvancedFilteredGrid<T, P, S> {\r\n\r\n protected detailPanel: AbstractEntityConfigPanel<any, any> | null = null;\r\n protected entityHistoryListPanel: EntityHistoryListPanel<T> | null = null;\r\n protected refreshListHandler: Closeable | null = null;\r\n private idToSelect: number | undefined = undefined;\r\n\r\n protected constructor(props: Readonly<P>) {\r\n super(props);\r\n\r\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\r\n this.onRowDoubleClicked = this.onRowDoubleClicked.bind(this);\r\n this.onHistoryListPanelSelectionChanged = this.onHistoryListPanelSelectionChanged.bind(this);\r\n this.renderDetailPanel = this.renderDetailPanel.bind(this);\r\n this.renderDetailPanelForHistory = this.renderDetailPanelForHistory.bind(this);\r\n this.renderControlPanel = this.renderControlPanel.bind(this);\r\n this.renderToolbar = this.renderToolbar.bind(this);\r\n this.renderFilterPanel = this.renderFilterPanel.bind(this);\r\n }\r\n\r\n protected initialState: Omit<AbstractListPanelState<T, C>, \"panelConfiguration\"> = {\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false,\r\n deletedRecordsVisible: false,\r\n historyModalVisible: false,\r\n dropdownMenuVisible: false,\r\n columnDefs: this.getInitialColumnDefs(),\r\n loading: false,\r\n datasource: {\r\n getRows: async (params: IGetRowsParams) => {\r\n if (this.firstLoadedPage) {\r\n let pageableList: PageableList<T>;\r\n if (this.manualReload && params.startRow === 0 && params.endRow === 100) {\r\n this.manualReload = false;\r\n pageableList = this.firstLoadedPage;\r\n } else {\r\n pageableList = await this.getRecords(params.startRow, params.endRow);\r\n }\r\n params.successCallback(pageableList.data, pageableList.totalNumberOfRows);\r\n\r\n setTimeout(() => {\r\n this.setState({selectedData: this.gridApi?.getSelectedRows() ?? []});\r\n\r\n if (this.idToSelect !== undefined && pageableList.data.some(value => value.id === this.idToSelect)) {\r\n const rowNode = this.gridApi?.getRowNode(this.idToSelect.toString());\r\n this.gridApi?.ensureNodeVisible(rowNode);\r\n rowNode?.setSelected(true, true);\r\n this.idToSelect = undefined;\r\n }\r\n }, 200);\r\n } else {\r\n params.successCallback([], 0);\r\n }\r\n }\r\n },\r\n selectedData: [],\r\n waitingForNewEntity: false,\r\n waitingForEntityCopy: false,\r\n quickActionsListVisible: false,\r\n accessRight: AccessRight.NONE,\r\n filterConditions: [],\r\n }\r\n\r\n protected async onLoadData(callback: OnLoadDataCallback): Promise<void> {\r\n await super.onLoadData(callback);\r\n this.subscribeRefreshList();\r\n }\r\n\r\n protected subscribeRefreshList() {\r\n this.refreshListHandler = this.props.api.subscribeRefreshList(() => {\r\n this.gridApi?.refreshInfiniteCache();\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n this.refreshListHandler?.close();\r\n }\r\n\r\n protected initialGridConfiguration: GridConfiguration = {\r\n pageSize: -1,\r\n columnSearchVisible: true,\r\n rowStyleRules: auditEntityRowStyleRules(),\r\n defaultRowStyleRules: auditEntityRowStyleRules(),\r\n }\r\n\r\n getPanelConfiguration(): AbstractListPanelConfiguration {\r\n return this.state.panelConfiguration;\r\n }\r\n\r\n onPanelConfigurationChanged(configuration: Partial<AbstractListPanelConfiguration>) {\r\n const panelConfiguration = this.state.panelConfiguration;\r\n Object.assign(panelConfiguration, configuration);\r\n this.setState({panelConfiguration: panelConfiguration}, () => {\r\n this.props.onPanelConfigurationChanged();\r\n });\r\n }\r\n\r\n protected async onRecordsLoaded(): Promise<void> {\r\n const accessRight = await this.props.api.getAccessRight();\r\n this.setState({accessRight: accessRight});\r\n }\r\n\r\n getOnlyValidRecords(): boolean {\r\n return !this.state.deletedRecordsVisible;\r\n }\r\n\r\n updateGrid(entity: T) {\r\n this.setState({modalDetailPanelVisible: false});\r\n this.idToSelect = entity.id;\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n\r\n abstract getInitialColumnDefs(): DataGridColDef[];\r\n\r\n abstract renderDetailPanel(): React.ReactElement;\r\n\r\n abstract renderDetailPanelForHistory(entity: T | undefined, differences: string[]): React.ReactElement;\r\n\r\n protected focusFieldInDetailPanel(): void {\r\n this.detailPanel?.focusFirstField();\r\n }\r\n\r\n protected getAuditColumnDefs(): DataGridColDef[] {\r\n const auditColumnParams: Partial<DataGridColDef> = {\r\n group: i18n(\"Audit\"),\r\n initialHide: true,\r\n }\r\n\r\n return [\r\n this.getDateTimeColumn(GeneralEntityColumn.CREATE_DATE, {headerName: i18n(\"Date of Insert\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.CREATED_BY, {headerName: i18n(\"Created By\"), ...auditColumnParams}),\r\n this.getDateTimeColumn(GeneralEntityColumn.MODIFY_DATE, {headerName: i18n(\"Modify Date\"), ...auditColumnParams}),\r\n this.getStringColumn(GeneralEntityColumn.MODIFIED_BY, {headerName: i18n(\"Modified By\"), ...auditColumnParams}),\r\n this.getDbBooleanColumn(GeneralEntityColumn.VALIDITY, {headerName: i18n(\"Valid\"), ...auditColumnParams}),\r\n ]\r\n }\r\n\r\n protected onCloseDetailPanel() {\r\n this.setState({\r\n selectedData: this.gridApi?.getSelectedRows() ?? [],\r\n detailPanelVisible: false,\r\n modalDetailPanelVisible: false\r\n });\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n\r\n protected onRowDoubleClicked(event: RowDoubleClickedEvent) {\r\n this.setState({\r\n selectedData: [event.data],\r\n detailPanelVisible: true,\r\n modalDetailPanelVisible: this.isMobile(),\r\n });\r\n\r\n if (!this.isMobile()) {\r\n this.dataGrid?.showDetailPanel(true);\r\n }\r\n }\r\n\r\n protected getDetailPanelDefaultWidth(): number {\r\n return DETAIL_PANEL_DEFAULT_WIDTH;\r\n }\r\n\r\n protected getFilterPanelDefaultWidth(): number | undefined {\r\n return undefined;\r\n }\r\n\r\n onSelectionChanged(event: SelectionChangedEvent) {\r\n const selectedRows = event.api.getSelectedRows();\r\n if (selectedRows.length > 0) {\r\n this.setState({selectedData: selectedRows});\r\n } else {\r\n this.setState({selectedData: [], detailPanelVisible: false});\r\n this.dataGrid?.showDetailPanel(false);\r\n }\r\n }\r\n\r\n protected adaptNewRecord(newRecord: T) {\r\n newRecord;\r\n }\r\n\r\n protected getDataToDelete() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.TRUE);\r\n }\r\n\r\n protected getDataToRecover() {\r\n return this.state.selectedData.filter(data => data.ano_platny === DbBoolean.FALSE);\r\n }\r\n\r\n protected isValidityChangeDisabled(): boolean {\r\n return this.state.loading || this.state.selectedData[0]?.id === undefined;\r\n }\r\n\r\n protected renderValidityButton(): React.ReactNode | undefined {\r\n const operationDisabled = this.isValidityChangeDisabled();\r\n\r\n const dataToDelete = this.getDataToDelete();\r\n const dataToRecover = this.getDataToRecover();\r\n\r\n let allowedAction: \"delete\" | \"recover\" | \"none\" = \"none\";\r\n if (dataToDelete.length > 0) {\r\n allowedAction = \"delete\";\r\n } else if (dataToRecover.length > 0) {\r\n allowedAction = \"recover\";\r\n } else {\r\n allowedAction = \"none\";\r\n }\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={allowedAction === \"recover\" ? i18n(\"Mark Record As Valid\") : i18n(\"Mark Record As Deleted\")}\r\n disabled={operationDisabled || allowedAction === \"none\"}\r\n icon={allowedAction === \"recover\" ? <CheckCircleOutlined/> : <CloseCircleOutlined/>}\r\n onClick={() => {\r\n ModalDialog.delete({\r\n mode: ModalDialogMode.YES_NO,\r\n title: <span style={{whiteSpace: \"nowrap\"}}>\r\n {allowedAction === \"recover\" ? i18n(\"Mark %n records as valid?\", dataToRecover.length) : i18n(\"Mark %n records as deleted?\", dataToDelete.length)}\r\n </span>,\r\n icon:\r\n allowedAction === \"delete\" ?\r\n <CloseCircleOutlined style={{color: ERROR_COLOR}}/>\r\n :\r\n <CheckCircleOutlined style={{color: SUCCESS_COLOR}}/>,\r\n onOk: async () => {\r\n for (const data of allowedAction === \"delete\" ? dataToDelete : dataToRecover) {\r\n const isOk = await this.props.api.setValidity(data, allowedAction === \"recover\");\r\n if (!isOk) {\r\n return;\r\n }\r\n }\r\n this.gridApi?.refreshInfiniteCache();\r\n }\r\n });\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderAdvancedFilterButton(): React.ReactNode | undefined {\r\n const advancedFilterConfig = this.getAdvancedFilterConfig();\r\n\r\n if (advancedFilterConfig) {\r\n return (\r\n <AdvancedFilterButton\r\n advancedFilterApi={this.props.advancedFilterApi}\r\n listName={advancedFilterConfig.listName}\r\n columnDefinitions={this.getAdvancedFilterColumnDefinitions()}\r\n filterConditions={this.state.filterConditions}\r\n onApplyFilter={this.onApplyFilter}\r\n onMenuItemClicked={() => {\r\n this.setState({dropdownMenuVisible: false});\r\n }}\r\n />\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n protected isMobile(): boolean {\r\n return window.innerWidth <= MAX_WIDTH_MOBILE;\r\n }\r\n\r\n protected renderCopyButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Create Copy\")}\r\n disabled={disabled}\r\n loading={this.state.waitingForEntityCopy}\r\n icon={<CopyOutlined/>}\r\n onClick={async () => {\r\n this.setState({waitingForEntityCopy: true});\r\n const newRecord = await this.props.api.createNewEntity(this.state.selectedData[0]);\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], dropdownMenuVisible: false, waitingForEntityCopy: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n setTimeout(() => this.focusFieldInDetailPanel());\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderNewRecordButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"New Record\")}\r\n disabled={this.state.loading}\r\n loading={this.state.waitingForNewEntity}\r\n icon={<PlusCircleOutlined/>}\r\n onClick={() => {\r\n this.gridApi?.deselectAll();\r\n setTimeout(async () => {\r\n this.setState({waitingForNewEntity: true});\r\n const newRecord = await this.props.api.createNewEntity();\r\n this.adaptNewRecord(newRecord);\r\n this.setState({selectedData: [newRecord], waitingForNewEntity: false});\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n this.setState({detailPanelVisible: true});\r\n this.dataGrid?.showDetailPanel(true);\r\n this.focusFieldInDetailPanel();\r\n }\r\n })\r\n }}\r\n />\r\n );\r\n }\r\n\r\n protected renderDetailPanelButton(): React.ReactNode | undefined {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.detailPanelVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.detailPanelVisible ? \"Hide Detail\" : \"Show Detail\")}\r\n disabled={disabled}\r\n icon={<ProfileOutlined/>}\r\n onClick={() => {\r\n if (this.isMobile()) {\r\n this.setState({modalDetailPanelVisible: true})\r\n } else {\r\n const detailPanelVisible = this.state.detailPanelVisible;\r\n this.setState({detailPanelVisible: !detailPanelVisible});\r\n this.dataGrid?.showDetailPanel(!detailPanelVisible);\r\n }\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderTrashButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n type={this.state.deletedRecordsVisible ? \"primary\" : \"default\"}\r\n title={i18n(this.state.deletedRecordsVisible ? \"Hide Deleted Records\" : \"Show Deleted Records\")}\r\n icon={<DeleteOutlined/>}\r\n onClick={() => {\r\n this.setState({deletedRecordsVisible: !this.state.deletedRecordsVisible}, () => {\r\n this.gridApi?.refreshInfiniteCache();\r\n });\r\n }}\r\n />\r\n )\r\n }\r\n\r\n protected renderShortcutButton(): React.ReactNode | undefined {\r\n if (this.renderShortcutPanel()) {\r\n const disabled = this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined;\r\n\r\n return (\r\n <Button\r\n style={{width: 44}}\r\n title={i18n(\"Quick Actions\")}\r\n disabled={disabled}\r\n icon={<BulbOutlined/>}\r\n onClick={() => {\r\n this.setState({quickActionsListVisible: true, dropdownMenuVisible: false});\r\n }}\r\n />\r\n )\r\n }\r\n return undefined;\r\n }\r\n\r\n protected renderAdditionalButtons(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderHistoryButton(): React.ReactNode | undefined {\r\n return (\r\n <Button\r\n disabled={this.state.loading || this.state.selectedData.length !== 1 || this.state.selectedData[0].id === undefined}\r\n onClick={() => {\r\n this.setState({historyModalVisible: true});\r\n }}\r\n >\r\n <HistoryOutlined/>\r\n </Button>\r\n );\r\n }\r\n\r\n protected renderShortcutPanel(): React.ReactNode | undefined {\r\n return undefined;\r\n }\r\n\r\n protected renderShortcutDrawer() {\r\n return (\r\n <Drawer\r\n title={<TitleWithCodePanel title={this.getPageTitle()} code={this.getBreadcrumbCode() ?? \"\"}/>}\r\n styles={{body: {padding: 0}}}\r\n placement=\"top\"\r\n height={240}\r\n onClose={() => {\r\n this.setState({quickActionsListVisible: false})\r\n }}\r\n open={this.state.quickActionsListVisible}\r\n >\r\n {this.renderShortcutPanel()}\r\n </Drawer>\r\n );\r\n }\r\n\r\n protected renderToolbar(originalSearchBar: React.ReactElement): React.ReactElement {\r\n return originalSearchBar;\r\n }\r\n\r\n protected renderFilterPanel(_parameters?: FilterPanelRendererParams): React.ReactElement | undefined {\r\n return undefined;\r\n }\r\n\r\n renderToolbarButtons() {\r\n if (this.isMobile()) {\r\n return (\r\n <>\r\n <Popover\r\n open={this.state.dropdownMenuVisible}\r\n onOpenChange={visible => {\r\n this.setState({dropdownMenuVisible: visible})\r\n }}\r\n content={\r\n <>\r\n <div>{this.renderAdvancedFilterButton()}</div>\r\n <div>{this.renderCopyButton()}</div>\r\n <div>{this.renderValidityButton()}</div>\r\n <div>{this.renderTrashButton()}</div>\r\n <div>{this.renderShortcutButton()}</div>\r\n <div>{this.renderAdditionalButtons()}</div>\r\n </>\r\n }\r\n trigger=\"click\"\r\n >\r\n <Button>\r\n <MoreOutlined/>\r\n </Button>\r\n </Popover>\r\n {this.renderNewRecordButton()}\r\n {this.renderDetailPanelButton()}\r\n </>\r\n )\r\n } else {\r\n return <>\r\n {this.renderAdvancedFilterButton()}\r\n {this.renderNewRecordButton()}\r\n {this.renderCopyButton()}\r\n {this.renderDetailPanelButton()}\r\n {this.renderValidityButton()}\r\n {this.renderTrashButton()}\r\n {this.renderHistoryButton()}\r\n {this.renderShortcutButton()}\r\n {this.renderAdditionalButtons()}\r\n </>\r\n }\r\n }\r\n\r\n protected renderControlPanel(): JSX.Element | null {\r\n return null;\r\n }\r\n\r\n protected getRowSelection(): \"single\" | \"multiple\" {\r\n return \"multiple\";\r\n }\r\n\r\n protected getRowModelType(): RowModelType {\r\n return \"infinite\";\r\n }\r\n\r\n protected getRowData(): T[] | undefined {\r\n return undefined;\r\n }\r\n\r\n abstract getPageTitle(): string\r\n\r\n protected getLoadedData(): T[] {\r\n const data: T[] = [];\r\n this.gridApi?.forEachNode(value => data.push(value.data));\r\n\r\n return data;\r\n }\r\n\r\n private renderDetailPanelModalDialog() {\r\n return (\r\n <ModalDialog\r\n className=\"modal-no-header full-screen-modal\"\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n closable={false}\r\n open={this.state.modalDetailPanelVisible}\r\n styles={{body: {padding: 0}}}\r\n initialWidth={window.innerWidth}\r\n initialHeight={window.innerHeight}\r\n forceRender\r\n >\r\n {this.renderDetailPanel()}\r\n </ModalDialog>\r\n )\r\n }\r\n\r\n protected onHistoryListPanelSelectionChanged() {\r\n }\r\n\r\n protected isEqualCustomizerForHistory(key: string, value: any, other: any): boolean | undefined {\r\n key; value; other;\r\n return undefined;\r\n }\r\n\r\n private renderHistoryModalDialog(): React.ReactElement {\r\n const selectedEntity = this.state.selectedData[0];\r\n\r\n return (\r\n <ModalDialog\r\n styles={{body: {padding: 0}}}\r\n mode={ModalDialogMode.NO_BUTTONS}\r\n open={this.state.historyModalVisible}\r\n onCancel={() => this.setState({historyModalVisible: false})}\r\n title={<TitleWithCodePanel title={i18n(\"History\")} code={selectedEntity?.code ?? \"\"}/>}\r\n initialWidth={window.innerWidth * 0.99}\r\n initialHeight={window.innerHeight * 0.95}\r\n >\r\n <EntityHistoryListPanel\r\n ref={component => this.entityHistoryListPanel = component}\r\n api={this.props.api}\r\n entity={selectedEntity}\r\n renderDetail={this.renderDetailPanelForHistory}\r\n detailPanelWidth={this.getDetailPanelDefaultWidth() * 2}\r\n onSelectionChanged={this.onHistoryListPanelSelectionChanged}\r\n isEqualCustomizer={this.isEqualCustomizerForHistory}\r\n />\r\n </ModalDialog>\r\n );\r\n }\r\n\r\n private renderBreadcrumbItem(pageName: React.ReactNode, code?: string): ItemType {\r\n return {\r\n title: <>\r\n {pageName}\r\n {code && <ColorTag style={{marginLeft: 4, fontSize: 14}}>{code}</ColorTag>}\r\n </>,\r\n }\r\n }\r\n\r\n private renderBreadcrumb() {\r\n const pageTitle = this.getPageTitle();\r\n\r\n if (pageTitle) {\r\n const breadcrumbCode = this.getBreadcrumbCode();\r\n return (\r\n <WithCss useStyles={useStyles}>{(css) =>\r\n <Breadcrumb\r\n className={css.styles.compactBreadcrumb}\r\n style={{paddingBottom: 10, fontSize: 20, overflowX: \"auto\"}}\r\n items={\r\n [\r\n ...this.props.breadcrumbPath?.map(value => this.renderBreadcrumbItem(value.pageName, value.code)) ?? [],\r\n this.renderBreadcrumbItem(pageTitle, breadcrumbCode),\r\n ]\r\n }\r\n >\r\n </Breadcrumb>\r\n }</WithCss>\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n protected getBreadcrumbCode() {\r\n return this.state.selectedData[0]?.code ?? undefined;\r\n }\r\n\r\n protected getExtendedBreadcrumbPath() {\r\n return [\r\n ...this.props.breadcrumbPath ?? [],\r\n {pageName: this.getPageTitle() ?? \"\", code: this.getBreadcrumbCode() ?? \"\"}\r\n ]\r\n }\r\n\r\n render() {\r\n const extendedDataGridProps: Partial<ExtendedDataGridProps> = {};\r\n if (this.renderFilterPanel() !== undefined) {\r\n extendedDataGridProps.filterPanel = {\r\n renderer: (parameters: FilterPanelRendererParams): React.ReactElement => {\r\n return this.renderFilterPanel(parameters) as React.ReactElement;\r\n },\r\n defaultWidth: this.getFilterPanelDefaultWidth(),\r\n }\r\n }\r\n\r\n return (\r\n <div style={{display: \"flex\", flexDirection: \"column\", height: \"100%\"}}>\r\n <div style={{padding: \"10px 12px 0px\", borderBottom: \"2px solid #f5f5f5\", fontWeight: 500}}>\r\n {this.renderBreadcrumb()}\r\n </div>\r\n <div style={{position: \"relative\", height: \"100%\"}}>\r\n {this.renderHistoryModalDialog()}\r\n {this.renderDetailPanelModalDialog()}\r\n {this.renderShortcutDrawer()}\r\n <ExtendedDataGrid<T>\r\n tablePanelStyle={{\r\n marginTop: 8,\r\n }}\r\n panelStyle={{\r\n paddingTop: 8,\r\n }}\r\n ref={(dataGrid) => {\r\n this.dataGrid = dataGrid;\r\n }}\r\n defaultGridConfiguration={this.state.panelConfiguration.gridConfiguration}\r\n onChangeConfiguration={gridConfiguration => {\r\n this.onPanelConfigurationChanged({gridConfiguration: gridConfiguration});\r\n }}\r\n onGridReady={(params: GridReadyEvent) => {\r\n this.gridApi = params.api;\r\n }}\r\n rowModelType={this.getRowModelType()}\r\n rowData={this.getRowData()}\r\n datasource={this.state.datasource}\r\n onLoadData={this.onLoadData}\r\n onSelectionChanged={this.onSelectionChanged}\r\n columnDefs={this.state.columnDefs}\r\n search={{\r\n onSearch: () => {\r\n this.dataGrid?.loadData();\r\n },\r\n hidden: true,\r\n }}\r\n onSortChanged={() => {\r\n this.dataGrid?.loadData();\r\n }}\r\n onRowDoubleClicked={this.onRowDoubleClicked}\r\n detailPanel={{\r\n defaultWidth: this.getDetailPanelDefaultWidth(),\r\n renderer: this.renderDetailPanel\r\n }}\r\n toolbar={{\r\n toolbarButtons: this.renderToolbarButtons(),\r\n renderToolbar: this.renderToolbar,\r\n }}\r\n rowSelection={this.getRowSelection()}\r\n controlPanel={{\r\n renderer: this.renderControlPanel\r\n }}\r\n noRecordsOverlayRenderer={() => <div/>}\r\n {...extendedDataGridProps}\r\n />\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d2aura",
3
- "version": "23.0.44",
3
+ "version": "23.0.46",
4
4
  "description": "D2 AURA - Advanced User Interface Resource Architecture",
5
5
  "author": "Ipesoft s.r.o.",
6
6
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  "@types/urijs": "1.19.16",
43
43
  "antd": "5.21.2",
44
44
  "d2core": "23.0.14",
45
- "d2coreui": "23.0.23",
45
+ "d2coreui": "23.0.24",
46
46
  "d2jsapi": "21.0.30",
47
47
  "echarts": "5.5.1",
48
48
  "echarts-for-react": "3.0.2",