d2coreui 21.0.21 → 21.0.22

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,9 +1,10 @@
1
- import React from "react";
1
+ import React, { CSSProperties } from "react";
2
2
  import { FormItemProps } from "antd";
3
3
  import "../../style/form/niceFormItem.css";
4
4
  export interface NiceFormItemProps extends FormItemProps {
5
5
  border?: boolean;
6
6
  disabled?: boolean;
7
+ labelStyle?: CSSProperties;
7
8
  }
8
9
  export interface NiceFormItemState {
9
10
  }
@@ -17,13 +17,16 @@ export class NiceFormItem extends React.Component {
17
17
  super(props);
18
18
  }
19
19
  render() {
20
- const _a = this.props, { label, children, border, disabled, className } = _a, rest = __rest(_a, ["label", "children", "border", "disabled", "className"]);
21
- const labelStyle = disabled ? { background: "transparent" } : undefined;
20
+ const _a = this.props, { label, children, border, disabled, className, labelStyle } = _a, rest = __rest(_a, ["label", "children", "border", "disabled", "className", "labelStyle"]);
21
+ const eLabelStyle = !!labelStyle ? Object.assign({}, labelStyle) : (disabled ? {} : undefined);
22
+ if (!!eLabelStyle && disabled && !(eLabelStyle === null || eLabelStyle === void 0 ? void 0 : eLabelStyle.background)) {
23
+ eLabelStyle.background = "transparent";
24
+ }
22
25
  const classNames = "nice-form-item" + (className !== null && className !== void 0 ? className : "");
23
26
  return (React.createElement(Form.Item, Object.assign({}, rest, { className: classNames }),
24
27
  React.createElement("div", { className: "nice-float-label" },
25
28
  border ? React.createElement("section", { className: "nice-form-item-box" }, children) : children,
26
- React.createElement("label", { className: "nice-label nice-label-float", style: labelStyle }, label))));
29
+ React.createElement("label", { className: "nice-label nice-label-float", style: eLabelStyle }, label))));
27
30
  }
28
31
  }
29
32
  //# sourceMappingURL=NiceFormItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NiceFormItem.js","sourceRoot":"","sources":["../../../../components/form/NiceFormItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAgB,MAAM,MAAM,CAAA;AACxC,OAAO,mCAAmC,CAAA;AAU1C,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAA+C;IACnF,YAAY,KAAsD;QAC9D,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,KAA0D,IAAI,CAAC,KAAK,EAApE,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,OAAuB,EAAlB,IAAI,cAAtD,wDAAuD,CAAa,CAAC;QAC3E,MAAM,UAAU,GAA8B,QAAQ,CAAC,CAAC,CAAC,EAAC,UAAU,EAAE,aAAa,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjG,MAAM,UAAU,GAAG,gBAAgB,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,CAAA;QAEvD,OAAO,CACH,oBAAC,IAAI,CAAC,IAAI,oBAAK,IAAI,IAAE,SAAS,EAAE,UAAU;YACtC,6BAAK,SAAS,EAAC,kBAAkB;gBAC5B,MAAM,CAAC,CAAC,CAAC,iCAAS,SAAS,EAAC,oBAAoB,IAAE,QAAQ,CAAW,CAAC,CAAC,CAAC,QAAQ;gBACjF,+BAAO,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,UAAU,IAAG,KAAK,CAAS,CAC/E,CACE,CAAC,CAAC;IACtB,CAAC;CACJ","sourcesContent":["import React, {CSSProperties} from \"react\";\nimport {Form, FormItemProps} from \"antd\"\nimport \"../../style/form/niceFormItem.css\"\n\nexport interface NiceFormItemProps extends FormItemProps {\n border?: boolean\n disabled?: boolean\n}\n\nexport interface NiceFormItemState {\n}\n\nexport class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {\n constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps) {\n super(props);\n }\n\n render() {\n const {label, children, border, disabled, className, ...rest} = this.props;\n const labelStyle: CSSProperties | undefined = disabled ? {background: \"transparent\"} : undefined;\n const classNames = \"nice-form-item\" + (className ?? \"\")\n\n return (\n <Form.Item {...rest} className={classNames}>\n <div className=\"nice-float-label\">\n {border ? <section className=\"nice-form-item-box\">{children}</section> : children}\n <label className=\"nice-label nice-label-float\" style={labelStyle}>{label}</label>\n </div>\n </Form.Item>);\n }\n}"]}
1
+ {"version":3,"file":"NiceFormItem.js","sourceRoot":"","sources":["../../../../components/form/NiceFormItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAgB,MAAM,MAAM,CAAA;AACxC,OAAO,mCAAmC,CAAA;AAW1C,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAA+C;IACnF,YAAY,KAAsD;QAC9D,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,KAAsE,IAAI,CAAC,KAAK,EAAhF,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,OAAuB,EAAlB,IAAI,cAAlE,sEAAmE,CAAa,CAAC;QACvF,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,mBAAK,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,CAAC,WAAW,IAAI,QAAQ,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA,EAAE;YACvD,WAAW,CAAC,UAAU,GAAG,aAAa,CAAC;SAC1C;QACD,MAAM,UAAU,GAAG,gBAAgB,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,CAAA;QACvD,OAAO,CACH,oBAAC,IAAI,CAAC,IAAI,oBAAK,IAAI,IAAE,SAAS,EAAE,UAAU;YACtC,6BAAK,SAAS,EAAC,kBAAkB;gBAC5B,MAAM,CAAC,CAAC,CAAC,iCAAS,SAAS,EAAC,oBAAoB,IAAE,QAAQ,CAAW,CAAC,CAAC,CAAC,QAAQ;gBACjF,+BAAO,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,WAAW,IAAG,KAAK,CAAS,CAChF,CACE,CAAC,CAAC;IACtB,CAAC;CACJ","sourcesContent":["import React, {CSSProperties} from \"react\";\nimport {Form, FormItemProps} from \"antd\"\nimport \"../../style/form/niceFormItem.css\"\n\nexport interface NiceFormItemProps extends FormItemProps {\n border?: boolean\n disabled?: boolean\n labelStyle?: CSSProperties\n}\n\nexport interface NiceFormItemState {\n}\n\nexport class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {\n constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps) {\n super(props);\n }\n\n render() {\n const {label, children, border, disabled, className, labelStyle, ...rest} = this.props;\n const eLabelStyle = !!labelStyle ? {...labelStyle} : (disabled ? {} : undefined);\n if (!!eLabelStyle && disabled && !eLabelStyle?.background) {\n eLabelStyle.background = \"transparent\";\n }\n const classNames = \"nice-form-item\" + (className ?? \"\")\n return (\n <Form.Item {...rest} className={classNames}>\n <div className=\"nice-float-label\">\n {border ? <section className=\"nice-form-item-box\">{children}</section> : children}\n <label className=\"nice-label nice-label-float\" style={eLabelStyle}>{label}</label>\n </div>\n </Form.Item>);\n }\n}"]}
@@ -244,7 +244,7 @@ export default class DataGrid extends React.Component {
244
244
  "dateTimeColumn": {
245
245
  cellRenderer: (params) => {
246
246
  const value = DataGrid.getCellValue(params);
247
- if (value !== undefined) {
247
+ if (value) {
248
248
  if (value === D2000UnixTimeNullValue) {
249
249
  return "Null Time";
250
250
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataGrid.js","sourceRoot":"","sources":["../../../../components/grid/dataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\n\nimport {\n ColumnWidthOutlined,\n ControlOutlined,\n DownloadOutlined,\n FileSearchOutlined,\n LoadingOutlined,\n ReloadOutlined,\n SearchOutlined,\n SettingOutlined,\n TableOutlined\n} from \"@ant-design/icons\";\n\nimport {Button, Card, Dropdown, Empty, Input, Menu} from \"antd\";\nimport {AgGridReact} from \"ag-grid-react\";\nimport 'ag-grid-community/dist/styles/ag-grid.css';\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\nimport 'd2coreui/style/ag-grid/aggrid-adaptations.css'\nimport TextColumnFilter from \"d2coreui/components/grid/filter/textColumnFilter\"\nimport CustomColumnFilter from \"d2coreui/components/grid/filter/customColumnFilter\"\nimport SimpleHeader from \"d2coreui/components/grid/header/simpleHeader\"\nimport DataGridEditor from \"d2coreui/components/grid/config/dataGridEditor\";\nimport i18n from \"d2core/i18n/i18n\";\nimport AutoCompleteInput from \"d2coreui/components/input/autoCompleteInput\";\nimport isEqual from \"lodash/isEqual\"\nimport ContextMenu, {ContextMenuProps} from \"d2coreui/components/grid/export/contextMenu\";\nimport LoadingOverlay from \"d2coreui/components/grid/panel/loadingOverlay\";\nimport NoRecordsOverlay from \"d2coreui/components/grid/panel/noRecordsOverlay\";\nimport at from \"lodash/at\"\nimport ColumnTransfer from \"d2coreui/components/grid/config/columnTransfer\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport escape from \"lodash/escape\";\nimport {RangeSelector} from \"d2coreui/components/grid/cell/rangeSelector\"\nimport {WildcardQuickFilter} from \"d2coreui/components/grid/cell/wildcardQuickFilter\";\nimport {\n CellClassParams,\n CellContextMenuEvent,\n CellFocusedEvent,\n CellMouseDownEvent,\n CellPosition,\n ColDef,\n ColDefUtil,\n Column,\n ColumnApi,\n ColumnEvent,\n ColumnState,\n FilterChangedEvent,\n FilterModifiedEvent,\n GetQuickFilterTextParams,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ICellRendererParams,\n IRowModel,\n NavigateToNextCellParams,\n PaginationChangedEvent,\n RowClassParams,\n RowDataUpdatedEvent,\n RowNode,\n RowStyle,\n SortChangedEvent,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n ValueGetterParams,\n ViewportChangedEvent\n} from \"ag-grid-community\";\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\nimport tableDefaultRowStyleRules, {\n GRID_DEFAULT_FONT_SIZE,\n GridRowStyle,\n RowStyleRule\n} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\nimport debounce from \"lodash/debounce\";\nimport {Key} from \"ts-key-enum\";\nimport {ClipboardUtils} from \"d2coreui/components/clipboard/clipboardUtils\";\nimport ProgressPopup from \"d2coreui/components/grid/export/progressPopup\";\nimport TimeUtils from \"d2core/utils/timeUtils\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport NumberCellEditor from \"d2coreui/components/grid/cell/numberCellEditor\";\nimport TextCellEditor from \"d2coreui/components/grid/cell/textCellEditor\";\nimport StatusTextCellEditor from \"d2coreui/components/grid/cell/statusTextCellEditor\";\nimport DateCellEditor from \"d2coreui/components/grid/cell/dateCellEditor\";\nimport memoizeOne from \"memoize-one\";\nimport SimpleStatusTextCellEditor from \"d2coreui/components/grid/cell/simpleStatusTextCellEditor\";\nimport DurationCellEditor from \"d2coreui/components/grid/cell/durationCellEditor\";\nimport CustomEnumCellEditor from \"d2coreui/components/grid/cell/customEnumCellEditor\";\nimport HexaValueCellEditor from \"d2coreui/components/grid/cell/hexaValueCellEditor\";\nimport HexaOctetStringCellEditor from \"d2coreui/components/grid/cell/hexaOctetStringCellEditor\";\nimport ReactDOM from \"react-dom\";\nimport {D2000UnixTimeNullValue, unixTimeToMoment} from \"d2core/types/unixTimeUtils\";\nimport {compileExpression} from \"filtrex\";\nimport DataGridPagination from \"./panel/dataGridPagination\";\n\nconst gridFrameworkComponents = {\n customColumnFilter: CustomColumnFilter,\n textColumnFilter: TextColumnFilter,\n numberCellEditor: NumberCellEditor,\n textCellEditor: TextCellEditor,\n simpleStatusTextCellEditor: SimpleStatusTextCellEditor,\n statusTextCellEditor: StatusTextCellEditor,\n dateCellEditor: DateCellEditor,\n durationCellEditor: DurationCellEditor,\n customEnumCellEditor: CustomEnumCellEditor,\n hexaValueCellEditor: HexaValueCellEditor,\n hexaOctetStringCellEditor: HexaOctetStringCellEditor,\n simpleHeader: SimpleHeader,\n loadingOverlay: LoadingOverlay,\n noRecordsOverlay: NoRecordsOverlay\n};\n\nconst ROW_HEIGHT_DELTA_FROM_FONT_SIZE = 16;\n\nfunction getRowNodeId(item: { id: number | string }): string {\n return item.id + \"\";\n}\n\nconst rowStyleRuleCompiledExpressions: { [key: string]: (parameters: any) => any } = {};\n\n/**\n * Special separator for part of the column which should be exported\n */\nexport const EXPORT_SEPARATOR = \"\\n\";\n\nexport type MenuElement = JSX.Element;\n\nconst enum NavigationEventEnum {\n KEYBOARD,\n MOUSE\n}\n\n/**\n * Extended viewport change event\n */\nexport interface DataGridViewportChangedEvent extends ViewportChangedEvent {\n // delta number of rows table moved during paging/scrolling of the table\n // negative number when paged/scrolled backwards to first record, positive number when paged/scrolled forwards to last record\n rowsScrollingDelta: number\n}\n\nexport type SortMode = \"asc\" | \"desc\"\n\n/**\n * Represents sorting definition for one column\n */\nexport interface SortItem {\n colId: string;\n sort: SortMode;\n}\n\ninterface ColumnInfo {\n column: Column,\n displayName: string,\n isDateField: boolean\n isDateTimeField: boolean\n}\n\nexport type FilterRenderer = (value: string, changeValue: (newValue: string) => void, onSearch: () => void) => React.ReactNode\n\n/*\n * Extended table column definition\n */\nexport interface DataGridColDef extends Omit<ColDef, \"cellStyle\"> {\n // localized name of group of columns to which column belongs to\n group: string\n // context of column definition\n context?: any\n\n // override of ag-grid api with undefined styles\n cellStyle?: { [cssProperty: string]: string | number | null } | ((cellClassParams: CellClassParams) => { [cssProperty: string]: string | number | null } | undefined);\n\n\n // custom filter render method\n renderFilter?: FilterRenderer\n}\n\n// prevent logging warning logs of unknown column definition attributes\nColDefUtil.FRAMEWORK_PROPERTIES.push(\"group\", \"context\", \"cellStyle\", \"renderFilter\");\n\nexport interface DataGridFilterProps {\n // flag if floating filters (beneath column headers) are visible\n columnSearchVisible?: boolean\n // visibility handler for floating filters\n onColumnSearchVisible?: (visible: boolean) => void\n\n // returns floating filters (beneath column headers) current model (essential when filters should be pre-filled when shown from e.g. searchbox)\n getFilterModel?(): any\n\n // floating filter changed event (e.g. when pressing enter in floating filter textbox)\n onFilterChanged?(event: FilterChangedEvent): void;\n\n // floating filter modify event (e.g. when modifying value in floating filter textbox)\n onFilterModified?(event: FilterModifiedEvent): void;\n\n // method called when enter is pressed in the floating filter\n onFilterConfirmed?(): void\n}\n\nexport interface DataGridSearchProps {\n // placeholder to show in search field when no value is entered\n placeholder?: string\n // current search string\n searchString?: string\n // current search history available for search field popup\n searchHistory?: string[]\n // custom search button class name\n searchButtonClassName?: string\n // search button disabled\n searchButtonDisabled?: boolean\n // hide searchbox\n hidden?: boolean\n\n // custom search field renderer\n searchRenderer?(): React.ReactNode\n\n // disable searchbox\n inputReadonly?: boolean\n\n // formatting showed strings in search and history\n stringFormatter?(rawString: string): string\n\n // search field value changed\n onChange?(searchString: string): void\n\n // called when new search is invoked by pressing search button or enter in the search field\n onSearch?(): void\n}\n\n// callback called when data are loaded from backend\nexport type OnLoadDataCallback = (totalRecords: number) => void\n\n/**\n * Data Grid properties, differences to AgGrid:\n * columnDefinitions (columnDefs) does not support column groups for now\n * paginationPageSize for defining size of page is not available, use paging.pageSize instead\n */\nexport interface DataGridProps extends Omit<GridOptions, \"columnDefs\" | \"paginationPageSize\" | \"getRowStyle\" | \"cellStyle\"> {\n // linking grid options (used for aligned grids feature: https://www.ag-grid.com/javascript-grid-aligned-grids/)\n gridOptions?: GridOptions\n // column definitions\n columnDefs: DataGridColDef[]\n // for aligned grids functionality\n disableColumnDefsPreprocessing?: boolean\n\n // realColumnDefs building handler\n onColumnDefsAdapted?(columnDefs: ColDef[]): void\n\n // shows table configuration panel\n tableConfigVisible?: boolean,\n // shows column configuration panel\n columnsConfigVisible?: boolean,\n // style of panel surrounding datagrid\n panelStyle?: React.CSSProperties,\n // style of panel surrounding table part\n tablePanelStyle?: React.CSSProperties,\n // floating filter configuration\n filter?: DataGridFilterProps\n // search bar configuration\n search?: DataGridSearchProps\n // table paging configuration\n paging: {\n /* current size of table page:\n - value -1 means no paging at all (scrollbar only)\n - value 0 means automatic paging (page size automatically adjusted based on available height for table)\n - value >0 defines statically defined page size (number of rows) for the table\n */\n pageSize: number,\n // default size used when configuration is reverted\n defaultPageSize?: number,\n /**\n * Page size change handler\n * @param currentPageSize - current page size represents number rows available\n * @param definedPageSize -\n */\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\n }\n\n // load data handler - called by grid always when it needs data\n onLoadData(callback: OnLoadDataCallback): void\n\n // automatic focus to first cell of selected row after loading of data is complete\n autofocus?: boolean\n\n // handler for keys pressed in data grid\n onKeyPressed?(event: KeyboardEvent): void\n\n // enter handler\n onEnter?: () => void;\n\n // ids of currently selected rows\n selectedIds?: (number | string)[]\n\n // rules for styling table rows\n rowStyleRules: RowStyleRule[]\n\n // default rules for styling table rows, used when configuration is reverted\n defaultRowStyleRules?: RowStyleRule[]\n\n // row styles change handler\n onChangeRowStyleRules?(rowStyleRules: RowStyleRule[]): void\n\n // extra buttons rendered before the search bar\n toolbar?: {\n // custom renderer for the whole toolbar panel\n renderToolbar?(originalSearchBar: ReactElement): ReactElement\n\n // extra buttons rendered in toolbar\n toolbarButtons?: ReactElement\n\n // hide records count\n hideRecordCount?: boolean\n }\n\n // row height change handler (height is changed from table configuration screen)\n onRowHeightChanged?(rowHeight: number): void\n\n // columns state change handler\n onColumnsChanged?(columnModel: ColumnState[], event: ColumnEvent): void\n\n // table configuration panel visibility change handler\n onTableConfigVisible?(visible: boolean): void\n\n // column configuration panel visibility change handler\n onColumnsConfigVisible?(visible: boolean): void\n\n // customized renderer for displaying loading progress\n loadingOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying no records information\n noRecordsOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying data over table\n tableOverlayRenderer?(): ReactElement | null\n\n showMilliseconds?: boolean\n\n defaultShowMilliseconds?: boolean\n\n onShowMilliseconds?(show: boolean, callback: () => void): void\n\n hideYear?: boolean\n\n defaultHideYear?: boolean\n\n onShowYear?(show: boolean, callback: () => void): void\n\n // export menu configuration\n exportMenu?: {\n // overides export menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom export menu items click\n onClick?(key: string): void\n }\n\n // settings menu configuration\n settingsMenu?: {\n // overides setting menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom settings menu items click\n onClick?(key: string): void\n }\n\n // context menu configuration (right click on the table rows)\n contextMenu?: {\n // overides context menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom context menu items click\n onClick?(key: string): void\n }\n\n // override of ag-grid api with undefined styles\n getRowStyle?(params: any): GridRowStyle | undefined\n}\n\ninterface DataGridState {\n pageIndex: number\n pageSize: number | null\n recordsCount?: number\n columnModel: ColumnState[]\n sortModel: SortItem[]\n tableConfigVisible: boolean\n columnsConfigVisible: boolean\n rowHeight: number\n // interval of record's indexes currently shown (first record has index 1)\n viewport: [number, number]\n contextMenuVisible: boolean\n firstLoadDone: boolean\n loading: boolean\n columnTransferHeight: number\n}\n\n\nexport default class DataGrid extends React.Component<DataGridProps, DataGridState> {\n public static defaultProps = {\n paging: {\n pageSize: 0,\n defaultPageSize: 0\n },\n rowStyleRules: tableDefaultRowStyleRules()\n };\n\n wildcardQuickFilter: WildcardQuickFilter;\n columnTypes: { [key: string]: ColDef };\n gridApi?: GridApi;\n gridColumnApi?: ColumnApi;\n // deep copy of columns state before opening editation of columns and its order\n // used in \"cancel changes\" functionality\n columnModelBeforeEdit?: ColumnState[];\n indexToJump: number | null;\n columnToJump: Column | null;\n lastCellFocus?: CellFocusedEvent;\n lastNavigationEvent?: NavigationEventEnum;\n table_context: any;\n private wrappingDiv: HTMLDivElement | null = null;\n\n constructor(props: Readonly<DataGridProps>) {\n super(props);\n this.state = {\n pageIndex: 0,\n pageSize: null,\n recordsCount: undefined,\n columnModel: [],\n sortModel: [],\n tableConfigVisible: !!this.props.tableConfigVisible,\n columnsConfigVisible: !!this.props.columnsConfigVisible,\n rowHeight: 28,\n viewport: [0, 0],\n contextMenuVisible: false,\n firstLoadDone: false,\n loading: false,\n columnTransferHeight: 500\n };\n this.indexToJump = null;\n this.columnToJump = null;\n\n this.onGridReady = this.onGridReady.bind(this);\n this.onPaginationChanged = this.onPaginationChanged.bind(this);\n this.onViewportChanged = this.onViewportChanged.bind(this);\n this.onCellContextMenu = this.onCellContextMenu.bind(this);\n this.onCellFocused = this.onCellFocused.bind(this);\n this.onCellMouseDown = this.onCellMouseDown.bind(this);\n this.setFocusedCellDebounced = debounce(this.setFocusedCellDebounced.bind(this), 200);\n this.noRecordsOverlayRenderer = this.noRecordsOverlayRenderer.bind(this);\n this.loadingOverlayRenderer = this.loadingOverlayRenderer.bind(this);\n this.changePagination = this.changePagination.bind(this);\n this.onColumnsChanged = this.onColumnsChanged.bind(this);\n this.onFilterModified = this.onFilterModified.bind(this);\n this.onFilterChanged = this.onFilterChanged.bind(this);\n this.onFilterConfirmed = this.onFilterConfirmed.bind(this);\n this.onSortChanged = this.onSortChanged.bind(this);\n this.showTableConfiguration = this.showTableConfiguration.bind(this);\n this.showColumnsConfig = this.showColumnsConfig.bind(this);\n this.navigateToNextCell = this.navigateToNextCell.bind(this);\n this.suppressKeyboardEvent = this.suppressKeyboardEvent.bind(this);\n this.onRowDataUpdated = this.onRowDataUpdated.bind(this);\n this._getRowStyle = this._getRowStyle.bind(this);\n this._getRowHeight = this._getRowHeight.bind(this);\n this._getCellStyle = this._getCellStyle.bind(this);\n this.textCustomComparator = this.textCustomComparator.bind(this);\n this.getExportContent = this.getExportContent.bind(this);\n this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));\n this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));\n this.getCustomFrameworkComponents = memoizeOne(this.getCustomFrameworkComponents.bind(this));\n\n this.table_context = {\n loadingOverlayRenderer: this.loadingOverlayRenderer,\n noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,\n onFilterConfirmed: this.onFilterConfirmed,\n fontSize: this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE,\n lineHeight: this.state.rowHeight - 2\n };\n this.wildcardQuickFilter = new WildcardQuickFilter();\n\n this.columnTypes = {\n \"localizedArrayColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return null;\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return \"\";\n }\n },\n \"numberColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n }\n },\n \"dateColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n if (value === D2000UnixTimeNullValue) {\n return \"---\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear))}</span>`\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"\";\n }\n },\n \"dateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n if (value === D2000UnixTimeNullValue) {\n return \"Null Time\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds))}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"fromNowDateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).fromNow()}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"escapedValueColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return `<span style=\"white-space: pre\" title=\"${escape(value)}\">${typeof value === \"string\" ? escape(value.replace(/[\\r\\n]+/g, ' ')) : value}</span>`;\n } else {\n return \"\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return typeof value === \"string\" ? value.replace(/[\\r\\n]+/g, ' ') : value;\n } else {\n return \"\";\n }\n }\n },\n \"textColumnFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"textColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"customColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"customColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"alignRight\": {}\n };\n }\n\n private static getCellValue<V>(props: any): V | undefined {\n if (props) {\n if (props.colDef.field && typeof props.getValue === \"function\") {\n return props.getValue(props.colDef.field);\n }\n if (props.data && props.colDef && props.colDef.field) {\n return at<V>(props.data, props.colDef.field)[0];\n }\n if (props.value !== undefined) {\n return props.value;\n }\n }\n\n return undefined;\n }\n\n textCustomComparator(filter: string, value: any, filterText: string) {\n const filterTextLowerCase = filterText.toLowerCase();\n const valueLowerCase = value.toString().toLowerCase();\n switch (filter) {\n case 'contains':\n if (filterTextLowerCase.indexOf(\"*\") >= 0 || filterTextLowerCase.indexOf(\"?\") >= 0) {\n const wildcardFilterRegExp = this.wildcardQuickFilter.getWildcardFilterRegExp(filterTextLowerCase);\n if (wildcardFilterRegExp) {\n return wildcardFilterRegExp.test(valueLowerCase);\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n case 'notContains':\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\n case 'equals':\n return valueLowerCase === filterTextLowerCase;\n case 'notEqual':\n // noinspection EqualityComparisonWithCoercionJS\n return valueLowerCase != filterTextLowerCase;\n case 'startsWith':\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\n case 'endsWith':\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n }\n\n componentDidUpdate(prevProps: DataGridProps) {\n if (!this.gridApi) {\n return;\n }\n if (this.props.filter && prevProps.filter && this.props.filter.columnSearchVisible !== prevProps.filter.columnSearchVisible) {\n setTimeout(() => {\n if (this.gridApi) {\n this.gridApi.refreshHeader();\n if (this.props.filter && !this.props.filter.columnSearchVisible) {\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n }\n }, 0);\n }\n // functionality when all data are loaded to table\n if (this.props.rowData && this.props.rowData !== prevProps.rowData) {\n // keep filter model when data are changed\n if (this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n this.gridApi.onFilterChanged();\n }\n // keep sorting model when data are changed\n this.setSortModel(this.state.sortModel);\n this.gridApi.refreshClientSideRowModel(\"group\");\n this.gridApi.redrawRows();\n\n // keep selected rows when data are changed and rows are still present\n const selectedObjectsVisibleInGrid = this.props.rowData.filter((object) => {\n return this.props.selectedIds ? this.props.selectedIds.indexOf(object.id) >= 0 : false;\n });\n if (selectedObjectsVisibleInGrid.length > 0) {\n selectedObjectsVisibleInGrid.forEach((object) => {\n const rowNode = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\n if (rowNode && !rowNode.isSelected()) {\n rowNode.setSelected(true, true);\n }\n });\n } else {\n this.gridApi.deselectAll();\n }\n }\n // functionality when chunks of data are dynamically loaded from server\n if (this.props.datasource && this.props.datasource !== prevProps.datasource) {\n // resets grid data\n this.gridApi.setDatasource(this.props.datasource);\n }\n this.updateRowHeight();\n }\n\n public setColumnState(columnModel: ColumnState[]) {\n const columnStates: ColumnState[] = [];\n if (columnModel) {\n columnModel.forEach((item: ColumnState) => {\n const columnState = {...item};\n item.sortIndex = undefined;\n item.sort = undefined\n columnStates.push(columnState);\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnStates, defaultState: {sort: null}, applyOrder: true});\n }\n\n public setSortModel(sortModel: SortItem[]) {\n const columnState: ColumnState[] = [];\n if (sortModel) {\n sortModel.forEach((item: any, index: number) => {\n columnState.push({\n colId: item.colId,\n sort: item.sort,\n sortIndex: index\n });\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnState, defaultState: {sort: null}, applyOrder: true});\n }\n\n public getSortModel(): SortItem[] {\n const columnState = this.gridColumnApi?.getColumnState() ?? [];\n const filteredStates = columnState?.filter(item => item.sort != null);\n const indexes: { [colId: string]: number; } = {};\n filteredStates.forEach((state) => {\n if (state.colId) {\n indexes[state.colId] = state.sortIndex as number;\n }\n });\n const res = filteredStates.map(s => {\n return {colId: s.colId, sort: s.sort} as SortItem;\n });\n res.sort((a: any, b: any) => indexes[a.colId] - indexes[b.colId]);\n return res;\n\n }\n\n updateRowHeight() {\n let rowHeight = this.calculateRowHeight(this.props.rowStyleRules);\n if (rowHeight && rowHeight !== this.state.rowHeight) {\n this.changeRowHeight(rowHeight);\n }\n }\n\n calculateRowHeight(rowStyleRules?: RowStyleRule[]): number | undefined {\n let rowHeight;\n if (rowStyleRules) {\n for (let i = 0; i < rowStyleRules.length; i++) {\n if (rowStyleRules[i].key === \"table-font-size\") {\n const currentFontSize = rowStyleRules[i].style.fontSize;\n if (typeof currentFontSize === \"number\") {\n rowHeight = (currentFontSize ? currentFontSize : GRID_DEFAULT_FONT_SIZE) + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n } else {\n rowHeight = GRID_DEFAULT_FONT_SIZE + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n }\n }\n }\n }\n return rowHeight;\n }\n\n /**\n * Handling setting table gridEditor\n */\n static getDerivedStateFromProps(props: DataGridProps, state: DataGridState) {\n const newState: Partial<DataGridState> = {};\n if (props.tableConfigVisible === true || props.tableConfigVisible === false) {\n if (props.tableConfigVisible !== state.tableConfigVisible) {\n newState.tableConfigVisible = props.tableConfigVisible;\n }\n }\n return newState;\n }\n\n onGridReady(gridReadyEvent: GridReadyEvent): void {\n const gridApi = gridReadyEvent.api;\n const gridColumnApi = gridReadyEvent.columnApi;\n if (!this.gridApi || this.gridApi !== gridApi) {\n // row selection plugin hook\n const rangeSelector = new RangeSelector(this.wrappingDiv);\n rangeSelector.init(gridApi, gridColumnApi);\n // altered quick filter hook for supporting wildcard matching\n this.wildcardQuickFilter.adaptFilterEngine(gridApi);\n this.gridApi = gridApi;\n this.gridColumnApi = gridColumnApi;\n if (this.props.onGridReady) {\n this.props.onGridReady(gridReadyEvent);\n }\n this.setState({\n sortModel: this.getSortModel(),\n columnModel: this.gridColumnApi.getColumnState(),\n });\n this.updateRowHeight();\n }\n }\n\n onPaginationChanged(event: PaginationChangedEvent) {\n if (!this.gridApi) {\n this.onGridReady({type: \"gridReady\", api: event.api, columnApi: event.columnApi});\n }\n if (this.gridApi) {\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const currentPageSize = this.gridApi.paginationGetPageSize();\n let recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n // process only when onGridReady passed\n if (this.state.pageSize !== currentPageSize) {\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);\n }\n if (!this.state.firstLoadDone) {\n this.loadData();\n this.setState({firstLoadDone: true});\n }\n }\n this.setState({pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage});\n if (this.indexToJump !== null && this.columnToJump !== null) {\n this.gridApi.setFocusedCell(this.indexToJump, this.columnToJump);\n this.indexToJump = null;\n }\n }\n if (this.props.onPaginationChanged) {\n this.props.onPaginationChanged(event);\n }\n }\n\n onViewportChanged(event: ViewportChangedEvent) {\n const dataGridEvent = event as DataGridViewportChangedEvent;\n // calculation of the flag that last record is shown\n const rowsScrollingDelta = this.state.viewport[1] ? event.lastRow + 1 - this.state.viewport[1] : event.lastRow + 1;\n dataGridEvent.rowsScrollingDelta = rowsScrollingDelta;\n this.setState({viewport: [event.firstRow + 1, event.lastRow + 1]});\n if (this.props.onViewportChanged) {\n this.props.onViewportChanged(event);\n }\n }\n\n changePagination(pageSize: number): void {\n if (!this.gridApi) {\n return;\n }\n const gridApiWithPrivateAccess = this.gridApi as any;\n if (pageSize > 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n this.gridApi.paginationSetPageSize(pageSize);\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(pageSize, pageSize);\n }\n } else if (pageSize === 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', true);\n // handling AG-Grid bug caused by different previous pageSize state\n const rowHeight = gridApiWithPrivateAccess.gridOptionsWrapper.getRowHeightAsNumber();\n // const rowHeight = this.state.rowHeight;\n const bodyHeight = gridApiWithPrivateAccess.ctrlsService.centerRowContainerCtrl.viewportSizeFeature.getBodyHeight();\n let availablePageSize = 1000;\n if (bodyHeight > 0) {\n availablePageSize = Math.floor(bodyHeight / rowHeight);\n }\n if (this.props.paging.pageSize > availablePageSize) {\n this.gridApi.paginationSetPageSize(1);\n } else {\n // special hack to remove setting page size\n this.gridApi.paginationSetPageSize(null as unknown as number);\n }\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, 0);\n }\n } else {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', false);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, -1);\n }\n }\n }\n\n showMilliseconds(showMilis: boolean) {\n this.props.onShowMilliseconds?.(showMilis, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n showYear(showYear: boolean) {\n this.props.onShowYear?.(showYear, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n changeRowHeight(rowHeight: number) {\n this.setState({rowHeight: rowHeight}, () => {\n if (this.gridApi) {\n if (this.props.headerHeight === undefined) {\n this.gridApi.setHeaderHeight(rowHeight + 4);\n }\n if (this.props.floatingFiltersHeight === undefined) {\n this.gridApi.setFloatingFiltersHeight(rowHeight + 4);\n }\n (this.gridApi as any).gridOptionsWrapper.setProperty('rowHeight', rowHeight);\n this.gridApi.resetRowHeights();\n this.gridApi.refreshHeader();\n this.gridApi.redrawRows();\n if (this.props.rowModelType === \"infinite\" && this.props.datasource) {\n // redraws all server side loaded table data\n this.gridApi.setDatasource(this.props.datasource)\n }\n }\n if (this.props.onRowHeightChanged) {\n this.props.onRowHeightChanged(rowHeight);\n }\n });\n }\n\n onGoToPage(pageIndex: number) {\n if (this.gridApi) {\n this.gridApi.paginationGoToPage(pageIndex);\n }\n }\n\n loadData(callback?: () => void) {\n if (!this.gridApi) {\n return;\n }\n this.setState({loading: true});\n if (!this.props.loadingOverlayRenderer) {\n this.gridApi.showLoadingOverlay();\n }\n this.props.onLoadData((totalRecords) => {\n if (!this.gridApi) {\n return;\n }\n this.gridApi.hideOverlay();\n this.setState({loading: false});\n if (callback) {\n callback();\n }\n if (totalRecords === 0) {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n this.gridApi?.showNoRowsOverlay();\n }, 400);\n }\n if (this.props.autofocus) {\n this.focus();\n }\n });\n }\n\n public focus() {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n const columnModel = this.gridColumnApi?.getColumnState();\n let columnIdToFocus = columnModel?.[0]?.colId || \"name\";\n const selectedNodes = this.gridApi?.getSelectedNodes();\n const selectedRowIndex: number = (selectedNodes && selectedNodes.length > 0 && selectedNodes[selectedNodes.length - 1].rowIndex) || 0;\n this.gridApi?.setFocusedCell(selectedRowIndex, columnIdToFocus);\n }, 200);\n }\n\n isActive(): boolean {\n return !!this.gridApi && !(this.gridApi as any).destroyCalled;\n }\n\n onColumnsChanged(event: ColumnEvent) {\n const columnModel = event.columnApi.getColumnState();\n if (this.props.onColumnsChanged) {\n this.props.onColumnsChanged(columnModel, event);\n }\n this.setState({columnModel: columnModel});\n }\n\n setColumnSearchVisible(visible: boolean) {\n if (this.gridApi && this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n }\n if (this.props.filter && this.props.filter.onColumnSearchVisible) {\n this.props.filter.onColumnSearchVisible(visible);\n }\n }\n\n private onFilterModified(event: FilterModifiedEvent) {\n if (this.props.filter && this.props.filter.onFilterModified) {\n this.props.filter.onFilterModified(event);\n }\n }\n\n private onFilterChanged(event: FilterChangedEvent) {\n if (this.props.filter && this.props.filter.onFilterChanged) {\n this.props.filter.onFilterChanged(event);\n }\n }\n\n private onFilterConfirmed() {\n if (this.props.filter && this.props.filter.onFilterConfirmed) {\n this.props.filter.onFilterConfirmed();\n }\n }\n\n private onSortChanged(event: SortChangedEvent) {\n if (this.props.onSortChanged && this.gridApi) {\n const currentSortModel = this.getSortModel() as SortItem[];\n if (!isEqual(this.state.sortModel, currentSortModel)) {\n // propagate only changes to sorting\n this.setState({sortModel: currentSortModel}, () => {\n if (this.props.onSortChanged) {\n this.props.onSortChanged(event);\n }\n });\n }\n }\n }\n\n showTableConfiguration(show: boolean) {\n if (this.props.onTableConfigVisible) {\n this.props.onTableConfigVisible(show);\n }\n this.setState({tableConfigVisible: show}, () => {\n if (this.gridApi && !this.state.tableConfigVisible) {\n // redrawing rows after closing table configuration panel, probably not required any more,\n // because config panel and table is shown simultaneously\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n }\n });\n }\n\n showColumnsConfig(show: boolean) {\n if (this.props.onColumnsConfigVisible) {\n this.props.onColumnsConfigVisible(show);\n }\n this.columnModelBeforeEdit = cloneDeep(this.state.columnModel);\n this.setState({columnsConfigVisible: show});\n }\n\n private navigateToNextCell(params: NavigateToNextCellParams): CellPosition {\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n var suggestedNextCell = params.nextCellPosition;\n if (!this.gridApi) {\n return suggestedNextCell ?? params.previousCellPosition;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n var previousCell = params.previousCellPosition;\n switch (params.event?.code) {\n case Key.ArrowDown:\n if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n return {\n rowIndex: 0,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n\n }\n break;\n case Key.ArrowUp:\n if ((previousCell.rowIndex - 1) < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n return {\n rowIndex: this.gridApi.getModel().getRowCount() - 1,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n }\n break;\n }\n return suggestedNextCell ?? params.previousCellPosition;\n }\n\n private suppressKeyboardEvent(params: SuppressKeyboardEventParams): boolean {\n if (!this.gridApi) {\n return false;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n switch (params.event.code) {\n case Key.ArrowDown:\n case Key.ArrowUp:\n case Key.ArrowLeft:\n case Key.ArrowRight:\n if (params.editing && params.event.altKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n let indexToJump: number;\n let columnToJump: Column;\n if (params.event.code === Key.ArrowDown) {\n indexToJump = focusedCell.rowIndex + 1;\n columnToJump = focusedCell.column;\n if (indexToJump >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n indexToJump = 0\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowUp) {\n indexToJump = focusedCell.rowIndex - 1;\n columnToJump = focusedCell.column;\n if (indexToJump < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n indexToJump = this.gridApi.getModel().getRowCount() - 1;\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowLeft) {\n this.gridApi.tabToPreviousCell();\n break;\n } else /*Key.ArrowRight*/ {\n this.gridApi.tabToNextCell();\n break;\n }\n }\n }\n break;\n case Key.PageDown:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToNextPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.min(focusedCell.rowIndex + this.gridApi.paginationGetPageSize(), this.gridApi.paginationGetRowCount());\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.PageUp:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToPreviousPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.max(focusedCell.rowIndex - this.gridApi.paginationGetPageSize(), 0);\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.End:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToLastPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = this.gridApi.paginationGetRowCount() - 1;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.Home:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToFirstPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = 0;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case \"KeyA\":\n if (params.event.ctrlKey && !params.editing) {\n var firstRow = this.gridApi.getFirstDisplayedRow();\n var lastRow = this.gridApi.getLastDisplayedRow();\n this.gridApi.deselectAll();\n if (this.props.rowModelType === \"infinite\") {\n for (let i = firstRow; i <= lastRow; i++) {\n this.gridApi.getDisplayedRowAtIndex(i)?.setSelected(true);\n }\n } else {\n this.gridApi.forEachNodeAfterFilter(function (node, index) {\n if (index >= firstRow && index <= lastRow) {\n node.setSelected(true);\n }\n });\n }\n }\n break;\n case \"KeyI\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectId\") ?? this.gridColumnApi?.getColumn(\"id\");\n if (focusedCell && column) {\n const displayedRowAtIndex = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyB\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectName\") ?? this.gridColumnApi?.getColumn(\"name\");\n if (focusedCell && column) {\n const displayedRowAtIndex1 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex1) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex1));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyC\":\n if (params.event.ctrlKey && !params.editing) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n const displayedRowAtIndex2 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex2) {\n ClipboardUtils.copyToClipboard(this.getValue(focusedCell.column, displayedRowAtIndex2, true));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case Key.Enter:\n this.props.onEnter?.();\n break;\n }\n this.props.onKeyPressed?.(params.event);\n return false;\n }\n\n getValue(column: Column, row: RowNode, doNotReplaceNewline?: boolean): string {\n let formattedValue = this.gridApi?.getValue(column, row);\n if (formattedValue && typeof formattedValue === \"string\" && formattedValue.indexOf(EXPORT_SEPARATOR) > 0 && !doNotReplaceNewline) {\n formattedValue = formattedValue.replace(/[\\n\\r]+/, ' ');\n }\n const valueFormatter = column.getColDef().valueFormatter;\n if (valueFormatter) {\n const params: ValueFormatterParams = {\n data: row.data,\n node: row,\n column: column,\n colDef: column.getColDef(),\n api: this.gridApi as GridApi,\n columnApi: (this.gridApi as any).gridOptionsWrapper.columnApi,\n context: (this.gridApi as any).gridOptionsWrapper.getContext(),\n value: formattedValue\n };\n if (typeof valueFormatter === 'function') {\n formattedValue = valueFormatter?.(params);\n } else if (typeof valueFormatter === 'string') {\n formattedValue = at(row.data, valueFormatter)[0];\n }\n }\n return formattedValue;\n }\n\n async getExportContent(progressPopup: ProgressPopup | null, props: ContextMenuProps): Promise<string[][]> {\n if (!this.gridApi) {\n return [];\n }\n const model: IRowModel = this.gridApi.getModel();\n const tableContent: string[][] = [];\n const columns: ColumnInfo[] = (this.gridApi as any).columnModel.getAllDisplayedColumns().map((column: Column) => {\n const columnTypes = column.getColDef().type;\n return {\n column: column,\n displayName: column.getColDef().headerName,\n isDateField: columnTypes && columnTypes.indexOf(\"dateColumn\") >= 0,\n isDateTimeField: columnTypes && columnTypes.indexOf(\"dateTimeColumn\") >= 0\n };\n });\n if (columns.length === 0) {\n return tableContent;\n }\n tableContent.push(columns.map((column) => column.displayName));\n\n let rowCount: number;\n let tableNodes: RowNode[] = [];\n if (model.getType() === \"clientSide\") {\n if (props.onlySelectedNodes) {\n rowCount = 0;\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n if (node.isSelected()) {\n tableNodes.push(node);\n rowCount++;\n }\n });\n } else {\n rowCount = model.getRowCount();\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n tableNodes.push(node);\n });\n }\n } else {\n if (props.onlySelectedNodes) {\n const selectedNodes = this.gridApi.getSelectedNodes();\n rowCount = selectedNodes.length;\n selectedNodes.forEach((node) => {\n tableNodes.push(node);\n });\n tableNodes.sort((a, b) => (a.rowIndex ?? 0) > (b.rowIndex ?? 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1);\n } else {\n const virtualRowCount = model.getRowCount();\n rowCount = virtualRowCount ? virtualRowCount : 0;\n }\n }\n progressPopup?.setRecordCount(rowCount);\n\n let percentStep = Math.floor(rowCount / 100);\n if (percentStep < 100) {\n percentStep = 100;\n }\n\n if (model.getType() === \"clientSide\" || props.onlySelectedNodes) {\n for (let index = 0; index < tableNodes.length; index++) {\n const record: string[] = [];\n columns.forEach((column) => {\n let value = this.getValue(column.column, tableNodes[index]);\n record.push(value);\n });\n tableContent.push(record);\n if (index % percentStep === 0) {\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n } else {\n for (let index = 0; index < rowCount; index++) {\n let row: RowNode | undefined = undefined;\n let record: any[] = [];\n do {\n record = [];\n do {\n row = model.getRow(index);\n if (!row) {\n await TimeUtils.sleep(100);\n }\n } while (!row);\n columns.forEach((column) => {\n record.push(this.getValue(column.column, row as RowNode));\n });\n if (record.filter((cell) => !!cell).length === 0) {\n await TimeUtils.sleep(100);\n }\n } while (record.filter((cell) => !!cell).length === 0);\n tableContent.push(record);\n if (index % percentStep === 0) {\n // noinspection ES6MissingAwait\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n }\n // noinspection ES6MissingAwait\n progressPopup?.update(99);\n await TimeUtils.sleep(300);\n return tableContent;\n }\n\n onCellFocused(event: CellFocusedEvent) {\n const row: RowNode | undefined = event.rowIndex !== null ? this.gridApi?.getDisplayedRowAtIndex(event.rowIndex) : undefined;\n if (row) {\n if (this.lastNavigationEvent === NavigationEventEnum.KEYBOARD && KeyboardUtils.isKeyPressed(Key.Shift) && this.lastCellFocus && this.lastCellFocus.rowIndex !== event.rowIndex) {\n // focusing new row with SHIFT key pressed\n if (!row.isSelected()) {\n // add to selection\n row.setSelected(true, false);\n } else if (this.lastCellFocus?.rowIndex !== null) {\n const lastFocusedRow: RowNode | undefined = this.gridApi?.getDisplayedRowAtIndex(this.lastCellFocus.rowIndex);\n if (lastFocusedRow?.isSelected()) {\n lastFocusedRow.setSelected(false, false);\n }\n }\n } else if (!row.isSelected() && !KeyboardUtils.isKeyPressed(Key.Control) && !KeyboardUtils.isKeyPressed(Key.Shift)) {\n row.setSelected(true, true);\n }\n }\n this.props.onCellFocused?.(event);\n this.lastCellFocus = event;\n }\n\n onCellMouseDown(e: CellMouseDownEvent) {\n this.lastNavigationEvent = NavigationEventEnum.MOUSE;\n // always focus clicked cell (also when using shift key)\n if (e.rowIndex !== null) {\n this.setFocusedCellDebounced(e.rowIndex, e.column, e.rowPinned !== null ? e.rowPinned : undefined);\n }\n this.props.onCellMouseDown?.(e);\n }\n\n setFocusedCellDebounced(rowIndex: number, column: string | Column, rowPinned: string | undefined) {\n this.gridApi?.setFocusedCell(rowIndex, column, rowPinned);\n }\n\n private onCellContextMenu(event: CellContextMenuEvent) {\n this.setState({contextMenuVisible: !!event});\n if (event.node) {\n if (!event.node.isSelected()) {\n event.node.setSelected(true, true, false);\n }\n }\n }\n\n private loadingOverlayRenderer(): ReactElement {\n if (this.props.loadingOverlayRenderer) {\n const loadingOverlay = this.props.loadingOverlayRenderer();\n if (loadingOverlay) {\n return loadingOverlay;\n }\n }\n return <div><LoadingOutlined style={{fontSize: 40, color: \"#1890ff\"}}/></div>;\n }\n\n private noRecordsOverlayRenderer(): ReactElement {\n if (this.props.noRecordsOverlayRenderer) {\n const noRecordsOverlay = this.props.noRecordsOverlayRenderer();\n if (noRecordsOverlay) {\n return noRecordsOverlay;\n }\n }\n return (\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}>\n <Button type=\"primary\" onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n <SearchOutlined/> {i18n(\"Search\")}\n </Button>\n </Empty>\n );\n }\n\n private onRowDataUpdated(event: RowDataUpdatedEvent) {\n if (!this.gridApi) {\n return;\n }\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n this.setState({recordsCount: recordsCount, pageIndex: currentPage});\n if (this.props.onRowDataUpdated) {\n this.props.onRowDataUpdated(event);\n }\n }\n\n private static EMPTY_STYLE: RowStyle = {}\n\n _getRowStyle(params: RowClassParams): RowStyle {\n const rowStyleRules = this.props.rowStyleRules;\n if (rowStyleRules) {\n const style: any = {};\n rowStyleRules.forEach((rowStyleRule) => {\n if (rowStyleRule.expression) {\n if (!rowStyleRuleCompiledExpressions[rowStyleRule.expression]) {\n rowStyleRuleCompiledExpressions[rowStyleRule.expression] = compileExpression(rowStyleRule.expression);\n }\n if (rowStyleRuleCompiledExpressions[rowStyleRule.expression](params.node.data)) {\n Object.assign(style, rowStyleRule.style);\n }\n } else {\n Object.assign(style, rowStyleRule.style);\n }\n });\n if (!style.color) {\n style.color = null;\n } else if (typeof style.color === \"object\") {\n style.color = `rgba(${style.color.r},${style.color.g},${style.color.b},${style.color.a})`;\n }\n if (!style.backgroundColor) {\n style.backgroundColor = \"inherit\";\n } else if (typeof style.backgroundColor === \"object\") {\n style.backgroundColor = `rgba(${style.backgroundColor.r},${style.backgroundColor.g},${style.backgroundColor.b},${style.backgroundColor.a})`;\n }\n if (!style.fontWeight) {\n style.fontWeight = \"inherit\";\n }\n if (style.fontSize) {\n const lineHeight = style.fontSize + ROW_HEIGHT_DELTA_FROM_FONT_SIZE - 2;\n style.fontSize = style.fontSize + \"px\";\n style.lineHeight = lineHeight + \"px\";\n } else {\n style.fontSize = \"inherit\";\n }\n if (this.props.getRowStyle) {\n const rowStyle = this.props.getRowStyle(params);\n if (rowStyle) {\n return Object.assign(style, rowStyle) as RowStyle;\n }\n }\n return style as RowStyle;\n }\n return DataGrid.EMPTY_STYLE;\n }\n\n _getRowHeight(): number {\n return this.state.rowHeight;\n }\n\n _getCellStyle(params: { colDef: ColDef }) {\n const fontSize = this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n const cellStyles: { [key: string]: any } = {\"font-size\": fontSize + \"px\"};\n if (params.colDef.type && params.colDef.type.indexOf(\"alignRight\") >= 0) {\n cellStyles[\"text-align\"] = \"right\";\n }\n if (params.colDef.cellRendererParams?.originalCellStyle) {\n const originalCellStylesOrHandler = params.colDef.cellRendererParams.originalCellStyle as {} | ((params: any) => {});\n if (typeof originalCellStylesOrHandler === \"object\") {\n Object.assign(cellStyles, originalCellStylesOrHandler);\n } else if (typeof originalCellStylesOrHandler === \"function\") {\n const originalCellStyles = originalCellStylesOrHandler(params);\n if (originalCellStyles) {\n Object.assign(cellStyles, originalCellStyles);\n }\n }\n }\n return cellStyles;\n }\n\n getDefaultColDefinition(colDef: ColDef | undefined): ColDef {\n if (colDef) {\n return {...colDef, suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n } else {\n return {suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n }\n }\n\n private getCustomFrameworkComponents(frameworkComponents: any) {\n let customFrameworkComponents = gridFrameworkComponents;\n if (frameworkComponents) {\n customFrameworkComponents = Object.assign(gridFrameworkComponents, frameworkComponents);\n }\n return customFrameworkComponents;\n }\n\n renderNavigationPanel(): ReactElement {\n return (\n <React.Fragment>\n {this.props.toolbar && this.props.toolbar.renderToolbar ? this.props.toolbar.renderToolbar(this.renderToolBarWithSearch()) : this.renderToolBarWithSearch()}\n {this.props.paging.pageSize >= 0 &&\n <DataGridPagination\n disabled={this.state.loading}\n current={this.state.pageIndex ? this.state.pageIndex + 1 : 1}\n pageSize={this.state.pageSize ? this.state.pageSize : 20}\n total={this.state.recordsCount ?? 1}\n onGoToPage={page => {\n this.onGoToPage(page - 1);\n }}\n />}\n {this.props.paging.pageSize < 0 && this.state.recordsCount && !this.props.toolbar?.hideRecordCount ?\n <span className=\"ant-pagination-total-text\" style={{\n flex: \"0 1 auto\",\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n marginLeft: \"24px\"\n }}>{`${this.state.viewport[0]}-${this.state.viewport[1]} ${i18n('of')} ${this.state.recordsCount}`}</span>\n : undefined}\n </React.Fragment>\n );\n }\n\n renderToolBarWithSearch(): ReactElement {\n return (\n <Input.Group key=\"filter-panel\" compact size=\"default\"\n style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\n {this.props.toolbar?.toolbarButtons}\n <Dropdown trigger={[\"click\"]} overlay={\n <ContextMenu showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.exportMenu?.renderer}\n onClick={this.props.exportMenu?.onClick}\n getExportContent={this.getExportContent}\n />}\n disabled={this.state.loading}>\n <Button title={i18n(\"Export\")}>\n <DownloadOutlined/>\n </Button>\n </Dropdown>\n\n <Dropdown trigger={[\"click\"]}\n overlay={this.renderSettingsMenu()}>\n <Button\n title={i18n(\"Extended table features\")}\n disabled={this.state.loading}>\n <TableOutlined/>\n </Button>\n </Dropdown>\n {!this.props.search?.hidden && !this.props.search?.searchRenderer && <AutoCompleteInput\n style={{minWidth: 100, flexGrow: 1}}\n placeholder={this.props.search ? this.props.search.placeholder : undefined}\n stringFormatter={this.props.search ? this.props.search.stringFormatter : undefined}\n value={this.props.search ? this.props.search.searchString : undefined}\n inputReadonly={this.props.search ? this.props.search.inputReadonly : undefined}\n options={this.props.search ? this.props.search.searchHistory : undefined}\n onChange={this.props.search ? this.props.search.onChange : undefined}\n onSearch={this.props.search ? this.props.search.onSearch : undefined}\n disabled={this.state.loading || (this.props.filter && this.props.filter.columnSearchVisible)}\n />}\n {this.props.search?.searchRenderer?.()}\n <Button title={this.props.search?.hidden ? i18n(\"Refresh\") : i18n(\"Search\")}\n className={\"search-btn \" + (this.props.search && this.props.search.searchButtonClassName ? this.props.search.searchButtonClassName : \"\")}\n disabled={this.props.search?.searchButtonDisabled}\n type=\"primary\"\n onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n {this.state.loading ? <LoadingOutlined/> : (this.props.search?.hidden ? <ReloadOutlined/> :\n <SearchOutlined/>)}\n </Button>\n </Input.Group>\n );\n }\n\n renderSettingsMenu(): ReactElement {\n let menuItems: MenuElement[] = [\n <Menu.Item key=\"columnFilter\"\n icon={<FileSearchOutlined/>}\n className={this.props.filter && this.props.filter.columnSearchVisible ? \"ant-dropdown-menu-item-selected\" : \"\"}\n title={i18n(\"Turn on/off column filter\")}>\n {i18n(\"Column Filter\")}\n </Menu.Item>,\n <Menu.Item key=\"autosizeAllColumns\" icon={<ColumnWidthOutlined/>}>\n {i18n(\"Autosize All Columns\")}\n </Menu.Item>,\n <Menu.Item key=\"columnsConfig\" icon={<ControlOutlined/>}>\n {i18n(\"Columns Configuration\")}\n </Menu.Item>,\n <Menu.Divider key=\"columnsAndAdvancedConfigDivider\"/>,\n <Menu.Item key=\"advancedConfig\" icon={<SettingOutlined/>}>\n {i18n(\"Advanced Settings\")}\n </Menu.Item>\n ];\n\n if (this.props.settingsMenu?.renderer) {\n menuItems = this.props.settingsMenu.renderer(menuItems);\n }\n\n return <Menu onClick={({key}) => {\n switch (key) {\n case \"columnFilter\":\n const visible = !(this.props.filter && this.props.filter.columnSearchVisible);\n this.setColumnSearchVisible(visible);\n break;\n case \"autosizeAllColumns\":\n this.gridColumnApi?.autoSizeAllColumns();\n break;\n case \"columnsConfig\":\n this.showColumnsConfig(true);\n break;\n case \"advancedConfig\":\n this.showTableConfiguration(true);\n break;\n default:\n if (this.props.settingsMenu?.onClick) {\n this.props.settingsMenu.onClick(key + \"\");\n }\n }\n }}>\n {menuItems}\n </Menu>;\n }\n\n private renderContextMenu(): ReactElement {\n return <ContextMenu onlySelectedNodes={true}\n showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.contextMenu?.renderer}\n onClick={this.props.contextMenu?.onClick}\n getExportContent={this.getExportContent}\n hideNotificationOnClipboardCopy\n />;\n }\n\n private getAdaptedColumnDefs(columnDefs: DataGridColDef[], floatingFilterEnabled: boolean | undefined, disableColumnDefsPreprocessing: boolean) {\n if (columnDefs.length === 0) {\n return undefined;\n }\n if (disableColumnDefsPreprocessing) {\n return columnDefs;\n }\n const adaptedColumnDefs = columnDefs ? columnDefs.map((columnDef) => {\n const {group, floatingFilter, hide, ...rest} = columnDef as DataGridColDef;\n let floatingFilterEnabledForColumn = !!floatingFilter;\n if (typeof columnDef.type === \"string\") {\n if (!!(this.columnTypes[columnDef.type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n } else {\n columnDef.type?.forEach((type) => {\n if (!!(this.columnTypes[type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n });\n\n }\n return {\n ...rest,\n floatingFilter: floatingFilterEnabledForColumn && floatingFilterEnabled,\n resizable: true,\n headerComponent: \"simpleHeader\",\n headerComponentParams: {\n onColumnsConfigVisible: this.showColumnsConfig\n },\n hide: hide === undefined ? rest.initialHide : hide,\n cellStyle: this._getCellStyle,\n cellRendererParams: columnDef.cellStyle ? {originalCellStyle: columnDef.cellStyle} : undefined\n };\n }) : undefined;\n if (adaptedColumnDefs) {\n setTimeout(() => {\n this.props.onColumnDefsAdapted?.(adaptedColumnDefs);\n }, 0);\n }\n return adaptedColumnDefs;\n }\n\n render() {\n const {\n onGridReady,\n columnDefs, disableColumnDefsPreprocessing, onColumnsChanged,\n paging, onPaginationChanged, onViewportChanged,\n selectedIds,\n search, toolbar,\n filter, onFilterChanged, onFilterModified, onCellFocused,\n onSortChanged, frameworkComponents,\n tableConfigVisible, onTableConfigVisible,\n noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated,\n rowStyleRules, onChangeRowStyleRules,\n defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear,\n suppressLoadingOverlay, defaultColDef, headerHeight,\n ...passedProperties\n } = this.props;\n let key: string;\n let paginationPageSize: number | undefined = undefined;\n if (paging.pageSize > 0) {\n paginationPageSize = paging.pageSize;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else if (paging.pageSize === 0) {\n passedProperties.paginationAutoPageSize = true;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else {\n // pagination is disabled\n passedProperties.pagination = false;\n key = \"non-paginated-table\";\n }\n\n // nejde\n const floatingFilterEnabled = !!filter && !!filter.columnSearchVisible;\n const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);\n\n const customFrameworkComponents = this.getCustomFrameworkComponents(frameworkComponents);\n const debugMode = process.env.NODE_ENV === 'development';\n const panelStyle = {\n display: \"flex\",\n flexFlow: \"column\",\n height: \"100%\",\n width: \"100%\",\n paddingBottom: 8,\n };\n if (this.props.panelStyle) {\n Object.assign(panelStyle, this.props.panelStyle);\n }\n const tablePanelStyle = {flex: \"1 1 auto\", marginTop: 16, overflow: \"auto\"};\n if (this.props.tablePanelStyle) {\n Object.assign(tablePanelStyle, this.props.tablePanelStyle);\n }\n\n return (\n <React.Fragment>\n <Card size=\"small\" bordered={false}\n style={{height: \"100%\"}}\n bodyStyle={panelStyle}>\n <div style={{display: \"flex\"}}>\n {this.renderNavigationPanel()}\n </div>\n <div style={tablePanelStyle}>\n <Dropdown trigger={[\"contextMenu\"]}\n getPopupContainer={() => {\n // very nasty trick how remove error of ResizeObservers infinite cycling - because popover (with dynamic size) is placed in in resizable panel\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\n }}\n overlay={this.renderContextMenu()}\n overlayStyle={!this.state.contextMenuVisible ? {display: \"none\"} : undefined}\n onVisibleChange={(visible) => {\n if (!visible) {\n this.setState({contextMenuVisible: false});\n }\n }}\n >\n <div className=\"ag-theme-balham\" style={{width: \"100%\", height: \"100%\"}}\n ref={(wrapingDiv) => {\n this.wrappingDiv = wrapingDiv;\n }}>\n <AgGridReact\n key={key}\n debug={debugMode}\n paginationPageSize={paginationPageSize}\n maxConcurrentDatasourceRequests={this.props.rowModelType === \"infinite\" ? 1 : undefined}\n onGridReady={this.onGridReady}\n onPaginationChanged={this.onPaginationChanged}\n onFilterModified={this.onFilterModified}\n onFilterChanged={this.onFilterChanged}\n onSortChanged={this.onSortChanged}\n defaultColDef={this.getDefaultColDefinition(defaultColDef)}\n columnDefs={adaptedColumnDefs as ColDef[]}\n {...passedProperties}\n onCellFocused={this.onCellFocused}\n suppressPaginationPanel={true}\n getRowNodeId={getRowNodeId}\n frameworkComponents={customFrameworkComponents}\n columnTypes={this.columnTypes}\n onColumnVisible={this.onColumnsChanged}\n onColumnPinned={this.onColumnsChanged}\n onColumnResized={this.onColumnsChanged}\n onColumnMoved={this.onColumnsChanged}\n onCellMouseDown={this.onCellMouseDown}\n navigateToNextCell={this.navigateToNextCell}\n onViewportChanged={this.onViewportChanged}\n onCellContextMenu={this.onCellContextMenu}\n loadingOverlayComponent='loadingOverlay'\n noRowsOverlayComponent='noRecordsOverlay'\n onRowDataUpdated={this.onRowDataUpdated}\n context={this.table_context}\n rowHeight={this.state.rowHeight}\n getRowStyle={this._getRowStyle}\n getRowHeight={this._getRowHeight}\n headerHeight={headerHeight !== undefined ? headerHeight : this.state.rowHeight + 4}\n floatingFiltersHeight={this.state.rowHeight + 4}\n suppressLoadingOverlay={this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay}\n >\n </AgGridReact>\n {this.state.loading && this.props.loadingOverlayRenderer &&\n <div className=\"ag-overlay\" aria-hidden=\"true\" ref=\"overlayWrapper\">\n <div className=\"ag-overlay-panel\">\n <div\n className=\"ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper\">\n <div className=\"ag-react-container\">\n {this.props.loadingOverlayRenderer?.()}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </Dropdown>\n {this.props.tableOverlayRenderer?.()}\n </div>\n </Card>\n\n {!!this.gridApi && !!this.gridColumnApi && this.state.pageSize !== null &&\n <DataGridEditor dataGrid={this}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n columnDefinitions={columnDefs}\n columnModel={this.state.columnModel}\n visible={!!this.props.tableConfigVisible}\n onTableConfigVisible={this.showTableConfiguration}\n paginationPageSize={paging.pageSize}\n paginationDefaultPageSize={paging.defaultPageSize}\n currentPageSize={this.state.pageSize}\n showMilliseconds={!!this.props.showMilliseconds}\n defaultShowMilliseconds={!!this.props.defaultShowMilliseconds}\n showYear={!this.props.hideYear}\n defaultShowYear={!this.props.defaultHideYear}\n rowStyleRules={this.props.rowStyleRules}\n defaultRowStyleRules={this.props.defaultRowStyleRules}\n onChangeRowStyleRules={onChangeRowStyleRules}\n />}\n\n\n {!!this.gridApi && !!this.gridColumnApi && <ModalDialog\n mode={ModalDialogMode.OK_CANCEL}\n visible={this.state.columnsConfigVisible}\n initialWidth={700}\n initialHeight={this.state.columnTransferHeight}\n title={<span><ControlOutlined style={{\n color: \"#faad14\",\n fontSize: 22,\n marginRight: 16\n }}/>{i18n(\"Columns Configuration\")}</span>}\n cancelText={i18n(\"Cancel\")}\n onCancel={() => {\n if (this.gridColumnApi && this.columnModelBeforeEdit) {\n this.gridColumnApi.applyColumnState({state: this.columnModelBeforeEdit, applyOrder: true});\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }\n }}\n onOk={() => {\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }}\n onResize={({height}) => {\n this.setState({columnTransferHeight: height});\n }}\n zIndex={100}\n >\n <ColumnTransfer\n columnDefinitions={columnDefs as ColDef[]}\n columnModel={this.state.columnModel}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n height={this.state.columnTransferHeight - 154}\n />\n </ModalDialog>}\n\n </React.Fragment>\n );\n }\n}"]}
1
+ {"version":3,"file":"dataGrid.js","sourceRoot":"","sources":["../../../../components/grid/dataGrid.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {ReactElement} from \"react\";\n\nimport {\n ColumnWidthOutlined,\n ControlOutlined,\n DownloadOutlined,\n FileSearchOutlined,\n LoadingOutlined,\n ReloadOutlined,\n SearchOutlined,\n SettingOutlined,\n TableOutlined\n} from \"@ant-design/icons\";\n\nimport {Button, Card, Dropdown, Empty, Input, Menu} from \"antd\";\nimport {AgGridReact} from \"ag-grid-react\";\nimport 'ag-grid-community/dist/styles/ag-grid.css';\nimport 'ag-grid-community/dist/styles/ag-theme-balham.css';\nimport 'd2coreui/style/ag-grid/aggrid-adaptations.css'\nimport TextColumnFilter from \"d2coreui/components/grid/filter/textColumnFilter\"\nimport CustomColumnFilter from \"d2coreui/components/grid/filter/customColumnFilter\"\nimport SimpleHeader from \"d2coreui/components/grid/header/simpleHeader\"\nimport DataGridEditor from \"d2coreui/components/grid/config/dataGridEditor\";\nimport i18n from \"d2core/i18n/i18n\";\nimport AutoCompleteInput from \"d2coreui/components/input/autoCompleteInput\";\nimport isEqual from \"lodash/isEqual\"\nimport ContextMenu, {ContextMenuProps} from \"d2coreui/components/grid/export/contextMenu\";\nimport LoadingOverlay from \"d2coreui/components/grid/panel/loadingOverlay\";\nimport NoRecordsOverlay from \"d2coreui/components/grid/panel/noRecordsOverlay\";\nimport at from \"lodash/at\"\nimport ColumnTransfer from \"d2coreui/components/grid/config/columnTransfer\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport escape from \"lodash/escape\";\nimport {RangeSelector} from \"d2coreui/components/grid/cell/rangeSelector\"\nimport {WildcardQuickFilter} from \"d2coreui/components/grid/cell/wildcardQuickFilter\";\nimport {\n CellClassParams,\n CellContextMenuEvent,\n CellFocusedEvent,\n CellMouseDownEvent,\n CellPosition,\n ColDef,\n ColDefUtil,\n Column,\n ColumnApi,\n ColumnEvent,\n ColumnState,\n FilterChangedEvent,\n FilterModifiedEvent,\n GetQuickFilterTextParams,\n GridApi,\n GridOptions,\n GridReadyEvent,\n ICellRendererParams,\n IRowModel,\n NavigateToNextCellParams,\n PaginationChangedEvent,\n RowClassParams,\n RowDataUpdatedEvent,\n RowNode,\n RowStyle,\n SortChangedEvent,\n SuppressKeyboardEventParams,\n ValueFormatterParams,\n ValueGetterParams,\n ViewportChangedEvent\n} from \"ag-grid-community\";\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\nimport tableDefaultRowStyleRules, {\n GRID_DEFAULT_FONT_SIZE,\n GridRowStyle,\n RowStyleRule\n} from \"d2coreui/components/grid/cell/tableDefaultRowStyleRules\";\nimport {ModalDialog, ModalDialogMode} from \"d2coreui/components/modal/modalDialog\";\nimport debounce from \"lodash/debounce\";\nimport {Key} from \"ts-key-enum\";\nimport {ClipboardUtils} from \"d2coreui/components/clipboard/clipboardUtils\";\nimport ProgressPopup from \"d2coreui/components/grid/export/progressPopup\";\nimport TimeUtils from \"d2core/utils/timeUtils\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport NumberCellEditor from \"d2coreui/components/grid/cell/numberCellEditor\";\nimport TextCellEditor from \"d2coreui/components/grid/cell/textCellEditor\";\nimport StatusTextCellEditor from \"d2coreui/components/grid/cell/statusTextCellEditor\";\nimport DateCellEditor from \"d2coreui/components/grid/cell/dateCellEditor\";\nimport memoizeOne from \"memoize-one\";\nimport SimpleStatusTextCellEditor from \"d2coreui/components/grid/cell/simpleStatusTextCellEditor\";\nimport DurationCellEditor from \"d2coreui/components/grid/cell/durationCellEditor\";\nimport CustomEnumCellEditor from \"d2coreui/components/grid/cell/customEnumCellEditor\";\nimport HexaValueCellEditor from \"d2coreui/components/grid/cell/hexaValueCellEditor\";\nimport HexaOctetStringCellEditor from \"d2coreui/components/grid/cell/hexaOctetStringCellEditor\";\nimport ReactDOM from \"react-dom\";\nimport {D2000UnixTimeNullValue, unixTimeToMoment} from \"d2core/types/unixTimeUtils\";\nimport {compileExpression} from \"filtrex\";\nimport DataGridPagination from \"./panel/dataGridPagination\";\n\nconst gridFrameworkComponents = {\n customColumnFilter: CustomColumnFilter,\n textColumnFilter: TextColumnFilter,\n numberCellEditor: NumberCellEditor,\n textCellEditor: TextCellEditor,\n simpleStatusTextCellEditor: SimpleStatusTextCellEditor,\n statusTextCellEditor: StatusTextCellEditor,\n dateCellEditor: DateCellEditor,\n durationCellEditor: DurationCellEditor,\n customEnumCellEditor: CustomEnumCellEditor,\n hexaValueCellEditor: HexaValueCellEditor,\n hexaOctetStringCellEditor: HexaOctetStringCellEditor,\n simpleHeader: SimpleHeader,\n loadingOverlay: LoadingOverlay,\n noRecordsOverlay: NoRecordsOverlay\n};\n\nconst ROW_HEIGHT_DELTA_FROM_FONT_SIZE = 16;\n\nfunction getRowNodeId(item: { id: number | string }): string {\n return item.id + \"\";\n}\n\nconst rowStyleRuleCompiledExpressions: { [key: string]: (parameters: any) => any } = {};\n\n/**\n * Special separator for part of the column which should be exported\n */\nexport const EXPORT_SEPARATOR = \"\\n\";\n\nexport type MenuElement = JSX.Element;\n\nconst enum NavigationEventEnum {\n KEYBOARD,\n MOUSE\n}\n\n/**\n * Extended viewport change event\n */\nexport interface DataGridViewportChangedEvent extends ViewportChangedEvent {\n // delta number of rows table moved during paging/scrolling of the table\n // negative number when paged/scrolled backwards to first record, positive number when paged/scrolled forwards to last record\n rowsScrollingDelta: number\n}\n\nexport type SortMode = \"asc\" | \"desc\"\n\n/**\n * Represents sorting definition for one column\n */\nexport interface SortItem {\n colId: string;\n sort: SortMode;\n}\n\ninterface ColumnInfo {\n column: Column,\n displayName: string,\n isDateField: boolean\n isDateTimeField: boolean\n}\n\nexport type FilterRenderer = (value: string, changeValue: (newValue: string) => void, onSearch: () => void) => React.ReactNode\n\n/*\n * Extended table column definition\n */\nexport interface DataGridColDef extends Omit<ColDef, \"cellStyle\"> {\n // localized name of group of columns to which column belongs to\n group: string\n // context of column definition\n context?: any\n\n // override of ag-grid api with undefined styles\n cellStyle?: { [cssProperty: string]: string | number | null } | ((cellClassParams: CellClassParams) => { [cssProperty: string]: string | number | null } | undefined);\n\n\n // custom filter render method\n renderFilter?: FilterRenderer\n}\n\n// prevent logging warning logs of unknown column definition attributes\nColDefUtil.FRAMEWORK_PROPERTIES.push(\"group\", \"context\", \"cellStyle\", \"renderFilter\");\n\nexport interface DataGridFilterProps {\n // flag if floating filters (beneath column headers) are visible\n columnSearchVisible?: boolean\n // visibility handler for floating filters\n onColumnSearchVisible?: (visible: boolean) => void\n\n // returns floating filters (beneath column headers) current model (essential when filters should be pre-filled when shown from e.g. searchbox)\n getFilterModel?(): any\n\n // floating filter changed event (e.g. when pressing enter in floating filter textbox)\n onFilterChanged?(event: FilterChangedEvent): void;\n\n // floating filter modify event (e.g. when modifying value in floating filter textbox)\n onFilterModified?(event: FilterModifiedEvent): void;\n\n // method called when enter is pressed in the floating filter\n onFilterConfirmed?(): void\n}\n\nexport interface DataGridSearchProps {\n // placeholder to show in search field when no value is entered\n placeholder?: string\n // current search string\n searchString?: string\n // current search history available for search field popup\n searchHistory?: string[]\n // custom search button class name\n searchButtonClassName?: string\n // search button disabled\n searchButtonDisabled?: boolean\n // hide searchbox\n hidden?: boolean\n\n // custom search field renderer\n searchRenderer?(): React.ReactNode\n\n // disable searchbox\n inputReadonly?: boolean\n\n // formatting showed strings in search and history\n stringFormatter?(rawString: string): string\n\n // search field value changed\n onChange?(searchString: string): void\n\n // called when new search is invoked by pressing search button or enter in the search field\n onSearch?(): void\n}\n\n// callback called when data are loaded from backend\nexport type OnLoadDataCallback = (totalRecords: number) => void\n\n/**\n * Data Grid properties, differences to AgGrid:\n * columnDefinitions (columnDefs) does not support column groups for now\n * paginationPageSize for defining size of page is not available, use paging.pageSize instead\n */\nexport interface DataGridProps extends Omit<GridOptions, \"columnDefs\" | \"paginationPageSize\" | \"getRowStyle\" | \"cellStyle\"> {\n // linking grid options (used for aligned grids feature: https://www.ag-grid.com/javascript-grid-aligned-grids/)\n gridOptions?: GridOptions\n // column definitions\n columnDefs: DataGridColDef[]\n // for aligned grids functionality\n disableColumnDefsPreprocessing?: boolean\n\n // realColumnDefs building handler\n onColumnDefsAdapted?(columnDefs: ColDef[]): void\n\n // shows table configuration panel\n tableConfigVisible?: boolean,\n // shows column configuration panel\n columnsConfigVisible?: boolean,\n // style of panel surrounding datagrid\n panelStyle?: React.CSSProperties,\n // style of panel surrounding table part\n tablePanelStyle?: React.CSSProperties,\n // floating filter configuration\n filter?: DataGridFilterProps\n // search bar configuration\n search?: DataGridSearchProps\n // table paging configuration\n paging: {\n /* current size of table page:\n - value -1 means no paging at all (scrollbar only)\n - value 0 means automatic paging (page size automatically adjusted based on available height for table)\n - value >0 defines statically defined page size (number of rows) for the table\n */\n pageSize: number,\n // default size used when configuration is reverted\n defaultPageSize?: number,\n /**\n * Page size change handler\n * @param currentPageSize - current page size represents number rows available\n * @param definedPageSize -\n */\n onPaginationChanged?: (currentPageSize: number | null, definedPageSize: number) => void;\n }\n\n // load data handler - called by grid always when it needs data\n onLoadData(callback: OnLoadDataCallback): void\n\n // automatic focus to first cell of selected row after loading of data is complete\n autofocus?: boolean\n\n // handler for keys pressed in data grid\n onKeyPressed?(event: KeyboardEvent): void\n\n // enter handler\n onEnter?: () => void;\n\n // ids of currently selected rows\n selectedIds?: (number | string)[]\n\n // rules for styling table rows\n rowStyleRules: RowStyleRule[]\n\n // default rules for styling table rows, used when configuration is reverted\n defaultRowStyleRules?: RowStyleRule[]\n\n // row styles change handler\n onChangeRowStyleRules?(rowStyleRules: RowStyleRule[]): void\n\n // extra buttons rendered before the search bar\n toolbar?: {\n // custom renderer for the whole toolbar panel\n renderToolbar?(originalSearchBar: ReactElement): ReactElement\n\n // extra buttons rendered in toolbar\n toolbarButtons?: ReactElement\n\n // hide records count\n hideRecordCount?: boolean\n }\n\n // row height change handler (height is changed from table configuration screen)\n onRowHeightChanged?(rowHeight: number): void\n\n // columns state change handler\n onColumnsChanged?(columnModel: ColumnState[], event: ColumnEvent): void\n\n // table configuration panel visibility change handler\n onTableConfigVisible?(visible: boolean): void\n\n // column configuration panel visibility change handler\n onColumnsConfigVisible?(visible: boolean): void\n\n // customized renderer for displaying loading progress\n loadingOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying no records information\n noRecordsOverlayRenderer?(): ReactElement | null\n\n // customized renderer for displaying data over table\n tableOverlayRenderer?(): ReactElement | null\n\n showMilliseconds?: boolean\n\n defaultShowMilliseconds?: boolean\n\n onShowMilliseconds?(show: boolean, callback: () => void): void\n\n hideYear?: boolean\n\n defaultHideYear?: boolean\n\n onShowYear?(show: boolean, callback: () => void): void\n\n // export menu configuration\n exportMenu?: {\n // overides export menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom export menu items click\n onClick?(key: string): void\n }\n\n // settings menu configuration\n settingsMenu?: {\n // overides setting menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom settings menu items click\n onClick?(key: string): void\n }\n\n // context menu configuration (right click on the table rows)\n contextMenu?: {\n // overides context menu rendering\n renderer?(menuElements: MenuElement[]): MenuElement[]\n // handler for custom context menu items click\n onClick?(key: string): void\n }\n\n // override of ag-grid api with undefined styles\n getRowStyle?(params: any): GridRowStyle | undefined\n}\n\ninterface DataGridState {\n pageIndex: number\n pageSize: number | null\n recordsCount?: number\n columnModel: ColumnState[]\n sortModel: SortItem[]\n tableConfigVisible: boolean\n columnsConfigVisible: boolean\n rowHeight: number\n // interval of record's indexes currently shown (first record has index 1)\n viewport: [number, number]\n contextMenuVisible: boolean\n firstLoadDone: boolean\n loading: boolean\n columnTransferHeight: number\n}\n\n\nexport default class DataGrid extends React.Component<DataGridProps, DataGridState> {\n public static defaultProps = {\n paging: {\n pageSize: 0,\n defaultPageSize: 0\n },\n rowStyleRules: tableDefaultRowStyleRules()\n };\n\n wildcardQuickFilter: WildcardQuickFilter;\n columnTypes: { [key: string]: ColDef };\n gridApi?: GridApi;\n gridColumnApi?: ColumnApi;\n // deep copy of columns state before opening editation of columns and its order\n // used in \"cancel changes\" functionality\n columnModelBeforeEdit?: ColumnState[];\n indexToJump: number | null;\n columnToJump: Column | null;\n lastCellFocus?: CellFocusedEvent;\n lastNavigationEvent?: NavigationEventEnum;\n table_context: any;\n private wrappingDiv: HTMLDivElement | null = null;\n\n constructor(props: Readonly<DataGridProps>) {\n super(props);\n this.state = {\n pageIndex: 0,\n pageSize: null,\n recordsCount: undefined,\n columnModel: [],\n sortModel: [],\n tableConfigVisible: !!this.props.tableConfigVisible,\n columnsConfigVisible: !!this.props.columnsConfigVisible,\n rowHeight: 28,\n viewport: [0, 0],\n contextMenuVisible: false,\n firstLoadDone: false,\n loading: false,\n columnTransferHeight: 500\n };\n this.indexToJump = null;\n this.columnToJump = null;\n\n this.onGridReady = this.onGridReady.bind(this);\n this.onPaginationChanged = this.onPaginationChanged.bind(this);\n this.onViewportChanged = this.onViewportChanged.bind(this);\n this.onCellContextMenu = this.onCellContextMenu.bind(this);\n this.onCellFocused = this.onCellFocused.bind(this);\n this.onCellMouseDown = this.onCellMouseDown.bind(this);\n this.setFocusedCellDebounced = debounce(this.setFocusedCellDebounced.bind(this), 200);\n this.noRecordsOverlayRenderer = this.noRecordsOverlayRenderer.bind(this);\n this.loadingOverlayRenderer = this.loadingOverlayRenderer.bind(this);\n this.changePagination = this.changePagination.bind(this);\n this.onColumnsChanged = this.onColumnsChanged.bind(this);\n this.onFilterModified = this.onFilterModified.bind(this);\n this.onFilterChanged = this.onFilterChanged.bind(this);\n this.onFilterConfirmed = this.onFilterConfirmed.bind(this);\n this.onSortChanged = this.onSortChanged.bind(this);\n this.showTableConfiguration = this.showTableConfiguration.bind(this);\n this.showColumnsConfig = this.showColumnsConfig.bind(this);\n this.navigateToNextCell = this.navigateToNextCell.bind(this);\n this.suppressKeyboardEvent = this.suppressKeyboardEvent.bind(this);\n this.onRowDataUpdated = this.onRowDataUpdated.bind(this);\n this._getRowStyle = this._getRowStyle.bind(this);\n this._getRowHeight = this._getRowHeight.bind(this);\n this._getCellStyle = this._getCellStyle.bind(this);\n this.textCustomComparator = this.textCustomComparator.bind(this);\n this.getExportContent = this.getExportContent.bind(this);\n this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));\n this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));\n this.getCustomFrameworkComponents = memoizeOne(this.getCustomFrameworkComponents.bind(this));\n\n this.table_context = {\n loadingOverlayRenderer: this.loadingOverlayRenderer,\n noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,\n onFilterConfirmed: this.onFilterConfirmed,\n fontSize: this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE,\n lineHeight: this.state.rowHeight - 2\n };\n this.wildcardQuickFilter = new WildcardQuickFilter();\n\n this.columnTypes = {\n \"localizedArrayColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return null;\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<string[]>(params);\n if (value !== undefined) {\n return value.map((s) => i18n(s)).join(\",\");\n }\n return \"\";\n }\n },\n \"numberColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: function (params: ValueGetterParams): string | null {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n },\n getQuickFilterText: function (params: GetQuickFilterTextParams): string {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return LocaleHolder.formatNumber(value);\n } else {\n return \"\";\n }\n }\n },\n \"dateColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n if (value === D2000UnixTimeNullValue) {\n return \"---\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear))}</span>`\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateFormat(!this.props.hideYear));\n }\n return \"\";\n }\n },\n \"dateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value) {\n if (value === D2000UnixTimeNullValue) {\n return \"Null Time\";\n }\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds))}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"fromNowDateTimeColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n let tooltipValue: string;\n tooltipValue = unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(true, true, true));\n return `<span title=\"${tooltipValue}\">${unixTimeToMoment(value).fromNow()}</span>`;\n } else {\n return \"---\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"---\";\n },\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n filterValueGetter: (params: ValueGetterParams): string | null => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return null;\n },\n getQuickFilterText: (params: GetQuickFilterTextParams): string => {\n const value = DataGrid.getCellValue<number>(params);\n if (value !== undefined) {\n return unixTimeToMoment(value).format(LocaleHolder.getDateTimeFormat(!this.props.hideYear, true, this.props.showMilliseconds));\n }\n return \"\";\n }\n },\n \"escapedValueColumn\": {\n cellRenderer: (params: ICellRendererParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return `<span style=\"white-space: pre\" title=\"${escape(value)}\">${typeof value === \"string\" ? escape(value.replace(/[\\r\\n]+/g, ' ')) : value}</span>`;\n } else {\n return \"\";\n }\n },\n valueFormatter: (params: ValueFormatterParams): string => {\n const value = DataGrid.getCellValue<any>(params);\n if (value !== undefined) {\n return typeof value === \"string\" ? value.replace(/[\\r\\n]+/g, ' ') : value;\n } else {\n return \"\";\n }\n }\n },\n \"textColumnFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"textColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"textColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"customColumnServerFilter\": {\n filter: \"agTextColumnFilter\",\n floatingFilter: true,\n floatingFilterComponent: \"customColumnFilter\",\n filterParams: {\n buttons: ['apply'],\n textCustomComparator: this.textCustomComparator\n },\n floatingFilterComponentParams: {\n suppressFilterButton: true,\n },\n },\n \"alignRight\": {}\n };\n }\n\n private static getCellValue<V>(props: any): V | undefined {\n if (props) {\n if (props.colDef.field && typeof props.getValue === \"function\") {\n return props.getValue(props.colDef.field);\n }\n if (props.data && props.colDef && props.colDef.field) {\n return at<V>(props.data, props.colDef.field)[0];\n }\n if (props.value !== undefined) {\n return props.value;\n }\n }\n\n return undefined;\n }\n\n textCustomComparator(filter: string, value: any, filterText: string) {\n const filterTextLowerCase = filterText.toLowerCase();\n const valueLowerCase = value.toString().toLowerCase();\n switch (filter) {\n case 'contains':\n if (filterTextLowerCase.indexOf(\"*\") >= 0 || filterTextLowerCase.indexOf(\"?\") >= 0) {\n const wildcardFilterRegExp = this.wildcardQuickFilter.getWildcardFilterRegExp(filterTextLowerCase);\n if (wildcardFilterRegExp) {\n return wildcardFilterRegExp.test(valueLowerCase);\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n } else {\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\n }\n case 'notContains':\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\n case 'equals':\n return valueLowerCase === filterTextLowerCase;\n case 'notEqual':\n // noinspection EqualityComparisonWithCoercionJS\n return valueLowerCase != filterTextLowerCase;\n case 'startsWith':\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\n case 'endsWith':\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\n default:\n // should never happen\n console.warn('invalid filter type ' + filter);\n return false;\n }\n }\n\n componentDidUpdate(prevProps: DataGridProps) {\n if (!this.gridApi) {\n return;\n }\n if (this.props.filter && prevProps.filter && this.props.filter.columnSearchVisible !== prevProps.filter.columnSearchVisible) {\n setTimeout(() => {\n if (this.gridApi) {\n this.gridApi.refreshHeader();\n if (this.props.filter && !this.props.filter.columnSearchVisible) {\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n }\n }, 0);\n }\n // functionality when all data are loaded to table\n if (this.props.rowData && this.props.rowData !== prevProps.rowData) {\n // keep filter model when data are changed\n if (this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n this.gridApi.onFilterChanged();\n }\n // keep sorting model when data are changed\n this.setSortModel(this.state.sortModel);\n this.gridApi.refreshClientSideRowModel(\"group\");\n this.gridApi.redrawRows();\n\n // keep selected rows when data are changed and rows are still present\n const selectedObjectsVisibleInGrid = this.props.rowData.filter((object) => {\n return this.props.selectedIds ? this.props.selectedIds.indexOf(object.id) >= 0 : false;\n });\n if (selectedObjectsVisibleInGrid.length > 0) {\n selectedObjectsVisibleInGrid.forEach((object) => {\n const rowNode = this.gridApi ? this.gridApi.getRowNode(object.id + \"\") : null;\n if (rowNode && !rowNode.isSelected()) {\n rowNode.setSelected(true, true);\n }\n });\n } else {\n this.gridApi.deselectAll();\n }\n }\n // functionality when chunks of data are dynamically loaded from server\n if (this.props.datasource && this.props.datasource !== prevProps.datasource) {\n // resets grid data\n this.gridApi.setDatasource(this.props.datasource);\n }\n this.updateRowHeight();\n }\n\n public setColumnState(columnModel: ColumnState[]) {\n const columnStates: ColumnState[] = [];\n if (columnModel) {\n columnModel.forEach((item: ColumnState) => {\n const columnState = {...item};\n item.sortIndex = undefined;\n item.sort = undefined\n columnStates.push(columnState);\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnStates, defaultState: {sort: null}, applyOrder: true});\n }\n\n public setSortModel(sortModel: SortItem[]) {\n const columnState: ColumnState[] = [];\n if (sortModel) {\n sortModel.forEach((item: any, index: number) => {\n columnState.push({\n colId: item.colId,\n sort: item.sort,\n sortIndex: index\n });\n });\n }\n this.gridColumnApi?.applyColumnState({state: columnState, defaultState: {sort: null}, applyOrder: true});\n }\n\n public getSortModel(): SortItem[] {\n const columnState = this.gridColumnApi?.getColumnState() ?? [];\n const filteredStates = columnState?.filter(item => item.sort != null);\n const indexes: { [colId: string]: number; } = {};\n filteredStates.forEach((state) => {\n if (state.colId) {\n indexes[state.colId] = state.sortIndex as number;\n }\n });\n const res = filteredStates.map(s => {\n return {colId: s.colId, sort: s.sort} as SortItem;\n });\n res.sort((a: any, b: any) => indexes[a.colId] - indexes[b.colId]);\n return res;\n\n }\n\n updateRowHeight() {\n let rowHeight = this.calculateRowHeight(this.props.rowStyleRules);\n if (rowHeight && rowHeight !== this.state.rowHeight) {\n this.changeRowHeight(rowHeight);\n }\n }\n\n calculateRowHeight(rowStyleRules?: RowStyleRule[]): number | undefined {\n let rowHeight;\n if (rowStyleRules) {\n for (let i = 0; i < rowStyleRules.length; i++) {\n if (rowStyleRules[i].key === \"table-font-size\") {\n const currentFontSize = rowStyleRules[i].style.fontSize;\n if (typeof currentFontSize === \"number\") {\n rowHeight = (currentFontSize ? currentFontSize : GRID_DEFAULT_FONT_SIZE) + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n } else {\n rowHeight = GRID_DEFAULT_FONT_SIZE + ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n }\n }\n }\n }\n return rowHeight;\n }\n\n /**\n * Handling setting table gridEditor\n */\n static getDerivedStateFromProps(props: DataGridProps, state: DataGridState) {\n const newState: Partial<DataGridState> = {};\n if (props.tableConfigVisible === true || props.tableConfigVisible === false) {\n if (props.tableConfigVisible !== state.tableConfigVisible) {\n newState.tableConfigVisible = props.tableConfigVisible;\n }\n }\n return newState;\n }\n\n onGridReady(gridReadyEvent: GridReadyEvent): void {\n const gridApi = gridReadyEvent.api;\n const gridColumnApi = gridReadyEvent.columnApi;\n if (!this.gridApi || this.gridApi !== gridApi) {\n // row selection plugin hook\n const rangeSelector = new RangeSelector(this.wrappingDiv);\n rangeSelector.init(gridApi, gridColumnApi);\n // altered quick filter hook for supporting wildcard matching\n this.wildcardQuickFilter.adaptFilterEngine(gridApi);\n this.gridApi = gridApi;\n this.gridColumnApi = gridColumnApi;\n if (this.props.onGridReady) {\n this.props.onGridReady(gridReadyEvent);\n }\n this.setState({\n sortModel: this.getSortModel(),\n columnModel: this.gridColumnApi.getColumnState(),\n });\n this.updateRowHeight();\n }\n }\n\n onPaginationChanged(event: PaginationChangedEvent) {\n if (!this.gridApi) {\n this.onGridReady({type: \"gridReady\", api: event.api, columnApi: event.columnApi});\n }\n if (this.gridApi) {\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const currentPageSize = this.gridApi.paginationGetPageSize();\n let recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n // process only when onGridReady passed\n if (this.state.pageSize !== currentPageSize) {\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(currentPageSize, this.props.paging.pageSize);\n }\n if (!this.state.firstLoadDone) {\n this.loadData();\n this.setState({firstLoadDone: true});\n }\n }\n this.setState({pageSize: currentPageSize, recordsCount: recordsCount, pageIndex: currentPage});\n if (this.indexToJump !== null && this.columnToJump !== null) {\n this.gridApi.setFocusedCell(this.indexToJump, this.columnToJump);\n this.indexToJump = null;\n }\n }\n if (this.props.onPaginationChanged) {\n this.props.onPaginationChanged(event);\n }\n }\n\n onViewportChanged(event: ViewportChangedEvent) {\n const dataGridEvent = event as DataGridViewportChangedEvent;\n // calculation of the flag that last record is shown\n const rowsScrollingDelta = this.state.viewport[1] ? event.lastRow + 1 - this.state.viewport[1] : event.lastRow + 1;\n dataGridEvent.rowsScrollingDelta = rowsScrollingDelta;\n this.setState({viewport: [event.firstRow + 1, event.lastRow + 1]});\n if (this.props.onViewportChanged) {\n this.props.onViewportChanged(event);\n }\n }\n\n changePagination(pageSize: number): void {\n if (!this.gridApi) {\n return;\n }\n const gridApiWithPrivateAccess = this.gridApi as any;\n if (pageSize > 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n this.gridApi.paginationSetPageSize(pageSize);\n if (this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(pageSize, pageSize);\n }\n } else if (pageSize === 0) {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', true);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', true);\n // handling AG-Grid bug caused by different previous pageSize state\n const rowHeight = gridApiWithPrivateAccess.gridOptionsWrapper.getRowHeightAsNumber();\n // const rowHeight = this.state.rowHeight;\n const bodyHeight = gridApiWithPrivateAccess.ctrlsService.centerRowContainerCtrl.viewportSizeFeature.getBodyHeight();\n let availablePageSize = 1000;\n if (bodyHeight > 0) {\n availablePageSize = Math.floor(bodyHeight / rowHeight);\n }\n if (this.props.paging.pageSize > availablePageSize) {\n this.gridApi.paginationSetPageSize(1);\n } else {\n // special hack to remove setting page size\n this.gridApi.paginationSetPageSize(null as unknown as number);\n }\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, 0);\n }\n } else {\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('pagination', false);\n gridApiWithPrivateAccess.gridOptionsWrapper.setProperty('paginationAutoPageSize', false);\n if (this.props.paging && this.props.paging.onPaginationChanged) {\n this.props.paging.onPaginationChanged(this.state.pageSize, -1);\n }\n }\n }\n\n showMilliseconds(showMilis: boolean) {\n this.props.onShowMilliseconds?.(showMilis, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n showYear(showYear: boolean) {\n this.props.onShowYear?.(showYear, () => {\n if (!this.gridApi) {\n return;\n }\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n });\n }\n\n changeRowHeight(rowHeight: number) {\n this.setState({rowHeight: rowHeight}, () => {\n if (this.gridApi) {\n if (this.props.headerHeight === undefined) {\n this.gridApi.setHeaderHeight(rowHeight + 4);\n }\n if (this.props.floatingFiltersHeight === undefined) {\n this.gridApi.setFloatingFiltersHeight(rowHeight + 4);\n }\n (this.gridApi as any).gridOptionsWrapper.setProperty('rowHeight', rowHeight);\n this.gridApi.resetRowHeights();\n this.gridApi.refreshHeader();\n this.gridApi.redrawRows();\n if (this.props.rowModelType === \"infinite\" && this.props.datasource) {\n // redraws all server side loaded table data\n this.gridApi.setDatasource(this.props.datasource)\n }\n }\n if (this.props.onRowHeightChanged) {\n this.props.onRowHeightChanged(rowHeight);\n }\n });\n }\n\n onGoToPage(pageIndex: number) {\n if (this.gridApi) {\n this.gridApi.paginationGoToPage(pageIndex);\n }\n }\n\n loadData(callback?: () => void) {\n if (!this.gridApi) {\n return;\n }\n this.setState({loading: true});\n if (!this.props.loadingOverlayRenderer) {\n this.gridApi.showLoadingOverlay();\n }\n this.props.onLoadData((totalRecords) => {\n if (!this.gridApi) {\n return;\n }\n this.gridApi.hideOverlay();\n this.setState({loading: false});\n if (callback) {\n callback();\n }\n if (totalRecords === 0) {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n this.gridApi?.showNoRowsOverlay();\n }, 400);\n }\n if (this.props.autofocus) {\n this.focus();\n }\n });\n }\n\n public focus() {\n setTimeout(() => {\n if (!this.isActive()) {\n return;\n }\n const columnModel = this.gridColumnApi?.getColumnState();\n let columnIdToFocus = columnModel?.[0]?.colId || \"name\";\n const selectedNodes = this.gridApi?.getSelectedNodes();\n const selectedRowIndex: number = (selectedNodes && selectedNodes.length > 0 && selectedNodes[selectedNodes.length - 1].rowIndex) || 0;\n this.gridApi?.setFocusedCell(selectedRowIndex, columnIdToFocus);\n }, 200);\n }\n\n isActive(): boolean {\n return !!this.gridApi && !(this.gridApi as any).destroyCalled;\n }\n\n onColumnsChanged(event: ColumnEvent) {\n const columnModel = event.columnApi.getColumnState();\n if (this.props.onColumnsChanged) {\n this.props.onColumnsChanged(columnModel, event);\n }\n this.setState({columnModel: columnModel});\n }\n\n setColumnSearchVisible(visible: boolean) {\n if (this.gridApi && this.props.filter && this.props.filter.getFilterModel) {\n this.gridApi.setFilterModel(this.props.filter.getFilterModel());\n }\n if (this.props.filter && this.props.filter.onColumnSearchVisible) {\n this.props.filter.onColumnSearchVisible(visible);\n }\n }\n\n private onFilterModified(event: FilterModifiedEvent) {\n if (this.props.filter && this.props.filter.onFilterModified) {\n this.props.filter.onFilterModified(event);\n }\n }\n\n private onFilterChanged(event: FilterChangedEvent) {\n if (this.props.filter && this.props.filter.onFilterChanged) {\n this.props.filter.onFilterChanged(event);\n }\n }\n\n private onFilterConfirmed() {\n if (this.props.filter && this.props.filter.onFilterConfirmed) {\n this.props.filter.onFilterConfirmed();\n }\n }\n\n private onSortChanged(event: SortChangedEvent) {\n if (this.props.onSortChanged && this.gridApi) {\n const currentSortModel = this.getSortModel() as SortItem[];\n if (!isEqual(this.state.sortModel, currentSortModel)) {\n // propagate only changes to sorting\n this.setState({sortModel: currentSortModel}, () => {\n if (this.props.onSortChanged) {\n this.props.onSortChanged(event);\n }\n });\n }\n }\n }\n\n showTableConfiguration(show: boolean) {\n if (this.props.onTableConfigVisible) {\n this.props.onTableConfigVisible(show);\n }\n this.setState({tableConfigVisible: show}, () => {\n if (this.gridApi && !this.state.tableConfigVisible) {\n // redrawing rows after closing table configuration panel, probably not required any more,\n // because config panel and table is shown simultaneously\n if (!this.props.rowModelType || this.props.rowModelType === \"clientSide\") {\n // table is shown\n this.gridApi.refreshClientSideRowModel(\"group\");\n }\n this.gridApi.redrawRows();\n }\n });\n }\n\n showColumnsConfig(show: boolean) {\n if (this.props.onColumnsConfigVisible) {\n this.props.onColumnsConfigVisible(show);\n }\n this.columnModelBeforeEdit = cloneDeep(this.state.columnModel);\n this.setState({columnsConfigVisible: show});\n }\n\n private navigateToNextCell(params: NavigateToNextCellParams): CellPosition {\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n var suggestedNextCell = params.nextCellPosition;\n if (!this.gridApi) {\n return suggestedNextCell ?? params.previousCellPosition;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n var previousCell = params.previousCellPosition;\n switch (params.event?.code) {\n case Key.ArrowDown:\n if ((previousCell.rowIndex + 1) >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n return {\n rowIndex: 0,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n\n }\n break;\n case Key.ArrowUp:\n if ((previousCell.rowIndex - 1) < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n return {\n rowIndex: this.gridApi.getModel().getRowCount() - 1,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n } else {\n return {\n rowIndex: previousCell.rowIndex,\n column: previousCell.column,\n rowPinned: previousCell.rowPinned\n };\n }\n }\n break;\n }\n return suggestedNextCell ?? params.previousCellPosition;\n }\n\n private suppressKeyboardEvent(params: SuppressKeyboardEventParams): boolean {\n if (!this.gridApi) {\n return false;\n }\n const pageIndex = this.gridApi.paginationGetCurrentPage();\n const totalPages = this.gridApi.paginationGetTotalPages();\n switch (params.event.code) {\n case Key.ArrowDown:\n case Key.ArrowUp:\n case Key.ArrowLeft:\n case Key.ArrowRight:\n if (params.editing && params.event.altKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n let indexToJump: number;\n let columnToJump: Column;\n if (params.event.code === Key.ArrowDown) {\n indexToJump = focusedCell.rowIndex + 1;\n columnToJump = focusedCell.column;\n if (indexToJump >= this.gridApi.getModel().getRowCount()) {\n if (pageIndex < (totalPages - 1)) {\n this.onGoToPage(pageIndex + 1);\n indexToJump = 0\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowUp) {\n indexToJump = focusedCell.rowIndex - 1;\n columnToJump = focusedCell.column;\n if (indexToJump < 0) {\n if (pageIndex > 0) {\n this.onGoToPage(pageIndex - 1);\n indexToJump = this.gridApi.getModel().getRowCount() - 1;\n } else {\n indexToJump = focusedCell.rowIndex;\n }\n }\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n this.indexToJump = indexToJump;\n this.columnToJump = columnToJump;\n setTimeout(() => {\n this.gridApi?.startEditingCell({\n rowIndex: indexToJump,\n colKey: columnToJump,\n keyPress: 13 /*Enter*/\n });\n }, 0);\n return true;\n } else if (params.event.code === Key.ArrowLeft) {\n this.gridApi.tabToPreviousCell();\n break;\n } else /*Key.ArrowRight*/ {\n this.gridApi.tabToNextCell();\n break;\n }\n }\n }\n break;\n case Key.PageDown:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToNextPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.min(focusedCell.rowIndex + this.gridApi.paginationGetPageSize(), this.gridApi.paginationGetRowCount());\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.PageUp:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToPreviousPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = Math.max(focusedCell.rowIndex - this.gridApi.paginationGetPageSize(), 0);\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.End:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex < (totalPages - 1)) {\n this.gridApi.paginationGoToLastPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = this.gridApi.paginationGetRowCount() - 1;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case Key.Home:\n this.lastNavigationEvent = NavigationEventEnum.KEYBOARD;\n if (pageIndex > 0) {\n this.gridApi.paginationGoToFirstPage();\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n this.indexToJump = 0;\n this.columnToJump = focusedCell.column;\n return true;\n }\n }\n break;\n case \"KeyA\":\n if (params.event.ctrlKey && !params.editing) {\n var firstRow = this.gridApi.getFirstDisplayedRow();\n var lastRow = this.gridApi.getLastDisplayedRow();\n this.gridApi.deselectAll();\n if (this.props.rowModelType === \"infinite\") {\n for (let i = firstRow; i <= lastRow; i++) {\n this.gridApi.getDisplayedRowAtIndex(i)?.setSelected(true);\n }\n } else {\n this.gridApi.forEachNodeAfterFilter(function (node, index) {\n if (index >= firstRow && index <= lastRow) {\n node.setSelected(true);\n }\n });\n }\n }\n break;\n case \"KeyI\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectId\") ?? this.gridColumnApi?.getColumn(\"id\");\n if (focusedCell && column) {\n const displayedRowAtIndex = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyB\":\n if (params.event.ctrlKey) {\n const focusedCell = this.gridApi.getFocusedCell();\n const column = this.gridColumnApi?.getColumn(\"objectName\") ?? this.gridColumnApi?.getColumn(\"name\");\n if (focusedCell && column) {\n const displayedRowAtIndex1 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex1) {\n ClipboardUtils.copyToClipboard(this.getValue(column, displayedRowAtIndex1));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case \"KeyC\":\n if (params.event.ctrlKey && !params.editing) {\n const focusedCell = this.gridApi.getFocusedCell();\n if (focusedCell) {\n const displayedRowAtIndex2 = this.gridApi.getDisplayedRowAtIndex(focusedCell.rowIndex);\n if (displayedRowAtIndex2) {\n ClipboardUtils.copyToClipboard(this.getValue(focusedCell.column, displayedRowAtIndex2, true));\n }\n this.gridApi.setFocusedCell(focusedCell.rowIndex, focusedCell.column.getId());\n }\n }\n break;\n case Key.Enter:\n this.props.onEnter?.();\n break;\n }\n this.props.onKeyPressed?.(params.event);\n return false;\n }\n\n getValue(column: Column, row: RowNode, doNotReplaceNewline?: boolean): string {\n let formattedValue = this.gridApi?.getValue(column, row);\n if (formattedValue && typeof formattedValue === \"string\" && formattedValue.indexOf(EXPORT_SEPARATOR) > 0 && !doNotReplaceNewline) {\n formattedValue = formattedValue.replace(/[\\n\\r]+/, ' ');\n }\n const valueFormatter = column.getColDef().valueFormatter;\n if (valueFormatter) {\n const params: ValueFormatterParams = {\n data: row.data,\n node: row,\n column: column,\n colDef: column.getColDef(),\n api: this.gridApi as GridApi,\n columnApi: (this.gridApi as any).gridOptionsWrapper.columnApi,\n context: (this.gridApi as any).gridOptionsWrapper.getContext(),\n value: formattedValue\n };\n if (typeof valueFormatter === 'function') {\n formattedValue = valueFormatter?.(params);\n } else if (typeof valueFormatter === 'string') {\n formattedValue = at(row.data, valueFormatter)[0];\n }\n }\n return formattedValue;\n }\n\n async getExportContent(progressPopup: ProgressPopup | null, props: ContextMenuProps): Promise<string[][]> {\n if (!this.gridApi) {\n return [];\n }\n const model: IRowModel = this.gridApi.getModel();\n const tableContent: string[][] = [];\n const columns: ColumnInfo[] = (this.gridApi as any).columnModel.getAllDisplayedColumns().map((column: Column) => {\n const columnTypes = column.getColDef().type;\n return {\n column: column,\n displayName: column.getColDef().headerName,\n isDateField: columnTypes && columnTypes.indexOf(\"dateColumn\") >= 0,\n isDateTimeField: columnTypes && columnTypes.indexOf(\"dateTimeColumn\") >= 0\n };\n });\n if (columns.length === 0) {\n return tableContent;\n }\n tableContent.push(columns.map((column) => column.displayName));\n\n let rowCount: number;\n let tableNodes: RowNode[] = [];\n if (model.getType() === \"clientSide\") {\n if (props.onlySelectedNodes) {\n rowCount = 0;\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n if (node.isSelected()) {\n tableNodes.push(node);\n rowCount++;\n }\n });\n } else {\n rowCount = model.getRowCount();\n this.gridApi.forEachNodeAfterFilterAndSort((node) => {\n tableNodes.push(node);\n });\n }\n } else {\n if (props.onlySelectedNodes) {\n const selectedNodes = this.gridApi.getSelectedNodes();\n rowCount = selectedNodes.length;\n selectedNodes.forEach((node) => {\n tableNodes.push(node);\n });\n tableNodes.sort((a, b) => (a.rowIndex ?? 0) > (b.rowIndex ?? 0) ? 1 : (a.rowIndex === b.rowIndex) ? 0 : -1);\n } else {\n const virtualRowCount = model.getRowCount();\n rowCount = virtualRowCount ? virtualRowCount : 0;\n }\n }\n progressPopup?.setRecordCount(rowCount);\n\n let percentStep = Math.floor(rowCount / 100);\n if (percentStep < 100) {\n percentStep = 100;\n }\n\n if (model.getType() === \"clientSide\" || props.onlySelectedNodes) {\n for (let index = 0; index < tableNodes.length; index++) {\n const record: string[] = [];\n columns.forEach((column) => {\n let value = this.getValue(column.column, tableNodes[index]);\n record.push(value);\n });\n tableContent.push(record);\n if (index % percentStep === 0) {\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n } else {\n for (let index = 0; index < rowCount; index++) {\n let row: RowNode | undefined = undefined;\n let record: any[] = [];\n do {\n record = [];\n do {\n row = model.getRow(index);\n if (!row) {\n await TimeUtils.sleep(100);\n }\n } while (!row);\n columns.forEach((column) => {\n record.push(this.getValue(column.column, row as RowNode));\n });\n if (record.filter((cell) => !!cell).length === 0) {\n await TimeUtils.sleep(100);\n }\n } while (record.filter((cell) => !!cell).length === 0);\n tableContent.push(record);\n if (index % percentStep === 0) {\n // noinspection ES6MissingAwait\n progressPopup?.update(Math.floor(index / rowCount * 100) - 1);\n await TimeUtils.sleep(100);\n }\n }\n }\n // noinspection ES6MissingAwait\n progressPopup?.update(99);\n await TimeUtils.sleep(300);\n return tableContent;\n }\n\n onCellFocused(event: CellFocusedEvent) {\n const row: RowNode | undefined = event.rowIndex !== null ? this.gridApi?.getDisplayedRowAtIndex(event.rowIndex) : undefined;\n if (row) {\n if (this.lastNavigationEvent === NavigationEventEnum.KEYBOARD && KeyboardUtils.isKeyPressed(Key.Shift) && this.lastCellFocus && this.lastCellFocus.rowIndex !== event.rowIndex) {\n // focusing new row with SHIFT key pressed\n if (!row.isSelected()) {\n // add to selection\n row.setSelected(true, false);\n } else if (this.lastCellFocus?.rowIndex !== null) {\n const lastFocusedRow: RowNode | undefined = this.gridApi?.getDisplayedRowAtIndex(this.lastCellFocus.rowIndex);\n if (lastFocusedRow?.isSelected()) {\n lastFocusedRow.setSelected(false, false);\n }\n }\n } else if (!row.isSelected() && !KeyboardUtils.isKeyPressed(Key.Control) && !KeyboardUtils.isKeyPressed(Key.Shift)) {\n row.setSelected(true, true);\n }\n }\n this.props.onCellFocused?.(event);\n this.lastCellFocus = event;\n }\n\n onCellMouseDown(e: CellMouseDownEvent) {\n this.lastNavigationEvent = NavigationEventEnum.MOUSE;\n // always focus clicked cell (also when using shift key)\n if (e.rowIndex !== null) {\n this.setFocusedCellDebounced(e.rowIndex, e.column, e.rowPinned !== null ? e.rowPinned : undefined);\n }\n this.props.onCellMouseDown?.(e);\n }\n\n setFocusedCellDebounced(rowIndex: number, column: string | Column, rowPinned: string | undefined) {\n this.gridApi?.setFocusedCell(rowIndex, column, rowPinned);\n }\n\n private onCellContextMenu(event: CellContextMenuEvent) {\n this.setState({contextMenuVisible: !!event});\n if (event.node) {\n if (!event.node.isSelected()) {\n event.node.setSelected(true, true, false);\n }\n }\n }\n\n private loadingOverlayRenderer(): ReactElement {\n if (this.props.loadingOverlayRenderer) {\n const loadingOverlay = this.props.loadingOverlayRenderer();\n if (loadingOverlay) {\n return loadingOverlay;\n }\n }\n return <div><LoadingOutlined style={{fontSize: 40, color: \"#1890ff\"}}/></div>;\n }\n\n private noRecordsOverlayRenderer(): ReactElement {\n if (this.props.noRecordsOverlayRenderer) {\n const noRecordsOverlay = this.props.noRecordsOverlayRenderer();\n if (noRecordsOverlay) {\n return noRecordsOverlay;\n }\n }\n return (\n <Empty description={i18n(\"No records found.\")} imageStyle={{height: \"8vh\"}}>\n <Button type=\"primary\" onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n <SearchOutlined/> {i18n(\"Search\")}\n </Button>\n </Empty>\n );\n }\n\n private onRowDataUpdated(event: RowDataUpdatedEvent) {\n if (!this.gridApi) {\n return;\n }\n const currentPage = this.gridApi.paginationGetCurrentPage();\n const recordsCount = this.props.paging.pageSize >= 0 ? (this.gridApi.paginationIsLastPageFound() ? this.gridApi.paginationGetRowCount() : 0) : this.gridApi.getDisplayedRowCount();\n this.setState({recordsCount: recordsCount, pageIndex: currentPage});\n if (this.props.onRowDataUpdated) {\n this.props.onRowDataUpdated(event);\n }\n }\n\n private static EMPTY_STYLE: RowStyle = {}\n\n _getRowStyle(params: RowClassParams): RowStyle {\n const rowStyleRules = this.props.rowStyleRules;\n if (rowStyleRules) {\n const style: any = {};\n rowStyleRules.forEach((rowStyleRule) => {\n if (rowStyleRule.expression) {\n if (!rowStyleRuleCompiledExpressions[rowStyleRule.expression]) {\n rowStyleRuleCompiledExpressions[rowStyleRule.expression] = compileExpression(rowStyleRule.expression);\n }\n if (rowStyleRuleCompiledExpressions[rowStyleRule.expression](params.node.data)) {\n Object.assign(style, rowStyleRule.style);\n }\n } else {\n Object.assign(style, rowStyleRule.style);\n }\n });\n if (!style.color) {\n style.color = null;\n } else if (typeof style.color === \"object\") {\n style.color = `rgba(${style.color.r},${style.color.g},${style.color.b},${style.color.a})`;\n }\n if (!style.backgroundColor) {\n style.backgroundColor = \"inherit\";\n } else if (typeof style.backgroundColor === \"object\") {\n style.backgroundColor = `rgba(${style.backgroundColor.r},${style.backgroundColor.g},${style.backgroundColor.b},${style.backgroundColor.a})`;\n }\n if (!style.fontWeight) {\n style.fontWeight = \"inherit\";\n }\n if (style.fontSize) {\n const lineHeight = style.fontSize + ROW_HEIGHT_DELTA_FROM_FONT_SIZE - 2;\n style.fontSize = style.fontSize + \"px\";\n style.lineHeight = lineHeight + \"px\";\n } else {\n style.fontSize = \"inherit\";\n }\n if (this.props.getRowStyle) {\n const rowStyle = this.props.getRowStyle(params);\n if (rowStyle) {\n return Object.assign(style, rowStyle) as RowStyle;\n }\n }\n return style as RowStyle;\n }\n return DataGrid.EMPTY_STYLE;\n }\n\n _getRowHeight(): number {\n return this.state.rowHeight;\n }\n\n _getCellStyle(params: { colDef: ColDef }) {\n const fontSize = this.state.rowHeight - ROW_HEIGHT_DELTA_FROM_FONT_SIZE;\n const cellStyles: { [key: string]: any } = {\"font-size\": fontSize + \"px\"};\n if (params.colDef.type && params.colDef.type.indexOf(\"alignRight\") >= 0) {\n cellStyles[\"text-align\"] = \"right\";\n }\n if (params.colDef.cellRendererParams?.originalCellStyle) {\n const originalCellStylesOrHandler = params.colDef.cellRendererParams.originalCellStyle as {} | ((params: any) => {});\n if (typeof originalCellStylesOrHandler === \"object\") {\n Object.assign(cellStyles, originalCellStylesOrHandler);\n } else if (typeof originalCellStylesOrHandler === \"function\") {\n const originalCellStyles = originalCellStylesOrHandler(params);\n if (originalCellStyles) {\n Object.assign(cellStyles, originalCellStyles);\n }\n }\n }\n return cellStyles;\n }\n\n getDefaultColDefinition(colDef: ColDef | undefined): ColDef {\n if (colDef) {\n return {...colDef, suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n } else {\n return {suppressKeyboardEvent: this.suppressKeyboardEvent} as ColDef;\n }\n }\n\n private getCustomFrameworkComponents(frameworkComponents: any) {\n let customFrameworkComponents = gridFrameworkComponents;\n if (frameworkComponents) {\n customFrameworkComponents = Object.assign(gridFrameworkComponents, frameworkComponents);\n }\n return customFrameworkComponents;\n }\n\n renderNavigationPanel(): ReactElement {\n return (\n <React.Fragment>\n {this.props.toolbar && this.props.toolbar.renderToolbar ? this.props.toolbar.renderToolbar(this.renderToolBarWithSearch()) : this.renderToolBarWithSearch()}\n {this.props.paging.pageSize >= 0 &&\n <DataGridPagination\n disabled={this.state.loading}\n current={this.state.pageIndex ? this.state.pageIndex + 1 : 1}\n pageSize={this.state.pageSize ? this.state.pageSize : 20}\n total={this.state.recordsCount ?? 1}\n onGoToPage={page => {\n this.onGoToPage(page - 1);\n }}\n />}\n {this.props.paging.pageSize < 0 && this.state.recordsCount && !this.props.toolbar?.hideRecordCount ?\n <span className=\"ant-pagination-total-text\" style={{\n flex: \"0 1 auto\",\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n marginLeft: \"24px\"\n }}>{`${this.state.viewport[0]}-${this.state.viewport[1]} ${i18n('of')} ${this.state.recordsCount}`}</span>\n : undefined}\n </React.Fragment>\n );\n }\n\n renderToolBarWithSearch(): ReactElement {\n return (\n <Input.Group key=\"filter-panel\" compact size=\"default\"\n style={{whiteSpace: \"nowrap\", flexGrow: 1, display: \"flex\"}}>\n {this.props.toolbar?.toolbarButtons}\n <Dropdown trigger={[\"click\"]} overlay={\n <ContextMenu showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.exportMenu?.renderer}\n onClick={this.props.exportMenu?.onClick}\n getExportContent={this.getExportContent}\n />}\n disabled={this.state.loading}>\n <Button title={i18n(\"Export\")}>\n <DownloadOutlined/>\n </Button>\n </Dropdown>\n\n <Dropdown trigger={[\"click\"]}\n overlay={this.renderSettingsMenu()}>\n <Button\n title={i18n(\"Extended table features\")}\n disabled={this.state.loading}>\n <TableOutlined/>\n </Button>\n </Dropdown>\n {!this.props.search?.hidden && !this.props.search?.searchRenderer && <AutoCompleteInput\n style={{minWidth: 100, flexGrow: 1}}\n placeholder={this.props.search ? this.props.search.placeholder : undefined}\n stringFormatter={this.props.search ? this.props.search.stringFormatter : undefined}\n value={this.props.search ? this.props.search.searchString : undefined}\n inputReadonly={this.props.search ? this.props.search.inputReadonly : undefined}\n options={this.props.search ? this.props.search.searchHistory : undefined}\n onChange={this.props.search ? this.props.search.onChange : undefined}\n onSearch={this.props.search ? this.props.search.onSearch : undefined}\n disabled={this.state.loading || (this.props.filter && this.props.filter.columnSearchVisible)}\n />}\n {this.props.search?.searchRenderer?.()}\n <Button title={this.props.search?.hidden ? i18n(\"Refresh\") : i18n(\"Search\")}\n className={\"search-btn \" + (this.props.search && this.props.search.searchButtonClassName ? this.props.search.searchButtonClassName : \"\")}\n disabled={this.props.search?.searchButtonDisabled}\n type=\"primary\"\n onClick={() => {\n if (this.props.search && this.props.search.onSearch) {\n this.props.search.onSearch();\n }\n }}>\n {this.state.loading ? <LoadingOutlined/> : (this.props.search?.hidden ? <ReloadOutlined/> :\n <SearchOutlined/>)}\n </Button>\n </Input.Group>\n );\n }\n\n renderSettingsMenu(): ReactElement {\n let menuItems: MenuElement[] = [\n <Menu.Item key=\"columnFilter\"\n icon={<FileSearchOutlined/>}\n className={this.props.filter && this.props.filter.columnSearchVisible ? \"ant-dropdown-menu-item-selected\" : \"\"}\n title={i18n(\"Turn on/off column filter\")}>\n {i18n(\"Column Filter\")}\n </Menu.Item>,\n <Menu.Item key=\"autosizeAllColumns\" icon={<ColumnWidthOutlined/>}>\n {i18n(\"Autosize All Columns\")}\n </Menu.Item>,\n <Menu.Item key=\"columnsConfig\" icon={<ControlOutlined/>}>\n {i18n(\"Columns Configuration\")}\n </Menu.Item>,\n <Menu.Divider key=\"columnsAndAdvancedConfigDivider\"/>,\n <Menu.Item key=\"advancedConfig\" icon={<SettingOutlined/>}>\n {i18n(\"Advanced Settings\")}\n </Menu.Item>\n ];\n\n if (this.props.settingsMenu?.renderer) {\n menuItems = this.props.settingsMenu.renderer(menuItems);\n }\n\n return <Menu onClick={({key}) => {\n switch (key) {\n case \"columnFilter\":\n const visible = !(this.props.filter && this.props.filter.columnSearchVisible);\n this.setColumnSearchVisible(visible);\n break;\n case \"autosizeAllColumns\":\n this.gridColumnApi?.autoSizeAllColumns();\n break;\n case \"columnsConfig\":\n this.showColumnsConfig(true);\n break;\n case \"advancedConfig\":\n this.showTableConfiguration(true);\n break;\n default:\n if (this.props.settingsMenu?.onClick) {\n this.props.settingsMenu.onClick(key + \"\");\n }\n }\n }}>\n {menuItems}\n </Menu>;\n }\n\n private renderContextMenu(): ReactElement {\n return <ContextMenu onlySelectedNodes={true}\n showMilliseconds={!!this.props.showMilliseconds}\n showYear={!this.props.hideYear}\n renderer={this.props.contextMenu?.renderer}\n onClick={this.props.contextMenu?.onClick}\n getExportContent={this.getExportContent}\n hideNotificationOnClipboardCopy\n />;\n }\n\n private getAdaptedColumnDefs(columnDefs: DataGridColDef[], floatingFilterEnabled: boolean | undefined, disableColumnDefsPreprocessing: boolean) {\n if (columnDefs.length === 0) {\n return undefined;\n }\n if (disableColumnDefsPreprocessing) {\n return columnDefs;\n }\n const adaptedColumnDefs = columnDefs ? columnDefs.map((columnDef) => {\n const {group, floatingFilter, hide, ...rest} = columnDef as DataGridColDef;\n let floatingFilterEnabledForColumn = !!floatingFilter;\n if (typeof columnDef.type === \"string\") {\n if (!!(this.columnTypes[columnDef.type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n } else {\n columnDef.type?.forEach((type) => {\n if (!!(this.columnTypes[type]?.floatingFilter)) {\n floatingFilterEnabledForColumn = true;\n }\n });\n\n }\n return {\n ...rest,\n floatingFilter: floatingFilterEnabledForColumn && floatingFilterEnabled,\n resizable: true,\n headerComponent: \"simpleHeader\",\n headerComponentParams: {\n onColumnsConfigVisible: this.showColumnsConfig\n },\n hide: hide === undefined ? rest.initialHide : hide,\n cellStyle: this._getCellStyle,\n cellRendererParams: columnDef.cellStyle ? {originalCellStyle: columnDef.cellStyle} : undefined\n };\n }) : undefined;\n if (adaptedColumnDefs) {\n setTimeout(() => {\n this.props.onColumnDefsAdapted?.(adaptedColumnDefs);\n }, 0);\n }\n return adaptedColumnDefs;\n }\n\n render() {\n const {\n onGridReady,\n columnDefs, disableColumnDefsPreprocessing, onColumnsChanged,\n paging, onPaginationChanged, onViewportChanged,\n selectedIds,\n search, toolbar,\n filter, onFilterChanged, onFilterModified, onCellFocused,\n onSortChanged, frameworkComponents,\n tableConfigVisible, onTableConfigVisible,\n noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated,\n rowStyleRules, onChangeRowStyleRules,\n defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear,\n suppressLoadingOverlay, defaultColDef, headerHeight,\n ...passedProperties\n } = this.props;\n let key: string;\n let paginationPageSize: number | undefined = undefined;\n if (paging.pageSize > 0) {\n paginationPageSize = paging.pageSize;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else if (paging.pageSize === 0) {\n passedProperties.paginationAutoPageSize = true;\n passedProperties.pagination = true;\n key = \"paginated-table\";\n } else {\n // pagination is disabled\n passedProperties.pagination = false;\n key = \"non-paginated-table\";\n }\n\n // nejde\n const floatingFilterEnabled = !!filter && !!filter.columnSearchVisible;\n const adaptedColumnDefs = this.getAdaptedColumnDefs(columnDefs, floatingFilterEnabled, !!disableColumnDefsPreprocessing);\n\n const customFrameworkComponents = this.getCustomFrameworkComponents(frameworkComponents);\n const debugMode = process.env.NODE_ENV === 'development';\n const panelStyle = {\n display: \"flex\",\n flexFlow: \"column\",\n height: \"100%\",\n width: \"100%\",\n paddingBottom: 8,\n };\n if (this.props.panelStyle) {\n Object.assign(panelStyle, this.props.panelStyle);\n }\n const tablePanelStyle = {flex: \"1 1 auto\", marginTop: 16, overflow: \"auto\"};\n if (this.props.tablePanelStyle) {\n Object.assign(tablePanelStyle, this.props.tablePanelStyle);\n }\n\n return (\n <React.Fragment>\n <Card size=\"small\" bordered={false}\n style={{height: \"100%\"}}\n bodyStyle={panelStyle}>\n <div style={{display: \"flex\"}}>\n {this.renderNavigationPanel()}\n </div>\n <div style={tablePanelStyle}>\n <Dropdown trigger={[\"contextMenu\"]}\n getPopupContainer={() => {\n // very nasty trick how remove error of ResizeObservers infinite cycling - because popover (with dynamic size) is placed in in resizable panel\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\n }}\n overlay={this.renderContextMenu()}\n overlayStyle={!this.state.contextMenuVisible ? {display: \"none\"} : undefined}\n onVisibleChange={(visible) => {\n if (!visible) {\n this.setState({contextMenuVisible: false});\n }\n }}\n >\n <div className=\"ag-theme-balham\" style={{width: \"100%\", height: \"100%\"}}\n ref={(wrapingDiv) => {\n this.wrappingDiv = wrapingDiv;\n }}>\n <AgGridReact\n key={key}\n debug={debugMode}\n paginationPageSize={paginationPageSize}\n maxConcurrentDatasourceRequests={this.props.rowModelType === \"infinite\" ? 1 : undefined}\n onGridReady={this.onGridReady}\n onPaginationChanged={this.onPaginationChanged}\n onFilterModified={this.onFilterModified}\n onFilterChanged={this.onFilterChanged}\n onSortChanged={this.onSortChanged}\n defaultColDef={this.getDefaultColDefinition(defaultColDef)}\n columnDefs={adaptedColumnDefs as ColDef[]}\n {...passedProperties}\n onCellFocused={this.onCellFocused}\n suppressPaginationPanel={true}\n getRowNodeId={getRowNodeId}\n frameworkComponents={customFrameworkComponents}\n columnTypes={this.columnTypes}\n onColumnVisible={this.onColumnsChanged}\n onColumnPinned={this.onColumnsChanged}\n onColumnResized={this.onColumnsChanged}\n onColumnMoved={this.onColumnsChanged}\n onCellMouseDown={this.onCellMouseDown}\n navigateToNextCell={this.navigateToNextCell}\n onViewportChanged={this.onViewportChanged}\n onCellContextMenu={this.onCellContextMenu}\n loadingOverlayComponent='loadingOverlay'\n noRowsOverlayComponent='noRecordsOverlay'\n onRowDataUpdated={this.onRowDataUpdated}\n context={this.table_context}\n rowHeight={this.state.rowHeight}\n getRowStyle={this._getRowStyle}\n getRowHeight={this._getRowHeight}\n headerHeight={headerHeight !== undefined ? headerHeight : this.state.rowHeight + 4}\n floatingFiltersHeight={this.state.rowHeight + 4}\n suppressLoadingOverlay={this.props.loadingOverlayRenderer ? true : this.props.suppressLoadingOverlay}\n >\n </AgGridReact>\n {this.state.loading && this.props.loadingOverlayRenderer &&\n <div className=\"ag-overlay\" aria-hidden=\"true\" ref=\"overlayWrapper\">\n <div className=\"ag-overlay-panel\">\n <div\n className=\"ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper\">\n <div className=\"ag-react-container\">\n {this.props.loadingOverlayRenderer?.()}\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n </Dropdown>\n {this.props.tableOverlayRenderer?.()}\n </div>\n </Card>\n\n {!!this.gridApi && !!this.gridColumnApi && this.state.pageSize !== null &&\n <DataGridEditor dataGrid={this}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n columnDefinitions={columnDefs}\n columnModel={this.state.columnModel}\n visible={!!this.props.tableConfigVisible}\n onTableConfigVisible={this.showTableConfiguration}\n paginationPageSize={paging.pageSize}\n paginationDefaultPageSize={paging.defaultPageSize}\n currentPageSize={this.state.pageSize}\n showMilliseconds={!!this.props.showMilliseconds}\n defaultShowMilliseconds={!!this.props.defaultShowMilliseconds}\n showYear={!this.props.hideYear}\n defaultShowYear={!this.props.defaultHideYear}\n rowStyleRules={this.props.rowStyleRules}\n defaultRowStyleRules={this.props.defaultRowStyleRules}\n onChangeRowStyleRules={onChangeRowStyleRules}\n />}\n\n\n {!!this.gridApi && !!this.gridColumnApi && <ModalDialog\n mode={ModalDialogMode.OK_CANCEL}\n visible={this.state.columnsConfigVisible}\n initialWidth={700}\n initialHeight={this.state.columnTransferHeight}\n title={<span><ControlOutlined style={{\n color: \"#faad14\",\n fontSize: 22,\n marginRight: 16\n }}/>{i18n(\"Columns Configuration\")}</span>}\n cancelText={i18n(\"Cancel\")}\n onCancel={() => {\n if (this.gridColumnApi && this.columnModelBeforeEdit) {\n this.gridColumnApi.applyColumnState({state: this.columnModelBeforeEdit, applyOrder: true});\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }\n }}\n onOk={() => {\n delete this.columnModelBeforeEdit;\n this.showColumnsConfig(false);\n }}\n onResize={({height}) => {\n this.setState({columnTransferHeight: height});\n }}\n zIndex={100}\n >\n <ColumnTransfer\n columnDefinitions={columnDefs as ColDef[]}\n columnModel={this.state.columnModel}\n gridApi={this.gridApi}\n gridColumnApi={this.gridColumnApi}\n height={this.state.columnTransferHeight - 154}\n />\n </ModalDialog>}\n\n </React.Fragment>\n );\n }\n}"]}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ interface Props {
3
+ style?: React.CSSProperties;
4
+ hidePrevNextButton?: boolean;
5
+ onPrevRecord?(): void;
6
+ onNextRecord?(): void;
7
+ onClose?(): void;
8
+ }
9
+ export default class DetailHeaderPanel extends React.Component<Props> {
10
+ constructor(props: Readonly<Props>);
11
+ render(): JSX.Element;
12
+ }
13
+ export {};
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { ArrowDownOutlined, ArrowUpOutlined, CloseOutlined, ProfileOutlined } from "@ant-design/icons";
3
+ import i18n from "d2core/i18n/i18n";
4
+ import { Button } from "antd";
5
+ export default class DetailHeaderPanel extends React.Component {
6
+ constructor(props) {
7
+ super(props);
8
+ }
9
+ render() {
10
+ return (React.createElement("div", { className: "ant-drawer-header", style: Object.assign({ padding: "8px 4px 8px 12px", display: "flex", justifyContent: "space-between", alignItems: "center" }, this.props.style) },
11
+ React.createElement("div", null,
12
+ React.createElement(ProfileOutlined, null),
13
+ " ",
14
+ i18n("Detail")),
15
+ React.createElement("div", null,
16
+ !this.props.hidePrevNextButton &&
17
+ React.createElement(Button.Group, { style: { marginTop: -4 } },
18
+ React.createElement(Button, { title: i18n("Previous Record"), onClick: this.props.onPrevRecord },
19
+ React.createElement(ArrowUpOutlined, null)),
20
+ React.createElement(Button, { title: i18n("Next Record"), onClick: this.props.onNextRecord },
21
+ React.createElement(ArrowDownOutlined, null))),
22
+ React.createElement(Button, { title: i18n("Close"), type: "text", onClick: this.props.onClose },
23
+ React.createElement(CloseOutlined, null)))));
24
+ }
25
+ }
26
+ //# sourceMappingURL=detailHeaderPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detailHeaderPanel.js","sourceRoot":"","sources":["../../../../../components/grid/detail/detailHeaderPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACrG,OAAO,IAAI,MAAM,kBAAkB,CAAC;AACpC,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAa5B,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAgB;IACjE,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;QACF,OAAO,CACH,6BACI,SAAS,EAAC,mBAAmB,EAC7B,KAAK,kBACD,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,eAAe,EAC/B,UAAU,EAAE,QAAQ,IACjB,IAAI,CAAC,KAAK,CAAC,KAAK;YAGvB;gBACI,oBAAC,eAAe,OAAE;;gBAAE,IAAI,CAAC,QAAQ,CAAC,CAChC;YACN;gBACK,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB;oBAC3B,oBAAC,MAAM,CAAC,KAAK,IAAC,KAAK,EAAE,EAAC,SAAS,EAAE,CAAC,CAAC,EAAC;wBAChC,oBAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;4BACpE,oBAAC,eAAe,OAAE,CACb;wBACT,oBAAC,MAAM,IAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;4BAChE,oBAAC,iBAAiB,OAAE,CACf,CACE;gBAEnB,oBAAC,MAAM,IACH,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EACpB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBAE3B,oBAAC,aAAa,OAAE,CACX,CACP,CACJ,CACT,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React from \"react\";\nimport {ArrowDownOutlined, ArrowUpOutlined, CloseOutlined, ProfileOutlined} from \"@ant-design/icons\";\nimport i18n from \"d2core/i18n/i18n\";\nimport {Button} from \"antd\";\n\ninterface Props {\n style?: React.CSSProperties\n hidePrevNextButton?: boolean\n\n onPrevRecord?(): void\n\n onNextRecord?(): void\n\n onClose?(): void\n}\n\nexport default class DetailHeaderPanel extends React.Component<Props> {\n constructor(props: Readonly<Props>) {\n super(props);\n }\n\n render() {\n return (\n <div\n className=\"ant-drawer-header\"\n style={{\n padding: \"8px 4px 8px 12px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n ...this.props.style\n }}\n >\n <div>\n <ProfileOutlined/> {i18n(\"Detail\")}\n </div>\n <div>\n {!this.props.hidePrevNextButton &&\n <Button.Group style={{marginTop: -4}}>\n <Button title={i18n(\"Previous Record\")} onClick={this.props.onPrevRecord}>\n <ArrowUpOutlined/>\n </Button>\n <Button title={i18n(\"Next Record\")} onClick={this.props.onNextRecord}>\n <ArrowDownOutlined/>\n </Button>\n </Button.Group>\n }\n <Button\n title={i18n(\"Close\")}\n type=\"text\"\n onClick={this.props.onClose}\n >\n <CloseOutlined/>\n </Button>\n </div>\n </div>\n );\n }\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d2coreui",
3
- "version": "21.0.21",
3
+ "version": "21.0.22",
4
4
  "description": "Core UI components and utilities library.",
5
5
  "author": "Ipesoft s.r.o.",
6
6
  "license": "MIT",
package/style/index.less CHANGED
@@ -289,3 +289,11 @@
289
289
  background-color: #1890ff !important;
290
290
  transform: scale(1.08);
291
291
  }
292
+
293
+ .ant-drawer-close {
294
+ box-shadow: none;
295
+ }
296
+
297
+ .ant-drawer-close {
298
+ box-shadow: none;
299
+ }