d2coreui 23.0.36 → 23.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/components/date/dateRangeInput.js +4 -4
  2. package/components/date/dateRangeInput.js.map +1 -1
  3. package/components/date/dateRangeInputConfirm.js +3 -3
  4. package/components/date/dateRangeInputConfirm.js.map +1 -1
  5. package/components/date/dateTimeInput.d.ts +2 -1
  6. package/components/date/dateTimeInput.js +5 -5
  7. package/components/date/dateTimeInput.js.map +1 -1
  8. package/components/date/durationInput.d.ts +1 -1
  9. package/components/date/durationInput.js +32 -15
  10. package/components/date/durationInput.js.map +1 -1
  11. package/components/grid/cell/customEnumCellEditor.js +7 -7
  12. package/components/grid/cell/customEnumCellEditor.js.map +1 -1
  13. package/components/grid/cell/dateCellEditor.js +3 -4
  14. package/components/grid/cell/dateCellEditor.js.map +1 -1
  15. package/components/grid/cell/rangeSelector.js +8 -7
  16. package/components/grid/cell/rangeSelector.js.map +1 -1
  17. package/components/grid/cell/simpleStatusTextCellEditor.js +7 -7
  18. package/components/grid/cell/simpleStatusTextCellEditor.js.map +1 -1
  19. package/components/grid/cell/statusTextCellEditor.js +6 -6
  20. package/components/grid/cell/statusTextCellEditor.js.map +1 -1
  21. package/components/grid/dataGrid.js +41 -30
  22. package/components/grid/dataGrid.js.map +1 -1
  23. package/components/grid/extendedDataGrid.js +2 -2
  24. package/components/grid/extendedDataGrid.js.map +1 -1
  25. package/components/modal/impl/draggableModalInner.js +2 -2
  26. package/components/modal/impl/draggableModalInner.js.map +1 -1
  27. package/components/modal/impl/draggableModalReducer.d.ts +0 -2
  28. package/components/modal/impl/draggableModalReducer.js +5 -8
  29. package/components/modal/impl/draggableModalReducer.js.map +1 -1
  30. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"simpleStatusTextCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/simpleStatusTextCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {Select} from \"antd\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport ReactDOM from 'react-dom';\r\nimport {Key} from \"ts-key-enum\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {RefSelectProps} from \"antd/es/select\";\r\nimport {CustomCellEditorProps} from \"ag-grid-react\";\r\nimport {DataGridCellEditorComponent, withAgGridHooks} from \"./dataGridCellEditorComponent\";\r\n\r\ninterface SimpleStatusTextCellEditorProperties extends CustomCellEditorProps {\r\n decimalSeparator?: string\r\n precision?: number\r\n statusTexts: { text: string, value: number }[];\r\n}\r\n\r\ninterface SimpleStatusTextCellEditorState {\r\n value: number | null\r\n opened: boolean\r\n}\r\n\r\nclass SimpleStatusTextCellEditor extends DataGridCellEditorComponent<SimpleStatusTextCellEditorProperties, SimpleStatusTextCellEditorState> {\r\n private selectComponent: RefSelectProps | null = null;\r\n private wrappingComponent: HTMLDivElement | null = null;\r\n\r\n constructor(props: Readonly<SimpleStatusTextCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, {maxWait: 200});\r\n }\r\n\r\n getInitialState(props: Readonly<SimpleStatusTextCellEditorProperties>): SimpleStatusTextCellEditorState {\r\n let value: number | null;\r\n if (props.eventKey === Key.Backspace || props.eventKey === Key.Delete) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n props.onValueChange(null);\r\n } else if (props.eventKey && props.eventKey.length === 1) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.eventKey);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n props.onValueChange(value);\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.initialValue;\r\n }\r\n return {\r\n value: value,\r\n cancelEdit: false,\r\n opened: true,\r\n } as SimpleStatusTextCellEditorState;\r\n }\r\n\r\n focus() {\r\n this.selectComponent?.focus();\r\n }\r\n\r\n select() {\r\n }\r\n\r\n placeCursorToEnd() {\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{width: \"100%\", minWidth: 150}}>\r\n <Select<number>\r\n ref={(component) => {\r\n this.selectComponent = component;\r\n }}\r\n size={\"small\"}\r\n virtual={false}\r\n className={\"select-with-one-item\"}\r\n showSearch\r\n popupMatchSelectWidth={false}\r\n style={{width: \"100%\", overflow: \"auto\", padding: 0, margin: 0}}\r\n dropdownStyle={{maxHeight: 400, overflow: 'auto'}}\r\n allowClear\r\n showAction={['focus', 'click']}\r\n filterOption={(inputValue, option) => {\r\n const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);\r\n const value = option?.value;\r\n return (value !== undefined && value !== null && typeof value === \"number\" && LocaleHolder.formatNumber(value).indexOf(inputToSearch) >= 0) || ((option?.title?.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch) ?? -1) >= 0);\r\n }}\r\n value={this.state.value !== null ? this.state.value : undefined}\r\n onChange={(value) => {\r\n this.setState({value: value === undefined ? null : value});\r\n this.props.onValueChange(value === undefined ? null : value);\r\n }}\r\n onSelect={(value) => {\r\n this.setState({value: value === undefined ? null : value});\r\n this.props.onValueChange(value === undefined ? null : value);\r\n }}\r\n onMouseDown={() => {\r\n this.updateValueImmediately();\r\n }}\r\n open={this.state.opened}\r\n onDropdownVisibleChange={(visible) => {\r\n this.setState({opened: visible});\r\n }}\r\n getPopupContainer={(_trigger) => {\r\n // very nasty trick how to keep select's popup within focusable area of ag-grid cell editor popup (prevent closing cell editor when we click in select's dropdown area)\r\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n onInputKeyDown={(e) => {\r\n if (!e.altKey && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) {\r\n this.updateValueFromPreselection();\r\n }\r\n }}\r\n onSearch={() => {\r\n this.updateValueFromPreselection();\r\n }}\r\n dropdownRender={(menu) => {\r\n return (\r\n <div ref={(component) => {\r\n this.wrappingComponent = component;\r\n }}>\r\n {menu}\r\n </div>\r\n );\r\n }}\r\n >\r\n {this.props.statusTexts?.map((statusTextItem) => {\r\n return <Select.Option\r\n id={\"select-value-\" + statusTextItem.value}\r\n key={\"\" + statusTextItem.value}\r\n value={statusTextItem.value}\r\n title={statusTextItem.text}\r\n data-optionvalue={\"\" + statusTextItem.value}\r\n >\r\n <span\r\n onMouseDown={() => {\r\n this.setState({value: statusTextItem.value});\r\n this.props.onValueChange(statusTextItem.value);\r\n }}\r\n style={{\r\n color: \"rgba(0, 0, 0, 0.85)\",\r\n whiteSpace: \"nowrap\"\r\n }}>\r\n {`${statusTextItem.text} (${statusTextItem.value})`}\r\n </span>\r\n </Select.Option>;\r\n })}\r\n </Select>\r\n </div>\r\n );\r\n }\r\n\r\n private updateValueFromPreselection() {\r\n setTimeout(() => {\r\n this.updateValueImmediately();\r\n }, 200)\r\n }\r\n\r\n private updateValueImmediately() {\r\n let selectables: HTMLElement[] = Array.from(this.wrappingComponent?.getElementsByClassName(\"ant-select-item-option-active\") ?? []) as HTMLElement[];\r\n if (selectables.length > 0) {\r\n const optionStringValue = selectables[0].dataset?.optionvalue;\r\n const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined\r\n if (optionValue) {\r\n this.setState({value: optionValue});\r\n this.props.onValueChange(optionValue);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default withAgGridHooks(SimpleStatusTextCellEditor)"]}
1
+ {"version":3,"file":"simpleStatusTextCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/simpleStatusTextCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {Select} from \"antd\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {RefSelectProps} from \"antd/es/select\";\r\nimport {CustomCellEditorProps} from \"ag-grid-react\";\r\nimport {DataGridCellEditorComponent, withAgGridHooks} from \"./dataGridCellEditorComponent\";\r\n\r\ninterface SimpleStatusTextCellEditorProperties extends CustomCellEditorProps {\r\n decimalSeparator?: string\r\n precision?: number\r\n statusTexts: { text: string, value: number }[];\r\n}\r\n\r\ninterface SimpleStatusTextCellEditorState {\r\n value: number | null\r\n opened: boolean\r\n}\r\n\r\nclass SimpleStatusTextCellEditor extends DataGridCellEditorComponent<SimpleStatusTextCellEditorProperties, SimpleStatusTextCellEditorState> {\r\n private selectComponent: RefSelectProps | null = null;\r\n private wrappingComponent: HTMLDivElement | null = null;\r\n private containerRef = React.createRef<HTMLDivElement>();\r\n\r\n constructor(props: Readonly<SimpleStatusTextCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, {maxWait: 200});\r\n }\r\n\r\n getInitialState(props: Readonly<SimpleStatusTextCellEditorProperties>): SimpleStatusTextCellEditorState {\r\n let value: number | null;\r\n if (props.eventKey === Key.Backspace || props.eventKey === Key.Delete) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n props.onValueChange(null);\r\n } else if (props.eventKey && props.eventKey.length === 1) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.eventKey);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n props.onValueChange(value);\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.initialValue;\r\n }\r\n return {\r\n value: value,\r\n cancelEdit: false,\r\n opened: true,\r\n } as SimpleStatusTextCellEditorState;\r\n }\r\n\r\n focus() {\r\n this.selectComponent?.focus();\r\n }\r\n\r\n select() {\r\n }\r\n\r\n placeCursorToEnd() {\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{width: \"100%\", minWidth: 150}} ref={this.containerRef}>\r\n <Select<number>\r\n ref={(component) => {\r\n this.selectComponent = component;\r\n }}\r\n size={\"small\"}\r\n virtual={false}\r\n className={\"select-with-one-item\"}\r\n showSearch\r\n popupMatchSelectWidth={false}\r\n style={{width: \"100%\", overflow: \"auto\", padding: 0, margin: 0}}\r\n styles={{popup: {root: {maxHeight: 400, overflow: 'auto'}}}}\r\n allowClear\r\n showAction={['focus', 'click']}\r\n filterOption={(inputValue, option) => {\r\n const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);\r\n const value = option?.value;\r\n return (value !== undefined && value !== null && typeof value === \"number\" && LocaleHolder.formatNumber(value).indexOf(inputToSearch) >= 0) || ((option?.title?.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch) ?? -1) >= 0);\r\n }}\r\n value={this.state.value !== null ? this.state.value : undefined}\r\n onChange={(value) => {\r\n this.setState({value: value === undefined ? null : value});\r\n this.props.onValueChange(value === undefined ? null : value);\r\n }}\r\n onSelect={(value) => {\r\n this.setState({value: value === undefined ? null : value});\r\n this.props.onValueChange(value === undefined ? null : value);\r\n }}\r\n onMouseDown={() => {\r\n this.updateValueImmediately();\r\n }}\r\n open={this.state.opened}\r\n onOpenChange={(visible) => {\r\n this.setState({opened: visible});\r\n }}\r\n getPopupContainer={() => {\r\n // very nasty trick how to keep select's popup within focusable area of ag-grid cell editor popup (prevent closing cell editor when we click in select's dropdown area)\r\n return (this.containerRef.current?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n onInputKeyDown={(e) => {\r\n if (!e.altKey && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) {\r\n this.updateValueFromPreselection();\r\n }\r\n }}\r\n onSearch={() => {\r\n this.updateValueFromPreselection();\r\n }}\r\n popupRender={(menu) => {\r\n return (\r\n <div ref={(component) => {\r\n this.wrappingComponent = component;\r\n }}>\r\n {menu}\r\n </div>\r\n );\r\n }}\r\n >\r\n {this.props.statusTexts?.map((statusTextItem) => {\r\n return <Select.Option\r\n id={\"select-value-\" + statusTextItem.value}\r\n key={\"\" + statusTextItem.value}\r\n value={statusTextItem.value}\r\n title={statusTextItem.text}\r\n data-optionvalue={\"\" + statusTextItem.value}\r\n >\r\n <span\r\n onMouseDown={() => {\r\n this.setState({value: statusTextItem.value});\r\n this.props.onValueChange(statusTextItem.value);\r\n }}\r\n style={{\r\n color: \"rgba(0, 0, 0, 0.85)\",\r\n whiteSpace: \"nowrap\"\r\n }}>\r\n {`${statusTextItem.text} (${statusTextItem.value})`}\r\n </span>\r\n </Select.Option>;\r\n })}\r\n </Select>\r\n </div>\r\n );\r\n }\r\n\r\n private updateValueFromPreselection() {\r\n setTimeout(() => {\r\n this.updateValueImmediately();\r\n }, 200)\r\n }\r\n\r\n private updateValueImmediately() {\r\n let selectables: HTMLElement[] = Array.from(this.wrappingComponent?.getElementsByClassName(\"ant-select-item-option-active\") ?? []) as HTMLElement[];\r\n if (selectables.length > 0) {\r\n const optionStringValue = selectables[0].dataset?.optionvalue;\r\n const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined\r\n if (optionValue) {\r\n this.setState({value: optionValue});\r\n this.props.onValueChange(optionValue);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default withAgGridHooks(SimpleStatusTextCellEditor)"]}
@@ -3,13 +3,13 @@ import { InputNumber, Select } from "antd";
3
3
  import { Key } from "ts-key-enum";
4
4
  import KeyboardUtils from "d2coreui/components/keyboard/keyboardUtils";
5
5
  import { LocaleHolder } from "d2core/i18n/localeHolder";
6
- import ReactDOM from 'react-dom';
7
6
  import scrollIntoView from "dom-scroll-into-view";
8
7
  import { DataGridCellEditorComponent, withAgGridHooks } from "./dataGridCellEditorComponent";
9
8
  class StatusTextCellEditor extends DataGridCellEditorComponent {
10
9
  constructor(props) {
11
10
  super(props);
12
11
  this.inputComponent = null;
12
+ this.containerRef = React.createRef();
13
13
  this.state = this.getInitialState(props);
14
14
  }
15
15
  getInitialState(props) {
@@ -78,8 +78,8 @@ class StatusTextCellEditor extends DataGridCellEditorComponent {
78
78
  }
79
79
  render() {
80
80
  var _a;
81
- return (React.createElement("div", { style: { width: "100%", minWidth: 150 } },
82
- React.createElement(Select, { size: "small", virtual: false, popupMatchSelectWidth: false, className: "select-with-one-item", style: { width: "100%", overflow: "auto", visibility: "hidden" }, dropdownStyle: { maxHeight: 400, overflow: 'auto' }, allowClear: true, dropdownAlign: { points: ["tl", "tr"], offset: [0, -100], overflow: { adjustX: true, adjustY: true } }, filterOption: (inputValue, option) => {
81
+ return (React.createElement("div", { style: { width: "100%", minWidth: 150 }, ref: this.containerRef },
82
+ React.createElement(Select, { size: "small", virtual: false, popupMatchSelectWidth: false, className: "select-with-one-item", style: { width: "100%", overflow: "auto", visibility: "hidden" }, styles: { popup: { root: { maxHeight: 400, overflow: 'auto' } } }, allowClear: true, dropdownAlign: { points: ["tl", "tr"], offset: [0, -100], overflow: { adjustX: true, adjustY: true } }, filterOption: (inputValue, option) => {
83
83
  var _a, _b;
84
84
  const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);
85
85
  const value = option === null || option === void 0 ? void 0 : option.value;
@@ -87,11 +87,11 @@ class StatusTextCellEditor extends DataGridCellEditorComponent {
87
87
  }, value: this.state.value !== null ? this.state.value : undefined, onChange: (value) => {
88
88
  this.setState({ value: value });
89
89
  this.props.onValueChange(value);
90
- }, open: this.state.opened, onDropdownVisibleChange: (visible) => {
90
+ }, open: this.state.opened, onOpenChange: (visible) => {
91
91
  this.setState({ opened: visible });
92
- }, getPopupContainer: (_trigger) => {
92
+ }, getPopupContainer: () => {
93
93
  var _a, _b;
94
- return ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
94
+ return ((_b = (_a = this.containerRef.current) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
95
95
  } }, (_a = this.props.statusTexts) === null || _a === void 0 ? void 0 : _a.map((statusTextItem) => {
96
96
  return React.createElement(Select.Option, { id: "select-value-" + statusTextItem.value, key: "" + statusTextItem.value, value: statusTextItem.value, title: statusTextItem.text },
97
97
  React.createElement("span", { style: {
@@ -1 +1 @@
1
- {"version":3,"file":"statusTextCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/statusTextCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {InputNumber, Select} from \"antd\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport ReactDOM from 'react-dom';\r\nimport scrollIntoView from \"dom-scroll-into-view\";\r\nimport {CustomCellEditorProps} from \"ag-grid-react\";\r\nimport {DataGridCellEditorComponent, withAgGridHooks} from \"./dataGridCellEditorComponent\";\r\n\r\ninterface StatusTextCellEditorProperties extends CustomCellEditorProps {\r\n decimalSeparator?: string\r\n precision?: number\r\n statusTexts: { text: string, value: number }[];\r\n}\r\n\r\ninterface StatusTextCellEditorState {\r\n value: number | null\r\n opened: boolean\r\n}\r\n\r\nclass StatusTextCellEditor extends DataGridCellEditorComponent<StatusTextCellEditorProperties, StatusTextCellEditorState> {\r\n private inputComponent: HTMLInputElement | null = null;\r\n\r\n constructor(props: Readonly<StatusTextCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<StatusTextCellEditorProperties>): StatusTextCellEditorState {\r\n let value: number | null;\r\n\r\n if (props.eventKey === Key.Backspace || props.eventKey === Key.Delete) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n props.onValueChange(null);\r\n } else if (props.eventKey && props.eventKey.length === 1) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.eventKey);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n props.onValueChange(value);\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.initialValue;\r\n }\r\n return {value: value} as StatusTextCellEditorState;\r\n }\r\n\r\n focus() {\r\n this.inputComponent?.focus();\r\n }\r\n\r\n select() {\r\n this.inputComponent?.select();\r\n }\r\n\r\n placeCursorToEnd() {\r\n // when we started editing, we want the carot at the end, not the start.\r\n // this comes into play in two scenarios: a) when user hits F2 and b)\r\n // when user hits a printable character, then on IE (and only IE) the carot\r\n // was placed after the first character, thus 'apply' would end up as 'pplea'\r\n const length = this.inputComponent?.value ? this.inputComponent?.value.length : 0;\r\n if (length > 0) {\r\n this.inputComponent?.setSelectionRange(length, length);\r\n }\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.eventKey && this.props.eventKey.length === 1 && '1234567890'.indexOf(this.props.eventKey) < 0;\r\n }\r\n\r\n // noinspection DuplicatedCode\r\n getScrollParent(element: HTMLElement, includeHidden = false): HTMLElement {\r\n var style = getComputedStyle(element);\r\n var excludeStaticParent = style.position === \"absolute\";\r\n var overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/;\r\n if (style.position === \"fixed\") return document.body;\r\n let parent: HTMLElement | null;\r\n for (parent = element; (parent = parent.parentElement);) {\r\n style = getComputedStyle(parent);\r\n if (excludeStaticParent && style.position === \"static\") {\r\n continue;\r\n }\r\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) return parent;\r\n }\r\n return document.body;\r\n }\r\n\r\n scrollTo(value: number) {\r\n const elementToScroll = document.getElementById(\"select-value-\" + value);\r\n if (elementToScroll) {\r\n const parent = this.getScrollParent(elementToScroll, true);\r\n scrollIntoView(elementToScroll, parent, {\r\n onlyScrollIfNeeded: true,\r\n allowHorizontalScroll: false,\r\n alignWithTop: true,\r\n offsetTop: 20,\r\n offsetBottom: 20,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{width: \"100%\", minWidth: 150}}>\r\n <Select<number>\r\n size={\"small\"}\r\n virtual={false}\r\n popupMatchSelectWidth={false}\r\n className={\"select-with-one-item\"}\r\n style={{width: \"100%\", overflow: \"auto\", visibility: \"hidden\"}}\r\n dropdownStyle={{maxHeight: 400, overflow: 'auto'}}\r\n allowClear\r\n dropdownAlign={{points: [\"tl\", \"tr\"], offset: [0, -100], overflow: {adjustX: true, adjustY: true}}}\r\n filterOption={(inputValue, option) => {\r\n const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);\r\n const value: number = option?.value as number;\r\n return (value?.toString().indexOf(inputToSearch) >= 0) || ((option?.title?.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch) ?? -1) >= 0);\r\n }}\r\n value={this.state.value !== null ? this.state.value : undefined}\r\n onChange={(value) => {\r\n this.setState({value: value});\r\n this.props.onValueChange(value);\r\n }}\r\n open={this.state.opened}\r\n onDropdownVisibleChange={(visible) => {\r\n this.setState({opened: visible});\r\n }}\r\n getPopupContainer={(_trigger) => {\r\n // very nasty trick how to keep select's popup within focusable area of ag-grid cell editor popup (prevent closing cell editor when we click in select's dropdown area)\r\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n >\r\n {this.props.statusTexts?.map((statusTextItem) => {\r\n return <Select.Option\r\n id={\"select-value-\" + statusTextItem.value}\r\n key={\"\" + statusTextItem.value}\r\n value={statusTextItem.value}\r\n title={statusTextItem.text}\r\n >\r\n <span style={{\r\n color: \"rgba(0, 0, 0, 0.85)\",\r\n whiteSpace: \"nowrap\"\r\n }}>{`${statusTextItem.text} (${statusTextItem.value})`}</span>\r\n </Select.Option>;\r\n })}\r\n </Select>\r\n <InputNumber\r\n ref={(component) => {\r\n this.inputComponent = component;\r\n }}\r\n size=\"small\"\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n width: \"100%\"\r\n }}\r\n autoFocus\r\n decimalSeparator={this.props.decimalSeparator}\r\n precision={this.props.precision}\r\n placeholder={this.state.value === null ? \"NULL\" : \"\"}\r\n value={this.state.value !== undefined && this.state.value !== null ? this.state.value : undefined}\r\n onChange={value => {\r\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\r\n // ignore navigational keystrokes ALT+cursor arrow\r\n return;\r\n }\r\n if (typeof value === \"number\") {\r\n this.setState({value: value, opened: true});\r\n this.scrollTo(value);\r\n this.props.onValueChange(value);\r\n } else if (value === undefined || value === \"\") {\r\n this.setState({value: null, opened: true});\r\n this.props.onValueChange(null);\r\n }\r\n }}\r\n onKeyDown={(e) => {\r\n if (e.key === Key.ArrowUp || e.key === Key.ArrowDown) {\r\n this.props.onKeyDown(e.nativeEvent);\r\n e.preventDefault();\r\n }\r\n }}\r\n onFocus={() => {\r\n this.setState({opened: true});\r\n }}\r\n onClick={() => {\r\n this.setState({opened: true});\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withAgGridHooks(StatusTextCellEditor)"]}
1
+ {"version":3,"file":"statusTextCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/statusTextCellEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,MAAM,CAAC;AACzC,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAChC,OAAO,aAAa,MAAM,4CAA4C,CAAC;AACvE,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAC,2BAA2B,EAAE,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAa3F,MAAM,oBAAqB,SAAQ,2BAAsF;IAIrH,YAAY,KAA+C;QACvD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJT,mBAAc,GAA4B,IAAI,CAAC;QAC/C,iBAAY,GAAG,KAAK,CAAC,SAAS,EAAkB,CAAC;QAIrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe,CAAC,KAA+C;QAC3D,IAAI,KAAoB,CAAC;QAEzB,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;YAEpE,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAEvD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpD,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;YACvD,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YAEJ,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;QAC/B,CAAC;QACD,OAAO,EAAC,KAAK,EAAE,KAAK,EAA8B,CAAC;IACvD,CAAC;IAED,KAAK;;QACD,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,MAAM;;QACF,MAAA,IAAI,CAAC,cAAc,0CAAE,MAAM,EAAE,CAAC;IAClC,CAAC;IAED,gBAAgB;;QAKZ,MAAM,MAAM,GAAG,CAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,EAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACb,MAAA,IAAI,CAAC,cAAc,0CAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,mBAAmB;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAK,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvH,CAAC;IAGD,eAAe,CAAC,OAAoB,EAAE,aAAa,GAAG,KAAK;QACvD,IAAI,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,mBAAmB,GAAG,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC;QACxD,IAAI,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC;QAC7E,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACrD,IAAI,MAA0B,CAAC;QAC/B,KAAK,MAAM,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;YACtD,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,mBAAmB,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACrD,SAAS;YACb,CAAC;YACD,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBAAE,OAAO,MAAM,CAAC;QAC9F,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,KAAa;QAClB,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;QACzE,IAAI,eAAe,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YAC3D,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE;gBACpC,kBAAkB,EAAE,IAAI;gBACxB,qBAAqB,EAAE,KAAK;gBAC5B,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,EAAE;aACnB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,MAAM;;QACF,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAC,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY;YAC9D,oBAAC,MAAM,IACH,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,KAAK,EACd,qBAAqB,EAAE,KAAK,EAC5B,SAAS,EAAE,sBAAsB,EACjC,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAC,EAC9D,MAAM,EAAE,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,EAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAC,EAAC,EAAC,EAC3D,UAAU,QACV,aAAa,EAAE,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,EAAC,EAClG,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;;oBACjC,MAAM,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBAClF,MAAM,KAAK,GAAW,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAe,CAAC;oBAC9C,OAAO,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,KAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,iBAAiB,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,mCAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACpK,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC/D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC,EACD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACvB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;oBACtB,IAAI,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;gBACrC,CAAC,EACD,iBAAiB,EAAE,GAAG,EAAE;;oBAEpB,OAAO,CAAC,MAAA,MAAA,IAAI,CAAC,YAAY,CAAC,OAAO,0CAAE,UAAU,mCAAI,QAAQ,CAAC,IAAI,CAAgB,CAAC;gBACnF,CAAC,IAEA,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;gBAC5C,OAAO,oBAAC,MAAM,CAAC,MAAM,IACjB,EAAE,EAAE,eAAe,GAAG,cAAc,CAAC,KAAK,EAC1C,GAAG,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,EAC9B,KAAK,EAAE,cAAc,CAAC,KAAK,EAC3B,KAAK,EAAE,cAAc,CAAC,IAAI;oBAEd,8BAAM,KAAK,EAAE;4BACT,KAAK,EAAE,qBAAqB;4BAC5B,UAAU,EAAE,QAAQ;yBACvB,IAAG,GAAG,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,GAAG,CAAQ,CAC9D,CAAC;YACrB,CAAC,CAAC,CACG;YACT,oBAAC,WAAW,IACR,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE;oBACf,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;gBACpC,CAAC,EACD,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE;oBACH,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,MAAM,EAAE,CAAC;oBACT,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,MAAM;iBAChB,EACD,SAAS,QACT,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EACpD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACjG,QAAQ,EAAE,KAAK,CAAC,EAAE;oBACd,IAAI,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBAEtC,OAAO;oBACX,CAAC;oBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC5B,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;wBAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACrB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACpC,CAAC;yBAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;wBAC7C,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;wBAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;oBACnC,CAAC;gBACL,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;wBACnD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;wBACpC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACvB,CAAC;gBACL,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;gBAClC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;oBACV,IAAI,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;gBAClC,CAAC,GACH,CACA,CACT,CAAC;IACN,CAAC;CACJ;AAED,eAAe,eAAe,CAAC,oBAAoB,CAAC,CAAA","sourcesContent":["import React from 'react';\r\nimport {InputNumber, Select} from \"antd\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport scrollIntoView from \"dom-scroll-into-view\";\r\nimport {CustomCellEditorProps} from \"ag-grid-react\";\r\nimport {DataGridCellEditorComponent, withAgGridHooks} from \"./dataGridCellEditorComponent\";\r\n\r\ninterface StatusTextCellEditorProperties extends CustomCellEditorProps {\r\n decimalSeparator?: string\r\n precision?: number\r\n statusTexts: { text: string, value: number }[];\r\n}\r\n\r\ninterface StatusTextCellEditorState {\r\n value: number | null\r\n opened: boolean\r\n}\r\n\r\nclass StatusTextCellEditor extends DataGridCellEditorComponent<StatusTextCellEditorProperties, StatusTextCellEditorState> {\r\n private inputComponent: HTMLInputElement | null = null;\r\n private containerRef = React.createRef<HTMLDivElement>();\r\n\r\n constructor(props: Readonly<StatusTextCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<StatusTextCellEditorProperties>): StatusTextCellEditorState {\r\n let value: number | null;\r\n\r\n if (props.eventKey === Key.Backspace || props.eventKey === Key.Delete) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n props.onValueChange(null);\r\n } else if (props.eventKey && props.eventKey.length === 1) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.eventKey);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n props.onValueChange(value);\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.initialValue;\r\n }\r\n return {value: value} as StatusTextCellEditorState;\r\n }\r\n\r\n focus() {\r\n this.inputComponent?.focus();\r\n }\r\n\r\n select() {\r\n this.inputComponent?.select();\r\n }\r\n\r\n placeCursorToEnd() {\r\n // when we started editing, we want the carot at the end, not the start.\r\n // this comes into play in two scenarios: a) when user hits F2 and b)\r\n // when user hits a printable character, then on IE (and only IE) the carot\r\n // was placed after the first character, thus 'apply' would end up as 'pplea'\r\n const length = this.inputComponent?.value ? this.inputComponent?.value.length : 0;\r\n if (length > 0) {\r\n this.inputComponent?.setSelectionRange(length, length);\r\n }\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.eventKey && this.props.eventKey.length === 1 && '1234567890'.indexOf(this.props.eventKey) < 0;\r\n }\r\n\r\n // noinspection DuplicatedCode\r\n getScrollParent(element: HTMLElement, includeHidden = false): HTMLElement {\r\n var style = getComputedStyle(element);\r\n var excludeStaticParent = style.position === \"absolute\";\r\n var overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/;\r\n if (style.position === \"fixed\") return document.body;\r\n let parent: HTMLElement | null;\r\n for (parent = element; (parent = parent.parentElement);) {\r\n style = getComputedStyle(parent);\r\n if (excludeStaticParent && style.position === \"static\") {\r\n continue;\r\n }\r\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) return parent;\r\n }\r\n return document.body;\r\n }\r\n\r\n scrollTo(value: number) {\r\n const elementToScroll = document.getElementById(\"select-value-\" + value);\r\n if (elementToScroll) {\r\n const parent = this.getScrollParent(elementToScroll, true);\r\n scrollIntoView(elementToScroll, parent, {\r\n onlyScrollIfNeeded: true,\r\n allowHorizontalScroll: false,\r\n alignWithTop: true,\r\n offsetTop: 20,\r\n offsetBottom: 20,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{width: \"100%\", minWidth: 150}} ref={this.containerRef}>\r\n <Select<number>\r\n size={\"small\"}\r\n virtual={false}\r\n popupMatchSelectWidth={false}\r\n className={\"select-with-one-item\"}\r\n style={{width: \"100%\", overflow: \"auto\", visibility: \"hidden\"}}\r\n styles={{popup: {root: {maxHeight: 400, overflow: 'auto'}}}}\r\n allowClear\r\n dropdownAlign={{points: [\"tl\", \"tr\"], offset: [0, -100], overflow: {adjustX: true, adjustY: true}}}\r\n filterOption={(inputValue, option) => {\r\n const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);\r\n const value: number = option?.value as number;\r\n return (value?.toString().indexOf(inputToSearch) >= 0) || ((option?.title?.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch) ?? -1) >= 0);\r\n }}\r\n value={this.state.value !== null ? this.state.value : undefined}\r\n onChange={(value) => {\r\n this.setState({value: value});\r\n this.props.onValueChange(value);\r\n }}\r\n open={this.state.opened}\r\n onOpenChange={(visible) => {\r\n this.setState({opened: visible});\r\n }}\r\n getPopupContainer={() => {\r\n // very nasty trick how to keep select's popup within focusable area of ag-grid cell editor popup (prevent closing cell editor when we click in select's dropdown area)\r\n return (this.containerRef.current?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n >\r\n {this.props.statusTexts?.map((statusTextItem) => {\r\n return <Select.Option\r\n id={\"select-value-\" + statusTextItem.value}\r\n key={\"\" + statusTextItem.value}\r\n value={statusTextItem.value}\r\n title={statusTextItem.text}\r\n >\r\n <span style={{\r\n color: \"rgba(0, 0, 0, 0.85)\",\r\n whiteSpace: \"nowrap\"\r\n }}>{`${statusTextItem.text} (${statusTextItem.value})`}</span>\r\n </Select.Option>;\r\n })}\r\n </Select>\r\n <InputNumber\r\n ref={(component) => {\r\n this.inputComponent = component;\r\n }}\r\n size=\"small\"\r\n style={{\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n width: \"100%\"\r\n }}\r\n autoFocus\r\n decimalSeparator={this.props.decimalSeparator}\r\n precision={this.props.precision}\r\n placeholder={this.state.value === null ? \"NULL\" : \"\"}\r\n value={this.state.value !== undefined && this.state.value !== null ? this.state.value : undefined}\r\n onChange={value => {\r\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\r\n // ignore navigational keystrokes ALT+cursor arrow\r\n return;\r\n }\r\n if (typeof value === \"number\") {\r\n this.setState({value: value, opened: true});\r\n this.scrollTo(value);\r\n this.props.onValueChange(value);\r\n } else if (value === undefined || value === \"\") {\r\n this.setState({value: null, opened: true});\r\n this.props.onValueChange(null);\r\n }\r\n }}\r\n onKeyDown={(e) => {\r\n if (e.key === Key.ArrowUp || e.key === Key.ArrowDown) {\r\n this.props.onKeyDown(e.nativeEvent);\r\n e.preventDefault();\r\n }\r\n }}\r\n onFocus={() => {\r\n this.setState({opened: true});\r\n }}\r\n onClick={() => {\r\n this.setState({opened: true});\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withAgGridHooks(StatusTextCellEditor)"]}
@@ -49,7 +49,6 @@ import DurationCellEditor from "d2coreui/components/grid/cell/durationCellEditor
49
49
  import CustomEnumCellEditor from "d2coreui/components/grid/cell/customEnumCellEditor";
50
50
  import HexaValueCellEditor from "d2coreui/components/grid/cell/hexaValueCellEditor";
51
51
  import HexaOctetStringCellEditor from "d2coreui/components/grid/cell/hexaOctetStringCellEditor";
52
- import ReactDOM from "react-dom";
53
52
  import { D2000UnixTimeNullValue, unixTimeToMoment } from "d2core/types/unixTimeUtils";
54
53
  import { compileExpression } from "filtrex";
55
54
  import DataGridPagination from "./panel/dataGridPagination";
@@ -164,6 +163,7 @@ class DataGrid extends React.Component {
164
163
  this.getDefaultColDefinition = memoizeOne(this.getDefaultColDefinition.bind(this));
165
164
  this.getAdaptedColumnDefs = memoizeOne(this.getAdaptedColumnDefs.bind(this));
166
165
  this.getCustomComponents = memoizeOne(this.getCustomComponents.bind(this));
166
+ this.getTheme = memoizeOne(getAgGridThemeFromAntd, agThemeEquals);
167
167
  this.table_context = {
168
168
  loadingOverlayRenderer: this.loadingOverlayRenderer,
169
169
  noRecordsOverlayRenderer: this.noRecordsOverlayRenderer,
@@ -416,7 +416,6 @@ class DataGrid extends React.Component {
416
416
  },
417
417
  "alignRight": {}
418
418
  };
419
- this.getTheme = memoizeOne(getAgGridThemeFromAntd);
420
419
  }
421
420
  static getCellValue(props) {
422
421
  if (props) {
@@ -1658,8 +1657,7 @@ class DataGrid extends React.Component {
1658
1657
  }
1659
1658
  ;
1660
1659
  render() {
1661
- var _a, _b;
1662
- const _c = this.props, { onGridReady, columnDefs, disableColumnDefsPreprocessing, onColumnsChanged, paging, onPaginationChanged, onViewportChanged, selectedIds, search, toolbar, filter, onFilterChanged, onFilterModified, onCellFocused, onSortChanged, components, tableConfigVisible, onTableConfigVisible, noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated, rowStyleRules, onChangeRowStyleRules, defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear, suppressLoadingOverlay, defaultColDef, headerHeight, rowData, rowDataManualMode, gridRef, quickFilterParser, quickFilterMatcher, rowSelection, contextMenu, settingsMenu, exportMenu, panelStyle, tablePanelStyle, onColumnDefsAdapted, tableOverlayRenderer, onKeyPressed, theme } = _c, passedProperties = __rest(_c, ["onGridReady", "columnDefs", "disableColumnDefsPreprocessing", "onColumnsChanged", "paging", "onPaginationChanged", "onViewportChanged", "selectedIds", "search", "toolbar", "filter", "onFilterChanged", "onFilterModified", "onCellFocused", "onSortChanged", "components", "tableConfigVisible", "onTableConfigVisible", "noRecordsOverlayRenderer", "loadingOverlayRenderer", "onRowDataUpdated", "rowStyleRules", "onChangeRowStyleRules", "defaultShowMilliseconds", "onShowMilliseconds", "defaultHideYear", "onShowYear", "suppressLoadingOverlay", "defaultColDef", "headerHeight", "rowData", "rowDataManualMode", "gridRef", "quickFilterParser", "quickFilterMatcher", "rowSelection", "contextMenu", "settingsMenu", "exportMenu", "panelStyle", "tablePanelStyle", "onColumnDefsAdapted", "tableOverlayRenderer", "onKeyPressed", "theme"]);
1660
+ const _a = this.props, { onGridReady, columnDefs, disableColumnDefsPreprocessing, onColumnsChanged, paging, onPaginationChanged, onViewportChanged, selectedIds, search, toolbar, filter, onFilterChanged, onFilterModified, onCellFocused, onSortChanged, components, tableConfigVisible, onTableConfigVisible, noRecordsOverlayRenderer, loadingOverlayRenderer, onRowDataUpdated, rowStyleRules, onChangeRowStyleRules, defaultShowMilliseconds, onShowMilliseconds, defaultHideYear, onShowYear, suppressLoadingOverlay, defaultColDef, headerHeight, rowData, rowDataManualMode, gridRef, quickFilterParser, quickFilterMatcher, rowSelection, contextMenu, settingsMenu, exportMenu, panelStyle, tablePanelStyle, onColumnDefsAdapted, tableOverlayRenderer, onKeyPressed, theme } = _a, passedProperties = __rest(_a, ["onGridReady", "columnDefs", "disableColumnDefsPreprocessing", "onColumnsChanged", "paging", "onPaginationChanged", "onViewportChanged", "selectedIds", "search", "toolbar", "filter", "onFilterChanged", "onFilterModified", "onCellFocused", "onSortChanged", "components", "tableConfigVisible", "onTableConfigVisible", "noRecordsOverlayRenderer", "loadingOverlayRenderer", "onRowDataUpdated", "rowStyleRules", "onChangeRowStyleRules", "defaultShowMilliseconds", "onShowMilliseconds", "defaultHideYear", "onShowYear", "suppressLoadingOverlay", "defaultColDef", "headerHeight", "rowData", "rowDataManualMode", "gridRef", "quickFilterParser", "quickFilterMatcher", "rowSelection", "contextMenu", "settingsMenu", "exportMenu", "panelStyle", "tablePanelStyle", "onColumnDefsAdapted", "tableOverlayRenderer", "onKeyPressed", "theme"]);
1663
1661
  let key;
1664
1662
  let paginationPageSize = undefined;
1665
1663
  if (paging.pageSize > 0) {
@@ -1699,30 +1697,30 @@ class DataGrid extends React.Component {
1699
1697
  React.createElement(Card, { size: "small", variant: "borderless", style: { height: "100%" }, styles: { body: bodyStyle } },
1700
1698
  React.createElement("div", { style: { display: "flex" } }, this.renderNavigationPanel()),
1701
1699
  React.createElement("div", { style: tPanelStyle },
1702
- React.createElement(Dropdown, { trigger: ["contextMenu"], getPopupContainer: () => {
1703
- var _a, _b;
1704
- const parentNode = ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
1705
- return parentNode;
1706
- }, menu: getContextMenu({
1707
- onlySelectedNodes: true,
1708
- showMilliseconds: !!this.props.showMilliseconds,
1709
- showYear: !this.props.hideYear,
1710
- renderer: (_a = this.props.contextMenu) === null || _a === void 0 ? void 0 : _a.renderer,
1711
- onClick: (_b = this.props.contextMenu) === null || _b === void 0 ? void 0 : _b.onClick,
1712
- getExportContent: this.getExportContent,
1713
- hideNotificationOnClipboardCopy: true,
1714
- pageOrientation: this.state.pageOrientation,
1715
- exporting: this.state.exporting,
1716
- onPageOrientationChange: this.onPageOrientationChange,
1717
- onExport: this.onExport
1718
- }), open: this.state.contextMenuVisible, onOpenChange: (visible) => {
1719
- if (!visible) {
1720
- this.setState({ contextMenuVisible: false });
1721
- }
1722
- } },
1723
- React.createElement(WithCss, { useStyles: useStyles }, (styles) => {
1724
- var _a, _b;
1725
- return React.createElement("div", { className: "ag-theme-balham " + styles.styles.baseLayout, style: { width: "100%", height: "100%" } },
1700
+ React.createElement(WithCss, { useStyles: useStyles }, (styles) => {
1701
+ var _a, _b, _c, _d;
1702
+ return React.createElement(Dropdown, { trigger: ["contextMenu"], getPopupContainer: (triggerNode) => {
1703
+ var _a;
1704
+ const parentNode = ((_a = triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.parentNode) !== null && _a !== void 0 ? _a : document.body);
1705
+ return parentNode;
1706
+ }, menu: getContextMenu({
1707
+ onlySelectedNodes: true,
1708
+ showMilliseconds: !!this.props.showMilliseconds,
1709
+ showYear: !this.props.hideYear,
1710
+ renderer: (_a = this.props.contextMenu) === null || _a === void 0 ? void 0 : _a.renderer,
1711
+ onClick: (_b = this.props.contextMenu) === null || _b === void 0 ? void 0 : _b.onClick,
1712
+ getExportContent: this.getExportContent,
1713
+ hideNotificationOnClipboardCopy: true,
1714
+ pageOrientation: this.state.pageOrientation,
1715
+ exporting: this.state.exporting,
1716
+ onPageOrientationChange: this.onPageOrientationChange,
1717
+ onExport: this.onExport
1718
+ }), open: this.state.contextMenuVisible, onOpenChange: (visible) => {
1719
+ if (!visible) {
1720
+ this.setState({ contextMenuVisible: false });
1721
+ }
1722
+ } },
1723
+ React.createElement("div", { className: "ag-theme-balham " + styles.styles.baseLayout, style: { width: "100%", height: "100%" } },
1726
1724
  React.createElement(ConfigProvider.ConfigContext.Consumer, null, (context) => {
1727
1725
  var _a;
1728
1726
  const defaultTheme = theme !== null && theme !== void 0 ? theme : this.getTheme((_a = context.theme) === null || _a === void 0 ? void 0 : _a.algorithm, styles.theme);
@@ -1732,8 +1730,8 @@ class DataGrid extends React.Component {
1732
1730
  React.createElement("div", { className: "ag-overlay", "aria-hidden": "true" },
1733
1731
  React.createElement("div", { className: "ag-overlay-panel" },
1734
1732
  React.createElement("div", { className: "ag-overlay-wrapper ag-layout-normal ag-overlay-loading-wrapper" },
1735
- React.createElement("div", { className: "ag-react-container" }, (_b = (_a = this.props).loadingOverlayRenderer) === null || _b === void 0 ? void 0 : _b.call(_a))))));
1736
- })), tableOverlayRenderer === null || tableOverlayRenderer === void 0 ? void 0 :
1733
+ React.createElement("div", { className: "ag-react-container" }, (_d = (_c = this.props).loadingOverlayRenderer) === null || _d === void 0 ? void 0 : _d.call(_c)))))));
1734
+ }), tableOverlayRenderer === null || tableOverlayRenderer === void 0 ? void 0 :
1737
1735
  tableOverlayRenderer())),
1738
1736
  !!this.gridApi && !!this.gridApi && this.state.pageSize !== null &&
1739
1737
  React.createElement(DataGridEditor, { dataGrid: this, gridApi: this.gridApi, columnDefinitions: columnDefs, columnModel: this.state.columnModel, visible: !!this.props.tableConfigVisible, onTableConfigVisible: this.showTableConfiguration, paginationPageSize: paging.pageSize, paginationDefaultPageSize: paging.defaultPageSize, currentPageSize: this.state.pageSize, showMilliseconds: !!this.props.showMilliseconds, defaultShowMilliseconds: !!this.props.defaultShowMilliseconds, showYear: !this.props.hideYear, defaultShowYear: !this.props.defaultHideYear, rowStyleRules: this.props.rowStyleRules, defaultRowStyleRules: this.props.defaultRowStyleRules, onChangeRowStyleRules: onChangeRowStyleRules }),
@@ -1780,4 +1778,17 @@ function getAgGridThemeFromAntd(algorithm, token) {
1780
1778
  headerBackgroundColor: token.colorFillAlter,
1781
1779
  });
1782
1780
  }
1781
+ function agThemeEquals(newArgs, lastArgs) {
1782
+ const [newAlgo, newToken] = newArgs;
1783
+ const [lastAlgo, lastToken] = lastArgs;
1784
+ if (newAlgo !== lastAlgo)
1785
+ return false;
1786
+ return (newToken.colorPrimary === lastToken.colorPrimary &&
1787
+ newToken.colorBgContainer === lastToken.colorBgContainer &&
1788
+ newToken.colorText === lastToken.colorText &&
1789
+ newToken.controlItemBgActive === lastToken.controlItemBgActive &&
1790
+ newToken.controlItemBgHover === lastToken.controlItemBgHover &&
1791
+ newToken.colorBorder === lastToken.colorBorder &&
1792
+ newToken.colorFillAlter === lastToken.colorFillAlter);
1793
+ }
1783
1794
  //# sourceMappingURL=dataGrid.js.map