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":"rangeSelector.js","sourceRoot":"","sources":["../../../../../components/grid/cell/rangeSelector.js"],"names":[],"mappings":"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","sourcesContent":["import {_, AutoScrollService, Constants, Events} from \"ag-grid-community\";\nimport React from \"react\";\n\nexport class RangeSelector {\n constructor(wrappingDiv) {\n this.wrappingDiv = wrappingDiv;\n }\n\n init(gridApi, gridColumnApi) {\n this.rowModel = gridApi.rowModel;\n this.mouseEventService = gridApi.navigationService.mouseEventService;\n this.columnApi = gridColumnApi;\n this.columnModel = gridColumnApi.columnModel;\n this.gridApi = gridApi;\n this.cellNavigationService = gridApi.navigationService.cellNavigationService;\n this.pinnedRowModel = gridApi.pinnedRowModel;\n this.rowPositionUtils = gridApi.menuFactory.focusService.rowPositionUtils;\n this.rowRenderer = gridApi.rowRenderer;\n this.eventService = gridApi.eventService;\n this.gridOptionsWrapper = gridApi.gridOptionsWrapper;\n this.focusService = gridApi.focusService;\n this.cellPositionUtils = gridApi.cellPositionUtils;\n this.ctrlsService = gridApi.menuFactory.focusService.headerNavigationService.headerPositionUtils.ctrlsService;\n\n this.cellRanges = [];\n this.bodyScrollListener = this.onBodyScroll.bind(this);\n this.dragging = false;\n\n this.eventService.addEventListener(Events.EVENT_NEW_COLUMNS_LOADED, () => this.removeAllCellRanges());\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, () => this.removeAllCellRanges());\n this.eventService.addEventListener(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, () => this.removeAllCellRanges());\n this.eventService.addEventListener(Events.EVENT_COLUMN_PIVOT_CHANGED, () => this.removeAllCellRanges());\n this.eventService.addEventListener(Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.eventService.addEventListener(Events.EVENT_COLUMN_VISIBLE, this.onColumnVisibleChange.bind(this));\n\n this.gridPanel = gridApi.gridPanel;\n\n this.ctrlsService.whenReady(() => {\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.getBodyViewportElement(),\n scrollAxis: 'xy',\n getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,\n setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),\n getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,\n setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),\n shouldSkipVerticalScroll: () => this.gridOptionsWrapper.getDomLayout() !== Constants.DOM_LAYOUT_NORMAL,\n shouldSkipHorizontalScroll: () => gridBodyCon.getScrollFeature().isHorizontalScrollShowing()\n });\n });\n\n //intitialization of drag event handling\n this.dragService = this.gridApi.dragAndDropService.dragService;\n const eContainers = this.wrappingDiv.querySelectorAll(`[ref=\"eContainer\"]`);\n for (const eContainer of eContainers) {\n const params = {\n eElement: eContainer,\n onDragStart: this.onDragStart.bind(this),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n\n this.dragService.addDragSource(params);\n this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));\n }\n }\n\n cellPositionEquals(cellA, cellB) {\n const colsMatch = cellA.column === cellB.column;\n const floatingMatch = cellA.rowPinned === cellB.rowPinned;\n const indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n }\n\n onColumnVisibleChange() {\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n\n // then check if the column visibility has changed in any cell range\n this.cellRanges.forEach(cellRange => {\n const beforeCols = cellRange.columns;\n\n // remove hidden cols from cell range\n cellRange.columns = cellRange.columns.filter(col => col.isVisible());\n\n const colsInRangeChanged = !_.areEqual(beforeCols, cellRange.columns);\n if (colsInRangeChanged) {\n this.dispatchChangedEvent(false, true, cellRange.id);\n }\n });\n }\n\n refreshLastRangeStart() {\n const lastRange = _.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n\n this.refreshRangeStart(lastRange);\n }\n\n isContiguousRange(cellRange) {\n const rangeColumns = cellRange.columns;\n\n if (!rangeColumns.length) {\n return false;\n }\n\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\n\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n }\n\n getRangeStartRow(cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.startRow : cellRange.endRow;\n }\n const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? Constants.PINNED_TOP : null;\n return {rowIndex: 0, rowPinned};\n }\n\n getRangeEndRow(cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.endRow : cellRange.startRow;\n }\n\n const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n const pinnedBottom = pinnedBottomRowCount > 0;\n\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: Constants.PINNED_BOTTOM\n };\n }\n\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: null\n };\n }\n\n setRangeToCell(cell, appendRange = false) {\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n this.removeAllCellRanges(true);\n const rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\n // many times to the clipboard.\n let cellRange;\n for (let i = 0; i < this.cellRanges.length; i++) {\n const range = this.cellRanges[i];\n const matches =\n // check cols are same\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\n // check rows are same\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\n if (matches) {\n cellRange = range;\n break;\n }\n }\n\n if (cellRange) {\n // we need it at the end of the list, as the dragStart picks the last created\n // range as the start point for the drag\n const atEndOfList = _.last(this.cellRanges) === cellRange;\n\n if (!atEndOfList) {\n _.removeFromArray(this.cellRanges, cellRange);\n this.cellRanges.push(cellRange);\n }\n } else {\n cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(newRange);\n }\n\n this.newestRangeStartCell = cell;\n this.onDragStop();\n this.dispatchChangedEvent(true, true, cellRange.id);\n }\n\n extendLatestRangeToCell(cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n const cellRange = _.last(this.cellRanges);\n\n this.updateRangeEnd(cellRange, cellPosition);\n }\n\n updateRangeEnd(cellRange, cellPosition, silent) {\n silent = !!silent;\n const endColumn = cellPosition.column;\n const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\n return;\n }\n\n cellRange.columns = colsToAdd;\n cellRange.endRow = {rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned};\n\n if (!silent) {\n this.dispatchChangedEvent(true, true, cellRange.id);\n }\n }\n\n refreshRangeStart(cellRange) {\n const {startColumn, columns} = cellRange;\n\n const moveColInCellRange = (colToMove, moveToFront) => {\n const otherCols = cellRange.columns.filter(col => col !== colToMove);\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\n } else {\n cellRange.columns = otherCols;\n }\n };\n\n const {left, right} = this.getRangeEdgeColumns(cellRange);\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n const shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n }\n\n getRangeEdgeColumns(cellRange) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const allIndices = cellRange.columns\n .map(c => allColumns.indexOf(c))\n .filter(i => i > -1)\n .sort((a, b) => a - b);\n\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[_.last(allIndices)]\n };\n }\n\n // returns true if successful, false if not successful\n extendLatestRangeInDirection(key) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n\n const lastRange = _.last(this.cellRanges);\n\n const startCell = this.newestRangeStartCell;\n\n const firstCol = lastRange.columns[0];\n const lastCol = _.last(lastRange.columns);\n\n // find the cell that is at the furthest away corner from the starting cell\n const endCellIndex = lastRange.endRow.rowIndex;\n const endCellFloating = lastRange.endRow.rowPinned;\n const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n\n const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};\n const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\n\n // if user is at end of grid, so no cell to extend to, we return false\n if (!newEndCell) {\n return;\n }\n\n this.setCellRange({\n rowStartIndex: startCell.rowIndex,\n rowStartPinned: startCell.rowPinned,\n rowEndIndex: newEndCell.rowIndex,\n rowEndPinned: newEndCell.rowPinned,\n columnStart: startCell.column,\n columnEnd: newEndCell.column\n });\n\n return newEndCell;\n }\n\n setCellRange(params) {\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n }\n\n setCellRanges(cellRanges) {\n if (_.shallowCompare(this.cellRanges, cellRanges)) {\n return;\n }\n this.removeAllCellRanges(true);\n\n cellRanges.forEach(newRange => {\n if (newRange.columns && newRange.startRow) {\n this.newestRangeStartCell = {\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n };\n }\n this.cellRanges.push(newRange);\n });\n\n this.dispatchChangedEvent(false, true);\n }\n\n createCellRangeFromCellRangeParams(params) {\n let columns;\n if (params.columns) {\n columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);\n } else {\n const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\n const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n }\n\n if (!columns) {\n return;\n }\n\n const startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned\n } : undefined;\n\n const endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned\n } : undefined;\n\n return {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n }\n\n addCellRange(params) {\n const newRange = this.createCellRangeFromCellRangeParams(params);\n if (newRange) {\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n }\n\n getCellRanges() {\n return this.cellRanges;\n }\n\n isEmpty() {\n return this.cellRanges.length === 0;\n }\n\n isMoreThanOneCell() {\n if (this.cellRanges.length === 0) {\n // no ranges, so not more than one cell\n return false;\n } else if (this.cellRanges.length > 1) {\n // many ranges, so more than one cell\n return true;\n }\n\n // only one range, return true if range has more than one\n const range = this.cellRanges[0];\n const startRow = this.getRangeStartRow(range);\n const endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n }\n\n removeAllCellRanges(silent) {\n if (this.isEmpty()) {\n return;\n }\n\n this.onDragStop();\n this.cellRanges.length = 0;\n\n if (!silent) {\n this.dispatchChangedEvent(false, true);\n }\n }\n\n// as the user is dragging outside of the panel, the div starts to scroll, which in turn\n// means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n// the selection my mimicking a new mouse event\n onBodyScroll() {\n this.onDragging(this.lastMouseEvent);\n }\n\n isCellInAnyRange(cell) {\n return this.getCellRangeCount(cell) > 0;\n }\n\n isCellInSpecificRange(cell, range) {\n const columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n }\n\n isLastCellOfRange(cellRange, cell) {\n const {startRow, endRow} = cellRange;\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n const rangeFirstIndexColumn = cellRange.columns[0];\n const rangeLastIndexColumn = _.last(cellRange.columns);\n const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\n const isLastColumn = cell.column === lastRangeColumn;\n return isLastColumn && isLastRow;\n }\n\n isBottomRightCell(cellRange, cell) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\n const {startRow, endRow} = cellRange;\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n\n const isRightColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n const isLastRow = cell.rowIndex === lastRow.rowIndex && _.makeNull(cell.rowPinned) === _.makeNull(lastRow.rowPinned);\n\n return isRightColumn && isLastRow;\n }\n\n// returns the number of ranges this cell is in\n getCellRangeCount(cell) {\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;\n }\n\n isRowInRange(rowIndex, floating, cellRange) {\n\n const firstRow = this.getRangeStartRow(cellRange);\n const lastRow = this.getRangeEndRow(cellRange);\n\n const thisRow = {rowIndex: rowIndex, rowPinned: floating};\n\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n\n const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n }\n\n getDraggingRange() {\n return this.draggingRange;\n }\n\n onDragStart(mouseEvent) {\n const {shiftKey} = mouseEvent;\n const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n if (_.missing(mouseCell)) {\n // if drag wasn't on cell, then do nothing, including do not set dragging=true,\n // (which them means onDragging and onDragStop do nothing)\n return;\n }\n\n if (!shiftKey || _.exists(_.last(this.cellRanges).type)) {\n this.removeAllCellRanges(true);\n }\n\n this.dragging = true;\n this.draggingCell = mouseCell;\n this.lastMouseEvent = mouseEvent;\n\n if (!shiftKey) {\n this.newestRangeStartCell = mouseCell;\n }\n\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\n // user clicks it means a range of one cell was created. we need to extend this range\n // rather than creating another range. otherwise we end up with two distinct ranges\n // from a drag operation (one from click, and one from drag).\n if (this.cellRanges.length > 0) {\n this.draggingRange = _.last(this.cellRanges);\n } else {\n const mouseRowPosition = {\n rowIndex: mouseCell.rowIndex,\n rowPinned: mouseCell.rowPinned\n };\n\n this.draggingRange = {\n startRow: mouseRowPosition,\n endRow: mouseRowPosition,\n columns: [mouseCell.column],\n startColumn: this.newestRangeStartCell.column\n };\n this.cellRanges.push(this.draggingRange);\n }\n\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\n\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\n }\n\n onDragging(mouseEvent) {\n if (!this.dragging || !mouseEvent) {\n return;\n }\n this.lastMouseEvent = mouseEvent;\n\n const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n\n const isMouseAndStartInPinned = (position) =>\n cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;\n\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n\n if (\n !cellPosition ||\n !this.draggingCell ||\n this.cellPositionEquals(this.draggingCell, cellPosition)\n ) {\n return;\n }\n\n const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n\n if (!columns) {\n return;\n }\n\n this.draggingCell = cellPosition;\n\n this.draggingRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n this.draggingRange.columns = columns;\n\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\n this.focusCell(cellPosition);\n }\n\n focusCell(cellPosition) {\n const cellFocused = this.focusService.isCellFocused(cellPosition);\n if (!cellFocused) {\n this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\n }\n }\n\n onDragStop() {\n if (!this.dragging) {\n return;\n }\n const {id} = this.draggingRange;\n this.autoScrollService.ensureCleared();\n\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\n this.lastMouseEvent = null;\n this.dragging = false;\n this.draggingRange = undefined;\n this.draggingCell = undefined;\n\n this.dispatchChangedEvent(false, true, id);\n }\n\n dispatchChangedEvent(started, finished, id) {\n this.cellRanges.map((cellRange) => {\n let currentRow = this.getRangeStartRow(cellRange);\n const lastRow = this.getRangeEndRow(cellRange);\n const nodesToBeSelected = [];\n while (true) {\n const finishedAllRows = _.missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);\n if (finishedAllRows || !currentRow || !cellRange.columns) {\n break;\n }\n const rowNode = this.rowRenderer.getRowNode(currentRow);\n if (!rowNode.isSelected()) {\n rowNode.setSelected(true);\n }\n nodesToBeSelected.push(rowNode.data);\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n this.gridApi.getSelectedNodes().forEach((node) => {\n if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {\n node.setSelected(false);\n }\n });\n });\n const event = Object.freeze({\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n started: started,\n finished: finished,\n id: id,\n });\n this.eventService.dispatchEvent(event);\n }\n\n calculateColumnsBetween(columnFrom, columnTo) {\n const allColumns = this.columnModel.getAllDisplayedColumns();\n const isSameColumn = columnFrom === columnTo;\n const fromIndex = allColumns.indexOf(columnFrom);\n\n if (fromIndex < 0) {\n console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);\n return undefined;\n }\n\n const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n\n if (toIndex < 0) {\n console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);\n return undefined;\n }\n\n if (isSameColumn) {\n return [columnFrom];\n }\n\n const firstIndex = Math.min(fromIndex, toIndex);\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n\n const columns = [];\n\n for (let i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n\n return columns;\n }\n}"]}
1
+ {"version":3,"file":"rangeSelector.js","sourceRoot":"","sources":["../../../../../components/grid/cell/rangeSelector.js"],"names":[],"mappings":"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","sourcesContent":["import {\r\n _areEqual,\r\n _exists,\r\n _includes, _isDomLayout,\r\n _last,\r\n _makeNull,\r\n _missing, _removeFromArray,\r\n _shallowCompare,\r\n AutoScrollService, BeanStub\r\n} from \"ag-grid-community\";\r\n\r\nexport class RangeSelector extends BeanStub {\r\n beanName = \"RangeSelector\";\r\n\r\n wireBeans(beans) {\r\n this.rowModel = beans.rowModel;\r\n this.dragService = beans.dragService;\r\n this.columnModel = beans.columnModel;\r\n this.visibleColsService = beans.visibleColsService;\r\n this.cellNavigationService = beans.cellNavigationService;\r\n this.pinnedRowModel = beans.pinnedRowModel;\r\n this.rowPositionUtils = beans.rowPositionUtils;\r\n this.cellPositionUtils = beans.cellPositionUtils;\r\n this.ctrlsService = beans.ctrlsService;\r\n this.valueService = beans.valueService;\r\n this.eventService = beans.eventService;\r\n this.mouseEventService = beans.mouseEventService;\r\n this.gridApi = beans.gridApi;\r\n this.eGridDiv = beans.eGridDiv;\r\n this.focusService = beans.focusService;\r\n this.gos = beans.gos;\r\n }\r\n\r\n postConstruct() {\r\n this.cellRanges = [];\r\n this.bodyScrollListener = this.onBodyScroll.bind(this);\r\n this.dragging = false;\r\n\r\n this.eventService.addEventListener(\"newColumnsLoaded\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnPivotModeChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnRowGroupChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnPivotChanged\", () => this.removeAllCellRanges());\r\n this.eventService.addEventListener(\"columnGroupOpened\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnMoved\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnPinned\", this.refreshLastRangeStart.bind(this));\r\n this.eventService.addEventListener(\"columnVisible\", this.onColumnVisibleChange.bind(this));\r\n\r\n this.ctrlsService.whenReady(this,() => {\r\n const gridBodyCon = this.ctrlsService.getGridBodyCtrl();\r\n this.autoScrollService = new AutoScrollService({\r\n scrollContainer: gridBodyCon.getBodyViewportElement(),\r\n scrollAxis: 'xy',\r\n getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,\r\n setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),\r\n getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,\r\n setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),\r\n shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),\r\n shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()\r\n });\r\n });\r\n\r\n //intitialization of drag event handling\r\n // const eContainers = guiRoot.querySelectorAll(`[ref=\"eContainer\"]`);\r\n // for (const eContainer of eContainers) {\r\n const params = {\r\n eElement: this.eGridDiv,\r\n onDragStart: this.onDragStart.bind(this),\r\n onDragStop: this.onDragStop.bind(this),\r\n onDragging: this.onDragging.bind(this)\r\n };\r\n\r\n this.dragService.addDragSource(params);\r\n this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));\r\n // }\r\n }\r\n\r\n cellPositionEquals(cellA, cellB) {\r\n const colsMatch = cellA.column === cellB.column;\r\n const floatingMatch = cellA.rowPinned === cellB.rowPinned;\r\n const indexMatch = cellA.rowIndex === cellB.rowIndex;\r\n return colsMatch && floatingMatch && indexMatch;\r\n }\r\n\r\n onColumnVisibleChange() {\r\n // first move start column in last cell range (i.e. series chart range)\r\n this.refreshLastRangeStart();\r\n\r\n // then check if the column visibility has changed in any cell range\r\n this.cellRanges.forEach(cellRange => {\r\n const beforeCols = cellRange.columns;\r\n\r\n // remove hidden cols from cell range\r\n cellRange.columns = cellRange.columns.filter(col => col.isVisible());\r\n\r\n const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);\r\n if (colsInRangeChanged) {\r\n this.dispatchChangedEvent(false, true, cellRange.id);\r\n }\r\n });\r\n }\r\n\r\n refreshLastRangeStart() {\r\n const lastRange = _last(this.cellRanges);\r\n if (!lastRange) {\r\n return;\r\n }\r\n\r\n this.refreshRangeStart(lastRange);\r\n }\r\n\r\n isContiguousRange(cellRange) {\r\n const rangeColumns = cellRange.columns;\r\n\r\n if (!rangeColumns.length) {\r\n return false;\r\n }\r\n\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n\r\n return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\r\n }\r\n\r\n getRangeStartRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\r\n cellRange.startRow : cellRange.endRow;\r\n }\r\n const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;\r\n return {rowIndex: 0, rowPinned};\r\n }\r\n\r\n getRangeEndRow(cellRange) {\r\n if (cellRange.startRow && cellRange.endRow) {\r\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\r\n cellRange.endRow : cellRange.startRow;\r\n }\r\n\r\n const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\r\n const pinnedBottom = pinnedBottomRowCount > 0;\r\n\r\n if (pinnedBottom) {\r\n return {\r\n rowIndex: pinnedBottomRowCount - 1,\r\n rowPinned: 'bottom'\r\n };\r\n }\r\n\r\n return {\r\n rowIndex: this.rowModel.getRowCount() - 1,\r\n rowPinned: null\r\n };\r\n }\r\n\r\n setRangeToCell(cell, appendRange = false) {\r\n const columns = this.calculateColumnsBetween(cell.column, cell.column);\r\n if (!columns) {\r\n return;\r\n }\r\n this.removeAllCellRanges(true);\r\n const rowForCell = {\r\n rowIndex: cell.rowIndex,\r\n rowPinned: cell.rowPinned\r\n };\r\n\r\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\r\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\r\n // many times to the clipboard.\r\n let cellRange;\r\n for (let i = 0; i < this.cellRanges.length; i++) {\r\n const range = this.cellRanges[i];\r\n const matches =\r\n // check cols are same\r\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\r\n // check rows are same\r\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\r\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\r\n if (matches) {\r\n cellRange = range;\r\n break;\r\n }\r\n }\r\n\r\n if (cellRange) {\r\n // we need it at the end of the list, as the dragStart picks the last created\r\n // range as the start point for the drag\r\n const atEndOfList = _last(this.cellRanges) === cellRange;\r\n\r\n if (!atEndOfList) {\r\n _removeFromArray(this.cellRanges, cellRange);\r\n this.cellRanges.push(cellRange);\r\n }\r\n } else {\r\n cellRange = {\r\n startRow: rowForCell,\r\n endRow: rowForCell,\r\n columns: columns,\r\n startColumn: cell.column\r\n };\r\n this.cellRanges.push(cellRange);\r\n }\r\n\r\n this.newestRangeStartCell = cell;\r\n this.onDragStop();\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n\r\n extendLatestRangeToCell(cellPosition) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n const cellRange = _last(this.cellRanges);\r\n\r\n this.updateRangeEnd(cellRange, cellPosition);\r\n }\r\n\r\n updateRangeEnd(cellRange, cellPosition, silent) {\r\n silent = !!silent;\r\n const endColumn = cellPosition.column;\r\n const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\r\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\r\n return;\r\n }\r\n\r\n cellRange.columns = colsToAdd;\r\n cellRange.endRow = {rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned};\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(true, true, cellRange.id);\r\n }\r\n }\r\n\r\n refreshRangeStart(cellRange) {\r\n const {startColumn, columns} = cellRange;\r\n\r\n const moveColInCellRange = (colToMove, moveToFront) => {\r\n const otherCols = cellRange.columns.filter(col => col !== colToMove);\r\n if (colToMove) {\r\n cellRange.startColumn = colToMove;\r\n cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];\r\n } else {\r\n cellRange.columns = otherCols;\r\n }\r\n };\r\n\r\n const {left, right} = this.getRangeEdgeColumns(cellRange);\r\n const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\r\n if (shouldMoveLeftCol) {\r\n moveColInCellRange(left, true);\r\n return;\r\n }\r\n const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;\r\n if (shouldMoveRightCol) {\r\n moveColInCellRange(right, false);\r\n return;\r\n }\r\n }\r\n\r\n getRangeEdgeColumns(cellRange) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allIndices = cellRange.columns\r\n .map(c => allColumns.indexOf(c))\r\n .filter(i => i > -1)\r\n .sort((a, b) => a - b);\r\n\r\n return {\r\n left: allColumns[allIndices[0]],\r\n right: allColumns[_last(allIndices)]\r\n };\r\n }\r\n\r\n // returns true if successful, false if not successful\r\n extendLatestRangeInDirection(key) {\r\n if (this.isEmpty() || !this.newestRangeStartCell) {\r\n return;\r\n }\r\n\r\n const lastRange = _last(this.cellRanges);\r\n\r\n const startCell = this.newestRangeStartCell;\r\n\r\n const firstCol = lastRange.columns[0];\r\n const lastCol = _last(lastRange.columns);\r\n\r\n // find the cell that is at the furthest away corner from the starting cell\r\n const endCellIndex = lastRange.endRow.rowIndex;\r\n const endCellFloating = lastRange.endRow.rowPinned;\r\n const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\r\n\r\n const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};\r\n const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\r\n\r\n // if user is at end of grid, so no cell to extend to, we return false\r\n if (!newEndCell) {\r\n return;\r\n }\r\n\r\n this.setCellRange({\r\n rowStartIndex: startCell.rowIndex,\r\n rowStartPinned: startCell.rowPinned,\r\n rowEndIndex: newEndCell.rowIndex,\r\n rowEndPinned: newEndCell.rowPinned,\r\n columnStart: startCell.column,\r\n columnEnd: newEndCell.column\r\n });\r\n\r\n return newEndCell;\r\n }\r\n\r\n setCellRange(params) {\r\n this.removeAllCellRanges(true);\r\n this.addCellRange(params);\r\n }\r\n\r\n setCellRanges(cellRanges) {\r\n if (_shallowCompare(this.cellRanges, cellRanges)) {\r\n return;\r\n }\r\n this.removeAllCellRanges(true);\r\n\r\n cellRanges.forEach(newRange => {\r\n if (newRange.columns && newRange.startRow) {\r\n this.newestRangeStartCell = {\r\n rowIndex: newRange.startRow.rowIndex,\r\n rowPinned: newRange.startRow.rowPinned,\r\n column: newRange.columns[0]\r\n };\r\n }\r\n this.cellRanges.push(newRange);\r\n });\r\n\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n\r\n createCellRangeFromCellRangeParams(params) {\r\n let columns;\r\n if (params.columns) {\r\n columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);\r\n } else {\r\n const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\r\n const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\r\n if (!columnStart || !columnEnd) {\r\n return;\r\n }\r\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\r\n }\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n const startRow = params.rowStartIndex != null ? {\r\n rowIndex: params.rowStartIndex,\r\n rowPinned: params.rowStartPinned\r\n } : undefined;\r\n\r\n const endRow = params.rowEndIndex != null ? {\r\n rowIndex: params.rowEndIndex,\r\n rowPinned: params.rowEndPinned\r\n } : undefined;\r\n\r\n return {\r\n startRow: startRow,\r\n endRow: endRow,\r\n columns: columns,\r\n startColumn: columns[0]\r\n };\r\n }\r\n\r\n addCellRange(params) {\r\n const newRange = this.createCellRangeFromCellRangeParams(params);\r\n if (newRange) {\r\n this.cellRanges.push(newRange);\r\n this.dispatchChangedEvent(false, true, newRange.id);\r\n }\r\n }\r\n\r\n getCellRanges() {\r\n return this.cellRanges;\r\n }\r\n\r\n isEmpty() {\r\n return this.cellRanges.length === 0;\r\n }\r\n\r\n isMoreThanOneCell() {\r\n if (this.cellRanges.length === 0) {\r\n // no ranges, so not more than one cell\r\n return false;\r\n } else if (this.cellRanges.length > 1) {\r\n // many ranges, so more than one cell\r\n return true;\r\n }\r\n\r\n // only one range, return true if range has more than one\r\n const range = this.cellRanges[0];\r\n const startRow = this.getRangeStartRow(range);\r\n const endRow = this.getRangeEndRow(range);\r\n return startRow.rowPinned !== endRow.rowPinned ||\r\n startRow.rowIndex !== endRow.rowIndex ||\r\n range.columns.length !== 1;\r\n }\r\n\r\n removeAllCellRanges(silent) {\r\n if (this.isEmpty()) {\r\n return;\r\n }\r\n\r\n this.onDragStop();\r\n this.cellRanges.length = 0;\r\n\r\n if (!silent) {\r\n this.dispatchChangedEvent(false, true);\r\n }\r\n }\r\n\r\n// as the user is dragging outside of the panel, the div starts to scroll, which in turn\r\n// means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\r\n// the selection my mimicking a new mouse event\r\n onBodyScroll() {\r\n this.onDragging(this.lastMouseEvent);\r\n }\r\n\r\n isCellInAnyRange(cell) {\r\n return this.getCellRangeCount(cell) > 0;\r\n }\r\n\r\n isCellInSpecificRange(cell, range) {\r\n const columnInRange = range.columns !== null && _includes(range.columns, cell.column);\r\n const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\r\n return columnInRange && rowInRange;\r\n }\r\n\r\n isLastCellOfRange(cellRange, cell) {\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\r\n const rangeFirstIndexColumn = cellRange.columns[0];\r\n const rangeLastIndexColumn = _last(cellRange.columns);\r\n const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\r\n const isLastColumn = cell.column === lastRangeColumn;\r\n return isLastColumn && isLastRow;\r\n }\r\n\r\n isBottomRightCell(cellRange, cell) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);\r\n const {startRow, endRow} = cellRange;\r\n const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\r\n\r\n const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);\r\n const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);\r\n\r\n return isRightColumn && isLastRow;\r\n }\r\n\r\n// returns the number of ranges this cell is in\r\n getCellRangeCount(cell) {\r\n if (this.isEmpty()) {\r\n return 0;\r\n }\r\n return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;\r\n }\r\n\r\n isRowInRange(rowIndex, floating, cellRange) {\r\n\r\n const firstRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n\r\n const thisRow = {rowIndex: rowIndex, rowPinned: floating};\r\n\r\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\r\n const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\r\n const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\r\n\r\n if (equalsFirstRow || equalsLastRow) {\r\n return true;\r\n }\r\n\r\n const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\r\n const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\r\n return afterFirstRow && beforeLastRow;\r\n }\r\n\r\n getDraggingRange() {\r\n return this.draggingRange;\r\n }\r\n\r\n onDragStart(mouseEvent) {\r\n const {shiftKey} = mouseEvent;\r\n const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\r\n if (_missing(mouseCell)) {\r\n // if drag wasn't on cell, then do nothing, including do not set dragging=true,\r\n // (which them means onDragging and onDragStop do nothing)\r\n return;\r\n }\r\n\r\n if (!shiftKey || _exists(_last(this.cellRanges).type)) {\r\n this.removeAllCellRanges(true);\r\n }\r\n\r\n this.dragging = true;\r\n this.draggingCell = mouseCell;\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n if (!shiftKey) {\r\n this.newestRangeStartCell = mouseCell;\r\n }\r\n\r\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\r\n // user clicks it means a range of one cell was created. we need to extend this range\r\n // rather than creating another range. otherwise we end up with two distinct ranges\r\n // from a drag operation (one from click, and one from drag).\r\n if (this.cellRanges.length > 0) {\r\n this.draggingRange = _last(this.cellRanges);\r\n } else {\r\n const mouseRowPosition = {\r\n rowIndex: mouseCell.rowIndex,\r\n rowPinned: mouseCell.rowPinned\r\n };\r\n\r\n this.draggingRange = {\r\n startRow: mouseRowPosition,\r\n endRow: mouseRowPosition,\r\n columns: [mouseCell.column],\r\n startColumn: this.newestRangeStartCell.column\r\n };\r\n this.cellRanges.push(this.draggingRange);\r\n }\r\n\r\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\r\n\r\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\r\n }\r\n\r\n onDragging(mouseEvent) {\r\n if (!this.dragging || !mouseEvent) {\r\n return;\r\n }\r\n this.lastMouseEvent = mouseEvent;\r\n\r\n const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);\r\n\r\n const isMouseAndStartInPinned = (position) =>\r\n cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;\r\n\r\n const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\r\n\r\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\r\n\r\n if (\r\n !cellPosition ||\r\n !this.draggingCell ||\r\n this.cellPositionEquals(this.draggingCell, cellPosition)\r\n ) {\r\n return;\r\n }\r\n\r\n const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\r\n\r\n if (!columns) {\r\n return;\r\n }\r\n\r\n this.draggingCell = cellPosition;\r\n\r\n this.draggingRange.endRow = {\r\n rowIndex: cellPosition.rowIndex,\r\n rowPinned: cellPosition.rowPinned\r\n };\r\n this.draggingRange.columns = columns;\r\n\r\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\r\n this.focusCell(cellPosition);\r\n }\r\n\r\n focusCell(cellPosition) {\r\n const cellFocused = this.focusService.isCellFocused(cellPosition);\r\n if (!cellFocused) {\r\n this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\r\n }\r\n }\r\n\r\n onDragStop() {\r\n if (!this.dragging) {\r\n return;\r\n }\r\n const {id} = this.draggingRange;\r\n this.autoScrollService.ensureCleared();\r\n\r\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\r\n this.lastMouseEvent = null;\r\n this.dragging = false;\r\n this.draggingRange = undefined;\r\n this.draggingCell = undefined;\r\n\r\n this.dispatchChangedEvent(false, true, id);\r\n }\r\n\r\n dispatchChangedEvent(started, finished, id) {\r\n this.cellRanges.map((cellRange) => {\r\n let currentRow = this.getRangeStartRow(cellRange);\r\n const lastRow = this.getRangeEndRow(cellRange);\r\n const nodesToBeSelected = [];\r\n while (true) {\r\n const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);\r\n if (finishedAllRows || !currentRow || !cellRange.columns) {\r\n break;\r\n }\r\n const rowNode = this.rowPositionUtils.getRowNode(currentRow);\r\n if (!rowNode) {\r\n break;\r\n }\r\n if (!rowNode.isSelected()) {\r\n rowNode.setSelected(true);\r\n }\r\n nodesToBeSelected.push(rowNode.data);\r\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\r\n }\r\n this.gridApi.getSelectedNodes().forEach((node) => {\r\n if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {\r\n node.setSelected(false);\r\n }\r\n });\r\n });\r\n const eventCellSelection = {\r\n type: \"cellSelectionChanged\",\r\n started: started,\r\n finished: finished,\r\n id: id,\r\n };\r\n this.eventService.dispatchEvent(eventCellSelection);\r\n const eventRangeSelection = {\r\n type: \"rangeSelectionChanged\",\r\n started: started,\r\n finished: finished,\r\n id: id,\r\n };\r\n this.eventService.dispatchEvent(eventRangeSelection);\r\n }\r\n\r\n calculateColumnsBetween(columnFrom, columnTo) {\r\n const allColumns = this.visibleColsService.getAllCols();\r\n const isSameColumn = columnFrom === columnTo;\r\n const fromIndex = allColumns.indexOf(columnFrom);\r\n\r\n if (fromIndex < 0) {\r\n console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);\r\n return undefined;\r\n }\r\n\r\n const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\r\n\r\n if (toIndex < 0) {\r\n console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);\r\n return undefined;\r\n }\r\n\r\n if (isSameColumn) {\r\n return [columnFrom];\r\n }\r\n\r\n const firstIndex = Math.min(fromIndex, toIndex);\r\n const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\r\n\r\n const columns = [];\r\n\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n columns.push(allColumns[i]);\r\n }\r\n\r\n return columns;\r\n }\r\n}"]}
@@ -1,32 +1,4 @@
1
- import React from 'react';
2
- import { ICellEditor, ICellEditorParams } from "ag-grid-community";
3
- interface SimpleStatusTextCellEditorProperties extends ICellEditorParams {
4
- decimalSeparator?: string;
5
- precision?: number;
6
- statusTexts: {
7
- text: string;
8
- value: number;
9
- }[];
10
- }
11
- interface SimpleStatusTextCellEditorState {
12
- value: number | null;
13
- cancelEdit: boolean;
14
- opened: boolean;
15
- }
16
- export default class SimpleStatusTextCellEditor extends React.Component<SimpleStatusTextCellEditorProperties, SimpleStatusTextCellEditorState> implements ICellEditor {
17
- private selectComponent;
18
- private focusOpId;
19
- private wrappingComponent;
20
- constructor(props: Readonly<SimpleStatusTextCellEditorProperties>);
21
- getInitialState(props: Readonly<SimpleStatusTextCellEditorProperties>): SimpleStatusTextCellEditorState;
22
- componentWillUnmount(): void;
23
- afterGuiAttached(): void;
24
- getValue(): number | null;
25
- isPopup(): boolean;
26
- isCancelBeforeStart(): boolean;
27
- isCancelAfterEnd(): boolean;
28
- render(): JSX.Element;
29
- private updateValueFromPreselection;
30
- private updateValueImmediately;
31
- }
32
- 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,117 +1,107 @@
1
- import React from 'react';
2
- import { Select } from "antd";
3
- import { LocaleHolder } from "d2core/i18n/localeHolder";
4
- import ReactDOM from 'react-dom';
5
- import { Key } from "ts-key-enum";
6
- import debounce from "lodash/debounce";
7
- const KEY_BACKSPACE = 8;
8
- const KEY_DELETE = 46;
9
- export default class SimpleStatusTextCellEditor extends React.Component {
10
- constructor(props) {
11
- super(props);
12
- this.selectComponent = null;
13
- this.focusOpId = null;
14
- this.wrappingComponent = null;
15
- this.state = this.getInitialState(props);
16
- this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, { maxWait: 200 });
17
- }
18
- getInitialState(props) {
19
- let value;
20
- if (props.keyPress === KEY_BACKSPACE || props.keyPress === KEY_DELETE) {
21
- value = null;
22
- }
23
- else if (props.charPress) {
24
- const parsedValue = Number.parseInt(props.charPress);
25
- value = isNaN(parsedValue) ? props.value : parsedValue;
26
- }
27
- else {
28
- value = props.value;
29
- }
30
- return {
31
- value: value,
32
- cancelEdit: false,
33
- opened: true,
34
- };
35
- }
36
- componentWillUnmount() {
37
- if (this.focusOpId) {
38
- clearTimeout(this.focusOpId);
39
- }
40
- }
41
- afterGuiAttached() {
42
- this.focusOpId = window.setTimeout(() => {
43
- var _a;
44
- (_a = this.selectComponent) === null || _a === void 0 ? void 0 : _a.focus();
45
- }, 200);
46
- }
47
- getValue() {
48
- return this.state.value;
49
- }
50
- isPopup() {
51
- return true;
52
- }
53
- isCancelBeforeStart() {
54
- return false;
55
- }
56
- isCancelAfterEnd() {
57
- return false;
58
- }
59
- render() {
60
- var _a;
61
- return (React.createElement("div", { style: { width: "100%", minWidth: 150 } },
62
- React.createElement(Select, { ref: (component) => {
63
- this.selectComponent = component;
64
- }, size: "small", virtual: false, className: "select-with-one-item", showSearch: true, dropdownMatchSelectWidth: false, style: { width: "100%", overflow: "auto", padding: 0, margin: 0 }, dropdownStyle: { maxHeight: 400, overflow: 'auto' }, allowClear: true, showAction: ['focus', 'click'], filterOption: (inputValue, option) => {
65
- var _a;
66
- const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);
67
- const value = option === null || option === void 0 ? void 0 : option.value;
68
- return (value !== undefined && value !== null && typeof value === "number" && LocaleHolder.formatNumber(value).indexOf(inputToSearch) >= 0) || (((_a = option === null || option === void 0 ? void 0 : option.title) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch)) >= 0);
69
- }, value: this.state.value !== null ? this.state.value : undefined, onChange: (value) => {
70
- this.setState({ value: value === undefined ? null : value });
71
- }, onSelect: (value) => {
72
- this.setState({ value: value === undefined ? null : value });
73
- }, onMouseDown: () => {
74
- this.updateValueImmediately();
75
- }, open: this.state.opened, onDropdownVisibleChange: (visible) => {
76
- this.setState({ opened: visible });
77
- }, getPopupContainer: (_trigger) => {
78
- var _a, _b;
79
- return ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
80
- }, onInputKeyDown: (e) => {
81
- if (!e.altKey && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) {
82
- this.updateValueFromPreselection();
83
- }
84
- }, onSearch: () => {
85
- this.updateValueFromPreselection();
86
- }, dropdownRender: (menu) => {
87
- return (React.createElement("div", { ref: (component) => {
88
- this.wrappingComponent = component;
89
- } }, menu));
90
- } }, (_a = this.props.statusTexts) === null || _a === void 0 ? void 0 : _a.map((statusTextItem) => {
91
- return React.createElement(Select.Option, { id: "select-value-" + statusTextItem.value, key: "" + statusTextItem.value, value: statusTextItem.value, title: statusTextItem.text, "data-optionvalue": "" + statusTextItem.value },
92
- React.createElement("span", { onMouseDown: () => {
93
- this.setState({ value: statusTextItem.value });
94
- }, style: {
95
- color: "rgba(0, 0, 0, 0.85)",
96
- whiteSpace: "nowrap"
97
- } }, `${statusTextItem.text} (${statusTextItem.value})`));
98
- }))));
99
- }
100
- updateValueFromPreselection() {
101
- setTimeout(() => {
102
- this.updateValueImmediately();
103
- }, 200);
104
- }
105
- updateValueImmediately() {
106
- var _a, _b, _c;
107
- 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 : []);
108
- if (selectables.length > 0) {
109
- const optionStringValue = (_c = selectables[0].dataset) === null || _c === void 0 ? void 0 : _c.optionvalue;
110
- const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined;
111
- if (optionValue) {
112
- this.setState({ value: optionValue });
113
- }
114
- }
115
- }
116
- }
1
+ import React from 'react';
2
+ import { Select } from "antd";
3
+ import { LocaleHolder } from "d2core/i18n/localeHolder";
4
+ import ReactDOM from 'react-dom';
5
+ import { Key } from "ts-key-enum";
6
+ import debounce from "lodash/debounce";
7
+ import { DataGridCellEditorComponent, withAgGridHooks } from "./dataGridCellEditorComponent";
8
+ class SimpleStatusTextCellEditor extends DataGridCellEditorComponent {
9
+ constructor(props) {
10
+ super(props);
11
+ this.selectComponent = 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.eventKey === Key.Backspace || props.eventKey === Key.Delete) {
19
+ value = null;
20
+ props.onValueChange(null);
21
+ }
22
+ else if (props.eventKey && props.eventKey.length === 1) {
23
+ const parsedValue = Number.parseInt(props.eventKey);
24
+ value = isNaN(parsedValue) ? props.value : parsedValue;
25
+ props.onValueChange(value);
26
+ }
27
+ else {
28
+ value = props.initialValue;
29
+ }
30
+ return {
31
+ value: value,
32
+ cancelEdit: false,
33
+ opened: true,
34
+ };
35
+ }
36
+ focus() {
37
+ var _a;
38
+ (_a = this.selectComponent) === null || _a === void 0 ? void 0 : _a.focus();
39
+ }
40
+ select() {
41
+ }
42
+ placeCursorToEnd() {
43
+ }
44
+ render() {
45
+ var _a;
46
+ return (React.createElement("div", { style: { width: "100%", minWidth: 150 } },
47
+ React.createElement(Select, { ref: (component) => {
48
+ this.selectComponent = component;
49
+ }, size: "small", virtual: false, className: "select-with-one-item", showSearch: true, popupMatchSelectWidth: false, style: { width: "100%", overflow: "auto", padding: 0, margin: 0 }, dropdownStyle: { maxHeight: 400, overflow: 'auto' }, allowClear: true, showAction: ['focus', 'click'], filterOption: (inputValue, option) => {
50
+ var _a, _b;
51
+ const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);
52
+ const value = option === null || option === void 0 ? void 0 : option.value;
53
+ return (value !== undefined && value !== null && typeof value === "number" && LocaleHolder.formatNumber(value).indexOf(inputToSearch) >= 0) || (((_b = (_a = option === null || option === void 0 ? void 0 : option.title) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch)) !== null && _b !== void 0 ? _b : -1) >= 0);
54
+ }, value: this.state.value !== null ? this.state.value : undefined, onChange: (value) => {
55
+ this.setState({ value: value === undefined ? null : value });
56
+ this.props.onValueChange(value === undefined ? null : value);
57
+ }, onSelect: (value) => {
58
+ this.setState({ value: value === undefined ? null : value });
59
+ this.props.onValueChange(value === undefined ? null : value);
60
+ }, onMouseDown: () => {
61
+ this.updateValueImmediately();
62
+ }, open: this.state.opened, onDropdownVisibleChange: (visible) => {
63
+ this.setState({ opened: visible });
64
+ }, getPopupContainer: (_trigger) => {
65
+ var _a, _b;
66
+ return ((_b = (_a = ReactDOM.findDOMNode(this)) === null || _a === void 0 ? void 0 : _a.parentNode) !== null && _b !== void 0 ? _b : document.body);
67
+ }, onInputKeyDown: (e) => {
68
+ if (!e.altKey && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) {
69
+ this.updateValueFromPreselection();
70
+ }
71
+ }, onSearch: () => {
72
+ this.updateValueFromPreselection();
73
+ }, dropdownRender: (menu) => {
74
+ return (React.createElement("div", { ref: (component) => {
75
+ this.wrappingComponent = component;
76
+ } }, menu));
77
+ } }, (_a = this.props.statusTexts) === null || _a === void 0 ? void 0 : _a.map((statusTextItem) => {
78
+ return React.createElement(Select.Option, { id: "select-value-" + statusTextItem.value, key: "" + statusTextItem.value, value: statusTextItem.value, title: statusTextItem.text, "data-optionvalue": "" + statusTextItem.value },
79
+ React.createElement("span", { onMouseDown: () => {
80
+ this.setState({ value: statusTextItem.value });
81
+ this.props.onValueChange(statusTextItem.value);
82
+ }, style: {
83
+ color: "rgba(0, 0, 0, 0.85)",
84
+ whiteSpace: "nowrap"
85
+ } }, `${statusTextItem.text} (${statusTextItem.value})`));
86
+ }))));
87
+ }
88
+ updateValueFromPreselection() {
89
+ setTimeout(() => {
90
+ this.updateValueImmediately();
91
+ }, 200);
92
+ }
93
+ updateValueImmediately() {
94
+ var _a, _b, _c;
95
+ 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 : []);
96
+ if (selectables.length > 0) {
97
+ const optionStringValue = (_c = selectables[0].dataset) === null || _c === void 0 ? void 0 : _c.optionvalue;
98
+ const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined;
99
+ if (optionValue) {
100
+ this.setState({ value: optionValue });
101
+ this.props.onValueChange(optionValue);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ export default withAgGridHooks(SimpleStatusTextCellEditor);
117
107
  //# sourceMappingURL=simpleStatusTextCellEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simpleStatusTextCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/simpleStatusTextCellEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AACtD,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAC,GAAG,EAAC,MAAM,aAAa,CAAC;AAChC,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAGvC,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,UAAU,GAAG,EAAE,CAAC;AActB,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,KAAK,CAAC,SAAgF;IAK1I,YAAY,KAAqD;QAC7D,KAAK,CAAC,KAAK,CAAC,CAAC;QALT,oBAAe,GAA0B,IAAI,CAAC;QAC9C,cAAS,GAAkB,IAAI,CAAC;QAChC,sBAAiB,GAA0B,IAAI,CAAC;QAIpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,2BAA2B,GAAG,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC,CAAC;IAClH,CAAC;IAED,eAAe,CAAC,KAAqD;QACjE,IAAI,KAAoB,CAAC;QACzB,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;SAC1D;aAAM;YAEH,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SACvB;QACD,OAAO;YACH,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,IAAI;SACoB,CAAC;IACzC,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,eAAe,0CAAE,KAAK,EAAE,CAAC;QAClC,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,KAAK,CAAC;IACjB,CAAC;IAED,gBAAgB;QACZ,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM;;QACF,OAAO,CACH,6BAAK,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAC;YACtC,oBAAC,MAAM,IACH,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE;oBACf,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;gBACrC,CAAC,EACD,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,KAAK,EACd,SAAS,EAAE,sBAAsB,EACjC,UAAU,QACV,wBAAwB,EAAE,KAAK,EAC/B,KAAK,EAAE,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC,EAC/D,aAAa,EAAE,EAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAC,EACjD,UAAU,QACV,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC9B,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE;;oBACjC,MAAM,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBAClF,MAAM,KAAK,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC;oBAC5B,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,iBAAiB,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,KAAI,CAAC,CAAC,CAAC;gBACjP,CAAC,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC/D,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAC;gBAC/D,CAAC,EACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAC,CAAC,CAAC;gBAC/D,CAAC,EACD,WAAW,EAAE,GAAG,EAAE;oBACd,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAClC,CAAC,EACD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACvB,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE;oBACjC,IAAI,CAAC,QAAQ,CAAC,EAAC,MAAM,EAAE,OAAO,EAAC,CAAC,CAAC;gBACrC,CAAC,EACD,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;;oBAE5B,OAAO,CAAC,MAAA,MAAA,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,0CAAE,UAAU,mCAAI,QAAQ,CAAC,IAAI,CAAgB,CAAC;gBACpF,CAAC,EACD,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;oBAClB,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE;wBACjE,IAAI,CAAC,2BAA2B,EAAE,CAAC;qBACtC;gBACL,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE;oBACX,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACvC,CAAC,EACD,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrB,OAAO,CACH,6BAAK,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE;4BACpB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;wBACvC,CAAC,IACI,IAAI,CACH,CACT,CAAC;gBACN,CAAC,IAEA,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;gBAC5C,OAAO,oBAAC,MAAM,CAAC,MAAM,IACjB,EAAE,EAAE,eAAe,GAAG,cAAc,CAAC,KAAK,EAC1C,GAAG,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,EAC9B,KAAK,EAAE,cAAc,CAAC,KAAK,EAC3B,KAAK,EAAE,cAAc,CAAC,IAAI,sBACR,EAAE,GAAG,cAAc,CAAC,KAAK;oBAE/B,8BACI,WAAW,EAAE,GAAG,EAAE;4BACd,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAC,CAAC,CAAC;wBACjD,CAAC,EACD,KAAK,EAAE;4BACH,KAAK,EAAE,qBAAqB;4BAC5B,UAAU,EAAE,QAAQ;yBACvB,IACA,GAAG,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,GAAG,CAChD,CACP,CAAC;YACrB,CAAC,CAAC,CACG,CACP,CACT,CAAC;IACN,CAAC;IAEO,2BAA2B;QAC/B,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClC,CAAC,EAAE,GAAG,CAAC,CAAA;IACX,CAAC;IAEO,sBAAsB;;QAC1B,IAAI,WAAW,GAAkB,KAAK,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,sBAAsB,CAAC,+BAA+B,CAAC,mCAAI,EAAE,CAAkB,CAAC;QACpJ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,MAAM,iBAAiB,GAAG,MAAA,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,0CAAE,WAAW,CAAC;YAC9D,MAAM,WAAW,GAAG,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACtG,IAAI,WAAW,EAAE;gBACb,IAAI,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,CAAC;aACvC;SACJ;IACL,CAAC;CACJ","sourcesContent":["import React from 'react';\nimport {Select} from \"antd\";\nimport {ICellEditor, ICellEditorParams} from \"ag-grid-community\";\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\nimport ReactDOM from 'react-dom';\nimport {Key} from \"ts-key-enum\";\nimport debounce from \"lodash/debounce\";\nimport {RefSelectProps} from \"antd/es/select\";\n\nconst KEY_BACKSPACE = 8;\nconst KEY_DELETE = 46;\n\ninterface SimpleStatusTextCellEditorProperties extends ICellEditorParams {\n decimalSeparator?: string\n precision?: number\n statusTexts: { text: string, value: number }[];\n}\n\ninterface SimpleStatusTextCellEditorState {\n value: number | null\n cancelEdit: boolean\n opened: boolean\n}\n\nexport default class SimpleStatusTextCellEditor extends React.Component<SimpleStatusTextCellEditorProperties, SimpleStatusTextCellEditorState> 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<SimpleStatusTextCellEditorProperties>) {\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<SimpleStatusTextCellEditorProperties>): SimpleStatusTextCellEditorState {\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 SimpleStatusTextCellEditorState;\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 render() {\n return (\n <div style={{width: \"100%\", minWidth: 150}}>\n <Select<number>\n ref={(component) => {\n this.selectComponent = component;\n }}\n size={\"small\"}\n virtual={false}\n className={\"select-with-one-item\"}\n showSearch\n dropdownMatchSelectWidth={false}\n style={{width: \"100%\", overflow: \"auto\", padding: 0, margin: 0}}\n dropdownStyle={{maxHeight: 400, overflow: 'auto'}}\n allowClear\n showAction={['focus', 'click']}\n filterOption={(inputValue, option) => {\n const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);\n const value = option?.value;\n return (value !== undefined && value !== null && typeof value === \"number\" && LocaleHolder.formatNumber(value).indexOf(inputToSearch) >= 0) || (option?.title?.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch) >= 0);\n }}\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 onMouseDown={() => {\n this.updateValueImmediately();\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 onInputKeyDown={(e) => {\n if (!e.altKey && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) {\n this.updateValueFromPreselection();\n }\n }}\n onSearch={() => {\n this.updateValueFromPreselection();\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.statusTexts?.map((statusTextItem) => {\n return <Select.Option\n id={\"select-value-\" + statusTextItem.value}\n key={\"\" + statusTextItem.value}\n value={statusTextItem.value}\n title={statusTextItem.text}\n data-optionvalue={\"\" + statusTextItem.value}\n >\n <span\n onMouseDown={() => {\n this.setState({value: statusTextItem.value});\n }}\n style={{\n color: \"rgba(0, 0, 0, 0.85)\",\n whiteSpace: \"nowrap\"\n }}>\n {`${statusTextItem.text} (${statusTextItem.value})`}\n </span>\n </Select.Option>;\n })}\n </Select>\n </div>\n );\n }\n\n private updateValueFromPreselection() {\n setTimeout(() => {\n this.updateValueImmediately();\n }, 200)\n }\n\n private updateValueImmediately() {\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 }\n}"]}
1
+ {"version":3,"file":"simpleStatusTextCellEditor.js","sourceRoot":"","sources":["../../../../../components/grid/cell/simpleStatusTextCellEditor.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\r\nimport {Select} from \"antd\";\r\nimport {LocaleHolder} from \"d2core/i18n/localeHolder\";\r\nimport ReactDOM from 'react-dom';\r\nimport {Key} from \"ts-key-enum\";\r\nimport debounce from \"lodash/debounce\";\r\nimport {RefSelectProps} from \"antd/es/select\";\r\nimport {CustomCellEditorProps} from \"ag-grid-react\";\r\nimport {DataGridCellEditorComponent, withAgGridHooks} from \"./dataGridCellEditorComponent\";\r\n\r\ninterface SimpleStatusTextCellEditorProperties extends CustomCellEditorProps {\r\n decimalSeparator?: string\r\n precision?: number\r\n statusTexts: { text: string, value: number }[];\r\n}\r\n\r\ninterface SimpleStatusTextCellEditorState {\r\n value: number | null\r\n opened: boolean\r\n}\r\n\r\nclass SimpleStatusTextCellEditor extends DataGridCellEditorComponent<SimpleStatusTextCellEditorProperties, SimpleStatusTextCellEditorState> {\r\n private selectComponent: RefSelectProps | null = null;\r\n private wrappingComponent: HTMLDivElement | null = null;\r\n\r\n constructor(props: Readonly<SimpleStatusTextCellEditorProperties>) {\r\n super(props);\r\n this.state = this.getInitialState(props);\r\n this.updateValueFromPreselection = debounce(this.updateValueFromPreselection.bind(this), 200, {maxWait: 200});\r\n }\r\n\r\n getInitialState(props: Readonly<SimpleStatusTextCellEditorProperties>): SimpleStatusTextCellEditorState {\r\n let value: number | null;\r\n if (props.eventKey === Key.Backspace || props.eventKey === Key.Delete) {\r\n // if backspace or delete pressed, we clear the cell\r\n value = null;\r\n props.onValueChange(null);\r\n } else if (props.eventKey && props.eventKey.length === 1) {\r\n // if a letter was pressed, we start with the letter\r\n const parsedValue = Number.parseInt(props.eventKey);\r\n value = isNaN(parsedValue) ? props.value : parsedValue;\r\n props.onValueChange(value);\r\n } else {\r\n // otherwise we start with the current value\r\n value = props.initialValue;\r\n }\r\n return {\r\n value: value,\r\n cancelEdit: false,\r\n opened: true,\r\n } as SimpleStatusTextCellEditorState;\r\n }\r\n\r\n focus() {\r\n this.selectComponent?.focus();\r\n }\r\n\r\n select() {\r\n }\r\n\r\n placeCursorToEnd() {\r\n }\r\n\r\n render() {\r\n return (\r\n <div style={{width: \"100%\", minWidth: 150}}>\r\n <Select<number>\r\n ref={(component) => {\r\n this.selectComponent = component;\r\n }}\r\n size={\"small\"}\r\n virtual={false}\r\n className={\"select-with-one-item\"}\r\n showSearch\r\n popupMatchSelectWidth={false}\r\n style={{width: \"100%\", overflow: \"auto\", padding: 0, margin: 0}}\r\n dropdownStyle={{maxHeight: 400, overflow: 'auto'}}\r\n allowClear\r\n showAction={['focus', 'click']}\r\n filterOption={(inputValue, option) => {\r\n const inputToSearch = inputValue.toLocaleLowerCase(LocaleHolder.formattingLocale);\r\n const value = option?.value;\r\n return (value !== undefined && value !== null && typeof value === \"number\" && LocaleHolder.formatNumber(value).indexOf(inputToSearch) >= 0) || ((option?.title?.toLocaleLowerCase(LocaleHolder.formattingLocale).indexOf(inputToSearch) ?? -1) >= 0);\r\n }}\r\n value={this.state.value !== null ? this.state.value : undefined}\r\n onChange={(value) => {\r\n this.setState({value: value === undefined ? null : value});\r\n this.props.onValueChange(value === undefined ? null : value);\r\n }}\r\n onSelect={(value) => {\r\n this.setState({value: value === undefined ? null : value});\r\n this.props.onValueChange(value === undefined ? null : value);\r\n }}\r\n onMouseDown={() => {\r\n this.updateValueImmediately();\r\n }}\r\n open={this.state.opened}\r\n onDropdownVisibleChange={(visible) => {\r\n this.setState({opened: visible});\r\n }}\r\n getPopupContainer={(_trigger) => {\r\n // very nasty trick how to keep select's popup within focusable area of ag-grid cell editor popup (prevent closing cell editor when we click in select's dropdown area)\r\n return (ReactDOM.findDOMNode(this)?.parentNode ?? document.body) as HTMLElement;\r\n }}\r\n onInputKeyDown={(e) => {\r\n if (!e.altKey && (e.key === Key.ArrowUp || e.key === Key.ArrowDown)) {\r\n this.updateValueFromPreselection();\r\n }\r\n }}\r\n onSearch={() => {\r\n this.updateValueFromPreselection();\r\n }}\r\n dropdownRender={(menu) => {\r\n return (\r\n <div ref={(component) => {\r\n this.wrappingComponent = component;\r\n }}>\r\n {menu}\r\n </div>\r\n );\r\n }}\r\n >\r\n {this.props.statusTexts?.map((statusTextItem) => {\r\n return <Select.Option\r\n id={\"select-value-\" + statusTextItem.value}\r\n key={\"\" + statusTextItem.value}\r\n value={statusTextItem.value}\r\n title={statusTextItem.text}\r\n data-optionvalue={\"\" + statusTextItem.value}\r\n >\r\n <span\r\n onMouseDown={() => {\r\n this.setState({value: statusTextItem.value});\r\n this.props.onValueChange(statusTextItem.value);\r\n }}\r\n style={{\r\n color: \"rgba(0, 0, 0, 0.85)\",\r\n whiteSpace: \"nowrap\"\r\n }}>\r\n {`${statusTextItem.text} (${statusTextItem.value})`}\r\n </span>\r\n </Select.Option>;\r\n })}\r\n </Select>\r\n </div>\r\n );\r\n }\r\n\r\n private updateValueFromPreselection() {\r\n setTimeout(() => {\r\n this.updateValueImmediately();\r\n }, 200)\r\n }\r\n\r\n private updateValueImmediately() {\r\n let selectables: HTMLElement[] = Array.from(this.wrappingComponent?.getElementsByClassName(\"ant-select-item-option-active\") ?? []) as HTMLElement[];\r\n if (selectables.length > 0) {\r\n const optionStringValue = selectables[0].dataset?.optionvalue;\r\n const optionValue = optionStringValue !== undefined ? Number.parseFloat(optionStringValue) : undefined\r\n if (optionValue) {\r\n this.setState({value: optionValue});\r\n this.props.onValueChange(optionValue);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default withAgGridHooks(SimpleStatusTextCellEditor)"]}
@@ -1,32 +1,4 @@
1
- import React from 'react';
2
- import { ICellEditor, ICellEditorParams } from "ag-grid-community";
3
- interface StatusTextCellEditorProperties extends ICellEditorParams {
4
- decimalSeparator?: string;
5
- precision?: number;
6
- statusTexts: {
7
- text: string;
8
- value: number;
9
- }[];
10
- }
11
- interface StatusTextCellEditorState {
12
- value: number | null;
13
- highlightAllOnFocus: boolean;
14
- cancelEdit: boolean;
15
- opened: boolean;
16
- }
17
- export default class StatusTextCellEditor extends React.Component<StatusTextCellEditorProperties, StatusTextCellEditorState> implements ICellEditor {
18
- private inputComponent;
19
- private focusOpId;
20
- constructor(props: Readonly<StatusTextCellEditorProperties>);
21
- getInitialState(props: Readonly<StatusTextCellEditorProperties>): StatusTextCellEditorState;
22
- componentWillUnmount(): void;
23
- afterGuiAttached(): void;
24
- getValue(): number | null;
25
- isPopup(): boolean;
26
- isCancelBeforeStart(): boolean;
27
- isCancelAfterEnd(): boolean;
28
- getScrollParent(element: HTMLElement, includeHidden?: boolean): HTMLElement;
29
- scrollTo(value: number): void;
30
- render(): JSX.Element;
31
- }
32
- 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;