@elliemae/ds-data-table 3.0.0-next.9 → 3.0.1

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 (444) hide show
  1. package/dist/cjs/DataTable.js +22 -28
  2. package/dist/cjs/DataTable.js.map +2 -2
  3. package/dist/cjs/DataTableContext.js +9 -16
  4. package/dist/cjs/DataTableContext.js.map +1 -1
  5. package/dist/cjs/DataTableSchema.js +114 -116
  6. package/dist/cjs/DataTableSchema.js.map +2 -2
  7. package/dist/cjs/addons/Columns/ColumnAction/ColumnAction.js +9 -16
  8. package/dist/cjs/addons/Columns/ColumnAction/ColumnAction.js.map +1 -1
  9. package/dist/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +9 -16
  10. package/dist/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js.map +1 -1
  11. package/dist/cjs/addons/Columns/ColumnExpand/ColumnExpand.js +26 -25
  12. package/dist/cjs/addons/Columns/ColumnExpand/ColumnExpand.js.map +2 -2
  13. package/dist/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +13 -18
  14. package/dist/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js.map +2 -2
  15. package/dist/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +9 -16
  16. package/dist/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js.map +1 -1
  17. package/dist/cjs/addons/Columns/index.js +9 -16
  18. package/dist/cjs/addons/Columns/index.js.map +1 -1
  19. package/dist/cjs/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +12 -19
  20. package/dist/cjs/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js.map +2 -2
  21. package/dist/cjs/addons/Editables/DateEditableCell/DateEditableCell.js +9 -16
  22. package/dist/cjs/addons/Editables/DateEditableCell/DateEditableCell.js.map +1 -1
  23. package/dist/cjs/addons/Editables/TextEditableCell/TextEditableCell.js +9 -16
  24. package/dist/cjs/addons/Editables/TextEditableCell/TextEditableCell.js.map +1 -1
  25. package/dist/cjs/addons/Editables/index.js +9 -16
  26. package/dist/cjs/addons/Editables/index.js.map +1 -1
  27. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +11 -18
  28. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  29. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js +9 -16
  30. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js.map +1 -1
  31. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js +9 -16
  32. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js.map +1 -1
  33. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js +11 -18
  34. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  35. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +26 -42
  36. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  37. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilter.js +9 -16
  38. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilter.js.map +1 -1
  39. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +9 -16
  40. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js.map +1 -1
  41. package/dist/cjs/addons/Filters/Components/SelectFilter/components.js +9 -16
  42. package/dist/cjs/addons/Filters/Components/SelectFilter/components.js.map +1 -1
  43. package/dist/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +9 -16
  44. package/dist/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js.map +1 -1
  45. package/dist/cjs/addons/Filters/Components/SelectFilter/utils.js +9 -16
  46. package/dist/cjs/addons/Filters/Components/SelectFilter/utils.js.map +1 -1
  47. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js +9 -16
  48. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js.map +1 -1
  49. package/dist/cjs/addons/Filters/Components/index.js +17 -23
  50. package/dist/cjs/addons/Filters/Components/index.js.map +1 -1
  51. package/dist/cjs/addons/Filters/index.js +11 -17
  52. package/dist/cjs/addons/Filters/index.js.map +1 -1
  53. package/dist/cjs/addons/Pagination/Pagination.js +9 -16
  54. package/dist/cjs/addons/Pagination/Pagination.js.map +1 -1
  55. package/dist/cjs/addons/Pagination/index.js +9 -16
  56. package/dist/cjs/addons/Pagination/index.js.map +1 -1
  57. package/dist/cjs/configs/constants.js +9 -16
  58. package/dist/cjs/configs/constants.js.map +1 -1
  59. package/dist/cjs/configs/fixedSizes.js +9 -16
  60. package/dist/cjs/configs/fixedSizes.js.map +1 -1
  61. package/dist/cjs/configs/index.js +15 -21
  62. package/dist/cjs/configs/index.js.map +1 -1
  63. package/dist/cjs/configs/useDatatableConfig.js +32 -19
  64. package/dist/cjs/configs/useDatatableConfig.js.map +2 -2
  65. package/dist/cjs/configs/useInternalStateConfig.js +75 -0
  66. package/dist/cjs/configs/useInternalStateConfig.js.map +7 -0
  67. package/dist/cjs/configs/usePaginationConfig.js +9 -16
  68. package/dist/cjs/configs/usePaginationConfig.js.map +1 -1
  69. package/dist/cjs/configs/useRowFlattenization.js +9 -16
  70. package/dist/cjs/configs/useRowFlattenization.js.map +1 -1
  71. package/dist/cjs/configs/useTableColsWithAddons.js +9 -16
  72. package/dist/cjs/configs/useTableColsWithAddons.js.map +1 -1
  73. package/dist/cjs/configs/zIndexInternalConfig.js +9 -16
  74. package/dist/cjs/configs/zIndexInternalConfig.js.map +1 -1
  75. package/dist/cjs/exported-related/EditableCell.js +10 -17
  76. package/dist/cjs/exported-related/EditableCell.js.map +2 -2
  77. package/dist/cjs/exported-related/FilterPopover.js +38 -37
  78. package/dist/cjs/exported-related/FilterPopover.js.map +2 -2
  79. package/dist/cjs/exported-related/FilterTypes.js +9 -16
  80. package/dist/cjs/exported-related/FilterTypes.js.map +1 -1
  81. package/dist/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +9 -16
  82. package/dist/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js.map +1 -1
  83. package/dist/cjs/exported-related/Filters/currencyRangeFilterFn.js +9 -16
  84. package/dist/cjs/exported-related/Filters/currencyRangeFilterFn.js.map +1 -1
  85. package/dist/cjs/exported-related/Filters/dateRangeFilterFn.js +9 -16
  86. package/dist/cjs/exported-related/Filters/dateRangeFilterFn.js.map +1 -1
  87. package/dist/cjs/exported-related/Filters/dateSwitcherFilterFn.js +9 -16
  88. package/dist/cjs/exported-related/Filters/dateSwitcherFilterFn.js.map +1 -1
  89. package/dist/cjs/exported-related/Filters/index.js +17 -23
  90. package/dist/cjs/exported-related/Filters/index.js.map +1 -1
  91. package/dist/cjs/exported-related/Filters/multiSelectFilterFn.js +9 -16
  92. package/dist/cjs/exported-related/Filters/multiSelectFilterFn.js.map +1 -1
  93. package/dist/cjs/exported-related/Filters/numberRangeFilterFn.js +9 -16
  94. package/dist/cjs/exported-related/Filters/numberRangeFilterFn.js.map +1 -1
  95. package/dist/cjs/exported-related/Filters/singleDateFilterFn.js +9 -16
  96. package/dist/cjs/exported-related/Filters/singleDateFilterFn.js.map +1 -1
  97. package/dist/cjs/exported-related/Filters/singleSelectFilterFn.js +9 -16
  98. package/dist/cjs/exported-related/Filters/singleSelectFilterFn.js.map +1 -1
  99. package/dist/cjs/exported-related/Filters/types.js +9 -16
  100. package/dist/cjs/exported-related/Filters/types.js.map +1 -1
  101. package/dist/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js +24 -23
  102. package/dist/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js.map +2 -2
  103. package/dist/cjs/exported-related/RowRenderer/index.js +12 -19
  104. package/dist/cjs/exported-related/RowRenderer/index.js.map +2 -2
  105. package/dist/cjs/exported-related/RowRenderer/useRowRendererHandlers.js +53 -34
  106. package/dist/cjs/exported-related/RowRenderer/useRowRendererHandlers.js.map +2 -2
  107. package/dist/cjs/exported-related/RowRenderer/useRowRendererProperties.js +9 -16
  108. package/dist/cjs/exported-related/RowRenderer/useRowRendererProperties.js.map +1 -1
  109. package/dist/cjs/exported-related/RowRenderer/useRowStyle.js +9 -16
  110. package/dist/cjs/exported-related/RowRenderer/useRowStyle.js.map +1 -1
  111. package/dist/cjs/exported-related/RowVariants.js +11 -17
  112. package/dist/cjs/exported-related/RowVariants.js.map +2 -2
  113. package/dist/cjs/exported-related/Toolbar/Toolbar.js +17 -31
  114. package/dist/cjs/exported-related/Toolbar/Toolbar.js.map +2 -2
  115. package/dist/cjs/exported-related/Toolbar/index.js +9 -16
  116. package/dist/cjs/exported-related/Toolbar/index.js.map +1 -1
  117. package/dist/cjs/exported-related/groupBy.js +9 -16
  118. package/dist/cjs/exported-related/groupBy.js.map +1 -1
  119. package/dist/cjs/exported-related/index.js +13 -19
  120. package/dist/cjs/exported-related/index.js.map +1 -1
  121. package/dist/cjs/helpers/addCellData.js +9 -16
  122. package/dist/cjs/helpers/addCellData.js.map +1 -1
  123. package/dist/cjs/helpers/cellPadding.js +9 -16
  124. package/dist/cjs/helpers/cellPadding.js.map +1 -1
  125. package/dist/cjs/helpers/columnsToGrid.js +9 -16
  126. package/dist/cjs/helpers/columnsToGrid.js.map +1 -1
  127. package/dist/cjs/helpers/getIdFromUniqueRowAccessor.js +9 -16
  128. package/dist/cjs/helpers/getIdFromUniqueRowAccessor.js.map +1 -1
  129. package/dist/cjs/helpers/index.js +16 -22
  130. package/dist/cjs/helpers/index.js.map +1 -1
  131. package/dist/cjs/helpers/refs-helpers.js +9 -16
  132. package/dist/cjs/helpers/refs-helpers.js.map +1 -1
  133. package/dist/cjs/helpers/sizeToCss.js +9 -16
  134. package/dist/cjs/helpers/sizeToCss.js.map +1 -1
  135. package/dist/cjs/hooks/useRecoverFocusCol.js +9 -16
  136. package/dist/cjs/hooks/useRecoverFocusCol.js.map +1 -1
  137. package/dist/cjs/hooks/useRecoverFocusRow.js +9 -16
  138. package/dist/cjs/hooks/useRecoverFocusRow.js.map +1 -1
  139. package/dist/cjs/index.js +12 -18
  140. package/dist/cjs/index.js.map +1 -1
  141. package/dist/cjs/parts/Cells/Cell.js +11 -18
  142. package/dist/cjs/parts/Cells/Cell.js.map +2 -2
  143. package/dist/cjs/parts/Cells/index.js +9 -16
  144. package/dist/cjs/parts/Cells/index.js.map +1 -1
  145. package/dist/cjs/parts/Cells/useCellStyle.js +9 -16
  146. package/dist/cjs/parts/Cells/useCellStyle.js.map +1 -1
  147. package/dist/cjs/parts/DnDHandle.js +9 -16
  148. package/dist/cjs/parts/DnDHandle.js.map +1 -1
  149. package/dist/cjs/parts/DropIndicator.js +9 -16
  150. package/dist/cjs/parts/DropIndicator.js.map +1 -1
  151. package/dist/cjs/parts/EmptyContent.js +9 -16
  152. package/dist/cjs/parts/EmptyContent.js.map +1 -1
  153. package/dist/cjs/parts/FilterBar/FiltersBar.js +42 -24
  154. package/dist/cjs/parts/FilterBar/FiltersBar.js.map +2 -2
  155. package/dist/cjs/parts/FilterBar/components/DateRangePill.js +9 -16
  156. package/dist/cjs/parts/FilterBar/components/DateRangePill.js.map +1 -1
  157. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js +9 -16
  158. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js.map +1 -1
  159. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js +9 -16
  160. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js.map +1 -1
  161. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js +9 -16
  162. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js.map +1 -1
  163. package/dist/cjs/parts/FilterBar/components/SelectPill.js +9 -16
  164. package/dist/cjs/parts/FilterBar/components/SelectPill.js.map +1 -1
  165. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js +9 -16
  166. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js.map +1 -1
  167. package/dist/cjs/parts/FilterBar/components/index.js +16 -22
  168. package/dist/cjs/parts/FilterBar/components/index.js.map +1 -1
  169. package/dist/cjs/parts/FilterBar/index.js +9 -16
  170. package/dist/cjs/parts/FilterBar/index.js.map +1 -1
  171. package/dist/cjs/parts/FilterBar/styled.js +9 -16
  172. package/dist/cjs/parts/FilterBar/styled.js.map +1 -1
  173. package/dist/cjs/parts/FilterBar/types.js +9 -16
  174. package/dist/cjs/parts/FilterBar/types.js.map +1 -1
  175. package/dist/cjs/parts/Filters/index.js +11 -18
  176. package/dist/cjs/parts/Filters/index.js.map +2 -2
  177. package/dist/cjs/parts/Footer.js +9 -16
  178. package/dist/cjs/parts/Footer.js.map +1 -1
  179. package/dist/cjs/parts/Headers/EmptyChildrenGroup.js +9 -16
  180. package/dist/cjs/parts/Headers/EmptyChildrenGroup.js.map +1 -1
  181. package/dist/cjs/parts/Headers/HeaderCell.js +15 -29
  182. package/dist/cjs/parts/Headers/HeaderCell.js.map +2 -2
  183. package/dist/cjs/parts/Headers/HeaderCellGroup.js +12 -19
  184. package/dist/cjs/parts/Headers/HeaderCellGroup.js.map +2 -2
  185. package/dist/cjs/parts/Headers/HeaderCellTitle.js +9 -16
  186. package/dist/cjs/parts/Headers/HeaderCellTitle.js.map +1 -1
  187. package/dist/cjs/parts/Headers/HeaderResizer.js +13 -19
  188. package/dist/cjs/parts/Headers/HeaderResizer.js.map +2 -2
  189. package/dist/cjs/parts/Headers/RequiredDot.js +9 -16
  190. package/dist/cjs/parts/Headers/RequiredDot.js.map +1 -1
  191. package/dist/cjs/parts/Headers/index.js +9 -16
  192. package/dist/cjs/parts/Headers/index.js.map +1 -1
  193. package/dist/cjs/parts/Headers/useHeaderCellConfig.js +9 -16
  194. package/dist/cjs/parts/Headers/useHeaderCellConfig.js.map +1 -1
  195. package/dist/cjs/parts/Headers/useHeaderCellHandlers.js +9 -16
  196. package/dist/cjs/parts/Headers/useHeaderCellHandlers.js.map +1 -1
  197. package/dist/cjs/parts/HoC/SortableItemContext.js +9 -16
  198. package/dist/cjs/parts/HoC/SortableItemContext.js.map +1 -1
  199. package/dist/cjs/parts/HoC/withConditionalDnDColumnContext.js +14 -19
  200. package/dist/cjs/parts/HoC/withConditionalDnDColumnContext.js.map +2 -2
  201. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js +9 -16
  202. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js.map +1 -1
  203. package/dist/cjs/parts/HoC/withConditionalDnDSortableContext.js +9 -16
  204. package/dist/cjs/parts/HoC/withConditionalDnDSortableContext.js.map +1 -1
  205. package/dist/cjs/parts/HoC/withDnDSortableColumnContext.js +9 -16
  206. package/dist/cjs/parts/HoC/withDnDSortableColumnContext.js.map +1 -1
  207. package/dist/cjs/parts/HoC/withDnDSortableRowContext.js +9 -16
  208. package/dist/cjs/parts/HoC/withDnDSortableRowContext.js.map +1 -1
  209. package/dist/cjs/parts/Loader.js +9 -16
  210. package/dist/cjs/parts/Loader.js.map +1 -1
  211. package/dist/cjs/parts/Row.js +25 -28
  212. package/dist/cjs/parts/Row.js.map +2 -2
  213. package/dist/cjs/parts/RowLoading.js +9 -16
  214. package/dist/cjs/parts/RowLoading.js.map +1 -1
  215. package/dist/cjs/parts/RowVariants/RowVariantHeader.js +13 -20
  216. package/dist/cjs/parts/RowVariants/RowVariantHeader.js.map +2 -2
  217. package/dist/cjs/parts/RowVariants/RowVariantPrimary.js +11 -18
  218. package/dist/cjs/parts/RowVariants/RowVariantPrimary.js.map +2 -2
  219. package/dist/cjs/parts/RowVariants/RowVariantSecondary.js +11 -18
  220. package/dist/cjs/parts/RowVariants/RowVariantSecondary.js.map +2 -2
  221. package/dist/cjs/parts/RowVariants/RowVariantSkeleton.js +74 -0
  222. package/dist/cjs/parts/RowVariants/RowVariantSkeleton.js.map +7 -0
  223. package/dist/cjs/parts/RowVariants/index.js +12 -17
  224. package/dist/cjs/parts/RowVariants/index.js.map +2 -2
  225. package/dist/cjs/parts/RowVariants/types.js +9 -16
  226. package/dist/cjs/parts/RowVariants/types.js.map +2 -2
  227. package/dist/cjs/parts/Rows.js +9 -16
  228. package/dist/cjs/parts/Rows.js.map +1 -1
  229. package/dist/cjs/parts/SortByCaret.js +9 -16
  230. package/dist/cjs/parts/SortByCaret.js.map +1 -1
  231. package/dist/cjs/parts/SortableHeaderCell.js +9 -16
  232. package/dist/cjs/parts/SortableHeaderCell.js.map +1 -1
  233. package/dist/cjs/parts/TableContent.js +13 -25
  234. package/dist/cjs/parts/TableContent.js.map +2 -2
  235. package/dist/cjs/parts/VirtualRowsList.js +12 -27
  236. package/dist/cjs/parts/VirtualRowsList.js.map +2 -2
  237. package/dist/cjs/parts/index.js +9 -16
  238. package/dist/cjs/parts/index.js.map +1 -1
  239. package/dist/cjs/parts/internal.js +30 -0
  240. package/dist/cjs/parts/internal.js.map +7 -0
  241. package/dist/cjs/prop-types.js +9 -16
  242. package/dist/cjs/prop-types.js.map +1 -1
  243. package/dist/cjs/styled.js +17 -25
  244. package/dist/cjs/styled.js.map +2 -2
  245. package/dist/cjs/tests/utils/index.js +9 -16
  246. package/dist/cjs/tests/utils/index.js.map +1 -1
  247. package/dist/cjs/types/FunctionalHoC.js +9 -16
  248. package/dist/cjs/types/FunctionalHoC.js.map +1 -1
  249. package/dist/cjs/types/props.js +9 -16
  250. package/dist/cjs/types/props.js.map +2 -2
  251. package/dist/esm/DataTable.js +13 -12
  252. package/dist/esm/DataTable.js.map +2 -2
  253. package/dist/esm/DataTableContext.js.map +1 -1
  254. package/dist/esm/DataTableSchema.js +6 -1
  255. package/dist/esm/DataTableSchema.js.map +2 -2
  256. package/dist/esm/addons/Columns/ColumnAction/ColumnAction.js.map +1 -1
  257. package/dist/esm/addons/Columns/ColumnDragHandle/ColumnDragHandle.js.map +1 -1
  258. package/dist/esm/addons/Columns/ColumnExpand/ColumnExpand.js +18 -10
  259. package/dist/esm/addons/Columns/ColumnExpand/ColumnExpand.js.map +2 -2
  260. package/dist/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +4 -2
  261. package/dist/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js.map +2 -2
  262. package/dist/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js.map +1 -1
  263. package/dist/esm/addons/Columns/index.js.map +1 -1
  264. package/dist/esm/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js +3 -3
  265. package/dist/esm/addons/Editables/ComboboxEditableCell/ComboboxEditableCell.js.map +2 -2
  266. package/dist/esm/addons/Editables/DateEditableCell/DateEditableCell.js.map +1 -1
  267. package/dist/esm/addons/Editables/TextEditableCell/TextEditableCell.js.map +1 -1
  268. package/dist/esm/addons/Editables/index.js.map +1 -1
  269. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +3 -3
  270. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  271. package/dist/esm/addons/Filters/Components/DateRangeFilter/index.js.map +1 -1
  272. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/index.js.map +1 -1
  273. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js +3 -3
  274. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  275. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +17 -26
  276. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  277. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilter.js.map +1 -1
  278. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js.map +1 -1
  279. package/dist/esm/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js.map +1 -1
  280. package/dist/esm/addons/Filters/Components/SelectFilter/utils.js.map +1 -1
  281. package/dist/esm/addons/Filters/Components/SingleDateFilter/index.js.map +1 -1
  282. package/dist/esm/addons/Pagination/Pagination.js.map +1 -1
  283. package/dist/esm/configs/constants.js.map +1 -1
  284. package/dist/esm/configs/fixedSizes.js.map +1 -1
  285. package/dist/esm/configs/useDatatableConfig.js +25 -3
  286. package/dist/esm/configs/useDatatableConfig.js.map +2 -2
  287. package/dist/esm/configs/useInternalStateConfig.js +55 -0
  288. package/dist/esm/configs/useInternalStateConfig.js.map +7 -0
  289. package/dist/esm/configs/usePaginationConfig.js.map +1 -1
  290. package/dist/esm/configs/useRowFlattenization.js.map +1 -1
  291. package/dist/esm/configs/useTableColsWithAddons.js.map +1 -1
  292. package/dist/esm/configs/zIndexInternalConfig.js.map +1 -1
  293. package/dist/esm/exported-related/EditableCell.js +1 -1
  294. package/dist/esm/exported-related/EditableCell.js.map +2 -2
  295. package/dist/esm/exported-related/FilterPopover.js +30 -22
  296. package/dist/esm/exported-related/FilterPopover.js.map +2 -2
  297. package/dist/esm/exported-related/FilterTypes.js.map +1 -1
  298. package/dist/esm/exported-related/Filters/applyOutOfTheBoxFilters.js.map +1 -1
  299. package/dist/esm/exported-related/Filters/currencyRangeFilterFn.js.map +1 -1
  300. package/dist/esm/exported-related/Filters/dateRangeFilterFn.js.map +1 -1
  301. package/dist/esm/exported-related/Filters/dateSwitcherFilterFn.js.map +1 -1
  302. package/dist/esm/exported-related/Filters/multiSelectFilterFn.js.map +1 -1
  303. package/dist/esm/exported-related/Filters/numberRangeFilterFn.js.map +1 -1
  304. package/dist/esm/exported-related/Filters/singleDateFilterFn.js.map +1 -1
  305. package/dist/esm/exported-related/Filters/singleSelectFilterFn.js.map +1 -1
  306. package/dist/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js +16 -8
  307. package/dist/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js.map +2 -2
  308. package/dist/esm/exported-related/RowRenderer/index.js +3 -3
  309. package/dist/esm/exported-related/RowRenderer/index.js.map +2 -2
  310. package/dist/esm/exported-related/RowRenderer/useRowRendererHandlers.js +44 -18
  311. package/dist/esm/exported-related/RowRenderer/useRowRendererHandlers.js.map +2 -2
  312. package/dist/esm/exported-related/RowRenderer/useRowRendererProperties.js.map +1 -1
  313. package/dist/esm/exported-related/RowRenderer/useRowStyle.js.map +1 -1
  314. package/dist/esm/exported-related/RowVariants.js +2 -1
  315. package/dist/esm/exported-related/RowVariants.js.map +2 -2
  316. package/dist/esm/exported-related/Toolbar/Toolbar.js +9 -16
  317. package/dist/esm/exported-related/Toolbar/Toolbar.js.map +2 -2
  318. package/dist/esm/exported-related/groupBy.js.map +1 -1
  319. package/dist/esm/helpers/addCellData.js.map +1 -1
  320. package/dist/esm/helpers/cellPadding.js.map +1 -1
  321. package/dist/esm/helpers/columnsToGrid.js.map +1 -1
  322. package/dist/esm/helpers/getIdFromUniqueRowAccessor.js.map +1 -1
  323. package/dist/esm/helpers/refs-helpers.js.map +1 -1
  324. package/dist/esm/helpers/sizeToCss.js.map +1 -1
  325. package/dist/esm/hooks/useRecoverFocusCol.js.map +1 -1
  326. package/dist/esm/hooks/useRecoverFocusRow.js.map +1 -1
  327. package/dist/esm/parts/Cells/Cell.js +2 -2
  328. package/dist/esm/parts/Cells/Cell.js.map +2 -2
  329. package/dist/esm/parts/Cells/index.js.map +1 -1
  330. package/dist/esm/parts/Cells/useCellStyle.js.map +1 -1
  331. package/dist/esm/parts/DnDHandle.js.map +1 -1
  332. package/dist/esm/parts/DropIndicator.js.map +1 -1
  333. package/dist/esm/parts/EmptyContent.js.map +1 -1
  334. package/dist/esm/parts/FilterBar/FiltersBar.js +35 -10
  335. package/dist/esm/parts/FilterBar/FiltersBar.js.map +2 -2
  336. package/dist/esm/parts/FilterBar/components/DateRangePill.js.map +1 -1
  337. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js.map +1 -1
  338. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js.map +1 -1
  339. package/dist/esm/parts/FilterBar/components/NumberRangePill.js.map +1 -1
  340. package/dist/esm/parts/FilterBar/components/SelectPill.js.map +1 -1
  341. package/dist/esm/parts/FilterBar/components/SingleDatePill.js.map +1 -1
  342. package/dist/esm/parts/FilterBar/styled.js.map +1 -1
  343. package/dist/esm/parts/Filters/index.js +3 -3
  344. package/dist/esm/parts/Filters/index.js.map +2 -2
  345. package/dist/esm/parts/Footer.js.map +1 -1
  346. package/dist/esm/parts/Headers/EmptyChildrenGroup.js.map +1 -1
  347. package/dist/esm/parts/Headers/HeaderCell.js +6 -13
  348. package/dist/esm/parts/Headers/HeaderCell.js.map +2 -2
  349. package/dist/esm/parts/Headers/HeaderCellGroup.js +2 -2
  350. package/dist/esm/parts/Headers/HeaderCellGroup.js.map +2 -2
  351. package/dist/esm/parts/Headers/HeaderCellTitle.js.map +1 -1
  352. package/dist/esm/parts/Headers/HeaderResizer.js +4 -3
  353. package/dist/esm/parts/Headers/HeaderResizer.js.map +2 -2
  354. package/dist/esm/parts/Headers/RequiredDot.js.map +1 -1
  355. package/dist/esm/parts/Headers/index.js.map +1 -1
  356. package/dist/esm/parts/Headers/useHeaderCellConfig.js.map +1 -1
  357. package/dist/esm/parts/Headers/useHeaderCellHandlers.js.map +1 -1
  358. package/dist/esm/parts/HoC/SortableItemContext.js.map +1 -1
  359. package/dist/esm/parts/HoC/withConditionalDnDColumnContext.js +4 -2
  360. package/dist/esm/parts/HoC/withConditionalDnDColumnContext.js.map +2 -2
  361. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js.map +1 -1
  362. package/dist/esm/parts/HoC/withConditionalDnDSortableContext.js.map +1 -1
  363. package/dist/esm/parts/HoC/withDnDSortableColumnContext.js.map +1 -1
  364. package/dist/esm/parts/HoC/withDnDSortableRowContext.js.map +1 -1
  365. package/dist/esm/parts/Loader.js.map +1 -1
  366. package/dist/esm/parts/Row.js +15 -11
  367. package/dist/esm/parts/Row.js.map +2 -2
  368. package/dist/esm/parts/RowLoading.js.map +1 -1
  369. package/dist/esm/parts/RowVariants/RowVariantHeader.js +4 -4
  370. package/dist/esm/parts/RowVariants/RowVariantHeader.js.map +2 -2
  371. package/dist/esm/parts/RowVariants/RowVariantPrimary.js +2 -2
  372. package/dist/esm/parts/RowVariants/RowVariantPrimary.js.map +2 -2
  373. package/dist/esm/parts/RowVariants/RowVariantSecondary.js +2 -2
  374. package/dist/esm/parts/RowVariants/RowVariantSecondary.js.map +2 -2
  375. package/dist/esm/parts/RowVariants/RowVariantSkeleton.js +54 -0
  376. package/dist/esm/parts/RowVariants/RowVariantSkeleton.js.map +7 -0
  377. package/dist/esm/parts/RowVariants/index.js +3 -1
  378. package/dist/esm/parts/RowVariants/index.js.map +2 -2
  379. package/dist/esm/parts/Rows.js.map +1 -1
  380. package/dist/esm/parts/SortByCaret.js.map +1 -1
  381. package/dist/esm/parts/SortableHeaderCell.js.map +1 -1
  382. package/dist/esm/parts/TableContent.js +4 -9
  383. package/dist/esm/parts/TableContent.js.map +2 -2
  384. package/dist/esm/parts/VirtualRowsList.js +3 -11
  385. package/dist/esm/parts/VirtualRowsList.js.map +2 -2
  386. package/dist/esm/parts/internal.js +8 -0
  387. package/dist/esm/parts/internal.js.map +7 -0
  388. package/dist/esm/prop-types.js.map +1 -1
  389. package/dist/esm/styled.js +8 -9
  390. package/dist/esm/styled.js.map +2 -2
  391. package/dist/esm/tests/utils/index.js.map +1 -1
  392. package/package.json +28 -28
  393. package/dist/cjs/redux/reducers/headersReducers/defaults.js +0 -35
  394. package/dist/cjs/redux/reducers/headersReducers/defaults.js.map +0 -7
  395. package/dist/cjs/redux/reducers/headersReducers/headersReducers.js +0 -57
  396. package/dist/cjs/redux/reducers/headersReducers/headersReducers.js.map +0 -7
  397. package/dist/cjs/redux/reducers/headersReducers/index.js +0 -29
  398. package/dist/cjs/redux/reducers/headersReducers/index.js.map +0 -7
  399. package/dist/cjs/redux/reducers/headersReducers/logic.js +0 -56
  400. package/dist/cjs/redux/reducers/headersReducers/logic.js.map +0 -7
  401. package/dist/cjs/redux/reducers/headersReducers/useDispatchHeadersActions.js +0 -46
  402. package/dist/cjs/redux/reducers/headersReducers/useDispatchHeadersActions.js.map +0 -7
  403. package/dist/cjs/redux/reducers/index.js +0 -47
  404. package/dist/cjs/redux/reducers/index.js.map +0 -7
  405. package/dist/cjs/redux/reducers/rowsReducers/actions_types.js +0 -47
  406. package/dist/cjs/redux/reducers/rowsReducers/actions_types.js.map +0 -7
  407. package/dist/cjs/redux/reducers/rowsReducers/defaults.js +0 -55
  408. package/dist/cjs/redux/reducers/rowsReducers/defaults.js.map +0 -7
  409. package/dist/cjs/redux/reducers/rowsReducers/index.js +0 -29
  410. package/dist/cjs/redux/reducers/rowsReducers/index.js.map +0 -7
  411. package/dist/cjs/redux/reducers/rowsReducers/logic.js +0 -65
  412. package/dist/cjs/redux/reducers/rowsReducers/logic.js.map +0 -7
  413. package/dist/cjs/redux/reducers/rowsReducers/rowsReducer.js +0 -87
  414. package/dist/cjs/redux/reducers/rowsReducers/rowsReducer.js.map +0 -7
  415. package/dist/cjs/redux/reducers/rowsReducers/useDispatchRowsActions.js +0 -61
  416. package/dist/cjs/redux/reducers/rowsReducers/useDispatchRowsActions.js.map +0 -7
  417. package/dist/cjs/redux/storeConfig.js +0 -38
  418. package/dist/cjs/redux/storeConfig.js.map +0 -7
  419. package/dist/esm/redux/reducers/headersReducers/defaults.js +0 -6
  420. package/dist/esm/redux/reducers/headersReducers/defaults.js.map +0 -7
  421. package/dist/esm/redux/reducers/headersReducers/headersReducers.js +0 -28
  422. package/dist/esm/redux/reducers/headersReducers/headersReducers.js.map +0 -7
  423. package/dist/esm/redux/reducers/headersReducers/index.js +0 -4
  424. package/dist/esm/redux/reducers/headersReducers/index.js.map +0 -7
  425. package/dist/esm/redux/reducers/headersReducers/logic.js +0 -29
  426. package/dist/esm/redux/reducers/headersReducers/logic.js.map +0 -7
  427. package/dist/esm/redux/reducers/headersReducers/useDispatchHeadersActions.js +0 -17
  428. package/dist/esm/redux/reducers/headersReducers/useDispatchHeadersActions.js.map +0 -7
  429. package/dist/esm/redux/reducers/index.js +0 -18
  430. package/dist/esm/redux/reducers/index.js.map +0 -7
  431. package/dist/esm/redux/reducers/rowsReducers/actions_types.js +0 -18
  432. package/dist/esm/redux/reducers/rowsReducers/actions_types.js.map +0 -7
  433. package/dist/esm/redux/reducers/rowsReducers/defaults.js +0 -26
  434. package/dist/esm/redux/reducers/rowsReducers/defaults.js.map +0 -7
  435. package/dist/esm/redux/reducers/rowsReducers/index.js +0 -4
  436. package/dist/esm/redux/reducers/rowsReducers/index.js.map +0 -7
  437. package/dist/esm/redux/reducers/rowsReducers/logic.js +0 -36
  438. package/dist/esm/redux/reducers/rowsReducers/logic.js.map +0 -7
  439. package/dist/esm/redux/reducers/rowsReducers/rowsReducer.js +0 -67
  440. package/dist/esm/redux/reducers/rowsReducers/rowsReducer.js.map +0 -7
  441. package/dist/esm/redux/reducers/rowsReducers/useDispatchRowsActions.js +0 -41
  442. package/dist/esm/redux/reducers/rowsReducers/useDispatchRowsActions.js.map +0 -7
  443. package/dist/esm/redux/storeConfig.js +0 -9
  444. package/dist/esm/redux/storeConfig.js.map +0 -7
@@ -18,11 +18,11 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import * as React from "react";
21
- import React2, { useRef, useState } from "react";
21
+ import React2, { useCallback, useContext, useEffect, useState } from "react";
22
22
  import { DSButton } from "@elliemae/ds-button";
23
23
  import { DSPopperJS } from "@elliemae/ds-popperjs";
24
24
  import styled from "styled-components";
25
- import { useDispatchHeadersActions } from "../redux/reducers";
25
+ import DataTableContext from "../DataTableContext";
26
26
  import { DATA_TESTID } from "../configs/constants";
27
27
  const FilterButton = styled.span`
28
28
  display: inline-grid;
@@ -35,6 +35,14 @@ const Button = styled(DSButton)`
35
35
  const PopperContent = styled.div`
36
36
  background-color: #fff;
37
37
  `;
38
+ const ButtonTrap = ({ cb }) => /* @__PURE__ */ React2.createElement("span", {
39
+ "aria-hidden": "true",
40
+ tabIndex: 0,
41
+ onFocus: (e) => {
42
+ e.stopPropagation();
43
+ cb();
44
+ }
45
+ });
38
46
  const FilterPopover = ({
39
47
  column,
40
48
  columnId,
@@ -51,8 +59,7 @@ const FilterPopover = ({
51
59
  hideFilterButton: true,
52
60
  hideFilterMenu: true
53
61
  };
54
- const popperRef = useRef(null);
55
- const { patchHeaderFilterButtonAndMenu, patchHeader } = useDispatchHeadersActions();
62
+ const { patchHeaderFilterButtonAndMenu, patchHeader } = useContext(DataTableContext);
56
63
  const isIconVisible = !hideFilterButton || !hideFilterMenu;
57
64
  const isMenuOpen = !hideFilterMenu;
58
65
  const handleClickOutsideMenu = (e) => {
@@ -60,12 +67,25 @@ const FilterPopover = ({
60
67
  if (isMenuOpen)
61
68
  patchHeaderFilterButtonAndMenu(columnId, true);
62
69
  };
70
+ useEffect(() => {
71
+ const closeMenu = () => {
72
+ patchHeaderFilterButtonAndMenu(columnId, true);
73
+ };
74
+ window.addEventListener("blur", closeMenu);
75
+ return () => {
76
+ window.removeEventListener("blur", closeMenu);
77
+ };
78
+ }, [columnId, patchHeaderFilterButtonAndMenu]);
63
79
  const handleTriggerClick = (e) => {
64
80
  onTriggerClick(columnId, e);
65
81
  patchHeaderFilterButtonAndMenu(columnId, false);
66
82
  e.stopPropagation();
67
83
  };
68
84
  const [referenceElement, setReferenceElement] = useState(null);
85
+ const buttonTrapCallback = useCallback(() => {
86
+ patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });
87
+ referenceElement?.focus();
88
+ }, [columnId, patchHeader, referenceElement]);
69
89
  return /* @__PURE__ */ React2.createElement("div", {
70
90
  onClick: (e) => e.stopPropagation(),
71
91
  onKeyDown: (e) => {
@@ -78,12 +98,7 @@ const FilterPopover = ({
78
98
  e.preventDefault();
79
99
  }
80
100
  },
81
- style: { display: "flex" },
82
- onBlur: (e) => {
83
- if (e.target !== referenceElement && !popperRef.current?.contains(e.relatedTarget)) {
84
- referenceElement?.focus();
85
- }
86
- }
101
+ style: { display: "flex" }
87
102
  }, /* @__PURE__ */ React2.createElement(FilterButton, {
88
103
  hide: !isIconVisible,
89
104
  "data-testid": DATA_TESTID.DATA_TABLE_FILTER_BUTTON
@@ -114,18 +129,11 @@ const FilterPopover = ({
114
129
  minWidth: column.ref?.current?.offsetWidth ?? "0px"
115
130
  }),
116
131
  placementOrderPreference: ["bottom-end"]
117
- }, /* @__PURE__ */ React2.createElement(PopperContent, {
118
- onKeyDown: (e) => {
119
- if (e.code === "Tab") {
120
- setTimeout(() => {
121
- if (!popperRef?.current?.contains(document.activeElement)) {
122
- patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });
123
- }
124
- });
125
- }
126
- },
127
- ref: popperRef
128
- }, menuContent)));
132
+ }, /* @__PURE__ */ React2.createElement(PopperContent, null, /* @__PURE__ */ React2.createElement(ButtonTrap, {
133
+ cb: buttonTrapCallback
134
+ }), menuContent, /* @__PURE__ */ React2.createElement(ButtonTrap, {
135
+ cb: buttonTrapCallback
136
+ }))));
129
137
  };
130
138
  export {
131
139
  FilterPopover
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/FilterPopover.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable react/prop-types */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { MutableRefObject, useRef, useState } from 'react';\nimport { DSButton } from '@elliemae/ds-button';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport styled from 'styled-components';\nimport { useDispatchHeadersActions } from '../redux/reducers';\nimport { DATA_TESTID } from '../configs/constants';\nimport { TypescriptColumn } from '../types/props';\n\nconst FilterButton = styled.span<{ hide: boolean }>`\n display: inline-grid;\n ${(props) => (props.hide ? 'opacity: 0; display: none; width: 0;' : '')}\n`;\n\nconst Button = styled(DSButton)`\n position: relative;\n justify-self: flex-end;\n`;\n\nconst PopperContent = styled.div`\n background-color: #fff;\n`;\ninterface FilterPopoverProps {\n column: TypescriptColumn;\n columnId: string;\n triggerIcon: JSX.Element;\n menuContent: JSX.Element;\n onTriggerClick?: (id: string, e: UIEvent) => void;\n onClickOutsideMenu?: (id: string, e: UIEvent) => void;\n reduxHeader: { hideFilterButton: boolean; hideFilterMenu: boolean; withTabStops: boolean };\n innerRef: MutableRefObject<HTMLDivElement>;\n ariaLabel: string;\n customStyles?: React.CSSProperties;\n}\n\nexport const FilterPopover: React.ComponentType<FilterPopoverProps> = ({\n column,\n columnId,\n triggerIcon,\n menuContent,\n onTriggerClick = () => null,\n onClickOutsideMenu = () => null,\n reduxHeader,\n innerRef,\n ariaLabel,\n customStyles,\n}) => {\n const { hideFilterButton, hideFilterMenu } = reduxHeader || {\n hideFilterButton: true,\n hideFilterMenu: true,\n };\n const popperRef = useRef(null);\n const { patchHeaderFilterButtonAndMenu, patchHeader } = useDispatchHeadersActions();\n const isIconVisible = !hideFilterButton || !hideFilterMenu;\n const isMenuOpen = !hideFilterMenu;\n\n const handleClickOutsideMenu = (e) => {\n onClickOutsideMenu(columnId, e);\n if (isMenuOpen) patchHeaderFilterButtonAndMenu(columnId, true);\n };\n\n const handleTriggerClick = (e) => {\n onTriggerClick(columnId, e);\n patchHeaderFilterButtonAndMenu(columnId, false);\n e.stopPropagation();\n };\n\n const [referenceElement, setReferenceElement] = useState(null);\n\n return (\n <div\n // This is here to prevent propagation, and not trigger the sort functionality\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.code === 'Escape') {\n patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });\n referenceElement.focus();\n }\n // Stop propagation for some reason is not enough to prevent scrolling of the datatable\n // so we just prevent default behaviour in this case\n if (['ArrowUp', 'ArrowDown'].includes(e.code)) {\n e.preventDefault();\n }\n }}\n style={{ display: 'flex' }}\n onBlur={(e) => {\n if (e.target !== referenceElement && !popperRef.current?.contains(e.relatedTarget)) {\n referenceElement?.focus();\n }\n }}\n >\n <FilterButton hide={!isIconVisible} data-testid={DATA_TESTID.DATA_TABLE_FILTER_BUTTON}>\n <Button\n onClick={handleTriggerClick}\n buttonType=\"text\"\n aria-label={ariaLabel}\n aria-hidden=\"true\"\n size=\"s\"\n leftIcon={triggerIcon}\n // implement treeview mergerefs\n innerRef={(_ref) => {\n if (isIconVisible) setReferenceElement(_ref);\n innerRef.current = _ref;\n }}\n tabIndex={reduxHeader?.withTabStops ? 0 : -1}\n />\n </FilterButton>\n {referenceElement && (\n <DSPopperJS\n referenceElement={referenceElement}\n showPopover={isMenuOpen}\n closeContextMenu={handleClickOutsideMenu}\n data-testid={DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT}\n startPlacementPreference=\"bottom-end\"\n customOffset={[5, 4]}\n withoutArrow\n zIndex={10}\n withoutAnimation\n extraPopperStyles={{\n ...customStyles,\n minWidth: column.ref?.current?.offsetWidth ?? '0px',\n }}\n placementOrderPreference={['bottom-end']}\n >\n <PopperContent\n onKeyDown={(e) => {\n if (e.code === 'Tab') {\n setTimeout(() => {\n if (!popperRef?.current?.contains(document.activeElement)) {\n patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });\n }\n });\n }\n }}\n ref={popperRef}\n >\n {menuContent}\n </PopperContent>\n </DSPopperJS>\n )}\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;ACEA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAM,eAAe,OAAO;AAAA;AAAA,IAExB,CAAC,UAAW,MAAM,OAAO,yCAAyC;AAAA;AAGtE,MAAM,SAAS,OAAO;AAAA;AAAA;AAAA;AAKtB,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAgBtB,MAAM,gBAAyD,CAAC;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,MAAM;AAAA,EACvB,qBAAqB,MAAM;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACI;AACJ,QAAM,EAAE,kBAAkB,mBAAmB,eAAe;AAAA,IAC1D,kBAAkB;AAAA,IAClB,gBAAgB;AAAA;AAElB,QAAM,YAAY,OAAO;AACzB,QAAM,EAAE,gCAAgC,gBAAgB;AACxD,QAAM,gBAAgB,CAAC,oBAAoB,CAAC;AAC5C,QAAM,aAAa,CAAC;AAEpB,QAAM,yBAAyB,CAAC,MAAM;AACpC,uBAAmB,UAAU;AAC7B,QAAI;AAAY,qCAA+B,UAAU;AAAA;AAG3D,QAAM,qBAAqB,CAAC,MAAM;AAChC,mBAAe,UAAU;AACzB,mCAA+B,UAAU;AACzC,MAAE;AAAA;AAGJ,QAAM,CAAC,kBAAkB,uBAAuB,SAAS;AAEzD,SACE,qCAAC,OAAD;AAAA,IAEE,SAAS,CAAC,MAAM,EAAE;AAAA,IAClB,WAAW,CAAC,MAAM;AAChB,QAAE;AACF,UAAI,EAAE,SAAS,UAAU;AACvB,oBAAY,UAAU,EAAE,gBAAgB,MAAM,kBAAkB;AAChE,yBAAiB;AAAA;AAInB,UAAI,CAAC,WAAW,aAAa,SAAS,EAAE,OAAO;AAC7C,UAAE;AAAA;AAAA;AAAA,IAGN,OAAO,EAAE,SAAS;AAAA,IAClB,QAAQ,CAAC,MAAM;AACb,UAAI,EAAE,WAAW,oBAAoB,CAAC,UAAU,SAAS,SAAS,EAAE,gBAAgB;AAClF,0BAAkB;AAAA;AAAA;AAAA,KAItB,qCAAC,cAAD;AAAA,IAAc,MAAM,CAAC;AAAA,IAAe,eAAa,YAAY;AAAA,KAC3D,qCAAC,QAAD;AAAA,IACE,SAAS;AAAA,IACT,YAAW;AAAA,IACX,cAAY;AAAA,IACZ,eAAY;AAAA,IACZ,MAAK;AAAA,IACL,UAAU;AAAA,IAEV,UAAU,CAAC,SAAS;AAClB,UAAI;AAAe,4BAAoB;AACvC,eAAS,UAAU;AAAA;AAAA,IAErB,UAAU,aAAa,eAAe,IAAI;AAAA,OAG7C,oBACC,qCAAC,YAAD;AAAA,IACE;AAAA,IACA,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,eAAa,YAAY;AAAA,IACzB,0BAAyB;AAAA,IACzB,cAAc,CAAC,GAAG;AAAA,IAClB,cAAY;AAAA,IACZ,QAAQ;AAAA,IACR,kBAAgB;AAAA,IAChB,mBAAmB,iCACd,eADc;AAAA,MAEjB,UAAU,OAAO,KAAK,SAAS,eAAe;AAAA;AAAA,IAEhD,0BAA0B,CAAC;AAAA,KAE3B,qCAAC,eAAD;AAAA,IACE,WAAW,CAAC,MAAM;AAChB,UAAI,EAAE,SAAS,OAAO;AACpB,mBAAW,MAAM;AACf,cAAI,CAAC,WAAW,SAAS,SAAS,SAAS,gBAAgB;AACzD,wBAAY,UAAU,EAAE,gBAAgB,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,IAKxE,KAAK;AAAA,KAEJ;AAAA;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable react/prop-types */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { MutableRefObject, useCallback, useContext, useEffect, useState } from 'react';\nimport { DSButton } from '@elliemae/ds-button';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport styled from 'styled-components';\nimport DataTableContext from '../DataTableContext';\nimport { DATA_TESTID } from '../configs/constants';\nimport { ReduxHeader, TypescriptColumn } from '../types/props';\n\nconst FilterButton = styled.span<{ hide: boolean }>`\n display: inline-grid;\n ${(props) => (props.hide ? 'opacity: 0; display: none; width: 0;' : '')}\n`;\n\nconst Button = styled(DSButton)`\n position: relative;\n justify-self: flex-end;\n`;\n\nconst PopperContent = styled.div`\n background-color: #fff;\n`;\ninterface FilterPopoverProps {\n column: TypescriptColumn;\n columnId: string;\n triggerIcon: JSX.Element;\n menuContent: JSX.Element;\n onTriggerClick?: (id: string, e: UIEvent) => void;\n onClickOutsideMenu?: (id: string, e: UIEvent) => void;\n reduxHeader: ReduxHeader;\n innerRef: MutableRefObject<HTMLDivElement>;\n ariaLabel: string;\n customStyles?: React.CSSProperties;\n}\n\nconst ButtonTrap = ({ cb }) => (\n <span\n aria-hidden=\"true\"\n tabIndex={0}\n onFocus={(e) => {\n e.stopPropagation();\n cb();\n }}\n />\n);\n\nexport const FilterPopover: React.ComponentType<FilterPopoverProps> = ({\n column,\n columnId,\n triggerIcon,\n menuContent,\n onTriggerClick = () => null,\n onClickOutsideMenu = () => null,\n reduxHeader,\n innerRef,\n ariaLabel,\n customStyles,\n}) => {\n const { hideFilterButton, hideFilterMenu } = reduxHeader || {\n hideFilterButton: true,\n hideFilterMenu: true,\n };\n const { patchHeaderFilterButtonAndMenu, patchHeader } = useContext(DataTableContext);\n const isIconVisible = !hideFilterButton || !hideFilterMenu;\n const isMenuOpen = !hideFilterMenu;\n\n const handleClickOutsideMenu = (e) => {\n onClickOutsideMenu(columnId, e);\n if (isMenuOpen) patchHeaderFilterButtonAndMenu(columnId, true);\n };\n\n useEffect(() => {\n const closeMenu = () => {\n patchHeaderFilterButtonAndMenu(columnId, true);\n };\n window.addEventListener('blur', closeMenu);\n\n return () => {\n window.removeEventListener('blur', closeMenu);\n };\n }, [columnId, patchHeaderFilterButtonAndMenu]);\n\n const handleTriggerClick = (e) => {\n onTriggerClick(columnId, e);\n patchHeaderFilterButtonAndMenu(columnId, false);\n e.stopPropagation();\n };\n\n const [referenceElement, setReferenceElement] = useState(null);\n\n const buttonTrapCallback = useCallback(() => {\n patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });\n referenceElement?.focus();\n }, [columnId, patchHeader, referenceElement]);\n return (\n <div\n // This is here to prevent propagation, and not trigger the sort functionality\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.code === 'Escape') {\n patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });\n referenceElement.focus();\n }\n // Stop propagation for some reason is not enough to prevent scrolling of the datatable\n // so we just prevent default behaviour in this case\n if (['ArrowUp', 'ArrowDown'].includes(e.code)) {\n e.preventDefault();\n }\n }}\n style={{ display: 'flex' }}\n >\n <FilterButton hide={!isIconVisible} data-testid={DATA_TESTID.DATA_TABLE_FILTER_BUTTON}>\n <Button\n onClick={handleTriggerClick}\n buttonType=\"text\"\n aria-label={ariaLabel}\n aria-hidden=\"true\"\n size=\"s\"\n leftIcon={triggerIcon}\n // implement treeview mergerefs\n innerRef={(_ref) => {\n if (isIconVisible) setReferenceElement(_ref);\n innerRef.current = _ref;\n }}\n tabIndex={reduxHeader?.withTabStops ? 0 : -1}\n />\n </FilterButton>\n {referenceElement && (\n <DSPopperJS\n referenceElement={referenceElement}\n showPopover={isMenuOpen}\n closeContextMenu={handleClickOutsideMenu}\n data-testid={DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT}\n startPlacementPreference=\"bottom-end\"\n customOffset={[5, 4]}\n withoutArrow\n zIndex={10}\n withoutAnimation\n extraPopperStyles={{\n ...customStyles,\n minWidth: column.ref?.current?.offsetWidth ?? '0px',\n }}\n placementOrderPreference={['bottom-end']}\n >\n <PopperContent>\n <ButtonTrap cb={buttonTrapCallback} />\n {menuContent}\n <ButtonTrap cb={buttonTrapCallback} />\n </PopperContent>\n </DSPopperJS>\n )}\n </div>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;ACEA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAM,eAAe,OAAO;AAAA;AAAA,IAExB,CAAC,UAAW,MAAM,OAAO,yCAAyC;AAAA;AAGtE,MAAM,SAAS,OAAO,QAAQ;AAAA;AAAA;AAAA;AAK9B,MAAM,gBAAgB,OAAO;AAAA;AAAA;AAgB7B,MAAM,aAAa,CAAC,EAAE,SACpB,qCAAC;AAAA,EACC,eAAY;AAAA,EACZ,UAAU;AAAA,EACV,SAAS,CAAC,MAAM;AACd,MAAE,gBAAgB;AAClB,OAAG;AAAA,EACL;AAAA,CACF;AAGK,MAAM,gBAAyD,CAAC;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,MAAM;AAAA,EACvB,qBAAqB,MAAM;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACI;AACJ,QAAM,EAAE,kBAAkB,mBAAmB,eAAe;AAAA,IAC1D,kBAAkB;AAAA,IAClB,gBAAgB;AAAA,EAClB;AACA,QAAM,EAAE,gCAAgC,gBAAgB,WAAW,gBAAgB;AACnF,QAAM,gBAAgB,CAAC,oBAAoB,CAAC;AAC5C,QAAM,aAAa,CAAC;AAEpB,QAAM,yBAAyB,CAAC,MAAM;AACpC,uBAAmB,UAAU,CAAC;AAC9B,QAAI;AAAY,qCAA+B,UAAU,IAAI;AAAA,EAC/D;AAEA,YAAU,MAAM;AACd,UAAM,YAAY,MAAM;AACtB,qCAA+B,UAAU,IAAI;AAAA,IAC/C;AACA,WAAO,iBAAiB,QAAQ,SAAS;AAEzC,WAAO,MAAM;AACX,aAAO,oBAAoB,QAAQ,SAAS;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,UAAU,8BAA8B,CAAC;AAE7C,QAAM,qBAAqB,CAAC,MAAM;AAChC,mBAAe,UAAU,CAAC;AAC1B,mCAA+B,UAAU,KAAK;AAC9C,MAAE,gBAAgB;AAAA,EACpB;AAEA,QAAM,CAAC,kBAAkB,uBAAuB,SAAS,IAAI;AAE7D,QAAM,qBAAqB,YAAY,MAAM;AAC3C,gBAAY,UAAU,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AACvE,sBAAkB,MAAM;AAAA,EAC1B,GAAG,CAAC,UAAU,aAAa,gBAAgB,CAAC;AAC5C,SACE,qCAAC;AAAA,IAEC,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,IAClC,WAAW,CAAC,MAAM;AAChB,QAAE,gBAAgB;AAClB,UAAI,EAAE,SAAS,UAAU;AACvB,oBAAY,UAAU,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AACvE,yBAAiB,MAAM;AAAA,MACzB;AAGA,UAAI,CAAC,WAAW,WAAW,EAAE,SAAS,EAAE,IAAI,GAAG;AAC7C,UAAE,eAAe;AAAA,MACnB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,SAAS,OAAO;AAAA,KAEzB,qCAAC;AAAA,IAAa,MAAM,CAAC;AAAA,IAAe,eAAa,YAAY;AAAA,KAC3D,qCAAC;AAAA,IACC,SAAS;AAAA,IACT,YAAW;AAAA,IACX,cAAY;AAAA,IACZ,eAAY;AAAA,IACZ,MAAK;AAAA,IACL,UAAU;AAAA,IAEV,UAAU,CAAC,SAAS;AAClB,UAAI;AAAe,4BAAoB,IAAI;AAC3C,eAAS,UAAU;AAAA,IACrB;AAAA,IACA,UAAU,aAAa,eAAe,IAAI;AAAA,GAC5C,CACF,GACC,oBACC,qCAAC;AAAA,IACC;AAAA,IACA,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,eAAa,YAAY;AAAA,IACzB,0BAAyB;AAAA,IACzB,cAAc,CAAC,GAAG,CAAC;AAAA,IACnB,cAAY;AAAA,IACZ,QAAQ;AAAA,IACR,kBAAgB;AAAA,IAChB,mBAAmB,iCACd,eADc;AAAA,MAEjB,UAAU,OAAO,KAAK,SAAS,eAAe;AAAA,IAChD;AAAA,IACA,0BAA0B,CAAC,YAAY;AAAA,KAEvC,qCAAC,qBACC,qCAAC;AAAA,IAAW,IAAI;AAAA,GAAoB,GACnC,aACD,qCAAC;AAAA,IAAW,IAAI;AAAA,GAAoB,CACtC,CACF,CAEJ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/FilterTypes.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const FILTER_TYPES = {\n SELECT: 'ds-filter-select',\n MULTI_SELECT: 'ds-filter-multi-select',\n SINGLE_DATE: 'ds-filter-single-date',\n DATE_RANGE: 'ds-filter-date-range',\n DATE_SWITCHER: 'ds-filter-date-switcher',\n NUMBER_RANGE: 'ds-filter-number-range',\n CURRENCY_RANGE: 'ds-filter-currency-range',\n};\n"],
5
- "mappings": "AAAA;ACAO,MAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA;",
5
+ "mappings": "AAAA;ACAO,MAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAClB;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/applyOutOfTheBoxFilters.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { singleSelectFilterFn } from './singleSelectFilterFn';\nimport { multiSelectFilterFn } from './multiSelectFilterFn';\nimport { singleDateFilterFn } from './singleDateFilterFn';\nimport { dateRangeFilterFn } from './dateRangeFilterFn';\nimport { dateSwitcherFilterFn } from './dateSwitcherFilterFn';\nimport { numberRangeFilterFn } from './numberRangeFilterFn';\nimport { currencyRangeFilterFn } from './currencyRangeFilterFn';\nimport { FilterFn } from './types';\nimport { FILTER_TYPES } from '../FilterTypes';\nimport { TypescriptAppliedFilter, TypescriptRow } from '../../types/props';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filterMapper: Record<string, FilterFn<any>> = {\n [FILTER_TYPES.SELECT]: singleSelectFilterFn,\n [FILTER_TYPES.MULTI_SELECT]: multiSelectFilterFn,\n [FILTER_TYPES.SINGLE_DATE]: singleDateFilterFn,\n [FILTER_TYPES.DATE_RANGE]: dateRangeFilterFn,\n [FILTER_TYPES.DATE_SWITCHER]: dateSwitcherFilterFn,\n [FILTER_TYPES.NUMBER_RANGE]: numberRangeFilterFn,\n [FILTER_TYPES.CURRENCY_RANGE]: currencyRangeFilterFn,\n};\n\nexport const applyOutOfTheBoxFilters = (data: TypescriptRow[], filters: TypescriptAppliedFilter[]): TypescriptRow[] => {\n let filteredData = data;\n\n filters.forEach((filter) => {\n if (filter.type in filterMapper) {\n filteredData = filterMapper[filter.type](filteredData, filter.id, filter.value);\n }\n });\n\n return filteredData;\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA,MAAM,eAA8C;AAAA,GACjD,aAAa,SAAS;AAAA,GACtB,aAAa,eAAe;AAAA,GAC5B,aAAa,cAAc;AAAA,GAC3B,aAAa,aAAa;AAAA,GAC1B,aAAa,gBAAgB;AAAA,GAC7B,aAAa,eAAe;AAAA,GAC5B,aAAa,iBAAiB;AAAA;AAG1B,MAAM,0BAA0B,CAAC,MAAuB,YAAwD;AACrH,MAAI,eAAe;AAEnB,UAAQ,QAAQ,CAAC,WAAW;AAC1B,QAAI,OAAO,QAAQ,cAAc;AAC/B,qBAAe,aAAa,OAAO,MAAM,cAAc,OAAO,IAAI,OAAO;AAAA;AAAA;AAI7E,SAAO;AAAA;",
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA,MAAM,eAA8C;AAAA,GACjD,aAAa,SAAS;AAAA,GACtB,aAAa,eAAe;AAAA,GAC5B,aAAa,cAAc;AAAA,GAC3B,aAAa,aAAa;AAAA,GAC1B,aAAa,gBAAgB;AAAA,GAC7B,aAAa,eAAe;AAAA,GAC5B,aAAa,iBAAiB;AACjC;AAEO,MAAM,0BAA0B,CAAC,MAAuB,YAAwD;AACrH,MAAI,eAAe;AAEnB,UAAQ,QAAQ,CAAC,WAAW;AAC1B,QAAI,OAAO,QAAQ,cAAc;AAC/B,qBAAe,aAAa,OAAO,MAAM,cAAc,OAAO,IAAI,OAAO,KAAK;AAAA,IAChF;AAAA,EACF,CAAC;AAED,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/currencyRangeFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { FilterFn } from './types';\n\nconst getNumber = (str) => {\n if (str === null) return null;\n if (typeof str === 'number') return str;\n if (typeof str !== 'string') return null;\n return Number.parseFloat(\n str\n .split('')\n .filter((x) => ![',', '$'].includes(x))\n .join(''),\n );\n};\n\nconst isEmpty = (number) => Number.isNaN(number) || number === null || number === undefined;\n\nexport const currencyRangeFilterFn: FilterFn<{ from: string; to: string }> = (\n unfilteredData,\n filterKey,\n filterValue,\n) => {\n const fromNumber = getNumber(filterValue.from);\n const toNumber = getNumber(filterValue.to);\n\n return unfilteredData.filter(\n (datum) =>\n isEmpty(fromNumber) ||\n isEmpty(toNumber) ||\n (getNumber(datum[filterKey]) >= fromNumber && getNumber(datum[filterKey]) <= toNumber),\n );\n};\n"],
5
- "mappings": "AAAA;ACEA,MAAM,YAAY,CAAC,QAAQ;AACzB,MAAI,QAAQ;AAAM,WAAO;AACzB,MAAI,OAAO,QAAQ;AAAU,WAAO;AACpC,MAAI,OAAO,QAAQ;AAAU,WAAO;AACpC,SAAO,OAAO,WACZ,IACG,MAAM,IACN,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,SAAS,IACnC,KAAK;AAAA;AAIZ,MAAM,UAAU,CAAC,WAAW,OAAO,MAAM,WAAW,WAAW,QAAQ,WAAW;AAE3E,MAAM,wBAAgE,CAC3E,gBACA,WACA,gBACG;AACH,QAAM,aAAa,UAAU,YAAY;AACzC,QAAM,WAAW,UAAU,YAAY;AAEvC,SAAO,eAAe,OACpB,CAAC,UACC,QAAQ,eACR,QAAQ,aACP,UAAU,MAAM,eAAe,cAAc,UAAU,MAAM,eAAe;AAAA;",
5
+ "mappings": "AAAA;ACEA,MAAM,YAAY,CAAC,QAAQ;AACzB,MAAI,QAAQ;AAAM,WAAO;AACzB,MAAI,OAAO,QAAQ;AAAU,WAAO;AACpC,MAAI,OAAO,QAAQ;AAAU,WAAO;AACpC,SAAO,OAAO,WACZ,IACG,MAAM,EAAE,EACR,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,SAAS,CAAC,CAAC,EACrC,KAAK,EAAE,CACZ;AACF;AAEA,MAAM,UAAU,CAAC,WAAW,OAAO,MAAM,MAAM,KAAK,WAAW,QAAQ,WAAW;AAE3E,MAAM,wBAAgE,CAC3E,gBACA,WACA,gBACG;AACH,QAAM,aAAa,UAAU,YAAY,IAAI;AAC7C,QAAM,WAAW,UAAU,YAAY,EAAE;AAEzC,SAAO,eAAe,OACpB,CAAC,UACC,QAAQ,UAAU,KAClB,QAAQ,QAAQ,KACf,UAAU,MAAM,UAAU,KAAK,cAAc,UAAU,MAAM,UAAU,KAAK,QACjF;AACF;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/dateRangeFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import moment from 'moment';\nimport { momentFormat } from '../../configs/constants';\n// configs imports this file, we can't import from /configs/index.js directly\n// use file instead of index to avoid circular imports!\nimport { FilterFn } from './types';\n\nexport const dateRangeFilterFn: FilterFn<{\n startDate: string;\n endDate: string;\n}> = (unfilteredData, filterKey, filterValue) =>\n unfilteredData.filter(\n (datum) =>\n !(filterValue?.startDate && filterValue?.endDate) ||\n (moment(filterValue?.startDate, momentFormat).isSameOrBefore(datum[filterKey], 'day') &&\n moment(filterValue?.endDate, momentFormat).isSameOrAfter(datum[filterKey], 'day')),\n );\n"],
5
- "mappings": "AAAA;ACAA;AACA;AAKO,MAAM,oBAGR,CAAC,gBAAgB,WAAW,gBAC/B,eAAe,OACb,CAAC,UACC,CAAE,cAAa,aAAa,aAAa,YACxC,OAAO,aAAa,WAAW,cAAc,eAAe,MAAM,YAAY,UAC7E,OAAO,aAAa,SAAS,cAAc,cAAc,MAAM,YAAY;",
5
+ "mappings": "AAAA;ACAA;AACA;AAKO,MAAM,oBAGR,CAAC,gBAAgB,WAAW,gBAC/B,eAAe,OACb,CAAC,UACC,CAAE,cAAa,aAAa,aAAa,YACxC,OAAO,aAAa,WAAW,YAAY,EAAE,eAAe,MAAM,YAAY,KAAK,KAClF,OAAO,aAAa,SAAS,YAAY,EAAE,cAAc,MAAM,YAAY,KAAK,CACtF;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/dateSwitcherFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { dateRangeFilterFn } from './dateRangeFilterFn';\nimport { singleDateFilterFn } from './singleDateFilterFn';\n// configs imports this file, we can't import from /configs/index.js directly\n// use file instead of index to avoid circular imports!\nimport { FilterFn } from './types';\n\nexport const dateSwitcherFilterFn: FilterFn<{\n startDate: string;\n endDate: string;\n isDateRange: boolean;\n}> = (unfilteredData, filterKey, filterValue) =>\n filterValue.isDateRange\n ? dateRangeFilterFn(unfilteredData, filterKey, filterValue)\n : singleDateFilterFn(unfilteredData, filterKey, filterValue.startDate);\n"],
5
- "mappings": "AAAA;ACAA;AACA;AAKO,MAAM,uBAIR,CAAC,gBAAgB,WAAW,gBAC/B,YAAY,cACR,kBAAkB,gBAAgB,WAAW,eAC7C,mBAAmB,gBAAgB,WAAW,YAAY;",
5
+ "mappings": "AAAA;ACAA;AACA;AAKO,MAAM,uBAIR,CAAC,gBAAgB,WAAW,gBAC/B,YAAY,cACR,kBAAkB,gBAAgB,WAAW,WAAW,IACxD,mBAAmB,gBAAgB,WAAW,YAAY,SAAS;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/multiSelectFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { FilterFn } from './types';\n\nexport const multiSelectFilterFn: FilterFn<{ label: string }[]> = (unfilteredData, filterKey, filterValue) => {\n if (filterValue.length > 0) {\n return unfilteredData.filter((datum) => filterValue.some((item) => item.label === datum[filterKey].toString()));\n }\n return unfilteredData;\n};\n"],
5
- "mappings": "AAAA;ACEO,MAAM,sBAAqD,CAAC,gBAAgB,WAAW,gBAAgB;AAC5G,MAAI,YAAY,SAAS,GAAG;AAC1B,WAAO,eAAe,OAAO,CAAC,UAAU,YAAY,KAAK,CAAC,SAAS,KAAK,UAAU,MAAM,WAAW;AAAA;AAErG,SAAO;AAAA;",
5
+ "mappings": "AAAA;ACEO,MAAM,sBAAqD,CAAC,gBAAgB,WAAW,gBAAgB;AAC5G,MAAI,YAAY,SAAS,GAAG;AAC1B,WAAO,eAAe,OAAO,CAAC,UAAU,YAAY,KAAK,CAAC,SAAS,KAAK,UAAU,MAAM,WAAW,SAAS,CAAC,CAAC;AAAA,EAChH;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/numberRangeFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { FilterFn } from './types';\n\nconst isEmpty = (number) => number === null || number === undefined;\n\nexport const numberRangeFilterFn: FilterFn<{ from: number; to: number }> = (unfilteredData, filterKey, filterValue) =>\n unfilteredData.filter(\n (datum) =>\n isEmpty(filterValue?.from) ||\n isEmpty(filterValue?.to) ||\n (datum[filterKey] >= filterValue.from && datum[filterKey] <= filterValue.to),\n );\n"],
5
- "mappings": "AAAA;ACEA,MAAM,UAAU,CAAC,WAAW,WAAW,QAAQ,WAAW;AAEnD,MAAM,sBAA8D,CAAC,gBAAgB,WAAW,gBACrG,eAAe,OACb,CAAC,UACC,QAAQ,aAAa,SACrB,QAAQ,aAAa,OACpB,MAAM,cAAc,YAAY,QAAQ,MAAM,cAAc,YAAY;",
5
+ "mappings": "AAAA;ACEA,MAAM,UAAU,CAAC,WAAW,WAAW,QAAQ,WAAW;AAEnD,MAAM,sBAA8D,CAAC,gBAAgB,WAAW,gBACrG,eAAe,OACb,CAAC,UACC,QAAQ,aAAa,IAAI,KACzB,QAAQ,aAAa,EAAE,KACtB,MAAM,cAAc,YAAY,QAAQ,MAAM,cAAc,YAAY,EAC7E;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/singleDateFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import moment from 'moment';\nimport { momentFormat } from '../../configs/constants';\n// configs imports this file, we can't import from /configs/index.js directly\n// use file instead of index to avoid circular imports!\nimport { FilterFn } from './types';\n\nexport const singleDateFilterFn: FilterFn<string> = (unfilteredData, filterKey, filterValue) =>\n unfilteredData.filter((datum) => moment(filterValue, momentFormat).isSame(datum[filterKey], 'day'));\n"],
5
- "mappings": "AAAA;ACAA;AACA;AAKO,MAAM,qBAAuC,CAAC,gBAAgB,WAAW,gBAC9E,eAAe,OAAO,CAAC,UAAU,OAAO,aAAa,cAAc,OAAO,MAAM,YAAY;",
5
+ "mappings": "AAAA;ACAA;AACA;AAKO,MAAM,qBAAuC,CAAC,gBAAgB,WAAW,gBAC9E,eAAe,OAAO,CAAC,UAAU,OAAO,aAAa,YAAY,EAAE,OAAO,MAAM,YAAY,KAAK,CAAC;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Filters/singleSelectFilterFn.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { FilterFn } from './types';\n\nexport const singleSelectFilterFn: FilterFn<{ label: string }> = (unfilteredData, filterKey, filterValue) => {\n if (filterValue) {\n return unfilteredData.filter((datum) => datum[filterKey].toString() === filterValue.label);\n }\n return unfilteredData;\n};\n"],
5
- "mappings": "AAAA;ACEO,MAAM,uBAAoD,CAAC,gBAAgB,WAAW,gBAAgB;AAC3G,MAAI,aAAa;AACf,WAAO,eAAe,OAAO,CAAC,UAAU,MAAM,WAAW,eAAe,YAAY;AAAA;AAEtF,SAAO;AAAA;",
5
+ "mappings": "AAAA;ACEO,MAAM,uBAAoD,CAAC,gBAAgB,WAAW,gBAAgB;AAC3G,MAAI,aAAa;AACf,WAAO,eAAe,OAAO,CAAC,UAAU,MAAM,WAAW,SAAS,MAAM,YAAY,KAAK;AAAA,EAC3F;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -18,7 +18,7 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import * as React from "react";
21
- import React2, { useMemo, useLayoutEffect, useRef } from "react";
21
+ import React2, { useMemo, useCallback, useLayoutEffect, useRef } from "react";
22
22
  import { INTERNAL_COLUMNS } from "../../addons/Columns";
23
23
  import { DATA_TESTID } from "../../configs/constants";
24
24
  import { Cells } from "../../parts/Cells";
@@ -47,7 +47,7 @@ const DefaultRowContentRenderer = (props) => {
47
47
  backgroundColor = "white",
48
48
  dropIndicatorPosition,
49
49
  focusedRowId,
50
- selectedRowId,
50
+ drilldownRowId,
51
51
  compact
52
52
  } = props;
53
53
  const rowRef = useRef(null);
@@ -55,7 +55,7 @@ const DefaultRowContentRenderer = (props) => {
55
55
  const isDragging = draggableProps && draggableProps.isDragging;
56
56
  useLayoutEffect(() => {
57
57
  if (row.uid === focusedRowId) {
58
- rowRef.current.focus({ preventScroll: true });
58
+ rowRef.current?.focus();
59
59
  }
60
60
  }, [focusedRowId, row.uid]);
61
61
  const gridTemplateColProps = useMemo(() => ({
@@ -75,12 +75,18 @@ const DefaultRowContentRenderer = (props) => {
75
75
  }
76
76
  return padding;
77
77
  }, [row.depth, visibleColumns]);
78
+ const handleSelectDisableRow = useCallback((e) => {
79
+ if (disabledRows[row.uid]) {
80
+ e.preventDefault();
81
+ e.stopPropagation();
82
+ }
83
+ }, [disabledRows, row.uid]);
78
84
  const PureRowContent = useMemo(() => {
79
85
  const DetailsView = row.original.tableRowDetails;
80
86
  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(StyledCellContainer, __spreadProps(__spreadValues({
81
87
  ref: rowRef,
82
88
  key: row.uid,
83
- tabIndex: 0,
89
+ tabIndex: disabledRows[row.uid] ? -1 : 0,
84
90
  role: "row",
85
91
  "aria-rowindex": row.realIndex + 1,
86
92
  "aria-label": ariaLabelMessage(row, selection?.[row.uid] === true),
@@ -98,10 +104,11 @@ const DefaultRowContentRenderer = (props) => {
98
104
  isDragging,
99
105
  selected: noSelectionColumn && selection?.[row.uid] === true,
100
106
  disabled: disabledRows[row.uid],
101
- "data-testid": DATA_TESTID.DATA_TABLE_ROW_CONTENT
107
+ "data-testid": DATA_TESTID.DATA_TABLE_ROW_CONTENT,
108
+ onMouseDown: handleSelectDisableRow
102
109
  }), /* @__PURE__ */ React2.createElement(Cells, {
103
110
  row,
104
- isRowSelected: selectedRowId === row.uid,
111
+ isRowSelected: drilldownRowId === row.uid,
105
112
  isDragOverlay,
106
113
  key: row.uid
107
114
  })), isExpandable && row.isExpanded && DetailsView && /* @__PURE__ */ React2.createElement(DetailsWrapper, null, /* @__PURE__ */ React2.createElement(DetailsView, {
@@ -110,10 +117,10 @@ const DefaultRowContentRenderer = (props) => {
110
117
  })));
111
118
  }, [
112
119
  row,
120
+ disabledRows,
113
121
  selection,
114
122
  isExpandable,
115
123
  expandedRows,
116
- disabledRows,
117
124
  gridTemplateColProps,
118
125
  backgroundColor,
119
126
  compact,
@@ -122,7 +129,8 @@ const DefaultRowContentRenderer = (props) => {
122
129
  isDragging,
123
130
  isDragOverlay,
124
131
  noSelectionColumn,
125
- selectedRowId,
132
+ handleSelectDisableRow,
133
+ drilldownRowId,
126
134
  detailsIndent
127
135
  ]);
128
136
  return PureRowContent;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/RowRenderer/DefaultRowContentRenderer.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { useMemo, useLayoutEffect, useRef } from 'react';\nimport { INTERNAL_COLUMNS } from '../../addons/Columns';\nimport { DATA_TESTID } from '../../configs/constants';\nimport { Cells } from '../../parts/Cells';\nimport { DropIndicatorPosition } from '../../parts/HoC/SortableItemContext';\nimport { RowVariantProps } from '../../parts/RowVariants/types';\nimport { StyledCellContainer } from '../../styled';\nimport { TypescriptRow } from '../../types/props';\n\nconst DetailsWrapper = (props) => (\n // This can be further customized\n // eslint-disable-next-line react/prop-types\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n data-role=\"detail-view\"\n style={{\n borderTop: '1px solid #EBEDF0',\n borderBottom: '1px solid #EBEDF0',\n }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {props.children}\n </div>\n);\n\nconst ariaLabelMessage = (row: TypescriptRow, selected: boolean) =>\n `Row number ${row.realIndex + 1}${row.parentIndex !== null ? `, child of row number ${row.parentIndex + 1}` : ''}. ${\n selected ? 'Selected. ' : ''\n }To interact with the cells press enter`;\n\nexport const DefaultRowContentRenderer: React.ComponentType<RowVariantProps> = (props) => {\n const {\n row,\n ctx: {\n tableProps: { isExpandable, colsLayoutStyle, selection, noSelectionColumn, expandedRows, disabledRows },\n layoutHelpers: { gridLayout },\n visibleColumns,\n },\n draggableProps,\n isDragOverlay,\n backgroundColor = 'white',\n dropIndicatorPosition,\n focusedRowId,\n selectedRowId,\n compact,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n const isDndActive = draggableProps && draggableProps.active;\n const isDragging = draggableProps && draggableProps.isDragging;\n\n useLayoutEffect(() => {\n if (row.uid === focusedRowId) {\n rowRef.current.focus({ preventScroll: true });\n }\n }, [focusedRowId, row.uid]);\n\n const gridTemplateColProps = useMemo(\n () => ({\n cols: isDragOverlay ? ['24px', 'auto'] : gridLayout,\n isExpandable,\n colLayoutStyle: colsLayoutStyle,\n }),\n [isDragOverlay, gridLayout, colsLayoutStyle, isExpandable],\n );\n\n const detailsIndent = useMemo(() => {\n let padding = 0;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n if (INTERNAL_COLUMNS.includes(visibleColumns[i].id)) {\n padding += visibleColumns[i].width;\n } else {\n padding += row.depth * 32 + 15;\n break;\n }\n }\n return padding;\n }, [row.depth, visibleColumns]);\n\n const PureRowContent = useMemo(() => {\n const DetailsView = row.original.tableRowDetails;\n return (\n <>\n <StyledCellContainer\n ref={rowRef}\n key={row.uid}\n tabIndex={0}\n role=\"row\"\n aria-rowindex={row.realIndex + 1}\n aria-label={ariaLabelMessage(row, selection?.[row.uid] === true)}\n aria-level={row.depth + 1}\n aria-selected={selection?.[row.uid] === true}\n aria-expanded={isExpandable ? expandedRows[row.uid] === true : undefined}\n aria-disabled={disabledRows[row.uid]}\n {...gridTemplateColProps}\n backgroundColor={backgroundColor}\n height={compact ? '24px' : 'auto'}\n minHeight={compact ? '24px' : '36px'}\n isDropIndicatorPositionInside={dropIndicatorPosition === DropIndicatorPosition.Inside}\n shouldDisplayHover={!isDndActive && !isDragging && !isDragOverlay}\n isDragOverlay={isDragOverlay}\n isDragging={isDragging}\n selected={noSelectionColumn && selection?.[row.uid] === true}\n disabled={disabledRows[row.uid]}\n data-testid={DATA_TESTID.DATA_TABLE_ROW_CONTENT}\n >\n <Cells row={row} isRowSelected={selectedRowId === row.uid} isDragOverlay={isDragOverlay} key={row.uid} />\n </StyledCellContainer>\n {isExpandable && row.isExpanded && DetailsView && (\n <DetailsWrapper>\n <DetailsView row={row} detailsIndent={detailsIndent} />\n </DetailsWrapper>\n )}\n </>\n );\n }, [\n row,\n selection,\n isExpandable,\n expandedRows,\n disabledRows,\n gridTemplateColProps,\n backgroundColor,\n compact,\n dropIndicatorPosition,\n isDndActive,\n isDragging,\n isDragOverlay,\n noSelectionColumn,\n selectedRowId,\n detailsIndent,\n ]);\n\n return PureRowContent;\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { useMemo, useCallback, useLayoutEffect, useRef } from 'react';\nimport { INTERNAL_COLUMNS } from '../../addons/Columns';\nimport { DATA_TESTID } from '../../configs/constants';\nimport { Cells } from '../../parts/Cells';\nimport { DropIndicatorPosition } from '../../parts/HoC/SortableItemContext';\nimport { RowVariantProps } from '../../parts/RowVariants/types';\nimport { StyledCellContainer } from '../../styled';\nimport { TypescriptRow } from '../../types/props';\n\nconst DetailsWrapper = (props) => (\n // This can be further customized\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n data-role=\"detail-view\"\n style={{\n borderTop: '1px solid #EBEDF0',\n borderBottom: '1px solid #EBEDF0',\n }}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={(e) => e.stopPropagation()}\n >\n {props.children}\n </div>\n);\n\nconst ariaLabelMessage = (row: TypescriptRow, selected: boolean) =>\n `Row number ${row.realIndex + 1}${row.parentIndex !== null ? `, child of row number ${row.parentIndex + 1}` : ''}. ${\n selected ? 'Selected. ' : ''\n }To interact with the cells press enter`;\n\nexport const DefaultRowContentRenderer: React.ComponentType<RowVariantProps> = (props) => {\n const {\n row,\n ctx: {\n tableProps: { isExpandable, colsLayoutStyle, selection, noSelectionColumn, expandedRows, disabledRows },\n layoutHelpers: { gridLayout },\n visibleColumns,\n },\n draggableProps,\n isDragOverlay,\n backgroundColor = 'white',\n dropIndicatorPosition,\n focusedRowId,\n drilldownRowId,\n compact,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n const isDndActive = draggableProps && draggableProps.active;\n const isDragging = draggableProps && draggableProps.isDragging;\n\n useLayoutEffect(() => {\n if (row.uid === focusedRowId) {\n rowRef.current?.focus();\n }\n }, [focusedRowId, row.uid]);\n\n const gridTemplateColProps = useMemo(\n () => ({\n cols: isDragOverlay ? ['24px', 'auto'] : gridLayout,\n isExpandable,\n colLayoutStyle: colsLayoutStyle,\n }),\n [isDragOverlay, gridLayout, colsLayoutStyle, isExpandable],\n );\n\n const detailsIndent = useMemo(() => {\n let padding = 0;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n if (INTERNAL_COLUMNS.includes(visibleColumns[i].id)) {\n padding += visibleColumns[i].width;\n } else {\n padding += row.depth * 32 + 15;\n break;\n }\n }\n return padding;\n }, [row.depth, visibleColumns]);\n\n const handleSelectDisableRow = useCallback(\n (e) => {\n if (disabledRows[row.uid]) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n [disabledRows, row.uid],\n );\n const PureRowContent = useMemo(() => {\n const DetailsView = row.original.tableRowDetails;\n return (\n <>\n <StyledCellContainer\n ref={rowRef}\n key={row.uid}\n tabIndex={disabledRows[row.uid] ? -1 : 0}\n role=\"row\"\n aria-rowindex={row.realIndex + 1}\n aria-label={ariaLabelMessage(row, selection?.[row.uid] === true)}\n aria-level={row.depth + 1}\n aria-selected={selection?.[row.uid] === true}\n aria-expanded={isExpandable ? expandedRows[row.uid] === true : undefined}\n aria-disabled={disabledRows[row.uid]}\n {...gridTemplateColProps}\n backgroundColor={backgroundColor}\n height={compact ? '24px' : 'auto'}\n minHeight={compact ? '24px' : '36px'}\n isDropIndicatorPositionInside={dropIndicatorPosition === DropIndicatorPosition.Inside}\n shouldDisplayHover={!isDndActive && !isDragging && !isDragOverlay}\n isDragOverlay={isDragOverlay}\n isDragging={isDragging}\n selected={noSelectionColumn && selection?.[row.uid] === true}\n disabled={disabledRows[row.uid]}\n data-testid={DATA_TESTID.DATA_TABLE_ROW_CONTENT}\n onMouseDown={handleSelectDisableRow}\n >\n <Cells row={row} isRowSelected={drilldownRowId === row.uid} isDragOverlay={isDragOverlay} key={row.uid} />\n </StyledCellContainer>\n {isExpandable && row.isExpanded && DetailsView && (\n <DetailsWrapper>\n <DetailsView row={row} detailsIndent={detailsIndent} />\n </DetailsWrapper>\n )}\n </>\n );\n }, [\n row,\n disabledRows,\n selection,\n isExpandable,\n expandedRows,\n gridTemplateColProps,\n backgroundColor,\n compact,\n dropIndicatorPosition,\n isDndActive,\n isDragging,\n isDragOverlay,\n noSelectionColumn,\n handleSelectDisableRow,\n drilldownRowId,\n detailsIndent,\n ]);\n\n return PureRowContent;\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -50,7 +50,7 @@ const RowRenderer = (props) => {
50
50
  rowsLayout = [1],
51
51
  CustomRowContentRenderer,
52
52
  focusedRowId,
53
- selectedRowId,
53
+ drilldownRowId,
54
54
  isDragOverlay
55
55
  } = props;
56
56
  const ctx = useContext(DataTableContext);
@@ -72,12 +72,12 @@ const RowRenderer = (props) => {
72
72
  items: flattenedData,
73
73
  draggableProps,
74
74
  isDragOverlay,
75
- selectedRowId
75
+ drilldownRowId
76
76
  });
77
77
  const rowContentProps = __spreadProps(__spreadValues({}, props), {
78
78
  ctx,
79
79
  focusedRowId,
80
- selectedRowId,
80
+ drilldownRowId,
81
81
  draggableProps,
82
82
  dropIndicatorPosition
83
83
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/RowRenderer/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { useContext } from 'react';\nimport { DataTableContext } from '../../DataTableContext';\nimport { RowVariantProps } from '../../parts/RowVariants/types';\nimport { StyledFullsizeGrid } from '../../styled';\nimport { TypescriptRow } from '../../types/props';\nimport { DefaultRowContentRenderer } from './DefaultRowContentRenderer';\nimport { useRowRendererHandlers } from './useRowRendererHandlers';\nimport { useRowRendererProperties } from './useRowRendererProperties';\nimport { DropIndicator } from '../../parts/DropIndicator';\nimport { SortableItemContext } from '../../parts/HoC/SortableItemContext';\nimport { DATA_TESTID } from '../../configs/constants';\n\ninterface RowRendererProps {\n row: TypescriptRow;\n compact: boolean;\n itemIndex: number;\n isDragOverlay: boolean;\n minHeight: string;\n height: string;\n rowsLayout?: (string | number)[];\n colsLayout?: (string | number)[];\n CustomRowContentRenderer?: React.ComponentType<RowVariantProps>;\n focusedRowId: string;\n selectedRowId: string;\n backgroundColor?: string;\n}\n\n// CSS don't let us modify the spacing between the dots, so one solution is to use SVG\nconst magicDottedBorder = (\n <svg width=\"100%\" height=\"1px\">\n <line\n x1=\"0\"\n y1=\"0\"\n x2=\"100%\"\n y2=\"0\"\n stroke=\"#B0B9C8FF\"\n strokeWidth=\"1.5\"\n strokeDasharray=\"0, 5\"\n strokeDashoffset=\"0\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nconst RowRenderer: React.ComponentType<RowRendererProps> = (props) => {\n const {\n row,\n itemIndex,\n minHeight = '36px',\n height = 'auto',\n rowsLayout = [1],\n CustomRowContentRenderer,\n focusedRowId,\n selectedRowId,\n isDragOverlay,\n } = props;\n\n const ctx = useContext(DataTableContext);\n const { draggableProps } = useContext(SortableItemContext);\n const { flattenedData } = ctx;\n\n // ===========================================================================\n // Properties for the row\n // ===========================================================================\n\n const {\n userDataProperties,\n colsLayoutStyle,\n totalColumnsWidth,\n rowStyle,\n shouldAppendDottedBorder,\n dropIndicatorPosition,\n } = useRowRendererProperties({\n row,\n });\n\n // ===========================================================================\n // Handlers\n // ===========================================================================\n\n const { handleItemClick, handleKeyDown, handleOnBlur, handleOnFocus } = useRowRendererHandlers({\n row,\n itemIndex,\n items: flattenedData,\n draggableProps,\n isDragOverlay,\n selectedRowId,\n });\n\n const rowContentProps: RowVariantProps = {\n ...props,\n ctx,\n focusedRowId,\n selectedRowId,\n draggableProps,\n dropIndicatorPosition,\n };\n\n return (\n <StyledFullsizeGrid\n data-testid={DATA_TESTID.DATA_TABLE_ROW}\n key={row.uid}\n colsLayoutStyle={colsLayoutStyle}\n {...userDataProperties}\n totalColumnsWidth={totalColumnsWidth}\n style={rowStyle}\n onClick={handleItemClick}\n onKeyDown={handleKeyDown}\n onBlur={handleOnBlur}\n onFocus={handleOnFocus}\n data-expandable={Boolean(row.original.tableRowDetails)}\n data-is-row-expanded={row.isExpanded}\n rows={rowsLayout}\n minHeight={minHeight}\n height={height}\n >\n {CustomRowContentRenderer ? (\n <CustomRowContentRenderer {...rowContentProps} />\n ) : (\n <DefaultRowContentRenderer {...rowContentProps} key={row.uid} />\n )}\n {shouldAppendDottedBorder && magicDottedBorder}\n <DropIndicator\n vertical={false}\n dropIndicatorPosition={dropIndicatorPosition}\n isLast={row.index === flattenedData.length - 1 && draggableProps && draggableProps.isDragging}\n />\n </StyledFullsizeGrid>\n );\n};\n\nexport { RowRenderer };\nexport default RowRenderer;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;ACEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAkBA,MAAM,oBACJ,qCAAC,OAAD;AAAA,EAAK,OAAM;AAAA,EAAO,QAAO;AAAA,GACvB,qCAAC,QAAD;AAAA,EACE,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,QAAO;AAAA,EACP,aAAY;AAAA,EACZ,iBAAgB;AAAA,EAChB,kBAAiB;AAAA,EACjB,eAAc;AAAA;AAKpB,MAAM,cAAqD,CAAC,UAAU;AACpE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,aAAa,CAAC;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,MAAM,WAAW;AACvB,QAAM,EAAE,mBAAmB,WAAW;AACtC,QAAM,EAAE,kBAAkB;AAM1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,yBAAyB;AAAA,IAC3B;AAAA;AAOF,QAAM,EAAE,iBAAiB,eAAe,cAAc,kBAAkB,uBAAuB;AAAA,IAC7F;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA;AAGF,QAAM,kBAAmC,iCACpC,QADoC;AAAA,IAEvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAGF,SACE,qCAAC,oBAAD;AAAA,IACE,eAAa,YAAY;AAAA,IACzB,KAAK,IAAI;AAAA,IACT;AAAA,KACI,qBAJN;AAAA,IAKE;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,mBAAiB,QAAQ,IAAI,SAAS;AAAA,IACtC,wBAAsB,IAAI;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,MAEC,2BACC,qCAAC,0BAAD,mBAA8B,oBAE9B,qCAAC,2BAAD,iCAA+B,kBAA/B;AAAA,IAAgD,KAAK,IAAI;AAAA,OAE1D,4BAA4B,mBAC7B,qCAAC,eAAD;AAAA,IACE,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,IAAI,UAAU,cAAc,SAAS,KAAK,kBAAkB,eAAe;AAAA;AAAA;AAO3F,IAAO,sBAAQ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable react/prop-types */\nimport React, { useContext } from 'react';\nimport { DataTableContext } from '../../DataTableContext';\nimport { RowVariantProps } from '../../parts/RowVariants/types';\nimport { StyledFullsizeGrid } from '../../styled';\nimport { TypescriptRow } from '../../types/props';\nimport { DefaultRowContentRenderer } from './DefaultRowContentRenderer';\nimport { useRowRendererHandlers } from './useRowRendererHandlers';\nimport { useRowRendererProperties } from './useRowRendererProperties';\nimport { DropIndicator } from '../../parts/DropIndicator';\nimport { SortableItemContext } from '../../parts/HoC/SortableItemContext';\nimport { DATA_TESTID } from '../../configs/constants';\n\ninterface RowRendererProps {\n row: TypescriptRow;\n compact?: boolean;\n itemIndex: number;\n isDragOverlay: boolean;\n minHeight: string;\n height: string;\n rowsLayout?: (string | number)[];\n colsLayout?: (string | number)[];\n CustomRowContentRenderer?: React.ComponentType<RowVariantProps>;\n focusedRowId: string | null;\n drilldownRowId: string | null;\n backgroundColor?: string;\n}\n\n// CSS don't let us modify the spacing between the dots, so one solution is to use SVG\nconst magicDottedBorder = (\n <svg width=\"100%\" height=\"1px\">\n <line\n x1=\"0\"\n y1=\"0\"\n x2=\"100%\"\n y2=\"0\"\n stroke=\"#B0B9C8FF\"\n strokeWidth=\"1.5\"\n strokeDasharray=\"0, 5\"\n strokeDashoffset=\"0\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nconst RowRenderer: React.ComponentType<RowRendererProps> = (props) => {\n const {\n row,\n itemIndex,\n minHeight = '36px',\n height = 'auto',\n rowsLayout = [1],\n CustomRowContentRenderer,\n focusedRowId,\n drilldownRowId,\n isDragOverlay,\n } = props;\n\n const ctx = useContext(DataTableContext);\n const { draggableProps } = useContext(SortableItemContext);\n const { flattenedData } = ctx;\n\n // ===========================================================================\n // Properties for the row\n // ===========================================================================\n\n const {\n userDataProperties,\n colsLayoutStyle,\n totalColumnsWidth,\n rowStyle,\n shouldAppendDottedBorder,\n dropIndicatorPosition,\n } = useRowRendererProperties({\n row,\n });\n\n // ===========================================================================\n // Handlers\n // ===========================================================================\n\n const { handleItemClick, handleKeyDown, handleOnBlur, handleOnFocus } = useRowRendererHandlers({\n row,\n itemIndex,\n items: flattenedData,\n draggableProps,\n isDragOverlay,\n drilldownRowId,\n });\n\n const rowContentProps: RowVariantProps = {\n ...props,\n ctx,\n focusedRowId,\n drilldownRowId,\n draggableProps,\n dropIndicatorPosition,\n };\n\n return (\n <StyledFullsizeGrid\n data-testid={DATA_TESTID.DATA_TABLE_ROW}\n key={row.uid}\n colsLayoutStyle={colsLayoutStyle}\n {...userDataProperties}\n totalColumnsWidth={totalColumnsWidth}\n style={rowStyle}\n onClick={handleItemClick}\n onKeyDown={handleKeyDown}\n onBlur={handleOnBlur}\n onFocus={handleOnFocus}\n data-expandable={Boolean(row.original.tableRowDetails)}\n data-is-row-expanded={row.isExpanded}\n rows={rowsLayout}\n minHeight={minHeight}\n height={height}\n >\n {CustomRowContentRenderer ? (\n <CustomRowContentRenderer {...rowContentProps} />\n ) : (\n <DefaultRowContentRenderer {...rowContentProps} key={row.uid} />\n )}\n {shouldAppendDottedBorder && magicDottedBorder}\n <DropIndicator\n vertical={false}\n dropIndicatorPosition={dropIndicatorPosition}\n isLast={row.index === flattenedData.length - 1 && draggableProps && draggableProps.isDragging}\n />\n </StyledFullsizeGrid>\n );\n};\n\nexport { RowRenderer };\nexport default RowRenderer;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;ACEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAkBA,MAAM,oBACJ,qCAAC;AAAA,EAAI,OAAM;AAAA,EAAO,QAAO;AAAA,GACvB,qCAAC;AAAA,EACC,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,IAAG;AAAA,EACH,QAAO;AAAA,EACP,aAAY;AAAA,EACZ,iBAAgB;AAAA,EAChB,kBAAiB;AAAA,EACjB,eAAc;AAAA,CAChB,CACF;AAGF,MAAM,cAAqD,CAAC,UAAU;AACpE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,aAAa,CAAC,CAAC;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,MAAM,WAAW,gBAAgB;AACvC,QAAM,EAAE,mBAAmB,WAAW,mBAAmB;AACzD,QAAM,EAAE,kBAAkB;AAM1B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,yBAAyB;AAAA,IAC3B;AAAA,EACF,CAAC;AAMD,QAAM,EAAE,iBAAiB,eAAe,cAAc,kBAAkB,uBAAuB;AAAA,IAC7F;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,kBAAmC,iCACpC,QADoC;AAAA,IAEvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SACE,qCAAC;AAAA,IACC,eAAa,YAAY;AAAA,IACzB,KAAK,IAAI;AAAA,IACT;AAAA,KACI,qBAJL;AAAA,IAKC;AAAA,IACA,OAAO;AAAA,IACP,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,mBAAiB,QAAQ,IAAI,SAAS,eAAe;AAAA,IACrD,wBAAsB,IAAI;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,MAEC,2BACC,qCAAC,6CAA6B,gBAAiB,IAE/C,qCAAC,4DAA8B,kBAA9B;AAAA,IAA+C,KAAK,IAAI;AAAA,IAAK,GAE/D,4BAA4B,mBAC7B,qCAAC;AAAA,IACC,UAAU;AAAA,IACV;AAAA,IACA,QAAQ,IAAI,UAAU,cAAc,SAAS,KAAK,kBAAkB,eAAe;AAAA,GACrF,CACF;AAEJ;AAGA,IAAO,sBAAQ;",
6
6
  "names": []
7
7
  }
@@ -2,21 +2,31 @@ import * as React from "react";
2
2
  import { useCallback, useContext } from "react";
3
3
  import { DATA_TESTID } from "../../configs/constants";
4
4
  import { DataTableContext } from "../../DataTableContext";
5
- import { useDispatchRowsActions } from "../../redux/reducers";
6
5
  const useRowRendererHandlers = ({
7
6
  row,
8
7
  itemIndex,
9
8
  items,
10
9
  draggableProps,
11
10
  isDragOverlay,
12
- selectedRowId
11
+ drilldownRowId
13
12
  }) => {
14
13
  const {
15
- tableProps: { onRowClick, onRowFocus },
16
- virtualListHelpers: { scrollToIndex }
14
+ tableProps: { onRowClick, onRowFocus, disabledRows },
15
+ virtualListHelpers: { scrollToIndex },
16
+ setDrilldownRowId,
17
+ setFocusedRowId
17
18
  } = useContext(DataTableContext);
18
- const { setSelectedRowId, setFocusedRowId } = useDispatchRowsActions();
19
+ const isOptionFocuseable = (opt) => !disabledRows[opt.uid];
20
+ const findInCircularList = (list, from, criteria, step = 1) => {
21
+ for (let i = (from + step + list.length) % list.length; i !== from && from > -1; i = (i + step + list.length) % list.length) {
22
+ if (criteria(list[i]))
23
+ return i;
24
+ }
25
+ return from;
26
+ };
19
27
  const handleItemClick = useCallback((e, { original, uid } = row) => {
28
+ if (disabledRows[uid])
29
+ return;
20
30
  onRowClick(original, e, uid);
21
31
  onRowFocus({
22
32
  itemIndex,
@@ -25,7 +35,7 @@ const useRowRendererHandlers = ({
25
35
  }) => scrollToIndex(itemIndex, opts),
26
36
  original
27
37
  }, e);
28
- }, [row, onRowClick, onRowFocus, itemIndex, scrollToIndex]);
38
+ }, [row, disabledRows, onRowClick, onRowFocus, itemIndex, scrollToIndex]);
29
39
  const isActive = draggableProps && draggableProps.active;
30
40
  const handleKeyDown = useCallback((e) => {
31
41
  if (isDragOverlay || isActive) {
@@ -34,8 +44,8 @@ const useRowRendererHandlers = ({
34
44
  }
35
45
  if (e.code === "Enter") {
36
46
  e.preventDefault();
37
- if (selectedRowId !== row.uid) {
38
- setSelectedRowId(row.uid);
47
+ if (drilldownRowId !== row.uid) {
48
+ setDrilldownRowId(row.uid);
39
49
  setTimeout(() => {
40
50
  const focuseableCell = row.cells.find((cell) => cell.ref.current !== null);
41
51
  if (focuseableCell)
@@ -44,30 +54,46 @@ const useRowRendererHandlers = ({
44
54
  }
45
55
  }
46
56
  if (e.code === "Space") {
47
- e.preventDefault();
57
+ const { currentTarget, target } = e;
58
+ const isChildEvent = currentTarget !== target && currentTarget.contains(target);
59
+ if (!isChildEvent) {
60
+ e.preventDefault();
61
+ }
48
62
  handleItemClick(e, row);
49
63
  }
50
64
  if (e.code === "ArrowDown") {
51
65
  e.preventDefault();
52
- if (itemIndex + 1 < items.length)
53
- setFocusedRowId(items[itemIndex + 1].uid);
66
+ e.stopPropagation();
67
+ const next = findInCircularList(items, itemIndex, isOptionFocuseable);
68
+ setFocusedRowId(items[next].uid);
54
69
  }
55
70
  if (e.code === "ArrowUp") {
56
71
  e.preventDefault();
57
- if (itemIndex - 1 >= 0)
58
- setFocusedRowId(items[itemIndex - 1].uid);
72
+ const prev = findInCircularList(items, itemIndex, isOptionFocuseable, -1);
73
+ setFocusedRowId(items[prev].uid);
59
74
  }
60
- }, [isDragOverlay, isActive, selectedRowId, row, setSelectedRowId, handleItemClick, itemIndex, items, setFocusedRowId]);
75
+ }, [
76
+ isDragOverlay,
77
+ isActive,
78
+ drilldownRowId,
79
+ row,
80
+ setDrilldownRowId,
81
+ handleItemClick,
82
+ items,
83
+ itemIndex,
84
+ isOptionFocuseable,
85
+ setFocusedRowId
86
+ ]);
61
87
  const handleOnBlur = useCallback((e) => {
62
88
  if (e.relatedTarget?.getAttribute("data-testid") === "data-table-row-content") {
63
- setSelectedRowId(null);
89
+ setDrilldownRowId(null);
64
90
  }
65
- }, [setSelectedRowId]);
91
+ }, [setDrilldownRowId]);
66
92
  const handleOnFocus = useCallback((e) => {
67
- if (e.target && e.target.getAttribute("data-testid") === DATA_TESTID.DATA_TABLE_ROW_CONTENT) {
93
+ if (!disabledRows[row.uid] && e.target && e.target.getAttribute("data-testid") === DATA_TESTID.DATA_TABLE_ROW_CONTENT) {
68
94
  setFocusedRowId(row.uid);
69
95
  }
70
- }, [row.uid, setFocusedRowId]);
96
+ }, [row.uid, setFocusedRowId, disabledRows]);
71
97
  return { handleItemClick, handleKeyDown, handleOnBlur, handleOnFocus };
72
98
  };
73
99
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/RowRenderer/useRowRendererHandlers.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useContext } from 'react';\nimport { DATA_TESTID } from '../../configs/constants';\nimport { DataTableContext } from '../../DataTableContext';\nimport { SortableItemContextType } from '../../parts/HoC/SortableItemContext';\nimport { useDispatchRowsActions } from '../../redux/reducers';\nimport { TypescriptRow } from '../../types/props';\n\nexport const useRowRendererHandlers = ({\n row,\n itemIndex,\n items,\n draggableProps,\n isDragOverlay,\n selectedRowId,\n}: {\n row: TypescriptRow;\n itemIndex: number;\n items: TypescriptRow[];\n draggableProps: SortableItemContextType['draggableProps'];\n isDragOverlay: boolean;\n selectedRowId: string;\n}): {\n handleItemClick: React.MouseEventHandler;\n handleKeyDown: React.KeyboardEventHandler;\n handleOnBlur: React.FocusEventHandler;\n handleOnFocus: React.FocusEventHandler;\n} => {\n const {\n tableProps: { onRowClick, onRowFocus },\n virtualListHelpers: { scrollToIndex },\n } = useContext(DataTableContext);\n\n const { setSelectedRowId, setFocusedRowId } = useDispatchRowsActions();\n\n const handleItemClick = useCallback(\n (e, { original, uid } = row) => {\n // setSelectedRowId(null);\n onRowClick(original, e, uid);\n onRowFocus(\n {\n itemIndex,\n scrollToItem: (\n opts: { align: 'auto' | 'start' | 'center' | 'end' } = {\n align: 'start',\n },\n ) => scrollToIndex(itemIndex, opts),\n original,\n },\n e,\n );\n },\n [row, onRowClick, onRowFocus, itemIndex, scrollToIndex],\n );\n\n const isActive = draggableProps && draggableProps.active;\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (isDragOverlay || isActive) {\n e.preventDefault();\n return;\n }\n if (e.code === 'Enter') {\n e.preventDefault();\n if (selectedRowId !== row.uid) {\n setSelectedRowId(row.uid);\n setTimeout(() => {\n const focuseableCell = row.cells.find((cell) => cell.ref.current !== null);\n if (focuseableCell) focuseableCell.ref.current.focus();\n });\n }\n }\n if (e.code === 'Space') {\n e.preventDefault();\n handleItemClick(e, row);\n }\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n if (itemIndex + 1 < items.length) setFocusedRowId(items[itemIndex + 1].uid);\n }\n if (e.code === 'ArrowUp') {\n e.preventDefault();\n if (itemIndex - 1 >= 0) setFocusedRowId(items[itemIndex - 1].uid);\n }\n },\n [isDragOverlay, isActive, selectedRowId, row, setSelectedRowId, handleItemClick, itemIndex, items, setFocusedRowId],\n );\n\n const handleOnBlur = useCallback(\n (e) => {\n if (e.relatedTarget?.getAttribute('data-testid') === 'data-table-row-content') {\n setSelectedRowId(null);\n }\n },\n [setSelectedRowId],\n );\n\n const handleOnFocus: React.FocusEventHandler = useCallback(\n (e) => {\n if (e.target && e.target.getAttribute('data-testid') === DATA_TESTID.DATA_TABLE_ROW_CONTENT) {\n setFocusedRowId(row.uid);\n }\n },\n [row.uid, setFocusedRowId],\n );\n\n return { handleItemClick, handleKeyDown, handleOnBlur, handleOnFocus };\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AAEA;AAGO,MAAM,yBAAyB,CAAC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAaG;AACH,QAAM;AAAA,IACJ,YAAY,EAAE,YAAY;AAAA,IAC1B,oBAAoB,EAAE;AAAA,MACpB,WAAW;AAEf,QAAM,EAAE,kBAAkB,oBAAoB;AAE9C,QAAM,kBAAkB,YACtB,CAAC,GAAG,EAAE,UAAU,QAAQ,QAAQ;AAE9B,eAAW,UAAU,GAAG;AACxB,eACE;AAAA,MACE;AAAA,MACA,cAAc,CACZ,OAAuD;AAAA,QACrD,OAAO;AAAA,YAEN,cAAc,WAAW;AAAA,MAC9B;AAAA,OAEF;AAAA,KAGJ,CAAC,KAAK,YAAY,YAAY,WAAW;AAG3C,QAAM,WAAW,kBAAkB,eAAe;AAElD,QAAM,gBAAgB,YACpB,CAAC,MAA2B;AAC1B,QAAI,iBAAiB,UAAU;AAC7B,QAAE;AACF;AAAA;AAEF,QAAI,EAAE,SAAS,SAAS;AACtB,QAAE;AACF,UAAI,kBAAkB,IAAI,KAAK;AAC7B,yBAAiB,IAAI;AACrB,mBAAW,MAAM;AACf,gBAAM,iBAAiB,IAAI,MAAM,KAAK,CAAC,SAAS,KAAK,IAAI,YAAY;AACrE,cAAI;AAAgB,2BAAe,IAAI,QAAQ;AAAA;AAAA;AAAA;AAIrD,QAAI,EAAE,SAAS,SAAS;AACtB,QAAE;AACF,sBAAgB,GAAG;AAAA;AAErB,QAAI,EAAE,SAAS,aAAa;AAC1B,QAAE;AACF,UAAI,YAAY,IAAI,MAAM;AAAQ,wBAAgB,MAAM,YAAY,GAAG;AAAA;AAEzE,QAAI,EAAE,SAAS,WAAW;AACxB,QAAE;AACF,UAAI,YAAY,KAAK;AAAG,wBAAgB,MAAM,YAAY,GAAG;AAAA;AAAA,KAGjE,CAAC,eAAe,UAAU,eAAe,KAAK,kBAAkB,iBAAiB,WAAW,OAAO;AAGrG,QAAM,eAAe,YACnB,CAAC,MAAM;AACL,QAAI,EAAE,eAAe,aAAa,mBAAmB,0BAA0B;AAC7E,uBAAiB;AAAA;AAAA,KAGrB,CAAC;AAGH,QAAM,gBAAyC,YAC7C,CAAC,MAAM;AACL,QAAI,EAAE,UAAU,EAAE,OAAO,aAAa,mBAAmB,YAAY,wBAAwB;AAC3F,sBAAgB,IAAI;AAAA;AAAA,KAGxB,CAAC,IAAI,KAAK;AAGZ,SAAO,EAAE,iBAAiB,eAAe,cAAc;AAAA;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\nimport React, { useCallback, useContext } from 'react';\nimport { DATA_TESTID } from '../../configs/constants';\nimport { DataTableContext } from '../../DataTableContext';\nimport { SortableItemContextType } from '../../parts/HoC/SortableItemContext';\nimport { TypescriptRow } from '../../types/props';\n\nexport const useRowRendererHandlers = ({\n row,\n itemIndex,\n items,\n draggableProps,\n isDragOverlay,\n drilldownRowId,\n}: {\n row: TypescriptRow;\n itemIndex: number;\n items: TypescriptRow[];\n draggableProps: SortableItemContextType['draggableProps'];\n isDragOverlay: boolean;\n drilldownRowId: string | null;\n}): {\n handleItemClick: React.MouseEventHandler;\n handleKeyDown: React.KeyboardEventHandler;\n handleOnBlur: React.FocusEventHandler;\n handleOnFocus: React.FocusEventHandler;\n} => {\n const {\n tableProps: { onRowClick, onRowFocus, disabledRows },\n virtualListHelpers: { scrollToIndex },\n setDrilldownRowId,\n setFocusedRowId,\n } = useContext(DataTableContext);\n\n const isOptionFocuseable = (opt): boolean => !disabledRows[opt.uid];\n\n const findInCircularList = (\n list,\n from: number,\n criteria: (item) => boolean,\n step = 1,\n // eslint-disable-next-line max-params\n ): number => {\n for (\n let i = (from + step + list.length) % list.length;\n i !== from && from > -1;\n i = (i + step + list.length) % list.length\n ) {\n if (criteria(list[i])) return i;\n }\n return from; // return same item\n };\n\n const handleItemClick = useCallback(\n (e, { original, uid } = row) => {\n if (disabledRows[uid]) return;\n onRowClick(original, e, uid);\n onRowFocus(\n {\n itemIndex,\n scrollToItem: (\n opts: { align: 'auto' | 'start' | 'center' | 'end' } = {\n align: 'start',\n },\n ) => scrollToIndex(itemIndex, opts),\n original,\n },\n e,\n );\n },\n [row, disabledRows, onRowClick, onRowFocus, itemIndex, scrollToIndex],\n );\n\n const isActive = draggableProps && draggableProps.active;\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (isDragOverlay || isActive) {\n e.preventDefault();\n return;\n }\n if (e.code === 'Enter') {\n e.preventDefault();\n if (drilldownRowId !== row.uid) {\n setDrilldownRowId(row.uid);\n setTimeout(() => {\n const focuseableCell = row.cells.find((cell) => cell.ref.current !== null);\n if (focuseableCell) focuseableCell.ref.current.focus();\n });\n }\n }\n if (e.code === 'Space') {\n const { currentTarget, target } = e;\n const isChildEvent = currentTarget !== target && currentTarget.contains(target);\n if (!isChildEvent) {\n e.preventDefault();\n }\n handleItemClick(e, row);\n }\n if (e.code === 'ArrowDown') {\n e.preventDefault();\n e.stopPropagation();\n const next = findInCircularList(items, itemIndex, isOptionFocuseable);\n setFocusedRowId(items[next].uid);\n }\n if (e.code === 'ArrowUp') {\n e.preventDefault();\n const prev = findInCircularList(items, itemIndex, isOptionFocuseable, -1);\n setFocusedRowId(items[prev].uid);\n }\n },\n [\n isDragOverlay,\n isActive,\n drilldownRowId,\n row,\n setDrilldownRowId,\n handleItemClick,\n items,\n itemIndex,\n isOptionFocuseable,\n setFocusedRowId,\n ],\n );\n\n const handleOnBlur = useCallback(\n (e) => {\n if (e.relatedTarget?.getAttribute('data-testid') === 'data-table-row-content') {\n setDrilldownRowId(null);\n }\n },\n [setDrilldownRowId],\n );\n\n const handleOnFocus: React.FocusEventHandler = useCallback(\n (e) => {\n if (\n !disabledRows[row.uid] &&\n e.target &&\n e.target.getAttribute('data-testid') === DATA_TESTID.DATA_TABLE_ROW_CONTENT\n ) {\n setFocusedRowId(row.uid);\n }\n },\n [row.uid, setFocusedRowId, disabledRows],\n );\n\n return { handleItemClick, handleKeyDown, handleOnBlur, handleOnFocus };\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/RowRenderer/useRowRendererProperties.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useContext, useMemo } from 'react';\nimport { ColsLayoutStyle } from '../../configs/constants';\nimport { DataTableContext } from '../../DataTableContext';\nimport { TypescriptRow } from '../../types/props';\nimport { useRowStyle } from './useRowStyle';\n\nexport const useRowRendererProperties = ({\n row,\n}: {\n row: TypescriptRow;\n}): {\n userDataProperties: Record<string, unknown>;\n colsLayoutStyle: ColsLayoutStyle;\n totalColumnsWidth: string | number;\n} & ReturnType<typeof useRowStyle> => {\n const {\n tableProps: { colsLayoutStyle },\n layoutHelpers: { totalColumnsWidth },\n } = useContext(DataTableContext);\n\n const userDataProperties = useMemo(\n () =>\n Object.keys(row.original).reduce((acc, cur) => {\n if (cur.startsWith('data-')) acc[cur] = row.original[cur];\n return acc;\n }, {}),\n [row],\n );\n\n const styleRelatedProps = useRowStyle(row);\n\n return {\n userDataProperties,\n colsLayoutStyle,\n totalColumnsWidth,\n ...styleRelatedProps,\n };\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;AAAA;ACAA;AAEA;AAEA;AAEO,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,MAOoC;AACpC,QAAM;AAAA,IACJ,YAAY,EAAE;AAAA,IACd,eAAe,EAAE;AAAA,MACf,WAAW;AAEf,QAAM,qBAAqB,QACzB,MACE,OAAO,KAAK,IAAI,UAAU,OAAO,CAAC,KAAK,QAAQ;AAC7C,QAAI,IAAI,WAAW;AAAU,UAAI,OAAO,IAAI,SAAS;AACrD,WAAO;AAAA,KACN,KACL,CAAC;AAGH,QAAM,oBAAoB,YAAY;AAEtC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,KACG;AAAA;",
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;ACAA;AAEA;AAEA;AAEO,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,MAOoC;AACpC,QAAM;AAAA,IACJ,YAAY,EAAE;AAAA,IACd,eAAe,EAAE;AAAA,MACf,WAAW,gBAAgB;AAE/B,QAAM,qBAAqB,QACzB,MACE,OAAO,KAAK,IAAI,QAAQ,EAAE,OAAO,CAAC,KAAK,QAAQ;AAC7C,QAAI,IAAI,WAAW,OAAO;AAAG,UAAI,OAAO,IAAI,SAAS;AACrD,WAAO;AAAA,EACT,GAAG,CAAC,CAAC,GACP,CAAC,GAAG,CACN;AAEA,QAAM,oBAAoB,YAAY,GAAG;AAEzC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,KACG;AAEP;",
6
6
  "names": []
7
7
  }