d2coreui 23.0.13 → 23.0.15

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 (435) hide show
  1. package/components/clipboard/clipboardUtils.ts +53 -0
  2. package/components/codemirror/SyntaxHighlighter.tsx +58 -0
  3. package/components/collapse/expandable.tsx +48 -0
  4. package/components/color/colorPicker.tsx +121 -0
  5. package/components/color/colorSwatch.d.ts +18 -13
  6. package/components/color/colorSwatch.jsx +87 -0
  7. package/components/color/colorUtils.ts +60 -0
  8. package/components/date/dateRangeInput.tsx +468 -0
  9. package/components/date/dateRangeInputAdvancedPanel.tsx +238 -0
  10. package/components/date/dateRangeInputConfirm.tsx +200 -0
  11. package/components/date/dateTimeInput.tsx +633 -0
  12. package/components/date/durationInput.tsx +375 -0
  13. package/components/form/NiceFormItem.tsx +32 -0
  14. package/components/grid/cell/beanAccessor.ts +17 -0
  15. package/components/grid/cell/cellEditorUtils.ts +12 -0
  16. package/components/grid/cell/customEnumCellEditor.tsx +130 -0
  17. package/components/grid/cell/dataGridCellEditorComponent.tsx +61 -0
  18. package/components/grid/cell/dateCellEditor.tsx +83 -0
  19. package/components/grid/cell/durationCellEditor.tsx +105 -0
  20. package/components/grid/cell/hexaOctetStringCellEditor.tsx +101 -0
  21. package/components/grid/cell/hexaValueCellEditor.tsx +92 -0
  22. package/components/grid/cell/numberCellEditor.tsx +115 -0
  23. package/components/grid/cell/rangeSelector.d.ts +9 -78
  24. package/components/grid/cell/rangeSelector.js +674 -527
  25. package/components/grid/cell/simpleStatusTextCellEditor.tsx +168 -0
  26. package/components/grid/cell/statusTextCellEditor.tsx +198 -0
  27. package/components/grid/cell/tableDefaultRowStyleRules.ts +51 -0
  28. package/components/grid/cell/textCellEditor.tsx +94 -0
  29. package/components/grid/cell/withAgGridHooks.tsx +15 -0
  30. package/components/grid/columnUtils.ts +29 -0
  31. package/components/grid/config/columnTransfer.tsx +258 -0
  32. package/components/grid/config/dataGridEditor.tsx +328 -0
  33. package/components/grid/config/rowHeightCalculator.tsx +29 -0
  34. package/components/grid/config/rowStylePicker.tsx +196 -0
  35. package/components/grid/dataGrid.tsx +2183 -0
  36. package/components/grid/detail/detailHeaderPanel.tsx +59 -0
  37. package/components/grid/export/contextMenu.tsx +154 -0
  38. package/components/grid/export/progressPopup.tsx +106 -0
  39. package/components/grid/export/worker/clipboardExport.ts +10 -0
  40. package/components/grid/export/worker/csvExport.ts +10 -0
  41. package/components/grid/export/worker/pdfExport.ts +98 -0
  42. package/components/grid/export/worker/txtExport.ts +21 -0
  43. package/components/grid/extendedDataGrid.tsx +974 -0
  44. package/components/grid/filter/customColumnFilter.tsx +14 -0
  45. package/components/grid/filter/dataGridColumnFilter.tsx +70 -0
  46. package/components/grid/filter/dateColumnFilter.tsx +34 -0
  47. package/components/grid/filter/textColumnFilter.tsx +37 -0
  48. package/components/grid/filter/wildcardQuickFilterEngine.ts +50 -0
  49. package/components/grid/header/simpleHeader.tsx +270 -0
  50. package/components/grid/panel/dataGridPagination.tsx +123 -0
  51. package/components/grid/panel/loadingOverlay.tsx +14 -0
  52. package/components/grid/panel/noRecordsOverlay.tsx +16 -0
  53. package/components/grid/panel/tablePagination.tsx +77 -0
  54. package/components/icons/ant-design-double-right-outline.svg +5 -5
  55. package/components/icons/ant-design_close-outline.svg +5 -5
  56. package/components/icons/dropdownArrow.tsx +67 -0
  57. package/components/icons/undoIcon.tsx +16 -0
  58. package/components/input/autoCompleteInput.tsx +174 -0
  59. package/components/input/draftUtils.tsx +62 -0
  60. package/components/input/draftail.d.ts +186 -1
  61. package/components/input/draftail.js +1 -2
  62. package/components/input/hexaFormattedInput.tsx +64 -0
  63. package/components/input/mask/helpers.ts +154 -0
  64. package/components/input/mask/inputMaskCore.ts +452 -0
  65. package/components/input/mask/pattern.ts +122 -0
  66. package/components/input/maskedInput.tsx +275 -0
  67. package/components/input/passwordInput.tsx +62 -0
  68. package/components/input/simpleAutoComplete.tsx +60 -0
  69. package/components/input/textarea/extractSpansOfClasses.tsx +125 -0
  70. package/components/input/textarea/getRanges.ts +82 -0
  71. package/components/input/textarea/getType.ts +23 -0
  72. package/components/input/textarea/highlighedContents.tsx +20 -0
  73. package/components/input/textarea/highlightedTextarea.css +61 -0
  74. package/components/input/textarea/mentionsWithHighlighting.tsx +95 -0
  75. package/components/keyboard/keyboardUtils.ts +42 -0
  76. package/components/modal/draggableModalProvider.tsx +37 -0
  77. package/components/modal/impl/clamp.ts +4 -0
  78. package/components/modal/impl/draggableModal.tsx +36 -0
  79. package/components/modal/impl/draggableModalContext.ts +14 -0
  80. package/components/modal/impl/draggableModalInner.tsx +114 -0
  81. package/components/modal/impl/draggableModalReducer.ts +285 -0
  82. package/components/modal/impl/getWindowSize.ts +6 -0
  83. package/components/modal/impl/index.ts +5 -0
  84. package/components/modal/impl/resizeHandle.tsx +12 -0
  85. package/components/modal/impl/useDrag.ts +57 -0
  86. package/components/modal/impl/usePrevious.ts +11 -0
  87. package/components/modal/impl/useResize.ts +79 -0
  88. package/components/modal/modalDialog.tsx +172 -0
  89. package/components/picker/enumValuePicker.tsx +48 -0
  90. package/components/platformSpecific.ts +39 -0
  91. package/components/scrollTo/dom-scroll-into-view.d.ts +1 -0
  92. package/components/scrollTo/onlyText.ts +36 -0
  93. package/components/scrollTo/scrollTo.tsx +324 -0
  94. package/components/style/withCss.tsx +14 -0
  95. package/components/style/withInputNumberCss.tsx +18 -0
  96. package/components/svg.d.ts +1 -0
  97. package/components/table/dragSortingTable.tsx +123 -0
  98. package/components/text/impl/innerSize.ts +15 -0
  99. package/components/text/impl/series.ts +37 -0
  100. package/components/text/impl/shallowEqual.ts +19 -0
  101. package/components/text/impl/uniqueId.ts +5 -0
  102. package/components/text/impl/whilst.ts +25 -0
  103. package/components/text/textFit.tsx +229 -0
  104. package/i18n/components.cs.json +101 -101
  105. package/i18n/components.sk.json +101 -101
  106. package/i18n/components.uk.json +101 -101
  107. package/i18n/componentsLocaleHolder.js +24 -29
  108. package/i18n/componentsLocaleLoader.d.ts +9 -0
  109. package/lib/esm/components/codemirror/SyntaxHighlighter.js.map +1 -0
  110. package/lib/esm/components/color/colorSwatch.d.ts +13 -0
  111. package/lib/esm/components/color/colorSwatch.js.map +1 -0
  112. package/{components → lib/esm/components}/grid/cell/cellEditorUtils.js.map +1 -1
  113. package/lib/esm/components/grid/cell/rangeSelector.d.ts +78 -0
  114. package/lib/esm/components/grid/cell/rangeSelector.js +527 -0
  115. package/lib/esm/components/grid/columnUtils.js.map +1 -0
  116. package/{components → lib/esm/components}/grid/export/contextMenu.js +4 -4
  117. package/lib/esm/components/grid/export/progressPopup.js.map +1 -0
  118. package/{components → lib/esm/components}/grid/export/worker/clipboardExport.js.map +1 -1
  119. package/{components → lib/esm/components}/grid/export/worker/csvExport.js.map +1 -1
  120. package/{components → lib/esm/components}/grid/export/worker/txtExport.js.map +1 -1
  121. package/lib/esm/components/icons/undoIcon.js.map +1 -0
  122. package/lib/esm/components/input/draftUtils.js.map +1 -0
  123. package/lib/esm/components/input/draftail.d.ts +1 -0
  124. package/lib/esm/components/input/draftail.js +2 -0
  125. package/{components → lib/esm/components}/input/draftail.js.map +1 -1
  126. package/lib/esm/components/input/mask/inputMaskCore.js.map +1 -0
  127. package/lib/esm/components/input/mask/pattern.js.map +1 -0
  128. package/lib/esm/components/input/passwordInput.js.map +1 -0
  129. package/lib/esm/components/input/textarea/extractSpansOfClasses.js.map +1 -0
  130. package/lib/esm/components/input/textarea/getRanges.js.map +1 -0
  131. package/{components → lib/esm/components}/input/textarea/getType.js.map +1 -1
  132. package/{components → lib/esm/components}/input/textarea/highlighedContents.js.map +1 -1
  133. package/lib/esm/components/input/textarea/mentionsWithHighlighting.js.map +1 -0
  134. package/{components → lib/esm/components}/keyboard/keyboardUtils.js.map +1 -1
  135. package/lib/esm/components/platformSpecific.js.map +1 -0
  136. package/{components → lib/esm/components}/text/impl/innerSize.js.map +1 -1
  137. package/lib/esm/components/text/impl/series.js.map +1 -0
  138. package/{components → lib/esm/components}/text/impl/shallowEqual.js.map +1 -1
  139. package/{components → lib/esm/components}/text/impl/uniqueId.js.map +1 -1
  140. package/lib/esm/components/text/impl/whilst.js.map +1 -0
  141. package/lib/esm/i18n/components.cs.json +101 -0
  142. package/lib/esm/i18n/components.sk.json +101 -0
  143. package/lib/esm/i18n/components.uk.json +101 -0
  144. package/lib/esm/i18n/componentsLocaleHolder.js +29 -0
  145. package/lib/esm/i18n/componentsLocaleHolder.js.map +1 -0
  146. package/lib/esm/package.json +70 -0
  147. package/lib/esm/tsconfig.build.json +24 -0
  148. package/lib/esm/tsconfig.json +11 -0
  149. package/package.json +3 -3
  150. package/style/ag-grid/_ag-theme-antd-vars.scss +194 -194
  151. package/style/ag-grid/ag-theme-antd.scss +87 -87
  152. package/style/ag-grid/aggrid-adaptations.css +42 -42
  153. package/style/ag-grid/aggrid.scss +11 -11
  154. package/style/flexLayout/flexLayout.scss +130 -130
  155. package/style/flexLayout/flexLayoutBase.scss +623 -623
  156. package/style/flexLayout/new/_base.scss +616 -616
  157. package/style/flexLayout/new/flexLayoutBase.scss +621 -621
  158. package/style/flexLayout/new/light.scss +107 -107
  159. package/style/flexLayout/old/_base.scss +551 -551
  160. package/style/flexLayout/old/light.scss +16 -16
  161. package/style/form/niceFormItem.css +38 -38
  162. package/style/loading.css +31 -31
  163. package/style/splitPane/splitPane.css +48 -48
  164. package/tsconfig.build.json +24 -24
  165. package/tsconfig.json +11 -11
  166. package/components/codemirror/SyntaxHighlighter.js.map +0 -1
  167. package/components/color/colorSwatch.js.map +0 -1
  168. package/components/grid/columnUtils.js.map +0 -1
  169. package/components/grid/export/progressPopup.js.map +0 -1
  170. package/components/icons/undoIcon.js.map +0 -1
  171. package/components/input/draftUtils.js.map +0 -1
  172. package/components/input/mask/inputMaskCore.js.map +0 -1
  173. package/components/input/mask/pattern.js.map +0 -1
  174. package/components/input/passwordInput.js.map +0 -1
  175. package/components/input/textarea/extractSpansOfClasses.js.map +0 -1
  176. package/components/input/textarea/getRanges.js.map +0 -1
  177. package/components/input/textarea/mentionsWithHighlighting.js.map +0 -1
  178. package/components/platformSpecific.js.map +0 -1
  179. package/components/text/impl/series.js.map +0 -1
  180. package/components/text/impl/whilst.js.map +0 -1
  181. package/i18n/componentsLocaleHolder.js.map +0 -1
  182. /package/{components → lib/esm/components}/clipboard/clipboardUtils.d.ts +0 -0
  183. /package/{components → lib/esm/components}/clipboard/clipboardUtils.js +0 -0
  184. /package/{components → lib/esm/components}/clipboard/clipboardUtils.js.map +0 -0
  185. /package/{components → lib/esm/components}/codemirror/SyntaxHighlighter.d.ts +0 -0
  186. /package/{components → lib/esm/components}/codemirror/SyntaxHighlighter.js +0 -0
  187. /package/{components → lib/esm/components}/collapse/expandable.d.ts +0 -0
  188. /package/{components → lib/esm/components}/collapse/expandable.js +0 -0
  189. /package/{components → lib/esm/components}/collapse/expandable.js.map +0 -0
  190. /package/{components → lib/esm/components}/color/colorPicker.d.ts +0 -0
  191. /package/{components → lib/esm/components}/color/colorPicker.js +0 -0
  192. /package/{components → lib/esm/components}/color/colorPicker.js.map +0 -0
  193. /package/{components → lib/esm/components}/color/colorSwatch.js +0 -0
  194. /package/{components → lib/esm/components}/color/colorUtils.d.ts +0 -0
  195. /package/{components → lib/esm/components}/color/colorUtils.js +0 -0
  196. /package/{components → lib/esm/components}/color/colorUtils.js.map +0 -0
  197. /package/{components → lib/esm/components}/date/dateRangeInput.d.ts +0 -0
  198. /package/{components → lib/esm/components}/date/dateRangeInput.js +0 -0
  199. /package/{components → lib/esm/components}/date/dateRangeInput.js.map +0 -0
  200. /package/{components → lib/esm/components}/date/dateRangeInputAdvancedPanel.d.ts +0 -0
  201. /package/{components → lib/esm/components}/date/dateRangeInputAdvancedPanel.js +0 -0
  202. /package/{components → lib/esm/components}/date/dateRangeInputAdvancedPanel.js.map +0 -0
  203. /package/{components → lib/esm/components}/date/dateRangeInputConfirm.d.ts +0 -0
  204. /package/{components → lib/esm/components}/date/dateRangeInputConfirm.js +0 -0
  205. /package/{components → lib/esm/components}/date/dateRangeInputConfirm.js.map +0 -0
  206. /package/{components → lib/esm/components}/date/dateTimeInput.d.ts +0 -0
  207. /package/{components → lib/esm/components}/date/dateTimeInput.js +0 -0
  208. /package/{components → lib/esm/components}/date/dateTimeInput.js.map +0 -0
  209. /package/{components → lib/esm/components}/date/durationInput.d.ts +0 -0
  210. /package/{components → lib/esm/components}/date/durationInput.js +0 -0
  211. /package/{components → lib/esm/components}/date/durationInput.js.map +0 -0
  212. /package/{components → lib/esm/components}/form/NiceFormItem.d.ts +0 -0
  213. /package/{components → lib/esm/components}/form/NiceFormItem.js +0 -0
  214. /package/{components → lib/esm/components}/form/NiceFormItem.js.map +0 -0
  215. /package/{components → lib/esm/components}/grid/cell/beanAccessor.d.ts +0 -0
  216. /package/{components → lib/esm/components}/grid/cell/beanAccessor.js +0 -0
  217. /package/{components → lib/esm/components}/grid/cell/beanAccessor.js.map +0 -0
  218. /package/{components → lib/esm/components}/grid/cell/cellEditorUtils.d.ts +0 -0
  219. /package/{components → lib/esm/components}/grid/cell/cellEditorUtils.js +0 -0
  220. /package/{components → lib/esm/components}/grid/cell/customEnumCellEditor.d.ts +0 -0
  221. /package/{components → lib/esm/components}/grid/cell/customEnumCellEditor.js +0 -0
  222. /package/{components → lib/esm/components}/grid/cell/customEnumCellEditor.js.map +0 -0
  223. /package/{components → lib/esm/components}/grid/cell/dataGridCellEditorComponent.d.ts +0 -0
  224. /package/{components → lib/esm/components}/grid/cell/dataGridCellEditorComponent.js +0 -0
  225. /package/{components → lib/esm/components}/grid/cell/dataGridCellEditorComponent.js.map +0 -0
  226. /package/{components → lib/esm/components}/grid/cell/dateCellEditor.d.ts +0 -0
  227. /package/{components → lib/esm/components}/grid/cell/dateCellEditor.js +0 -0
  228. /package/{components → lib/esm/components}/grid/cell/dateCellEditor.js.map +0 -0
  229. /package/{components → lib/esm/components}/grid/cell/durationCellEditor.d.ts +0 -0
  230. /package/{components → lib/esm/components}/grid/cell/durationCellEditor.js +0 -0
  231. /package/{components → lib/esm/components}/grid/cell/durationCellEditor.js.map +0 -0
  232. /package/{components → lib/esm/components}/grid/cell/hexaOctetStringCellEditor.d.ts +0 -0
  233. /package/{components → lib/esm/components}/grid/cell/hexaOctetStringCellEditor.js +0 -0
  234. /package/{components → lib/esm/components}/grid/cell/hexaOctetStringCellEditor.js.map +0 -0
  235. /package/{components → lib/esm/components}/grid/cell/hexaValueCellEditor.d.ts +0 -0
  236. /package/{components → lib/esm/components}/grid/cell/hexaValueCellEditor.js +0 -0
  237. /package/{components → lib/esm/components}/grid/cell/hexaValueCellEditor.js.map +0 -0
  238. /package/{components → lib/esm/components}/grid/cell/numberCellEditor.d.ts +0 -0
  239. /package/{components → lib/esm/components}/grid/cell/numberCellEditor.js +0 -0
  240. /package/{components → lib/esm/components}/grid/cell/numberCellEditor.js.map +0 -0
  241. /package/{components → lib/esm/components}/grid/cell/rangeSelector.js.map +0 -0
  242. /package/{components → lib/esm/components}/grid/cell/simpleStatusTextCellEditor.d.ts +0 -0
  243. /package/{components → lib/esm/components}/grid/cell/simpleStatusTextCellEditor.js +0 -0
  244. /package/{components → lib/esm/components}/grid/cell/simpleStatusTextCellEditor.js.map +0 -0
  245. /package/{components → lib/esm/components}/grid/cell/statusTextCellEditor.d.ts +0 -0
  246. /package/{components → lib/esm/components}/grid/cell/statusTextCellEditor.js +0 -0
  247. /package/{components → lib/esm/components}/grid/cell/statusTextCellEditor.js.map +0 -0
  248. /package/{components → lib/esm/components}/grid/cell/tableDefaultRowStyleRules.d.ts +0 -0
  249. /package/{components → lib/esm/components}/grid/cell/tableDefaultRowStyleRules.js +0 -0
  250. /package/{components → lib/esm/components}/grid/cell/tableDefaultRowStyleRules.js.map +0 -0
  251. /package/{components → lib/esm/components}/grid/cell/textCellEditor.d.ts +0 -0
  252. /package/{components → lib/esm/components}/grid/cell/textCellEditor.js +0 -0
  253. /package/{components → lib/esm/components}/grid/cell/textCellEditor.js.map +0 -0
  254. /package/{components → lib/esm/components}/grid/cell/withAgGridHooks.d.ts +0 -0
  255. /package/{components → lib/esm/components}/grid/cell/withAgGridHooks.js +0 -0
  256. /package/{components → lib/esm/components}/grid/cell/withAgGridHooks.js.map +0 -0
  257. /package/{components → lib/esm/components}/grid/columnUtils.d.ts +0 -0
  258. /package/{components → lib/esm/components}/grid/columnUtils.js +0 -0
  259. /package/{components → lib/esm/components}/grid/config/columnTransfer.d.ts +0 -0
  260. /package/{components → lib/esm/components}/grid/config/columnTransfer.js +0 -0
  261. /package/{components → lib/esm/components}/grid/config/columnTransfer.js.map +0 -0
  262. /package/{components → lib/esm/components}/grid/config/dataGridEditor.d.ts +0 -0
  263. /package/{components → lib/esm/components}/grid/config/dataGridEditor.js +0 -0
  264. /package/{components → lib/esm/components}/grid/config/dataGridEditor.js.map +0 -0
  265. /package/{components → lib/esm/components}/grid/config/rowHeightCalculator.d.ts +0 -0
  266. /package/{components → lib/esm/components}/grid/config/rowHeightCalculator.js +0 -0
  267. /package/{components → lib/esm/components}/grid/config/rowHeightCalculator.js.map +0 -0
  268. /package/{components → lib/esm/components}/grid/config/rowStylePicker.d.ts +0 -0
  269. /package/{components → lib/esm/components}/grid/config/rowStylePicker.js +0 -0
  270. /package/{components → lib/esm/components}/grid/config/rowStylePicker.js.map +0 -0
  271. /package/{components → lib/esm/components}/grid/dataGrid.d.ts +0 -0
  272. /package/{components → lib/esm/components}/grid/dataGrid.js +0 -0
  273. /package/{components → lib/esm/components}/grid/dataGrid.js.map +0 -0
  274. /package/{components → lib/esm/components}/grid/detail/detailHeaderPanel.d.ts +0 -0
  275. /package/{components → lib/esm/components}/grid/detail/detailHeaderPanel.js +0 -0
  276. /package/{components → lib/esm/components}/grid/detail/detailHeaderPanel.js.map +0 -0
  277. /package/{components → lib/esm/components}/grid/export/contextMenu.d.ts +0 -0
  278. /package/{components → lib/esm/components}/grid/export/contextMenu.js.map +0 -0
  279. /package/{components → lib/esm/components}/grid/export/progressPopup.d.ts +0 -0
  280. /package/{components → lib/esm/components}/grid/export/progressPopup.js +0 -0
  281. /package/{components → lib/esm/components}/grid/export/worker/clipboardExport.d.ts +0 -0
  282. /package/{components → lib/esm/components}/grid/export/worker/clipboardExport.js +0 -0
  283. /package/{components → lib/esm/components}/grid/export/worker/csvExport.d.ts +0 -0
  284. /package/{components → lib/esm/components}/grid/export/worker/csvExport.js +0 -0
  285. /package/{components → lib/esm/components}/grid/export/worker/pdfExport.d.ts +0 -0
  286. /package/{components → lib/esm/components}/grid/export/worker/pdfExport.js +0 -0
  287. /package/{components → lib/esm/components}/grid/export/worker/pdfExport.js.map +0 -0
  288. /package/{components → lib/esm/components}/grid/export/worker/txtExport.d.ts +0 -0
  289. /package/{components → lib/esm/components}/grid/export/worker/txtExport.js +0 -0
  290. /package/{components → lib/esm/components}/grid/extendedDataGrid.d.ts +0 -0
  291. /package/{components → lib/esm/components}/grid/extendedDataGrid.js +0 -0
  292. /package/{components → lib/esm/components}/grid/extendedDataGrid.js.map +0 -0
  293. /package/{components → lib/esm/components}/grid/filter/customColumnFilter.d.ts +0 -0
  294. /package/{components → lib/esm/components}/grid/filter/customColumnFilter.js +0 -0
  295. /package/{components → lib/esm/components}/grid/filter/customColumnFilter.js.map +0 -0
  296. /package/{components → lib/esm/components}/grid/filter/dataGridColumnFilter.d.ts +0 -0
  297. /package/{components → lib/esm/components}/grid/filter/dataGridColumnFilter.js +0 -0
  298. /package/{components → lib/esm/components}/grid/filter/dataGridColumnFilter.js.map +0 -0
  299. /package/{components → lib/esm/components}/grid/filter/dateColumnFilter.d.ts +0 -0
  300. /package/{components → lib/esm/components}/grid/filter/dateColumnFilter.js +0 -0
  301. /package/{components → lib/esm/components}/grid/filter/dateColumnFilter.js.map +0 -0
  302. /package/{components → lib/esm/components}/grid/filter/textColumnFilter.d.ts +0 -0
  303. /package/{components → lib/esm/components}/grid/filter/textColumnFilter.js +0 -0
  304. /package/{components → lib/esm/components}/grid/filter/textColumnFilter.js.map +0 -0
  305. /package/{components → lib/esm/components}/grid/filter/wildcardQuickFilterEngine.d.ts +0 -0
  306. /package/{components → lib/esm/components}/grid/filter/wildcardQuickFilterEngine.js +0 -0
  307. /package/{components → lib/esm/components}/grid/filter/wildcardQuickFilterEngine.js.map +0 -0
  308. /package/{components → lib/esm/components}/grid/header/simpleHeader.d.ts +0 -0
  309. /package/{components → lib/esm/components}/grid/header/simpleHeader.js +0 -0
  310. /package/{components → lib/esm/components}/grid/header/simpleHeader.js.map +0 -0
  311. /package/{components → lib/esm/components}/grid/panel/dataGridPagination.d.ts +0 -0
  312. /package/{components → lib/esm/components}/grid/panel/dataGridPagination.js +0 -0
  313. /package/{components → lib/esm/components}/grid/panel/dataGridPagination.js.map +0 -0
  314. /package/{components → lib/esm/components}/grid/panel/loadingOverlay.d.ts +0 -0
  315. /package/{components → lib/esm/components}/grid/panel/loadingOverlay.js +0 -0
  316. /package/{components → lib/esm/components}/grid/panel/loadingOverlay.js.map +0 -0
  317. /package/{components → lib/esm/components}/grid/panel/noRecordsOverlay.d.ts +0 -0
  318. /package/{components → lib/esm/components}/grid/panel/noRecordsOverlay.js +0 -0
  319. /package/{components → lib/esm/components}/grid/panel/noRecordsOverlay.js.map +0 -0
  320. /package/{components → lib/esm/components}/grid/panel/tablePagination.d.ts +0 -0
  321. /package/{components → lib/esm/components}/grid/panel/tablePagination.js +0 -0
  322. /package/{components → lib/esm/components}/grid/panel/tablePagination.js.map +0 -0
  323. /package/{components → lib/esm/components}/icons/dropdownArrow.d.ts +0 -0
  324. /package/{components → lib/esm/components}/icons/dropdownArrow.js +0 -0
  325. /package/{components → lib/esm/components}/icons/dropdownArrow.js.map +0 -0
  326. /package/{components → lib/esm/components}/icons/undoIcon.d.ts +0 -0
  327. /package/{components → lib/esm/components}/icons/undoIcon.js +0 -0
  328. /package/{components → lib/esm/components}/input/autoCompleteInput.d.ts +0 -0
  329. /package/{components → lib/esm/components}/input/autoCompleteInput.js +0 -0
  330. /package/{components → lib/esm/components}/input/autoCompleteInput.js.map +0 -0
  331. /package/{components → lib/esm/components}/input/draftUtils.d.ts +0 -0
  332. /package/{components → lib/esm/components}/input/draftUtils.js +0 -0
  333. /package/{components → lib/esm/components}/input/hexaFormattedInput.d.ts +0 -0
  334. /package/{components → lib/esm/components}/input/hexaFormattedInput.js +0 -0
  335. /package/{components → lib/esm/components}/input/hexaFormattedInput.js.map +0 -0
  336. /package/{components → lib/esm/components}/input/mask/helpers.d.ts +0 -0
  337. /package/{components → lib/esm/components}/input/mask/helpers.js +0 -0
  338. /package/{components → lib/esm/components}/input/mask/helpers.js.map +0 -0
  339. /package/{components → lib/esm/components}/input/mask/inputMaskCore.d.ts +0 -0
  340. /package/{components → lib/esm/components}/input/mask/inputMaskCore.js +0 -0
  341. /package/{components → lib/esm/components}/input/mask/pattern.d.ts +0 -0
  342. /package/{components → lib/esm/components}/input/mask/pattern.js +0 -0
  343. /package/{components → lib/esm/components}/input/maskedInput.d.ts +0 -0
  344. /package/{components → lib/esm/components}/input/maskedInput.js +0 -0
  345. /package/{components → lib/esm/components}/input/maskedInput.js.map +0 -0
  346. /package/{components → lib/esm/components}/input/passwordInput.d.ts +0 -0
  347. /package/{components → lib/esm/components}/input/passwordInput.js +0 -0
  348. /package/{components → lib/esm/components}/input/simpleAutoComplete.d.ts +0 -0
  349. /package/{components → lib/esm/components}/input/simpleAutoComplete.js +0 -0
  350. /package/{components → lib/esm/components}/input/simpleAutoComplete.js.map +0 -0
  351. /package/{components → lib/esm/components}/input/textarea/extractSpansOfClasses.d.ts +0 -0
  352. /package/{components → lib/esm/components}/input/textarea/extractSpansOfClasses.js +0 -0
  353. /package/{components → lib/esm/components}/input/textarea/getRanges.d.ts +0 -0
  354. /package/{components → lib/esm/components}/input/textarea/getRanges.js +0 -0
  355. /package/{components → lib/esm/components}/input/textarea/getType.d.ts +0 -0
  356. /package/{components → lib/esm/components}/input/textarea/getType.js +0 -0
  357. /package/{components → lib/esm/components}/input/textarea/highlighedContents.d.ts +0 -0
  358. /package/{components → lib/esm/components}/input/textarea/highlighedContents.js +0 -0
  359. /package/{components → lib/esm/components}/input/textarea/mentionsWithHighlighting.d.ts +0 -0
  360. /package/{components → lib/esm/components}/input/textarea/mentionsWithHighlighting.js +0 -0
  361. /package/{components → lib/esm/components}/keyboard/keyboardUtils.d.ts +0 -0
  362. /package/{components → lib/esm/components}/keyboard/keyboardUtils.js +0 -0
  363. /package/{components → lib/esm/components}/modal/draggableModalProvider.d.ts +0 -0
  364. /package/{components → lib/esm/components}/modal/draggableModalProvider.js +0 -0
  365. /package/{components → lib/esm/components}/modal/draggableModalProvider.js.map +0 -0
  366. /package/{components → lib/esm/components}/modal/impl/clamp.d.ts +0 -0
  367. /package/{components → lib/esm/components}/modal/impl/clamp.js +0 -0
  368. /package/{components → lib/esm/components}/modal/impl/clamp.js.map +0 -0
  369. /package/{components → lib/esm/components}/modal/impl/draggableModal.d.ts +0 -0
  370. /package/{components → lib/esm/components}/modal/impl/draggableModal.js +0 -0
  371. /package/{components → lib/esm/components}/modal/impl/draggableModal.js.map +0 -0
  372. /package/{components → lib/esm/components}/modal/impl/draggableModalContext.d.ts +0 -0
  373. /package/{components → lib/esm/components}/modal/impl/draggableModalContext.js +0 -0
  374. /package/{components → lib/esm/components}/modal/impl/draggableModalContext.js.map +0 -0
  375. /package/{components → lib/esm/components}/modal/impl/draggableModalInner.d.ts +0 -0
  376. /package/{components → lib/esm/components}/modal/impl/draggableModalInner.js +0 -0
  377. /package/{components → lib/esm/components}/modal/impl/draggableModalInner.js.map +0 -0
  378. /package/{components → lib/esm/components}/modal/impl/draggableModalReducer.d.ts +0 -0
  379. /package/{components → lib/esm/components}/modal/impl/draggableModalReducer.js +0 -0
  380. /package/{components → lib/esm/components}/modal/impl/draggableModalReducer.js.map +0 -0
  381. /package/{components → lib/esm/components}/modal/impl/getWindowSize.d.ts +0 -0
  382. /package/{components → lib/esm/components}/modal/impl/getWindowSize.js +0 -0
  383. /package/{components → lib/esm/components}/modal/impl/getWindowSize.js.map +0 -0
  384. /package/{components → lib/esm/components}/modal/impl/index.d.ts +0 -0
  385. /package/{components → lib/esm/components}/modal/impl/index.js +0 -0
  386. /package/{components → lib/esm/components}/modal/impl/index.js.map +0 -0
  387. /package/{components → lib/esm/components}/modal/impl/resizeHandle.d.ts +0 -0
  388. /package/{components → lib/esm/components}/modal/impl/resizeHandle.js +0 -0
  389. /package/{components → lib/esm/components}/modal/impl/resizeHandle.js.map +0 -0
  390. /package/{components → lib/esm/components}/modal/impl/useDrag.d.ts +0 -0
  391. /package/{components → lib/esm/components}/modal/impl/useDrag.js +0 -0
  392. /package/{components → lib/esm/components}/modal/impl/useDrag.js.map +0 -0
  393. /package/{components → lib/esm/components}/modal/impl/usePrevious.d.ts +0 -0
  394. /package/{components → lib/esm/components}/modal/impl/usePrevious.js +0 -0
  395. /package/{components → lib/esm/components}/modal/impl/usePrevious.js.map +0 -0
  396. /package/{components → lib/esm/components}/modal/impl/useResize.d.ts +0 -0
  397. /package/{components → lib/esm/components}/modal/impl/useResize.js +0 -0
  398. /package/{components → lib/esm/components}/modal/impl/useResize.js.map +0 -0
  399. /package/{components → lib/esm/components}/modal/modalDialog.d.ts +0 -0
  400. /package/{components → lib/esm/components}/modal/modalDialog.js +0 -0
  401. /package/{components → lib/esm/components}/modal/modalDialog.js.map +0 -0
  402. /package/{components → lib/esm/components}/picker/enumValuePicker.d.ts +0 -0
  403. /package/{components → lib/esm/components}/picker/enumValuePicker.js +0 -0
  404. /package/{components → lib/esm/components}/picker/enumValuePicker.js.map +0 -0
  405. /package/{components → lib/esm/components}/platformSpecific.d.ts +0 -0
  406. /package/{components → lib/esm/components}/platformSpecific.js +0 -0
  407. /package/{components → lib/esm/components}/scrollTo/onlyText.d.ts +0 -0
  408. /package/{components → lib/esm/components}/scrollTo/onlyText.js +0 -0
  409. /package/{components → lib/esm/components}/scrollTo/onlyText.js.map +0 -0
  410. /package/{components → lib/esm/components}/scrollTo/scrollTo.d.ts +0 -0
  411. /package/{components → lib/esm/components}/scrollTo/scrollTo.js +0 -0
  412. /package/{components → lib/esm/components}/scrollTo/scrollTo.js.map +0 -0
  413. /package/{components → lib/esm/components}/style/withCss.d.ts +0 -0
  414. /package/{components → lib/esm/components}/style/withCss.js +0 -0
  415. /package/{components → lib/esm/components}/style/withCss.js.map +0 -0
  416. /package/{components → lib/esm/components}/style/withInputNumberCss.d.ts +0 -0
  417. /package/{components → lib/esm/components}/style/withInputNumberCss.js +0 -0
  418. /package/{components → lib/esm/components}/style/withInputNumberCss.js.map +0 -0
  419. /package/{components → lib/esm/components}/table/dragSortingTable.d.ts +0 -0
  420. /package/{components → lib/esm/components}/table/dragSortingTable.js +0 -0
  421. /package/{components → lib/esm/components}/table/dragSortingTable.js.map +0 -0
  422. /package/{components → lib/esm/components}/text/impl/innerSize.d.ts +0 -0
  423. /package/{components → lib/esm/components}/text/impl/innerSize.js +0 -0
  424. /package/{components → lib/esm/components}/text/impl/series.d.ts +0 -0
  425. /package/{components → lib/esm/components}/text/impl/series.js +0 -0
  426. /package/{components → lib/esm/components}/text/impl/shallowEqual.d.ts +0 -0
  427. /package/{components → lib/esm/components}/text/impl/shallowEqual.js +0 -0
  428. /package/{components → lib/esm/components}/text/impl/uniqueId.d.ts +0 -0
  429. /package/{components → lib/esm/components}/text/impl/uniqueId.js +0 -0
  430. /package/{components → lib/esm/components}/text/impl/whilst.d.ts +0 -0
  431. /package/{components → lib/esm/components}/text/impl/whilst.js +0 -0
  432. /package/{components → lib/esm/components}/text/textFit.d.ts +0 -0
  433. /package/{components → lib/esm/components}/text/textFit.js +0 -0
  434. /package/{components → lib/esm/components}/text/textFit.js.map +0 -0
  435. /package/{i18n → lib/esm/i18n}/componentsLocaleHolder.d.ts +0 -0
@@ -1,527 +1,674 @@
1
- import { _areEqual, _exists, _includes, _isDomLayout, _last, _makeNull, _missing, _removeFromArray, _shallowCompare, AutoScrollService, BeanStub } from "ag-grid-community";
2
- export class RangeSelector extends BeanStub {
3
- constructor() {
4
- super(...arguments);
5
- this.beanName = "RangeSelector";
6
- }
7
- wireBeans(beans) {
8
- this.rowModel = beans.rowModel;
9
- this.dragService = beans.dragService;
10
- this.columnModel = beans.columnModel;
11
- this.visibleColsService = beans.visibleColsService;
12
- this.cellNavigationService = beans.cellNavigationService;
13
- this.pinnedRowModel = beans.pinnedRowModel;
14
- this.rowPositionUtils = beans.rowPositionUtils;
15
- this.cellPositionUtils = beans.cellPositionUtils;
16
- this.ctrlsService = beans.ctrlsService;
17
- this.valueService = beans.valueService;
18
- this.eventService = beans.eventService;
19
- this.mouseEventService = beans.mouseEventService;
20
- this.gridApi = beans.gridApi;
21
- this.eGridDiv = beans.eGridDiv;
22
- this.focusService = beans.focusService;
23
- this.gos = beans.gos;
24
- }
25
- postConstruct() {
26
- this.cellRanges = [];
27
- this.bodyScrollListener = this.onBodyScroll.bind(this);
28
- this.dragging = false;
29
- this.eventService.addEventListener("newColumnsLoaded", () => this.removeAllCellRanges());
30
- this.eventService.addEventListener("columnPivotModeChanged", () => this.removeAllCellRanges());
31
- this.eventService.addEventListener("columnRowGroupChanged", () => this.removeAllCellRanges());
32
- this.eventService.addEventListener("columnPivotChanged", () => this.removeAllCellRanges());
33
- this.eventService.addEventListener("columnGroupOpened", this.refreshLastRangeStart.bind(this));
34
- this.eventService.addEventListener("columnMoved", this.refreshLastRangeStart.bind(this));
35
- this.eventService.addEventListener("columnPinned", this.refreshLastRangeStart.bind(this));
36
- this.eventService.addEventListener("columnVisible", this.onColumnVisibleChange.bind(this));
37
- this.ctrlsService.whenReady(this, () => {
38
- const gridBodyCon = this.ctrlsService.getGridBodyCtrl();
39
- this.autoScrollService = new AutoScrollService({
40
- scrollContainer: gridBodyCon.getBodyViewportElement(),
41
- scrollAxis: 'xy',
42
- getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,
43
- setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),
44
- getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,
45
- setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),
46
- shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),
47
- shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()
48
- });
49
- });
50
- const params = {
51
- eElement: this.eGridDiv,
52
- onDragStart: this.onDragStart.bind(this),
53
- onDragStop: this.onDragStop.bind(this),
54
- onDragging: this.onDragging.bind(this)
55
- };
56
- this.dragService.addDragSource(params);
57
- this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));
58
- }
59
- cellPositionEquals(cellA, cellB) {
60
- const colsMatch = cellA.column === cellB.column;
61
- const floatingMatch = cellA.rowPinned === cellB.rowPinned;
62
- const indexMatch = cellA.rowIndex === cellB.rowIndex;
63
- return colsMatch && floatingMatch && indexMatch;
64
- }
65
- onColumnVisibleChange() {
66
- this.refreshLastRangeStart();
67
- this.cellRanges.forEach(cellRange => {
68
- const beforeCols = cellRange.columns;
69
- cellRange.columns = cellRange.columns.filter(col => col.isVisible());
70
- const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);
71
- if (colsInRangeChanged) {
72
- this.dispatchChangedEvent(false, true, cellRange.id);
73
- }
74
- });
75
- }
76
- refreshLastRangeStart() {
77
- const lastRange = _last(this.cellRanges);
78
- if (!lastRange) {
79
- return;
80
- }
81
- this.refreshRangeStart(lastRange);
82
- }
83
- isContiguousRange(cellRange) {
84
- const rangeColumns = cellRange.columns;
85
- if (!rangeColumns.length) {
86
- return false;
87
- }
88
- const allColumns = this.visibleColsService.getAllCols();
89
- const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
90
- return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;
91
- }
92
- getRangeStartRow(cellRange) {
93
- if (cellRange.startRow && cellRange.endRow) {
94
- return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
95
- cellRange.startRow : cellRange.endRow;
96
- }
97
- const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;
98
- return { rowIndex: 0, rowPinned };
99
- }
100
- getRangeEndRow(cellRange) {
101
- if (cellRange.startRow && cellRange.endRow) {
102
- return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
103
- cellRange.endRow : cellRange.startRow;
104
- }
105
- const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();
106
- const pinnedBottom = pinnedBottomRowCount > 0;
107
- if (pinnedBottom) {
108
- return {
109
- rowIndex: pinnedBottomRowCount - 1,
110
- rowPinned: 'bottom'
111
- };
112
- }
113
- return {
114
- rowIndex: this.rowModel.getRowCount() - 1,
115
- rowPinned: null
116
- };
117
- }
118
- setRangeToCell(cell, appendRange = false) {
119
- const columns = this.calculateColumnsBetween(cell.column, cell.column);
120
- if (!columns) {
121
- return;
122
- }
123
- this.removeAllCellRanges(true);
124
- const rowForCell = {
125
- rowIndex: cell.rowIndex,
126
- rowPinned: cell.rowPinned
127
- };
128
- let cellRange;
129
- for (let i = 0; i < this.cellRanges.length; i++) {
130
- const range = this.cellRanges[i];
131
- const matches = (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&
132
- this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&
133
- this.rowPositionUtils.sameRow(rowForCell, range.endRow);
134
- if (matches) {
135
- cellRange = range;
136
- break;
137
- }
138
- }
139
- if (cellRange) {
140
- const atEndOfList = _last(this.cellRanges) === cellRange;
141
- if (!atEndOfList) {
142
- _removeFromArray(this.cellRanges, cellRange);
143
- this.cellRanges.push(cellRange);
144
- }
145
- }
146
- else {
147
- cellRange = {
148
- startRow: rowForCell,
149
- endRow: rowForCell,
150
- columns: columns,
151
- startColumn: cell.column
152
- };
153
- this.cellRanges.push(cellRange);
154
- }
155
- this.newestRangeStartCell = cell;
156
- this.onDragStop();
157
- this.dispatchChangedEvent(true, true, cellRange.id);
158
- }
159
- extendLatestRangeToCell(cellPosition) {
160
- if (this.isEmpty() || !this.newestRangeStartCell) {
161
- return;
162
- }
163
- const cellRange = _last(this.cellRanges);
164
- this.updateRangeEnd(cellRange, cellPosition);
165
- }
166
- updateRangeEnd(cellRange, cellPosition, silent) {
167
- silent = !!silent;
168
- const endColumn = cellPosition.column;
169
- const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);
170
- if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {
171
- return;
172
- }
173
- cellRange.columns = colsToAdd;
174
- cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };
175
- if (!silent) {
176
- this.dispatchChangedEvent(true, true, cellRange.id);
177
- }
178
- }
179
- refreshRangeStart(cellRange) {
180
- const { startColumn, columns } = cellRange;
181
- const moveColInCellRange = (colToMove, moveToFront) => {
182
- const otherCols = cellRange.columns.filter(col => col !== colToMove);
183
- if (colToMove) {
184
- cellRange.startColumn = colToMove;
185
- cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];
186
- }
187
- else {
188
- cellRange.columns = otherCols;
189
- }
190
- };
191
- const { left, right } = this.getRangeEdgeColumns(cellRange);
192
- const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;
193
- if (shouldMoveLeftCol) {
194
- moveColInCellRange(left, true);
195
- return;
196
- }
197
- const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;
198
- if (shouldMoveRightCol) {
199
- moveColInCellRange(right, false);
200
- return;
201
- }
202
- }
203
- getRangeEdgeColumns(cellRange) {
204
- const allColumns = this.visibleColsService.getAllCols();
205
- const allIndices = cellRange.columns
206
- .map(c => allColumns.indexOf(c))
207
- .filter(i => i > -1)
208
- .sort((a, b) => a - b);
209
- return {
210
- left: allColumns[allIndices[0]],
211
- right: allColumns[_last(allIndices)]
212
- };
213
- }
214
- extendLatestRangeInDirection(key) {
215
- if (this.isEmpty() || !this.newestRangeStartCell) {
216
- return;
217
- }
218
- const lastRange = _last(this.cellRanges);
219
- const startCell = this.newestRangeStartCell;
220
- const firstCol = lastRange.columns[0];
221
- const lastCol = _last(lastRange.columns);
222
- const endCellIndex = lastRange.endRow.rowIndex;
223
- const endCellFloating = lastRange.endRow.rowPinned;
224
- const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;
225
- const endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };
226
- const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);
227
- if (!newEndCell) {
228
- return;
229
- }
230
- this.setCellRange({
231
- rowStartIndex: startCell.rowIndex,
232
- rowStartPinned: startCell.rowPinned,
233
- rowEndIndex: newEndCell.rowIndex,
234
- rowEndPinned: newEndCell.rowPinned,
235
- columnStart: startCell.column,
236
- columnEnd: newEndCell.column
237
- });
238
- return newEndCell;
239
- }
240
- setCellRange(params) {
241
- this.removeAllCellRanges(true);
242
- this.addCellRange(params);
243
- }
244
- setCellRanges(cellRanges) {
245
- if (_shallowCompare(this.cellRanges, cellRanges)) {
246
- return;
247
- }
248
- this.removeAllCellRanges(true);
249
- cellRanges.forEach(newRange => {
250
- if (newRange.columns && newRange.startRow) {
251
- this.newestRangeStartCell = {
252
- rowIndex: newRange.startRow.rowIndex,
253
- rowPinned: newRange.startRow.rowPinned,
254
- column: newRange.columns[0]
255
- };
256
- }
257
- this.cellRanges.push(newRange);
258
- });
259
- this.dispatchChangedEvent(false, true);
260
- }
261
- createCellRangeFromCellRangeParams(params) {
262
- let columns;
263
- if (params.columns) {
264
- columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);
265
- }
266
- else {
267
- const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);
268
- const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);
269
- if (!columnStart || !columnEnd) {
270
- return;
271
- }
272
- columns = this.calculateColumnsBetween(columnStart, columnEnd);
273
- }
274
- if (!columns) {
275
- return;
276
- }
277
- const startRow = params.rowStartIndex != null ? {
278
- rowIndex: params.rowStartIndex,
279
- rowPinned: params.rowStartPinned
280
- } : undefined;
281
- const endRow = params.rowEndIndex != null ? {
282
- rowIndex: params.rowEndIndex,
283
- rowPinned: params.rowEndPinned
284
- } : undefined;
285
- return {
286
- startRow: startRow,
287
- endRow: endRow,
288
- columns: columns,
289
- startColumn: columns[0]
290
- };
291
- }
292
- addCellRange(params) {
293
- const newRange = this.createCellRangeFromCellRangeParams(params);
294
- if (newRange) {
295
- this.cellRanges.push(newRange);
296
- this.dispatchChangedEvent(false, true, newRange.id);
297
- }
298
- }
299
- getCellRanges() {
300
- return this.cellRanges;
301
- }
302
- isEmpty() {
303
- return this.cellRanges.length === 0;
304
- }
305
- isMoreThanOneCell() {
306
- if (this.cellRanges.length === 0) {
307
- return false;
308
- }
309
- else if (this.cellRanges.length > 1) {
310
- return true;
311
- }
312
- const range = this.cellRanges[0];
313
- const startRow = this.getRangeStartRow(range);
314
- const endRow = this.getRangeEndRow(range);
315
- return startRow.rowPinned !== endRow.rowPinned ||
316
- startRow.rowIndex !== endRow.rowIndex ||
317
- range.columns.length !== 1;
318
- }
319
- removeAllCellRanges(silent) {
320
- if (this.isEmpty()) {
321
- return;
322
- }
323
- this.onDragStop();
324
- this.cellRanges.length = 0;
325
- if (!silent) {
326
- this.dispatchChangedEvent(false, true);
327
- }
328
- }
329
- onBodyScroll() {
330
- this.onDragging(this.lastMouseEvent);
331
- }
332
- isCellInAnyRange(cell) {
333
- return this.getCellRangeCount(cell) > 0;
334
- }
335
- isCellInSpecificRange(cell, range) {
336
- const columnInRange = range.columns !== null && _includes(range.columns, cell.column);
337
- const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);
338
- return columnInRange && rowInRange;
339
- }
340
- isLastCellOfRange(cellRange, cell) {
341
- const { startRow, endRow } = cellRange;
342
- const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
343
- const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;
344
- const rangeFirstIndexColumn = cellRange.columns[0];
345
- const rangeLastIndexColumn = _last(cellRange.columns);
346
- const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;
347
- const isLastColumn = cell.column === lastRangeColumn;
348
- return isLastColumn && isLastRow;
349
- }
350
- isBottomRightCell(cellRange, cell) {
351
- const allColumns = this.visibleColsService.getAllCols();
352
- const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
353
- const { startRow, endRow } = cellRange;
354
- const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
355
- const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);
356
- const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);
357
- return isRightColumn && isLastRow;
358
- }
359
- getCellRangeCount(cell) {
360
- if (this.isEmpty()) {
361
- return 0;
362
- }
363
- return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;
364
- }
365
- isRowInRange(rowIndex, floating, cellRange) {
366
- const firstRow = this.getRangeStartRow(cellRange);
367
- const lastRow = this.getRangeEndRow(cellRange);
368
- const thisRow = { rowIndex: rowIndex, rowPinned: floating };
369
- const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;
370
- const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;
371
- if (equalsFirstRow || equalsLastRow) {
372
- return true;
373
- }
374
- const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);
375
- const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);
376
- return afterFirstRow && beforeLastRow;
377
- }
378
- getDraggingRange() {
379
- return this.draggingRange;
380
- }
381
- onDragStart(mouseEvent) {
382
- const { shiftKey } = mouseEvent;
383
- const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);
384
- if (_missing(mouseCell)) {
385
- return;
386
- }
387
- if (!shiftKey || _exists(_last(this.cellRanges).type)) {
388
- this.removeAllCellRanges(true);
389
- }
390
- this.dragging = true;
391
- this.draggingCell = mouseCell;
392
- this.lastMouseEvent = mouseEvent;
393
- if (!shiftKey) {
394
- this.newestRangeStartCell = mouseCell;
395
- }
396
- if (this.cellRanges.length > 0) {
397
- this.draggingRange = _last(this.cellRanges);
398
- }
399
- else {
400
- const mouseRowPosition = {
401
- rowIndex: mouseCell.rowIndex,
402
- rowPinned: mouseCell.rowPinned
403
- };
404
- this.draggingRange = {
405
- startRow: mouseRowPosition,
406
- endRow: mouseRowPosition,
407
- columns: [mouseCell.column],
408
- startColumn: this.newestRangeStartCell.column
409
- };
410
- this.cellRanges.push(this.draggingRange);
411
- }
412
- this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);
413
- this.dispatchChangedEvent(true, false, this.draggingRange.id);
414
- }
415
- onDragging(mouseEvent) {
416
- if (!this.dragging || !mouseEvent) {
417
- return;
418
- }
419
- this.lastMouseEvent = mouseEvent;
420
- const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);
421
- const isMouseAndStartInPinned = (position) => cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;
422
- const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');
423
- this.autoScrollService.check(mouseEvent, skipVerticalScroll);
424
- if (!cellPosition ||
425
- !this.draggingCell ||
426
- this.cellPositionEquals(this.draggingCell, cellPosition)) {
427
- return;
428
- }
429
- const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);
430
- if (!columns) {
431
- return;
432
- }
433
- this.draggingCell = cellPosition;
434
- this.draggingRange.endRow = {
435
- rowIndex: cellPosition.rowIndex,
436
- rowPinned: cellPosition.rowPinned
437
- };
438
- this.draggingRange.columns = columns;
439
- this.dispatchChangedEvent(false, false, this.draggingRange.id);
440
- this.focusCell(cellPosition);
441
- }
442
- focusCell(cellPosition) {
443
- const cellFocused = this.focusService.isCellFocused(cellPosition);
444
- if (!cellFocused) {
445
- this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
446
- }
447
- }
448
- onDragStop() {
449
- if (!this.dragging) {
450
- return;
451
- }
452
- const { id } = this.draggingRange;
453
- this.autoScrollService.ensureCleared();
454
- this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);
455
- this.lastMouseEvent = null;
456
- this.dragging = false;
457
- this.draggingRange = undefined;
458
- this.draggingCell = undefined;
459
- this.dispatchChangedEvent(false, true, id);
460
- }
461
- dispatchChangedEvent(started, finished, id) {
462
- this.cellRanges.map((cellRange) => {
463
- let currentRow = this.getRangeStartRow(cellRange);
464
- const lastRow = this.getRangeEndRow(cellRange);
465
- const nodesToBeSelected = [];
466
- while (true) {
467
- const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);
468
- if (finishedAllRows || !currentRow || !cellRange.columns) {
469
- break;
470
- }
471
- const rowNode = this.rowPositionUtils.getRowNode(currentRow);
472
- if (!rowNode) {
473
- break;
474
- }
475
- if (!rowNode.isSelected()) {
476
- rowNode.setSelected(true);
477
- }
478
- nodesToBeSelected.push(rowNode.data);
479
- currentRow = this.cellNavigationService.getRowBelow(currentRow);
480
- }
481
- this.gridApi.getSelectedNodes().forEach((node) => {
482
- if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {
483
- node.setSelected(false);
484
- }
485
- });
486
- });
487
- const eventCellSelection = {
488
- type: "cellSelectionChanged",
489
- started: started,
490
- finished: finished,
491
- id: id,
492
- };
493
- this.eventService.dispatchEvent(eventCellSelection);
494
- const eventRangeSelection = {
495
- type: "rangeSelectionChanged",
496
- started: started,
497
- finished: finished,
498
- id: id,
499
- };
500
- this.eventService.dispatchEvent(eventRangeSelection);
501
- }
502
- calculateColumnsBetween(columnFrom, columnTo) {
503
- const allColumns = this.visibleColsService.getAllCols();
504
- const isSameColumn = columnFrom === columnTo;
505
- const fromIndex = allColumns.indexOf(columnFrom);
506
- if (fromIndex < 0) {
507
- console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);
508
- return undefined;
509
- }
510
- const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);
511
- if (toIndex < 0) {
512
- console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);
513
- return undefined;
514
- }
515
- if (isSameColumn) {
516
- return [columnFrom];
517
- }
518
- const firstIndex = Math.min(fromIndex, toIndex);
519
- const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;
520
- const columns = [];
521
- for (let i = firstIndex; i <= lastIndex; i++) {
522
- columns.push(allColumns[i]);
523
- }
524
- return columns;
525
- }
526
- }
527
- //# sourceMappingURL=rangeSelector.js.map
1
+ import {
2
+ _areEqual,
3
+ _exists,
4
+ _includes, _isDomLayout,
5
+ _last,
6
+ _makeNull,
7
+ _missing, _removeFromArray,
8
+ _shallowCompare,
9
+ AutoScrollService, BeanStub
10
+ } from "ag-grid-community";
11
+
12
+ export class RangeSelector extends BeanStub {
13
+ beanName = "RangeSelector";
14
+
15
+ wireBeans(beans) {
16
+ this.rowModel = beans.rowModel;
17
+ this.dragService = beans.dragService;
18
+ this.columnModel = beans.columnModel;
19
+ this.visibleColsService = beans.visibleColsService;
20
+ this.cellNavigationService = beans.cellNavigationService;
21
+ this.pinnedRowModel = beans.pinnedRowModel;
22
+ this.rowPositionUtils = beans.rowPositionUtils;
23
+ this.cellPositionUtils = beans.cellPositionUtils;
24
+ this.ctrlsService = beans.ctrlsService;
25
+ this.valueService = beans.valueService;
26
+ this.eventService = beans.eventService;
27
+ this.mouseEventService = beans.mouseEventService;
28
+ this.gridApi = beans.gridApi;
29
+ this.eGridDiv = beans.eGridDiv;
30
+ this.focusService = beans.focusService;
31
+ this.gos = beans.gos;
32
+ }
33
+
34
+ postConstruct() {
35
+ this.cellRanges = [];
36
+ this.bodyScrollListener = this.onBodyScroll.bind(this);
37
+ this.dragging = false;
38
+
39
+ this.eventService.addEventListener("newColumnsLoaded", () => this.removeAllCellRanges());
40
+ this.eventService.addEventListener("columnPivotModeChanged", () => this.removeAllCellRanges());
41
+ this.eventService.addEventListener("columnRowGroupChanged", () => this.removeAllCellRanges());
42
+ this.eventService.addEventListener("columnPivotChanged", () => this.removeAllCellRanges());
43
+ this.eventService.addEventListener("columnGroupOpened", this.refreshLastRangeStart.bind(this));
44
+ this.eventService.addEventListener("columnMoved", this.refreshLastRangeStart.bind(this));
45
+ this.eventService.addEventListener("columnPinned", this.refreshLastRangeStart.bind(this));
46
+ this.eventService.addEventListener("columnVisible", this.onColumnVisibleChange.bind(this));
47
+
48
+ this.ctrlsService.whenReady(this,() => {
49
+ const gridBodyCon = this.ctrlsService.getGridBodyCtrl();
50
+ this.autoScrollService = new AutoScrollService({
51
+ scrollContainer: gridBodyCon.getBodyViewportElement(),
52
+ scrollAxis: 'xy',
53
+ getVerticalPosition: () => gridBodyCon.getScrollFeature().getVScrollPosition().top,
54
+ setVerticalPosition: (position) => gridBodyCon.getScrollFeature().setVerticalScrollPosition(position),
55
+ getHorizontalPosition: () => gridBodyCon.getScrollFeature().getHScrollPosition().left,
56
+ setHorizontalPosition: (position) => gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position),
57
+ shouldSkipVerticalScroll: () => !_isDomLayout(this.gos, 'normal'),
58
+ shouldSkipHorizontalScroll: () => !gridBodyCon.getScrollFeature().isHorizontalScrollShowing()
59
+ });
60
+ });
61
+
62
+ //intitialization of drag event handling
63
+ // const eContainers = guiRoot.querySelectorAll(`[ref="eContainer"]`);
64
+ // for (const eContainer of eContainers) {
65
+ const params = {
66
+ eElement: this.eGridDiv,
67
+ onDragStart: this.onDragStart.bind(this),
68
+ onDragStop: this.onDragStop.bind(this),
69
+ onDragging: this.onDragging.bind(this)
70
+ };
71
+
72
+ this.dragService.addDragSource(params);
73
+ this.dragService.addDestroyFunc(() => this.dragService.removeDragSource(params));
74
+ // }
75
+ }
76
+
77
+ cellPositionEquals(cellA, cellB) {
78
+ const colsMatch = cellA.column === cellB.column;
79
+ const floatingMatch = cellA.rowPinned === cellB.rowPinned;
80
+ const indexMatch = cellA.rowIndex === cellB.rowIndex;
81
+ return colsMatch && floatingMatch && indexMatch;
82
+ }
83
+
84
+ onColumnVisibleChange() {
85
+ // first move start column in last cell range (i.e. series chart range)
86
+ this.refreshLastRangeStart();
87
+
88
+ // then check if the column visibility has changed in any cell range
89
+ this.cellRanges.forEach(cellRange => {
90
+ const beforeCols = cellRange.columns;
91
+
92
+ // remove hidden cols from cell range
93
+ cellRange.columns = cellRange.columns.filter(col => col.isVisible());
94
+
95
+ const colsInRangeChanged = !_areEqual(beforeCols, cellRange.columns);
96
+ if (colsInRangeChanged) {
97
+ this.dispatchChangedEvent(false, true, cellRange.id);
98
+ }
99
+ });
100
+ }
101
+
102
+ refreshLastRangeStart() {
103
+ const lastRange = _last(this.cellRanges);
104
+ if (!lastRange) {
105
+ return;
106
+ }
107
+
108
+ this.refreshRangeStart(lastRange);
109
+ }
110
+
111
+ isContiguousRange(cellRange) {
112
+ const rangeColumns = cellRange.columns;
113
+
114
+ if (!rangeColumns.length) {
115
+ return false;
116
+ }
117
+
118
+ const allColumns = this.visibleColsService.getAllCols();
119
+ const allPositions = rangeColumns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
120
+
121
+ return _last(allPositions) - allPositions[0] + 1 === rangeColumns.length;
122
+ }
123
+
124
+ getRangeStartRow(cellRange) {
125
+ if (cellRange.startRow && cellRange.endRow) {
126
+ return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
127
+ cellRange.startRow : cellRange.endRow;
128
+ }
129
+ const rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? 'top' : null;
130
+ return {rowIndex: 0, rowPinned};
131
+ }
132
+
133
+ getRangeEndRow(cellRange) {
134
+ if (cellRange.startRow && cellRange.endRow) {
135
+ return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?
136
+ cellRange.endRow : cellRange.startRow;
137
+ }
138
+
139
+ const pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();
140
+ const pinnedBottom = pinnedBottomRowCount > 0;
141
+
142
+ if (pinnedBottom) {
143
+ return {
144
+ rowIndex: pinnedBottomRowCount - 1,
145
+ rowPinned: 'bottom'
146
+ };
147
+ }
148
+
149
+ return {
150
+ rowIndex: this.rowModel.getRowCount() - 1,
151
+ rowPinned: null
152
+ };
153
+ }
154
+
155
+ setRangeToCell(cell, appendRange = false) {
156
+ const columns = this.calculateColumnsBetween(cell.column, cell.column);
157
+ if (!columns) {
158
+ return;
159
+ }
160
+ this.removeAllCellRanges(true);
161
+ const rowForCell = {
162
+ rowIndex: cell.rowIndex,
163
+ rowPinned: cell.rowPinned
164
+ };
165
+
166
+ // if there is already a range for this cell, then we reuse the same range, otherwise the user
167
+ // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied
168
+ // many times to the clipboard.
169
+ let cellRange;
170
+ for (let i = 0; i < this.cellRanges.length; i++) {
171
+ const range = this.cellRanges[i];
172
+ const matches =
173
+ // check cols are same
174
+ (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&
175
+ // check rows are same
176
+ this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&
177
+ this.rowPositionUtils.sameRow(rowForCell, range.endRow);
178
+ if (matches) {
179
+ cellRange = range;
180
+ break;
181
+ }
182
+ }
183
+
184
+ if (cellRange) {
185
+ // we need it at the end of the list, as the dragStart picks the last created
186
+ // range as the start point for the drag
187
+ const atEndOfList = _last(this.cellRanges) === cellRange;
188
+
189
+ if (!atEndOfList) {
190
+ _removeFromArray(this.cellRanges, cellRange);
191
+ this.cellRanges.push(cellRange);
192
+ }
193
+ } else {
194
+ cellRange = {
195
+ startRow: rowForCell,
196
+ endRow: rowForCell,
197
+ columns: columns,
198
+ startColumn: cell.column
199
+ };
200
+ this.cellRanges.push(cellRange);
201
+ }
202
+
203
+ this.newestRangeStartCell = cell;
204
+ this.onDragStop();
205
+ this.dispatchChangedEvent(true, true, cellRange.id);
206
+ }
207
+
208
+ extendLatestRangeToCell(cellPosition) {
209
+ if (this.isEmpty() || !this.newestRangeStartCell) {
210
+ return;
211
+ }
212
+ const cellRange = _last(this.cellRanges);
213
+
214
+ this.updateRangeEnd(cellRange, cellPosition);
215
+ }
216
+
217
+ updateRangeEnd(cellRange, cellPosition, silent) {
218
+ silent = !!silent;
219
+ const endColumn = cellPosition.column;
220
+ const colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);
221
+ if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {
222
+ return;
223
+ }
224
+
225
+ cellRange.columns = colsToAdd;
226
+ cellRange.endRow = {rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned};
227
+
228
+ if (!silent) {
229
+ this.dispatchChangedEvent(true, true, cellRange.id);
230
+ }
231
+ }
232
+
233
+ refreshRangeStart(cellRange) {
234
+ const {startColumn, columns} = cellRange;
235
+
236
+ const moveColInCellRange = (colToMove, moveToFront) => {
237
+ const otherCols = cellRange.columns.filter(col => col !== colToMove);
238
+ if (colToMove) {
239
+ cellRange.startColumn = colToMove;
240
+ cellRange.columns = moveToFront ? [colToMove, ...otherCols] : [...otherCols, colToMove];
241
+ } else {
242
+ cellRange.columns = otherCols;
243
+ }
244
+ };
245
+
246
+ const {left, right} = this.getRangeEdgeColumns(cellRange);
247
+ const shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;
248
+ if (shouldMoveLeftCol) {
249
+ moveColInCellRange(left, true);
250
+ return;
251
+ }
252
+ const shouldMoveRightCol = startColumn === _last(columns) && startColumn === right;
253
+ if (shouldMoveRightCol) {
254
+ moveColInCellRange(right, false);
255
+ return;
256
+ }
257
+ }
258
+
259
+ getRangeEdgeColumns(cellRange) {
260
+ const allColumns = this.visibleColsService.getAllCols();
261
+ const allIndices = cellRange.columns
262
+ .map(c => allColumns.indexOf(c))
263
+ .filter(i => i > -1)
264
+ .sort((a, b) => a - b);
265
+
266
+ return {
267
+ left: allColumns[allIndices[0]],
268
+ right: allColumns[_last(allIndices)]
269
+ };
270
+ }
271
+
272
+ // returns true if successful, false if not successful
273
+ extendLatestRangeInDirection(key) {
274
+ if (this.isEmpty() || !this.newestRangeStartCell) {
275
+ return;
276
+ }
277
+
278
+ const lastRange = _last(this.cellRanges);
279
+
280
+ const startCell = this.newestRangeStartCell;
281
+
282
+ const firstCol = lastRange.columns[0];
283
+ const lastCol = _last(lastRange.columns);
284
+
285
+ // find the cell that is at the furthest away corner from the starting cell
286
+ const endCellIndex = lastRange.endRow.rowIndex;
287
+ const endCellFloating = lastRange.endRow.rowPinned;
288
+ const endCellColumn = startCell.column === firstCol ? lastCol : firstCol;
289
+
290
+ const endCell = {column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating};
291
+ const newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);
292
+
293
+ // if user is at end of grid, so no cell to extend to, we return false
294
+ if (!newEndCell) {
295
+ return;
296
+ }
297
+
298
+ this.setCellRange({
299
+ rowStartIndex: startCell.rowIndex,
300
+ rowStartPinned: startCell.rowPinned,
301
+ rowEndIndex: newEndCell.rowIndex,
302
+ rowEndPinned: newEndCell.rowPinned,
303
+ columnStart: startCell.column,
304
+ columnEnd: newEndCell.column
305
+ });
306
+
307
+ return newEndCell;
308
+ }
309
+
310
+ setCellRange(params) {
311
+ this.removeAllCellRanges(true);
312
+ this.addCellRange(params);
313
+ }
314
+
315
+ setCellRanges(cellRanges) {
316
+ if (_shallowCompare(this.cellRanges, cellRanges)) {
317
+ return;
318
+ }
319
+ this.removeAllCellRanges(true);
320
+
321
+ cellRanges.forEach(newRange => {
322
+ if (newRange.columns && newRange.startRow) {
323
+ this.newestRangeStartCell = {
324
+ rowIndex: newRange.startRow.rowIndex,
325
+ rowPinned: newRange.startRow.rowPinned,
326
+ column: newRange.columns[0]
327
+ };
328
+ }
329
+ this.cellRanges.push(newRange);
330
+ });
331
+
332
+ this.dispatchChangedEvent(false, true);
333
+ }
334
+
335
+ createCellRangeFromCellRangeParams(params) {
336
+ let columns;
337
+ if (params.columns) {
338
+ columns = params.columns.map(c => this.columnModel.getColumnWithValidation(c)).filter(c => c);
339
+ } else {
340
+ const columnStart = this.columnModel.getColumnWithValidation(params.columnStart);
341
+ const columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);
342
+ if (!columnStart || !columnEnd) {
343
+ return;
344
+ }
345
+ columns = this.calculateColumnsBetween(columnStart, columnEnd);
346
+ }
347
+
348
+ if (!columns) {
349
+ return;
350
+ }
351
+
352
+ const startRow = params.rowStartIndex != null ? {
353
+ rowIndex: params.rowStartIndex,
354
+ rowPinned: params.rowStartPinned
355
+ } : undefined;
356
+
357
+ const endRow = params.rowEndIndex != null ? {
358
+ rowIndex: params.rowEndIndex,
359
+ rowPinned: params.rowEndPinned
360
+ } : undefined;
361
+
362
+ return {
363
+ startRow: startRow,
364
+ endRow: endRow,
365
+ columns: columns,
366
+ startColumn: columns[0]
367
+ };
368
+ }
369
+
370
+ addCellRange(params) {
371
+ const newRange = this.createCellRangeFromCellRangeParams(params);
372
+ if (newRange) {
373
+ this.cellRanges.push(newRange);
374
+ this.dispatchChangedEvent(false, true, newRange.id);
375
+ }
376
+ }
377
+
378
+ getCellRanges() {
379
+ return this.cellRanges;
380
+ }
381
+
382
+ isEmpty() {
383
+ return this.cellRanges.length === 0;
384
+ }
385
+
386
+ isMoreThanOneCell() {
387
+ if (this.cellRanges.length === 0) {
388
+ // no ranges, so not more than one cell
389
+ return false;
390
+ } else if (this.cellRanges.length > 1) {
391
+ // many ranges, so more than one cell
392
+ return true;
393
+ }
394
+
395
+ // only one range, return true if range has more than one
396
+ const range = this.cellRanges[0];
397
+ const startRow = this.getRangeStartRow(range);
398
+ const endRow = this.getRangeEndRow(range);
399
+ return startRow.rowPinned !== endRow.rowPinned ||
400
+ startRow.rowIndex !== endRow.rowIndex ||
401
+ range.columns.length !== 1;
402
+ }
403
+
404
+ removeAllCellRanges(silent) {
405
+ if (this.isEmpty()) {
406
+ return;
407
+ }
408
+
409
+ this.onDragStop();
410
+ this.cellRanges.length = 0;
411
+
412
+ if (!silent) {
413
+ this.dispatchChangedEvent(false, true);
414
+ }
415
+ }
416
+
417
+ // as the user is dragging outside of the panel, the div starts to scroll, which in turn
418
+ // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate
419
+ // the selection my mimicking a new mouse event
420
+ onBodyScroll() {
421
+ this.onDragging(this.lastMouseEvent);
422
+ }
423
+
424
+ isCellInAnyRange(cell) {
425
+ return this.getCellRangeCount(cell) > 0;
426
+ }
427
+
428
+ isCellInSpecificRange(cell, range) {
429
+ const columnInRange = range.columns !== null && _includes(range.columns, cell.column);
430
+ const rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);
431
+ return columnInRange && rowInRange;
432
+ }
433
+
434
+ isLastCellOfRange(cellRange, cell) {
435
+ const {startRow, endRow} = cellRange;
436
+ const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
437
+ const isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;
438
+ const rangeFirstIndexColumn = cellRange.columns[0];
439
+ const rangeLastIndexColumn = _last(cellRange.columns);
440
+ const lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;
441
+ const isLastColumn = cell.column === lastRangeColumn;
442
+ return isLastColumn && isLastRow;
443
+ }
444
+
445
+ isBottomRightCell(cellRange, cell) {
446
+ const allColumns = this.visibleColsService.getAllCols();
447
+ const allPositions = cellRange.columns.map(c => allColumns.indexOf(c)).sort((a, b) => a - b);
448
+ const {startRow, endRow} = cellRange;
449
+ const lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;
450
+
451
+ const isRightColumn = allColumns.indexOf(cell.column) === _last(allPositions);
452
+ const isLastRow = cell.rowIndex === lastRow.rowIndex && _makeNull(cell.rowPinned) === _makeNull(lastRow.rowPinned);
453
+
454
+ return isRightColumn && isLastRow;
455
+ }
456
+
457
+ // returns the number of ranges this cell is in
458
+ getCellRangeCount(cell) {
459
+ if (this.isEmpty()) {
460
+ return 0;
461
+ }
462
+ return this.cellRanges.filter(cellRange => this.isCellInSpecificRange(cell, cellRange)).length;
463
+ }
464
+
465
+ isRowInRange(rowIndex, floating, cellRange) {
466
+
467
+ const firstRow = this.getRangeStartRow(cellRange);
468
+ const lastRow = this.getRangeEndRow(cellRange);
469
+
470
+ const thisRow = {rowIndex: rowIndex, rowPinned: floating};
471
+
472
+ // compare rowPinned with == instead of === because it can be `null` or `undefined`
473
+ const equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;
474
+ const equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;
475
+
476
+ if (equalsFirstRow || equalsLastRow) {
477
+ return true;
478
+ }
479
+
480
+ const afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);
481
+ const beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);
482
+ return afterFirstRow && beforeLastRow;
483
+ }
484
+
485
+ getDraggingRange() {
486
+ return this.draggingRange;
487
+ }
488
+
489
+ onDragStart(mouseEvent) {
490
+ const {shiftKey} = mouseEvent;
491
+ const mouseCell = this.mouseEventService.getCellPositionForEvent(mouseEvent);
492
+ if (_missing(mouseCell)) {
493
+ // if drag wasn't on cell, then do nothing, including do not set dragging=true,
494
+ // (which them means onDragging and onDragStop do nothing)
495
+ return;
496
+ }
497
+
498
+ if (!shiftKey || _exists(_last(this.cellRanges).type)) {
499
+ this.removeAllCellRanges(true);
500
+ }
501
+
502
+ this.dragging = true;
503
+ this.draggingCell = mouseCell;
504
+ this.lastMouseEvent = mouseEvent;
505
+
506
+ if (!shiftKey) {
507
+ this.newestRangeStartCell = mouseCell;
508
+ }
509
+
510
+ // if we didn't clear the ranges, then dragging means the user clicked, and when the
511
+ // user clicks it means a range of one cell was created. we need to extend this range
512
+ // rather than creating another range. otherwise we end up with two distinct ranges
513
+ // from a drag operation (one from click, and one from drag).
514
+ if (this.cellRanges.length > 0) {
515
+ this.draggingRange = _last(this.cellRanges);
516
+ } else {
517
+ const mouseRowPosition = {
518
+ rowIndex: mouseCell.rowIndex,
519
+ rowPinned: mouseCell.rowPinned
520
+ };
521
+
522
+ this.draggingRange = {
523
+ startRow: mouseRowPosition,
524
+ endRow: mouseRowPosition,
525
+ columns: [mouseCell.column],
526
+ startColumn: this.newestRangeStartCell.column
527
+ };
528
+ this.cellRanges.push(this.draggingRange);
529
+ }
530
+
531
+ this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);
532
+
533
+ this.dispatchChangedEvent(true, false, this.draggingRange.id);
534
+ }
535
+
536
+ onDragging(mouseEvent) {
537
+ if (!this.dragging || !mouseEvent) {
538
+ return;
539
+ }
540
+ this.lastMouseEvent = mouseEvent;
541
+
542
+ const cellPosition = this.mouseEventService.getCellPositionForEvent(mouseEvent);
543
+
544
+ const isMouseAndStartInPinned = (position) =>
545
+ cellPosition && cellPosition.rowPinned === position && this.newestRangeStartCell.rowPinned === position;
546
+
547
+ const skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');
548
+
549
+ this.autoScrollService.check(mouseEvent, skipVerticalScroll);
550
+
551
+ if (
552
+ !cellPosition ||
553
+ !this.draggingCell ||
554
+ this.cellPositionEquals(this.draggingCell, cellPosition)
555
+ ) {
556
+ return;
557
+ }
558
+
559
+ const columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);
560
+
561
+ if (!columns) {
562
+ return;
563
+ }
564
+
565
+ this.draggingCell = cellPosition;
566
+
567
+ this.draggingRange.endRow = {
568
+ rowIndex: cellPosition.rowIndex,
569
+ rowPinned: cellPosition.rowPinned
570
+ };
571
+ this.draggingRange.columns = columns;
572
+
573
+ this.dispatchChangedEvent(false, false, this.draggingRange.id);
574
+ this.focusCell(cellPosition);
575
+ }
576
+
577
+ focusCell(cellPosition) {
578
+ const cellFocused = this.focusService.isCellFocused(cellPosition);
579
+ if (!cellFocused) {
580
+ this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
581
+ }
582
+ }
583
+
584
+ onDragStop() {
585
+ if (!this.dragging) {
586
+ return;
587
+ }
588
+ const {id} = this.draggingRange;
589
+ this.autoScrollService.ensureCleared();
590
+
591
+ this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);
592
+ this.lastMouseEvent = null;
593
+ this.dragging = false;
594
+ this.draggingRange = undefined;
595
+ this.draggingCell = undefined;
596
+
597
+ this.dispatchChangedEvent(false, true, id);
598
+ }
599
+
600
+ dispatchChangedEvent(started, finished, id) {
601
+ this.cellRanges.map((cellRange) => {
602
+ let currentRow = this.getRangeStartRow(cellRange);
603
+ const lastRow = this.getRangeEndRow(cellRange);
604
+ const nodesToBeSelected = [];
605
+ while (true) {
606
+ const finishedAllRows = _missing(currentRow) || !currentRow || this.rowPositionUtils.before(lastRow, currentRow);
607
+ if (finishedAllRows || !currentRow || !cellRange.columns) {
608
+ break;
609
+ }
610
+ const rowNode = this.rowPositionUtils.getRowNode(currentRow);
611
+ if (!rowNode) {
612
+ break;
613
+ }
614
+ if (!rowNode.isSelected()) {
615
+ rowNode.setSelected(true);
616
+ }
617
+ nodesToBeSelected.push(rowNode.data);
618
+ currentRow = this.cellNavigationService.getRowBelow(currentRow);
619
+ }
620
+ this.gridApi.getSelectedNodes().forEach((node) => {
621
+ if (!nodesToBeSelected.some(nodeToBeSelected => node.data === nodeToBeSelected)) {
622
+ node.setSelected(false);
623
+ }
624
+ });
625
+ });
626
+ const eventCellSelection = {
627
+ type: "cellSelectionChanged",
628
+ started: started,
629
+ finished: finished,
630
+ id: id,
631
+ };
632
+ this.eventService.dispatchEvent(eventCellSelection);
633
+ const eventRangeSelection = {
634
+ type: "rangeSelectionChanged",
635
+ started: started,
636
+ finished: finished,
637
+ id: id,
638
+ };
639
+ this.eventService.dispatchEvent(eventRangeSelection);
640
+ }
641
+
642
+ calculateColumnsBetween(columnFrom, columnTo) {
643
+ const allColumns = this.visibleColsService.getAllCols();
644
+ const isSameColumn = columnFrom === columnTo;
645
+ const fromIndex = allColumns.indexOf(columnFrom);
646
+
647
+ if (fromIndex < 0) {
648
+ console.warn(`ag-Grid: column ${columnFrom.getId()} is not visible`);
649
+ return undefined;
650
+ }
651
+
652
+ const toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);
653
+
654
+ if (toIndex < 0) {
655
+ console.warn(`ag-Grid: column ${columnTo.getId()} is not visible`);
656
+ return undefined;
657
+ }
658
+
659
+ if (isSameColumn) {
660
+ return [columnFrom];
661
+ }
662
+
663
+ const firstIndex = Math.min(fromIndex, toIndex);
664
+ const lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;
665
+
666
+ const columns = [];
667
+
668
+ for (let i = firstIndex; i <= lastIndex; i++) {
669
+ columns.push(allColumns[i]);
670
+ }
671
+
672
+ return columns;
673
+ }
674
+ }