d2coreui 21.0.15 → 21.0.18

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 (137) hide show
  1. package/components/clipboard/clipboardUtils.js.map +1 -1
  2. package/components/codemirror/SyntaxHighlighter.js.map +1 -1
  3. package/components/collapse/expandable.js.map +1 -1
  4. package/components/color/colorPicker.js +1 -1
  5. package/components/color/colorPicker.js.map +1 -1
  6. package/components/color/colorSwatch.js.map +1 -1
  7. package/components/color/colorUtils.js.map +1 -1
  8. package/components/date/dateRangeInput.js +2 -2
  9. package/components/date/dateRangeInput.js.map +1 -1
  10. package/components/date/dateRangeInputAdvancedPanel.js.map +1 -1
  11. package/components/date/dateRangeInputConfirm.js.map +1 -1
  12. package/components/date/dateTimeInput.d.ts +2 -0
  13. package/components/date/dateTimeInput.js +10 -4
  14. package/components/date/dateTimeInput.js.map +1 -1
  15. package/components/date/durationInput.d.ts +7 -7
  16. package/components/date/durationInput.js +128 -75
  17. package/components/date/durationInput.js.map +1 -1
  18. package/components/form/NiceFormItem.d.ts +13 -0
  19. package/components/form/NiceFormItem.js +29 -0
  20. package/components/form/NiceFormItem.js.map +1 -0
  21. package/components/grid/cell/cellEditorUtils.js.map +1 -1
  22. package/components/grid/cell/customEnumCellEditor.js.map +1 -1
  23. package/components/grid/cell/dateCellEditor.js +1 -1
  24. package/components/grid/cell/dateCellEditor.js.map +1 -1
  25. package/components/grid/cell/durationCellEditor.js.map +1 -1
  26. package/components/grid/cell/hexaOctetStringCellEditor.js.map +1 -1
  27. package/components/grid/cell/hexaValueCellEditor.js.map +1 -1
  28. package/components/grid/cell/numberCellEditor.js.map +1 -1
  29. package/components/grid/cell/rangeSelector.js.map +1 -1
  30. package/components/grid/cell/simpleStatusTextCellEditor.js.map +1 -1
  31. package/components/grid/cell/statusTextCellEditor.js.map +1 -1
  32. package/components/grid/cell/tableDefaultRowStyleRules.js.map +1 -1
  33. package/components/grid/cell/textCellEditor.js +5 -1
  34. package/components/grid/cell/textCellEditor.js.map +1 -1
  35. package/components/grid/cell/wildcardQuickFilter.js.map +1 -1
  36. package/components/grid/columnUtils.js.map +1 -1
  37. package/components/grid/config/columnTransfer.js.map +1 -1
  38. package/components/grid/config/dataGridEditor.js.map +1 -1
  39. package/components/grid/config/rowStylePicker.js.map +1 -1
  40. package/components/grid/dataGrid.d.ts +3 -2
  41. package/components/grid/dataGrid.js +51 -54
  42. package/components/grid/dataGrid.js.map +1 -1
  43. package/components/grid/export/contextMenu.d.ts +2 -1
  44. package/components/grid/export/contextMenu.js +3 -3
  45. package/components/grid/export/contextMenu.js.map +1 -1
  46. package/components/grid/export/progressPopup.js.map +1 -1
  47. package/components/grid/export/worker/clipboardExport.js.map +1 -1
  48. package/components/grid/export/worker/csvExport.js.map +1 -1
  49. package/components/grid/export/worker/pdfExport.js.map +1 -1
  50. package/components/grid/export/worker/txtExport.js.map +1 -1
  51. package/components/grid/extendedDataGrid.d.ts +1 -0
  52. package/components/grid/extendedDataGrid.js +6 -2
  53. package/components/grid/extendedDataGrid.js.map +1 -1
  54. package/components/grid/filter/customColumnFilter.js.map +1 -1
  55. package/components/grid/filter/dateColumnFilter.js.map +1 -1
  56. package/components/grid/filter/textColumnFilter.js.map +1 -1
  57. package/components/grid/header/simpleHeader.js.map +1 -1
  58. package/components/grid/panel/dataGridPagination.d.ts +16 -0
  59. package/components/grid/panel/dataGridPagination.js +59 -0
  60. package/components/grid/panel/dataGridPagination.js.map +1 -0
  61. package/components/grid/panel/loadingOverlay.js.map +1 -1
  62. package/components/grid/panel/noRecordsOverlay.js.map +1 -1
  63. package/components/grid/panel/tablePagination.js.map +1 -1
  64. package/components/icons/ant-design-double-right-outline.svg +5 -5
  65. package/components/icons/ant-design_close-outline.svg +5 -5
  66. package/components/icons/undoIcon.js.map +1 -1
  67. package/components/input/autoCompleteInput.js.map +1 -1
  68. package/components/input/draftUtils.js.map +1 -1
  69. package/components/input/draftail.js.map +1 -1
  70. package/components/input/hexaFormattedInput.js.map +1 -1
  71. package/components/input/mask/helpers.js.map +1 -1
  72. package/components/input/mask/inputMaskCore.js.map +1 -1
  73. package/components/input/mask/pattern.js.map +1 -1
  74. package/components/input/maskedInput.d.ts +2 -2
  75. package/components/input/maskedInput.js.map +1 -1
  76. package/components/input/passwordInput.js.map +1 -1
  77. package/components/input/simpleAutoComplete.js.map +1 -1
  78. package/components/input/textarea/extractSpansOfClasses.js.map +1 -1
  79. package/components/input/textarea/getRanges.js.map +1 -1
  80. package/components/input/textarea/getType.js.map +1 -1
  81. package/components/input/textarea/highlighedContents.js.map +1 -1
  82. package/components/input/textarea/mentionsWithHighlighting.js +1 -1
  83. package/components/input/textarea/mentionsWithHighlighting.js.map +1 -1
  84. package/components/keyboard/keyboardUtils.js.map +1 -1
  85. package/components/modal/draggableModalProvider.js.map +1 -1
  86. package/components/modal/impl/clamp.js.map +1 -1
  87. package/components/modal/impl/draggableModal.js.map +1 -1
  88. package/components/modal/impl/draggableModalContext.js.map +1 -1
  89. package/components/modal/impl/draggableModalInner.js.map +1 -1
  90. package/components/modal/impl/draggableModalReducer.js.map +1 -1
  91. package/components/modal/impl/getWindowSize.js.map +1 -1
  92. package/components/modal/impl/index.js.map +1 -1
  93. package/components/modal/impl/resizeHandle.js.map +1 -1
  94. package/components/modal/impl/useDrag.js.map +1 -1
  95. package/components/modal/impl/usePrevious.js.map +1 -1
  96. package/components/modal/impl/useResize.js.map +1 -1
  97. package/components/modal/modalDialog.js.map +1 -1
  98. package/components/picker/enumValuePicker.js.map +1 -1
  99. package/components/platformSpecific.js.map +1 -1
  100. package/components/scrollTo/onlyText.js.map +1 -1
  101. package/components/scrollTo/scrollTo.js.map +1 -1
  102. package/components/table/dataTable.d.ts +1 -0
  103. package/components/table/dataTable.js.map +1 -1
  104. package/components/table/dragSortingTable.js.map +1 -1
  105. package/components/text/impl/innerSize.js.map +1 -1
  106. package/components/text/impl/series.js.map +1 -1
  107. package/components/text/impl/shallowEqual.js.map +1 -1
  108. package/components/text/impl/uniqueId.js.map +1 -1
  109. package/components/text/impl/whilst.js.map +1 -1
  110. package/components/text/textFit.js.map +1 -1
  111. package/i18n/components.cs.json +100 -0
  112. package/i18n/components.sk.json +5 -1
  113. package/i18n/components.uk.json +100 -0
  114. package/i18n/componentsLocaleHolder.d.ts +1 -1
  115. package/i18n/componentsLocaleHolder.js +6 -4
  116. package/i18n/componentsLocaleHolder.js.map +1 -1
  117. package/package.json +70 -70
  118. package/style/ag-grid/_ag-theme-antd-vars.scss +194 -194
  119. package/style/ag-grid/ag-theme-antd.scss +87 -87
  120. package/style/ag-grid/aggrid-adaptations.css +42 -42
  121. package/style/ag-grid/aggrid.scss +11 -11
  122. package/style/antd/antd-tree-showline.css +24 -24
  123. package/style/antd/full-height-tabs.scss +62 -62
  124. package/style/draftail/draftail-editor.css +179 -179
  125. package/style/flexLayout/flexLayout.scss +130 -130
  126. package/style/flexLayout/flexLayoutBase.scss +623 -623
  127. package/style/flexLayout/new/flexLayoutBase.scss +621 -621
  128. package/style/form/niceFormItem.css +39 -0
  129. package/style/index.less +291 -291
  130. package/style/loading.css +31 -31
  131. package/style/modal/DraggableModal.css +40 -40
  132. package/style/modal/ResizeHandle.css +19 -19
  133. package/style/splitPane/splitPane.css +48 -48
  134. package/style/table/dragSortingTable.css +6 -6
  135. package/components/date/millisecondDatePicker.d.ts +0 -16
  136. package/components/date/millisecondDatePicker.js +0 -56
  137. package/components/date/millisecondDatePicker.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"durationInput.js","sourceRoot":"","sources":["../../../../components/date/durationInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {HTMLAttributes, RefObject} from \"react\";\r\nimport MaskedInput from \"d2coreui/components/input/maskedInput\";\r\nimport moment from \"moment\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {AutoComplete} from \"antd\";\r\nimport {DownOutlined} from \"@ant-design/icons\";\r\n\r\ninterface DurationInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\r\n mask: string\r\n value: moment.Duration | null\r\n onChange?: (time: moment.Duration | null) => void\r\n predefinedValues?: { key: string, value: string }[]\r\n disabled?: boolean\r\n inputStyle?: React.CSSProperties\r\n}\r\n\r\ninterface DurationInputState {\r\n valid: boolean\r\n currentPos: number | null\r\n currentInfo: MaskResult\r\n opened: boolean\r\n value: string\r\n hover: boolean\r\n}\r\n\r\ninterface MaskResult {\r\n time: moment.Duration | undefined\r\n info: InfoEntry | undefined\r\n infoFromMask: EntryValue[] | undefined\r\n length: number\r\n}\r\n\r\ninterface InfoEntry {\r\n key: string\r\n min: number\r\n max: number\r\n len: number\r\n mult: number\r\n unit: moment.unitOfTime.Base\r\n}\r\n\r\ninterface EntryValue {\r\n length: number\r\n infoEntry: InfoEntry\r\n value: number\r\n}\r\n\r\nconst DURATION_DATA_MAP: InfoEntry[] = [\r\n {key: \"SSS\", min: 0, max: 999, len: 3, mult: 1, unit: \"ms\"},\r\n {key: \"s\", min: 0, max: 59, len: 2, mult: 1000, unit: \"s\"},\r\n {key: \"m\", min: 0, max: 59, len: 2, mult: 60 * 1000, unit: \"m\"},\r\n {key: \"H\", min: 0, max: 23, len: 2, mult: 60 * 60 * 1000, unit: \"h\"},\r\n {key: \"D\", min: 0, max: 24854, len: 5, mult: 24 * 60 * 60 * 1000, unit: \"d\"},\r\n];\r\n\r\nexport const MAX_VALID_DURATION = 24854 * 24 * 60 * 60 * 1000 + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000 + 499;\r\n\r\nexport default class DurationInput extends React.Component<DurationInputProps, DurationInputState> {\r\n private inputRef: RefObject<MaskedInput> = React.createRef();\r\n\r\n constructor(props: Readonly<DurationInputProps>) {\r\n super(props);\r\n this.state = {\r\n valid: !!(props.value?.isValid()),\r\n currentPos: null,\r\n currentInfo: {\r\n info: undefined,\r\n infoFromMask: undefined,\r\n time: undefined,\r\n length: 0\r\n },\r\n opened: false,\r\n value: DurationInput.parseTime(props.value, props.mask),\r\n hover: false,\r\n };\r\n\r\n this.recalc = this.recalc.bind(this);\r\n this.increment = this.increment.bind(this);\r\n this.decrement = this.decrement.bind(this);\r\n }\r\n\r\n componentDidUpdate(): void {\r\n if (this.inputRef.current !== null) {\r\n this.inputRef.current.input.selectionStart = this.state.currentPos;\r\n this.inputRef.current.input.selectionEnd = this.state.currentPos;\r\n }\r\n\r\n const value: string = DurationInput.parseTime(this.props.value, this.props.mask);\r\n\r\n if (this.state.value !== value) {\r\n this.setState({\r\n value: value,\r\n valid: this.props.value?.isValid() ?? false,\r\n });\r\n }\r\n }\r\n\r\n recalc(): void {\r\n if (this.inputRef.current !== null) {\r\n this.setState({\r\n currentInfo: DurationInput.parseDurationFormat(this.inputRef.current.input.value, this.props.mask, this.inputRef.current.input.selectionStart),\r\n currentPos: this.inputRef.current.input.selectionStart,\r\n });\r\n }\r\n }\r\n\r\n increment(): void {\r\n if (this.state.currentInfo.info !== undefined && DurationInput.checkValue(this.state.currentInfo, this.props.value, 1)) {\r\n this.props.onChange?.(this.props.value?.add(1, this.state.currentInfo.info.unit) ?? null);\r\n }\r\n\r\n this.inputRef.current?.focus();\r\n }\r\n\r\n decrement(): void {\r\n if (this.state.currentInfo.info !== undefined && DurationInput.checkValue(this.state.currentInfo, this.props.value, -1)) {\r\n this.props.onChange?.(this.props.value?.subtract(1, this.state.currentInfo.info.unit) ?? null);\r\n }\r\n\r\n this.inputRef.current?.focus();\r\n }\r\n\r\n get input() {\r\n return this.inputRef.current?.input;\r\n }\r\n\r\n focus() {\r\n this.inputRef.current?.focus();\r\n }\r\n\r\n render() {\r\n const {mask, value, onChange, style, disabled, predefinedValues, ...props} = this.props;\r\n const incrementButtonDisabled = this.state.currentInfo.info === undefined || !DurationInput.checkValue(this.state.currentInfo, this.props.value, 1);\r\n const decrementButtonDisabled = this.state.currentInfo.info === undefined || !DurationInput.checkValue(this.state.currentInfo, this.props.value, -1);\r\n\r\n return (\r\n <div style={Object.assign({}, style, {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n })} {...props}\r\n onKeyDown={(event) => {\r\n if (event.keyCode === 38) { // up\r\n this.increment();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else if (event.keyCode === 40) { // down\r\n this.decrement();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }}\r\n onMouseEnter={() => {\r\n this.setState({hover: true});\r\n }}\r\n onMouseLeave={() => {\r\n this.setState({hover: false});\r\n }}\r\n >\r\n <AutoComplete\r\n className={(this.state.opened ? \"autocomplete-open\" : \"\") + \" \" + (this.state.valid ? \"\" : \"invalid\")}\r\n options={this.state.opened ? predefinedValues?.map(v => {\r\n return {value: v.value, label: v.key}\r\n }) : []}\r\n defaultOpen={false}\r\n defaultActiveFirstOption={false}\r\n defaultValue={undefined}\r\n disabled={disabled}\r\n style={{width: \"100%\"}}\r\n value={this.state.value}\r\n onSelect={(e) => {\r\n const val: moment.Duration = moment.duration(Number(e));\r\n this.setState({\r\n opened: false,\r\n valid: val !== undefined && val.isValid(),\r\n value: DurationInput.parseTime(val, this.props.mask),\r\n });\r\n onChange?.(val === undefined ? null : val);\r\n }}\r\n onBlur={() => {\r\n this.setState({opened: false});\r\n }}>\r\n <MaskedInput mask={this.props.mask.replace(/[a-zA-Z]/g, '1')}\r\n ref={this.inputRef}\r\n style={this.props.inputStyle}\r\n onFocus={(event => {\r\n event.target.selectionStart = event.target.selectionEnd = this.state.currentPos;\r\n })}\r\n suffix={\r\n this.props.predefinedValues !== undefined && this.props.predefinedValues.length > 0 &&\r\n <span className=\"dropdown-arrow\">\r\n <DownOutlined className=\"dropdown-arrow-icon ant-input-clear-icon\"\r\n role=\"button\"\r\n tabIndex={-1}\r\n onClick={() => {\r\n if (!this.props.disabled) {\r\n this.setState({opened: !this.state.opened});\r\n }\r\n }}/>\r\n </span>\r\n }\r\n onMouseUp={this.recalc}\r\n onKeyUp={this.recalc}\r\n onChange={(event) => {\r\n const value: MaskResult = DurationInput.parseDurationFormat(event.target.value, this.props.mask, event.target.selectionStart);\r\n onChange?.(value.time === undefined ? null : value.time);\r\n this.setState({\r\n valid: value.time !== undefined && value.time.isValid(),\r\n currentInfo: value,\r\n value: event.target.value,\r\n });\r\n }}\r\n />\r\n </AutoComplete>\r\n <div style={{position: \"absolute\", right: 2, height: 30}}>\r\n <div className=\"ant-input-number-handler-wrap\" ref={ref => {\r\n if (ref) {\r\n ref.style.setProperty(\"opacity\", this.state.hover ? \"1\" : \"0\", \"important\");\r\n }\r\n }}>\r\n <span\r\n onClick={this.increment} unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\"\r\n className={`ant-input-number-handler ant-input-number-handler-up ${incrementButtonDisabled ? \"ant-input-number-handler-up-disabled\" : \"\"}`}\r\n >\r\n <span role=\"img\" aria-label=\"up\" className=\"anticon anticon-up ant-input-number-handler-up-inner\">\r\n <svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n\r\n <span\r\n onClick={this.decrement} unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\"\r\n className={`ant-input-number-handler ant-input-number-handler-down ${decrementButtonDisabled ? \"ant-input-number-handler-down-disabled\" : \"\"}`}\r\n >\r\n <span role=\"img\" aria-label=\"down\" className=\"anticon anticon-down ant-input-number-handler-down-inner\">\r\n <svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private static checkValue(info: MaskResult, value: moment.Duration | null, offset = 0): boolean {\r\n const currentMillis = value ? value.clone().add(offset, info.info?.unit).asMilliseconds() : 0;\r\n const maxValues = info?.infoFromMask ? info.infoFromMask.map((i) => (i.length !== i.infoEntry.len ? (Math.pow(10, i.length) - 1) : i.infoEntry.max) * i.infoEntry.mult) : [];\r\n const maxMaskedValue = info?.infoFromMask ? maxValues.reduce((p, n) => p + n, 0) : 0;\r\n return !!value && currentMillis >= 0 && currentMillis <= MAX_VALID_DURATION && currentMillis <= maxMaskedValue;\r\n }\r\n\r\n private static parseDurationFormat(value: string, mask: string, cursorPos: number | null): MaskResult {\r\n let result: MaskResult = {\r\n time: moment.duration(0),\r\n info: undefined,\r\n infoFromMask: [],\r\n length: 0,\r\n };\r\n\r\n for (let v of DURATION_DATA_MAP) {\r\n let index: number = mask.indexOf(v.key);\r\n\r\n if (index !== -1) {\r\n let length: number = 0;\r\n\r\n for (let i = index;;i++) {\r\n if (mask.charAt(i) === mask.charAt(index)) {\r\n length++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n const val: number = Number(value.substring(index, index + length));\r\n\r\n if (!isNaN(val) && ((length === v.len && val >= v.min && val <= v.max) || (length !== v.len))) {\r\n result.time?.add(val, v.unit);\r\n result.infoFromMask?.push({\r\n value: val,\r\n length: length,\r\n infoEntry: v\r\n });\r\n } else {\r\n result.time = undefined;\r\n result.info = undefined;\r\n result.infoFromMask = undefined;\r\n result.length = 0;\r\n break;\r\n }\r\n\r\n if (cursorPos !== null && cursorPos >= index && cursorPos <= index + length) {\r\n result.info = v;\r\n result.length = length;\r\n }\r\n }\r\n }\r\n\r\n if (result.time !== undefined && result.infoFromMask !== undefined && result.time.isValid()) {\r\n if (result.time.asMilliseconds() > MAX_VALID_DURATION) {\r\n result.time = moment.duration(MAX_VALID_DURATION);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private static parseTime(value: moment.Duration | null, mask: string): string {\r\n return (value ?? moment.duration(0)).locale(\"locale.d2000\").format(mask, {\r\n trim: false,\r\n decimalSeparator: LocaleHolder.decimalSeparator,\r\n useGrouping: false,\r\n groupingSeparator: \"\",\r\n userLocale: LocaleHolder.formattingLocale\r\n })\r\n }\r\n}"]}
1
+ {"version":3,"file":"durationInput.js","sourceRoot":"","sources":["../../../../components/date/durationInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {HTMLAttributes, RefObject} from \"react\";\nimport MaskedInput from \"d2coreui/components/input/maskedInput\";\nimport moment from \"moment\";\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\nimport {AutoComplete} from \"antd\";\nimport {DownOutlined} from \"@ant-design/icons\";\n\ninterface DurationInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n mask: string\n value: moment.Duration | null\n onChange?: (time: moment.Duration | null) => void\n predefinedValues?: { key: string, value: string }[]\n disabled?: boolean\n inputStyle?: React.CSSProperties\n autoFocus?: boolean\n}\n\ninterface DurationInputState {\n valid: boolean\n selectionStart: number | null\n selectionEnd: number | null\n currentInfo: MaskResult\n opened: boolean\n value: string\n hover: boolean\n}\n\ninterface MaskResult {\n time?: moment.Duration\n info?: InfoEntry\n infoFromMask?: EntryValue[]\n length: number\n}\n\ninterface InfoEntry {\n key: string\n min: number\n max: number\n len: number\n mult: number\n unit: moment.unitOfTime.Base\n}\n\ninterface EntryValue {\n length: number\n infoEntry: InfoEntry\n value: number\n}\n\nconst DURATION_DATA_MAP: InfoEntry[] = [\n {key: \"SSS\", min: 0, max: 999, len: 3, mult: 1, unit: \"ms\"},\n {key: \"s\", min: 0, max: 59, len: 2, mult: 1000, unit: \"s\"},\n {key: \"m\", min: 0, max: 59, len: 2, mult: 60 * 1000, unit: \"m\"},\n {key: \"H\", min: 0, max: 23, len: 2, mult: 60 * 60 * 1000, unit: \"h\"},\n {key: \"D\", min: 0, max: 24854, len: 5, mult: 24 * 60 * 60 * 1000, unit: \"d\"},\n];\n\nexport const MAX_VALID_DURATION = 24854 * 24 * 60 * 60 * 1000 + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000 + 499;\n\nexport function parseDuration(value: string, mask: string, cursorPos?: number, maskResult?: MaskResult): moment.Duration | null {\n const result: moment.Duration = moment.duration(0);\n const clearMaskResult = () => {\n if (maskResult) {\n maskResult.info = undefined;\n maskResult.length = 0;\n maskResult.infoFromMask = undefined;\n maskResult.time = undefined;\n }\n }\n let maskPos: number = 0;\n let valPos: number;\n\n for (valPos = 0; valPos < value.length; valPos++) {\n const c: string = value.charAt(valPos);\n\n if (['D', 'H', 'm', 's', 'S'].includes(mask.charAt(maskPos))) { // je to maska\n if (/\\d/.test(c)) {\n const entry: EntryValue | undefined = getInfoFromMask(mask, maskPos);\n\n if (entry) {\n let str = c;\n\n while (/\\d/.test(value.charAt(valPos + 1))) {\n valPos++;\n str += value.charAt(valPos);\n }\n\n const time: number = parseInt(str);\n\n result.add(moment.duration(time, entry.infoEntry.unit));\n if (maskResult) {\n const item: EntryValue = {\n value: time,\n length: str.length,\n infoEntry: entry.infoEntry,\n }\n\n if (maskResult.infoFromMask) {\n maskResult.infoFromMask.push(item);\n } else {\n maskResult.infoFromMask = [item];\n }\n }\n maskPos += entry.length;\n\n if (cursorPos !== undefined && maskResult !== undefined && cursorPos >= valPos - str.length + 1 && cursorPos <= valPos + 1) {\n maskResult.info = entry.infoEntry;\n maskResult.length = str.length;\n }\n } else {\n clearMaskResult();\n return null;\n }\n } else {\n // non-numeric character when value expected\n clearMaskResult();\n return null;\n }\n } else {\n if (c === mask.charAt(maskPos)) {\n // skip special characters\n maskPos++;\n }\n }\n }\n\n if (maskPos === mask.length && valPos === value.length && result.asMilliseconds() <= MAX_VALID_DURATION) {\n if (maskResult !== undefined) {\n maskResult.time = result;\n }\n return result;\n }\n\n clearMaskResult();\n return null;\n}\n\nexport default class DurationInput extends React.Component<DurationInputProps, DurationInputState> {\n private inputRef: RefObject<MaskedInput> = React.createRef();\n\n constructor(props: Readonly<DurationInputProps>) {\n super(props);\n this.state = {\n valid: !!(props.value?.isValid()),\n selectionStart: null,\n selectionEnd: null,\n currentInfo: {\n info: undefined,\n infoFromMask: undefined,\n time: undefined,\n length: 0\n },\n opened: false,\n value: formatDuration(props.value, props.mask),\n hover: false,\n };\n\n this.recalc = this.recalc.bind(this);\n this.increment = this.increment.bind(this);\n this.decrement = this.decrement.bind(this);\n }\n\n componentDidUpdate(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.input.selectionStart = this.state.selectionStart;\n this.inputRef.current.input.selectionEnd = this.state.selectionEnd;\n }\n\n const value: string = formatDuration(this.props.value, this.props.mask);\n\n if (this.state.value !== value) {\n this.setState({\n value: value,\n valid: this.props.value?.isValid() ?? false,\n });\n }\n }\n\n recalc(): void {\n if (this.inputRef.current !== null) {\n const value: MaskResult = {length: 0};\n parseDuration(this.inputRef.current.input.value, this.props.mask, this.inputRef.current.input.selectionStart ?? undefined, value);\n this.setState({\n currentInfo: value,\n selectionStart: this.inputRef.current.input.selectionStart,\n selectionEnd: this.inputRef.current.input.selectionEnd,\n });\n }\n }\n\n increment(): void {\n if (this.state.currentInfo.info !== undefined && checkValue(this.state.currentInfo, this.props.value, 1)) {\n this.props.onChange?.(this.props.value?.add(1, this.state.currentInfo.info.unit) ?? null);\n this.setState({selectionEnd: this.state.selectionStart});\n }\n\n this.inputRef.current?.focus();\n }\n\n decrement(): void {\n if (this.state.currentInfo.info !== undefined && checkValue(this.state.currentInfo, this.props.value, -1)) {\n this.props.onChange?.(this.props.value?.subtract(1, this.state.currentInfo.info.unit) ?? null);\n this.setState({selectionEnd: this.state.selectionStart});\n }\n\n this.inputRef.current?.focus();\n }\n\n get input() {\n return this.inputRef.current?.input;\n }\n\n focus() {\n this.inputRef.current?.focus();\n }\n\n render() {\n const {mask, value, onChange, style, disabled, predefinedValues, autoFocus, ...props} = this.props;\n const incrementButtonDisabled = this.state.currentInfo.info === undefined || !checkValue(this.state.currentInfo, this.props.value, 1);\n const decrementButtonDisabled = this.state.currentInfo.info === undefined || !checkValue(this.state.currentInfo, this.props.value, -1);\n\n return (\n <div style={Object.assign({}, style, {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n position: \"relative\",\n })} {...props}\n onKeyDown={(event) => {\n if (event.keyCode === 38) { // up\n this.increment();\n event.preventDefault();\n event.stopPropagation();\n } else if (event.keyCode === 40) { // down\n this.decrement();\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n onMouseEnter={() => {\n this.setState({hover: true});\n }}\n onMouseLeave={() => {\n this.setState({hover: false});\n }}\n >\n <AutoComplete\n className={(this.state.opened ? \"autocomplete-open\" : \"\") + \" \" + (this.state.valid ? \"\" : \"invalid\")}\n options={this.state.opened ? predefinedValues?.map(v => {\n return {value: v.value, label: v.key}\n }) : []}\n defaultOpen={false}\n defaultActiveFirstOption={false}\n defaultValue={undefined}\n disabled={disabled}\n autoFocus={autoFocus}\n style={{width: \"100%\"}}\n value={this.state.valid ? this.state.value : \"\"}\n onSelect={(e) => {\n const val: moment.Duration = moment.duration(Number(e));\n this.setState({\n opened: false,\n valid: val !== undefined && val.isValid(),\n value: formatDuration(val, this.props.mask),\n });\n onChange?.(val === undefined ? null : val);\n }}\n onBlur={() => {\n this.setState({opened: false});\n }}>\n <MaskedInput mask={this.props.mask.replace(/[a-zA-Z]/g, '1')}\n ref={this.inputRef}\n style={this.props.inputStyle}\n placeholder={this.props.mask.replace(/[a-zA-Z]/g, '_')}\n autoFocus={autoFocus}\n onFocus={(event => {\n event.target.selectionStart = event.target.selectionEnd = this.state.selectionStart;\n })}\n suffix={\n this.props.predefinedValues !== undefined && this.props.predefinedValues.length > 0 &&\n <span className=\"dropdown-arrow\">\n <DownOutlined className=\"dropdown-arrow-icon ant-input-clear-icon\"\n role=\"button\"\n tabIndex={-1}\n onClick={() => {\n if (!this.props.disabled) {\n this.setState({opened: !this.state.opened});\n }\n }}/>\n </span>\n }\n onMouseUp={this.recalc}\n onKeyUp={this.recalc}\n onChange={(event) => {\n const value: MaskResult = {length: 0};\n parseDuration(event.target.value, this.props.mask, event.target.selectionStart ?? undefined, value);\n onChange?.(value.time === undefined ? null : value.time);\n this.setState({\n valid: value.time !== undefined && value.time.isValid(),\n currentInfo: value,\n value: event.target.value,\n });\n }}\n />\n </AutoComplete>\n <div style={{position: \"absolute\", right: 2, height: 30}}>\n <div className=\"ant-input-number-handler-wrap\" ref={ref => {\n if (ref) {\n ref.style.setProperty(\"opacity\", this.state.hover ? \"1\" : \"0\", \"important\");\n }\n }}>\n <span\n onClick={this.increment} unselectable=\"on\" role=\"button\" aria-label=\"Increase Value\"\n className={`ant-input-number-handler ant-input-number-handler-up ${incrementButtonDisabled ? \"ant-input-number-handler-up-disabled\" : \"\"}`}\n >\n <span role=\"img\" aria-label=\"up\" className=\"anticon anticon-up ant-input-number-handler-up-inner\">\n <svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"up\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z\"></path>\n </svg>\n </span>\n </span>\n\n <span\n onClick={this.decrement} unselectable=\"on\" role=\"button\" aria-label=\"Decrease Value\"\n className={`ant-input-number-handler ant-input-number-handler-down ${decrementButtonDisabled ? \"ant-input-number-handler-down-disabled\" : \"\"}`}\n >\n <span role=\"img\" aria-label=\"down\" className=\"anticon anticon-down ant-input-number-handler-down-inner\">\n <svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"down\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\"></path>\n </svg>\n </span>\n </span>\n </div>\n </div>\n </div>\n );\n }\n}\n\nfunction checkValue(info: MaskResult, value: moment.Duration | null, offset = 0): boolean {\n const currentMillis = value ? value.clone().add(offset, info.info?.unit).asMilliseconds() : 0;\n const maxValues = info?.infoFromMask ? info.infoFromMask.map((i) => (i.length !== i.infoEntry.len ? (Math.pow(10, i.length) - 1) : i.infoEntry.max) * i.infoEntry.mult) : [];\n const maxMaskedValue = info?.infoFromMask ? maxValues.reduce((p, n) => p + n, 0) : 0;\n return !!value && currentMillis >= 0 && currentMillis <= MAX_VALID_DURATION && currentMillis <= maxMaskedValue;\n}\n\nfunction formatDuration(value: moment.Duration | null, mask: string): string {\n return (value ?? moment.duration(0)).locale(\"locale.d2000\").format(mask, {\n trim: false,\n decimalSeparator: LocaleHolder.decimalSeparator,\n useGrouping: false,\n groupingSeparator: \"\",\n userLocale: LocaleHolder.formattingLocale\n })\n}\n\nfunction getInfoFromMask(mask: string, fromPos: number): EntryValue | undefined {\n if (fromPos < mask.length) {\n const ch = mask.charAt(fromPos);\n const info = DURATION_DATA_MAP.find((d) => d.key.includes(ch));\n\n if (info) {\n const entry: EntryValue = {\n length: 1,\n value: 0,\n infoEntry: info,\n }\n\n for (let i = fromPos + 1; i < mask.length; i++) {\n const c = mask.charAt(i);\n\n if (c === ch) {\n entry.length++;\n } else {\n break;\n }\n }\n\n return entry;\n }\n }\n\n return undefined;\n}"]}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import { FormItemProps } from "antd";
3
+ import "../../style/form/niceFormItem.css";
4
+ export interface NiceFormItemProps extends FormItemProps {
5
+ border?: boolean;
6
+ disabled?: boolean;
7
+ }
8
+ export interface NiceFormItemState {
9
+ }
10
+ export declare class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {
11
+ constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps);
12
+ render(): JSX.Element;
13
+ }
@@ -0,0 +1,29 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React from "react";
13
+ import { Form } from "antd";
14
+ import "../../style/form/niceFormItem.css";
15
+ export class NiceFormItem extends React.Component {
16
+ constructor(props) {
17
+ super(props);
18
+ }
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;
22
+ const classNames = "nice-form-item" + (className !== null && className !== void 0 ? className : "");
23
+ return (React.createElement(Form.Item, Object.assign({}, rest, { className: classNames }),
24
+ React.createElement("div", { className: "nice-float-label" },
25
+ border ? React.createElement("section", { className: "nice-form-item-box" }, children) : children,
26
+ React.createElement("label", { className: "nice-label nice-label-float", style: labelStyle }, label))));
27
+ }
28
+ }
29
+ //# sourceMappingURL=NiceFormItem.js.map
@@ -0,0 +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 +1 @@
1
- {"version":3,"file":"cellEditorUtils.js","sourceRoot":"","sources":["../../../../../components/grid/cell/cellEditorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,4CAA4C,CAAC;AACvE,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAGhC,MAAM,OAAO,eAAe;IACxB,MAAM,CAAC,oBAAoB,CAAI,CAAyB;QACpD,OAAO,CACH,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3F,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAChE,CAAC;IACN,CAAC;CACJ","sourcesContent":["import KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport React from 'react';\r\n\r\nexport class CellEditorUtils {\r\n static shouldIgnoreKeyEvent<T>(e: React.KeyboardEvent<T>): boolean {\r\n return (\r\n (KeyboardUtils.isKeyPressed(Key.Alt) && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) ||\r\n (KeyboardUtils.isKeyPressed(Key.Control) && e.key === \"KeyA\")\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"cellEditorUtils.js","sourceRoot":"","sources":["../../../../../components/grid/cell/cellEditorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,4CAA4C,CAAC;AACvE,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAGhC,MAAM,OAAO,eAAe;IACxB,MAAM,CAAC,oBAAoB,CAAI,CAAyB;QACpD,OAAO,CACH,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3F,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAChE,CAAC;IACN,CAAC;CACJ","sourcesContent":["import KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport {Key} from \"ts-key-enum\";\nimport React from 'react';\n\nexport class CellEditorUtils {\n static shouldIgnoreKeyEvent<T>(e: React.KeyboardEvent<T>): boolean {\n return (\n (KeyboardUtils.isKeyPressed(Key.Alt) && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) ||\n (KeyboardUtils.isKeyPressed(Key.Control) && e.key === \"KeyA\")\n );\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"customEnumCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/customEnumCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\r\nimport {RefSelectProps} from \"antd/es/select\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {Select} from \"antd\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nconst KEY_BACKSPACE = 8;\r\nconst KEY_DELETE = 46;\r\n\r\ninterface CustomEnumCellEditorProps extends ICellEditorParams {\r\n values: string[]\r\n}\r\n\r\ninterface CustomEnumCellEditorState {\r\n value: number | null\r\n cancelEdit: boolean\r\n opened: boolean\r\n}\r\n\r\nexport default class CustomEnumCellEditor extends React.Component<CustomEnumCellEditorProps, CustomEnumCellEditorState> implements ICellEditor {\r\n private selectComponent: RefSelectProps | null = null;\r\n private focusOpId: number | null = null;\r\n private wrappingComponent: HTMLDivElement | null = null;\r\n\r\n constructor(props: Readonly<CustomEnumCellEditorProps>) {\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<CustomEnumCellEditorProps>): CustomEnumCellEditorState {\r\n let value: number | null;\r\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n } else if (props.charPress) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.charPress);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.value;\r\n }\r\n return {\r\n value: value,\r\n cancelEdit: false,\r\n opened: true,\r\n } as CustomEnumCellEditorState;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.focusOpId) {\r\n clearTimeout(this.focusOpId);\r\n }\r\n }\r\n\r\n afterGuiAttached() {\r\n this.focusOpId = window.setTimeout(() => {\r\n this.selectComponent?.focus();\r\n }, 200);\r\n }\r\n\r\n getValue() {\r\n return this.state.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return false;\r\n }\r\n\r\n isCancelAfterEnd() {\r\n return false;\r\n }\r\n\r\n private updateValueFromPreselection() {\r\n setTimeout(() => {\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 }\r\n }\r\n }, 200)\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{width: \"100%\", minWidth: 150, height: 24}}>\r\n <Select\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 dropdownMatchSelectWidth={false}\r\n style={{width: \"100%\", overflow: \"auto\", padding: 0, margin: 0}}\r\n dropdownStyle={{width: \"100%\", maxHeight: 400, overflow: 'auto'}}\r\n showAction={['focus', 'click']}\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 }}\r\n onSelect={(value) => {\r\n this.setState({value: value === undefined ? null : 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 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.values.map((value, index) => {\r\n return (\r\n <Select.Option value={index} key={index}>{value}</Select.Option>\r\n )\r\n })}\r\n </Select>\r\n </div>\r\n )\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"customEnumCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/customEnumCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {RefSelectProps} from \"antd/es/select\";\nimport debounce from \"lodash/debounce\";\nimport {Select} from \"antd\";\nimport ReactDOM from \"react-dom\";\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\n\ninterface CustomEnumCellEditorProps extends ICellEditorParams {\n values: string[]\n}\n\ninterface CustomEnumCellEditorState {\n value: number | null\n cancelEdit: boolean\n opened: boolean\n}\n\nexport default class CustomEnumCellEditor extends React.Component<CustomEnumCellEditorProps, CustomEnumCellEditorState> implements ICellEditor {\n private selectComponent: RefSelectProps | null = null;\n private focusOpId: number | null = null;\n private wrappingComponent: HTMLDivElement | null = null;\n\n constructor(props: Readonly<CustomEnumCellEditorProps>) {\n super(props);\n this.state = this.getInitialState(props);\n this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, {maxWait: 200});\n }\n\n getInitialState(props: Readonly<CustomEnumCellEditorProps>): CustomEnumCellEditorState {\n let value: number | null;\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\n // if backspace or delete pressed, we clear the cell\n value = null;\n } else if (props.charPress) {\n // if a letter was pressed, we start with the letter\n const parsedValue = Number.parseInt(props.charPress);\n value = isNaN(parsedValue) ? props.value : parsedValue;\n } else {\n // otherwise we start with the current value\n value = props.value;\n }\n return {\n value: value,\n cancelEdit: false,\n opened: true,\n } as CustomEnumCellEditorState;\n }\n\n componentWillUnmount() {\n if (this.focusOpId) {\n clearTimeout(this.focusOpId);\n }\n }\n\n afterGuiAttached() {\n this.focusOpId = window.setTimeout(() => {\n this.selectComponent?.focus();\n }, 200);\n }\n\n getValue() {\n return this.state.value;\n }\n\n isPopup(): boolean {\n return true;\n }\n\n isCancelBeforeStart(): boolean {\n return false;\n }\n\n isCancelAfterEnd() {\n return false;\n }\n\n private updateValueFromPreselection() {\n setTimeout(() => {\n let selectables: HTMLElement[] = Array.from(this.wrappingComponent?.getElementsByClassName(\"ant-select-item-option-active\") ?? []) as HTMLElement[];\n if (selectables.length > 0) {\n const optionStringValue = selectables[0].dataset?.optionvalue;\n const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined\n if (optionValue) {\n this.setState({value: optionValue});\n }\n }\n }, 200)\n }\n\n render() {\n return (\n <div style={{width: \"100%\", minWidth: 150, height: 24}}>\n <Select\n ref={(component) => {\n this.selectComponent = component;\n }}\n size={\"small\"}\n virtual={false}\n className={\"select-with-one-item\"}\n dropdownMatchSelectWidth={false}\n style={{width: \"100%\", overflow: \"auto\", padding: 0, margin: 0}}\n dropdownStyle={{width: \"100%\", maxHeight: 400, overflow: 'auto'}}\n showAction={['focus', 'click']}\n value={this.state.value !== null ? this.state.value : undefined}\n onChange={(value) => {\n this.setState({value: value === undefined ? null : value});\n }}\n onSelect={(value) => {\n this.setState({value: value === undefined ? null : value});\n }}\n open={this.state.opened}\n onDropdownVisibleChange={(visible) => {\n this.setState({opened: visible});\n }}\n getPopupContainer={(_trigger) => {\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)\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\n }}\n dropdownRender={(menu) => {\n return (\n <div ref={(component) => {\n this.wrappingComponent = component;\n }}>\n {menu}\n </div>\n );\n }}\n >\n {this.props.values.map((value, index) => {\n return (\n <Select.Option value={index} key={index}>{value}</Select.Option>\n )\n })}\n </Select>\n </div>\n )\n }\n}\n"]}
@@ -4,7 +4,7 @@ import KeyboardUtils from "d2coreui/components/keyboard/keyboardUtils";
4
4
  import DateTimeInput from "d2coreui/components/date/dateTimeInput";
5
5
  import { DateTimeUtils } from "d2core/utils/dateTimeUtils";
6
6
  import ReactDOM from "react-dom";
7
- import { unixTimeToMoment } from "d2core/types/unixTime";
7
+ import { unixTimeToMoment } from "d2core/types/unixTimeUtils";
8
8
  const KEY_BACKSPACE = 8;
9
9
  const KEY_DELETE = 46;
10
10
  const KEY_F2 = 113;
@@ -1 +1 @@
1
- {"version":3,"file":"dateCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/dateCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport DateTimeInput from \"d2coreui/components/date/dateTimeInput\";\r\nimport {Moment} from \"moment\";\r\nimport {DateTimeUtils} from \"d2core/utils/dateTimeUtils\";\r\nimport ReactDOM from \"react-dom\";\r\nimport {unixTimeToMoment} from \"d2core/types/unixTime\";\r\n\r\nconst KEY_BACKSPACE = 8;\r\nconst KEY_DELETE = 46;\r\nconst KEY_F2 = 113;\r\n\r\ninterface DateCellEditorProperties extends ICellEditorParams {\r\n mask: string\r\n}\r\n\r\ninterface DateCellEditorState {\r\n value: Moment | null\r\n highlightAllOnFocus: boolean\r\n cancelEdit: boolean\r\n}\r\n\r\nexport default class DateCellEditor extends React.Component<DateCellEditorProperties, DateCellEditorState> implements ICellEditor {\r\n private inputComponent: DateTimeInput | null = null;\r\n private focusOpId: number | null = null;\r\n\r\n constructor(props: Readonly<DateCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<DateCellEditorProperties>): DateCellEditorState {\r\n let value: Moment | null;\r\n let highlightAllOnFocus = true;\r\n\r\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.value ? unixTimeToMoment(props.value) : null;\r\n if (props.keyPress === KEY_F2) {\r\n highlightAllOnFocus = false;\r\n }\r\n }\r\n return {\r\n value: value,\r\n highlightAllOnFocus,\r\n cancelEdit: false\r\n } as DateCellEditorState;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.focusOpId) {\r\n clearTimeout(this.focusOpId);\r\n }\r\n }\r\n\r\n afterGuiAttached() {\r\n this.focusOpId = window.setTimeout(() => {\r\n this.inputComponent?.focus();\r\n // if (this.state.highlightAllOnFocus) {\r\n // this.inputComponent?.input?.select();\r\n // this.setState({\r\n // highlightAllOnFocus: false,\r\n // });\r\n // } else {\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?.input?.value ? this.inputComponent?.input.value.length : 0;\r\n // if (length > 0) {\r\n // this.inputComponent?.input?.setSelectionRange(length, length);\r\n // }\r\n // }\r\n }, 200);\r\n }\r\n\r\n getValue() {\r\n return this.state.value ? DateTimeUtils.toUnixTime(this.state.value) : null;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\r\n }\r\n\r\n isCancelAfterEnd() {\r\n return false;\r\n }\r\n\r\n render() {\r\n return (\r\n <DateTimeInput\r\n ref={(component) => {\r\n this.inputComponent = component;\r\n }}\r\n mask={this.props.mask}\r\n value={this.state.value}\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 onChange={(value) => {\r\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\r\n // ignore navigational keystrokes ALT+cursor arrow\r\n return;\r\n }\r\n this.setState({value: value});\r\n }}\r\n style={{width: '100%', minWidth: 220}}\r\n />\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"dateCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/dateCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {Key} from \"ts-key-enum\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport DateTimeInput from \"d2coreui/components/date/dateTimeInput\";\nimport {Moment} from \"moment\";\nimport {DateTimeUtils} from \"d2core/utils/dateTimeUtils\";\nimport ReactDOM from \"react-dom\";\nimport {unixTimeToMoment} from \"d2core/types/unixTimeUtils\";\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\nconst KEY_F2 = 113;\n\ninterface DateCellEditorProperties extends ICellEditorParams {\n mask: string\n}\n\ninterface DateCellEditorState {\n value: Moment | null\n highlightAllOnFocus: boolean\n cancelEdit: boolean\n}\n\nexport default class DateCellEditor extends React.Component<DateCellEditorProperties, DateCellEditorState> implements ICellEditor {\n private inputComponent: DateTimeInput | null = null;\n private focusOpId: number | null = null;\n\n constructor(props: Readonly<DateCellEditorProperties>) {\n super(props);\n this.state = this.getInitialState(props);\n }\n\n getInitialState(props: Readonly<DateCellEditorProperties>): DateCellEditorState {\n let value: Moment | null;\n let highlightAllOnFocus = true;\n\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\n // if backspace or delete pressed, we clear the cell\n value = null;\n } else {\n // otherwise we start with the current value\n value = props.value ? unixTimeToMoment(props.value) : null;\n if (props.keyPress === KEY_F2) {\n highlightAllOnFocus = false;\n }\n }\n return {\n value: value,\n highlightAllOnFocus,\n cancelEdit: false\n } as DateCellEditorState;\n }\n\n componentWillUnmount() {\n if (this.focusOpId) {\n clearTimeout(this.focusOpId);\n }\n }\n\n afterGuiAttached() {\n this.focusOpId = window.setTimeout(() => {\n this.inputComponent?.focus();\n // if (this.state.highlightAllOnFocus) {\n // this.inputComponent?.input?.select();\n // this.setState({\n // highlightAllOnFocus: false,\n // });\n // } else {\n // // when we started editing, we want the carot at the end, not the start.\n // // this comes into play in two scenarios: a) when user hits F2 and b)\n // // when user hits a printable character, then on IE (and only IE) the carot\n // // was placed after the first character, thus 'apply' would end up as 'pplea'\n // const length = this.inputComponent?.input?.value ? this.inputComponent?.input.value.length : 0;\n // if (length > 0) {\n // this.inputComponent?.input?.setSelectionRange(length, length);\n // }\n // }\n }, 200);\n }\n\n getValue() {\n return this.state.value ? DateTimeUtils.toUnixTime(this.state.value) : null;\n }\n\n isPopup(): boolean {\n return true;\n }\n\n isCancelBeforeStart(): boolean {\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\n }\n\n isCancelAfterEnd() {\n return false;\n }\n\n render() {\n return (\n <DateTimeInput\n ref={(component) => {\n this.inputComponent = component;\n }}\n mask={this.props.mask}\n value={this.state.value}\n getPopupContainer={(_trigger) => {\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)\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\n }}\n onChange={(value) => {\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\n // ignore navigational keystrokes ALT+cursor arrow\n return;\n }\n this.setState({value: value});\n }}\n style={{width: '100%', minWidth: 220}}\n />\n );\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"durationCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/durationCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport {CellEditorUtils} from \"./cellEditorUtils\";\r\nimport DurationInput from \"d2coreui/components/date/durationInput\";\r\nimport moment from \"moment\";\r\n\r\nconst KEY_BACKSPACE = 8;\r\nconst KEY_DELETE = 46;\r\nconst KEY_F2 = 113;\r\n\r\ninterface DurationCellEditorProperties extends ICellEditorParams {\r\n mask?: string\r\n}\r\n\r\ninterface DurationCellEditorState {\r\n value: number | null\r\n highlightAllOnFocus: boolean\r\n cancelEdit: boolean\r\n}\r\n\r\nexport default class DurationCellEditor extends React.Component<DurationCellEditorProperties, DurationCellEditorState> implements ICellEditor {\r\n private inputComponent: DurationInput | null = null;\r\n private focusOpId: number | null = null;\r\n\r\n constructor(props: Readonly<DurationCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<DurationCellEditorProperties>): DurationCellEditorState {\r\n let value: number | null;\r\n let highlightAllOnFocus = true;\r\n\r\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n } else if (props.charPress) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.charPress);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n highlightAllOnFocus = false;\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.value;\r\n if (props.keyPress === KEY_F2) {\r\n highlightAllOnFocus = false;\r\n }\r\n }\r\n return {\r\n value: value,\r\n highlightAllOnFocus,\r\n cancelEdit: false\r\n } as DurationCellEditorState;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.focusOpId) {\r\n clearTimeout(this.focusOpId);\r\n }\r\n }\r\n\r\n afterGuiAttached() {\r\n this.focusOpId = window.setTimeout(() => {\r\n this.inputComponent?.focus();\r\n if (this.state.highlightAllOnFocus) {\r\n this.inputComponent?.input?.select();\r\n this.setState({\r\n highlightAllOnFocus: false,\r\n });\r\n } else {\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?.input?.value ? this.inputComponent?.input.value.length : 0;\r\n if (length > 0) {\r\n this.inputComponent?.input?.setSelectionRange(length, length);\r\n }\r\n }\r\n }, 200);\r\n }\r\n\r\n getValue() {\r\n return this.state.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\r\n }\r\n\r\n isCancelAfterEnd() {\r\n return false;\r\n }\r\n\r\n render() {\r\n return (\r\n <DurationInput\r\n ref={(component) => {\r\n this.inputComponent = component as DurationInput | null;\r\n }}\r\n mask={this.props.mask ?? \"\"}\r\n placeholder={this.state.value === null ? \"NULL\" : \"\"}\r\n value={this.state.value !== undefined && this.state.value !== null ? moment.duration(this.state.value * 1000) : null}\r\n onChange={(time: moment.Duration | null) => {\r\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\r\n // ignore navigational keystrokes ALT+cursor arrow\r\n return;\r\n }\r\n if (time) {\r\n this.setState({value: (time.asMilliseconds() / 1000)});\r\n } else if (time === undefined) {\r\n this.setState({value: null});\r\n }\r\n }}\r\n onKeyDown={(e) => {\r\n if (CellEditorUtils.shouldIgnoreKeyEvent(e)) {\r\n e.preventDefault();\r\n e.nativeEvent.stopImmediatePropagation();\r\n e.nativeEvent.preventDefault();\r\n }\r\n }}\r\n style={{width: '100%'}}\r\n />\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"durationCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/durationCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {Key} from \"ts-key-enum\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport {CellEditorUtils} from \"./cellEditorUtils\";\nimport DurationInput from \"d2coreui/components/date/durationInput\";\nimport moment from \"moment\";\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\nconst KEY_F2 = 113;\n\ninterface DurationCellEditorProperties extends ICellEditorParams {\n mask?: string\n}\n\ninterface DurationCellEditorState {\n value: number | null\n highlightAllOnFocus: boolean\n cancelEdit: boolean\n}\n\nexport default class DurationCellEditor extends React.Component<DurationCellEditorProperties, DurationCellEditorState> implements ICellEditor {\n private inputComponent: DurationInput | null = null;\n private focusOpId: number | null = null;\n\n constructor(props: Readonly<DurationCellEditorProperties>) {\n super(props);\n this.state = this.getInitialState(props);\n }\n\n getInitialState(props: Readonly<DurationCellEditorProperties>): DurationCellEditorState {\n let value: number | null;\n let highlightAllOnFocus = true;\n\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\n // if backspace or delete pressed, we clear the cell\n value = null;\n } else if (props.charPress) {\n // if a letter was pressed, we start with the letter\n const parsedValue = Number.parseInt(props.charPress);\n value = isNaN(parsedValue) ? props.value : parsedValue;\n highlightAllOnFocus = false;\n } else {\n // otherwise we start with the current value\n value = props.value;\n if (props.keyPress === KEY_F2) {\n highlightAllOnFocus = false;\n }\n }\n return {\n value: value,\n highlightAllOnFocus,\n cancelEdit: false\n } as DurationCellEditorState;\n }\n\n componentWillUnmount() {\n if (this.focusOpId) {\n clearTimeout(this.focusOpId);\n }\n }\n\n afterGuiAttached() {\n this.focusOpId = window.setTimeout(() => {\n this.inputComponent?.focus();\n if (this.state.highlightAllOnFocus) {\n this.inputComponent?.input?.select();\n this.setState({\n highlightAllOnFocus: false,\n });\n } else {\n // when we started editing, we want the carot at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the carot\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n const length = this.inputComponent?.input?.value ? this.inputComponent?.input.value.length : 0;\n if (length > 0) {\n this.inputComponent?.input?.setSelectionRange(length, length);\n }\n }\n }, 200);\n }\n\n getValue() {\n return this.state.value;\n }\n\n isPopup(): boolean {\n return true;\n }\n\n isCancelBeforeStart(): boolean {\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\n }\n\n isCancelAfterEnd() {\n return false;\n }\n\n render() {\n return (\n <DurationInput\n ref={(component) => {\n this.inputComponent = component as DurationInput | null;\n }}\n mask={this.props.mask ?? \"\"}\n placeholder={this.state.value === null ? \"NULL\" : \"\"}\n value={this.state.value !== undefined && this.state.value !== null ? moment.duration(this.state.value * 1000) : null}\n onChange={(time: moment.Duration | null) => {\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\n // ignore navigational keystrokes ALT+cursor arrow\n return;\n }\n if (time) {\n this.setState({value: (time.asMilliseconds() / 1000)});\n } else if (time === undefined) {\n this.setState({value: null});\n }\n }}\n onKeyDown={(e) => {\n if (CellEditorUtils.shouldIgnoreKeyEvent(e)) {\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n e.nativeEvent.preventDefault();\n }\n }}\n style={{width: '100%'}}\n />\n );\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"hexaOctetStringCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/hexaOctetStringCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport MaskInput from 'react-maskinput';\r\n\r\nconst KEY_BACKSPACE = 8;\r\nconst KEY_DELETE = 46;\r\nconst KEY_F2 = 113;\r\n\r\ninterface HexaOctetStringCellEditorProps extends ICellEditorParams {\r\n hexaStringMaxLength: number\r\n}\r\n\r\ninterface HexaOctetStringCellEditorState {\r\n value: string | null\r\n highlightAllOnFocus: boolean\r\n cancelEdit: boolean\r\n}\r\n\r\nexport default class HexaOctetStringCellEditor extends React.Component<HexaOctetStringCellEditorProps, HexaOctetStringCellEditorState> implements ICellEditor {\r\n private inputComponent: HTMLInputElement | null = null;\r\n private focusOpId: number | null = null;\r\n\r\n constructor(props: Readonly<HexaOctetStringCellEditorProps>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<HexaOctetStringCellEditorProps>): HexaOctetStringCellEditorState {\r\n let value: number | null;\r\n let highlightAllOnFocus = true;\r\n\r\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n } else if (props.charPress) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.charPress);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n highlightAllOnFocus = false;\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.value;\r\n if (props.keyPress === KEY_F2) {\r\n highlightAllOnFocus = false;\r\n }\r\n }\r\n return {\r\n value: value,\r\n highlightAllOnFocus,\r\n cancelEdit: false\r\n } as HexaOctetStringCellEditorState;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.focusOpId) {\r\n clearTimeout(this.focusOpId);\r\n }\r\n }\r\n\r\n afterGuiAttached() {\r\n this.focusOpId = window.setTimeout(() => {\r\n this.inputComponent?.focus();\r\n if (this.state.highlightAllOnFocus) {\r\n this.inputComponent?.select();\r\n this.setState({\r\n highlightAllOnFocus: false,\r\n });\r\n } else {\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 }, 200);\r\n }\r\n\r\n getValue() {\r\n return this.state.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\r\n }\r\n\r\n isCancelAfterEnd() {\r\n return false;\r\n }\r\n\r\n render() {\r\n let mask = \"\";\r\n for (let i = 0; i < this.props.hexaStringMaxLength; i++) {\r\n mask += \"** \";\r\n }\r\n\r\n return (\r\n <MaskInput\r\n getReference={component => {\r\n this.inputComponent = component;\r\n component.className = \"ant-input ant-input-sm\";\r\n }}\r\n value={this.state.value !== undefined && this.state.value !== null ? this.state.value.toUpperCase() : \"\"}\r\n onValueChange={event => {\r\n const value = event.value;\r\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\r\n // ignore navigational keystrokes ALT+cursor arrow\r\n return;\r\n }\r\n\r\n if (/^[0-9A-Fa-f ]+$/.test(value)) {\r\n this.setState({value: value.toUpperCase()});\r\n } else if (value === \"\") {\r\n this.setState({value: \"\"});\r\n }\r\n }}\r\n mask={mask.trim()}\r\n maskChar=\" \"\r\n showMask={false}\r\n />\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"hexaOctetStringCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/hexaOctetStringCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {Key} from \"ts-key-enum\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport MaskInput from 'react-maskinput';\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\nconst KEY_F2 = 113;\n\ninterface HexaOctetStringCellEditorProps extends ICellEditorParams {\n hexaStringMaxLength: number\n}\n\ninterface HexaOctetStringCellEditorState {\n value: string | null\n highlightAllOnFocus: boolean\n cancelEdit: boolean\n}\n\nexport default class HexaOctetStringCellEditor extends React.Component<HexaOctetStringCellEditorProps, HexaOctetStringCellEditorState> implements ICellEditor {\n private inputComponent: HTMLInputElement | null = null;\n private focusOpId: number | null = null;\n\n constructor(props: Readonly<HexaOctetStringCellEditorProps>) {\n super(props);\n this.state = this.getInitialState(props);\n }\n\n getInitialState(props: Readonly<HexaOctetStringCellEditorProps>): HexaOctetStringCellEditorState {\n let value: number | null;\n let highlightAllOnFocus = true;\n\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\n // if backspace or delete pressed, we clear the cell\n value = null;\n } else if (props.charPress) {\n // if a letter was pressed, we start with the letter\n const parsedValue = Number.parseInt(props.charPress);\n value = isNaN(parsedValue) ? props.value : parsedValue;\n highlightAllOnFocus = false;\n } else {\n // otherwise we start with the current value\n value = props.value;\n if (props.keyPress === KEY_F2) {\n highlightAllOnFocus = false;\n }\n }\n return {\n value: value,\n highlightAllOnFocus,\n cancelEdit: false\n } as HexaOctetStringCellEditorState;\n }\n\n componentWillUnmount() {\n if (this.focusOpId) {\n clearTimeout(this.focusOpId);\n }\n }\n\n afterGuiAttached() {\n this.focusOpId = window.setTimeout(() => {\n this.inputComponent?.focus();\n if (this.state.highlightAllOnFocus) {\n this.inputComponent?.select();\n this.setState({\n highlightAllOnFocus: false,\n });\n } else {\n // when we started editing, we want the carot at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the carot\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n const length = this.inputComponent?.value ? this.inputComponent?.value.length : 0;\n if (length > 0) {\n this.inputComponent?.setSelectionRange(length, length);\n }\n }\n }, 200);\n }\n\n getValue() {\n return this.state.value;\n }\n\n isPopup(): boolean {\n return true;\n }\n\n isCancelBeforeStart(): boolean {\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\n }\n\n isCancelAfterEnd() {\n return false;\n }\n\n render() {\n let mask = \"\";\n for (let i = 0; i < this.props.hexaStringMaxLength; i++) {\n mask += \"** \";\n }\n\n return (\n <MaskInput\n getReference={component => {\n this.inputComponent = component;\n component.className = \"ant-input ant-input-sm\";\n }}\n value={this.state.value !== undefined && this.state.value !== null ? this.state.value.toUpperCase() : \"\"}\n onValueChange={event => {\n const value = event.value;\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\n // ignore navigational keystrokes ALT+cursor arrow\n return;\n }\n\n if (/^[0-9A-Fa-f ]+$/.test(value)) {\n this.setState({value: value.toUpperCase()});\n } else if (value === \"\") {\n this.setState({value: \"\"});\n }\n }}\n mask={mask.trim()}\n maskChar=\" \"\n showMask={false}\n />\n );\n }\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"hexaValueCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/hexaValueCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport HexaFormattedInput from \"d2coreui/components/input/hexaFormattedInput\";\r\n\r\nconst KEY_BACKSPACE = 8;\r\nconst KEY_DELETE = 46;\r\nconst KEY_F2 = 113;\r\n\r\ninterface HexaValueCellEditorProps extends ICellEditorParams {\r\n maxLength: number\r\n}\r\n\r\ninterface HexaValueCellEditorState {\r\n value: string | null\r\n highlightAllOnFocus: boolean\r\n cancelEdit: boolean\r\n}\r\n\r\nexport default class HexaValueCellEditor extends React.Component<HexaValueCellEditorProps, HexaValueCellEditorState> implements ICellEditor {\r\n private inputComponent: HexaFormattedInput | null = null;\r\n private focusOpId: number | null = null;\r\n\r\n constructor(props: Readonly<HexaValueCellEditorProps>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<HexaValueCellEditorProps>): HexaValueCellEditorState {\r\n let value: number | null;\r\n let highlightAllOnFocus = true;\r\n\r\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n } else if (props.charPress) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.charPress);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n highlightAllOnFocus = false;\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.value;\r\n if (props.keyPress === KEY_F2) {\r\n highlightAllOnFocus = false;\r\n }\r\n }\r\n return {\r\n value: value,\r\n highlightAllOnFocus,\r\n cancelEdit: false\r\n } as HexaValueCellEditorState;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.focusOpId) {\r\n clearTimeout(this.focusOpId);\r\n }\r\n }\r\n\r\n afterGuiAttached() {\r\n this.focusOpId = window.setTimeout(() => {\r\n this.inputComponent?.focus();\r\n if (this.state.highlightAllOnFocus) {\r\n this.inputComponent?.input?.select();\r\n this.setState({\r\n highlightAllOnFocus: false,\r\n });\r\n } else {\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?.input?.value ? this.inputComponent?.input.value.length : 0;\r\n if (length > 0) {\r\n this.inputComponent?.input?.setSelectionRange(length, length);\r\n }\r\n }\r\n }, 200);\r\n }\r\n\r\n getValue() {\r\n return this.state.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\r\n }\r\n\r\n isCancelAfterEnd() {\r\n return false;\r\n }\r\n\r\n render() {\r\n return (\r\n <HexaFormattedInput\r\n ref={(component) => {\r\n this.inputComponent = component;\r\n }}\r\n value={this.state.value ?? \"\"}\r\n maxLength={this.props.maxLength}\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 (value) {\r\n this.setState({value: value});\r\n } else {\r\n this.setState({value: null});\r\n }\r\n }}\r\n size={\"small\"}\r\n />\r\n )\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"hexaValueCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/hexaValueCellEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAChC,OAAO,aAAa,MAAM,4CAA4C,CAAC;AACvE,OAAO,kBAAkB,MAAM,8CAA8C,CAAC;AAE9E,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,MAAM,GAAG,GAAG,CAAC;AAYnB,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,KAAK,CAAC,SAA6D;IAIhH,YAAY,KAAyC;QACjD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJT,mBAAc,GAA8B,IAAI,CAAC;QACjD,cAAS,GAAkB,IAAI,CAAC;QAIpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe,CAAC,KAAyC;QACrD,IAAI,KAAoB,CAAC;QACzB,IAAI,mBAAmB,GAAG,IAAI,CAAC;QAE/B,IAAI,KAAK,CAAC,QAAQ,KAAK,aAAa,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;YAEnE,KAAK,GAAG,IAAI,CAAC;SAChB;aAAM,IAAI,KAAK,CAAC,SAAS,EAAE;YAExB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrD,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;YACvD,mBAAmB,GAAG,KAAK,CAAC;SAC/B;aAAM;YAEH,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACpB,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE;gBAC3B,mBAAmB,GAAG,KAAK,CAAC;aAC/B;SACJ;QACD,OAAO;YACH,KAAK,EAAE,KAAK;YACZ,mBAAmB;YACnB,UAAU,EAAE,KAAK;SACQ,CAAC;IAClC,CAAC;IAED,oBAAoB;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAChC;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;;YACpC,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBAChC,MAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,0CAAE,MAAM,EAAE,CAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC;oBACV,mBAAmB,EAAE,KAAK;iBAC7B,CAAC,CAAC;aACN;iBAAM;gBAKH,MAAM,MAAM,GAAG,CAAA,MAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,0CAAE,KAAK,EAAC,CAAC,CAAC,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/F,IAAI,MAAM,GAAG,CAAC,EAAE;oBACZ,MAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,0CAAE,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACjE;aACJ;QACL,CAAC,EAAE,GAAG,CAAC,CAAC;IACZ,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB;QACf,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,gBAAgB;QACZ,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM;;QACF,OAAO,CACH,oBAAC,kBAAkB,IACf,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE;gBACf,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YACpC,CAAC,EACD,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,mCAAI,EAAE,EAC7B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,QAAQ,EAAE,KAAK,CAAC,EAAE;gBACd,IAAI,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAErC,OAAO;iBACV;gBACD,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;iBACjC;qBAAM;oBACH,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;iBAChC;YACL,CAAC,EACD,IAAI,EAAE,OAAO,GACf,CACL,CAAA;IACL,CAAC;CACJ","sourcesContent":["import React from 'react';\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {Key} from \"ts-key-enum\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport HexaFormattedInput from \"d2coreui/components/input/hexaFormattedInput\";\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\nconst KEY_F2 = 113;\n\ninterface HexaValueCellEditorProps extends ICellEditorParams {\n maxLength: number\n}\n\ninterface HexaValueCellEditorState {\n value: string | null\n highlightAllOnFocus: boolean\n cancelEdit: boolean\n}\n\nexport default class HexaValueCellEditor extends React.Component<HexaValueCellEditorProps, HexaValueCellEditorState> implements ICellEditor {\n private inputComponent: HexaFormattedInput | null = null;\n private focusOpId: number | null = null;\n\n constructor(props: Readonly<HexaValueCellEditorProps>) {\n super(props);\n this.state = this.getInitialState(props);\n }\n\n getInitialState(props: Readonly<HexaValueCellEditorProps>): HexaValueCellEditorState {\n let value: number | null;\n let highlightAllOnFocus = true;\n\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\n // if backspace or delete pressed, we clear the cell\n value = null;\n } else if (props.charPress) {\n // if a letter was pressed, we start with the letter\n const parsedValue = Number.parseInt(props.charPress);\n value = isNaN(parsedValue) ? props.value : parsedValue;\n highlightAllOnFocus = false;\n } else {\n // otherwise we start with the current value\n value = props.value;\n if (props.keyPress === KEY_F2) {\n highlightAllOnFocus = false;\n }\n }\n return {\n value: value,\n highlightAllOnFocus,\n cancelEdit: false\n } as HexaValueCellEditorState;\n }\n\n componentWillUnmount() {\n if (this.focusOpId) {\n clearTimeout(this.focusOpId);\n }\n }\n\n afterGuiAttached() {\n this.focusOpId = window.setTimeout(() => {\n this.inputComponent?.focus();\n if (this.state.highlightAllOnFocus) {\n this.inputComponent?.input?.select();\n this.setState({\n highlightAllOnFocus: false,\n });\n } else {\n // when we started editing, we want the carot at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the carot\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n const length = this.inputComponent?.input?.value ? this.inputComponent?.input.value.length : 0;\n if (length > 0) {\n this.inputComponent?.input?.setSelectionRange(length, length);\n }\n }\n }, 200);\n }\n\n getValue() {\n return this.state.value;\n }\n\n isPopup(): boolean {\n return true;\n }\n\n isCancelBeforeStart(): boolean {\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\n }\n\n isCancelAfterEnd() {\n return false;\n }\n\n render() {\n return (\n <HexaFormattedInput\n ref={(component) => {\n this.inputComponent = component;\n }}\n value={this.state.value ?? \"\"}\n maxLength={this.props.maxLength}\n onChange={value => {\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\n // ignore navigational keystrokes ALT+cursor arrow\n return;\n }\n if (value) {\n this.setState({value: value});\n } else {\n this.setState({value: null});\n }\n }}\n size={\"small\"}\n />\n )\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"numberCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/numberCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {InputNumber} from \"antd\";\r\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\r\nimport {CellEditorUtils} from \"./cellEditorUtils\";\r\n\r\nconst KEY_BACKSPACE = 8;\r\nconst KEY_DELETE = 46;\r\nconst KEY_F2 = 113;\r\n\r\ninterface NumberCellEditorProperties extends ICellEditorParams {\r\n decimalSeparator?: string\r\n precision?: number\r\n min?: number\r\n max?: number\r\n}\r\n\r\ninterface NumericCellEditorState {\r\n value: number | null\r\n highlightAllOnFocus: boolean\r\n cancelEdit: boolean\r\n}\r\n\r\nexport default class NumberCellEditor extends React.Component<NumberCellEditorProperties, NumericCellEditorState> implements ICellEditor {\r\n private inputComponent: HTMLInputElement | null = null;\r\n private focusOpId: number | null = null;\r\n\r\n constructor(props: Readonly<NumberCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n }\r\n\r\n getInitialState(props: Readonly<NumberCellEditorProperties>): NumericCellEditorState {\r\n let value: number | null;\r\n let highlightAllOnFocus = true;\r\n\r\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n } else if (props.charPress) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.charPress);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n highlightAllOnFocus = false;\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.value;\r\n if (props.keyPress === KEY_F2) {\r\n highlightAllOnFocus = false;\r\n }\r\n }\r\n return {\r\n value: value,\r\n highlightAllOnFocus,\r\n cancelEdit: false\r\n } as NumericCellEditorState;\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.focusOpId) {\r\n clearTimeout(this.focusOpId);\r\n }\r\n }\r\n\r\n afterGuiAttached() {\r\n this.focusOpId = window.setTimeout(() => {\r\n this.inputComponent?.focus();\r\n if (this.state.highlightAllOnFocus) {\r\n this.inputComponent?.select();\r\n this.setState({\r\n highlightAllOnFocus: false,\r\n });\r\n } else {\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 }, 200);\r\n }\r\n\r\n getValue() {\r\n return this.state.value;\r\n }\r\n\r\n isPopup(): boolean {\r\n return true;\r\n }\r\n\r\n isCancelBeforeStart(): boolean {\r\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\r\n }\r\n\r\n isCancelAfterEnd() {\r\n return false;\r\n }\r\n\r\n render() {\r\n return (\r\n <InputNumber\r\n ref={(component) => {\r\n this.inputComponent = component;\r\n }}\r\n size=\"small\"\r\n autoFocus\r\n decimalSeparator={this.props.decimalSeparator}\r\n precision={this.props.precision}\r\n min={this.props.min}\r\n max={this.props.max}\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: number | string | undefined) => {\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});\r\n } else if (value === undefined || value === \"\") {\r\n this.setState({value: null});\r\n }\r\n }}\r\n onKeyDown={(e) => {\r\n if (CellEditorUtils.shouldIgnoreKeyEvent(e)) {\r\n // this.props.onKeyDown(e.nativeEvent);\r\n e.preventDefault();\r\n e.nativeEvent.stopImmediatePropagation();\r\n e.nativeEvent.preventDefault();\r\n }\r\n }}\r\n style={{width: '100%'}}\r\n />\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"numberCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/numberCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport {InputNumber} from \"antd\";\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {Key} from \"ts-key-enum\";\nimport KeyboardUtils from \"d2coreui/components/keyboard/keyboardUtils\";\nimport {CellEditorUtils} from \"./cellEditorUtils\";\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\nconst KEY_F2 = 113;\n\ninterface NumberCellEditorProperties extends ICellEditorParams {\n decimalSeparator?: string\n precision?: number\n min?: number\n max?: number\n}\n\ninterface NumericCellEditorState {\n value: number | null\n highlightAllOnFocus: boolean\n cancelEdit: boolean\n}\n\nexport default class NumberCellEditor extends React.Component<NumberCellEditorProperties, NumericCellEditorState> implements ICellEditor {\n private inputComponent: HTMLInputElement | null = null;\n private focusOpId: number | null = null;\n\n constructor(props: Readonly<NumberCellEditorProperties>) {\n super(props);\n this.state = this.getInitialState(props);\n }\n\n getInitialState(props: Readonly<NumberCellEditorProperties>): NumericCellEditorState {\n let value: number | null;\n let highlightAllOnFocus = true;\n\n if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {\n // if backspace or delete pressed, we clear the cell\n value = null;\n } else if (props.charPress) {\n // if a letter was pressed, we start with the letter\n const parsedValue = Number.parseInt(props.charPress);\n value = isNaN(parsedValue) ? props.value : parsedValue;\n highlightAllOnFocus = false;\n } else {\n // otherwise we start with the current value\n value = props.value;\n if (props.keyPress === KEY_F2) {\n highlightAllOnFocus = false;\n }\n }\n return {\n value: value,\n highlightAllOnFocus,\n cancelEdit: false\n } as NumericCellEditorState;\n }\n\n componentWillUnmount() {\n if (this.focusOpId) {\n clearTimeout(this.focusOpId);\n }\n }\n\n afterGuiAttached() {\n this.focusOpId = window.setTimeout(() => {\n this.inputComponent?.focus();\n if (this.state.highlightAllOnFocus) {\n this.inputComponent?.select();\n this.setState({\n highlightAllOnFocus: false,\n });\n } else {\n // when we started editing, we want the carot at the end, not the start.\n // this comes into play in two scenarios: a) when user hits F2 and b)\n // when user hits a printable character, then on IE (and only IE) the carot\n // was placed after the first character, thus 'apply' would end up as 'pplea'\n const length = this.inputComponent?.value ? this.inputComponent?.value.length : 0;\n if (length > 0) {\n this.inputComponent?.setSelectionRange(length, length);\n }\n }\n }, 200);\n }\n\n getValue() {\n return this.state.value;\n }\n\n isPopup(): boolean {\n return true;\n }\n\n isCancelBeforeStart(): boolean {\n return !!this.props.charPress && '1234567890'.indexOf(this.props.charPress) < 0;\n }\n\n isCancelAfterEnd() {\n return false;\n }\n\n render() {\n return (\n <InputNumber\n ref={(component) => {\n this.inputComponent = component;\n }}\n size=\"small\"\n autoFocus\n decimalSeparator={this.props.decimalSeparator}\n precision={this.props.precision}\n min={this.props.min}\n max={this.props.max}\n placeholder={this.state.value === null ? \"NULL\" : \"\"}\n value={this.state.value !== undefined && this.state.value !== null ? this.state.value : undefined}\n onChange={(value: number | string | undefined) => {\n if (KeyboardUtils.isKeyPressed(Key.Alt)) {\n // ignore navigational keystrokes ALT+cursor arrow\n return;\n }\n if (typeof value === \"number\") {\n this.setState({value: value});\n } else if (value === undefined || value === \"\") {\n this.setState({value: null});\n }\n }}\n onKeyDown={(e) => {\n if (CellEditorUtils.shouldIgnoreKeyEvent(e)) {\n // this.props.onKeyDown(e.nativeEvent);\n e.preventDefault();\n e.nativeEvent.stopImmediatePropagation();\n e.nativeEvent.preventDefault();\n }\n }}\n style={{width: '100%'}}\n />\n );\n }\n}"]}