@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
@@ -1,47 +1,25 @@
1
- import _jsx from '@babel/runtime/helpers/esm/jsx';
1
+ import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
+ import 'core-js/modules/esnext.async-iterator.map.js';
3
+ import 'core-js/modules/esnext.iterator.map.js';
4
+ import 'core-js/modules/esnext.async-iterator.filter.js';
5
+ import 'core-js/modules/esnext.iterator.constructor.js';
6
+ import 'core-js/modules/esnext.iterator.filter.js';
7
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
8
+ import 'core-js/modules/esnext.iterator.for-each.js';
2
9
  import { useContext, useMemo, useEffect } from 'react';
3
- import { PaginationContainer, PaginationWrapper } from '../../styled.js';
10
+ import { DSPagination } from '@elliemae/ds-pagination';
4
11
  import DataTableContext from '../../DataTableContext.js';
5
- import PerPageSelector from './PerPageSelector.js';
6
- import PagesButtons from './PagesButtons.js';
7
- import { DATA_TESTID } from '../../configs/constants.js';
8
- import 'react-virtual';
9
- import '../../configs/useRowFlattenization.js';
10
- import '@babel/runtime/helpers/esm/defineProperty';
11
- import '@elliemae/ds-icons/ArrowShortReturn';
12
- import 'styled-components';
13
- import '@elliemae/ds-icons';
14
- import 'react/jsx-runtime';
15
- import '@elliemae/ds-form/Checkbox';
16
- import '@elliemae/ds-form/Radio';
17
- import '../../parts/TableContent.js';
18
- import '@elliemae/ds-grid';
19
- import '@elliemae/ds-circular-progress-indicator';
20
- import '@elliemae/ds-icons/WarningTriangle';
21
- import '@elliemae/ds-system';
22
- import '@elliemae/ds-button';
23
- import '../../parts/Row.js';
24
- import '../../parts/Footer.js';
25
- import '@elliemae/ds-icons/GripperVertical';
26
- import '../../parts/HoC/SortableItemContext.js';
12
+ import { jsx } from 'react/jsx-runtime';
27
13
 
14
+ 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; }
15
+
16
+ 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(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; }
28
17
  const Pagination = () => {
29
18
  const {
30
19
  tableProps: {
31
- pagination,
32
20
  onPageChanged
33
21
  },
34
- paginationHelpers: {
35
- pageIndex,
36
- pageSize,
37
- canPreviousPage,
38
- canNextPage,
39
- onPageSizeChange,
40
- onNextPage,
41
- onPreviousPage,
42
- onPageChange,
43
- pageCount
44
- },
22
+ paginationHelpers,
45
23
  flattenedData: page,
46
24
  layoutHelpers: {
47
25
  totalColumnsWidth
@@ -51,22 +29,9 @@ const Pagination = () => {
51
29
  useEffect(() => {
52
30
  onPageChanged(originalPage);
53
31
  }, [onPageChanged, originalPage]);
54
- return /*#__PURE__*/_jsx(PaginationContainer, {
55
- width: totalColumnsWidth,
56
- "data-testid": DATA_TESTID.DATA_TABLE_PAGINATION_CONTAINER
57
- }, void 0, /*#__PURE__*/_jsx(PaginationWrapper, {}, void 0, /*#__PURE__*/_jsx(PerPageSelector, {
58
- pagination: pagination,
59
- pageSize: pageSize,
60
- setPageSize: onPageSizeChange
61
- }), /*#__PURE__*/_jsx(PagesButtons, {
62
- canPreviousPage: canPreviousPage,
63
- canNextPage: canNextPage,
64
- pageCount: pageCount,
65
- pageIndex: pageIndex,
66
- onNextPage: onNextPage,
67
- onPreviousPage: onPreviousPage,
68
- onPageChange: onPageChange
69
- })));
32
+ return /*#__PURE__*/jsx(DSPagination, _objectSpread(_objectSpread({}, paginationHelpers), {}, {
33
+ width: totalColumnsWidth
34
+ }));
70
35
  };
71
36
 
72
37
  export { Pagination };
@@ -19,12 +19,10 @@ const DATA_TESTID = {
19
19
  DATA_TABLE_DATE_RANGE_CONTROLLER: 'data-table-date-range',
20
20
  DATA_TABLE_SINGLE_DATE_CONTROLLER: 'data-table-single-date',
21
21
  DATA_TABLE_NUMBER_RANGE_CONTROLLER: 'data-table-number-range',
22
+ DATA_TABLE_CURRENCY_RANGE_CONTROLLER: 'data-table-currency-range',
22
23
  DATA_TABLE_SELECT_MENU_ITEM: 'data-table-filter-menu-list-item',
23
24
  DATA_TABLE_MULTISELECT_CONTROLLER: 'data-table-multi-select',
24
25
  DATA_TABLE_SINGLESELECT_CONTROLLER: 'data-table-single-select',
25
- DATA_TABLE_PAGINATION_PREVIOUS_BUTTON: 'data-table-pagination-prev-button',
26
- DATA_TABLE_PAGINATION_NEXT_BUTTON: 'data-table-pagination-next-button',
27
- DATA_TABLE_PAGINATION_CONTAINER: 'data-table-pagination-container',
28
26
  DATA_TABLE_FILTER_BUTTON: 'data-table-filter-menu-button',
29
27
  DATA_TABLE_FILTER_MENU_CONTENT: 'data-table-filter-menu-content',
30
28
  DATA_TABLE_ROW_CONTENT: 'data-table-row-content',
@@ -38,7 +36,9 @@ const DATA_TESTID = {
38
36
  DATA_TABLE_HEADER: 'data-table-header',
39
37
  DATA_TABLE_ROW_HEADER_CONTENT: 'data-table-row-header-content',
40
38
  DATA_TABLE_ROW_GROUP_HEADER: 'data-table-row-group-header',
41
- DATA_TABLE_COLUMN_DRAG_OVERLAY: 'data-table-drag-column-drag-overlay'
39
+ DATA_TABLE_COLUMN_DRAG_OVERLAY: 'data-table-drag-column-drag-overlay',
40
+ DATA_TABLE_HEADER_CELL_TITLE: 'header-cell-title',
41
+ DATA_TABLE_FILTER_BAR_DD_MENU_BUTTON: 'filter-bar-ddmenu-button'
42
42
  };
43
43
 
44
44
  export { ColsLayoutStyle, DATA_TESTID, momentFormat };
@@ -1,5 +1,5 @@
1
1
  const FIXED_SIZES = {
2
- PAGINATION_HEIGHT: 50
2
+ PAGINATION_HEIGHT: 42
3
3
  };
4
4
 
5
5
  export { FIXED_SIZES };
@@ -1,3 +1,9 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/web.dom-collections.iterator.js';
5
+ import 'core-js/modules/esnext.async-iterator.reduce.js';
6
+ import 'core-js/modules/esnext.iterator.reduce.js';
1
7
  import { useRef, useMemo, useState, useEffect } from 'react';
2
8
  import { useVirtual } from 'react-virtual';
3
9
  import { columnsToGrid } from '../helpers/columnsToGrid.js';
@@ -7,7 +13,7 @@ import useTableColsWithAddons from './useTableColsWithAddons.js';
7
13
  import { ColsLayoutStyle } from './constants.js';
8
14
 
9
15
  const useDatatableConfig = props => {
10
- var _columnHeaderRef$curr, _columnHeaderRef$curr2;
16
+ var _columnHeaderRef$curr, _columnHeaderRef$curr2, _columnHeaderRef$curr3;
11
17
 
12
18
  const virtualListRef = useRef(null);
13
19
  const columnHeaderRef = useRef(null); // ===========================================================================
@@ -26,7 +32,7 @@ const useDatatableConfig = props => {
26
32
  size: dataLength,
27
33
  parentRef: virtualListRef,
28
34
  overscan: 15,
29
- paddingStart: ((_columnHeaderRef$curr = columnHeaderRef.current) === null || _columnHeaderRef$curr === void 0 ? void 0 : (_columnHeaderRef$curr2 = _columnHeaderRef$curr.getBoundingClientRect()) === null || _columnHeaderRef$curr2 === void 0 ? void 0 : _columnHeaderRef$curr2.height) ?? 24
35
+ paddingStart: (_columnHeaderRef$curr = (_columnHeaderRef$curr2 = columnHeaderRef.current) === null || _columnHeaderRef$curr2 === void 0 ? void 0 : (_columnHeaderRef$curr3 = _columnHeaderRef$curr2.getBoundingClientRect()) === null || _columnHeaderRef$curr3 === void 0 ? void 0 : _columnHeaderRef$curr3.height) !== null && _columnHeaderRef$curr !== void 0 ? _columnHeaderRef$curr : 24
30
36
  }); // ===========================================================================
31
37
  // Action ref setup
32
38
  // ===========================================================================
@@ -20,10 +20,13 @@ const usePaginationConfig = (props, flattenedData) => {
20
20
  onPreviousPage = emptyFunc,
21
21
  onNextPage = emptyFunc,
22
22
  onPageChange = emptyFunc,
23
- pageCount = Math.floor(flattenedData.length / pageSize),
23
+ pageCount = Math.ceil(flattenedData.length / pageSize),
24
24
  perPageStep = 5,
25
25
  minPerPage = 0,
26
- maxPerPage = 100
26
+ maxPerPage = 100,
27
+ showPerPageSelector = true,
28
+ pageDetails = [],
29
+ pageDetailsTitle = ''
27
30
  } = pagination || noPagination; // pagination can be false
28
31
  // Get the needed page
29
32
 
@@ -44,8 +47,11 @@ const usePaginationConfig = (props, flattenedData) => {
44
47
  pageCount,
45
48
  perPageStep,
46
49
  minPerPage,
47
- maxPerPage
48
- }), [pageIndex, canPreviousPage, canNextPage, pageSize, perPageOptions, onPageSizeChange, onPreviousPage, onNextPage, onPageChange, pageCount, perPageStep, minPerPage, maxPerPage]);
50
+ maxPerPage,
51
+ showPerPageSelector,
52
+ pageDetails,
53
+ pageDetailsTitle
54
+ }), [pageIndex, canPreviousPage, canNextPage, pageSize, perPageOptions, onPageSizeChange, onPreviousPage, onNextPage, onPageChange, pageCount, perPageStep, minPerPage, maxPerPage, showPerPageSelector, pageDetails, pageDetailsTitle]);
49
55
  return [page, paginationHelpers];
50
56
  };
51
57
 
@@ -1,20 +1,27 @@
1
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
4
  import { useMemo } from 'react';
2
5
  import { getIdFromUniqueRowAccessor } from '../helpers/getIdFromUniqueRowAccessor.js';
3
6
 
4
- /* eslint-disable max-params */
5
7
  const emptyObject = {};
6
8
  const trueReturner = new Proxy({}, {
7
9
  get: () => true
8
10
  });
9
11
 
10
- const flatten = (data, expandedRows, uniqueRowAccessor, maxDepth = 0) => {
12
+ const flatten = function (data, expandedRows, uniqueRowAccessor) {
13
+ let maxDepth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
11
14
  const result = [];
12
15
 
13
- const doit = (row, index = 0, parentId = null, parentIndex = null, depth = 0) => {
14
- const id = (parentId ? `${parentId}.` : '') + index.toString();
16
+ const doit = function (row) {
17
+ let index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
18
+ let parentId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
19
+ let parentIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
20
+ let depth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
21
+ const id = (parentId ? "".concat(parentId, ".") : '') + index.toString();
15
22
  const uid = getIdFromUniqueRowAccessor(uniqueRowAccessor, {
16
23
  id,
17
- original: row
24
+ original: row !== null && row !== void 0 ? row : {}
18
25
  });
19
26
  const isExpanded = expandedRows[uid];
20
27
  const rowToPush = {
@@ -26,11 +33,11 @@ const flatten = (data, expandedRows, uniqueRowAccessor, maxDepth = 0) => {
26
33
  parentIndex,
27
34
  depth,
28
35
  isExpanded,
29
- original: row
36
+ original: row !== null && row !== void 0 ? row : {}
30
37
  };
31
38
  result.push(rowToPush); // If we have subrows and we are expanded
32
39
 
33
- if (row.subRows && expandedRows[uid] && depth <= maxDepth) {
40
+ if (row !== null && row !== void 0 && row.subRows && expandedRows[uid] && depth <= maxDepth) {
34
41
  row.subRows.forEach((subRow, i) => doit(subRow, i, uid, rowToPush.realIndex, depth + 1));
35
42
  }
36
43
  };
@@ -1,5 +1,13 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
6
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import { useMemo } from 'react';
7
+ import 'core-js/modules/esnext.async-iterator.map.js';
8
+ import 'core-js/modules/esnext.iterator.map.js';
9
+ import 'core-js/modules/web.dom-collections.iterator.js';
10
+ import { useMemo, createRef } from 'react';
3
11
  import { actionColumn } from '../addons/Columns/ColumnAction/ColumnAction.js';
4
12
  import { expandRowColumn } from '../addons/Columns/ColumnExpand/ColumnExpand.js';
5
13
  import { multiSelectColumn } from '../addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js';
@@ -11,36 +19,43 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
11
19
  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(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; }
12
20
 
13
21
  const augmentColumns = columns => {
14
- const augmentColumn = (column, index, parentId = null, depth = 0) => {
15
- let id = `column${index}`;
22
+ const augmentColumn = function (column, index) {
23
+ let parentId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
24
+ let depth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
25
+ let id = "column".concat(index);
16
26
  if (typeof column.Header === 'string') id = column.Header;
17
27
  if (typeof column.accessor === 'string') id = column.accessor;
18
28
  if (column.columns) column.columns = column.columns.map((col, i) => augmentColumn(col, i, id, depth + 1));
19
- return _objectSpread({
29
+ return _objectSpread(_objectSpread({
20
30
  id,
21
31
  parentId,
22
32
  depth
23
- }, column);
33
+ }, column), {}, {
34
+ ref: /*#__PURE__*/createRef()
35
+ });
24
36
  };
25
37
 
26
38
  return columns.map((col, index) => augmentColumn(col, index));
27
39
  };
28
40
 
29
- const useTableColsWithAddons = ({
30
- columns,
31
- renderRowActions,
32
- isExpandable,
33
- selectSingle,
34
- selection,
35
- dragAndDropRows,
36
- noSelectionColumn
37
- }) => useMemo(() => {
38
- const columnsWithAddons = [...augmentColumns(columns)];
39
- if (isExpandable) columnsWithAddons.unshift(expandRowColumn);
40
- if (selection && !noSelectionColumn) if (selectSingle) columnsWithAddons.unshift(singleSelectColumn);else columnsWithAddons.unshift(multiSelectColumn);
41
- if (dragAndDropRows) columnsWithAddons.unshift(dragHandleColumn);
42
- if (renderRowActions) columnsWithAddons.push(actionColumn(renderRowActions));
43
- return columnsWithAddons;
44
- }, [columns, isExpandable, selection, noSelectionColumn, selectSingle, dragAndDropRows, renderRowActions]);
41
+ const useTableColsWithAddons = _ref => {
42
+ let {
43
+ columns,
44
+ renderRowActions,
45
+ isExpandable,
46
+ selectSingle,
47
+ selection,
48
+ dragAndDropRows,
49
+ noSelectionColumn
50
+ } = _ref;
51
+ return useMemo(() => {
52
+ const columnsWithAddons = [...augmentColumns(columns)];
53
+ if (isExpandable) columnsWithAddons.unshift(expandRowColumn);
54
+ if (selection && !noSelectionColumn) if (selectSingle) columnsWithAddons.unshift(singleSelectColumn);else columnsWithAddons.unshift(multiSelectColumn);
55
+ if (dragAndDropRows) columnsWithAddons.unshift(dragHandleColumn);
56
+ if (renderRowActions) columnsWithAddons.push(actionColumn(renderRowActions));
57
+ return columnsWithAddons;
58
+ }, [columns, isExpandable, selection, noSelectionColumn, selectSingle, dragAndDropRows, renderRowActions]);
59
+ };
45
60
 
46
61
  export { useTableColsWithAddons as default };
@@ -1,4 +1,5 @@
1
1
  import _jsx from '@babel/runtime/helpers/esm/jsx';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
3
  import { useContext, useState, useLayoutEffect, useCallback } from 'react';
3
4
  import { StyledEditableContainer, StyledPencilIcon } from '../styled.js';
4
5
  import DataTableContext from '../DataTableContext.js';
@@ -10,7 +11,8 @@ const EditableCell = props => {
10
11
  StandardRender,
11
12
  EditableRenderer,
12
13
  cell,
13
- isRowSelected
14
+ isRowSelected,
15
+ setValue
14
16
  } = props;
15
17
  const {
16
18
  virtualListHelpers
@@ -32,27 +34,40 @@ const EditableCell = props => {
32
34
  }
33
35
  }, [isEditing]);
34
36
  const handleOnKeyDown = useCallback(e => {
35
- if (isEditing) e.stopPropagation();
37
+ if (isEditing) {
38
+ e.stopPropagation();
36
39
 
37
- if (['Enter', 'Space'].includes(e.code)) {
40
+ if (['Enter', 'Escape'].includes(e.code)) {
41
+ setIsEditing(false);
42
+ }
43
+ } else if (['Enter', 'Space'].includes(e.code)) {
38
44
  handleCellClick(e);
39
45
  }
40
- }, [isEditing, handleCellClick]);
46
+ }, [isEditing, handleCellClick, setIsEditing]);
41
47
  const handleOnBlur = useCallback(event => {
42
48
  if (isEditing && !event.currentTarget.contains(event.relatedTarget)) {
43
49
  // Not triggered when swapping focus between children
44
50
  setIsEditing(false);
45
51
  }
46
52
  }, [isEditing]);
53
+ const cols = !isEditing ? ['auto', 'min-content'] : ['auto'];
47
54
  return /*#__PURE__*/jsxs(StyledEditableContainer, {
48
- cols: !isEditing ? ['auto', 'min-content'] : ['auto'],
55
+ cols: cols,
49
56
  tabIndex: isRowSelected && !isEditing ? 0 : -1,
50
57
  ref: cell.ref,
51
58
  onClick: handleCellClick,
52
59
  onKeyDown: handleOnKeyDown,
53
60
  onBlur: handleOnBlur,
54
61
  shouldDisplayEditIcon: cell.column.alwaysDisplayEditIcon,
55
- children: [!isEditing ? StandardRender : EditableRenderer, !isEditing && (_StyledPencilIcon || (_StyledPencilIcon = /*#__PURE__*/_jsx(StyledPencilIcon, {})))]
62
+ role: "cell",
63
+ "aria-labelledby": isEditing ? undefined : cell.id,
64
+ children: [!isEditing ? StandardRender : EditableRenderer, !isEditing && (_StyledPencilIcon || (_StyledPencilIcon = /*#__PURE__*/_jsx(StyledPencilIcon, {}))), /*#__PURE__*/_jsx("span", {
65
+ id: cell.id,
66
+ style: {
67
+ display: 'none'
68
+ },
69
+ "aria-hidden": "true"
70
+ }, void 0, cell.value, ", editable cell. To edit the content's of this cell, press the Enter key")]
56
71
  });
57
72
  };
58
73
 
@@ -1,29 +1,34 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
5
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
6
  import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
7
  import _jsx from '@babel/runtime/helpers/esm/jsx';
3
- import { useMemo, useState, useRef, useCallback } from 'react';
4
- import { usePopper } from 'react-popper';
8
+ import 'core-js/modules/web.dom-collections.iterator.js';
9
+ import { useRef, useState } from 'react';
5
10
  import DSButton from '@elliemae/ds-button';
11
+ import { DSPopperJS } from '@elliemae/ds-popperjs';
6
12
  import styled from 'styled-components';
7
- import { useOnClickOutside } from '@elliemae/ds-utilities/hooks';
8
13
  import '../redux/reducers/index.js';
9
14
  import { DATA_TESTID } from '../configs/constants.js';
15
+ import 'core-js/modules/esnext.async-iterator.reduce.js';
16
+ import 'core-js/modules/esnext.iterator.reduce.js';
10
17
  import 'react-virtual';
11
18
  import '../configs/useRowFlattenization.js';
12
- import '@elliemae/ds-icons/ArrowShortReturn';
19
+ import 'core-js/modules/esnext.async-iterator.map.js';
20
+ import 'core-js/modules/esnext.iterator.map.js';
13
21
  import '@elliemae/ds-icons';
14
22
  import '../styled.js';
15
23
  import { jsx } from 'react/jsx-runtime';
16
- import '@elliemae/ds-form/Checkbox';
17
- import '@elliemae/ds-form/Radio';
24
+ import '@elliemae/ds-form';
18
25
  import '../parts/TableContent.js';
19
26
  import '@elliemae/ds-grid';
20
27
  import '@elliemae/ds-circular-progress-indicator';
21
- import '@elliemae/ds-icons/WarningTriangle';
22
28
  import '@elliemae/ds-system';
23
29
  import '../DataTableContext.js';
24
30
  import '../parts/Row.js';
25
31
  import '../parts/Footer.js';
26
- import '@elliemae/ds-icons/GripperVertical';
27
32
  import '../parts/HoC/SortableItemContext.js';
28
33
  import { useDispatchHeadersActions } from '../redux/reducers/headersReducers/useDispatchHeadersActions.js';
29
34
 
@@ -36,18 +41,24 @@ const FilterButton = /*#__PURE__*/styled.span.withConfig({
36
41
  const Button = /*#__PURE__*/styled(DSButton).withConfig({
37
42
  componentId: "sc-16i88ut-1"
38
43
  })(["position:relative;justify-self:flex-end;"]);
39
- const FilterPopover = ({
40
- column,
41
- columnId,
42
- triggerIcon,
43
- menuContent,
44
- onTriggerClick,
45
- onClickOutsideMenu,
46
- removeWrapperStyles,
47
- reduxHeader,
48
- innerRef,
49
- ariaLabel
50
- }) => {
44
+ const PopperContent = /*#__PURE__*/styled.div.withConfig({
45
+ componentId: "sc-16i88ut-2"
46
+ })(["background-color:#fff;"]);
47
+ const FilterPopover = _ref2 => {
48
+ var _column$ref$current$o, _column$ref, _column$ref$current;
49
+
50
+ let {
51
+ column,
52
+ columnId,
53
+ triggerIcon,
54
+ menuContent,
55
+ onTriggerClick = () => null,
56
+ onClickOutsideMenu = () => null,
57
+ reduxHeader,
58
+ innerRef,
59
+ ariaLabel,
60
+ customStyles
61
+ } = _ref2;
51
62
  const {
52
63
  hideFilterButton,
53
64
  hideFilterMenu
@@ -55,6 +66,7 @@ const FilterPopover = ({
55
66
  hideFilterButton: true,
56
67
  hideFilterMenu: true
57
68
  };
69
+ const popperRef = useRef(null);
58
70
  const {
59
71
  patchHeaderFilterButtonAndMenu,
60
72
  patchHeader
@@ -73,50 +85,7 @@ const FilterPopover = ({
73
85
  e.stopPropagation();
74
86
  };
75
87
 
76
- const wrapperStyles = useMemo(() => {
77
- if (removeWrapperStyles) return {};
78
- return {
79
- backgroundColor: '#fff',
80
- boxShadow: '0 6px 20px 0 rgba(0, 0, 0, 0.24)',
81
- minWidth: '100%'
82
- };
83
- }, [removeWrapperStyles]);
84
88
  const [referenceElement, setReferenceElement] = useState(null);
85
- const [popperElement, setPopperElement] = useState(null); // We need this ref to correctly call useOnClickOutside
86
-
87
- const ref = useRef(null);
88
- const updatedReferenceElement = useCallback(newRef => {
89
- setPopperElement(newRef);
90
- ref.current = newRef;
91
- }, [setPopperElement]); // const hasSortingCaret = column && column.canSort && typeof column.isSortedDesc === 'boolean';
92
-
93
- const {
94
- styles,
95
- attributes
96
- } = usePopper(referenceElement, popperElement, {
97
- placement: 'bottom-end',
98
- modifiers: [{
99
- name: 'offset',
100
- enabled: true,
101
- options: {
102
- offset: [3, 4]
103
- }
104
- }, {
105
- name: 'preventOverflow',
106
- options: {
107
- mainAxis: true,
108
- altAxis: true
109
- }
110
- }]
111
- });
112
-
113
- const handleClose = e => {
114
- if (referenceElement && !referenceElement.contains(e.target)) {
115
- handleClickOutsideMenu(e);
116
- }
117
- };
118
-
119
- useOnClickOutside(ref, handleClose);
120
89
  return /*#__PURE__*/_jsx("div", {
121
90
  // This is here to prevent propagation, and not trigger the sort functionality
122
91
  onClick: e => e.stopPropagation(),
@@ -139,6 +108,11 @@ const FilterPopover = ({
139
108
  },
140
109
  style: {
141
110
  display: 'flex'
111
+ },
112
+ onBlur: e => {
113
+ if (e.target !== referenceElement && !popperRef.current.contains(e.relatedTarget)) {
114
+ referenceElement.focus();
115
+ }
142
116
  }
143
117
  }, void 0, /*#__PURE__*/_jsx(FilterButton, {
144
118
  hide: !isIconVisible,
@@ -156,18 +130,38 @@ const FilterPopover = ({
156
130
  innerRef.current = _ref;
157
131
  },
158
132
  tabIndex: reduxHeader !== null && reduxHeader !== void 0 && reduxHeader.withTabStops ? 0 : -1
159
- })), /*#__PURE__*/jsx("div", _objectSpread(_objectSpread({
160
- ref: updatedReferenceElement,
161
- style: _objectSpread(_objectSpread({}, styles.popper), wrapperStyles)
162
- }, attributes.popper), {}, {
133
+ })), /*#__PURE__*/_jsx(DSPopperJS, {
134
+ referenceElement: referenceElement,
135
+ showPopover: isMenuOpen,
136
+ closeContextMenu: handleClickOutsideMenu,
163
137
  "data-testid": DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT,
164
- children: isMenuOpen && menuContent
138
+ startPlacementPreference: "bottom-end",
139
+ customOffset: [5, 4],
140
+ withoutArrow: true,
141
+ zIndex: 10,
142
+ withoutAnimation: true,
143
+ extraPopperStyles: _objectSpread(_objectSpread({}, customStyles), {}, {
144
+ minWidth: (_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'
145
+ }),
146
+ placementOrderPreference: ['bottom-end']
147
+ }, void 0, /*#__PURE__*/jsx(PopperContent, {
148
+ onKeyDown: e => {
149
+ if (e.code === 'Tab') {
150
+ setTimeout(() => {
151
+ var _popperRef$current;
152
+
153
+ if (!(popperRef !== null && popperRef !== void 0 && (_popperRef$current = popperRef.current) !== null && _popperRef$current !== void 0 && _popperRef$current.contains(document.activeElement))) {
154
+ patchHeader(columnId, {
155
+ hideFilterMenu: true,
156
+ hideFilterButton: false
157
+ });
158
+ }
159
+ });
160
+ }
161
+ },
162
+ ref: popperRef,
163
+ children: menuContent
165
164
  })));
166
165
  };
167
- FilterPopover.defaultProps = {
168
- onClickOutsideMenu: () => null,
169
- onTriggerClick: () => null,
170
- removeWrapperStyles: false
171
- };
172
166
 
173
167
  export { FilterPopover };
@@ -1,10 +1,11 @@
1
1
  const FILTER_TYPES = {
2
2
  SELECT: 'ds-filter-select',
3
3
  MULTI_SELECT: 'ds-filter-multi-select',
4
- TEXT: 'ds-filter-text',
5
4
  SINGLE_DATE: 'ds-filter-single-date',
6
5
  DATE_RANGE: 'ds-filter-date-range',
7
- NUMBER_RANGE: 'ds-filter-number-range'
6
+ DATE_SWITCHER: 'ds-filter-date-switcher',
7
+ NUMBER_RANGE: 'ds-filter-number-range',
8
+ CURRENCY_RANGE: 'ds-filter-currency-range'
8
9
  };
9
10
 
10
11
  export { FILTER_TYPES };
@@ -1,19 +1,24 @@
1
+ import 'core-js/modules/esnext.async-iterator.for-each.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.for-each.js';
1
4
  import { singleSelectFilterFn } from './singleSelectFilterFn.js';
2
5
  import { multiSelectFilterFn } from './multiSelectFilterFn.js';
3
- import { textFilterFn } from './textFilterFn.js';
4
6
  import { singleDateFilterFn } from './singleDateFilterFn.js';
5
7
  import { dateRangeFilterFn } from './dateRangeFilterFn.js';
8
+ import { dateSwitcherFilterFn } from './dateSwitcherFilterFn.js';
6
9
  import { numberRangeFilterFn } from './numberRangeFilterFn.js';
10
+ import { currencyRangeFilterFn } from './currencyRangeFilterFn.js';
7
11
  import { FILTER_TYPES } from '../FilterTypes.js';
8
12
 
9
13
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
14
  const filterMapper = {
11
15
  [FILTER_TYPES.SELECT]: singleSelectFilterFn,
12
16
  [FILTER_TYPES.MULTI_SELECT]: multiSelectFilterFn,
13
- [FILTER_TYPES.TEXT]: textFilterFn,
14
17
  [FILTER_TYPES.SINGLE_DATE]: singleDateFilterFn,
15
18
  [FILTER_TYPES.DATE_RANGE]: dateRangeFilterFn,
16
- [FILTER_TYPES.NUMBER_RANGE]: numberRangeFilterFn
19
+ [FILTER_TYPES.DATE_SWITCHER]: dateSwitcherFilterFn,
20
+ [FILTER_TYPES.NUMBER_RANGE]: numberRangeFilterFn,
21
+ [FILTER_TYPES.CURRENCY_RANGE]: currencyRangeFilterFn
17
22
  };
18
23
  const applyOutOfTheBoxFilters = (data, filters) => {
19
24
  let filteredData = data;
@@ -0,0 +1,20 @@
1
+ import 'core-js/modules/esnext.async-iterator.filter.js';
2
+ import 'core-js/modules/esnext.iterator.constructor.js';
3
+ import 'core-js/modules/esnext.iterator.filter.js';
4
+
5
+ const getNumber = str => {
6
+ if (str === null) return null;
7
+ if (typeof str === 'number') return str;
8
+ if (typeof str !== 'string') return null;
9
+ return Number.parseFloat(str.split('').filter(x => ![',', '$'].includes(x)).join(''));
10
+ };
11
+
12
+ const isEmpty = number => Number.isNaN(number) || number === null || number === undefined;
13
+
14
+ const currencyRangeFilterFn = (unfilteredData, filterKey, filterValue) => {
15
+ const fromNumber = getNumber(filterValue.from);
16
+ const toNumber = getNumber(filterValue.to);
17
+ return unfilteredData.filter(datum => isEmpty(fromNumber) || isEmpty(toNumber) || getNumber(datum[filterKey]) >= fromNumber && getNumber(datum[filterKey]) <= toNumber);
18
+ };
19
+
20
+ export { currencyRangeFilterFn };