d2coreui 21.0.33 → 23.0.0

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 (295) hide show
  1. package/components/clipboard/clipboardUtils.d.ts +4 -3
  2. package/components/clipboard/clipboardUtils.js +47 -22
  3. package/components/clipboard/clipboardUtils.js.map +1 -1
  4. package/components/codemirror/SyntaxHighlighter.d.ts +21 -21
  5. package/components/codemirror/SyntaxHighlighter.js +45 -44
  6. package/components/codemirror/SyntaxHighlighter.js.map +1 -1
  7. package/components/collapse/expandable.d.ts +13 -12
  8. package/components/collapse/expandable.js +20 -20
  9. package/components/collapse/expandable.js.map +1 -1
  10. package/components/color/colorPicker.d.ts +20 -20
  11. package/components/color/colorPicker.js +53 -53
  12. package/components/color/colorPicker.js.map +1 -1
  13. package/components/color/colorSwatch.d.ts +13 -12
  14. package/components/color/colorSwatch.js +62 -62
  15. package/components/color/colorSwatch.js.map +1 -1
  16. package/components/color/colorUtils.d.ts +7 -7
  17. package/components/color/colorUtils.js +43 -43
  18. package/components/color/colorUtils.js.map +1 -1
  19. package/components/date/dateRangeInput.d.ts +66 -64
  20. package/components/date/dateRangeInput.js +292 -297
  21. package/components/date/dateRangeInput.js.map +1 -1
  22. package/components/date/dateRangeInputAdvancedPanel.d.ts +27 -26
  23. package/components/date/dateRangeInputAdvancedPanel.js +130 -115
  24. package/components/date/dateRangeInputAdvancedPanel.js.map +1 -1
  25. package/components/date/dateRangeInputConfirm.d.ts +31 -29
  26. package/components/date/dateRangeInputConfirm.js +132 -121
  27. package/components/date/dateRangeInputConfirm.js.map +1 -1
  28. package/components/date/dateTimeInput.d.ts +72 -69
  29. package/components/date/dateTimeInput.js +440 -412
  30. package/components/date/dateTimeInput.js.map +1 -1
  31. package/components/date/durationInput.d.ts +59 -56
  32. package/components/date/durationInput.js +269 -280
  33. package/components/date/durationInput.js.map +1 -1
  34. package/components/form/NiceFormItem.d.ts +14 -14
  35. package/components/form/NiceFormItem.js +28 -31
  36. package/components/form/NiceFormItem.js.map +1 -1
  37. package/components/grid/cell/beanAccessor.d.ts +9 -0
  38. package/components/grid/cell/beanAccessor.js +13 -0
  39. package/components/grid/cell/beanAccessor.js.map +1 -0
  40. package/components/grid/cell/cellEditorUtils.d.ts +4 -4
  41. package/components/grid/cell/cellEditorUtils.js +8 -8
  42. package/components/grid/cell/customEnumCellEditor.d.ts +4 -26
  43. package/components/grid/cell/customEnumCellEditor.js +82 -91
  44. package/components/grid/cell/customEnumCellEditor.js.map +1 -1
  45. package/components/grid/cell/dataGridCellEditorComponent.d.ts +14 -0
  46. package/components/grid/cell/dataGridCellEditorComponent.js +49 -0
  47. package/components/grid/cell/dataGridCellEditorComponent.js.map +1 -0
  48. package/components/grid/cell/dateCellEditor.d.ts +4 -25
  49. package/components/grid/cell/dateCellEditor.js +53 -72
  50. package/components/grid/cell/dateCellEditor.js.map +1 -1
  51. package/components/grid/cell/durationCellEditor.d.ts +4 -24
  52. package/components/grid/cell/durationCellEditor.js +74 -97
  53. package/components/grid/cell/durationCellEditor.js.map +1 -1
  54. package/components/grid/cell/hexaOctetStringCellEditor.d.ts +4 -24
  55. package/components/grid/cell/hexaOctetStringCellEditor.js +70 -94
  56. package/components/grid/cell/hexaOctetStringCellEditor.js.map +1 -1
  57. package/components/grid/cell/hexaValueCellEditor.d.ts +4 -24
  58. package/components/grid/cell/hexaValueCellEditor.js +65 -89
  59. package/components/grid/cell/hexaValueCellEditor.js.map +1 -1
  60. package/components/grid/cell/numberCellEditor.d.ts +4 -27
  61. package/components/grid/cell/numberCellEditor.js +73 -95
  62. package/components/grid/cell/numberCellEditor.js.map +1 -1
  63. package/components/grid/cell/rangeSelector.d.ts +78 -78
  64. package/components/grid/cell/rangeSelector.js +526 -518
  65. package/components/grid/cell/rangeSelector.js.map +1 -1
  66. package/components/grid/cell/simpleStatusTextCellEditor.d.ts +4 -32
  67. package/components/grid/cell/simpleStatusTextCellEditor.js +106 -116
  68. package/components/grid/cell/simpleStatusTextCellEditor.js.map +1 -1
  69. package/components/grid/cell/statusTextCellEditor.d.ts +4 -32
  70. package/components/grid/cell/statusTextCellEditor.js +136 -159
  71. package/components/grid/cell/statusTextCellEditor.js.map +1 -1
  72. package/components/grid/cell/tableDefaultRowStyleRules.d.ts +20 -20
  73. package/components/grid/cell/tableDefaultRowStyleRules.js +29 -18
  74. package/components/grid/cell/tableDefaultRowStyleRules.js.map +1 -1
  75. package/components/grid/cell/textCellEditor.d.ts +4 -21
  76. package/components/grid/cell/textCellEditor.js +63 -85
  77. package/components/grid/cell/textCellEditor.js.map +1 -1
  78. package/components/grid/cell/withAgGridHooks.d.ts +3 -0
  79. package/components/grid/cell/withAgGridHooks.js +15 -0
  80. package/components/grid/cell/withAgGridHooks.js.map +1 -0
  81. package/components/grid/columnUtils.d.ts +5 -5
  82. package/components/grid/columnUtils.js +26 -26
  83. package/components/grid/columnUtils.js.map +1 -1
  84. package/components/grid/config/columnTransfer.d.ts +21 -22
  85. package/components/grid/config/columnTransfer.js +205 -201
  86. package/components/grid/config/columnTransfer.js.map +1 -1
  87. package/components/grid/config/dataGridEditor.d.ts +41 -41
  88. package/components/grid/config/dataGridEditor.js +181 -160
  89. package/components/grid/config/dataGridEditor.js.map +1 -1
  90. package/components/grid/config/rowHeightCalculator.d.ts +8 -0
  91. package/components/grid/config/rowHeightCalculator.js +20 -0
  92. package/components/grid/config/rowHeightCalculator.js.map +1 -0
  93. package/components/grid/config/rowStylePicker.d.ts +27 -25
  94. package/components/grid/config/rowStylePicker.js +127 -109
  95. package/components/grid/config/rowStylePicker.js.map +1 -1
  96. package/components/grid/dataGrid.d.ts +218 -206
  97. package/components/grid/dataGrid.js +1629 -1538
  98. package/components/grid/dataGrid.js.map +1 -1
  99. package/components/grid/detail/detailHeaderPanel.d.ts +13 -13
  100. package/components/grid/detail/detailHeaderPanel.js +25 -25
  101. package/components/grid/detail/detailHeaderPanel.js.map +1 -1
  102. package/components/grid/export/contextMenu.d.ts +18 -24
  103. package/components/grid/export/contextMenu.js +116 -113
  104. package/components/grid/export/contextMenu.js.map +1 -1
  105. package/components/grid/export/progressPopup.d.ts +29 -29
  106. package/components/grid/export/progressPopup.js +93 -93
  107. package/components/grid/export/progressPopup.js.map +1 -1
  108. package/components/grid/export/worker/clipboardExport.d.ts +1 -1
  109. package/components/grid/export/worker/clipboardExport.js +8 -8
  110. package/components/grid/export/worker/csvExport.d.ts +1 -1
  111. package/components/grid/export/worker/csvExport.js +8 -8
  112. package/components/grid/export/worker/pdfExport.d.ts +1 -1
  113. package/components/grid/export/worker/pdfExport.js +81 -81
  114. package/components/grid/export/worker/pdfExport.js.map +1 -1
  115. package/components/grid/export/worker/txtExport.d.ts +1 -1
  116. package/components/grid/export/worker/txtExport.js +19 -19
  117. package/components/grid/extendedDataGrid.d.ts +140 -140
  118. package/components/grid/extendedDataGrid.js +704 -695
  119. package/components/grid/extendedDataGrid.js.map +1 -1
  120. package/components/grid/filter/customColumnFilter.d.ts +5 -21
  121. package/components/grid/filter/customColumnFilter.js +11 -82
  122. package/components/grid/filter/customColumnFilter.js.map +1 -1
  123. package/components/grid/filter/dataGridColumnFilter.d.ts +17 -0
  124. package/components/grid/filter/dataGridColumnFilter.js +49 -0
  125. package/components/grid/filter/dataGridColumnFilter.js.map +1 -0
  126. package/components/grid/filter/dateColumnFilter.d.ts +7 -11
  127. package/components/grid/filter/dateColumnFilter.js +22 -56
  128. package/components/grid/filter/dateColumnFilter.js.map +1 -1
  129. package/components/grid/filter/textColumnFilter.d.ts +8 -20
  130. package/components/grid/filter/textColumnFilter.js +24 -76
  131. package/components/grid/filter/textColumnFilter.js.map +1 -1
  132. package/components/grid/filter/wildcardQuickFilterEngine.d.ts +7 -0
  133. package/components/grid/filter/wildcardQuickFilterEngine.js +48 -0
  134. package/components/grid/filter/wildcardQuickFilterEngine.js.map +1 -0
  135. package/components/grid/header/simpleHeader.d.ts +17 -16
  136. package/components/grid/header/simpleHeader.js +230 -186
  137. package/components/grid/header/simpleHeader.js.map +1 -1
  138. package/components/grid/panel/dataGridPagination.d.ts +16 -16
  139. package/components/grid/panel/dataGridPagination.js +58 -58
  140. package/components/grid/panel/dataGridPagination.js.map +1 -1
  141. package/components/grid/panel/loadingOverlay.d.ts +6 -6
  142. package/components/grid/panel/loadingOverlay.js +10 -10
  143. package/components/grid/panel/loadingOverlay.js.map +1 -1
  144. package/components/grid/panel/noRecordsOverlay.d.ts +6 -6
  145. package/components/grid/panel/noRecordsOverlay.js +10 -10
  146. package/components/grid/panel/noRecordsOverlay.js.map +1 -1
  147. package/components/grid/panel/tablePagination.d.ts +10 -10
  148. package/components/grid/panel/tablePagination.js +45 -45
  149. package/components/grid/panel/tablePagination.js.map +1 -1
  150. package/components/icons/dropdownArrow.d.ts +8 -0
  151. package/components/icons/dropdownArrow.js +59 -0
  152. package/components/icons/dropdownArrow.js.map +1 -0
  153. package/components/icons/undoIcon.d.ts +8 -8
  154. package/components/icons/undoIcon.js +6 -6
  155. package/components/input/autoCompleteInput.d.ts +35 -35
  156. package/components/input/autoCompleteInput.js +122 -121
  157. package/components/input/autoCompleteInput.js.map +1 -1
  158. package/components/input/draftUtils.d.ts +4 -4
  159. package/components/input/draftUtils.js +48 -48
  160. package/components/input/draftUtils.js.map +1 -1
  161. package/components/input/draftail.d.ts +1 -1
  162. package/components/input/draftail.js +1 -1
  163. package/components/input/hexaFormattedInput.d.ts +16 -16
  164. package/components/input/hexaFormattedInput.js +54 -54
  165. package/components/input/hexaFormattedInput.js.map +1 -1
  166. package/components/input/mask/helpers.d.ts +28 -28
  167. package/components/input/mask/helpers.js +112 -112
  168. package/components/input/mask/helpers.js.map +1 -1
  169. package/components/input/mask/inputMaskCore.d.ts +46 -46
  170. package/components/input/mask/inputMaskCore.js +278 -278
  171. package/components/input/mask/inputMaskCore.js.map +1 -1
  172. package/components/input/mask/pattern.d.ts +20 -20
  173. package/components/input/mask/pattern.js +78 -78
  174. package/components/input/mask/pattern.js.map +1 -1
  175. package/components/input/maskedInput.d.ts +373 -351
  176. package/components/input/maskedInput.js +224 -224
  177. package/components/input/maskedInput.js.map +1 -1
  178. package/components/input/passwordInput.d.ts +9 -9
  179. package/components/input/passwordInput.js +55 -55
  180. package/components/input/passwordInput.js.map +1 -1
  181. package/components/input/simpleAutoComplete.d.ts +12 -12
  182. package/components/input/simpleAutoComplete.js +41 -43
  183. package/components/input/simpleAutoComplete.js.map +1 -1
  184. package/components/input/textarea/extractSpansOfClasses.d.ts +15 -15
  185. package/components/input/textarea/extractSpansOfClasses.js +96 -96
  186. package/components/input/textarea/extractSpansOfClasses.js.map +1 -1
  187. package/components/input/textarea/getRanges.d.ts +1 -1
  188. package/components/input/textarea/getRanges.js +73 -73
  189. package/components/input/textarea/getRanges.js.map +1 -1
  190. package/components/input/textarea/getType.d.ts +1 -1
  191. package/components/input/textarea/getType.js +26 -26
  192. package/components/input/textarea/getType.js.map +1 -1
  193. package/components/input/textarea/highlighedContents.d.ts +6 -6
  194. package/components/input/textarea/highlighedContents.js +10 -10
  195. package/components/input/textarea/mentionsWithHighlighting.d.ts +27 -27
  196. package/components/input/textarea/mentionsWithHighlighting.js +60 -60
  197. package/components/input/textarea/mentionsWithHighlighting.js.map +1 -1
  198. package/components/keyboard/keyboardUtils.d.ts +5 -5
  199. package/components/keyboard/keyboardUtils.js +32 -32
  200. package/components/modal/draggableModalProvider.d.ts +4 -4
  201. package/components/modal/draggableModalProvider.js +21 -21
  202. package/components/modal/draggableModalProvider.js.map +1 -1
  203. package/components/modal/impl/clamp.d.ts +1 -1
  204. package/components/modal/impl/clamp.js +1 -1
  205. package/components/modal/impl/clamp.js.map +1 -1
  206. package/components/modal/impl/draggableModal.d.ts +12 -12
  207. package/components/modal/impl/draggableModal.js +17 -17
  208. package/components/modal/impl/draggableModal.js.map +1 -1
  209. package/components/modal/impl/draggableModalContext.d.ts +9 -9
  210. package/components/modal/impl/draggableModalContext.js +2 -2
  211. package/components/modal/impl/draggableModalContext.js.map +1 -1
  212. package/components/modal/impl/draggableModalInner.d.ts +15 -13
  213. package/components/modal/impl/draggableModalInner.js +57 -55
  214. package/components/modal/impl/draggableModalInner.js.map +1 -1
  215. package/components/modal/impl/draggableModalReducer.d.ts +66 -62
  216. package/components/modal/impl/draggableModalReducer.js +77 -78
  217. package/components/modal/impl/draggableModalReducer.js.map +1 -1
  218. package/components/modal/impl/getWindowSize.d.ts +4 -4
  219. package/components/modal/impl/getWindowSize.js +4 -4
  220. package/components/modal/impl/getWindowSize.js.map +1 -1
  221. package/components/modal/impl/index.d.ts +3 -3
  222. package/components/modal/impl/index.js +3 -3
  223. package/components/modal/impl/index.js.map +1 -1
  224. package/components/modal/impl/resizeHandle.d.ts +3 -3
  225. package/components/modal/impl/resizeHandle.js +4 -4
  226. package/components/modal/impl/resizeHandle.js.map +1 -1
  227. package/components/modal/impl/useDrag.d.ts +5 -5
  228. package/components/modal/impl/useDrag.js +42 -42
  229. package/components/modal/impl/useDrag.js.map +1 -1
  230. package/components/modal/impl/usePrevious.d.ts +1 -1
  231. package/components/modal/impl/usePrevious.js +8 -8
  232. package/components/modal/impl/usePrevious.js.map +1 -1
  233. package/components/modal/impl/useResize.d.ts +7 -7
  234. package/components/modal/impl/useResize.js +46 -46
  235. package/components/modal/impl/useResize.js.map +1 -1
  236. package/components/modal/modalDialog.d.ts +49 -49
  237. package/components/modal/modalDialog.js +152 -152
  238. package/components/modal/modalDialog.js.map +1 -1
  239. package/components/picker/enumValuePicker.d.ts +16 -16
  240. package/components/picker/enumValuePicker.js +34 -34
  241. package/components/picker/enumValuePicker.js.map +1 -1
  242. package/components/platformSpecific.d.ts +10 -10
  243. package/components/platformSpecific.js +27 -27
  244. package/components/scrollTo/onlyText.d.ts +4 -4
  245. package/components/scrollTo/onlyText.js +30 -30
  246. package/components/scrollTo/onlyText.js.map +1 -1
  247. package/components/scrollTo/scrollTo.d.ts +41 -39
  248. package/components/scrollTo/scrollTo.js +264 -264
  249. package/components/scrollTo/scrollTo.js.map +1 -1
  250. package/components/style/withCss.d.ts +9 -0
  251. package/components/style/withCss.js +6 -0
  252. package/components/style/withCss.js.map +1 -0
  253. package/components/style/withInputNumberCss.d.ts +6 -0
  254. package/components/style/withInputNumberCss.js +13 -0
  255. package/components/style/withInputNumberCss.js.map +1 -0
  256. package/components/table/dragSortingTable.d.ts +13 -14
  257. package/components/table/dragSortingTable.js +96 -82
  258. package/components/table/dragSortingTable.js.map +1 -1
  259. package/components/text/impl/innerSize.d.ts +2 -2
  260. package/components/text/impl/innerSize.js +12 -12
  261. package/components/text/impl/series.d.ts +1 -1
  262. package/components/text/impl/series.js +28 -28
  263. package/components/text/impl/shallowEqual.d.ts +1 -1
  264. package/components/text/impl/shallowEqual.js +18 -18
  265. package/components/text/impl/shallowEqual.js.map +1 -1
  266. package/components/text/impl/uniqueId.d.ts +1 -1
  267. package/components/text/impl/uniqueId.js +4 -4
  268. package/components/text/impl/whilst.d.ts +1 -1
  269. package/components/text/impl/whilst.js +19 -19
  270. package/components/text/impl/whilst.js.map +1 -1
  271. package/components/text/textFit.d.ts +38 -38
  272. package/components/text/textFit.js +165 -168
  273. package/components/text/textFit.js.map +1 -1
  274. package/i18n/components.cs.json +101 -100
  275. package/i18n/components.sk.json +101 -100
  276. package/i18n/components.uk.json +101 -100
  277. package/i18n/componentsLocaleHolder.d.ts +3 -3
  278. package/i18n/componentsLocaleHolder.js +28 -28
  279. package/i18n/componentsLocaleHolder.js.map +1 -1
  280. package/package.json +71 -70
  281. package/style/index.less +274 -298
  282. package/style/modal/DraggableModal.css +43 -40
  283. package/style/modal/ResizeHandle.css +27 -19
  284. package/tsconfig.build.json +24 -24
  285. package/tsconfig.json +11 -11
  286. package/components/grid/cell/wildcardQuickFilter.d.ts +0 -11
  287. package/components/grid/cell/wildcardQuickFilter.js +0 -61
  288. package/components/grid/cell/wildcardQuickFilter.js.map +0 -1
  289. package/components/table/dataTable.d.ts +0 -17
  290. package/components/table/dataTable.js +0 -79
  291. package/components/table/dataTable.js.map +0 -1
  292. package/style/antd/antd-tree-showline.css +0 -25
  293. package/style/antd/full-height-tabs.scss +0 -63
  294. package/style/draftail/draftail-editor.css +0 -179
  295. package/style/table/dragSortingTable.css +0 -7
@@ -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\";\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}"]}
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 dayjs, {isDuration, ManipulateType} from \"dayjs\";\r\nimport {Duration} from \"d2core/dayjs/duration\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport {AutoComplete} from \"antd\";\r\nimport DropdownArrow from \"../icons/dropdownArrow\";\r\nimport WithInputNumberCss from \"d2coreui/components/style/withInputNumberCss\";\r\nimport {SizeType} from \"antd/lib/config-provider/SizeContext\";\r\n\r\ninterface DurationInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\r\n mask: string\r\n value: Duration | null\r\n onChange?: (time: Duration | null) => void\r\n predefinedValues?: { key: string, value: string }[]\r\n disabled?: boolean\r\n inputStyle?: React.CSSProperties\r\n autoFocus?: boolean\r\n size?: SizeType;\r\n}\r\n\r\ninterface DurationInputState {\r\n valid: boolean\r\n selectionStart: number | null\r\n selectionEnd: number | null\r\n currentInfo: MaskResult\r\n opened: boolean\r\n value: string\r\n}\r\n\r\ninterface MaskResult {\r\n time?: Duration\r\n info?: InfoEntry\r\n infoFromMask?: EntryValue[]\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 minLen: number\r\n maxLen: number\r\n mult: number\r\n unit: ManipulateType\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, minLen: 3, maxLen: 3, mult: 1, unit: \"ms\"},\r\n {key: \"s\", min: 0, max: 59, minLen: 1, maxLen: 2, mult: 1000, unit: \"s\"},\r\n {key: \"m\", min: 0, max: 59, minLen: 1, maxLen: 2, mult: 60 * 1000, unit: \"m\"},\r\n {key: \"H\", min: 0, max: 23, minLen: 1, maxLen: 2, mult: 60 * 60 * 1000, unit: \"h\"},\r\n {key: \"D\", min: 0, max: 24854, minLen: 1, maxLen: 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 function parseDuration(value: string, mask: string, cursorPos?: number, maskResult?: MaskResult): Duration | null {\r\n let result: Duration = dayjs.duration(0);\r\n const clearMaskResult = () => {\r\n if (maskResult) {\r\n maskResult.info = undefined;\r\n maskResult.length = 0;\r\n maskResult.infoFromMask = undefined;\r\n maskResult.time = undefined;\r\n }\r\n }\r\n let maskPos: number = 0;\r\n let valPos: number;\r\n\r\n for (valPos = 0; valPos < value.length; valPos++) {\r\n const c: string = value.charAt(valPos);\r\n\r\n if (['D', 'H', 'm', 's', 'S'].includes(mask.charAt(maskPos))) { // je to maska\r\n if (/\\d/.test(c)) {\r\n const entry: EntryValue | undefined = getInfoFromMask(mask, maskPos);\r\n\r\n if (entry) {\r\n let str = c;\r\n\r\n while (/\\d/.test(value.charAt(valPos + 1))) {\r\n valPos++;\r\n str += value.charAt(valPos);\r\n }\r\n\r\n if (str.length !== entry.length) {\r\n clearMaskResult();\r\n return null;\r\n }\r\n\r\n const time: number = parseInt(str);\r\n\r\n result = result.add(dayjs.duration(time, entry.infoEntry.unit));\r\n if (maskResult) {\r\n const item: EntryValue = {\r\n value: time,\r\n length: str.length,\r\n infoEntry: entry.infoEntry,\r\n }\r\n\r\n if (maskResult.infoFromMask) {\r\n maskResult.infoFromMask.push(item);\r\n } else {\r\n maskResult.infoFromMask = [item];\r\n }\r\n }\r\n maskPos += entry.length;\r\n\r\n if (cursorPos !== undefined && maskResult !== undefined && cursorPos >= valPos - str.length + 1 && cursorPos <= valPos + 1) {\r\n maskResult.info = entry.infoEntry;\r\n maskResult.length = str.length;\r\n }\r\n } else {\r\n clearMaskResult();\r\n return null;\r\n }\r\n } else {\r\n // non-numeric character when value expected\r\n clearMaskResult();\r\n return null;\r\n }\r\n } else {\r\n if (c === mask.charAt(maskPos)) {\r\n // skip special characters\r\n maskPos++;\r\n }\r\n }\r\n }\r\n\r\n if (maskPos === mask.length && valPos === value.length && result.asMilliseconds() <= MAX_VALID_DURATION) {\r\n if (maskResult !== undefined) {\r\n maskResult.time = result;\r\n }\r\n return result;\r\n }\r\n\r\n clearMaskResult();\r\n return null;\r\n}\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: isDuration(props.value),\r\n selectionStart: null,\r\n selectionEnd: 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: formatDuration(props.value, props.mask),\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.selectionStart;\r\n this.inputRef.current.input.selectionEnd = this.state.selectionEnd;\r\n }\r\n\r\n const value: string = formatDuration(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: isDuration(this.props.value),\r\n });\r\n }\r\n }\r\n\r\n recalc(): void {\r\n if (this.inputRef.current !== null) {\r\n const value: MaskResult = {length: 0};\r\n parseDuration(this.inputRef.current.input.value, this.props.mask, this.inputRef.current.input.selectionStart ?? undefined, value);\r\n this.setState({\r\n currentInfo: value,\r\n selectionStart: this.inputRef.current.input.selectionStart,\r\n selectionEnd: this.inputRef.current.input.selectionEnd,\r\n });\r\n }\r\n }\r\n\r\n increment(): void {\r\n if (this.state.currentInfo.info !== undefined && 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 this.setState({selectionEnd: this.state.selectionStart});\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 && 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 this.setState({selectionEnd: this.state.selectionStart});\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, autoFocus, size, ...props} = this.props;\r\n const incrementButtonDisabled = this.state.currentInfo.info === undefined || !checkValue(this.state.currentInfo, this.props.value, 1);\r\n const decrementButtonDisabled = this.state.currentInfo.info === undefined || !checkValue(this.state.currentInfo, this.props.value, -1);\r\n\r\n return (\r\n <WithInputNumberCss>\r\n <div style={{width: \"100%\", ...style}}\r\n {...props}\r\n className={!predefinedValues ? \"ant-input-number ant-input-number-outlined\" : \"\"}\r\n onKeyDown={(event) => {\r\n if (event.code === \"ArrowUp\") { // up\r\n this.increment();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else if (event.code === \"ArrowDown\") { // down\r\n this.decrement();\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }}\r\n >\r\n <AutoComplete\r\n className={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 autoFocus={autoFocus}\r\n style={{width: \"100%\", height: \"inherit\"}}\r\n value={this.state.valid ? this.state.value : \"\"}\r\n onSelect={(e) => {\r\n const val: Duration = dayjs.duration(Number(e));\r\n this.setState({\r\n opened: false,\r\n valid: isDuration(val),\r\n value: formatDuration(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={{\r\n border: predefinedValues ? undefined : \"none\",\r\n ...this.props.inputStyle\r\n }}\r\n size={size}\r\n placeholder={this.props.mask.replace(/[a-zA-Z]/g, '_')}\r\n autoFocus={autoFocus}\r\n onFocus={(event => {\r\n event.target.selectionStart = event.target.selectionEnd = this.state.selectionStart;\r\n })}\r\n suffix={\r\n this.props.predefinedValues !== undefined && this.props.predefinedValues.length > 0 &&\r\n <DropdownArrow opened={this.state.opened}\r\n onClick={() => {\r\n if (!this.props.disabled) {\r\n this.setState({opened: !this.state.opened});\r\n }\r\n }}/>\r\n }\r\n onMouseUp={this.recalc}\r\n onKeyUp={this.recalc}\r\n onChange={(event) => {\r\n const value: MaskResult = {length: 0};\r\n parseDuration(event.target.value, this.props.mask, event.target.selectionStart ?? undefined, value);\r\n onChange?.(value.time === undefined ? null : value.time);\r\n this.setState({\r\n valid: isDuration(value.time),\r\n currentInfo: value,\r\n value: event.target.value,\r\n });\r\n }}\r\n />\r\n </AutoComplete>\r\n {!predefinedValues && !disabled &&\r\n <div className=\"ant-input-number-handler-wrap\">\r\n <span onClick={this.increment} className={`ant-input-number-handler ant-input-number-handler-up ${incrementButtonDisabled ? \"ant-input-number-handler-up-disabled\" : \"\"}`}>\r\n <span 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 <span onClick={this.decrement} className={`ant-input-number-handler ant-input-number-handler-down ${decrementButtonDisabled ? \"ant-input-number-handler-down-disabled\" : \"\"}`}>\r\n <span 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 }\r\n </div>\r\n </WithInputNumberCss>\r\n );\r\n }\r\n}\r\n\r\nfunction checkValue(info: MaskResult, value: Duration | null, offset = 0): boolean {\r\n const currentMillis = value ? value.add(offset, info.info?.unit).asMilliseconds() : 0;\r\n const maxValues = info?.infoFromMask ? info.infoFromMask.map((i) => (i.length !== i.infoEntry.maxLen ? (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\nfunction formatDuration(value: Duration | null, mask: string): string {\r\n //@ts-ignore\r\n return (isDuration(value) ? value : dayjs.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\r\nfunction getInfoFromMask(mask: string, fromPos: number): EntryValue | undefined {\r\n if (fromPos < mask.length) {\r\n const ch = mask.charAt(fromPos);\r\n const info = DURATION_DATA_MAP.find((d) => d.key.includes(ch));\r\n\r\n if (info) {\r\n const entry: EntryValue = {\r\n length: 1,\r\n value: 0,\r\n infoEntry: info,\r\n }\r\n\r\n for (let i = fromPos + 1; i < mask.length; i++) {\r\n const c = mask.charAt(i);\r\n\r\n if (c === ch) {\r\n entry.length++;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n return entry;\r\n }\r\n }\r\n\r\n return undefined;\r\n}"]}
@@ -1,14 +1,14 @@
1
- import React, { CSSProperties } 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
- labelStyle?: CSSProperties;
8
- }
9
- export interface NiceFormItemState {
10
- }
11
- export declare class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {
12
- constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps);
13
- render(): JSX.Element;
14
- }
1
+ import React, { CSSProperties } 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
+ labelStyle?: CSSProperties;
8
+ }
9
+ export interface NiceFormItemState {
10
+ }
11
+ export declare class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {
12
+ constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps);
13
+ render(): React.JSX.Element;
14
+ }
@@ -1,32 +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, labelStyle } = _a, rest = __rest(_a, ["label", "children", "border", "disabled", "className", "labelStyle"]);
21
- const eLabelStyle = !!labelStyle ? Object.assign({}, labelStyle) : (disabled ? {} : undefined);
22
- if (!!eLabelStyle && disabled && !(eLabelStyle === null || eLabelStyle === void 0 ? void 0 : eLabelStyle.background)) {
23
- eLabelStyle.background = "transparent";
24
- }
25
- const classNames = "nice-form-item" + (className !== null && className !== void 0 ? className : "");
26
- return (React.createElement(Form.Item, Object.assign({}, rest, { className: classNames }),
27
- React.createElement("div", { className: "nice-float-label" },
28
- border ? React.createElement("section", { className: "nice-form-item-box" }, children) : children,
29
- React.createElement("label", { className: "nice-label nice-label-float", style: eLabelStyle }, label))));
30
- }
31
- }
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, labelStyle } = _a, rest = __rest(_a, ["label", "children", "border", "disabled", "className", "labelStyle"]);
21
+ const eLabelStyle = !!labelStyle ? Object.assign({}, labelStyle) : (disabled ? {} : 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: eLabelStyle }, label))));
27
+ }
28
+ }
32
29
  //# sourceMappingURL=NiceFormItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NiceFormItem.js","sourceRoot":"","sources":["../../../../components/form/NiceFormItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAgB,MAAM,MAAM,CAAA;AACxC,OAAO,mCAAmC,CAAA;AAW1C,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAA+C;IACnF,YAAY,KAAsD;QAC9D,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,KAAsE,IAAI,CAAC,KAAK,EAAhF,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,OAAuB,EAAlB,IAAI,cAAlE,sEAAmE,CAAa,CAAC;QACvF,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,mBAAK,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,CAAC,WAAW,IAAI,QAAQ,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA,EAAE;YACvD,WAAW,CAAC,UAAU,GAAG,aAAa,CAAC;SAC1C;QACD,MAAM,UAAU,GAAG,gBAAgB,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,CAAA;QACvD,OAAO,CACH,oBAAC,IAAI,CAAC,IAAI,oBAAK,IAAI,IAAE,SAAS,EAAE,UAAU;YACtC,6BAAK,SAAS,EAAC,kBAAkB;gBAC5B,MAAM,CAAC,CAAC,CAAC,iCAAS,SAAS,EAAC,oBAAoB,IAAE,QAAQ,CAAW,CAAC,CAAC,CAAC,QAAQ;gBACjF,+BAAO,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,WAAW,IAAG,KAAK,CAAS,CAChF,CACE,CAAC,CAAC;IACtB,CAAC;CACJ","sourcesContent":["import React, {CSSProperties} from \"react\";\nimport {Form, FormItemProps} from \"antd\"\nimport \"../../style/form/niceFormItem.css\"\n\nexport interface NiceFormItemProps extends FormItemProps {\n border?: boolean\n disabled?: boolean\n labelStyle?: CSSProperties\n}\n\nexport interface NiceFormItemState {\n}\n\nexport class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {\n constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps) {\n super(props);\n }\n\n render() {\n const {label, children, border, disabled, className, labelStyle, ...rest} = this.props;\n const eLabelStyle = !!labelStyle ? {...labelStyle} : (disabled ? {} : undefined);\n if (!!eLabelStyle && disabled && !eLabelStyle?.background) {\n eLabelStyle.background = \"transparent\";\n }\n const classNames = \"nice-form-item\" + (className ?? \"\")\n return (\n <Form.Item {...rest} className={classNames}>\n <div className=\"nice-float-label\">\n {border ? <section className=\"nice-form-item-box\">{children}</section> : children}\n <label className=\"nice-label nice-label-float\" style={eLabelStyle}>{label}</label>\n </div>\n </Form.Item>);\n }\n}"]}
1
+ {"version":3,"file":"NiceFormItem.js","sourceRoot":"","sources":["../../../../components/form/NiceFormItem.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AACtD,OAAO,EAAC,IAAI,EAAgB,MAAM,MAAM,CAAA;AACxC,OAAO,mCAAmC,CAAA;AAW1C,MAAM,OAAO,YAAa,SAAQ,KAAK,CAAC,SAA+C;IACnF,YAAY,KAAsD;QAC9D,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM;QACF,MAAM,KAAsE,IAAI,CAAC,KAAK,EAAhF,EAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,OAAuB,EAAlB,IAAI,cAAlE,sEAAmE,CAAa,CAAC;QACvF,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,mBAAK,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjF,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,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAS,SAAS,EAAC,oBAAoB,IAAE,QAAqB,CAAW,CAAC,CAAC,CAAC,QAAQ,CAAc;gBAC7G,+BAAO,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,WAAW,IAAG,KAAK,CAAS,CAChF,CACE,CAAC,CAAC;IACtB,CAAC;CACJ","sourcesContent":["import React, {CSSProperties, ReactNode} from \"react\";\r\nimport {Form, FormItemProps} from \"antd\"\r\nimport \"../../style/form/niceFormItem.css\"\r\n\r\nexport interface NiceFormItemProps extends FormItemProps {\r\n border?: boolean\r\n disabled?: boolean\r\n labelStyle?: CSSProperties\r\n}\r\n\r\nexport interface NiceFormItemState {\r\n}\r\n\r\nexport class NiceFormItem extends React.Component<NiceFormItemProps, NiceFormItemState> {\r\n constructor(props: Readonly<NiceFormItemProps> | NiceFormItemProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const {label, children, border, disabled, className, labelStyle, ...rest} = this.props;\r\n const eLabelStyle = !!labelStyle ? {...labelStyle} : (disabled ? {} : undefined);\r\n const classNames = \"nice-form-item\" + (className ?? \"\")\r\n \r\n return (\r\n <Form.Item {...rest} className={classNames}>\r\n <div className=\"nice-float-label\">\r\n {(border ? <section className=\"nice-form-item-box\">{children as ReactNode}</section> : children) as ReactNode}\r\n <label className=\"nice-label nice-label-float\" style={eLabelStyle}>{label}</label>\r\n </div>\r\n </Form.Item>);\r\n }\r\n}"]}
@@ -0,0 +1,9 @@
1
+ import { BeanCollection, BeanStub, GridApi, NamedBean } from "ag-grid-community";
2
+ export interface GridApiWithPrivateAccess extends GridApi {
3
+ beans: BeanCollection;
4
+ }
5
+ export default class BeanAccessor extends BeanStub implements NamedBean {
6
+ beanName: "beanAccessor";
7
+ wireBeans(beans: BeanCollection): void;
8
+ postConstruct(): void;
9
+ }
@@ -0,0 +1,13 @@
1
+ import { BeanStub } from "ag-grid-community";
2
+ export default class BeanAccessor extends BeanStub {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.beanName = "beanAccessor";
6
+ }
7
+ wireBeans(beans) {
8
+ beans.gridApi.beans = beans;
9
+ }
10
+ postConstruct() {
11
+ }
12
+ }
13
+ //# sourceMappingURL=beanAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beanAccessor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/beanAccessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAqB,MAAM,mBAAmB,CAAC;AAM/E,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,QAAQ;IAAlD;;QAEI,aAAQ,GAAG,cAAuB,CAAA;IAQtC,CAAC;IANU,SAAS,CAAC,KAAqB;QACjC,KAAK,CAAC,OAAoC,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9D,CAAC;IAEM,aAAa;IACpB,CAAC;CACJ","sourcesContent":["import {BeanCollection, BeanStub, GridApi, NamedBean} from \"ag-grid-community\";\r\n\r\nexport interface GridApiWithPrivateAccess extends GridApi {\r\n beans: BeanCollection;\r\n}\r\n\r\nexport default class BeanAccessor extends BeanStub implements NamedBean {\r\n // @ts-ignore\r\n beanName = \"beanAccessor\" as const\r\n\r\n public wireBeans(beans: BeanCollection) {\r\n (beans.gridApi as GridApiWithPrivateAccess).beans = beans;\r\n }\r\n\r\n public postConstruct(): void {\r\n }\r\n}"]}
@@ -1,4 +1,4 @@
1
- import React from 'react';
2
- export declare class CellEditorUtils {
3
- static shouldIgnoreKeyEvent<T>(e: React.KeyboardEvent<T>): boolean;
4
- }
1
+ import React from 'react';
2
+ export declare class CellEditorUtils {
3
+ static shouldIgnoreKeyEvent<T>(e: React.KeyboardEvent<T>): boolean;
4
+ }
@@ -1,9 +1,9 @@
1
- import KeyboardUtils from "d2coreui/components/keyboard/keyboardUtils";
2
- import { Key } from "ts-key-enum";
3
- export class CellEditorUtils {
4
- static shouldIgnoreKeyEvent(e) {
5
- return ((KeyboardUtils.isKeyPressed(Key.Alt) && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) ||
6
- (KeyboardUtils.isKeyPressed(Key.Control) && e.key === "KeyA"));
7
- }
8
- }
1
+ import KeyboardUtils from "d2coreui/components/keyboard/keyboardUtils";
2
+ import { Key } from "ts-key-enum";
3
+ export class CellEditorUtils {
4
+ static shouldIgnoreKeyEvent(e) {
5
+ return ((KeyboardUtils.isKeyPressed(Key.Alt) && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) ||
6
+ (KeyboardUtils.isKeyPressed(Key.Control) && e.key === "KeyA"));
7
+ }
8
+ }
9
9
  //# sourceMappingURL=cellEditorUtils.js.map
@@ -1,26 +1,4 @@
1
- import React from "react";
2
- import { ICellEditor, ICellEditorParams } from "ag-grid-community";
3
- interface CustomEnumCellEditorProps extends ICellEditorParams {
4
- values: string[];
5
- }
6
- interface CustomEnumCellEditorState {
7
- value: number | null;
8
- cancelEdit: boolean;
9
- opened: boolean;
10
- }
11
- export default class CustomEnumCellEditor extends React.Component<CustomEnumCellEditorProps, CustomEnumCellEditorState> implements ICellEditor {
12
- private selectComponent;
13
- private focusOpId;
14
- private wrappingComponent;
15
- constructor(props: Readonly<CustomEnumCellEditorProps>);
16
- getInitialState(props: Readonly<CustomEnumCellEditorProps>): CustomEnumCellEditorState;
17
- componentWillUnmount(): void;
18
- afterGuiAttached(): void;
19
- getValue(): number | null;
20
- isPopup(): boolean;
21
- isCancelBeforeStart(): boolean;
22
- isCancelAfterEnd(): boolean;
23
- private updateValueFromPreselection;
24
- render(): JSX.Element;
25
- }
26
- export {};
1
+ import React from "react";
2
+ import { CustomCellEditorProps } from "ag-grid-react";
3
+ declare const _default: (props: CustomCellEditorProps) => React.JSX.Element;
4
+ export default _default;
@@ -1,92 +1,83 @@
1
- import React from "react";
2
- import debounce from "lodash/debounce";
3
- import { Select } from "antd";
4
- import ReactDOM from "react-dom";
5
- const KEY_BACKSPACE = 8;
6
- const KEY_DELETE = 46;
7
- export default class CustomEnumCellEditor extends React.Component {
8
- constructor(props) {
9
- super(props);
10
- this.selectComponent = null;
11
- this.focusOpId = null;
12
- this.wrappingComponent = null;
13
- this.state = this.getInitialState(props);
14
- this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, { maxWait: 200 });
15
- }
16
- getInitialState(props) {
17
- let value;
18
- if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {
19
- value = null;
20
- }
21
- else if (props.charPress) {
22
- const parsedValue = Number.parseInt(props.charPress);
23
- value = isNaN(parsedValue) ? props.value : parsedValue;
24
- }
25
- else {
26
- value = props.value;
27
- }
28
- return {
29
- value: value,
30
- cancelEdit: false,
31
- opened: true,
32
- };
33
- }
34
- componentWillUnmount() {
35
- if (this.focusOpId) {
36
- clearTimeout(this.focusOpId);
37
- }
38
- }
39
- afterGuiAttached() {
40
- this.focusOpId = window.setTimeout(() => {
41
- var _a;
42
- (_a = this.selectComponent) === null || _a === void 0 ? void 0 : _a.focus();
43
- }, 200);
44
- }
45
- getValue() {
46
- return this.state.value;
47
- }
48
- isPopup() {
49
- return true;
50
- }
51
- isCancelBeforeStart() {
52
- return false;
53
- }
54
- isCancelAfterEnd() {
55
- return false;
56
- }
57
- updateValueFromPreselection() {
58
- setTimeout(() => {
59
- var _a, _b, _c;
60
- let selectables = Array.from((_b = (_a = this.wrappingComponent) === null || _a === void 0 ? void 0 : _a.getElementsByClassName("ant-select-item-option-active")) !== null && _b !== void 0 ? _b : []);
61
- if (selectables.length > 0) {
62
- const optionStringValue = (_c = selectables[0].dataset) === null || _c === void 0 ? void 0 : _c.optionvalue;
63
- const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined;
64
- if (optionValue) {
65
- this.setState({ value: optionValue });
66
- }
67
- }
68
- }, 200);
69
- }
70
- render() {
71
- return (React.createElement("div", { style: { width: "100%", minWidth: 150, height: 24 } },
72
- React.createElement(Select, { ref: (component) => {
73
- this.selectComponent = component;
74
- }, size: "small", virtual: false, className: "select-with-one-item", dropdownMatchSelectWidth: false, style: { width: "100%", overflow: "auto", padding: 0, margin: 0 }, dropdownStyle: { width: "100%", maxHeight: 400, overflow: 'auto' }, showAction: ['focus', 'click'], value: this.state.value !== null ? this.state.value : undefined, onChange: (value) => {
75
- this.setState({ value: value === undefined ? null : value });
76
- }, onSelect: (value) => {
77
- this.setState({ value: value === undefined ? null : value });
78
- }, open: this.state.opened, onDropdownVisibleChange: (visible) => {
79
- this.setState({ opened: visible });
80
- }, getPopupContainer: (_trigger) => {
81
- var _a, _b;
82
- return ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
83
- }, dropdownRender: (menu) => {
84
- return (React.createElement("div", { ref: (component) => {
85
- this.wrappingComponent = component;
86
- } }, menu));
87
- } }, this.props.values.map((value, index) => {
88
- return (React.createElement(Select.Option, { value: index, key: index }, value));
89
- }))));
90
- }
91
- }
1
+ import React from "react";
2
+ import debounce from "lodash/debounce";
3
+ import { Select } from "antd";
4
+ import ReactDOM from "react-dom";
5
+ import { Key } from "ts-key-enum";
6
+ import { DataGridCellEditorComponent, withAgGridHooks } from "./dataGridCellEditorComponent";
7
+ class CustomEnumCellEditor extends DataGridCellEditorComponent {
8
+ constructor(props) {
9
+ super(props);
10
+ this.selectComponent = null;
11
+ this.wrappingComponent = null;
12
+ this.state = this.getInitialState(props);
13
+ this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, { maxWait: 200 });
14
+ }
15
+ getInitialState(props) {
16
+ let value;
17
+ if (props.eventKey === Key.Backspace || props.eventKey === Key.Delete) {
18
+ value = null;
19
+ props.onValueChange(null);
20
+ }
21
+ else if (props.eventKey && props.eventKey.length === 1) {
22
+ const parsedValue = Number.parseInt(props.eventKey);
23
+ value = isNaN(parsedValue) ? props.value : parsedValue;
24
+ props.onValueChange(value);
25
+ }
26
+ else {
27
+ value = props.initialValue;
28
+ }
29
+ return {
30
+ value: value,
31
+ opened: true,
32
+ };
33
+ }
34
+ focus() {
35
+ var _a;
36
+ (_a = this.selectComponent) === null || _a === void 0 ? void 0 : _a.focus();
37
+ }
38
+ select() {
39
+ }
40
+ placeCursorToEnd() {
41
+ }
42
+ updateValueFromPreselection() {
43
+ setTimeout(() => {
44
+ var _a, _b, _c;
45
+ let selectables = Array.from((_b = (_a = this.wrappingComponent) === null || _a === void 0 ? void 0 : _a.getElementsByClassName("ant-select-item-option-active")) !== null && _b !== void 0 ? _b : []);
46
+ if (selectables.length > 0) {
47
+ const optionStringValue = (_c = selectables[0].dataset) === null || _c === void 0 ? void 0 : _c.optionvalue;
48
+ const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined;
49
+ if (optionValue) {
50
+ this.setState({ value: optionValue });
51
+ this.props.onValueChange(optionValue);
52
+ }
53
+ }
54
+ }, 200);
55
+ }
56
+ render() {
57
+ return (React.createElement("div", { style: { width: "100%", minWidth: 150, height: 24 } },
58
+ React.createElement(Select, { ref: (component) => {
59
+ this.selectComponent = component;
60
+ }, size: "small", virtual: false, className: "select-with-one-item", popupMatchSelectWidth: false, style: { width: "100%", overflow: "auto", padding: 0, margin: 0 }, dropdownStyle: { width: "100%", maxHeight: 400, overflow: 'auto' }, showAction: ['focus', 'click'], listHeight: this.props.listHeight, value: this.state.value !== null ? this.state.value : undefined, onChange: (value) => {
61
+ const valueToSet = value === undefined ? null : value;
62
+ this.setState({ value: valueToSet });
63
+ this.props.onValueChange(valueToSet);
64
+ }, onSelect: (value) => {
65
+ const valueToSet = value === undefined ? null : value;
66
+ this.setState({ value: valueToSet });
67
+ this.props.onValueChange(valueToSet);
68
+ }, open: this.state.opened, onDropdownVisibleChange: (visible) => {
69
+ this.setState({ opened: visible });
70
+ }, getPopupContainer: (_trigger) => {
71
+ var _a, _b;
72
+ return ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
73
+ }, dropdownRender: (menu) => {
74
+ return (React.createElement("div", { ref: (component) => {
75
+ this.wrappingComponent = component;
76
+ } }, menu));
77
+ } }, this.props.values.map((value, index) => {
78
+ return (React.createElement(Select.Option, { value: index, key: index }, value));
79
+ }))));
80
+ }
81
+ }
82
+ export default withAgGridHooks(CustomEnumCellEditor);
92
83
  //# sourceMappingURL=customEnumCellEditor.js.map
@@ -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\";\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"]}
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 {RefSelectProps} from \"antd/es/select\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {Select} from \"antd\";\r\nimport ReactDOM from \"react-dom\";\r\nimport {Key} from \"ts-key-enum\";\r\nimport {CustomCellEditorProps} from \"ag-grid-react\";\r\nimport {DataGridCellEditorComponent, withAgGridHooks} from \"./dataGridCellEditorComponent\";\r\n\r\ninterface CustomEnumCellEditorProps extends CustomCellEditorProps {\r\n values: string[]\r\n listHeight?: number\r\n}\r\n\r\ninterface CustomEnumCellEditorState {\r\n value: number | null\r\n opened: boolean\r\n}\r\n\r\nclass CustomEnumCellEditor extends DataGridCellEditorComponent<CustomEnumCellEditorProps, CustomEnumCellEditorState> {\r\n private selectComponent: RefSelectProps | 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.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 opened: true,\r\n } as CustomEnumCellEditorState;\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 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 this.props.onValueChange(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 popupMatchSelectWidth={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 listHeight={this.props.listHeight}\r\n value={this.state.value !== null ? this.state.value : undefined}\r\n onChange={(value) => {\r\n const valueToSet = value === undefined ? null : value;\r\n this.setState({value: valueToSet});\r\n this.props.onValueChange(valueToSet);\r\n }}\r\n onSelect={(value) => {\r\n const valueToSet = value === undefined ? null : value;\r\n this.setState({value: valueToSet});\r\n this.props.onValueChange(valueToSet);\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\r\nexport default withAgGridHooks(CustomEnumCellEditor);"]}
@@ -0,0 +1,14 @@
1
+ import { CustomCellEditorProps } from "ag-grid-react";
2
+ import React from "react";
3
+ export declare class DataGridCellEditorComponent<P extends CustomCellEditorProps, S> extends React.Component<P, S> {
4
+ private focusOpId;
5
+ private highlightAllOnFocus;
6
+ constructor(props: P);
7
+ componentDidMount(): void;
8
+ componentWillUnmount(): void;
9
+ focus(): void;
10
+ select(): void;
11
+ placeCursorToEnd(): void;
12
+ isCancelBeforeStart?(): boolean;
13
+ }
14
+ export declare function withAgGridHooks<P extends CustomCellEditorProps, S>(Component: any): (props: CustomCellEditorProps) => React.JSX.Element;