@elliemae/ds-data-table 2.0.0-alpha.1 → 2.0.0-alpha.13

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 (306) hide show
  1. package/cjs/DataTable.js +9 -4
  2. package/cjs/DataTableContext.js +1 -1
  3. package/cjs/DataTableSchema.js +32 -20
  4. package/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +12 -11
  5. package/cjs/addons/Columns/ColumnExpand/ColumnExpand.js +62 -40
  6. package/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +30 -23
  7. package/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +22 -16
  8. package/cjs/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +22 -15
  9. package/cjs/addons/Editables/DateEditableCell/DateEditableCell.js +22 -13
  10. package/cjs/addons/Editables/TextEditableCell/TextEditableCell.js +38 -13
  11. package/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +169 -0
  12. package/cjs/addons/Filters/Components/DateRangeFilter/index.js +26 -19
  13. package/cjs/addons/Filters/Components/DateSwitcherFilter/index.js +145 -0
  14. package/cjs/addons/Filters/Components/NumberRangeFilter/index.js +95 -37
  15. package/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +88 -91
  16. package/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +46 -34
  17. package/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +46 -32
  18. package/cjs/addons/Filters/Components/SelectFilter/components.js +6 -6
  19. package/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +17 -13
  20. package/cjs/addons/Filters/Components/SelectFilter/utils.js +14 -8
  21. package/cjs/addons/Filters/Components/SingleDateFilter/index.js +25 -18
  22. package/cjs/addons/Filters/Components/index.js +8 -6
  23. package/cjs/addons/Filters/index.js +8 -6
  24. package/cjs/addons/Pagination/Pagination.js +19 -54
  25. package/cjs/configs/constants.js +4 -4
  26. package/cjs/configs/fixedSizes.js +1 -1
  27. package/cjs/configs/index.js +1 -3
  28. package/cjs/configs/useDatatableConfig.js +8 -2
  29. package/cjs/configs/usePaginationConfig.js +10 -4
  30. package/cjs/configs/useRowFlattenization.js +14 -7
  31. package/cjs/configs/useTableColsWithAddons.js +36 -21
  32. package/cjs/exported-related/EditableCell.js +22 -7
  33. package/cjs/exported-related/FilterPopover.js +72 -78
  34. package/cjs/exported-related/FilterTypes.js +3 -2
  35. package/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +8 -3
  36. package/cjs/exported-related/Filters/currencyRangeFilterFn.js +24 -0
  37. package/cjs/exported-related/Filters/dateRangeFilterFn.js +13 -7
  38. package/cjs/exported-related/Filters/dateSwitcherFilterFn.js +12 -0
  39. package/cjs/exported-related/Filters/index.js +2 -2
  40. package/cjs/exported-related/Filters/multiSelectFilterFn.js +9 -3
  41. package/cjs/exported-related/Filters/numberRangeFilterFn.js +7 -1
  42. package/cjs/exported-related/Filters/singleDateFilterFn.js +13 -7
  43. package/cjs/exported-related/Filters/singleSelectFilterFn.js +5 -1
  44. package/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js +18 -6
  45. package/cjs/exported-related/RowRenderer/index.js +20 -12
  46. package/cjs/exported-related/RowRenderer/useRowRendererHandlers.js +58 -17
  47. package/cjs/exported-related/RowRenderer/useRowRendererProperties.js +13 -5
  48. package/cjs/exported-related/RowRenderer/useRowStyle.js +7 -6
  49. package/cjs/exported-related/Toolbar/Toolbar.js +48 -28
  50. package/cjs/exported-related/groupBy.js +14 -5
  51. package/cjs/exported-related/index.js +2 -2
  52. package/cjs/helpers/addCellData.js +16 -6
  53. package/cjs/helpers/cellPadding.js +17 -11
  54. package/cjs/helpers/columnsToGrid.js +6 -1
  55. package/cjs/helpers/getIdFromUniqueRowAccessor.js +3 -0
  56. package/cjs/helpers/refs-helpers.js +13 -3
  57. package/cjs/helpers/sizeToCss.js +1 -1
  58. package/cjs/hooks/useRecoverFocusCol.js +1 -0
  59. package/cjs/index.js +2 -2
  60. package/cjs/parts/Cells/Cell.js +38 -26
  61. package/cjs/parts/Cells/index.js +7 -5
  62. package/cjs/parts/Cells/useCellStyle.js +3 -3
  63. package/cjs/parts/DnDHandle.js +31 -22
  64. package/cjs/parts/DropIndicator.js +33 -33
  65. package/cjs/parts/EmptyContent.js +23 -20
  66. package/cjs/parts/FilterBar/FiltersBar.js +62 -33
  67. package/cjs/parts/FilterBar/components/DateRangePill.js +23 -12
  68. package/cjs/parts/FilterBar/components/DateSwitcherPill.js +45 -0
  69. package/cjs/parts/FilterBar/components/MultiSelectPill.js +34 -14
  70. package/cjs/parts/FilterBar/components/NumberRangePill.js +25 -12
  71. package/cjs/parts/FilterBar/components/SelectPill.js +23 -12
  72. package/cjs/parts/FilterBar/components/SingleDatePill.js +22 -11
  73. package/cjs/parts/FilterBar/components/index.js +2 -2
  74. package/cjs/parts/FilterBar/styled.js +2 -2
  75. package/cjs/parts/Filters/index.js +34 -22
  76. package/cjs/parts/Footer.js +9 -6
  77. package/cjs/parts/Headers/EmptyChildrenGroup.js +2 -2
  78. package/cjs/parts/Headers/HeaderCell.js +34 -26
  79. package/cjs/parts/Headers/HeaderCellGroup.js +31 -21
  80. package/cjs/parts/Headers/HeaderCellTitle.js +61 -27
  81. package/cjs/parts/Headers/HeaderResizer.js +22 -13
  82. package/cjs/parts/Headers/RequiredDot.js +2 -2
  83. package/cjs/parts/Headers/index.js +6 -4
  84. package/cjs/parts/Headers/useHeaderCellConfig.js +12 -7
  85. package/cjs/parts/Headers/useHeaderCellHandlers.js +32 -21
  86. package/cjs/parts/HoC/withConditionalDnDColumnContext.js +52 -21
  87. package/cjs/parts/HoC/withConditionalDnDRowContext.js +21 -16
  88. package/cjs/parts/HoC/withConditionalDnDSortableContext.js +24 -14
  89. package/cjs/parts/HoC/withDnDSortableColumnContext.js +13 -22
  90. package/cjs/parts/HoC/withDnDSortableRowContext.js +11 -20
  91. package/cjs/parts/Loader.js +3 -3
  92. package/cjs/parts/Row.js +18 -12
  93. package/cjs/parts/RowLoading.js +14 -8
  94. package/cjs/parts/RowVariants/RowVariantHeader.js +37 -24
  95. package/cjs/parts/RowVariants/RowVariantPrimary.js +11 -10
  96. package/cjs/parts/RowVariants/RowVariantSecondary.js +11 -10
  97. package/cjs/parts/RowVariants/index.js +22 -13
  98. package/cjs/parts/Rows.js +12 -5
  99. package/cjs/parts/SortByCaret.js +16 -16
  100. package/cjs/parts/SortableHeaderCell.js +7 -2
  101. package/cjs/parts/TableContent.js +22 -12
  102. package/cjs/parts/VirtualRowsList.js +17 -10
  103. package/cjs/parts/index.js +1 -1
  104. package/cjs/prop-types.js +30 -25
  105. package/cjs/redux/reducers/headersReducers/logic.js +11 -5
  106. package/cjs/redux/reducers/index.js +1 -1
  107. package/cjs/redux/storeConfig.js +1 -1
  108. package/cjs/styled.js +133 -120
  109. package/esm/DataTable.js +5 -0
  110. package/esm/DataTableSchema.js +32 -20
  111. package/esm/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +9 -8
  112. package/esm/addons/Columns/ColumnExpand/ColumnExpand.js +52 -29
  113. package/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +27 -19
  114. package/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +18 -11
  115. package/esm/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +19 -11
  116. package/esm/addons/Editables/DateEditableCell/DateEditableCell.js +19 -10
  117. package/esm/addons/Editables/TextEditableCell/TextEditableCell.js +34 -9
  118. package/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +159 -0
  119. package/esm/addons/Filters/Components/DateRangeFilter/index.js +20 -12
  120. package/esm/addons/Filters/Components/DateSwitcherFilter/index.js +136 -0
  121. package/esm/addons/Filters/Components/NumberRangeFilter/index.js +92 -32
  122. package/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +87 -87
  123. package/esm/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +46 -34
  124. package/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +46 -32
  125. package/esm/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +17 -13
  126. package/esm/addons/Filters/Components/SelectFilter/utils.js +14 -8
  127. package/esm/addons/Filters/Components/SingleDateFilter/index.js +19 -11
  128. package/esm/addons/Filters/Components/index.js +2 -1
  129. package/esm/addons/Filters/index.js +2 -1
  130. package/esm/addons/Pagination/Pagination.js +17 -52
  131. package/esm/configs/constants.js +4 -4
  132. package/esm/configs/fixedSizes.js +1 -1
  133. package/esm/configs/useDatatableConfig.js +8 -2
  134. package/esm/configs/usePaginationConfig.js +10 -4
  135. package/esm/configs/useRowFlattenization.js +14 -7
  136. package/esm/configs/useTableColsWithAddons.js +36 -21
  137. package/esm/exported-related/EditableCell.js +21 -6
  138. package/esm/exported-related/FilterPopover.js +67 -73
  139. package/esm/exported-related/FilterTypes.js +3 -2
  140. package/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +8 -3
  141. package/esm/exported-related/Filters/currencyRangeFilterFn.js +20 -0
  142. package/esm/exported-related/Filters/dateRangeFilterFn.js +12 -6
  143. package/esm/exported-related/Filters/dateSwitcherFilterFn.js +8 -0
  144. package/esm/exported-related/Filters/index.js +1 -1
  145. package/esm/exported-related/Filters/multiSelectFilterFn.js +9 -3
  146. package/esm/exported-related/Filters/numberRangeFilterFn.js +7 -1
  147. package/esm/exported-related/Filters/singleDateFilterFn.js +12 -6
  148. package/esm/exported-related/Filters/singleSelectFilterFn.js +5 -1
  149. package/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js +14 -2
  150. package/esm/exported-related/RowRenderer/index.js +15 -7
  151. package/esm/exported-related/RowRenderer/useRowRendererHandlers.js +57 -16
  152. package/esm/exported-related/RowRenderer/useRowRendererProperties.js +11 -3
  153. package/esm/exported-related/RowRenderer/useRowStyle.js +6 -5
  154. package/esm/exported-related/Toolbar/Toolbar.js +46 -25
  155. package/esm/exported-related/groupBy.js +14 -5
  156. package/esm/exported-related/index.js +1 -1
  157. package/esm/helpers/addCellData.js +16 -6
  158. package/esm/helpers/cellPadding.js +17 -11
  159. package/esm/helpers/columnsToGrid.js +6 -1
  160. package/esm/helpers/getIdFromUniqueRowAccessor.js +3 -0
  161. package/esm/helpers/refs-helpers.js +13 -3
  162. package/esm/helpers/sizeToCss.js +1 -1
  163. package/esm/hooks/useRecoverFocusCol.js +1 -0
  164. package/esm/index.js +1 -1
  165. package/esm/parts/Cells/Cell.js +34 -22
  166. package/esm/parts/Cells/index.js +4 -2
  167. package/esm/parts/Cells/useCellStyle.js +2 -2
  168. package/esm/parts/DnDHandle.js +28 -18
  169. package/esm/parts/DropIndicator.js +29 -29
  170. package/esm/parts/EmptyContent.js +11 -7
  171. package/esm/parts/FilterBar/FiltersBar.js +58 -29
  172. package/esm/parts/FilterBar/components/DateRangePill.js +24 -13
  173. package/esm/parts/FilterBar/components/DateSwitcherPill.js +37 -0
  174. package/esm/parts/FilterBar/components/MultiSelectPill.js +35 -15
  175. package/esm/parts/FilterBar/components/NumberRangePill.js +26 -13
  176. package/esm/parts/FilterBar/components/SelectPill.js +24 -13
  177. package/esm/parts/FilterBar/components/SingleDatePill.js +23 -12
  178. package/esm/parts/FilterBar/components/index.js +1 -1
  179. package/esm/parts/Filters/index.js +29 -17
  180. package/esm/parts/Footer.js +8 -5
  181. package/esm/parts/Headers/HeaderCell.js +23 -15
  182. package/esm/parts/Headers/HeaderCellGroup.js +26 -17
  183. package/esm/parts/Headers/HeaderCellTitle.js +60 -26
  184. package/esm/parts/Headers/HeaderResizer.js +20 -11
  185. package/esm/parts/Headers/index.js +4 -2
  186. package/esm/parts/Headers/useHeaderCellConfig.js +12 -7
  187. package/esm/parts/Headers/useHeaderCellHandlers.js +31 -20
  188. package/esm/parts/HoC/withConditionalDnDColumnContext.js +49 -18
  189. package/esm/parts/HoC/withConditionalDnDRowContext.js +16 -11
  190. package/esm/parts/HoC/withConditionalDnDSortableContext.js +22 -12
  191. package/esm/parts/HoC/withDnDSortableColumnContext.js +11 -20
  192. package/esm/parts/HoC/withDnDSortableRowContext.js +9 -18
  193. package/esm/parts/Row.js +13 -10
  194. package/esm/parts/RowLoading.js +11 -5
  195. package/esm/parts/RowVariants/RowVariantHeader.js +33 -20
  196. package/esm/parts/RowVariants/RowVariantPrimary.js +10 -9
  197. package/esm/parts/RowVariants/RowVariantSecondary.js +10 -9
  198. package/esm/parts/RowVariants/index.js +21 -12
  199. package/esm/parts/Rows.js +9 -2
  200. package/esm/parts/SortByCaret.js +16 -14
  201. package/esm/parts/SortableHeaderCell.js +5 -0
  202. package/esm/parts/TableContent.js +18 -8
  203. package/esm/parts/VirtualRowsList.js +12 -5
  204. package/esm/prop-types.js +5 -0
  205. package/esm/redux/reducers/headersReducers/logic.js +10 -4
  206. package/esm/styled.js +113 -97
  207. package/package.json +55 -108
  208. package/types/DataTable.d.ts +245 -43
  209. package/types/DataTableSchema.d.ts +245 -43
  210. package/types/addons/Filters/Components/CurrencyRangeFilter/index.d.ts +3 -0
  211. package/types/addons/Filters/Components/{TextInputFilter → DateSwitcherFilter}/index.d.ts +1 -1
  212. package/types/addons/Filters/Components/SelectFilter/BaseSelectFilter.d.ts +7 -1
  213. package/types/addons/Filters/Components/SelectFilter/components.d.ts +6 -6
  214. package/types/addons/Filters/Components/index.d.ts +2 -1
  215. package/types/configs/constants.d.ts +3 -3
  216. package/types/exported-related/FilterPopover.d.ts +1 -1
  217. package/types/exported-related/FilterTypes.d.ts +2 -1
  218. package/types/exported-related/Filters/currencyRangeFilterFn.d.ts +5 -0
  219. package/types/exported-related/Filters/dateSwitcherFilterFn.d.ts +6 -0
  220. package/types/exported-related/Filters/index.d.ts +1 -1
  221. package/types/exported-related/Filters/multiSelectFilterFn.d.ts +3 -1
  222. package/types/exported-related/Filters/singleDateFilterFn.d.ts +1 -1
  223. package/types/exported-related/Filters/singleSelectFilterFn.d.ts +3 -1
  224. package/types/exported-related/RowRenderer/useRowRendererHandlers.d.ts +1 -0
  225. package/types/exported-related/Toolbar/Toolbar.d.ts +2 -4
  226. package/types/helpers/refs-helpers.d.ts +1 -1
  227. package/types/parts/FilterBar/components/DateSwitcherPill.d.ts +6 -0
  228. package/types/parts/FilterBar/components/MultiSelectPill.d.ts +2 -2
  229. package/types/parts/FilterBar/components/SelectPill.d.ts +2 -2
  230. package/types/parts/FilterBar/components/index.d.ts +1 -1
  231. package/types/parts/FilterBar/styled.d.ts +167 -32
  232. package/types/parts/FilterBar/types.d.ts +10 -1
  233. package/types/parts/Headers/HeaderCellGroup.d.ts +4 -3
  234. package/types/parts/Row.d.ts +2 -1
  235. package/types/styled.d.ts +23 -21
  236. package/types/types/props.d.ts +14 -4
  237. package/cjs/addons/Filters/Components/TextInputFilter/index.js +0 -85
  238. package/cjs/addons/Pagination/ActiveZoneButtons.js +0 -63
  239. package/cjs/addons/Pagination/PagesButtons.js +0 -77
  240. package/cjs/addons/Pagination/PerPageSelector.js +0 -84
  241. package/cjs/exported-related/Filters/textFilterFn.js +0 -10
  242. package/cjs/helpers/dndkit/hierarchy/customCollisionDetection.js +0 -65
  243. package/cjs/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +0 -128
  244. package/cjs/helpers/dndkit/hierarchy/types.js +0 -2
  245. package/cjs/helpers/dndkit/hierarchy/useHierarchyActionHandlers.js +0 -54
  246. package/cjs/helpers/dndkit/hierarchy/useHierarchyAnnouncements.js +0 -36
  247. package/cjs/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +0 -92
  248. package/cjs/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.js +0 -76
  249. package/cjs/helpers/dndkit/tree/customCollisionDetection.js +0 -86
  250. package/cjs/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +0 -126
  251. package/cjs/helpers/dndkit/tree/types.js +0 -2
  252. package/cjs/helpers/dndkit/tree/useTreeActionHandlers.js +0 -74
  253. package/cjs/helpers/dndkit/tree/useTreeAnnouncements.js +0 -55
  254. package/cjs/helpers/dndkit/tree/useTreeDndkitConfig.js +0 -127
  255. package/cjs/helpers/dndkit/tree/useTreePreviewHandlers.js +0 -49
  256. package/cjs/helpers/dndkit/types.js +0 -2
  257. package/cjs/helpers/dndkit/utilities.js +0 -51
  258. package/cjs/package.json +0 -7
  259. package/cjs/parts/FilterBar/components/TextPill.js +0 -31
  260. package/cjs/parts/HoC/DragOverlayContext.js +0 -11
  261. package/esm/addons/Filters/Components/TextInputFilter/index.js +0 -76
  262. package/esm/addons/Pagination/ActiveZoneButtons.js +0 -57
  263. package/esm/addons/Pagination/PagesButtons.js +0 -69
  264. package/esm/addons/Pagination/PerPageSelector.js +0 -73
  265. package/esm/exported-related/Filters/textFilterFn.js +0 -6
  266. package/esm/helpers/dndkit/hierarchy/customCollisionDetection.js +0 -61
  267. package/esm/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +0 -120
  268. package/esm/helpers/dndkit/hierarchy/types.js +0 -1
  269. package/esm/helpers/dndkit/hierarchy/useHierarchyActionHandlers.js +0 -50
  270. package/esm/helpers/dndkit/hierarchy/useHierarchyAnnouncements.js +0 -32
  271. package/esm/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +0 -86
  272. package/esm/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.js +0 -72
  273. package/esm/helpers/dndkit/tree/customCollisionDetection.js +0 -82
  274. package/esm/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +0 -118
  275. package/esm/helpers/dndkit/tree/types.js +0 -1
  276. package/esm/helpers/dndkit/tree/useTreeActionHandlers.js +0 -70
  277. package/esm/helpers/dndkit/tree/useTreeAnnouncements.js +0 -51
  278. package/esm/helpers/dndkit/tree/useTreeDndkitConfig.js +0 -121
  279. package/esm/helpers/dndkit/tree/useTreePreviewHandlers.js +0 -45
  280. package/esm/helpers/dndkit/types.js +0 -1
  281. package/esm/helpers/dndkit/utilities.js +0 -46
  282. package/esm/package.json +0 -7
  283. package/esm/parts/FilterBar/components/TextPill.js +0 -23
  284. package/esm/parts/HoC/DragOverlayContext.js +0 -7
  285. package/types/addons/Pagination/ActiveZoneButtons.d.ts +0 -9
  286. package/types/addons/Pagination/PagesButtons.d.ts +0 -4
  287. package/types/addons/Pagination/PerPageSelector.d.ts +0 -8
  288. package/types/exported-related/Filters/textFilterFn.d.ts +0 -2
  289. package/types/helpers/dndkit/hierarchy/customCollisionDetection.d.ts +0 -3
  290. package/types/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.d.ts +0 -3
  291. package/types/helpers/dndkit/hierarchy/types.d.ts +0 -66
  292. package/types/helpers/dndkit/hierarchy/useHierarchyActionHandlers.d.ts +0 -2
  293. package/types/helpers/dndkit/hierarchy/useHierarchyAnnouncements.d.ts +0 -3
  294. package/types/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.d.ts +0 -3
  295. package/types/helpers/dndkit/hierarchy/useHierarchyPreviewHandlers.d.ts +0 -2
  296. package/types/helpers/dndkit/tree/customCollisionDetection.d.ts +0 -4
  297. package/types/helpers/dndkit/tree/getTreeKeyboardCoordinates.d.ts +0 -3
  298. package/types/helpers/dndkit/tree/types.d.ts +0 -83
  299. package/types/helpers/dndkit/tree/useTreeActionHandlers.d.ts +0 -2
  300. package/types/helpers/dndkit/tree/useTreeAnnouncements.d.ts +0 -4
  301. package/types/helpers/dndkit/tree/useTreeDndkitConfig.d.ts +0 -3
  302. package/types/helpers/dndkit/tree/useTreePreviewHandlers.d.ts +0 -2
  303. package/types/helpers/dndkit/types.d.ts +0 -20
  304. package/types/helpers/dndkit/utilities.d.ts +0 -7
  305. package/types/parts/FilterBar/components/TextPill.d.ts +0 -2
  306. package/types/parts/HoC/DragOverlayContext.d.ts +0 -6
@@ -0,0 +1,145 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('core-js/modules/web.dom-collections.iterator.js');
7
+ var React = require('react');
8
+ var dsIcons = require('@elliemae/ds-icons');
9
+ var Grid = require('@elliemae/ds-grid');
10
+ var dsControlledForm = require('@elliemae/ds-controlled-form');
11
+ var FilterPopover = require('../../../../exported-related/FilterPopover.js');
12
+ require('../../../../styled.js');
13
+ require('../../../../DataTableContext.js');
14
+ require('react/jsx-runtime');
15
+ require('styled-components');
16
+ require('@elliemae/ds-button');
17
+ require('@elliemae/ds-utilities');
18
+ var constants = require('../../../../configs/constants.js');
19
+ require('core-js/modules/esnext.async-iterator.filter.js');
20
+ require('core-js/modules/esnext.iterator.constructor.js');
21
+ require('core-js/modules/esnext.iterator.filter.js');
22
+ require('core-js/modules/esnext.async-iterator.reduce.js');
23
+ require('core-js/modules/esnext.iterator.reduce.js');
24
+ require('react-virtual');
25
+ require('core-js/modules/esnext.async-iterator.for-each.js');
26
+ require('core-js/modules/esnext.iterator.for-each.js');
27
+ require('../../../../configs/useRowFlattenization.js');
28
+ require('@babel/runtime/helpers/defineProperty');
29
+ require('core-js/modules/esnext.async-iterator.map.js');
30
+ require('core-js/modules/esnext.iterator.map.js');
31
+ require('@elliemae/ds-form');
32
+ require('../../../../parts/TableContent.js');
33
+ require('@elliemae/ds-circular-progress-indicator');
34
+ require('@elliemae/ds-system');
35
+ require('../../../../parts/Row.js');
36
+ require('../../../../parts/Footer.js');
37
+ require('../../../../parts/HoC/SortableItemContext.js');
38
+ require('uid');
39
+ var FilterTypes = require('../../../../exported-related/FilterTypes.js');
40
+ require('../../../../exported-related/Filters/applyOutOfTheBoxFilters.js');
41
+ require('moment');
42
+ require('core-js/modules/esnext.async-iterator.some.js');
43
+ require('core-js/modules/esnext.iterator.some.js');
44
+
45
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
46
+
47
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
48
+ var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
49
+
50
+ var _DatePicker;
51
+ const emptyFilterValue = {
52
+ startDate: null,
53
+ endDate: null
54
+ };
55
+ const DateSwitcherFilter = props => {
56
+ const {
57
+ column,
58
+ column: {
59
+ id
60
+ },
61
+ filterValue = emptyFilterValue,
62
+ onValueChange,
63
+ patchHeaderFilterButtonAndMenu,
64
+ reduxHeader,
65
+ innerRef
66
+ } = props;
67
+ const dateRange = filterValue;
68
+ const [startDate, setStartDate] = React.useState(dateRange.startDate || '');
69
+ const [endDate, setEndDate] = React.useState(dateRange.endDate || '');
70
+ const [isDateRange, setIsDateRange] = React.useState(false);
71
+ React.useEffect(() => {
72
+ setStartDate(dateRange.startDate || '');
73
+ setEndDate(dateRange.endDate || '');
74
+ }, [dateRange]);
75
+ React.useEffect(() => {
76
+ if (startDate && endDate && !startDate.includes('_') && !endDate.includes('_')) {
77
+ onValueChange(FilterTypes.FILTER_TYPES.DATE_SWITCHER, {
78
+ startDate,
79
+ endDate,
80
+ isDateRange
81
+ });
82
+ } // We are missing onValueChange on purpose, this is an internal function and won't cause any problems
83
+ // eslint-disable-next-line react-hooks/exhaustive-deps
84
+
85
+ }, [startDate, endDate, isDateRange]);
86
+ return /*#__PURE__*/_jsx__default["default"](FilterPopover.FilterPopover, {
87
+ reduxHeader: reduxHeader,
88
+ column: column,
89
+ columnId: id,
90
+ menuContent: /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
91
+ width: "260px",
92
+ "data-testid": constants.DATA_TESTID.DATA_TABLE_DATE_RANGE_CONTROLLER
93
+ }, void 0, /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
94
+ p: "xxs",
95
+ gutter: "xxs",
96
+ style: {
97
+ background: 'white'
98
+ }
99
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledCheckbox, {
100
+ checked: isDateRange,
101
+ name: "Date range",
102
+ label: "Date Range",
103
+ id: "date-range-switcher-id-internal",
104
+ onChange: () => {
105
+ setIsDateRange(!isDateRange);
106
+ setStartDate('');
107
+ setEndDate('');
108
+ },
109
+ autoFocus: true
110
+ }), isDateRange ? /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledDateRangePicker, {
111
+ fromDate: startDate,
112
+ onFromDateChange: setStartDate,
113
+ toDate: endDate,
114
+ onToDateChange: setEndDate,
115
+ type: "date-range-inputs"
116
+ }) : /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledDateTimePicker, {
117
+ date: startDate,
118
+ onDateChange: _date => {
119
+ setStartDate(_date);
120
+ setEndDate(_date);
121
+ },
122
+ type: "date-inputs"
123
+ })), /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
124
+ onKeyDown: e => e.code === 'Enter' && setTimeout(() => patchHeaderFilterButtonAndMenu(id, !!(dateRange.startDate || dateRange.endDate)), 0)
125
+ }, void 0, isDateRange ? /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledDateRangePicker, {
126
+ fromDate: startDate,
127
+ onFromDateChange: setStartDate,
128
+ toDate: endDate,
129
+ onToDateChange: setEndDate,
130
+ type: "date-range-picker-controller-only"
131
+ }) : /*#__PURE__*/_jsx__default["default"](dsControlledForm.DSControlledDateTimePicker, {
132
+ date: startDate,
133
+ onDateChange: _date => {
134
+ setStartDate(_date);
135
+ setEndDate(_date);
136
+ },
137
+ type: "date-picker-controller-only"
138
+ }))),
139
+ triggerIcon: _DatePicker || (_DatePicker = /*#__PURE__*/_jsx__default["default"](dsIcons.DatePicker2, {})),
140
+ innerRef: innerRef,
141
+ ariaLabel: "Open Date Range Filter"
142
+ });
143
+ };
144
+
145
+ exports.DateSwitcherFilter = DateSwitcherFilter;
@@ -2,53 +2,70 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
5
10
  var _jsx = require('@babel/runtime/helpers/jsx');
6
11
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
12
  require('react');
8
13
  var Grid = require('@elliemae/ds-grid');
9
- var DSTextBox = require('@elliemae/ds-form/TextBox');
10
- var SearchIcon = require('@elliemae/ds-icons/SearchXsmall');
14
+ var dsForm = require('@elliemae/ds-form');
15
+ var dsFormLayoutBlocks = require('@elliemae/ds-form-layout-blocks');
16
+ var dsIcons = require('@elliemae/ds-icons');
11
17
  var FilterPopover = require('../../../../exported-related/FilterPopover.js');
18
+ require('core-js/modules/web.dom-collections.iterator.js');
12
19
  require('../../../../styled.js');
13
20
  require('../../../../DataTableContext.js');
14
21
  require('react/jsx-runtime');
15
22
  require('styled-components');
16
23
  require('@elliemae/ds-button');
17
- require('@elliemae/ds-icons/MoreOptionsVert');
24
+ require('@elliemae/ds-utilities');
18
25
  var constants = require('../../../../configs/constants.js');
26
+ require('core-js/modules/esnext.async-iterator.reduce.js');
27
+ require('core-js/modules/esnext.iterator.reduce.js');
19
28
  require('react-virtual');
20
29
  require('../../../../configs/useRowFlattenization.js');
21
- require('@elliemae/ds-icons/ArrowShortReturn');
22
- require('@elliemae/ds-icons');
23
- require('@elliemae/ds-form/Checkbox');
24
- require('@elliemae/ds-form/Radio');
30
+ require('core-js/modules/esnext.async-iterator.map.js');
31
+ require('core-js/modules/esnext.iterator.map.js');
25
32
  require('../../../../parts/TableContent.js');
26
33
  require('@elliemae/ds-circular-progress-indicator');
27
- require('@elliemae/ds-icons/WarningTriangle');
28
34
  require('@elliemae/ds-system');
29
35
  require('../../../../parts/Row.js');
30
36
  require('../../../../parts/Footer.js');
31
- require('@elliemae/ds-icons/GripperVertical');
32
37
  require('../../../../parts/HoC/SortableItemContext.js');
33
38
  require('uid');
34
39
  var FilterTypes = require('../../../../exported-related/FilterTypes.js');
35
40
  require('../../../../exported-related/Filters/applyOutOfTheBoxFilters.js');
36
41
  require('moment');
42
+ require('core-js/modules/esnext.async-iterator.some.js');
43
+ require('core-js/modules/esnext.iterator.some.js');
44
+ require('../../../../redux/reducers/headersReducers/headersReducers.js');
45
+ var useDispatchHeadersActions = require('../../../../redux/reducers/headersReducers/useDispatchHeadersActions.js');
37
46
 
38
47
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
48
 
40
49
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
41
50
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
42
51
  var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
43
- var DSTextBox__default = /*#__PURE__*/_interopDefaultLegacy(DSTextBox);
44
- var SearchIcon__default = /*#__PURE__*/_interopDefaultLegacy(SearchIcon);
45
52
 
46
- var _Grid, _SearchIcon;
53
+ var _SearchXsmall;
47
54
 
48
55
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
49
56
 
50
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
57
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
58
+ const opts = {
59
+ prefix: '',
60
+ suffix: '',
61
+ allowDecimal: false,
62
+ includeThousandsSeparator: false,
63
+ requireDecimal: false,
64
+ allowNegative: true
65
+ };
51
66
  const NumberRangeFilter = props => {
67
+ var _filterValue$from, _filterValue$to, _column$ref$current$o, _column$ref, _column$ref$current;
68
+
52
69
  const {
53
70
  column,
54
71
  filterValue = {
@@ -61,51 +78,92 @@ const NumberRangeFilter = props => {
61
78
  } = props;
62
79
 
63
80
  const handleFromChange = e => {
64
- var _e$target;
65
-
66
- const from = e !== null && e !== void 0 && (_e$target = e.target) !== null && _e$target !== void 0 && _e$target.value ? parseInt(e.target.value, 10) : '';
81
+ const from = e.target.value !== '' ? parseInt(e.target.value, 10) : '';
67
82
 
68
83
  const nextValue = _objectSpread(_objectSpread({}, filterValue), {}, {
69
84
  from
70
85
  });
71
86
 
72
- onValueChange(FilterTypes.FILTER_TYPES.NUMBER_RANGE, nextValue);
87
+ onValueChange(FilterTypes.FILTER_TYPES.CURRENCY_RANGE, nextValue);
73
88
  };
74
89
 
75
90
  const handleToChange = e => {
76
- var _e$target2;
77
-
78
- const to = e !== null && e !== void 0 && (_e$target2 = e.target) !== null && _e$target2 !== void 0 && _e$target2.value ? parseInt(e.target.value, 10) : '';
91
+ const to = e.target.value !== '' ? parseInt(e.target.value, 10) : '';
79
92
 
80
93
  const nextValue = _objectSpread(_objectSpread({}, filterValue), {}, {
81
94
  to
82
95
  });
83
96
 
84
- onValueChange(FilterTypes.FILTER_TYPES.NUMBER_RANGE, nextValue);
97
+ onValueChange(FilterTypes.FILTER_TYPES.CURRENCY_RANGE, nextValue);
85
98
  };
86
99
 
87
- return /*#__PURE__*/_jsx__default['default'](FilterPopover.FilterPopover, {
100
+ const {
101
+ patchHeader
102
+ } = useDispatchHeadersActions.useDispatchHeadersActions(); // workaround to close menu with esc key since DSInputMask has stoppropagation on key down
103
+
104
+ const closePopover = e => {
105
+ if (e.code === 'Escape') {
106
+ patchHeader(column.id, {
107
+ hideFilterMenu: true,
108
+ hideFilterButton: false
109
+ });
110
+ innerRef.current.focus();
111
+ }
112
+ };
113
+
114
+ const idPreffix = 'datatable-number-range';
115
+ return /*#__PURE__*/_jsx__default["default"](FilterPopover.FilterPopover, {
88
116
  reduxHeader: reduxHeader,
89
117
  column: column,
90
118
  columnId: column.id,
91
- menuContent: /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
119
+ menuContent: /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
92
120
  "data-testid": constants.DATA_TESTID.DATA_TABLE_NUMBER_RANGE_CONTROLLER,
93
- gutter: "xxs",
94
- padding: "xs",
95
- cols: ['50px', 'auto', '50px']
96
- }, void 0, /*#__PURE__*/_jsx__default['default'](DSTextBox__default['default'], {
97
- value: `${(filterValue === null || filterValue === void 0 ? void 0 : filterValue.from) || ''}`,
121
+ gutter: "xxxs",
122
+ padding: "xxs",
123
+ cols: ['auto', 'auto'],
124
+ style: {
125
+ background: 'white'
126
+ }
127
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
128
+ label: "Low",
129
+ inputID: "".concat(idPreffix, "-low-").concat(column.id)
130
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSInputMask, {
131
+ containerProps: {
132
+ style: {
133
+ textAlign: 'right'
134
+ }
135
+ },
136
+ id: "".concat(idPreffix, "-low-").concat(column.id),
137
+ value: "".concat((_filterValue$from = filterValue === null || filterValue === void 0 ? void 0 : filterValue.from) !== null && _filterValue$from !== void 0 ? _filterValue$from : ''),
98
138
  onChange: handleFromChange,
99
- type: "number"
100
- }), _Grid || (_Grid = /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
101
- justifyItems: "center",
102
- alignItems: "center"
103
- }, void 0, "\u2014")), /*#__PURE__*/_jsx__default['default'](DSTextBox__default['default'], {
104
- value: `${(filterValue === null || filterValue === void 0 ? void 0 : filterValue.to) || ''}`,
139
+ placeholder: "0",
140
+ mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
141
+ autoFocus: true,
142
+ onKeyDown: e => {
143
+ closePopover(e);
144
+ }
145
+ })), /*#__PURE__*/_jsx__default["default"](dsFormLayoutBlocks.DSFormLayoutBlockItem, {
146
+ label: "High",
147
+ inputID: "".concat(idPreffix, "-high-").concat(column.id)
148
+ }, void 0, /*#__PURE__*/_jsx__default["default"](dsForm.DSInputMask, {
149
+ containerProps: {
150
+ style: {
151
+ textAlign: 'right'
152
+ }
153
+ },
154
+ id: "".concat(idPreffix, "-high-").concat(column.id),
155
+ value: "".concat((_filterValue$to = filterValue === null || filterValue === void 0 ? void 0 : filterValue.to) !== null && _filterValue$to !== void 0 ? _filterValue$to : ''),
105
156
  onChange: handleToChange,
106
- type: "number"
107
- })),
108
- triggerIcon: _SearchIcon || (_SearchIcon = /*#__PURE__*/_jsx__default['default'](SearchIcon__default['default'], {})),
157
+ placeholder: "0",
158
+ mask: number => dsForm.MASK_TYPES.NUMBER(opts)(number),
159
+ onKeyDown: e => {
160
+ closePopover(e);
161
+ }
162
+ }))),
163
+ triggerIcon: _SearchXsmall || (_SearchXsmall = /*#__PURE__*/_jsx__default["default"](dsIcons.SearchXsmall, {})),
164
+ customStyles: {
165
+ width: (_column$ref$current$o = (_column$ref = column.ref) === null || _column$ref === void 0 ? void 0 : (_column$ref$current = _column$ref.current) === null || _column$ref$current === void 0 ? void 0 : _column$ref$current.offsetWidth) !== null && _column$ref$current$o !== void 0 ? _column$ref$current$o : '0px'
166
+ },
109
167
  innerRef: innerRef,
110
168
  ariaLabel: "Open Number Range Filter"
111
169
  });
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
+ require('core-js/modules/esnext.async-iterator.map.js');
7
+ require('core-js/modules/esnext.iterator.map.js');
8
+ require('core-js/modules/web.dom-collections.iterator.js');
7
9
  require('core-js/modules/esnext.set.add-all.js');
8
10
  require('core-js/modules/esnext.set.delete-all.js');
9
11
  require('core-js/modules/esnext.set.difference.js');
@@ -20,53 +22,56 @@ require('core-js/modules/esnext.set.reduce.js');
20
22
  require('core-js/modules/esnext.set.some.js');
21
23
  require('core-js/modules/esnext.set.symmetric-difference.js');
22
24
  require('core-js/modules/esnext.set.union.js');
25
+ require('core-js/modules/esnext.async-iterator.find.js');
26
+ require('core-js/modules/esnext.iterator.constructor.js');
27
+ require('core-js/modules/esnext.iterator.find.js');
28
+ require('core-js/modules/esnext.async-iterator.filter.js');
29
+ require('core-js/modules/esnext.iterator.filter.js');
23
30
  var React = require('react');
24
- var reactVirtual = require('react-virtual');
25
- var SearchIcon = require('@elliemae/ds-icons/SearchXsmall');
26
- var DSCheckbox = require('@elliemae/ds-form/Checkbox');
27
- var components = require('./components.js');
31
+ var Grid = require('@elliemae/ds-grid');
32
+ var ComboBox = require('@elliemae/ds-form/ComboBox');
33
+ var dsIcons = require('@elliemae/ds-icons');
28
34
  var FilterPopover = require('../../../../exported-related/FilterPopover.js');
29
35
  require('../../../../styled.js');
30
36
  require('../../../../DataTableContext.js');
31
- var jsxRuntime = require('react/jsx-runtime');
37
+ require('react/jsx-runtime');
32
38
  require('styled-components');
33
39
  require('@elliemae/ds-button');
34
- require('@elliemae/ds-icons/MoreOptionsVert');
40
+ require('@elliemae/ds-utilities');
35
41
  var constants = require('../../../../configs/constants.js');
42
+ require('core-js/modules/esnext.async-iterator.reduce.js');
43
+ require('core-js/modules/esnext.iterator.reduce.js');
44
+ require('react-virtual');
45
+ require('core-js/modules/esnext.async-iterator.for-each.js');
46
+ require('core-js/modules/esnext.iterator.for-each.js');
36
47
  require('../../../../configs/useRowFlattenization.js');
37
48
  require('@babel/runtime/helpers/defineProperty');
38
- require('@elliemae/ds-icons/ArrowShortReturn');
39
- require('@elliemae/ds-icons');
40
- require('@elliemae/ds-form/Radio');
49
+ require('@elliemae/ds-form');
41
50
  require('../../../../parts/TableContent.js');
42
- require('@elliemae/ds-grid');
43
51
  require('@elliemae/ds-circular-progress-indicator');
44
- require('@elliemae/ds-icons/WarningTriangle');
45
52
  require('@elliemae/ds-system');
46
53
  require('../../../../parts/Row.js');
47
54
  require('../../../../parts/Footer.js');
48
- require('@elliemae/ds-icons/GripperVertical');
49
55
  require('../../../../parts/HoC/SortableItemContext.js');
50
56
  require('uid');
51
57
  require('../../../../exported-related/Filters/applyOutOfTheBoxFilters.js');
52
58
  require('moment');
53
- var useSelectFilterHandlers = require('./useSelectFilterHandlers.js');
59
+ require('core-js/modules/esnext.async-iterator.some.js');
60
+ require('core-js/modules/esnext.iterator.some.js');
54
61
 
55
62
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
56
63
 
57
64
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
58
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
59
- var SearchIcon__default = /*#__PURE__*/_interopDefaultLegacy(SearchIcon);
60
- var DSCheckbox__default = /*#__PURE__*/_interopDefaultLegacy(DSCheckbox);
61
65
 
62
- var _SearchIcon;
63
-
64
- const _excluded = ["isMulti", "selectedItems", "column", "column", "ctx", "reduxHeader", "innerRef"];
66
+ var _SearchXsmall;
65
67
  const BaseSelectFilter = props => {
68
+ var _column$ref$current$o, _column$ref, _column$ref$current;
69
+
66
70
  const {
67
71
  isMulti = false,
68
- selectedItems = [],
72
+ selectedItems,
69
73
  column,
74
+ type,
70
75
  column: {
71
76
  id,
72
77
  filterOptions: userFilterOptions
@@ -77,92 +82,84 @@ const BaseSelectFilter = props => {
77
82
  }
78
83
  },
79
84
  reduxHeader,
80
- innerRef
81
- } = props,
82
- rest = _objectWithoutProperties__default['default'](props, _excluded);
83
-
85
+ innerRef,
86
+ onValueChange
87
+ } = props;
84
88
  const filterOptions = React.useMemo(() => {
85
89
  // If the user didn't provide options, use the available ones
86
- if (!userFilterOptions) return [...new Set(data.map(datum => datum[id].toString()))]; // If user provided the array itself, use it
90
+ if (!userFilterOptions) {
91
+ const automaticFilters = [...new Set(data.map(datum => datum[id].toString()))].map(item => ({
92
+ type: 'option',
93
+ dsId: item,
94
+ value: item,
95
+ label: item
96
+ }));
97
+ return automaticFilters;
98
+ } // If user provided the array itself, use it
99
+
87
100
 
88
101
  if (Array.isArray(userFilterOptions)) return userFilterOptions; // Otherwise, it is a function
89
102
 
90
103
  return userFilterOptions();
91
104
  }, [data, id, userFilterOptions]);
92
- const inputRef = React.useRef(null);
93
- const [inputValue, setInputValue] = React.useState('');
94
- const [filteredOptions, setFilteredOptions] = React.useState(filterOptions);
95
- const virtualListRef = React.useRef();
96
- const virtualListHelpers = reactVirtual.useVirtual({
97
- size: filteredOptions.length,
98
- parentRef: virtualListRef,
99
- overscan: 15
100
- });
101
- const {
102
- virtualItems,
103
- totalSize
104
- } = virtualListHelpers;
105
- const handleInputChange = React.useCallback(e => setInputValue(e.target.value), [setInputValue]);
105
+
106
+ const handleOnChange = value => {
107
+ if (isMulti) {
108
+ const multiSelectedItem = selectedItems;
109
+ const isFound = multiSelectedItem.find(item => item.dsId === value.dsId);
110
+
111
+ if (isFound) {
112
+ onValueChange(type, multiSelectedItem.filter(item => item.dsId !== value.dsId));
113
+ } else {
114
+ onValueChange(type, [...multiSelectedItem, value]);
115
+ }
116
+ } else {
117
+ const singleSelectedItem = selectedItems;
118
+ onValueChange(type, (singleSelectedItem === null || singleSelectedItem === void 0 ? void 0 : singleSelectedItem.dsId) !== value.dsId ? value : null);
119
+ }
120
+ };
121
+
122
+ const [filters, setFilteredOptions] = React.useState(filterOptions);
106
123
  React.useEffect(() => {
107
- const filtered = filterOptions.filter(opt => opt.toLowerCase().includes(inputValue.toLowerCase()));
108
- setFilteredOptions(filtered);
109
- }, [inputValue, filterOptions]);
110
- const {
111
- onInputWrapperKeyDown,
112
- onMenuItemClick,
113
- onMenuItemKeyDown
114
- } = useSelectFilterHandlers.useSelectFilterHandlers(props);
115
-
116
- const Select = /*#__PURE__*/_jsx__default['default'](components.Wrapper, {
117
- "data-testid": rest['data-testid']
118
- }, void 0, /*#__PURE__*/_jsx__default['default'](components.InputWrapper, {}, void 0, /*#__PURE__*/jsxRuntime.jsx(components.Input, {
119
- value: inputValue,
120
- onChange: handleInputChange,
124
+ setFilteredOptions(filterOptions);
125
+ }, [filterOptions]);
126
+ const filteredOptions = React.useCallback(filter => filterOptions.filter(option => option.type === 'separator' || option.label.toLowerCase().includes(filter.toLowerCase())), [filterOptions]);
127
+ const handleOnFilter = React.useCallback(newFilter => {
128
+ setFilteredOptions(filteredOptions(newFilter));
129
+ }, [filteredOptions]);
130
+
131
+ const Select = /*#__PURE__*/_jsx__default["default"](Grid.Grid, {
132
+ "data-testid": isMulti ? constants.DATA_TESTID.DATA_TABLE_MULTISELECT_CONTROLLER : constants.DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER,
133
+ style: {
134
+ background: '#fff',
135
+ position: 'relative'
136
+ }
137
+ }, void 0, /*#__PURE__*/_jsx__default["default"](ComboBox.DSComboBox, {
138
+ inline: true,
121
139
  autoFocus: true,
122
- onKeyDown: onInputWrapperKeyDown,
123
- ref: inputRef
124
- })), /*#__PURE__*/jsxRuntime.jsx(components.VirtualListWrapper, {
125
- ref: virtualListRef,
126
- children: /*#__PURE__*/_jsx__default['default'](components.MenuList, {
127
- style: {
128
- height: `${totalSize}px`
129
- }
130
- }, void 0, virtualItems.map((virtualItem, virtualIndex) => {
131
- const {
132
- index,
133
- measureRef,
134
- start
135
- } = virtualItem;
136
- const option = filteredOptions[index];
137
- return /*#__PURE__*/jsxRuntime.jsxs(components.MenuItem, {
138
- onClick: onMenuItemClick(option),
139
- style: {
140
- top: `${start}px`,
141
- outline: 'none'
142
- },
143
- ref: measureRef,
144
- tabIndex: -1,
145
- "data-testid": constants.DATA_TESTID.DATA_TABLE_SELECT_MENU_ITEM,
146
- onKeyDown: onMenuItemKeyDown(option, index, virtualIndex, inputRef, innerRef),
147
- children: [isMulti && /*#__PURE__*/_jsx__default['default'](DSCheckbox__default['default'], {
148
- style: {
149
- marginRight: '10px'
150
- },
151
- checked: selectedItems.includes(option),
152
- onChange: onMenuItemKeyDown(option, index, virtualIndex, inputRef, innerRef)
153
- }), option]
154
- }, option);
155
- }))
140
+ options: filters,
141
+ onChange: handleOnChange,
142
+ selectedValues: selectedItems,
143
+ onFilter: handleOnFilter,
144
+ menuMaxHeight: 300
156
145
  }));
157
146
 
158
- return /*#__PURE__*/_jsx__default['default'](FilterPopover.FilterPopover, {
147
+ const handleOnClickOutside = () => {
148
+ setFilteredOptions(filteredOptions(''));
149
+ };
150
+
151
+ return /*#__PURE__*/_jsx__default["default"](FilterPopover.FilterPopover, {
159
152
  reduxHeader: reduxHeader,
160
153
  column: column,
161
154
  columnId: column.id,
162
155
  menuContent: Select,
163
- triggerIcon: _SearchIcon || (_SearchIcon = /*#__PURE__*/_jsx__default['default'](SearchIcon__default['default'], {})),
156
+ triggerIcon: _SearchXsmall || (_SearchXsmall = /*#__PURE__*/_jsx__default["default"](dsIcons.SearchXsmall, {})),
164
157
  innerRef: innerRef,
165
- ariaLabel: "Open Selection Filter"
158
+ ariaLabel: "Open Selection Filter",
159
+ onClickOutsideMenu: handleOnClickOutside,
160
+ customStyles: {
161
+ width: (_column$ref$current$o = (_column$ref = column.ref) === null || _column$ref === void 0 ? void 0 : (_column$ref$current = _column$ref.current) === null || _column$ref$current === void 0 ? void 0 : _column$ref$current.offsetWidth) !== null && _column$ref$current$o !== void 0 ? _column$ref$current$o : '0px'
162
+ }
166
163
  });
167
164
  };
168
165