@elliemae/ds-data-table 3.60.0-next.5 → 3.60.0-next.50

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 (207) hide show
  1. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js +184 -0
  2. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js.map +7 -0
  3. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +19 -3
  4. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  5. package/dist/cjs/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js +138 -0
  6. package/dist/cjs/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js.map +7 -0
  7. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js +8 -2
  8. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js.map +2 -2
  9. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js +177 -0
  10. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js.map +7 -0
  11. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js +10 -3
  12. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js.map +2 -2
  13. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js +161 -0
  14. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js.map +7 -0
  15. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/index.js +3 -0
  16. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/index.js.map +2 -2
  17. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js +181 -0
  18. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js.map +7 -0
  19. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js +7 -2
  20. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  21. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +3 -0
  22. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  23. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js +202 -0
  24. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js.map +7 -0
  25. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js +68 -0
  26. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js.map +7 -0
  27. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js +67 -0
  28. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js.map +7 -0
  29. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js +67 -0
  30. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js.map +7 -0
  31. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js +66 -0
  32. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js.map +7 -0
  33. package/dist/cjs/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js +118 -0
  34. package/dist/cjs/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js.map +7 -0
  35. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js +15 -2
  36. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js.map +2 -2
  37. package/dist/cjs/addons/Filters/Components/index.js +26 -0
  38. package/dist/cjs/addons/Filters/Components/index.js.map +2 -2
  39. package/dist/cjs/configs/useAutocalculated/index.js +5 -1
  40. package/dist/cjs/configs/useAutocalculated/index.js.map +2 -2
  41. package/dist/cjs/configs/useTableResizeCb.js +9 -2
  42. package/dist/cjs/configs/useTableResizeCb.js.map +2 -2
  43. package/dist/cjs/constants/index.js +2 -1
  44. package/dist/cjs/constants/index.js.map +2 -2
  45. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js +96 -0
  46. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js.map +7 -0
  47. package/dist/cjs/exported-related/FilterBar/index.js +3 -1
  48. package/dist/cjs/exported-related/FilterBar/index.js.map +2 -2
  49. package/dist/cjs/exported-related/FilterPopover/FilterPopoverV2.js +158 -0
  50. package/dist/cjs/exported-related/FilterPopover/FilterPopoverV2.js.map +7 -0
  51. package/dist/cjs/exported-related/FilterPopover/index.js +33 -33
  52. package/dist/cjs/exported-related/FilterPopover/index.js.map +2 -2
  53. package/dist/cjs/exported-related/FilterPopover/styled.js +62 -0
  54. package/dist/cjs/exported-related/FilterPopover/styled.js.map +7 -0
  55. package/dist/cjs/exported-related/FilterPopover/types.js.map +1 -1
  56. package/dist/cjs/exported-related/FilterPopover/useGetFilterHandlers.js.map +1 -1
  57. package/dist/cjs/exported-related/FilterPopover/useOnClickOutside.js +60 -0
  58. package/dist/cjs/exported-related/FilterPopover/useOnClickOutside.js.map +7 -0
  59. package/dist/cjs/exported-related/FilterTypes.js +11 -1
  60. package/dist/cjs/exported-related/FilterTypes.js.map +2 -2
  61. package/dist/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +3 -2
  62. package/dist/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js.map +2 -2
  63. package/dist/cjs/exported-related/index.js +1 -0
  64. package/dist/cjs/exported-related/index.js.map +2 -2
  65. package/dist/cjs/index.js +1 -0
  66. package/dist/cjs/index.js.map +2 -2
  67. package/dist/cjs/parts/FilterBar/DeprecatedDropdown.js +2 -2
  68. package/dist/cjs/parts/FilterBar/DeprecatedDropdown.js.map +2 -2
  69. package/dist/cjs/parts/FilterBar/FiltersBar.js +9 -3
  70. package/dist/cjs/parts/FilterBar/FiltersBar.js.map +2 -2
  71. package/dist/cjs/parts/FilterBar/components/DateRangePill.js +21 -6
  72. package/dist/cjs/parts/FilterBar/components/DateRangePill.js.map +2 -2
  73. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js +22 -6
  74. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js.map +2 -2
  75. package/dist/cjs/parts/FilterBar/components/FreeTextSearchPill.js +25 -5
  76. package/dist/cjs/parts/FilterBar/components/FreeTextSearchPill.js.map +2 -2
  77. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js +11 -5
  78. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  79. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js +28 -5
  80. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js.map +2 -2
  81. package/dist/cjs/parts/FilterBar/components/SelectPill.js +25 -5
  82. package/dist/cjs/parts/FilterBar/components/SelectPill.js.map +2 -2
  83. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js +26 -5
  84. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js.map +2 -2
  85. package/dist/cjs/parts/Filters/index.js +11 -1
  86. package/dist/cjs/parts/Filters/index.js.map +2 -2
  87. package/dist/cjs/parts/Headers/HeaderCell.js +10 -1
  88. package/dist/cjs/parts/Headers/HeaderCell.js.map +2 -2
  89. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  90. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js +154 -0
  91. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js.map +7 -0
  92. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +19 -3
  93. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  94. package/dist/esm/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js +108 -0
  95. package/dist/esm/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js.map +7 -0
  96. package/dist/esm/addons/Filters/Components/DateRangeFilter/index.js +8 -2
  97. package/dist/esm/addons/Filters/Components/DateRangeFilter/index.js.map +2 -2
  98. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js +147 -0
  99. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js.map +7 -0
  100. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/index.js +10 -3
  101. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/index.js.map +2 -2
  102. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js +131 -0
  103. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js.map +7 -0
  104. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/index.js +3 -0
  105. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/index.js.map +2 -2
  106. package/dist/esm/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js +151 -0
  107. package/dist/esm/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js.map +7 -0
  108. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js +7 -2
  109. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  110. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +3 -0
  111. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  112. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js +172 -0
  113. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js.map +7 -0
  114. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js +38 -0
  115. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js.map +7 -0
  116. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js +37 -0
  117. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js.map +7 -0
  118. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js +37 -0
  119. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js.map +7 -0
  120. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js +36 -0
  121. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js.map +7 -0
  122. package/dist/esm/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js +88 -0
  123. package/dist/esm/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js.map +7 -0
  124. package/dist/esm/addons/Filters/Components/SingleDateFilter/index.js +15 -2
  125. package/dist/esm/addons/Filters/Components/SingleDateFilter/index.js.map +2 -2
  126. package/dist/esm/addons/Filters/Components/index.js +22 -0
  127. package/dist/esm/addons/Filters/Components/index.js.map +2 -2
  128. package/dist/esm/configs/useAutocalculated/index.js +5 -1
  129. package/dist/esm/configs/useAutocalculated/index.js.map +2 -2
  130. package/dist/esm/configs/useTableResizeCb.js +9 -2
  131. package/dist/esm/configs/useTableResizeCb.js.map +2 -2
  132. package/dist/esm/constants/index.js +2 -1
  133. package/dist/esm/constants/index.js.map +2 -2
  134. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js +74 -0
  135. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js.map +7 -0
  136. package/dist/esm/exported-related/FilterBar/index.js +3 -1
  137. package/dist/esm/exported-related/FilterBar/index.js.map +2 -2
  138. package/dist/esm/exported-related/FilterPopover/FilterPopoverV2.js +128 -0
  139. package/dist/esm/exported-related/FilterPopover/FilterPopoverV2.js.map +7 -0
  140. package/dist/esm/exported-related/FilterPopover/index.js +26 -26
  141. package/dist/esm/exported-related/FilterPopover/index.js.map +2 -2
  142. package/dist/esm/exported-related/FilterPopover/styled.js +32 -0
  143. package/dist/esm/exported-related/FilterPopover/styled.js.map +7 -0
  144. package/dist/esm/exported-related/FilterPopover/useGetFilterHandlers.js.map +1 -1
  145. package/dist/esm/exported-related/FilterPopover/useOnClickOutside.js +30 -0
  146. package/dist/esm/exported-related/FilterPopover/useOnClickOutside.js.map +7 -0
  147. package/dist/esm/exported-related/FilterTypes.js +11 -1
  148. package/dist/esm/exported-related/FilterTypes.js.map +2 -2
  149. package/dist/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +3 -2
  150. package/dist/esm/exported-related/Filters/applyOutOfTheBoxFilters.js.map +2 -2
  151. package/dist/esm/exported-related/index.js +2 -1
  152. package/dist/esm/exported-related/index.js.map +2 -2
  153. package/dist/esm/index.js +2 -0
  154. package/dist/esm/index.js.map +2 -2
  155. package/dist/esm/parts/FilterBar/DeprecatedDropdown.js +1 -1
  156. package/dist/esm/parts/FilterBar/DeprecatedDropdown.js.map +1 -1
  157. package/dist/esm/parts/FilterBar/FiltersBar.js +9 -3
  158. package/dist/esm/parts/FilterBar/FiltersBar.js.map +2 -2
  159. package/dist/esm/parts/FilterBar/components/DateRangePill.js +22 -7
  160. package/dist/esm/parts/FilterBar/components/DateRangePill.js.map +2 -2
  161. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js +23 -7
  162. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js.map +2 -2
  163. package/dist/esm/parts/FilterBar/components/FreeTextSearchPill.js +25 -5
  164. package/dist/esm/parts/FilterBar/components/FreeTextSearchPill.js.map +2 -2
  165. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js +11 -5
  166. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  167. package/dist/esm/parts/FilterBar/components/NumberRangePill.js +29 -6
  168. package/dist/esm/parts/FilterBar/components/NumberRangePill.js.map +2 -2
  169. package/dist/esm/parts/FilterBar/components/SelectPill.js +25 -5
  170. package/dist/esm/parts/FilterBar/components/SelectPill.js.map +2 -2
  171. package/dist/esm/parts/FilterBar/components/SingleDatePill.js +26 -5
  172. package/dist/esm/parts/FilterBar/components/SingleDatePill.js.map +2 -2
  173. package/dist/esm/parts/Filters/index.js +22 -2
  174. package/dist/esm/parts/Filters/index.js.map +2 -2
  175. package/dist/esm/parts/Headers/HeaderCell.js +11 -2
  176. package/dist/esm/parts/Headers/HeaderCell.js.map +2 -2
  177. package/dist/esm/react-desc-prop-types.js.map +2 -2
  178. package/dist/types/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.d.ts +8 -0
  179. package/dist/types/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.d.ts +8 -0
  180. package/dist/types/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.d.ts +9 -0
  181. package/dist/types/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.d.ts +3 -0
  182. package/dist/types/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.d.ts +8 -0
  183. package/dist/types/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.d.ts +11 -0
  184. package/dist/types/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.d.ts +6 -0
  185. package/dist/types/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.d.ts +6 -0
  186. package/dist/types/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.d.ts +6 -0
  187. package/dist/types/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.d.ts +6 -0
  188. package/dist/types/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.d.ts +5 -0
  189. package/dist/types/addons/Filters/Components/index.d.ts +10 -0
  190. package/dist/types/configs/useTableResizeCb.d.ts +1 -0
  191. package/dist/types/constants/index.d.ts +4 -0
  192. package/dist/types/exported-related/FilterBar/PillsFromDataTableFilters.d.ts +12 -0
  193. package/dist/types/exported-related/FilterBar/index.d.ts +1 -0
  194. package/dist/types/exported-related/FilterPopover/FilterPopoverV2.d.ts +3 -0
  195. package/dist/types/exported-related/FilterPopover/styled.d.ts +6 -0
  196. package/dist/types/exported-related/FilterPopover/types.d.ts +19 -0
  197. package/dist/types/exported-related/FilterPopover/useGetFilterHandlers.d.ts +2 -2
  198. package/dist/types/exported-related/FilterPopover/useOnClickOutside.d.ts +1 -0
  199. package/dist/types/exported-related/FilterTypes.d.ts +10 -0
  200. package/dist/types/exported-related/index.d.ts +1 -1
  201. package/dist/types/index.d.ts +1 -1
  202. package/dist/types/react-desc-prop-types.d.ts +3 -2
  203. package/dist/types/tests/filters/DSDatatable.PUI-17318.test.d.ts +1 -0
  204. package/dist/types/tests/playwright/DSDataTable.ControlledFilterTestRenderer.d.ts +2 -0
  205. package/dist/types/tests/playwright/DSDataTable.ControlledHiddenPanelTestRenderer.d.ts +1 -0
  206. package/dist/types/tests/playwright/GenericExampleTable.d.ts +1 -0
  207. package/package.json +54 -52
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/configs/useAutocalculated/index.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable import/no-cycle */\n/* eslint-disable no-continue */\n/* eslint-disable consistent-return */\n/* eslint-disable no-plusplus */\n/* eslint-disable max-statements */\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport { useVirtual, defaultRangeExtractor, type Range } from 'react-virtual';\nimport { type DSDataTableT } from '../../react-desc-prop-types.js';\nimport { useTableColsWithAddons } from '../useTableColsWithAddons.js';\nimport { useRowFlattenization } from '../useRowFlattenization.js';\nimport { usePaginationConfig } from '../usePaginationConfig.js';\nimport { columnsToGrid } from '../../helpers/columnsToGrid.js';\nimport { ColsLayoutStyle } from '../constants.js';\nimport { useTableResizeCb } from '../useTableResizeCb.js';\n\nconst estimateSize = () => 36;\n\nexport const useAutoCalculated = (propsWithDefaults: DSDataTableT.InternalProps): DSDataTableT.UseAutoCalculatedT => {\n const { actionRef, colsLayoutStyle, hiddenColumns, isLoading } = propsWithDefaults;\n\n const virtualListRef = useRef<HTMLDivElement | null>(null);\n const [bodyClientWidth, setBodyClientWidth] = React.useState<number | string>('100%');\n const columnHeaderRef = useRef<HTMLDivElement | null>(null);\n const lastSelected = useRef<number>(-1);\n\n // ===========================================================================\n // Column config\n // ===========================================================================\n const visibleColumns = useTableColsWithAddons(propsWithDefaults, hiddenColumns);\n\n // ===========================================================================\n // Data flattenization and pagination\n // ===========================================================================\n\n const [flattenedData, allDataFlattened] = useRowFlattenization(propsWithDefaults);\n\n const [paginatedData, paginationHelpers] = usePaginationConfig(propsWithDefaults, flattenedData);\n\n const dataLength = useMemo(() => (paginatedData || flattenedData).length, [flattenedData, paginatedData]);\n\n // when rangeExtractor is invoked this will be filled with the current range\n const visibleRangeRef = useRef<Range>({ start: 0, end: 0, overscan: 15, size: dataLength });\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n const virtualListHelpers = useVirtual({\n size: dataLength,\n parentRef: virtualListRef,\n overscan: 15,\n paddingStart: columnHeaderRef.current?.getBoundingClientRect()?.height ?? 24,\n estimateSize,\n rangeExtractor: React.useCallback((range: Range) => {\n visibleRangeRef.current = range;\n\n return defaultRangeExtractor(range);\n }, []),\n });\n\n // ===========================================================================\n // Empty content config\n // ===========================================================================\n\n const isEmptyContent = useMemo(() => !isLoading && flattenedData.length === 0, [isLoading, flattenedData.length]);\n\n const firstFocuseableColumnHeaderId = useMemo(() => {\n for (let i = 0; i < visibleColumns.length; i++) {\n const column = visibleColumns[i];\n if (column.isFocuseable === false && column.id !== 'expander' && column.id !== 'multiSelecter') {\n continue;\n }\n return column.id;\n }\n }, [visibleColumns]);\n\n // ===========================================================================\n // Layout config\n // ===========================================================================\n\n const gridLayout = useMemo(() => columnsToGrid(visibleColumns, colsLayoutStyle), [colsLayoutStyle, visibleColumns]);\n\n // We need to listen and update the state based on this props\n const totalColumnsWidth = useMemo(\n () =>\n colsLayoutStyle === ColsLayoutStyle.Fixed\n ? gridLayout.reduce((acc: number, cur: string) => acc + Number.parseInt(cur, 10), 0)\n : '100%',\n [colsLayoutStyle, gridLayout],\n );\n\n const layoutHelpers = useMemo(\n () => ({\n gridLayout,\n totalColumnsWidth,\n }),\n [gridLayout, totalColumnsWidth],\n );\n\n useTableResizeCb({ virtualListRef, propsWithDefault: propsWithDefaults });\n\n // ===========================================================================\n // Action ref setup\n // ===========================================================================\n useEffect(() => {\n if (actionRef) {\n actionRef.current.scrollToIndex = virtualListHelpers.scrollToIndex;\n actionRef.current.scrollToOffset = virtualListHelpers.scrollToOffset;\n }\n }, [actionRef, virtualListHelpers.scrollToIndex, virtualListHelpers.scrollToOffset]);\n\n return {\n visibleRangeRef,\n layoutHelpers,\n paginationHelpers,\n visibleColumns,\n virtualListHelpers,\n flattenedData: paginatedData || flattenedData,\n allDataFlattened,\n isEmptyContent,\n firstFocuseableColumnHeaderId,\n virtualListRef,\n columnHeaderRef,\n lastSelected,\n bodyClientWidth,\n setBodyClientWidth,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADKvB,mBAAkD;AAClD,2BAA8D;AAE9D,oCAAuC;AACvC,kCAAqC;AACrC,iCAAoC;AACpC,2BAA8B;AAC9B,uBAAgC;AAChC,8BAAiC;AAEjC,MAAM,eAAe,MAAM;AAEpB,MAAM,oBAAoB,CAAC,sBAAmF;AACnH,QAAM,EAAE,WAAW,iBAAiB,eAAe,UAAU,IAAI;AAEjE,QAAM,qBAAiB,qBAA8B,IAAI;AACzD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,aAAAA,QAAM,SAA0B,MAAM;AACpF,QAAM,sBAAkB,qBAA8B,IAAI;AAC1D,QAAM,mBAAe,qBAAe,EAAE;AAKtC,QAAM,qBAAiB,sDAAuB,mBAAmB,aAAa;AAM9E,QAAM,CAAC,eAAe,gBAAgB,QAAI,kDAAqB,iBAAiB;AAEhF,QAAM,CAAC,eAAe,iBAAiB,QAAI,gDAAoB,mBAAmB,aAAa;AAE/F,QAAM,iBAAa,sBAAQ,OAAO,iBAAiB,eAAe,QAAQ,CAAC,eAAe,aAAa,CAAC;AAGxG,QAAM,sBAAkB,qBAAc,EAAE,OAAO,GAAG,KAAK,GAAG,UAAU,IAAI,MAAM,WAAW,CAAC;AAG1F,QAAM,yBAAqB,iCAAW;AAAA,IACpC,MAAM;AAAA,IACN,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc,gBAAgB,SAAS,sBAAsB,GAAG,UAAU;AAAA,IAC1E;AAAA,IACA,gBAAgB,aAAAA,QAAM,YAAY,CAAC,UAAiB;AAClD,sBAAgB,UAAU;AAE1B,iBAAO,4CAAsB,KAAK;AAAA,IACpC,GAAG,CAAC,CAAC;AAAA,EACP,CAAC;AAMD,QAAM,qBAAiB,sBAAQ,MAAM,CAAC,aAAa,cAAc,WAAW,GAAG,CAAC,WAAW,cAAc,MAAM,CAAC;AAEhH,QAAM,oCAAgC,sBAAQ,MAAM;AAClD,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,YAAM,SAAS,eAAe,CAAC;AAC/B,UAAI,OAAO,iBAAiB,SAAS,OAAO,OAAO,cAAc,OAAO,OAAO,iBAAiB;AAC9F;AAAA,MACF;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAMnB,QAAM,iBAAa,sBAAQ,UAAM,oCAAc,gBAAgB,eAAe,GAAG,CAAC,iBAAiB,cAAc,CAAC;AAGlH,QAAM,wBAAoB;AAAA,IACxB,MACE,oBAAoB,iCAAgB,QAChC,WAAW,OAAO,CAAC,KAAa,QAAgB,MAAM,OAAO,SAAS,KAAK,EAAE,GAAG,CAAC,IACjF;AAAA,IACN,CAAC,iBAAiB,UAAU;AAAA,EAC9B;AAEA,QAAM,oBAAgB;AAAA,IACpB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,YAAY,iBAAiB;AAAA,EAChC;AAEA,gDAAiB,EAAE,gBAAgB,kBAAkB,kBAAkB,CAAC;AAKxE,8BAAU,MAAM;AACd,QAAI,WAAW;AACb,gBAAU,QAAQ,gBAAgB,mBAAmB;AACrD,gBAAU,QAAQ,iBAAiB,mBAAmB;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,WAAW,mBAAmB,eAAe,mBAAmB,cAAc,CAAC;AAEnF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,iBAAiB;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["/* eslint-disable import/no-cycle */\n/* eslint-disable no-continue */\n/* eslint-disable consistent-return */\n/* eslint-disable no-plusplus */\n/* eslint-disable max-statements */\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport { useVirtual, defaultRangeExtractor, type Range } from 'react-virtual';\nimport { type DSDataTableT } from '../../react-desc-prop-types.js';\nimport { useTableColsWithAddons } from '../useTableColsWithAddons.js';\nimport { useRowFlattenization } from '../useRowFlattenization.js';\nimport { usePaginationConfig } from '../usePaginationConfig.js';\nimport { columnsToGrid } from '../../helpers/columnsToGrid.js';\nimport { ColsLayoutStyle } from '../constants.js';\nimport { useTableResizeCb } from '../useTableResizeCb.js';\n\nconst estimateSize = () => 36;\n\nexport const useAutoCalculated = (propsWithDefaults: DSDataTableT.InternalProps): DSDataTableT.UseAutoCalculatedT => {\n const { actionRef, colsLayoutStyle, hiddenColumns, isLoading } = propsWithDefaults;\n\n const virtualListRef = useRef<HTMLDivElement | null>(null);\n const [bodyClientWidth, setBodyClientWidth] = React.useState<number | string>('100%');\n const columnHeaderRef = useRef<HTMLDivElement | null>(null);\n const lastSelected = useRef<number>(-1);\n\n // ===========================================================================\n // Column config\n // ===========================================================================\n const visibleColumns = useTableColsWithAddons(propsWithDefaults, hiddenColumns);\n\n // ===========================================================================\n // Data flattenization and pagination\n // ===========================================================================\n\n const [flattenedData, allDataFlattened] = useRowFlattenization(propsWithDefaults);\n\n const [paginatedData, paginationHelpers] = usePaginationConfig(propsWithDefaults, flattenedData);\n\n const dataLength = useMemo(() => (paginatedData || flattenedData).length, [flattenedData, paginatedData]);\n\n // when rangeExtractor is invoked this will be filled with the current range\n const visibleRangeRef = useRef<Range>({ start: 0, end: 0, overscan: 15, size: dataLength });\n // estimateSize should not be really required given what was stated on\n // https://github.com/tannerlinsley/react-virtual/issues/23\n const virtualListHelpers = useVirtual({\n size: dataLength,\n parentRef: virtualListRef,\n overscan: 15,\n paddingStart: columnHeaderRef.current?.getBoundingClientRect()?.height ?? 24,\n estimateSize,\n rangeExtractor: React.useCallback((range: Range) => {\n visibleRangeRef.current = range;\n\n return defaultRangeExtractor(range);\n }, []),\n });\n\n // ===========================================================================\n // Empty content config\n // ===========================================================================\n\n const isEmptyContent = useMemo(() => !isLoading && flattenedData.length === 0, [isLoading, flattenedData.length]);\n\n const firstFocuseableColumnHeaderId = useMemo(() => {\n for (let i = 0; i < visibleColumns.length; i++) {\n const column = visibleColumns[i];\n if (column.isFocuseable === false && column.id !== 'expander' && column.id !== 'multiSelecter') {\n continue;\n }\n return column.id;\n }\n }, [visibleColumns]);\n\n // ===========================================================================\n // Layout config\n // ===========================================================================\n\n const gridLayout = useMemo(() => columnsToGrid(visibleColumns, colsLayoutStyle), [colsLayoutStyle, visibleColumns]);\n\n // We need to listen and update the state based on this props\n const totalColumnsWidth = useMemo(\n () =>\n colsLayoutStyle === ColsLayoutStyle.Fixed\n ? gridLayout.reduce((acc: number, cur: string) => acc + Number.parseInt(cur, 10), 0)\n : '100%',\n [colsLayoutStyle, gridLayout],\n );\n\n const layoutHelpers = useMemo(\n () => ({\n gridLayout,\n totalColumnsWidth,\n }),\n [gridLayout, totalColumnsWidth],\n );\n\n useTableResizeCb({\n virtualListRef,\n measureVirtualList: virtualListHelpers.measure,\n propsWithDefault: propsWithDefaults,\n });\n\n // ===========================================================================\n // Action ref setup\n // ===========================================================================\n useEffect(() => {\n if (actionRef) {\n actionRef.current.scrollToIndex = virtualListHelpers.scrollToIndex;\n actionRef.current.scrollToOffset = virtualListHelpers.scrollToOffset;\n }\n }, [actionRef, virtualListHelpers.scrollToIndex, virtualListHelpers.scrollToOffset]);\n\n return {\n visibleRangeRef,\n layoutHelpers,\n paginationHelpers,\n visibleColumns,\n virtualListHelpers,\n flattenedData: paginatedData || flattenedData,\n allDataFlattened,\n isEmptyContent,\n firstFocuseableColumnHeaderId,\n virtualListRef,\n columnHeaderRef,\n lastSelected,\n bodyClientWidth,\n setBodyClientWidth,\n };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADKvB,mBAAkD;AAClD,2BAA8D;AAE9D,oCAAuC;AACvC,kCAAqC;AACrC,iCAAoC;AACpC,2BAA8B;AAC9B,uBAAgC;AAChC,8BAAiC;AAEjC,MAAM,eAAe,MAAM;AAEpB,MAAM,oBAAoB,CAAC,sBAAmF;AACnH,QAAM,EAAE,WAAW,iBAAiB,eAAe,UAAU,IAAI;AAEjE,QAAM,qBAAiB,qBAA8B,IAAI;AACzD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,aAAAA,QAAM,SAA0B,MAAM;AACpF,QAAM,sBAAkB,qBAA8B,IAAI;AAC1D,QAAM,mBAAe,qBAAe,EAAE;AAKtC,QAAM,qBAAiB,sDAAuB,mBAAmB,aAAa;AAM9E,QAAM,CAAC,eAAe,gBAAgB,QAAI,kDAAqB,iBAAiB;AAEhF,QAAM,CAAC,eAAe,iBAAiB,QAAI,gDAAoB,mBAAmB,aAAa;AAE/F,QAAM,iBAAa,sBAAQ,OAAO,iBAAiB,eAAe,QAAQ,CAAC,eAAe,aAAa,CAAC;AAGxG,QAAM,sBAAkB,qBAAc,EAAE,OAAO,GAAG,KAAK,GAAG,UAAU,IAAI,MAAM,WAAW,CAAC;AAG1F,QAAM,yBAAqB,iCAAW;AAAA,IACpC,MAAM;AAAA,IACN,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc,gBAAgB,SAAS,sBAAsB,GAAG,UAAU;AAAA,IAC1E;AAAA,IACA,gBAAgB,aAAAA,QAAM,YAAY,CAAC,UAAiB;AAClD,sBAAgB,UAAU;AAE1B,iBAAO,4CAAsB,KAAK;AAAA,IACpC,GAAG,CAAC,CAAC;AAAA,EACP,CAAC;AAMD,QAAM,qBAAiB,sBAAQ,MAAM,CAAC,aAAa,cAAc,WAAW,GAAG,CAAC,WAAW,cAAc,MAAM,CAAC;AAEhH,QAAM,oCAAgC,sBAAQ,MAAM;AAClD,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,YAAM,SAAS,eAAe,CAAC;AAC/B,UAAI,OAAO,iBAAiB,SAAS,OAAO,OAAO,cAAc,OAAO,OAAO,iBAAiB;AAC9F;AAAA,MACF;AACA,aAAO,OAAO;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,cAAc,CAAC;AAMnB,QAAM,iBAAa,sBAAQ,UAAM,oCAAc,gBAAgB,eAAe,GAAG,CAAC,iBAAiB,cAAc,CAAC;AAGlH,QAAM,wBAAoB;AAAA,IACxB,MACE,oBAAoB,iCAAgB,QAChC,WAAW,OAAO,CAAC,KAAa,QAAgB,MAAM,OAAO,SAAS,KAAK,EAAE,GAAG,CAAC,IACjF;AAAA,IACN,CAAC,iBAAiB,UAAU;AAAA,EAC9B;AAEA,QAAM,oBAAgB;AAAA,IACpB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,YAAY,iBAAiB;AAAA,EAChC;AAEA,gDAAiB;AAAA,IACf;AAAA,IACA,oBAAoB,mBAAmB;AAAA,IACvC,kBAAkB;AAAA,EACpB,CAAC;AAKD,8BAAU,MAAM;AACd,QAAI,WAAW;AACb,gBAAU,QAAQ,gBAAgB,mBAAmB;AACrD,gBAAU,QAAQ,iBAAiB,mBAAmB;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,WAAW,mBAAmB,eAAe,mBAAmB,cAAc,CAAC;AAEnF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,iBAAiB;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
6
  "names": ["React"]
7
7
  }
@@ -35,13 +35,20 @@ var React = __toESM(require("react"));
35
35
  var import_react = __toESM(require("react"));
36
36
  var import_useNativeResizeObserver = require("./useNativeResizeObserver.js");
37
37
  const useTableResizeCb = (config) => {
38
- const { virtualListRef, propsWithDefault } = config;
38
+ const { virtualListRef, measureVirtualList, propsWithDefault } = config;
39
39
  const { onTableResize } = propsWithDefault;
40
+ const lastMeasuredSize = import_react.default.useRef({ width: -1, height: -1 });
40
41
  const handleResize = import_react.default.useCallback(
41
42
  (entry) => {
43
+ const { width, height } = entry.contentRect;
44
+ const sizeChanged = width !== lastMeasuredSize.current.width || height !== lastMeasuredSize.current.height;
45
+ lastMeasuredSize.current = { width, height };
46
+ if (width > 0 && height > 0 && sizeChanged) {
47
+ measureVirtualList();
48
+ }
42
49
  if (onTableResize) onTableResize(entry);
43
50
  },
44
- [onTableResize]
51
+ [measureVirtualList, onTableResize]
45
52
  );
46
53
  (0, import_useNativeResizeObserver.useNativeResizeObserver)(virtualListRef.current, handleResize);
47
54
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/configs/useTableResizeCb.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React from 'react';\nimport { useNativeResizeObserver } from './useNativeResizeObserver.js';\nimport type { DSDataTableT } from '../react-desc-prop-types.js';\n\n// type for the second parameter of useNativeResizeObserver\ntype NativeResizeObserverCB = Parameters<typeof useNativeResizeObserver>[1];\n\n// type declaration for the custom hook\nexport type UseTableResizeCb = (config: {\n virtualListRef: React.RefObject<HTMLElement>;\n propsWithDefault: DSDataTableT.InternalProps;\n}) => void;\n\nexport const useTableResizeCb: UseTableResizeCb = (config) => {\n const { virtualListRef, propsWithDefault } = config;\n const { onTableResize } = propsWithDefault;\n\n const handleResize: NativeResizeObserverCB = React.useCallback(\n (entry) => {\n if (onTableResize) onTableResize(entry);\n },\n [onTableResize],\n );\n\n useNativeResizeObserver(virtualListRef.current, handleResize);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAClB,qCAAwC;AAYjC,MAAM,mBAAqC,CAAC,WAAW;AAC5D,QAAM,EAAE,gBAAgB,iBAAiB,IAAI;AAC7C,QAAM,EAAE,cAAc,IAAI;AAE1B,QAAM,eAAuC,aAAAA,QAAM;AAAA,IACjD,CAAC,UAAU;AACT,UAAI,cAAe,eAAc,KAAK;AAAA,IACxC;AAAA,IACA,CAAC,aAAa;AAAA,EAChB;AAEA,8DAAwB,eAAe,SAAS,YAAY;AAC9D;",
4
+ "sourcesContent": ["import React from 'react';\nimport { useNativeResizeObserver } from './useNativeResizeObserver.js';\nimport type { DSDataTableT } from '../react-desc-prop-types.js';\n\n// type for the second parameter of useNativeResizeObserver\ntype NativeResizeObserverCB = Parameters<typeof useNativeResizeObserver>[1];\n\n// type declaration for the custom hook\nexport type UseTableResizeCb = (config: {\n virtualListRef: React.RefObject<HTMLElement>;\n measureVirtualList: DSDataTableT.Context['virtualListHelpers']['measure'];\n propsWithDefault: DSDataTableT.InternalProps;\n}) => void;\n\nexport const useTableResizeCb: UseTableResizeCb = (config) => {\n const { virtualListRef, measureVirtualList, propsWithDefault } = config;\n const { onTableResize } = propsWithDefault;\n const lastMeasuredSize = React.useRef({ width: -1, height: -1 });\n\n const handleResize: NativeResizeObserverCB = React.useCallback(\n (entry) => {\n const { width, height } = entry.contentRect;\n const sizeChanged = width !== lastMeasuredSize.current.width || height !== lastMeasuredSize.current.height;\n\n lastMeasuredSize.current = { width, height };\n\n /**\n * PUI-18153 [Tabs] First DataTable row hidden after switching tabs and returning in carousel mode\n * Recalculate react-virtual measurements when the scroll container regains\n * a real size after being hidden. This prevents stale offsets/ranges when\n * DataTable is mounted inside tabs or carousel panels.\n *\n * The re-measure is intentionally limited to real, non-zero size changes,\n * which keeps the fix scoped to actual container resize events. A throttle\n * is not added here because no visible resize-related degradation was\n * observed and delaying the re-measure could make the visibility recovery\n * less reliable when the panel becomes visible again.\n */\n if (width > 0 && height > 0 && sizeChanged) {\n measureVirtualList();\n }\n\n if (onTableResize) onTableResize(entry);\n },\n [measureVirtualList, onTableResize],\n );\n\n useNativeResizeObserver(virtualListRef.current, handleResize);\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAClB,qCAAwC;AAajC,MAAM,mBAAqC,CAAC,WAAW;AAC5D,QAAM,EAAE,gBAAgB,oBAAoB,iBAAiB,IAAI;AACjE,QAAM,EAAE,cAAc,IAAI;AAC1B,QAAM,mBAAmB,aAAAA,QAAM,OAAO,EAAE,OAAO,IAAI,QAAQ,GAAG,CAAC;AAE/D,QAAM,eAAuC,aAAAA,QAAM;AAAA,IACjD,CAAC,UAAU;AACT,YAAM,EAAE,OAAO,OAAO,IAAI,MAAM;AAChC,YAAM,cAAc,UAAU,iBAAiB,QAAQ,SAAS,WAAW,iBAAiB,QAAQ;AAEpG,uBAAiB,UAAU,EAAE,OAAO,OAAO;AAc3C,UAAI,QAAQ,KAAK,SAAS,KAAK,aAAa;AAC1C,2BAAmB;AAAA,MACrB;AAEA,UAAI,cAAe,eAAc,KAAK;AAAA,IACxC;AAAA,IACA,CAAC,oBAAoB,aAAa;AAAA,EACpC;AAEA,8DAAwB,eAAe,SAAS,YAAY;AAC9D;",
6
6
  "names": ["React"]
7
7
  }
@@ -85,7 +85,8 @@ const DATA_TABLE_SLOTS = {
85
85
  FREE_TEXT_SEARCH_FILTER: "free-text-search-filter",
86
86
  FREE_TEXT_SEARCH_WRAPPER: "free-text-search-wrapper",
87
87
  FILTER_POPOVER: "filter-popover",
88
- FILTER_BAR_MENU_BUTTON: "filter-bar-menu-button"
88
+ FILTER_BAR_MENU_BUTTON: "filter-bar-menu-button",
89
+ FILTER_POPOVER_FOOTER: "filter-popover-footer"
89
90
  };
90
91
  const DATA_TABLE_DATA_TESTID = {
91
92
  ...(0, import_ds_system.slotObjectToDataTestIds)(DSDataTableName, DATA_TABLE_SLOTS),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/constants/index.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { slotObjectToDataTestIds } from '@elliemae/ds-system';\nimport { legacyDataTestIds } from './legacyToBeDeprecated.js';\n\nexport const DSDataTableName = 'DSDatatable';\n\n// we are naming this with the ${component_name}_slots convention to namespace & avoid errors on duplicate exports variables in aggregators\nexport const DATA_TABLE_SLOTS = {\n ROOT: 'root',\n CONTENT_WRAPPER: 'content-wrapper',\n TABLE_WRAPPER: 'table-wrapper',\n PAGINATION_WRAPPER: 'pagination-wrapper',\n TABLE_CONTENT_WRAPPER: 'table-content-wrapper',\n VIRTUAL_LIST_WRAPPER: 'virtual-list-wrapper',\n HEAD_WRAPPER: 'head-wrapper',\n HEAD_TR: 'head-tr',\n HEAD_TH: 'head-th',\n HEAD_RIGHT_ICONS_WRAPPER: 'head-right-icons-wrapper',\n HEADER_CELL_WRAPPER: 'header-cell-wrapper',\n EMPTY_HEADER: 'empty-header',\n RESIZER: 'resizer',\n ACTION_CELL: 'action-cell',\n EXPAND_CELL_CONTAINER: 'expand-cell-container',\n SINGLE_CELL_CONTAINER: 'single-cell-container',\n DRAG_AND_DROP_GRIPPER: 'drag-and-drop-gripper',\n TEXT_EDITABLE_CELL_INPUT: 'text-editable-cell-input',\n FILTER_POPOVER_BUTTON: 'filter-popover-button',\n FILTER_POPOVER_CONTENT: 'filter-popover-content',\n DROP_INDICATOR: 'drop-indicator',\n CELL: 'cell',\n CELL_CONTENT: 'cell-content',\n PENCIL_ICON: 'pencil-icon',\n EDITABLE_CONTAINER: 'editable-container',\n FULLSIZE_GRID: 'fullsize-grid',\n ROW: 'row',\n GROUP_HEADER_CONTAINER: 'group-header-container',\n GROUP_HEADER_TITLE: 'header-title',\n CELL_CONTAINER: 'cells-container',\n TOOLBAR_WRAPPER: 'toolbar-wrapper',\n TOOLBAR_BUTTONS_WRAPPER: 'toolbar-buttons-wrapper',\n TOOLBAR_BUTTON: 'toolbar-button',\n TOOLBAR_POSITION: 'toolbar-position',\n EMPTY_STATE_WRAPPER: 'empty-state-wrapper',\n WARNING_ICON: 'warning-icon',\n EMPTY_PRIMARY_MESSAGE: 'empty-primary-message',\n EMPTY_SECONDARY_MESSAGE: 'empty-secondary-message',\n EMPTY_BUTTON: 'empty-button',\n CENTER_CONTENT_FLEX_WRAPPER: 'center-content-flex-wrapper',\n LOADER_WRAPPER: 'loader-wrapper',\n FILTER_BAR_WRAPPER: 'filter-bar-wrapper',\n FREE_TEXT_SEARCH_FILTER: 'free-text-search-filter',\n FREE_TEXT_SEARCH_WRAPPER: 'free-text-search-wrapper',\n FILTER_POPOVER: 'filter-popover',\n FILTER_BAR_MENU_BUTTON: 'filter-bar-menu-button',\n} as const;\n\n// we are naming this with the ${component_name}_data_testid convention to namespace & avoid errors on duplicate exports variables in aggregators\nexport const DATA_TABLE_DATA_TESTID = {\n ...slotObjectToDataTestIds(DSDataTableName, DATA_TABLE_SLOTS),\n /**\n * These data-testid were defined in src/configs/constants.tsx\n * but they were never exposed to consumers in the index.ts file.\n * We are exposing them here for backward compatibility, as they are the ones used in the component implementation.\n *\n */\n ...legacyDataTestIds,\n /**\n * As there is a mix of hardcoded data-testid and the ones auto generated by slot definitions\n * we are overriding the auto generated ones with the hardcoded values for consistency.\n */\n CONTENT_WRAPPER: legacyDataTestIds.DATA_TABLE_CONTENT_WRAPPER,\n TABLE_WRAPPER: legacyDataTestIds.DATA_TABLE_TABLE,\n CELL_CONTAINER: legacyDataTestIds.DATA_TABLE_ROW_CONTENT,\n DRAG_AND_DROP_GRIPPER: legacyDataTestIds.DATA_TABLE_DRAG_HANDLE,\n FREE_TEXT_SEARCH_FILTER: legacyDataTestIds.DATA_TABLE_FILTER_FREE_TEXT_SEARCH,\n FILTER_POPOVER_BUTTON: legacyDataTestIds.DATA_TABLE_FILTER_BUTTON,\n HEAD_TH: legacyDataTestIds.DATA_TABLE_HEADER,\n CELL: legacyDataTestIds.DATA_TABLE_CELL,\n FULLSIZE_GRID: legacyDataTestIds.DATA_TABLE_ROW,\n ROOT: legacyDataTestIds.DATA_TABLE_WRAPPER,\n VIRTUAL_LIST_WRAPPER: legacyDataTestIds.DATA_TABLE_SCROLLABLE_CONTAINER,\n GROUP_HEADER_CONTAINER: legacyDataTestIds.DATA_TABLE_ROW_GROUP_HEADER,\n FILTER_BAR_MENU_BUTTON: legacyDataTestIds.DATA_TABLE_FILTER_BAR_DD_MENU_BUTTON,\n // This one does not exist in the legacy list, but it was hardcoded in the component definition\n EXPAND_CELL_CONTAINER: 'data-table-row-expand-cell',\n};\n\n// Legacy exports before Dimsum Compliance Task\nexport const DSDataTableSlots = DATA_TABLE_SLOTS;\nexport const DSDataTableDataTestIds = DATA_TABLE_DATA_TESTID;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAwC;AACxC,kCAAkC;AAE3B,MAAM,kBAAkB;AAGxB,MAAM,mBAAmB;AAAA,EAC9B,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,SAAS;AAAA,EACT,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,cAAc;AAAA,EACd,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,KAAK;AAAA,EACL,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,cAAc;AAAA,EACd,6BAA6B;AAAA,EAC7B,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,wBAAwB;AAC1B;AAGO,MAAM,yBAAyB;AAAA,EACpC,OAAG,0CAAwB,iBAAiB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5D,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKH,iBAAiB,8CAAkB;AAAA,EACnC,eAAe,8CAAkB;AAAA,EACjC,gBAAgB,8CAAkB;AAAA,EAClC,uBAAuB,8CAAkB;AAAA,EACzC,yBAAyB,8CAAkB;AAAA,EAC3C,uBAAuB,8CAAkB;AAAA,EACzC,SAAS,8CAAkB;AAAA,EAC3B,MAAM,8CAAkB;AAAA,EACxB,eAAe,8CAAkB;AAAA,EACjC,MAAM,8CAAkB;AAAA,EACxB,sBAAsB,8CAAkB;AAAA,EACxC,wBAAwB,8CAAkB;AAAA,EAC1C,wBAAwB,8CAAkB;AAAA;AAAA,EAE1C,uBAAuB;AACzB;AAGO,MAAM,mBAAmB;AACzB,MAAM,yBAAyB;",
4
+ "sourcesContent": ["import { slotObjectToDataTestIds } from '@elliemae/ds-system';\nimport { legacyDataTestIds } from './legacyToBeDeprecated.js';\n\nexport const DSDataTableName = 'DSDatatable';\n\n// we are naming this with the ${component_name}_slots convention to namespace & avoid errors on duplicate exports variables in aggregators\nexport const DATA_TABLE_SLOTS = {\n ROOT: 'root',\n CONTENT_WRAPPER: 'content-wrapper',\n TABLE_WRAPPER: 'table-wrapper',\n PAGINATION_WRAPPER: 'pagination-wrapper',\n TABLE_CONTENT_WRAPPER: 'table-content-wrapper',\n VIRTUAL_LIST_WRAPPER: 'virtual-list-wrapper',\n HEAD_WRAPPER: 'head-wrapper',\n HEAD_TR: 'head-tr',\n HEAD_TH: 'head-th',\n HEAD_RIGHT_ICONS_WRAPPER: 'head-right-icons-wrapper',\n HEADER_CELL_WRAPPER: 'header-cell-wrapper',\n EMPTY_HEADER: 'empty-header',\n RESIZER: 'resizer',\n ACTION_CELL: 'action-cell',\n EXPAND_CELL_CONTAINER: 'expand-cell-container',\n SINGLE_CELL_CONTAINER: 'single-cell-container',\n DRAG_AND_DROP_GRIPPER: 'drag-and-drop-gripper',\n TEXT_EDITABLE_CELL_INPUT: 'text-editable-cell-input',\n FILTER_POPOVER_BUTTON: 'filter-popover-button',\n FILTER_POPOVER_CONTENT: 'filter-popover-content',\n DROP_INDICATOR: 'drop-indicator',\n CELL: 'cell',\n CELL_CONTENT: 'cell-content',\n PENCIL_ICON: 'pencil-icon',\n EDITABLE_CONTAINER: 'editable-container',\n FULLSIZE_GRID: 'fullsize-grid',\n ROW: 'row',\n GROUP_HEADER_CONTAINER: 'group-header-container',\n GROUP_HEADER_TITLE: 'header-title',\n CELL_CONTAINER: 'cells-container',\n TOOLBAR_WRAPPER: 'toolbar-wrapper',\n TOOLBAR_BUTTONS_WRAPPER: 'toolbar-buttons-wrapper',\n TOOLBAR_BUTTON: 'toolbar-button',\n TOOLBAR_POSITION: 'toolbar-position',\n EMPTY_STATE_WRAPPER: 'empty-state-wrapper',\n WARNING_ICON: 'warning-icon',\n EMPTY_PRIMARY_MESSAGE: 'empty-primary-message',\n EMPTY_SECONDARY_MESSAGE: 'empty-secondary-message',\n EMPTY_BUTTON: 'empty-button',\n CENTER_CONTENT_FLEX_WRAPPER: 'center-content-flex-wrapper',\n LOADER_WRAPPER: 'loader-wrapper',\n FILTER_BAR_WRAPPER: 'filter-bar-wrapper',\n FREE_TEXT_SEARCH_FILTER: 'free-text-search-filter',\n FREE_TEXT_SEARCH_WRAPPER: 'free-text-search-wrapper',\n FILTER_POPOVER: 'filter-popover',\n FILTER_BAR_MENU_BUTTON: 'filter-bar-menu-button',\n FILTER_POPOVER_FOOTER: 'filter-popover-footer',\n} as const;\n\n// we are naming this with the ${component_name}_data_testid convention to namespace & avoid errors on duplicate exports variables in aggregators\nexport const DATA_TABLE_DATA_TESTID = {\n ...slotObjectToDataTestIds(DSDataTableName, DATA_TABLE_SLOTS),\n /**\n * These data-testid were defined in src/configs/constants.tsx\n * but they were never exposed to consumers in the index.ts file.\n * We are exposing them here for backward compatibility, as they are the ones used in the component implementation.\n *\n */\n ...legacyDataTestIds,\n /**\n * As there is a mix of hardcoded data-testid and the ones auto generated by slot definitions\n * we are overriding the auto generated ones with the hardcoded values for consistency.\n */\n CONTENT_WRAPPER: legacyDataTestIds.DATA_TABLE_CONTENT_WRAPPER,\n TABLE_WRAPPER: legacyDataTestIds.DATA_TABLE_TABLE,\n CELL_CONTAINER: legacyDataTestIds.DATA_TABLE_ROW_CONTENT,\n DRAG_AND_DROP_GRIPPER: legacyDataTestIds.DATA_TABLE_DRAG_HANDLE,\n FREE_TEXT_SEARCH_FILTER: legacyDataTestIds.DATA_TABLE_FILTER_FREE_TEXT_SEARCH,\n FILTER_POPOVER_BUTTON: legacyDataTestIds.DATA_TABLE_FILTER_BUTTON,\n HEAD_TH: legacyDataTestIds.DATA_TABLE_HEADER,\n CELL: legacyDataTestIds.DATA_TABLE_CELL,\n FULLSIZE_GRID: legacyDataTestIds.DATA_TABLE_ROW,\n ROOT: legacyDataTestIds.DATA_TABLE_WRAPPER,\n VIRTUAL_LIST_WRAPPER: legacyDataTestIds.DATA_TABLE_SCROLLABLE_CONTAINER,\n GROUP_HEADER_CONTAINER: legacyDataTestIds.DATA_TABLE_ROW_GROUP_HEADER,\n FILTER_BAR_MENU_BUTTON: legacyDataTestIds.DATA_TABLE_FILTER_BAR_DD_MENU_BUTTON,\n // This one does not exist in the legacy list, but it was hardcoded in the component definition\n EXPAND_CELL_CONTAINER: 'data-table-row-expand-cell',\n};\n\n// Legacy exports before Dimsum Compliance Task\nexport const DSDataTableSlots = DATA_TABLE_SLOTS;\nexport const DSDataTableDataTestIds = DATA_TABLE_DATA_TESTID;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAwC;AACxC,kCAAkC;AAE3B,MAAM,kBAAkB;AAGxB,MAAM,mBAAmB;AAAA,EAC9B,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,SAAS;AAAA,EACT,0BAA0B;AAAA,EAC1B,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,cAAc;AAAA,EACd,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,KAAK;AAAA,EACL,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,yBAAyB;AAAA,EACzB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,cAAc;AAAA,EACd,6BAA6B;AAAA,EAC7B,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,uBAAuB;AACzB;AAGO,MAAM,yBAAyB;AAAA,EACpC,OAAG,0CAAwB,iBAAiB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5D,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKH,iBAAiB,8CAAkB;AAAA,EACnC,eAAe,8CAAkB;AAAA,EACjC,gBAAgB,8CAAkB;AAAA,EAClC,uBAAuB,8CAAkB;AAAA,EACzC,yBAAyB,8CAAkB;AAAA,EAC3C,uBAAuB,8CAAkB;AAAA,EACzC,SAAS,8CAAkB;AAAA,EAC3B,MAAM,8CAAkB;AAAA,EACxB,eAAe,8CAAkB;AAAA,EACjC,MAAM,8CAAkB;AAAA,EACxB,sBAAsB,8CAAkB;AAAA,EACxC,wBAAwB,8CAAkB;AAAA,EAC1C,wBAAwB,8CAAkB;AAAA;AAAA,EAE1C,uBAAuB;AACzB;AAGO,MAAM,mBAAmB;AACzB,MAAM,yBAAyB;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var PillsFromDataTableFilters_exports = {};
30
+ __export(PillsFromDataTableFilters_exports, {
31
+ PillsFromDataTableFilters: () => PillsFromDataTableFilters
32
+ });
33
+ module.exports = __toCommonJS(PillsFromDataTableFilters_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_components = require("../../parts/FilterBar/components/index.js");
38
+ var import_FilterTypes = require("../FilterTypes.js");
39
+ const pillRenderMapper = {
40
+ [import_FilterTypes.FILTER_TYPES.SELECT]: import_components.SelectPill,
41
+ [import_FilterTypes.FILTER_TYPES.SELECT_V2]: import_components.SelectPill,
42
+ [import_FilterTypes.FILTER_TYPES.MULTI_SELECT]: import_components.MultiSelectPill,
43
+ [import_FilterTypes.FILTER_TYPES.MULTI_SELECT_V2]: import_components.MultiSelectPill,
44
+ [import_FilterTypes.FILTER_TYPES.SINGLE_DATE]: import_components.SingleDatePill,
45
+ [import_FilterTypes.FILTER_TYPES.SINGLE_DATE_V2]: import_components.SingleDatePill,
46
+ [import_FilterTypes.FILTER_TYPES.DATE_RANGE]: import_components.DateRangePill,
47
+ [import_FilterTypes.FILTER_TYPES.DATE_RANGE_V2]: import_components.DateRangePill,
48
+ [import_FilterTypes.FILTER_TYPES.DATE_SWITCHER]: import_components.DateSwitcherPill,
49
+ [import_FilterTypes.FILTER_TYPES.DATE_SWITCHER_V2]: import_components.DateSwitcherPill,
50
+ [import_FilterTypes.FILTER_TYPES.NUMBER_RANGE]: import_components.NumberRangePill,
51
+ [import_FilterTypes.FILTER_TYPES.NUMBER_RANGE_V2]: import_components.NumberRangePill,
52
+ [import_FilterTypes.FILTER_TYPES.CURRENCY_RANGE]: import_components.NumberRangePill,
53
+ [import_FilterTypes.FILTER_TYPES.CURRENCY_RANGE_V2]: import_components.NumberRangePill,
54
+ [import_FilterTypes.FILTER_TYPES.FREE_TEXT_SEARCH]: import_components.FreeTextSearchPillPill,
55
+ [import_FilterTypes.FILTER_TYPES.FREE_TEXT_SEARCH_V2]: import_components.FreeTextSearchPillPill
56
+ };
57
+ const PillsFromDataTableFilters = ({
58
+ filters,
59
+ columns,
60
+ onFiltersChange,
61
+ onPillRemove,
62
+ customPillRenderers,
63
+ customPillRenderer
64
+ }) => {
65
+ const pillRefs = (0, import_react.useMemo)(() => {
66
+ const refs = [];
67
+ for (let i = 0; i < filters.length; i += 1) refs.push(import_react.default.createRef());
68
+ return refs;
69
+ }, [filters.length]);
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: filters.map(({ id: column, type, value }, index) => {
71
+ const columnHeader = columns.find((col) => col.accessor === column)?.Header;
72
+ let Component = () => null;
73
+ const filterType = type;
74
+ if (customPillRenderers?.[column]) {
75
+ Component = customPillRenderers[column];
76
+ } else if (customPillRenderer) {
77
+ Component = customPillRenderer;
78
+ } else if (filterType in pillRenderMapper) {
79
+ Component = pillRenderMapper[filterType];
80
+ }
81
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
82
+ Component,
83
+ {
84
+ columnHeader: typeof columnHeader === "string" ? columnHeader : column,
85
+ column,
86
+ value,
87
+ filters,
88
+ onFiltersChange,
89
+ innerRef: pillRefs[index],
90
+ onPillRemove
91
+ },
92
+ column
93
+ );
94
+ }) });
95
+ };
96
+ //# sourceMappingURL=PillsFromDataTableFilters.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/exported-related/FilterBar/PillsFromDataTableFilters.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport React, { useMemo } from 'react';\nimport {\n DateRangePill,\n DateSwitcherPill,\n FreeTextSearchPillPill,\n MultiSelectPill,\n NumberRangePill,\n SelectPill,\n SingleDatePill,\n} from '../../parts/FilterBar/components/index.js';\nimport type { DSDataTableT } from '../../react-desc-prop-types.js';\nimport { FILTER_TYPES } from '../FilterTypes.js';\n\nconst pillRenderMapper = {\n [FILTER_TYPES.SELECT]: SelectPill,\n [FILTER_TYPES.SELECT_V2]: SelectPill,\n [FILTER_TYPES.MULTI_SELECT]: MultiSelectPill,\n [FILTER_TYPES.MULTI_SELECT_V2]: MultiSelectPill,\n [FILTER_TYPES.SINGLE_DATE]: SingleDatePill,\n [FILTER_TYPES.SINGLE_DATE_V2]: SingleDatePill,\n [FILTER_TYPES.DATE_RANGE]: DateRangePill,\n [FILTER_TYPES.DATE_RANGE_V2]: DateRangePill,\n [FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill,\n [FILTER_TYPES.DATE_SWITCHER_V2]: DateSwitcherPill,\n [FILTER_TYPES.NUMBER_RANGE]: NumberRangePill,\n [FILTER_TYPES.NUMBER_RANGE_V2]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE_V2]: NumberRangePill,\n [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchPillPill,\n [FILTER_TYPES.FREE_TEXT_SEARCH_V2]: FreeTextSearchPillPill,\n} as const;\n\ninterface PillsFromDataTableFiltersProps {\n filters: DSDataTableT.Filter[];\n columns: DSDataTableT.Column[];\n onFiltersChange: (filters: DSDataTableT.Filter[]) => void;\n onPillRemove?: (remove: () => void) => void;\n customPillRenderers?: Record<string, React.ComponentType<DSDataTableT.FilterPillProps<unknown>>>;\n customPillRenderer?: React.ComponentType<DSDataTableT.FilterPillProps<unknown>>;\n}\n\nexport const PillsFromDataTableFilters: React.FC<PillsFromDataTableFiltersProps> = ({\n filters,\n columns,\n\n onFiltersChange,\n onPillRemove,\n customPillRenderers,\n customPillRenderer,\n}) => {\n const pillRefs = useMemo(() => {\n const refs: React.RefObject<HTMLElement>[] = [];\n for (let i = 0; i < filters.length; i += 1) refs.push(React.createRef());\n return refs;\n }, [filters.length]);\n return (\n <>\n {filters.map(({ id: column, type, value }, index) => {\n const columnHeader = columns.find((col) => col.accessor === column)?.Header;\n let Component:\n | TypescriptHelpersT.ObjectValues<typeof pillRenderMapper>\n | React.ComponentType<DSDataTableT.FilterPillProps<unknown>> = () => null;\n\n const filterType = type;\n if (customPillRenderers?.[column]) {\n Component = customPillRenderers[column];\n } else if (customPillRenderer) {\n Component = customPillRenderer;\n } else if (filterType in pillRenderMapper) {\n Component = pillRenderMapper[filterType as keyof typeof pillRenderMapper];\n }\n\n return (\n <Component\n key={column}\n columnHeader={typeof columnHeader === 'string' ? columnHeader : column}\n column={column}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n value={value as any}\n filters={filters}\n onFiltersChange={onFiltersChange}\n innerRef={pillRefs[index]}\n onPillRemove={onPillRemove}\n />\n );\n })}\n </>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADyDnB;AAxDJ,mBAA+B;AAC/B,wBAQO;AAEP,yBAA6B;AAE7B,MAAM,mBAAmB;AAAA,EACvB,CAAC,gCAAa,MAAM,GAAG;AAAA,EACvB,CAAC,gCAAa,SAAS,GAAG;AAAA,EAC1B,CAAC,gCAAa,YAAY,GAAG;AAAA,EAC7B,CAAC,gCAAa,eAAe,GAAG;AAAA,EAChC,CAAC,gCAAa,WAAW,GAAG;AAAA,EAC5B,CAAC,gCAAa,cAAc,GAAG;AAAA,EAC/B,CAAC,gCAAa,UAAU,GAAG;AAAA,EAC3B,CAAC,gCAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,gCAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,gCAAa,gBAAgB,GAAG;AAAA,EACjC,CAAC,gCAAa,YAAY,GAAG;AAAA,EAC7B,CAAC,gCAAa,eAAe,GAAG;AAAA,EAChC,CAAC,gCAAa,cAAc,GAAG;AAAA,EAC/B,CAAC,gCAAa,iBAAiB,GAAG;AAAA,EAClC,CAAC,gCAAa,gBAAgB,GAAG;AAAA,EACjC,CAAC,gCAAa,mBAAmB,GAAG;AACtC;AAWO,MAAM,4BAAsE,CAAC;AAAA,EAClF;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAW,sBAAQ,MAAM;AAC7B,UAAM,OAAuC,CAAC;AAC9C,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,EAAG,MAAK,KAAK,aAAAA,QAAM,UAAU,CAAC;AACvE,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,MAAM,CAAC;AACnB,SACE,2EACG,kBAAQ,IAAI,CAAC,EAAE,IAAI,QAAQ,MAAM,MAAM,GAAG,UAAU;AACnD,UAAM,eAAe,QAAQ,KAAK,CAAC,QAAQ,IAAI,aAAa,MAAM,GAAG;AACrE,QAAI,YAE6D,MAAM;AAEvE,UAAM,aAAa;AACnB,QAAI,sBAAsB,MAAM,GAAG;AACjC,kBAAY,oBAAoB,MAAM;AAAA,IACxC,WAAW,oBAAoB;AAC7B,kBAAY;AAAA,IACd,WAAW,cAAc,kBAAkB;AACzC,kBAAY,iBAAiB,UAA2C;AAAA,IAC1E;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,cAAc,OAAO,iBAAiB,WAAW,eAAe;AAAA,QAChE;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,SAAS,KAAK;AAAA,QACxB;AAAA;AAAA,MARK;AAAA,IASP;AAAA,EAEJ,CAAC,GACH;AAEJ;",
6
+ "names": ["React"]
7
+ }
@@ -29,10 +29,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var FilterBar_exports = {};
30
30
  __export(FilterBar_exports, {
31
31
  FilterBarDropdownMenu: () => import_FilterBarDropdownMenu.FilterBarDropdownMenu,
32
- FilterMenuButton: () => import_FilterMenuButton.FilterMenuButton
32
+ FilterMenuButton: () => import_FilterMenuButton.FilterMenuButton,
33
+ PillsFromDataTableFilters: () => import_PillsFromDataTableFilters.PillsFromDataTableFilters
33
34
  });
34
35
  module.exports = __toCommonJS(FilterBar_exports);
35
36
  var React = __toESM(require("react"));
36
37
  var import_FilterBarDropdownMenu = require("./FilterBarDropdownMenu.js");
37
38
  var import_FilterMenuButton = require("./FilterMenuButton.js");
39
+ var import_PillsFromDataTableFilters = require("./PillsFromDataTableFilters.js");
38
40
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/exported-related/FilterBar/index.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export { FilterBarDropdownMenu } from './FilterBarDropdownMenu.js';\nexport { FilterMenuButton } from './FilterMenuButton.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mCAAsC;AACtC,8BAAiC;",
4
+ "sourcesContent": ["export { FilterBarDropdownMenu } from './FilterBarDropdownMenu.js';\nexport { FilterMenuButton } from './FilterMenuButton.js';\nexport { PillsFromDataTableFilters } from './PillsFromDataTableFilters.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mCAAsC;AACtC,8BAAiC;AACjC,uCAA0C;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var FilterPopoverV2_exports = {};
30
+ __export(FilterPopoverV2_exports, {
31
+ FilterPopoverV2: () => FilterPopoverV2
32
+ });
33
+ module.exports = __toCommonJS(FilterPopoverV2_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_ds_button_v2 = require("@elliemae/ds-button-v2");
37
+ var import_ds_floating_context = require("@elliemae/ds-floating-context");
38
+ var import_ds_hooks_focus_trap = require("@elliemae/ds-hooks-focus-trap");
39
+ var import_ds_system = require("@elliemae/ds-system");
40
+ var import_react = require("react");
41
+ var import_createInternalAndPropsContext = require("../../configs/useStore/createInternalAndPropsContext.js");
42
+ var import_constants = require("../../constants/index.js");
43
+ var import_useGetFilterHandlers = require("./useGetFilterHandlers.js");
44
+ var import_useGetFilterVisibility = require("./useGetFilterVisibility.js");
45
+ var import_useOnClickOutside = require("./useOnClickOutside.js");
46
+ var import_styled = require("./styled.js");
47
+ const FilterPopoverV2 = (props) => {
48
+ const {
49
+ column,
50
+ customStyles,
51
+ reduxHeader,
52
+ menuContent,
53
+ ariaLabel,
54
+ triggerIcon,
55
+ innerRef,
56
+ columnReference,
57
+ firstElementRef,
58
+ onFilterSubmit,
59
+ onFilterReset
60
+ } = props;
61
+ const getOwnerProps = (0, import_createInternalAndPropsContext.usePropsStore)((store) => store.get);
62
+ const getOwnerPropsArguments = (0, import_react.useCallback)(
63
+ () => ({
64
+ columnId: column.id
65
+ }),
66
+ [column.id]
67
+ );
68
+ const [buttonReference, setButtonReference] = (0, import_react.useState)(null);
69
+ const [isButtonFocused, setIsButtonFocused] = (0, import_react.useState)(false);
70
+ const { isIconVisible, isMenuOpen } = (0, import_useGetFilterVisibility.useGetFilterVisibility)(reduxHeader);
71
+ const { handleTriggerClick, handleClickOutsideMenu, handleMenuOnKeyDown, handleTriggerOnFocus, handleTriggerOnBlur } = (0, import_useGetFilterHandlers.useGetFilterHandlers)(props, isMenuOpen, buttonReference, setIsButtonFocused);
72
+ const lastElementRef = (0, import_react.useRef)(null);
73
+ const boundaryRef = (0, import_react.useRef)(null);
74
+ const {
75
+ floatingStyles,
76
+ isOpen: isFloatingOpen,
77
+ refs,
78
+ context
79
+ } = (0, import_ds_floating_context.useFloatingContext)({
80
+ externallyControlledIsOpen: isMenuOpen,
81
+ placement: "bottom-end",
82
+ withoutAnimation: true,
83
+ customOffset: [0, 0]
84
+ });
85
+ (0, import_useOnClickOutside.useOnClickOutside)(isMenuOpen ? refs.floating : null, handleClickOutsideMenu);
86
+ const handleOnKeyDown = (0, import_ds_hooks_focus_trap.useFocusTrap)({
87
+ firstElementRef,
88
+ lastElementRef
89
+ });
90
+ (0, import_react.useEffect)(() => {
91
+ if (columnReference) {
92
+ refs.setReference(columnReference);
93
+ }
94
+ }, [columnReference, refs]);
95
+ return (
96
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
97
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
98
+ "div",
99
+ {
100
+ onClick: (e) => e.stopPropagation(),
101
+ onKeyDown: handleMenuOnKeyDown,
102
+ children: [
103
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
104
+ import_styled.FilterButton,
105
+ {
106
+ hide: !isIconVisible,
107
+ "data-testid": import_constants.DATA_TABLE_DATA_TESTID.FILTER_POPOVER_BUTTON,
108
+ getOwnerProps,
109
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
110
+ import_ds_button_v2.DSButtonV3,
111
+ {
112
+ buttonType: "icon",
113
+ size: "s",
114
+ onClick: handleTriggerClick,
115
+ onKeyDown: handleMenuOnKeyDown,
116
+ onFocus: handleTriggerOnFocus,
117
+ onBlur: handleTriggerOnBlur,
118
+ innerRef: (0, import_ds_system.mergeRefs)(isIconVisible && setButtonReference, innerRef),
119
+ tabIndex: reduxHeader?.withTabStops ? 0 : -1,
120
+ "aria-label": ariaLabel,
121
+ "aria-hidden": !isButtonFocused,
122
+ "data-testid": import_constants.DATA_TABLE_DATA_TESTID.DATA_TABLE_FILTER_BUTTON_ELEMENT,
123
+ children: triggerIcon
124
+ }
125
+ )
126
+ }
127
+ ),
128
+ refs.reference && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
129
+ import_styled.StyledFloatingWrapper,
130
+ {
131
+ innerRef: refs.setFloating,
132
+ isOpen: isFloatingOpen,
133
+ floatingStyles: {
134
+ ...floatingStyles,
135
+ ...customStyles,
136
+ minWidth: "min-content"
137
+ },
138
+ context,
139
+ "data-testid": import_constants.DATA_TABLE_DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT,
140
+ getOwnerProps,
141
+ getOwnerPropsArguments,
142
+ "aria-label": `Filter by ${column.Header}`,
143
+ role: "dialog",
144
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.PopperContent, { getOwnerProps, onKeyDown: handleOnKeyDown, innerRef: boundaryRef, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", { onSubmit: onFilterSubmit, children: [
145
+ menuContent,
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledDSDialogFooter, { children: [
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_button_v2.DSButtonV3, { onClick: onFilterReset, buttonType: "outline", size: "s", children: "Reset" }),
148
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_button_v2.DSButtonV3, { type: "submit", innerRef: lastElementRef, size: "s", children: "Apply" })
149
+ ] })
150
+ ] }) })
151
+ }
152
+ )
153
+ ]
154
+ }
155
+ )
156
+ );
157
+ };
158
+ //# sourceMappingURL=FilterPopoverV2.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/exported-related/FilterPopover/FilterPopoverV2.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { DSButtonV3 } from '@elliemae/ds-button-v2';\n\nimport { useFloatingContext } from '@elliemae/ds-floating-context';\nimport { useFocusTrap } from '@elliemae/ds-hooks-focus-trap';\n\nimport { mergeRefs } from '@elliemae/ds-system';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { usePropsStore } from '../../configs/useStore/createInternalAndPropsContext.js';\nimport { DATA_TABLE_DATA_TESTID } from '../../constants/index.js';\nimport type { FilterPopoverV2Props } from './types.js';\nimport { useGetFilterHandlers } from './useGetFilterHandlers.js';\nimport { useGetFilterVisibility } from './useGetFilterVisibility.js';\nimport { useOnClickOutside } from './useOnClickOutside.js';\nimport { FilterButton, PopperContent, StyledDSDialogFooter, StyledFloatingWrapper } from './styled.js';\n\nexport const FilterPopoverV2: React.ComponentType<FilterPopoverV2Props> = (props: FilterPopoverV2Props) => {\n const {\n column,\n customStyles,\n reduxHeader,\n menuContent,\n ariaLabel,\n triggerIcon,\n innerRef,\n columnReference,\n firstElementRef,\n onFilterSubmit,\n onFilterReset,\n } = props;\n\n const getOwnerProps = usePropsStore((store) => store.get);\n\n const getOwnerPropsArguments = useCallback(\n () => ({\n columnId: column.id,\n }),\n [column.id],\n );\n\n const [buttonReference, setButtonReference] = useState<HTMLButtonElement | null>(null);\n\n const [isButtonFocused, setIsButtonFocused] = useState(false);\n const { isIconVisible, isMenuOpen } = useGetFilterVisibility(reduxHeader);\n\n const { handleTriggerClick, handleClickOutsideMenu, handleMenuOnKeyDown, handleTriggerOnFocus, handleTriggerOnBlur } =\n useGetFilterHandlers(props, isMenuOpen, buttonReference, setIsButtonFocused);\n\n const lastElementRef = useRef<HTMLButtonElement>(null);\n const boundaryRef = useRef<HTMLDivElement | null>(null);\n\n const {\n floatingStyles,\n isOpen: isFloatingOpen,\n refs,\n context,\n } = useFloatingContext({\n externallyControlledIsOpen: isMenuOpen,\n placement: 'bottom-end',\n withoutAnimation: true,\n customOffset: [0, 0],\n });\n\n useOnClickOutside(isMenuOpen ? refs.floating : null, handleClickOutsideMenu);\n const handleOnKeyDown = useFocusTrap({\n firstElementRef,\n lastElementRef,\n });\n\n useEffect(() => {\n if (columnReference) {\n refs.setReference(columnReference);\n }\n }, [columnReference, refs]);\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n // This is here to prevent propagation, and not trigger the sort functionality\n onClick={(e) => e.stopPropagation()}\n onKeyDown={handleMenuOnKeyDown}\n >\n <FilterButton\n hide={!isIconVisible}\n data-testid={DATA_TABLE_DATA_TESTID.FILTER_POPOVER_BUTTON}\n getOwnerProps={getOwnerProps}\n >\n <DSButtonV3\n buttonType=\"icon\"\n size=\"s\"\n onClick={handleTriggerClick}\n onKeyDown={handleMenuOnKeyDown}\n onFocus={handleTriggerOnFocus}\n onBlur={handleTriggerOnBlur}\n innerRef={mergeRefs(isIconVisible && setButtonReference, innerRef)}\n tabIndex={reduxHeader?.withTabStops ? 0 : -1}\n aria-label={ariaLabel}\n aria-hidden={!isButtonFocused}\n data-testid={DATA_TABLE_DATA_TESTID.DATA_TABLE_FILTER_BUTTON_ELEMENT}\n >\n {triggerIcon}\n </DSButtonV3>\n </FilterButton>\n {refs.reference && (\n <StyledFloatingWrapper\n innerRef={refs.setFloating}\n isOpen={isFloatingOpen}\n floatingStyles={{\n ...floatingStyles,\n ...customStyles,\n minWidth: 'min-content',\n }}\n context={context}\n data-testid={DATA_TABLE_DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n aria-label={`Filter by ${column.Header as string}`}\n role=\"dialog\"\n >\n <PopperContent getOwnerProps={getOwnerProps} onKeyDown={handleOnKeyDown} innerRef={boundaryRef}>\n <form onSubmit={onFilterSubmit}>\n {menuContent}\n <StyledDSDialogFooter>\n <DSButtonV3 onClick={onFilterReset} buttonType=\"outline\" size=\"s\">\n Reset\n </DSButtonV3>\n <DSButtonV3 type=\"submit\" innerRef={lastElementRef} size=\"s\">\n Apply\n </DSButtonV3>\n </StyledDSDialogFooter>\n </form>\n </PopperContent>\n </StyledFloatingWrapper>\n )}\n </div>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADuFf;AAvFR,0BAA2B;AAE3B,iCAAmC;AACnC,iCAA6B;AAE7B,uBAA0B;AAC1B,mBAAgE;AAEhE,2CAA8B;AAC9B,uBAAuC;AAEvC,kCAAqC;AACrC,oCAAuC;AACvC,+BAAkC;AAClC,oBAAyF;AAElF,MAAM,kBAA6D,CAAC,UAAgC;AACzG,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,oBAAgB,oDAAc,CAAC,UAAU,MAAM,GAAG;AAExD,QAAM,6BAAyB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU,OAAO;AAAA,IACnB;AAAA,IACA,CAAC,OAAO,EAAE;AAAA,EACZ;AAEA,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAmC,IAAI;AAErF,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAS,KAAK;AAC5D,QAAM,EAAE,eAAe,WAAW,QAAI,sDAAuB,WAAW;AAExE,QAAM,EAAE,oBAAoB,wBAAwB,qBAAqB,sBAAsB,oBAAoB,QACjH,kDAAqB,OAAO,YAAY,iBAAiB,kBAAkB;AAE7E,QAAM,qBAAiB,qBAA0B,IAAI;AACrD,QAAM,kBAAc,qBAA8B,IAAI;AAEtD,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF,QAAI,+CAAmB;AAAA,IACrB,4BAA4B;AAAA,IAC5B,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,cAAc,CAAC,GAAG,CAAC;AAAA,EACrB,CAAC;AAED,kDAAkB,aAAa,KAAK,WAAW,MAAM,sBAAsB;AAC3E,QAAM,sBAAkB,yCAAa;AAAA,IACnC;AAAA,IACA;AAAA,EACF,CAAC;AAED,8BAAU,MAAM;AACd,QAAI,iBAAiB;AACnB,WAAK,aAAa,eAAe;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,iBAAiB,IAAI,CAAC;AAE1B;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA;AAAA,QAEC,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,QAClC,WAAW;AAAA,QAEX;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,CAAC;AAAA,cACP,eAAa,wCAAuB;AAAA,cACpC;AAAA,cAEA;AAAA,gBAAC;AAAA;AAAA,kBACC,YAAW;AAAA,kBACX,MAAK;AAAA,kBACL,SAAS;AAAA,kBACT,WAAW;AAAA,kBACX,SAAS;AAAA,kBACT,QAAQ;AAAA,kBACR,cAAU,4BAAU,iBAAiB,oBAAoB,QAAQ;AAAA,kBACjE,UAAU,aAAa,eAAe,IAAI;AAAA,kBAC1C,cAAY;AAAA,kBACZ,eAAa,CAAC;AAAA,kBACd,eAAa,wCAAuB;AAAA,kBAEnC;AAAA;AAAA,cACH;AAAA;AAAA,UACF;AAAA,UACC,KAAK,aACJ;AAAA,YAAC;AAAA;AAAA,cACC,UAAU,KAAK;AAAA,cACf,QAAQ;AAAA,cACR,gBAAgB;AAAA,gBACd,GAAG;AAAA,gBACH,GAAG;AAAA,gBACH,UAAU;AAAA,cACZ;AAAA,cACA;AAAA,cACA,eAAa,wCAAuB;AAAA,cACpC;AAAA,cACA;AAAA,cACA,cAAY,aAAa,OAAO,MAAgB;AAAA,cAChD,MAAK;AAAA,cAEL,sDAAC,+BAAc,eAA8B,WAAW,iBAAiB,UAAU,aACjF,uDAAC,UAAK,UAAU,gBACb;AAAA;AAAA,gBACD,6CAAC,sCACC;AAAA,8DAAC,kCAAW,SAAS,eAAe,YAAW,WAAU,MAAK,KAAI,mBAElE;AAAA,kBACA,4CAAC,kCAAW,MAAK,UAAS,UAAU,gBAAgB,MAAK,KAAI,mBAE7D;AAAA,mBACF;AAAA,iBACF,GACF;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IAEJ;AAAA;AAEJ;",
6
+ "names": []
7
+ }
@@ -34,37 +34,39 @@ module.exports = __toCommonJS(FilterPopover_exports);
34
34
  var React = __toESM(require("react"));
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_ds_button_v2 = require("@elliemae/ds-button-v2");
37
+ var import_ds_hooks_focus_trap = require("@elliemae/ds-hooks-focus-trap");
37
38
  var import_ds_popperjs = require("@elliemae/ds-popperjs");
38
39
  var import_ds_system = require("@elliemae/ds-system");
39
40
  var import_react = require("react");
40
- var import_constants = require("../../constants/index.js");
41
- var import_constants2 = require("../../configs/constants.js");
41
+ var import_constants = require("../../configs/constants.js");
42
42
  var import_createInternalAndPropsContext = require("../../configs/useStore/createInternalAndPropsContext.js");
43
+ var import_constants2 = require("../../constants/index.js");
43
44
  var import_useGetFilterHandlers = require("./useGetFilterHandlers.js");
44
45
  var import_useGetFilterVisibility = require("./useGetFilterVisibility.js");
45
- const FilterButton = (0, import_ds_system.styled)("span", { name: import_constants.DSDataTableName, slot: import_constants.DSDataTableSlots.FILTER_POPOVER_BUTTON })`
46
+ const FilterButton = (0, import_ds_system.styled)("span", { name: import_constants2.DSDataTableName, slot: import_constants2.DSDataTableSlots.FILTER_POPOVER_BUTTON })`
46
47
  display: inline-grid;
47
48
  ${(props) => props.hide ? "opacity: 0; display: none; width: 0;" : ""}
48
49
  `;
49
- const PopperContent = (0, import_ds_system.styled)("div", { name: import_constants.DSDataTableName, slot: import_constants.DSDataTableSlots.FILTER_POPOVER_CONTENT })`
50
+ const PopperContent = (0, import_ds_system.styled)("div", { name: import_constants2.DSDataTableName, slot: import_constants2.DSDataTableSlots.FILTER_POPOVER_CONTENT })`
50
51
  background-color: #fff;
51
52
  `;
52
53
  const StyledPoppoverJS = (0, import_ds_system.styled)(import_ds_popperjs.DSPopperJS, {
53
- name: import_constants.DSDataTableName,
54
- slot: import_constants.DSDataTableSlots.FILTER_POPOVER
54
+ name: import_constants2.DSDataTableName,
55
+ slot: import_constants2.DSDataTableSlots.FILTER_POPOVER
55
56
  })``;
56
- const ButtonTrap = ({ cb }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
57
- "span",
58
- {
59
- tabIndex: 0,
60
- onFocus: (e) => {
61
- e.stopPropagation();
62
- cb();
63
- }
64
- }
65
- );
66
57
  const FilterPopover = (props) => {
67
- const { column, customStyles, reduxHeader, menuContent, columnId, ariaLabel, triggerIcon, innerRef } = props;
58
+ const {
59
+ column,
60
+ customStyles,
61
+ reduxHeader,
62
+ menuContent,
63
+ ariaLabel,
64
+ triggerIcon,
65
+ innerRef,
66
+ columnReference,
67
+ firstElementRef,
68
+ lastElementRef
69
+ } = props;
68
70
  const filters = (0, import_createInternalAndPropsContext.usePropsStore)((state) => state.filters);
69
71
  const getOwnerProps = (0, import_createInternalAndPropsContext.usePropsStore)((store) => store.get);
70
72
  const getOwnerPropsArguments = (0, import_react.useCallback)(
@@ -73,18 +75,18 @@ const FilterPopover = (props) => {
73
75
  }),
74
76
  [column.id]
75
77
  );
76
- const patchHeader = (0, import_createInternalAndPropsContext.useInternalStore)((state) => state.patchHeader);
77
78
  const { isIconVisible, isMenuOpen } = (0, import_useGetFilterVisibility.useGetFilterVisibility)(reduxHeader);
78
79
  const [buttonReference, setButtonReference] = (0, import_react.useState)(null);
79
80
  const [isButtonFocused, setIsButtonFocused] = (0, import_react.useState)(false);
80
81
  const { handleTriggerClick, handleClickOutsideMenu, handleMenuOnKeyDown, handleTriggerOnFocus, handleTriggerOnBlur } = (0, import_useGetFilterHandlers.useGetFilterHandlers)(props, isMenuOpen, buttonReference, setIsButtonFocused);
81
- const buttonTrapCallback = (0, import_react.useCallback)(() => {
82
- patchHeader(columnId, { hideFilterMenu: true, hideFilterButton: false });
83
- buttonReference?.focus();
84
- }, [columnId, patchHeader, buttonReference]);
85
82
  const actionRef = (0, import_react.useRef)({
86
83
  update: null
87
84
  });
85
+ const popoverContentRef = (0, import_react.useRef)(null);
86
+ const handleOnKeyDown = (0, import_ds_hooks_focus_trap.useFocusTrap)({
87
+ firstElementRef,
88
+ lastElementRef
89
+ });
88
90
  (0, import_react.useEffect)(() => {
89
91
  void actionRef.current.update?.();
90
92
  }, [filters]);
@@ -98,7 +100,7 @@ const FilterPopover = (props) => {
98
100
  FilterButton,
99
101
  {
100
102
  hide: !isIconVisible,
101
- "data-testid": import_constants2.DATA_TESTID.DATA_TABLE_FILTER_BUTTON,
103
+ "data-testid": import_constants.DATA_TESTID.DATA_TABLE_FILTER_BUTTON,
102
104
  getOwnerProps,
103
105
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
104
106
  import_ds_button_v2.DSButtonV2,
@@ -112,22 +114,22 @@ const FilterPopover = (props) => {
112
114
  tabIndex: reduxHeader?.withTabStops ? 0 : -1,
113
115
  "aria-label": ariaLabel,
114
116
  "aria-hidden": !isButtonFocused,
115
- "data-testid": import_constants2.DATA_TESTID.DATA_TABLE_FILTER_BUTTON_ELEMENT,
117
+ "data-testid": import_constants.DATA_TESTID.DATA_TABLE_FILTER_BUTTON_ELEMENT,
116
118
  children: triggerIcon
117
119
  }
118
120
  )
119
121
  }
120
122
  ),
121
- buttonReference && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
123
+ (columnReference || buttonReference) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
122
124
  StyledPoppoverJS,
123
125
  {
124
126
  actionRef,
125
- referenceElement: buttonReference,
127
+ referenceElement: columnReference || buttonReference,
126
128
  showPopover: isMenuOpen,
127
129
  closeContextMenu: handleClickOutsideMenu,
128
- "data-testid": import_constants2.DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT,
130
+ "data-testid": import_constants.DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT,
129
131
  startPlacementPreference: "bottom-end",
130
- customOffset: [5, 4],
132
+ customOffset: columnReference ? [0, 1] : [5, 4],
131
133
  withoutArrow: true,
132
134
  withoutAnimation: true,
133
135
  extraPopperStyles: {
@@ -137,11 +139,9 @@ const FilterPopover = (props) => {
137
139
  placementOrderPreference: ["bottom-end", "top-end"],
138
140
  getOwnerProps,
139
141
  getOwnerPropsArguments,
140
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(PopperContent, { getOwnerProps, children: [
141
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonTrap, { cb: buttonTrapCallback }),
142
- menuContent,
143
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonTrap, { cb: buttonTrapCallback })
144
- ] })
142
+ role: "dialog",
143
+ "aria-label": `Filter by ${column.Header}`,
144
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PopperContent, { getOwnerProps, innerRef: popoverContentRef, onKeyDown: handleOnKeyDown, children: menuContent })
145
145
  }
146
146
  )
147
147
  ]