@elliemae/ds-data-table 3.80.0-next.64 → 3.80.0-next.67

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 (366) hide show
  1. package/dist/cjs/TruncatedTooltipText.js +1 -3
  2. package/dist/cjs/TruncatedTooltipText.js.map +2 -2
  3. package/dist/cjs/addons/Columns/ColumnAction/ColumnAction.js.map +2 -2
  4. package/dist/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +27 -19
  5. package/dist/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js.map +2 -2
  6. package/dist/cjs/addons/Columns/ColumnExpand/ColumnExpand.js +25 -17
  7. package/dist/cjs/addons/Columns/ColumnExpand/ColumnExpand.js.map +2 -2
  8. package/dist/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +24 -14
  9. package/dist/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js.map +2 -2
  10. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js.map +2 -2
  11. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  12. package/dist/cjs/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js.map +2 -2
  13. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js.map +2 -2
  14. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js.map +2 -2
  15. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js.map +2 -2
  16. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js.map +2 -2
  17. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  18. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  19. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js.map +2 -2
  20. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilter.js.map +2 -2
  21. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js.map +2 -2
  22. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilter.js.map +2 -2
  23. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js.map +2 -2
  24. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilter.js.map +2 -2
  25. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js.map +2 -2
  26. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js.map +2 -2
  27. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js.map +2 -2
  28. package/dist/cjs/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js.map +2 -2
  29. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js.map +2 -2
  30. package/dist/cjs/configs/constants.js +1 -3
  31. package/dist/cjs/configs/constants.js.map +2 -2
  32. package/dist/cjs/configs/index.js +0 -1
  33. package/dist/cjs/configs/index.js.map +2 -2
  34. package/dist/cjs/configs/useStore/index.js +1 -7
  35. package/dist/cjs/configs/useStore/index.js.map +2 -2
  36. package/dist/cjs/configs/useTableColsWithAddons.js +2 -2
  37. package/dist/cjs/configs/useTableColsWithAddons.js.map +2 -2
  38. package/dist/cjs/constants/index.js +2 -1
  39. package/dist/cjs/constants/index.js.map +2 -2
  40. package/dist/cjs/exported-related/EditableCell.js +6 -4
  41. package/dist/cjs/exported-related/EditableCell.js.map +2 -2
  42. package/dist/cjs/exported-related/FilterBar/FilterBarDropdownMenu.js +16 -62
  43. package/dist/cjs/exported-related/FilterBar/FilterBarDropdownMenu.js.map +2 -2
  44. package/dist/cjs/exported-related/FilterBar/FilterMenuButton.js +15 -15
  45. package/dist/cjs/exported-related/FilterBar/FilterMenuButton.js.map +2 -2
  46. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js.map +2 -2
  47. package/dist/cjs/{parts/RowVariants/types.js → exported-related/FilterBar/dropdownMenuV2Bridge/bridgeTypes.js} +3 -3
  48. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/bridgeTypes.js.map +7 -0
  49. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/conversionHelpers.js +137 -0
  50. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/conversionHelpers.js.map +7 -0
  51. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/getHumanReadableWarnings.js +64 -0
  52. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/getHumanReadableWarnings.js.map +7 -0
  53. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/index.js +113 -0
  54. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/index.js.map +7 -0
  55. package/dist/cjs/exported-related/FilterBar/dropdownMenuV2Bridge/types.js.map +7 -0
  56. package/dist/cjs/exported-related/FilterPopover/FilterPopoverV2.js +17 -8
  57. package/dist/cjs/exported-related/FilterPopover/FilterPopoverV2.js.map +2 -2
  58. package/dist/cjs/exported-related/FilterPopover/index.js +11 -2
  59. package/dist/cjs/exported-related/FilterPopover/index.js.map +2 -2
  60. package/dist/cjs/exported-related/FilterPopover/styled.js +11 -0
  61. package/dist/cjs/exported-related/FilterPopover/styled.js.map +2 -2
  62. package/dist/cjs/exported-related/FilterPopover/useGetFilterHandlers.js.map +1 -1
  63. package/dist/cjs/exported-related/FilterTypes.js +10 -0
  64. package/dist/cjs/exported-related/FilterTypes.js.map +2 -2
  65. package/dist/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js.map +2 -2
  66. package/dist/cjs/exported-related/RowRenderer/index.js +2 -0
  67. package/dist/cjs/exported-related/RowRenderer/index.js.map +2 -2
  68. package/dist/cjs/exported-related/Toolbar/Toolbar.js +36 -22
  69. package/dist/cjs/exported-related/Toolbar/Toolbar.js.map +2 -2
  70. package/dist/cjs/helpers/getIdFromUniqueRowAccessor.js.map +1 -1
  71. package/dist/cjs/helpers/gridLayoutHelpers.js +2 -0
  72. package/dist/cjs/helpers/gridLayoutHelpers.js.map +2 -2
  73. package/dist/cjs/helpers/index.js +1 -0
  74. package/dist/cjs/helpers/index.js.map +2 -2
  75. package/dist/cjs/{parts/internal.js → helpers/smallButtonSize.js} +17 -8
  76. package/dist/cjs/helpers/smallButtonSize.js.map +7 -0
  77. package/dist/cjs/parts/Cells/CellFactory.js.map +2 -2
  78. package/dist/cjs/parts/Cells/index.js +19 -8
  79. package/dist/cjs/parts/Cells/index.js.map +2 -2
  80. package/dist/cjs/parts/DnDHandle.js +4 -2
  81. package/dist/cjs/parts/DnDHandle.js.map +2 -2
  82. package/dist/cjs/parts/DropIndicator.js.map +2 -2
  83. package/dist/cjs/parts/EmptyContent.js +2 -2
  84. package/dist/cjs/parts/EmptyContent.js.map +2 -2
  85. package/dist/cjs/parts/FilterBar/FilterBarMenuButtonAddon.js +88 -0
  86. package/dist/cjs/parts/FilterBar/FilterBarMenuButtonAddon.js.map +7 -0
  87. package/dist/cjs/parts/FilterBar/FiltersBar.js +4 -39
  88. package/dist/cjs/parts/FilterBar/FiltersBar.js.map +2 -2
  89. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  90. package/dist/cjs/{configs/fixedSizes.js → parts/FilterBar/convertExtraOptions.js} +16 -8
  91. package/dist/cjs/parts/FilterBar/convertExtraOptions.js.map +7 -0
  92. package/dist/cjs/parts/Headers/EmptyChildrenGroup.js +4 -2
  93. package/dist/cjs/parts/Headers/EmptyChildrenGroup.js.map +2 -2
  94. package/dist/cjs/parts/Headers/HeaderCell.js +29 -11
  95. package/dist/cjs/parts/Headers/HeaderCell.js.map +2 -2
  96. package/dist/cjs/parts/Headers/HeaderCellGroup.js +3 -1
  97. package/dist/cjs/parts/Headers/HeaderCellGroup.js.map +2 -2
  98. package/dist/cjs/parts/Headers/HeaderCellTitle.js +5 -1
  99. package/dist/cjs/parts/Headers/HeaderCellTitle.js.map +2 -2
  100. package/dist/cjs/parts/Headers/HeaderResizer.js +3 -1
  101. package/dist/cjs/parts/Headers/HeaderResizer.js.map +2 -2
  102. package/dist/cjs/parts/Headers/useHeaderCellConfig.js.map +2 -2
  103. package/dist/cjs/parts/Headers/useHeaderCellHandlers.js.map +2 -2
  104. package/dist/cjs/parts/Headers/useHeaderResizer.js +2 -2
  105. package/dist/cjs/parts/Headers/useHeaderResizer.js.map +2 -2
  106. package/dist/cjs/parts/HoC/withConditionalDnDSortableContext.js.map +2 -2
  107. package/dist/cjs/parts/RowVariants/RowVariantHeader.js +6 -2
  108. package/dist/cjs/parts/RowVariants/RowVariantHeader.js.map +2 -2
  109. package/dist/cjs/parts/SkeletonTable.js +1 -1
  110. package/dist/cjs/parts/SkeletonTable.js.map +2 -2
  111. package/dist/cjs/parts/SortByCaret.js +0 -1
  112. package/dist/cjs/parts/SortByCaret.js.map +2 -2
  113. package/dist/cjs/react-desc-prop-types.js +75 -21
  114. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  115. package/dist/cjs/styled.js +7 -1
  116. package/dist/cjs/styled.js.map +2 -2
  117. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/README.md +9 -0
  118. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/filter-bar-props.js +71 -0
  119. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/filter-bar-props.js.map +7 -0
  120. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/get-row-variant.js +38 -0
  121. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/get-row-variant.js.map +7 -0
  122. package/dist/cjs/{parts/FilterBar/index.js → tentative-typescript-testing-for-unsafe-type/sizes.js} +10 -12
  123. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/sizes.js.map +7 -0
  124. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/slot-props.js +134 -0
  125. package/dist/cjs/tentative-typescript-testing-for-unsafe-type/slot-props.js.map +7 -0
  126. package/dist/esm/TruncatedTooltipText.js +2 -8
  127. package/dist/esm/TruncatedTooltipText.js.map +2 -2
  128. package/dist/esm/addons/Columns/ColumnAction/ColumnAction.js.map +2 -2
  129. package/dist/esm/addons/Columns/ColumnDragHandle/ColumnDragHandle.js +28 -20
  130. package/dist/esm/addons/Columns/ColumnDragHandle/ColumnDragHandle.js.map +2 -2
  131. package/dist/esm/addons/Columns/ColumnExpand/ColumnExpand.js +25 -17
  132. package/dist/esm/addons/Columns/ColumnExpand/ColumnExpand.js.map +2 -2
  133. package/dist/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +24 -14
  134. package/dist/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js.map +2 -2
  135. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js.map +2 -2
  136. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  137. package/dist/esm/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js.map +2 -2
  138. package/dist/esm/addons/Filters/Components/DateRangeFilter/index.js.map +2 -2
  139. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js.map +2 -2
  140. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/index.js.map +2 -2
  141. package/dist/esm/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js.map +2 -2
  142. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  143. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  144. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js.map +2 -2
  145. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilter.js.map +2 -2
  146. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js.map +2 -2
  147. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilter.js.map +2 -2
  148. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js.map +2 -2
  149. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilter.js.map +2 -2
  150. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js.map +2 -2
  151. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js.map +2 -2
  152. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js.map +2 -2
  153. package/dist/esm/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js.map +2 -2
  154. package/dist/esm/addons/Filters/Components/SingleDateFilter/index.js.map +2 -2
  155. package/dist/esm/configs/constants.js +1 -3
  156. package/dist/esm/configs/constants.js.map +2 -2
  157. package/dist/esm/configs/index.js +0 -1
  158. package/dist/esm/configs/index.js.map +2 -2
  159. package/dist/esm/configs/useStore/index.js +2 -8
  160. package/dist/esm/configs/useStore/index.js.map +2 -2
  161. package/dist/esm/configs/useTableColsWithAddons.js +2 -2
  162. package/dist/esm/configs/useTableColsWithAddons.js.map +2 -2
  163. package/dist/esm/constants/index.js +2 -1
  164. package/dist/esm/constants/index.js.map +2 -2
  165. package/dist/esm/exported-related/EditableCell.js +6 -4
  166. package/dist/esm/exported-related/EditableCell.js.map +2 -2
  167. package/dist/esm/exported-related/FilterBar/FilterBarDropdownMenu.js +17 -63
  168. package/dist/esm/exported-related/FilterBar/FilterBarDropdownMenu.js.map +2 -2
  169. package/dist/esm/exported-related/FilterBar/FilterMenuButton.js +16 -16
  170. package/dist/esm/exported-related/FilterBar/FilterMenuButton.js.map +2 -2
  171. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js.map +2 -2
  172. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/bridgeTypes.js +2 -0
  173. package/dist/esm/{parts/RowVariants/types.js.map → exported-related/FilterBar/dropdownMenuV2Bridge/bridgeTypes.js.map} +1 -1
  174. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/conversionHelpers.js +107 -0
  175. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/conversionHelpers.js.map +7 -0
  176. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/getHumanReadableWarnings.js +34 -0
  177. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/getHumanReadableWarnings.js.map +7 -0
  178. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/index.js +89 -0
  179. package/dist/esm/exported-related/FilterBar/dropdownMenuV2Bridge/index.js.map +7 -0
  180. package/dist/esm/exported-related/{FilterPopover → FilterBar/dropdownMenuV2Bridge}/types.js.map +1 -1
  181. package/dist/esm/exported-related/FilterPopover/FilterPopoverV2.js +17 -8
  182. package/dist/esm/exported-related/FilterPopover/FilterPopoverV2.js.map +2 -2
  183. package/dist/esm/exported-related/FilterPopover/index.js +11 -2
  184. package/dist/esm/exported-related/FilterPopover/index.js.map +2 -2
  185. package/dist/esm/exported-related/FilterPopover/styled.js +11 -0
  186. package/dist/esm/exported-related/FilterPopover/styled.js.map +2 -2
  187. package/dist/esm/exported-related/FilterPopover/useGetFilterHandlers.js.map +1 -1
  188. package/dist/esm/exported-related/FilterTypes.js +10 -0
  189. package/dist/esm/exported-related/FilterTypes.js.map +2 -2
  190. package/dist/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js.map +2 -2
  191. package/dist/esm/exported-related/RowRenderer/index.js +3 -1
  192. package/dist/esm/exported-related/RowRenderer/index.js.map +2 -2
  193. package/dist/esm/exported-related/Toolbar/Toolbar.js +36 -22
  194. package/dist/esm/exported-related/Toolbar/Toolbar.js.map +2 -2
  195. package/dist/esm/helpers/getIdFromUniqueRowAccessor.js.map +1 -1
  196. package/dist/esm/helpers/gridLayoutHelpers.js +2 -0
  197. package/dist/esm/helpers/gridLayoutHelpers.js.map +2 -2
  198. package/dist/esm/helpers/index.js +1 -0
  199. package/dist/esm/helpers/index.js.map +2 -2
  200. package/dist/esm/helpers/smallButtonSize.js +17 -0
  201. package/dist/esm/helpers/smallButtonSize.js.map +7 -0
  202. package/dist/esm/parts/Cells/CellFactory.js.map +2 -2
  203. package/dist/esm/parts/Cells/index.js +19 -8
  204. package/dist/esm/parts/Cells/index.js.map +2 -2
  205. package/dist/esm/parts/DnDHandle.js +5 -3
  206. package/dist/esm/parts/DnDHandle.js.map +2 -2
  207. package/dist/esm/parts/DropIndicator.js.map +2 -2
  208. package/dist/esm/parts/EmptyContent.js +2 -2
  209. package/dist/esm/parts/EmptyContent.js.map +2 -2
  210. package/dist/esm/parts/FilterBar/FilterBarMenuButtonAddon.js +58 -0
  211. package/dist/esm/parts/FilterBar/FilterBarMenuButtonAddon.js.map +7 -0
  212. package/dist/esm/parts/FilterBar/FiltersBar.js +5 -40
  213. package/dist/esm/parts/FilterBar/FiltersBar.js.map +2 -2
  214. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  215. package/dist/esm/parts/FilterBar/convertExtraOptions.js +16 -0
  216. package/dist/esm/parts/FilterBar/convertExtraOptions.js.map +7 -0
  217. package/dist/esm/parts/Headers/EmptyChildrenGroup.js +4 -2
  218. package/dist/esm/parts/Headers/EmptyChildrenGroup.js.map +2 -2
  219. package/dist/esm/parts/Headers/HeaderCell.js +29 -11
  220. package/dist/esm/parts/Headers/HeaderCell.js.map +2 -2
  221. package/dist/esm/parts/Headers/HeaderCellGroup.js +4 -2
  222. package/dist/esm/parts/Headers/HeaderCellGroup.js.map +2 -2
  223. package/dist/esm/parts/Headers/HeaderCellTitle.js +5 -1
  224. package/dist/esm/parts/Headers/HeaderCellTitle.js.map +2 -2
  225. package/dist/esm/parts/Headers/HeaderResizer.js +4 -2
  226. package/dist/esm/parts/Headers/HeaderResizer.js.map +2 -2
  227. package/dist/esm/parts/Headers/useHeaderCellConfig.js.map +2 -2
  228. package/dist/esm/parts/Headers/useHeaderCellHandlers.js.map +2 -2
  229. package/dist/esm/parts/Headers/useHeaderResizer.js +3 -2
  230. package/dist/esm/parts/Headers/useHeaderResizer.js.map +2 -2
  231. package/dist/esm/parts/HoC/withConditionalDnDSortableContext.js.map +2 -2
  232. package/dist/esm/parts/RowVariants/RowVariantHeader.js +7 -3
  233. package/dist/esm/parts/RowVariants/RowVariantHeader.js.map +2 -2
  234. package/dist/esm/parts/SkeletonTable.js +1 -1
  235. package/dist/esm/parts/SkeletonTable.js.map +2 -2
  236. package/dist/esm/parts/SortByCaret.js +0 -1
  237. package/dist/esm/parts/SortByCaret.js.map +2 -2
  238. package/dist/esm/react-desc-prop-types.js +75 -21
  239. package/dist/esm/react-desc-prop-types.js.map +2 -2
  240. package/dist/esm/styled.js +8 -2
  241. package/dist/esm/styled.js.map +2 -2
  242. package/dist/esm/tentative-typescript-testing-for-unsafe-type/README.md +9 -0
  243. package/dist/esm/tentative-typescript-testing-for-unsafe-type/filter-bar-props.js +48 -0
  244. package/dist/esm/tentative-typescript-testing-for-unsafe-type/filter-bar-props.js.map +7 -0
  245. package/dist/esm/tentative-typescript-testing-for-unsafe-type/get-row-variant.js +15 -0
  246. package/dist/esm/tentative-typescript-testing-for-unsafe-type/get-row-variant.js.map +7 -0
  247. package/dist/esm/tentative-typescript-testing-for-unsafe-type/sizes.js +11 -0
  248. package/dist/esm/tentative-typescript-testing-for-unsafe-type/sizes.js.map +7 -0
  249. package/dist/esm/tentative-typescript-testing-for-unsafe-type/slot-props.js +111 -0
  250. package/dist/esm/tentative-typescript-testing-for-unsafe-type/slot-props.js.map +7 -0
  251. package/dist/types/TruncatedTooltipText.d.ts +2 -7
  252. package/dist/types/addons/Columns/ColumnAction/ColumnAction.d.ts +1 -3
  253. package/dist/types/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.d.ts +1 -6
  254. package/dist/types/addons/Filters/Components/CurrencyRangeFilter/index.d.ts +1 -6
  255. package/dist/types/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.d.ts +1 -6
  256. package/dist/types/addons/Filters/Components/DateRangeFilter/index.d.ts +1 -6
  257. package/dist/types/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.d.ts +1 -7
  258. package/dist/types/addons/Filters/Components/DateSwitcherFilter/index.d.ts +1 -7
  259. package/dist/types/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.d.ts +1 -6
  260. package/dist/types/addons/Filters/Components/NumberRangeFilter/index.d.ts +1 -6
  261. package/dist/types/addons/Filters/Components/SelectFilter/BaseSelectFilter.d.ts +1 -9
  262. package/dist/types/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.d.ts +1 -9
  263. package/dist/types/addons/Filters/Components/SelectFilter/MultiCreatableFilter.d.ts +1 -4
  264. package/dist/types/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.d.ts +1 -4
  265. package/dist/types/addons/Filters/Components/SelectFilter/MultiSelectFilter.d.ts +1 -4
  266. package/dist/types/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.d.ts +1 -4
  267. package/dist/types/addons/Filters/Components/SelectFilter/SingleCreatableFilter.d.ts +1 -4
  268. package/dist/types/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.d.ts +1 -4
  269. package/dist/types/addons/Filters/Components/SelectFilter/SingleSelectFilter.d.ts +1 -4
  270. package/dist/types/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.d.ts +1 -4
  271. package/dist/types/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.d.ts +1 -3
  272. package/dist/types/addons/Filters/Components/SingleDateFilter/index.d.ts +1 -3
  273. package/dist/types/configs/constants.d.ts +0 -1
  274. package/dist/types/configs/index.d.ts +0 -1
  275. package/dist/types/configs/useStore/index.d.ts +1 -2
  276. package/dist/types/constants/index.d.ts +4 -0
  277. package/dist/types/exported-related/FilterBar/FilterBarDropdownMenu.d.ts +8 -7
  278. package/dist/types/exported-related/FilterBar/FilterMenuButton.d.ts +2 -19
  279. package/dist/types/exported-related/FilterBar/PillsFromDataTableFilters.d.ts +1 -10
  280. package/dist/types/exported-related/FilterBar/dropdownMenuV2Bridge/bridgeTypes.d.ts +22 -0
  281. package/dist/types/exported-related/FilterBar/dropdownMenuV2Bridge/conversionHelpers.d.ts +78 -0
  282. package/dist/types/exported-related/FilterBar/dropdownMenuV2Bridge/getHumanReadableWarnings.d.ts +7 -0
  283. package/dist/types/exported-related/FilterBar/dropdownMenuV2Bridge/index.d.ts +14 -0
  284. package/dist/types/exported-related/FilterBar/dropdownMenuV2Bridge/types.d.ts +60 -0
  285. package/dist/types/exported-related/FilterPopover/FilterPopoverV2.d.ts +2 -2
  286. package/dist/types/exported-related/FilterPopover/index.d.ts +2 -2
  287. package/dist/types/exported-related/FilterPopover/styled.d.ts +3 -1
  288. package/dist/types/exported-related/FilterPopover/useGetFilterHandlers.d.ts +2 -2
  289. package/dist/types/exported-related/FilterTypes.d.ts +10 -0
  290. package/dist/types/exported-related/RowRenderer/DefaultRowContentRenderer.d.ts +2 -2
  291. package/dist/types/exported-related/RowRenderer/index.d.ts +1 -16
  292. package/dist/types/exported-related/Toolbar/Toolbar.d.ts +1 -7
  293. package/dist/types/helpers/gridLayoutHelpers.d.ts +1 -0
  294. package/dist/types/helpers/index.d.ts +1 -0
  295. package/dist/types/helpers/smallButtonSize.d.ts +4 -0
  296. package/dist/types/parts/Cells/CellFactory.d.ts +1 -10
  297. package/dist/types/parts/DnDHandle.d.ts +4 -0
  298. package/dist/types/parts/DropIndicator.d.ts +1 -7
  299. package/dist/types/parts/FilterBar/FilterBarMenuButtonAddon.d.ts +14 -0
  300. package/dist/types/parts/FilterBar/components/MultiSelectPill.d.ts +1 -4
  301. package/dist/types/parts/FilterBar/convertExtraOptions.d.ts +8 -0
  302. package/dist/types/parts/Headers/EmptyChildrenGroup.d.ts +3 -1
  303. package/dist/types/parts/Headers/HeaderCell.d.ts +1 -7
  304. package/dist/types/parts/Headers/HeaderCellTitle.d.ts +1 -8
  305. package/dist/types/parts/Headers/useHeaderCellConfig.d.ts +1 -15
  306. package/dist/types/parts/Headers/useHeaderCellHandlers.d.ts +1 -22
  307. package/dist/types/parts/HoC/withConditionalDnDSortableContext.d.ts +1 -6
  308. package/dist/types/parts/SkeletonTable.d.ts +1 -1
  309. package/dist/types/react-desc-prop-types.d.ts +305 -6
  310. package/package.json +29 -31
  311. package/skills/ds-data-table-boundaries/SKILL.md +50 -43
  312. package/skills/ds-data-table-columns/SKILL.md +17 -11
  313. package/skills/ds-data-table-expandable/SKILL.md +21 -13
  314. package/skills/ds-data-table-feedback/SKILL.md +9 -9
  315. package/skills/ds-data-table-filtering/SKILL.md +32 -11
  316. package/skills/ds-data-table-health-check/SKILL.md +7 -7
  317. package/skills/ds-data-table-migration/SKILL.md +8 -7
  318. package/skills/ds-data-table-pagination/SKILL.md +6 -6
  319. package/skills/ds-data-table-row-variants/SKILL.md +34 -22
  320. package/skills/ds-data-table-selection/SKILL.md +23 -25
  321. package/skills/ds-data-table-setup/SKILL.md +31 -13
  322. package/skills/ds-data-table-slots/SKILL.md +55 -25
  323. package/dist/cjs/addons/Editables/DateEditableCell/DateEditableCell.js +0 -63
  324. package/dist/cjs/addons/Editables/DateEditableCell/DateEditableCell.js.map +0 -7
  325. package/dist/cjs/configs/fixedSizes.js.map +0 -7
  326. package/dist/cjs/configs/useInternalStateConfig.js +0 -80
  327. package/dist/cjs/configs/useInternalStateConfig.js.map +0 -7
  328. package/dist/cjs/configs/useValidateProps.js +0 -47
  329. package/dist/cjs/configs/useValidateProps.js.map +0 -7
  330. package/dist/cjs/exported-related/FilterPopover/types.js.map +0 -7
  331. package/dist/cjs/parts/Cells/Cell.js +0 -126
  332. package/dist/cjs/parts/Cells/Cell.js.map +0 -7
  333. package/dist/cjs/parts/FilterBar/DeprecatedDropdown.js +0 -85
  334. package/dist/cjs/parts/FilterBar/DeprecatedDropdown.js.map +0 -7
  335. package/dist/cjs/parts/FilterBar/index.js.map +0 -7
  336. package/dist/cjs/parts/RowVariants/types.js.map +0 -7
  337. package/dist/cjs/parts/internal.js.map +0 -7
  338. package/dist/esm/addons/Editables/DateEditableCell/DateEditableCell.js +0 -33
  339. package/dist/esm/addons/Editables/DateEditableCell/DateEditableCell.js.map +0 -7
  340. package/dist/esm/configs/fixedSizes.js +0 -8
  341. package/dist/esm/configs/fixedSizes.js.map +0 -7
  342. package/dist/esm/configs/useInternalStateConfig.js +0 -50
  343. package/dist/esm/configs/useInternalStateConfig.js.map +0 -7
  344. package/dist/esm/configs/useValidateProps.js +0 -17
  345. package/dist/esm/configs/useValidateProps.js.map +0 -7
  346. package/dist/esm/parts/Cells/Cell.js +0 -96
  347. package/dist/esm/parts/Cells/Cell.js.map +0 -7
  348. package/dist/esm/parts/FilterBar/DeprecatedDropdown.js +0 -55
  349. package/dist/esm/parts/FilterBar/DeprecatedDropdown.js.map +0 -7
  350. package/dist/esm/parts/FilterBar/index.js +0 -6
  351. package/dist/esm/parts/FilterBar/index.js.map +0 -7
  352. package/dist/esm/parts/RowVariants/types.js +0 -2
  353. package/dist/esm/parts/internal.js +0 -8
  354. package/dist/esm/parts/internal.js.map +0 -7
  355. package/dist/types/addons/Editables/DateEditableCell/DateEditableCell.d.ts +0 -7
  356. package/dist/types/configs/fixedSizes.d.ts +0 -3
  357. package/dist/types/configs/useInternalStateConfig.d.ts +0 -12
  358. package/dist/types/configs/useValidateProps.d.ts +0 -2
  359. package/dist/types/exported-related/FilterPopover/types.d.ts +0 -33
  360. package/dist/types/parts/Cells/Cell.d.ts +0 -12
  361. package/dist/types/parts/FilterBar/DeprecatedDropdown.d.ts +0 -13
  362. package/dist/types/parts/FilterBar/index.d.ts +0 -1
  363. package/dist/types/parts/RowVariants/types.d.ts +0 -19
  364. package/dist/types/parts/internal.d.ts +0 -2
  365. /package/dist/cjs/exported-related/{FilterPopover → FilterBar/dropdownMenuV2Bridge}/types.js +0 -0
  366. /package/dist/esm/exported-related/{FilterPopover → FilterBar/dropdownMenuV2Bridge}/types.js +0 -0
@@ -0,0 +1,137 @@
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 conversionHelpers_exports = {};
30
+ __export(conversionHelpers_exports, {
31
+ convertActionOptToMenuButtonItem: () => convertActionOptToMenuButtonItem,
32
+ convertCheckboxOptToMenuButtonItem: () => convertCheckboxOptToMenuButtonItem,
33
+ convertDropdownItemToMenuButtonItem: () => convertDropdownItemToMenuButtonItem,
34
+ convertSectionOptToMenuButtonItem: () => convertSectionOptToMenuButtonItem,
35
+ convertSeparatorOptToMenuButtonItem: () => convertSeparatorOptToMenuButtonItem,
36
+ convertSingleSelectionOptToMenuButtonItem: () => convertSingleSelectionOptToMenuButtonItem,
37
+ convertSingleWithSubmenuOptToMenuButtonItem: () => convertSingleWithSubmenuOptToMenuButtonItem,
38
+ convertSkeletonOptToMenuButtonItem: () => convertSkeletonOptToMenuButtonItem,
39
+ convertSubmenuOptToMenuButtonItem: () => convertSubmenuOptToMenuButtonItem,
40
+ isItemSectionOptions: () => isItemSectionOptions,
41
+ isItemSingleWithSubmenuOptions: () => isItemSingleWithSubmenuOptions,
42
+ isItemSubmenuOptions: () => isItemSubmenuOptions
43
+ });
44
+ module.exports = __toCommonJS(conversionHelpers_exports);
45
+ var React = __toESM(require("react"));
46
+ var import_ds_menu_button = require("@elliemae/ds-menu-button");
47
+ const isItemSingleOptions = (option) => option.type === "single";
48
+ const isItemActionOptions = (option) => option.type === "action";
49
+ const isItemSingleWithSubmenuOptions = (option) => option.type === "singleWithSubmenu";
50
+ const isItemCheckboxOptions = (option) => option.type === "checkbox";
51
+ const isItemSubmenuOptions = (option) => option.type === "submenu";
52
+ const isItemSeparatorOptions = (option) => option.type === "separator";
53
+ const isItemSectionOptions = (option) => option.type === "section";
54
+ const isItemSkeletonOptions = (option) => option.type === "skeleton";
55
+ const convertActionOptToMenuButtonItem = (option) => ({
56
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.ACTIVABLE_ITEM,
57
+ label: option.label,
58
+ // DSDropdownMenuT common items properties
59
+ dsId: option.dsId,
60
+ minWidth: option?.minWidth,
61
+ disabled: option.disabled || option.applyAriaDisabled,
62
+ onClick: option.onClick,
63
+ onKeyDown: option.onKeyDown
64
+ });
65
+ const convertSingleSelectionOptToMenuButtonItem = (option) => ({
66
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.SINGLE_SELECT_ITEM,
67
+ label: option.label,
68
+ // DSDropdownMenuT common items properties
69
+ dsId: option.dsId,
70
+ minWidth: option?.minWidth,
71
+ disabled: option.disabled || option.applyAriaDisabled,
72
+ onClick: option.onClick,
73
+ onKeyDown: option.onKeyDown
74
+ });
75
+ const convertCheckboxOptToMenuButtonItem = (option) => ({
76
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.MULTIPLE_SELECT_ITEM,
77
+ label: option.label,
78
+ // DSDropdownMenuT common items properties
79
+ dsId: option.dsId,
80
+ minWidth: option?.minWidth,
81
+ disabled: option.disabled || option.applyAriaDisabled,
82
+ onClick: option.onClick,
83
+ onKeyDown: option.onKeyDown
84
+ });
85
+ const convertSeparatorOptToMenuButtonItem = (option) => ({
86
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.SEPARATOR,
87
+ // DSDropdownMenuT common items properties
88
+ dsId: option.dsId
89
+ });
90
+ const convertSectionOptToMenuButtonItem = (option) => ({
91
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.GROUP,
92
+ label: option.label,
93
+ // DSDropdownMenuT common items properties
94
+ dsId: option.dsId,
95
+ minWidth: option?.minWidth
96
+ });
97
+ const convertSkeletonOptToMenuButtonItem = (option) => ({
98
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.SKELETON_ITEM,
99
+ dsId: option.dsId,
100
+ minWidth: option?.minWidth
101
+ });
102
+ const convertSingleWithSubmenuOptToMenuButtonItem = (option) => ({
103
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.SINGLE_SELECT_WITH_SUBMENU_ITEM,
104
+ label: option.label,
105
+ subitems: [],
106
+ maxHeight: option.maxHeight,
107
+ // DSDropdownMenuT common items properties
108
+ dsId: option.dsId,
109
+ minWidth: option?.minWidth,
110
+ disabled: option.disabled || option.applyAriaDisabled,
111
+ onClick: option.onClick,
112
+ onKeyDown: option.onKeyDown
113
+ });
114
+ const convertSubmenuOptToMenuButtonItem = (option) => ({
115
+ type: import_ds_menu_button.MENU_ITEMS_TYPES.WITH_SUBMENU_ITEM,
116
+ label: option.label,
117
+ subitems: [],
118
+ maxHeight: option.maxHeight,
119
+ // DSDropdownMenuT common items properties
120
+ dsId: option.dsId,
121
+ minWidth: option?.minWidth,
122
+ disabled: option.disabled || option.applyAriaDisabled,
123
+ onClick: option.onClick,
124
+ onKeyDown: option.onKeyDown
125
+ });
126
+ const convertDropdownItemToMenuButtonItem = (option) => {
127
+ if (isItemActionOptions(option)) return convertActionOptToMenuButtonItem(option);
128
+ if (isItemSingleOptions(option)) return convertSingleSelectionOptToMenuButtonItem(option);
129
+ if (isItemSingleWithSubmenuOptions(option)) return convertSingleWithSubmenuOptToMenuButtonItem(option);
130
+ if (isItemCheckboxOptions(option)) return convertCheckboxOptToMenuButtonItem(option);
131
+ if (isItemSubmenuOptions(option)) return convertSubmenuOptToMenuButtonItem(option);
132
+ if (isItemSeparatorOptions(option)) return convertSeparatorOptToMenuButtonItem(option);
133
+ if (isItemSectionOptions(option)) return convertSectionOptToMenuButtonItem(option);
134
+ if (isItemSkeletonOptions(option)) return convertSkeletonOptToMenuButtonItem(option);
135
+ throw new Error("Unknown item type");
136
+ };
137
+ //# sourceMappingURL=conversionHelpers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/exported-related/FilterBar/dropdownMenuV2Bridge/conversionHelpers.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { type DSMenuButtonT, MENU_ITEMS_TYPES } from '@elliemae/ds-menu-button';\nimport { type DSDropdownMenuT } from './types.js';\n\n/**\n * Type guard to check if the option is of type ItemSingleOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemSingleOptions, false otherwise.\n */\nconst isItemSingleOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemSingleOptions =>\n option.type === 'single';\n\n/**\n * Type guard to check if the option is of type ItemActionOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemActionOptions, false otherwise.\n */\nconst isItemActionOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemActionOptions =>\n option.type === 'action';\n\n/**\n * Type guard to check if the option is of type ItemSingleWithSubmenuOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemSingleWithSubmenuOptions, false otherwise.\n */\nexport const isItemSingleWithSubmenuOptions = (\n option: DSDropdownMenuT.Item,\n): option is DSDropdownMenuT.ItemSingleWithSubmenuOptions => option.type === 'singleWithSubmenu';\n\n/**\n * Type guard to check if the option is of type ItemCheckboxOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemCheckboxOptions, false otherwise.\n */\nconst isItemCheckboxOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemCheckboxOptions =>\n option.type === 'checkbox';\n\n/**\n * Type guard to check if the option is of type ItemSubmenuOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemSubmenuOptions, false otherwise.\n */\nexport const isItemSubmenuOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemSubmenuOptions =>\n option.type === 'submenu';\n\n/**\n * Type guard to check if the option is of type ItemSeparatorOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemSeparatorOptions, false otherwise.\n */\nconst isItemSeparatorOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemSeparatorOptions =>\n option.type === 'separator';\n\n/**\n * Type guard to check if the option is of type ItemSectionOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemSectionOptions, false otherwise.\n */\nexport const isItemSectionOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemSectionOptions =>\n option.type === 'section';\n\n/**\n * Type guard to check if the option is of type ItemSkeletonOptions.\n * @param option - The option to check.\n * @returns True if the option is of type ItemSkeletonOptions, false otherwise.\n */\nconst isItemSkeletonOptions = (option: DSDropdownMenuT.Item): option is DSDropdownMenuT.ItemSkeletonOptions =>\n option.type === 'skeleton';\n\n/**\n * Converts ItemActionOptions to DSMenuButtonT.ActivableItem.\n * @param option - The ItemActionOptions to convert.\n * @returns The converted ActivableItem.\n */\nexport const convertActionOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemActionOptions,\n): DSMenuButtonT.ActivableItem => ({\n type: MENU_ITEMS_TYPES.ACTIVABLE_ITEM,\n label: option.label,\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.ActivableItem['minWidth'],\n disabled: option.disabled || option.applyAriaDisabled,\n onClick: option.onClick,\n onKeyDown: option.onKeyDown,\n});\n\n/**\n * Converts ItemSingleOptions to DSMenuButtonT.SingleSelectItem.\n * @param option - The ItemSingleWithSubmenuOptions to convert.\n * @returns The converted SingleSelectWithSubmenuItem.\n */\nexport const convertSingleSelectionOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemSingleOptions,\n): DSMenuButtonT.SingleSelectItem => ({\n type: MENU_ITEMS_TYPES.SINGLE_SELECT_ITEM,\n label: option.label,\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.ActivableItem['minWidth'],\n disabled: option.disabled || option.applyAriaDisabled,\n onClick: option.onClick,\n onKeyDown: option.onKeyDown,\n});\n\n/**\n * Converts ItemCheckboxOptions to DSMenuButtonT.MultipleSelectItem.\n * @param option - The ItemCheckboxOptions to convert.\n * @returns The converted MultipleSelectItem.\n */\nexport const convertCheckboxOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemCheckboxOptions,\n): DSMenuButtonT.MultipleSelectItem => ({\n type: MENU_ITEMS_TYPES.MULTIPLE_SELECT_ITEM,\n label: option.label,\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.ActivableItem['minWidth'],\n disabled: option.disabled || option.applyAriaDisabled,\n onClick: option.onClick,\n onKeyDown: option.onKeyDown,\n});\n\n/**\n * Converts ItemSeparatorOptions to DSMenuButtonT.SeparatorItem.\n * @param option - The ItemSeparatorOptions to convert.\n * @returns The converted SeparatorItem.\n */\nexport const convertSeparatorOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemSeparatorOptions,\n): DSMenuButtonT.SeparatorItem => ({\n type: MENU_ITEMS_TYPES.SEPARATOR,\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n});\n\n/**\n * Converts ItemSectionOptions to DSMenuButtonT.GroupItem.\n * @param option - The ItemSectionOptions to convert.\n * @returns The converted GroupItem.\n */\nexport const convertSectionOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemSectionOptions,\n): DSMenuButtonT.GroupItem => ({\n type: MENU_ITEMS_TYPES.GROUP,\n label: option.label,\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.ActivableItem['minWidth'],\n});\n\n/**\n * Converts ItemSkeletonOptions to DSMenuButtonT.SkeletonItem.\n * @param option - The ItemSkeletonOptions to convert.\n * @returns The converted SkeletonItem.\n */\nexport const convertSkeletonOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemSkeletonOptions,\n): DSMenuButtonT.SkeletonItem => ({\n type: MENU_ITEMS_TYPES.SKELETON_ITEM,\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.ActivableItem['minWidth'],\n});\n\n// ========================================================================================\n// WithSubmenu conversion converts the item only, the nested options are iterated by\n// convertOptionsRecursive (index.ts) so each one succeeds or is dropped on its own\n// ========================================================================================\n/**\n * Converts ItemSingleWithSubmenuOptions to DSMenuButtonT.SingleSelectWithSubmenuItem.\n * It converts the item only: its nested options are converted by `convertOptionsRecursive`, option by option, so an\n * option that fails to convert is dropped alone instead of taking its whole submenu with it.\n * @param option - The ItemSingleWithSubmenuOptions to convert.\n * @returns The converted SingleSelectWithSubmenuItem, with its `subitems` still empty.\n */\nexport const convertSingleWithSubmenuOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemSingleWithSubmenuOptions,\n): DSMenuButtonT.SingleSelectWithSubmenuItem => ({\n type: MENU_ITEMS_TYPES.SINGLE_SELECT_WITH_SUBMENU_ITEM,\n label: option.label,\n subitems: [],\n maxHeight: option.maxHeight as DSMenuButtonT.SingleSelectWithSubmenuItem['maxHeight'],\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.SingleSelectWithSubmenuItem['minWidth'],\n disabled: option.disabled || option.applyAriaDisabled,\n onClick: option.onClick,\n onKeyDown: option.onKeyDown,\n});\n/**\n * Converts ItemSubmenuOptions to DSMenuButtonT.WithSubmenuItem.\n * It converts the item only: its nested options are converted by `convertOptionsRecursive`, option by option, so an\n * option that fails to convert is dropped alone instead of taking its whole submenu with it.\n * @param option - The ItemSubmenuOptions to convert.\n * @returns The converted WithSubmenuItem, with its `subitems` still empty.\n */\nexport const convertSubmenuOptToMenuButtonItem = (\n option: DSDropdownMenuT.ItemSubmenuOptions,\n): DSMenuButtonT.WithSubmenuItem => ({\n type: MENU_ITEMS_TYPES.WITH_SUBMENU_ITEM,\n label: option.label,\n subitems: [],\n maxHeight: option.maxHeight as DSMenuButtonT.WithSubmenuItem['maxHeight'],\n // DSDropdownMenuT common items properties\n dsId: option.dsId,\n minWidth: option?.minWidth as DSMenuButtonT.WithSubmenuItem['minWidth'],\n disabled: option.disabled || option.applyAriaDisabled,\n onClick: option.onClick,\n onKeyDown: option.onKeyDown,\n});\n\n/**\n * Converts a DSDropdownMenuT.Item to a DSMenuButtonT.MenuItemInterface.\n * @param option - The DSDropdownMenuT.Item to convert.\n * @returns The converted MenuItemInterface.\n */\nexport const convertDropdownItemToMenuButtonItem = (option: DSDropdownMenuT.Item): DSMenuButtonT.MenuItemInterface => {\n if (isItemActionOptions(option)) return convertActionOptToMenuButtonItem(option);\n // single selections\n if (isItemSingleOptions(option)) return convertSingleSelectionOptToMenuButtonItem(option);\n if (isItemSingleWithSubmenuOptions(option)) return convertSingleWithSubmenuOptToMenuButtonItem(option);\n // multiple selections\n if (isItemCheckboxOptions(option)) return convertCheckboxOptToMenuButtonItem(option);\n // DDV2 didn't support multiple selections with submenu so we don't need to handle it\n // only submenu\n if (isItemSubmenuOptions(option)) return convertSubmenuOptToMenuButtonItem(option);\n // separators, groups and skeletons\n if (isItemSeparatorOptions(option)) return convertSeparatorOptToMenuButtonItem(option);\n if (isItemSectionOptions(option)) return convertSectionOptToMenuButtonItem(option);\n if (isItemSkeletonOptions(option)) return convertSkeletonOptToMenuButtonItem(option);\n\n throw new Error('Unknown item type');\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,64 @@
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 getHumanReadableWarnings_exports = {};
30
+ __export(getHumanReadableWarnings_exports, {
31
+ getHumanReadableWarnings: () => getHumanReadableWarnings
32
+ });
33
+ module.exports = __toCommonJS(getHumanReadableWarnings_exports);
34
+ var React = __toESM(require("react"));
35
+ const getHumanReadableWarnings = (adjustments) => {
36
+ const warnings = [];
37
+ if (adjustments.lostRender) {
38
+ warnings.push(
39
+ `- Encountered "render" in one or more options - the menu-button component is stricter on underlying html structure due to required accessibility, the conversion will ignore the "render", if you need it and you are sure it's a11y compliant you can implement it with the item "ItemRenderer" menu-button property instead`
40
+ );
41
+ }
42
+ if (adjustments.lostEllipsis) {
43
+ warnings.push(
44
+ `- Encountered "ellipsis" right addon in one or more options - new designs doesn't support "ellipsis" config and instead provide exclusively "chevron"`
45
+ );
46
+ }
47
+ if (adjustments.filledPlaceholderGroup) {
48
+ warnings.push(
49
+ `- Single select ("single" / "singleWithSubmenu") without a "section" - the conversion wrapped it in a placeholder group (a single selection is only exclusive inside a group)`
50
+ );
51
+ }
52
+ if (adjustments.filledSkeleton) {
53
+ warnings.push(
54
+ `- some levels had nothing to focus (empty options/sub-options, only separators/sections, or a "section" without options of its own, e.g. two "section" items in a row) - the conversion filled each of them with a single skeleton item: an empty menu gives no focus target and looks like the interaction was not registered, a skeleton at least communicates there is no meaningful content to display (opinionated approximation - when no options are genuinely available, prefer a label-only pill (type="label") whose label explains the "no available options" state, so the user does not have to open an empty menu to discover it)`
55
+ );
56
+ }
57
+ if (adjustments.droppedUnknownType) {
58
+ warnings.push(
59
+ `- Encountered an option with an unknown "type" - the conversion dropped it and kept the rest of the options (supported types: action, single, singleWithSubmenu, checkbox, submenu, separator, section, skeleton)`
60
+ );
61
+ }
62
+ return warnings;
63
+ };
64
+ //# sourceMappingURL=getHumanReadableWarnings.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/exported-related/FilterBar/dropdownMenuV2Bridge/getHumanReadableWarnings.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { type DSDropdownV2BridgeT } from './bridgeTypes.js';\n\n/**\n * given what the conversion adjusted, it will return a human readable list of warnings\n * @param adjustments - What the conversion had to do (or lose).\n * @returns A list of human readable warnings.\n */\nexport const getHumanReadableWarnings = (adjustments: DSDropdownV2BridgeT.ConversionAdjustmentsT): string[] => {\n const warnings: string[] = [];\n if (adjustments.lostRender) {\n warnings.push(\n `- Encountered \"render\" in one or more options - the menu-button component is stricter on underlying html structure due to required accessibility, the conversion will ignore the \"render\", if you need it and you are sure it's a11y compliant you can implement it with the item \"ItemRenderer\" menu-button property instead`,\n );\n }\n if (adjustments.lostEllipsis) {\n warnings.push(\n `- Encountered \"ellipsis\" right addon in one or more options - new designs doesn't support \"ellipsis\" config and instead provide exclusively \"chevron\"`,\n );\n }\n if (adjustments.filledPlaceholderGroup) {\n warnings.push(\n `- Single select (\"single\" / \"singleWithSubmenu\") without a \"section\" - the conversion wrapped it in a placeholder group (a single selection is only exclusive inside a group)`,\n );\n }\n if (adjustments.filledSkeleton) {\n warnings.push(\n `- some levels had nothing to focus (empty options/sub-options, only separators/sections, or a \"section\" without options of its own, e.g. two \"section\" items in a row) - the conversion filled each of them with a single skeleton item: an empty menu gives no focus target and looks like the interaction was not registered, a skeleton at least communicates there is no meaningful content to display (opinionated approximation - when no options are genuinely available, prefer a label-only pill (type=\"label\") whose label explains the \"no available options\" state, so the user does not have to open an empty menu to discover it)`,\n );\n }\n if (adjustments.droppedUnknownType) {\n warnings.push(\n `- Encountered an option with an unknown \"type\" - the conversion dropped it and kept the rest of the options (supported types: action, single, singleWithSubmenu, checkbox, submenu, separator, section, skeleton)`,\n );\n }\n return warnings;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADOhB,MAAM,2BAA2B,CAAC,gBAAsE;AAC7G,QAAM,WAAqB,CAAC;AAC5B,MAAI,YAAY,YAAY;AAC1B,aAAS;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,cAAc;AAC5B,aAAS;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,wBAAwB;AACtC,aAAS;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,gBAAgB;AAC9B,aAAS;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,oBAAoB;AAClC,aAAS;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,113 @@
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 dropdownMenuV2Bridge_exports = {};
30
+ __export(dropdownMenuV2Bridge_exports, {
31
+ convertDropdownOptionsToMenuButtonOptions: () => convertDropdownOptionsToMenuButtonOptions
32
+ });
33
+ module.exports = __toCommonJS(dropdownMenuV2Bridge_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_ds_menu_button = require("@elliemae/ds-menu-button");
36
+ var import_conversionHelpers = require("./conversionHelpers.js");
37
+ var import_getHumanReadableWarnings = require("./getHumanReadableWarnings.js");
38
+ const hasFocusableItem = (items) => items.some(
39
+ (item) => item.type === import_ds_menu_button.MENU_ITEMS_TYPES.GROUP ? hasFocusableItem(item.subitems ?? []) : item.type !== import_ds_menu_button.MENU_ITEMS_TYPES.SEPARATOR
40
+ );
41
+ const fillWithSkeleton = (ownerDsId, adjustments) => {
42
+ adjustments.filledSkeleton = true;
43
+ return (0, import_conversionHelpers.convertSkeletonOptToMenuButtonItem)({
44
+ type: "skeleton",
45
+ dsId: `filter-bar-bridge-filled-skeleton-${ownerDsId}`
46
+ });
47
+ };
48
+ const recordLostFeatures = (option, adjustments) => {
49
+ if (option.render) adjustments.lostRender = true;
50
+ if (option.rightAddon === "ellipsis")
51
+ adjustments.lostEllipsis = true;
52
+ };
53
+ const convertOrDrop = (option, adjustments) => {
54
+ recordLostFeatures(option, adjustments);
55
+ try {
56
+ return (0, import_conversionHelpers.convertDropdownItemToMenuButtonItem)(option);
57
+ } catch {
58
+ adjustments.droppedUnknownType = true;
59
+ return null;
60
+ }
61
+ };
62
+ const convertOptionsRecursive = (options, adjustments, parentDsId = "__first-level-root") => {
63
+ const convertedOptions = [];
64
+ const groups = [];
65
+ options.forEach((option) => {
66
+ const convertedOption = convertOrDrop(option, adjustments);
67
+ if (convertedOption === null) return;
68
+ if ((0, import_conversionHelpers.isItemSingleWithSubmenuOptions)(option) || (0, import_conversionHelpers.isItemSubmenuOptions)(option)) {
69
+ const subitems = convertOptionsRecursive(option.options, adjustments, option.dsId);
70
+ const typecastedOption = convertedOption;
71
+ typecastedOption.subitems = subitems;
72
+ }
73
+ if ((0, import_conversionHelpers.isItemSectionOptions)(option)) {
74
+ const typecastedOption = convertedOption;
75
+ const subitems = [...typecastedOption.subitems ?? []];
76
+ groups.push({ ...typecastedOption, subitems });
77
+ return;
78
+ }
79
+ if (groups.length > 0) {
80
+ const lastGroup = groups[groups.length - 1];
81
+ lastGroup.subitems.push(convertedOption);
82
+ return;
83
+ }
84
+ if (option.type === "single" || option.type === "singleWithSubmenu") {
85
+ adjustments.filledPlaceholderGroup = true;
86
+ groups.push({
87
+ type: "group",
88
+ subitems: [convertedOption],
89
+ dsId: `filled-group-starting-from-${option.dsId}`
90
+ });
91
+ return;
92
+ }
93
+ convertedOptions.push(convertedOption);
94
+ });
95
+ groups.forEach((group) => {
96
+ if (!hasFocusableItem(group.subitems)) group.subitems.push(fillWithSkeleton(group.dsId, adjustments));
97
+ });
98
+ convertedOptions.push(...groups);
99
+ if (!hasFocusableItem(convertedOptions)) convertedOptions.push(fillWithSkeleton(parentDsId, adjustments));
100
+ return convertedOptions;
101
+ };
102
+ const convertDropdownOptionsToMenuButtonOptions = (options) => {
103
+ const adjustments = {
104
+ lostRender: false,
105
+ lostEllipsis: false,
106
+ filledPlaceholderGroup: false,
107
+ filledSkeleton: false,
108
+ droppedUnknownType: false
109
+ };
110
+ const convertedOptions = convertOptionsRecursive(options, adjustments);
111
+ return { convertedOptions, report: { ...adjustments, humanReadableWarnings: (0, import_getHumanReadableWarnings.getHumanReadableWarnings)(adjustments) } };
112
+ };
113
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/exported-related/FilterBar/dropdownMenuV2Bridge/index.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { MENU_ITEMS_TYPES, type DSMenuButtonT } from '@elliemae/ds-menu-button';\nimport { type DSDropdownMenuT } from './types.js';\nimport { type DSDropdownV2BridgeT } from './bridgeTypes.js';\nimport {\n convertDropdownItemToMenuButtonItem,\n convertSkeletonOptToMenuButtonItem,\n isItemSectionOptions,\n isItemSingleWithSubmenuOptions,\n isItemSubmenuOptions,\n} from './conversionHelpers.js';\nimport { getHumanReadableWarnings } from './getHumanReadableWarnings.js';\n\nexport type ConvertOptionsRT = {\n convertedOptions: DSMenuButtonT.MenuItemInterface[];\n report: DSDropdownV2BridgeT.ConversionReportT;\n};\ntype GroupItemWithSubItems = DSMenuButtonT.GroupItem & { subitems: DSMenuButtonT.MenuItemInterface[] };\n\n/**\n * A level (the root, a submenu, a section) needs at least one focusable item: opening it moves the focus to its first\n * focusable item. Separators are not focusable and sections (groups) only hold items \u2014 what counts is what they hold.\n */\nconst hasFocusableItem = (items: readonly DSMenuButtonT.MenuItemInterface[]): boolean =>\n items.some((item) =>\n item.type === MENU_ITEMS_TYPES.GROUP\n ? hasFocusableItem((item as GroupItemWithSubItems).subitems ?? [])\n : item.type !== MENU_ITEMS_TYPES.SEPARATOR,\n );\n\n/**\n * Recovery of an invalid state the consumer can produce with DSDropdownMenuV2-shaped options (an empty level, only\n * separators/sections, a section with no options of its own): a menu with nothing focusable has no item to receive\n * focus, which reads as an interaction that did nothing. ONE skeleton item reads as \"no content (yet)\" instead.\n */\nconst fillWithSkeleton = (ownerDsId: string, adjustments: DSDropdownV2BridgeT.ConversionAdjustmentsT) => {\n // eslint-disable-next-line no-param-reassign\n adjustments.filledSkeleton = true;\n return convertSkeletonOptToMenuButtonItem({\n type: 'skeleton',\n dsId: `filter-bar-bridge-filled-skeleton-${ownerDsId}`,\n });\n};\n\n/** What DSMenuButton items cannot honor from a DSDropdownMenuV2 option: it is ignored by the conversion. Only `render` and `rightAddon: 'ellipsis'` are reported; other fields it does not copy are dropped silently. */\nconst recordLostFeatures = (option: DSDropdownMenuT.Item, adjustments: DSDropdownV2BridgeT.ConversionAdjustmentsT) => {\n /* eslint-disable no-param-reassign */\n if (option.render) adjustments.lostRender = true;\n if ((option as Partial<DSDropdownMenuT.ItemSubmenuOptions>).rightAddon === 'ellipsis')\n adjustments.lostEllipsis = true;\n /* eslint-enable no-param-reassign */\n};\n\n/**\n * Converts one option, recording what the conversion cannot honor of it; an option the conversion cannot convert\n * (unknown `type`) is dropped, not thrown: what converts stays, only what fails goes. The failure is recorded in\n * `adjustments`.\n */\nconst convertOrDrop = (\n option: DSDropdownMenuT.Item,\n adjustments: DSDropdownV2BridgeT.ConversionAdjustmentsT,\n): DSMenuButtonT.MenuItemInterface | null => {\n recordLostFeatures(option, adjustments);\n try {\n return convertDropdownItemToMenuButtonItem(option);\n } catch {\n // eslint-disable-next-line no-param-reassign\n adjustments.droppedUnknownType = true;\n return null;\n }\n};\n\n/**\n * Converts dropdown menu items to menu button items, handling nested structures and grouping (including filling for\n * missing groups if single selections are present and filling the levels that would have nothing to focus).\n * Everything that is adjusted or lost on the way is recorded in `adjustments`.\n * @param options - The dropdown menu items to convert.\n * @param adjustments - Mutable record of what the conversion had to do (or lose).\n * @param parentDsId - dsId of the item that owns this level (unique per level).\n * @returns The converted menu button items.\n */\nconst convertOptionsRecursive = (\n options: DSDropdownMenuT.Item[] | readonly DSDropdownMenuT.Item[],\n adjustments: DSDropdownV2BridgeT.ConversionAdjustmentsT,\n parentDsId = '__first-level-root',\n): DSMenuButtonT.MenuItemInterface[] => {\n const convertedOptions: DSMenuButtonT.MenuItemInterface[] = [];\n const groups: GroupItemWithSubItems[] = [];\n options.forEach((option) => {\n const convertedOption = convertOrDrop(option, adjustments);\n if (convertedOption === null) return;\n if (isItemSingleWithSubmenuOptions(option) || isItemSubmenuOptions(option)) {\n // we need to iterate over the subitems found at option.options\n const subitems = convertOptionsRecursive(option.options, adjustments, option.dsId);\n const typecastedOption = convertedOption as\n DSMenuButtonT.WithSubmenuItem | DSMenuButtonT.SingleSelectWithSubmenuItem;\n typecastedOption.subitems = subitems as DSMenuButtonT.WithSubmenuItem['subitems'];\n }\n // we need to unwind the sections\n // step 1 - if we encounter a new section, we start tracking a new group\n if (isItemSectionOptions(option)) {\n const typecastedOption = convertedOption as DSMenuButtonT.GroupItem;\n // step 2 - we assure subitems property is present as an array (per new API contract)\n const subitems = [...((typecastedOption as GroupItemWithSubItems).subitems ?? [])];\n // step 3 - we add the group to the groups array\n groups.push({ ...typecastedOption, subitems });\n return;\n }\n // here we can be in three scenarios:\n // A - a \"section\" is present and we are adding items to it\n if (groups.length > 0) {\n const lastGroup = groups[groups.length - 1];\n lastGroup.subitems.push(convertedOption);\n return;\n }\n // B - we encountered a single select without a \"section\": a single selection is only exclusive inside a group,\n // we fill a placeholder group\n if (option.type === 'single' || option.type === 'singleWithSubmenu') {\n adjustments.filledPlaceholderGroup = true;\n groups.push({\n type: 'group',\n subitems: [convertedOption as DSMenuButtonT.GroupItem],\n dsId: `filled-group-starting-from-${option.dsId}`,\n });\n return;\n }\n // C - we are adding items to the root level\n convertedOptions.push(convertedOption);\n });\n // a section with nothing focusable under it (nothing after it, only separators, or directly followed by another\n // section) is the \"nothing to show\" state of that section\n groups.forEach((group) => {\n if (!hasFocusableItem(group.subitems)) group.subitems.push(fillWithSkeleton(group.dsId, adjustments));\n });\n convertedOptions.push(...groups);\n // ... and so is a level with nothing focusable at all (empty, or only separators)\n if (!hasFocusableItem(convertedOptions)) convertedOptions.push(fillWithSkeleton(parentDsId, adjustments));\n return convertedOptions;\n};\n\n/**\n * Converts the `FilterBarDropdownMenu` `options` contract (DSDropdownMenuV2-shaped items) into\n * `DSMenuButtonT.MenuItemInterface[]`.\n *\n * It never throws: what cannot be converted is dropped and reported (`report.humanReadableWarnings`), what can is kept.\n */\nexport const convertDropdownOptionsToMenuButtonOptions = (\n options: DSDropdownMenuT.Item[] | readonly DSDropdownMenuT.Item[],\n): ConvertOptionsRT => {\n const adjustments: DSDropdownV2BridgeT.ConversionAdjustmentsT = {\n lostRender: false,\n lostEllipsis: false,\n filledPlaceholderGroup: false,\n filledSkeleton: false,\n droppedUnknownType: false,\n };\n const convertedOptions = convertOptionsRecursive(options, adjustments);\n return { convertedOptions, report: { ...adjustments, humanReadableWarnings: getHumanReadableWarnings(adjustments) } };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,4BAAqD;AAGrD,+BAMO;AACP,sCAAyC;AAYzC,MAAM,mBAAmB,CAAC,UACxB,MAAM;AAAA,EAAK,CAAC,SACV,KAAK,SAAS,uCAAiB,QAC3B,iBAAkB,KAA+B,YAAY,CAAC,CAAC,IAC/D,KAAK,SAAS,uCAAiB;AACrC;AAOF,MAAM,mBAAmB,CAAC,WAAmB,gBAA4D;AAEvG,cAAY,iBAAiB;AAC7B,aAAO,6DAAmC;AAAA,IACxC,MAAM;AAAA,IACN,MAAM,qCAAqC,SAAS;AAAA,EACtD,CAAC;AACH;AAGA,MAAM,qBAAqB,CAAC,QAA8B,gBAA4D;AAEpH,MAAI,OAAO,OAAQ,aAAY,aAAa;AAC5C,MAAK,OAAuD,eAAe;AACzE,gBAAY,eAAe;AAE/B;AAOA,MAAM,gBAAgB,CACpB,QACA,gBAC2C;AAC3C,qBAAmB,QAAQ,WAAW;AACtC,MAAI;AACF,eAAO,8DAAoC,MAAM;AAAA,EACnD,QAAQ;AAEN,gBAAY,qBAAqB;AACjC,WAAO;AAAA,EACT;AACF;AAWA,MAAM,0BAA0B,CAC9B,SACA,aACA,aAAa,yBACyB;AACtC,QAAM,mBAAsD,CAAC;AAC7D,QAAM,SAAkC,CAAC;AACzC,UAAQ,QAAQ,CAAC,WAAW;AAC1B,UAAM,kBAAkB,cAAc,QAAQ,WAAW;AACzD,QAAI,oBAAoB,KAAM;AAC9B,YAAI,yDAA+B,MAAM,SAAK,+CAAqB,MAAM,GAAG;AAE1E,YAAM,WAAW,wBAAwB,OAAO,SAAS,aAAa,OAAO,IAAI;AACjF,YAAM,mBAAmB;AAEzB,uBAAiB,WAAW;AAAA,IAC9B;AAGA,YAAI,+CAAqB,MAAM,GAAG;AAChC,YAAM,mBAAmB;AAEzB,YAAM,WAAW,CAAC,GAAK,iBAA2C,YAAY,CAAC,CAAE;AAEjF,aAAO,KAAK,EAAE,GAAG,kBAAkB,SAAS,CAAC;AAC7C;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,GAAG;AACrB,YAAM,YAAY,OAAO,OAAO,SAAS,CAAC;AAC1C,gBAAU,SAAS,KAAK,eAAe;AACvC;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,YAAY,OAAO,SAAS,qBAAqB;AACnE,kBAAY,yBAAyB;AACrC,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN,UAAU,CAAC,eAA0C;AAAA,QACrD,MAAM,8BAA8B,OAAO,IAAI;AAAA,MACjD,CAAC;AACD;AAAA,IACF;AAEA,qBAAiB,KAAK,eAAe;AAAA,EACvC,CAAC;AAGD,SAAO,QAAQ,CAAC,UAAU;AACxB,QAAI,CAAC,iBAAiB,MAAM,QAAQ,EAAG,OAAM,SAAS,KAAK,iBAAiB,MAAM,MAAM,WAAW,CAAC;AAAA,EACtG,CAAC;AACD,mBAAiB,KAAK,GAAG,MAAM;AAE/B,MAAI,CAAC,iBAAiB,gBAAgB,EAAG,kBAAiB,KAAK,iBAAiB,YAAY,WAAW,CAAC;AACxG,SAAO;AACT;AAQO,MAAM,4CAA4C,CACvD,YACqB;AACrB,QAAM,cAA0D;AAAA,IAC9D,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,wBAAwB;AAAA,IACxB,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,EACtB;AACA,QAAM,mBAAmB,wBAAwB,SAAS,WAAW;AACrE,SAAO,EAAE,kBAAkB,QAAQ,EAAE,GAAG,aAAa,2BAAuB,0DAAyB,WAAW,EAAE,EAAE;AACtH;",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/exported-related/FilterBar/dropdownMenuV2Bridge/types.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import type React from 'react';\nimport { type GlobalAttributesT, type XstyledProps } from '@elliemae/ds-props-helpers';\n\n/*\n * VENDORED, trimmed to the item contract, from the translation layer of @elliemae/ds-pills-v2\n * (itself vendored from the retired @elliemae/ds-dropdownmenu-v2).\n * It exists only so `FilterBarDropdownMenu` keeps accepting the options it always accepted while it renders\n * `DSMenuButton`. Do not extend this namespace: new capabilities belong to `FilterMenuButton` / `DSMenuButton`.\n */\nexport declare namespace DSDropdownMenuT {\n interface CommonItemOptions extends Omit<GlobalAttributesT, 'value'>, XstyledProps {\n dsId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n render?: React.ComponentType<any>;\n onClick?: (e: React.MouseEvent | React.KeyboardEvent) => void;\n onKeyDown?: (e: React.KeyboardEvent) => null;\n }\n\n export interface ItemActionOptions extends CommonItemOptions {\n type: 'action';\n label: string;\n value: unknown;\n disabled?: boolean;\n applyAriaDisabled?: boolean;\n }\n\n export interface ItemSingleOptions extends CommonItemOptions {\n type: 'single';\n label: string;\n value: unknown;\n disabled?: boolean;\n applyAriaDisabled?: boolean;\n }\n\n export interface ItemSingleWithSubmenuOptions extends CommonItemOptions {\n type: 'singleWithSubmenu';\n label: string;\n value: unknown;\n disabled?: boolean;\n applyAriaDisabled?: boolean;\n rightAddon?: 'chevron' | 'ellipsis';\n options: Item[];\n }\n\n export interface ItemCheckboxOptions extends CommonItemOptions {\n type: 'checkbox';\n label: string;\n value: unknown;\n disabled?: boolean;\n applyAriaDisabled?: boolean;\n }\n\n export interface ItemSubmenuOptions extends CommonItemOptions {\n type: 'submenu';\n label: string;\n value: unknown;\n disabled?: boolean;\n applyAriaDisabled?: boolean;\n rightAddon?: 'chevron' | 'ellipsis';\n options: Item[];\n }\n\n export interface ItemSeparatorOptions extends CommonItemOptions {\n type: 'separator';\n }\n\n export interface ItemSectionOptions extends CommonItemOptions {\n type: 'section';\n label: string;\n }\n\n export interface ItemSkeletonOptions extends CommonItemOptions {\n type: 'skeleton';\n }\n\n export type Item =\n | ItemActionOptions\n | ItemSingleOptions\n | ItemCheckboxOptions\n | ItemSubmenuOptions\n | ItemSingleWithSubmenuOptions\n | ItemSeparatorOptions\n | ItemSectionOptions\n | ItemSkeletonOptions;\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;ACAA,YAAuB;",
6
+ "names": []
7
+ }
@@ -112,11 +112,11 @@ const FilterPopoverV2 = (props) => {
112
112
  hide: !isIconVisible,
113
113
  "data-testid": import_constants.DATA_TABLE_DATA_TESTID.FILTER_POPOVER_BUTTON,
114
114
  getOwnerProps,
115
+ getOwnerPropsArguments,
115
116
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
116
117
  import_ds_button_v2.DSButtonV3,
117
118
  {
118
119
  buttonType: "icon",
119
- size: "s",
120
120
  onClick: handleTriggerClick,
121
121
  onKeyDown: handleMenuOnKeyDown,
122
122
  onFocus: handleTriggerOnFocus,
@@ -147,13 +147,22 @@ const FilterPopoverV2 = (props) => {
147
147
  getOwnerPropsArguments,
148
148
  "aria-label": `Filter by ${column.Header}`,
149
149
  role: "dialog",
150
- 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: [
151
- menuContent,
152
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledDSDialogFooter, { children: [
153
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_button_v2.DSButtonV3, { onClick: onFilterReset, buttonType: "outline", size: "s", children: "Reset" }),
154
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_button_v2.DSButtonV3, { type: "submit", innerRef: lastElementRef, size: "s", children: "Apply" })
155
- ] })
156
- ] }) })
150
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
151
+ import_styled.PopperContent,
152
+ {
153
+ getOwnerProps,
154
+ getOwnerPropsArguments,
155
+ onKeyDown: handleOnKeyDown,
156
+ innerRef: boundaryRef,
157
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", { onSubmit: onFilterSubmit, children: [
158
+ menuContent,
159
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledDSDialogFooter, { getOwnerProps, getOwnerPropsArguments, children: [
160
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_button_v2.DSButtonV3, { onClick: onFilterReset, buttonType: "outline", children: "Reset" }),
161
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_button_v2.DSButtonV3, { type: "submit", innerRef: lastElementRef, children: "Apply" })
162
+ ] })
163
+ ] })
164
+ }
165
+ )
157
166
  }
158
167
  )
159
168
  ]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
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, 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 { 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 const virtualListRef = usePropsStore((state) => state.virtualListRef);\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 externalReferenceElement: columnReference,\n placement: 'bottom-end',\n withoutAnimation: true,\n customOffset: [0, 0],\n onClickOutside: handleClickOutsideMenu,\n /**\n * PUI-17187: same fix as FilterPopover/index.tsx (V1) \u2014 see the full rationale there,\n * including why `withoutPortal: true` was tried and rejected (breaks any filter whose\n * content is larger than the table, e.g. DateRangeFilter's calendar, because withoutPortal\n * makes the popover a literal DOM descendant of the table's overflow:auto container, which\n * unconditionally CSS-clips oversized content \u2014 position math cannot override that).\n * boundaryElement keeps the portal and only changes the clipping math, with a per-axis\n * fallback to the viewport when the content doesn't fit the boundary.\n */\n boundaryElement: virtualListRef.current,\n });\n const handleOnKeyDown = useFocusTrap({\n firstElementRef,\n lastElementRef,\n });\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;AD2Ff;AA3FR,0BAA2B;AAE3B,iCAAmC;AACnC,iCAA6B;AAE7B,uBAA0B;AAC1B,mBAAqD;AAErD,2CAA8B;AAC9B,uBAAuC;AAEvC,kCAAqC;AACrC,oCAAuC;AACvC,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;AACxD,QAAM,qBAAiB,oDAAc,CAAC,UAAU,MAAM,cAAc;AAEpE,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,0BAA0B;AAAA,IAC1B,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,cAAc,CAAC,GAAG,CAAC;AAAA,IACnB,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUhB,iBAAiB,eAAe;AAAA,EAClC,CAAC;AACD,QAAM,sBAAkB,yCAAa;AAAA,IACnC;AAAA,IACA;AAAA,EACF,CAAC;AAED;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;",
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, useRef, useState } from 'react';\n\nimport { usePropsStore } from '../../configs/useStore/createInternalAndPropsContext.js';\nimport { DATA_TABLE_DATA_TESTID } from '../../constants/index.js';\nimport { useGetFilterHandlers } from './useGetFilterHandlers.js';\nimport { useGetFilterVisibility } from './useGetFilterVisibility.js';\nimport { FilterButton, PopperContent, StyledDSDialogFooter, StyledFloatingWrapper } from './styled.js';\nimport type { DSDataTableT } from '../../react-desc-prop-types.js';\n\nexport const FilterPopoverV2: React.ComponentType<DSDataTableT.FilterPopoverV2Props> = (\n props: DSDataTableT.FilterPopoverV2Props,\n) => {\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 const virtualListRef = usePropsStore((state) => state.virtualListRef);\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 externalReferenceElement: columnReference,\n placement: 'bottom-end',\n withoutAnimation: true,\n customOffset: [0, 0],\n onClickOutside: handleClickOutsideMenu,\n /**\n * PUI-17187: same fix as FilterPopover/index.tsx (V1) \u2014 see the full rationale there,\n * including why `withoutPortal: true` was tried and rejected (breaks any filter whose\n * content is larger than the table, e.g. DateRangeFilter's calendar, because withoutPortal\n * makes the popover a literal DOM descendant of the table's overflow:auto container, which\n * unconditionally CSS-clips oversized content \u2014 position math cannot override that).\n * boundaryElement keeps the portal and only changes the clipping math, with a per-axis\n * fallback to the viewport when the content doesn't fit the boundary.\n */\n boundaryElement: virtualListRef.current,\n });\n const handleOnKeyDown = useFocusTrap({\n firstElementRef,\n lastElementRef,\n });\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 getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <DSButtonV3\n buttonType=\"icon\"\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\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n onKeyDown={handleOnKeyDown}\n innerRef={boundaryRef}\n >\n <form onSubmit={onFilterSubmit}>\n {menuContent}\n <StyledDSDialogFooter getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments}>\n <DSButtonV3 onClick={onFilterReset} buttonType=\"outline\">\n Reset\n </DSButtonV3>\n <DSButtonV3 type=\"submit\" innerRef={lastElementRef}>\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": "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",
6
6
  "names": []
7
7
  }
@@ -132,11 +132,11 @@ const FilterPopover = (props) => {
132
132
  hide: !isIconVisible,
133
133
  "data-testid": import_constants.DATA_TESTID.DATA_TABLE_FILTER_BUTTON,
134
134
  getOwnerProps,
135
+ getOwnerPropsArguments,
135
136
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
136
137
  import_ds_button_v2.DSButtonV2,
137
138
  {
138
139
  buttonType: "icon",
139
- size: "s",
140
140
  onClick: handleTriggerClick,
141
141
  onFocus: handleTriggerOnFocus,
142
142
  onBlur: handleTriggerOnBlur,
@@ -166,7 +166,16 @@ const FilterPopover = (props) => {
166
166
  getOwnerPropsArguments,
167
167
  role: "dialog",
168
168
  "aria-label": `Filter by ${column.Header}`,
169
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.PopperContent, { getOwnerProps, innerRef: popoverContentRef, onKeyDown: handleOnKeyDown, children: menuContent })
169
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
170
+ import_styled.PopperContent,
171
+ {
172
+ getOwnerProps,
173
+ getOwnerPropsArguments,
174
+ innerRef: popoverContentRef,
175
+ onKeyDown: handleOnKeyDown,
176
+ children: menuContent
177
+ }
178
+ )
170
179
  }
171
180
  )
172
181
  ]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/exported-related/FilterPopover/index.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable import/no-cycle */\n/* eslint-disable no-void */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { DSButtonV2 } from '@elliemae/ds-button-v2';\nimport { useFocusTrap } from '@elliemae/ds-hooks-focus-trap';\nimport { useFloatingContext } from '@elliemae/ds-floating-context';\nimport { mergeRefs } from '@elliemae/ds-system';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { DATA_TESTID } from '../../configs/constants.js';\nimport { usePropsStore } from '../../configs/useStore/createInternalAndPropsContext.js';\nimport type { FilterPopoverProps } from './types.js';\nimport { useGetFilterHandlers } from './useGetFilterHandlers.js';\nimport { useGetFilterVisibility } from './useGetFilterVisibility.js';\nimport { FilterButton, PopperContent, StyledFloatingWrapper } from './styled.js';\n\nexport const FilterPopover: React.ComponentType<FilterPopoverProps> = (props: FilterPopoverProps) => {\n const {\n column,\n customStyles,\n reduxHeader,\n menuContent,\n ariaLabel,\n triggerIcon,\n innerRef,\n columnReference,\n firstElementRef,\n lastElementRef,\n } = props;\n\n const filters = usePropsStore((state) => state.filters);\n const getOwnerProps = usePropsStore((store) => store.get);\n const virtualListRef = usePropsStore((state) => state.virtualListRef);\n\n const getOwnerPropsArguments = useCallback(\n () => ({\n columnId: column.id,\n }),\n [column.id],\n );\n\n const { isIconVisible, isMenuOpen } = useGetFilterVisibility(reduxHeader);\n\n const [buttonReference, setButtonReference] = useState<HTMLButtonElement | null>(null);\n const [isButtonFocused, setIsButtonFocused] = useState(false);\n\n const { handleTriggerClick, handleClickOutsideMenu, handleMenuOnKeyDown, handleTriggerOnFocus, handleTriggerOnBlur } =\n useGetFilterHandlers(props, isMenuOpen, buttonReference, setIsButtonFocused);\n\n const floatingOffset = useMemo<[number, number]>(() => (columnReference ? [0, 1] : [5, 4]), [columnReference]);\n\n const externalReferenceElement = columnReference || buttonReference;\n\n const {\n refs,\n floatingStyles,\n context,\n isOpen: isFloatingOpen,\n forceUpdatePosition,\n } = useFloatingContext({\n externallyControlledIsOpen: isMenuOpen,\n externalReferenceElement,\n placement: 'bottom-end',\n customOffset: floatingOffset,\n withoutAnimation: true,\n placementOrderPreference: ['bottom-end', 'top-end'],\n onClickOutside: handleClickOutsideMenu,\n /**\n * PUI-17187: the filter trigger lives inside DataTable's own horizontally-scrollable\n * container (virtualListRef, overflow: auto). Without a boundary, computePosition only\n * clips against the browser viewport, so once the column scrolls near the table's own edge\n * the popover keeps tracking the trigger's raw (partially clipped) screen position and\n * spills past the table's visible bounds, into the rest of the page.\n *\n * Why not `withoutPortal: true` instead (it also derives a clipping boundary \u2014 see\n * getClippingParent \u2014 which would resolve to this same scroll container automatically, no\n * explicit boundaryElement needed): withoutPortal renders the popover as a literal DOM\n * descendant of that overflow:auto container instead of portaling it to <body>. The browser\n * then clips ANY content exceeding the container's bounds unconditionally \u2014 CSS overflow\n * clipping is not something position math can override. That breaks any filter whose content\n * is taller/wider than the table itself: confirmed regression via this exact change during\n * development \u2014 DateRangeFilter's dual-calendar popover (in a 300px-tall table) got its\n * inputs pushed outside the actual browser viewport entirely, failing the existing\n * `DSDataTable - FilterPopover focus trap` Playwright CT tests (clicks on\n * ds-controlled-date-time-picker-month-input timed out as \"outside of the viewport\").\n *\n * boundaryElement keeps the portal (so oversized content still escapes fully into the page,\n * unclipped, exactly as before) and only changes computePosition's clipping *math*, with a\n * per-axis fallback to the plain viewport when the floating content doesn't fit the boundary\n * on that axis (see getBoundaryConstrainedRect) \u2014 small popovers (this one) get clamped to\n * the table; oversized ones (DateRangeFilter's calendar) are unaffected.\n */\n boundaryElement: virtualListRef.current,\n });\n\n // When the filter bar changes height, re-compute the floating position\n useEffect(() => {\n void forceUpdatePosition();\n }, [filters, forceUpdatePosition]);\n\n const popoverContentRef = useRef<HTMLDivElement>(null);\n const handleOnKeyDown = useFocusTrap({\n firstElementRef,\n lastElementRef,\n });\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={handleMenuOnKeyDown}\n >\n <FilterButton\n hide={!isIconVisible}\n data-testid={DATA_TESTID.DATA_TABLE_FILTER_BUTTON}\n getOwnerProps={getOwnerProps}\n >\n <DSButtonV2\n buttonType=\"icon\"\n size=\"s\"\n onClick={handleTriggerClick}\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_TESTID.DATA_TABLE_FILTER_BUTTON_ELEMENT}\n >\n {triggerIcon}\n </DSButtonV2>\n </FilterButton>\n {(columnReference || buttonReference) && (\n <StyledFloatingWrapper\n innerRef={refs.setFloating}\n isOpen={isFloatingOpen}\n floatingStyles={{\n ...floatingStyles,\n ...customStyles,\n minWidth: column.ref?.current?.offsetWidth ?? '0px',\n }}\n context={context}\n data-testid={DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n role=\"dialog\"\n aria-label={`Filter by ${column.Header as string}`}\n >\n <PopperContent getOwnerProps={getOwnerProps} innerRef={popoverContentRef} onKeyDown={handleOnKeyDown}>\n {menuContent}\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;AD0GnB;AAvGJ,0BAA2B;AAC3B,iCAA6B;AAC7B,iCAAmC;AACnC,uBAA0B;AAC1B,mBAAyE;AACzE,uBAA4B;AAC5B,2CAA8B;AAE9B,kCAAqC;AACrC,oCAAuC;AACvC,oBAAmE;AAE5D,MAAM,gBAAyD,CAAC,UAA8B;AACnG,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,cAAU,oDAAc,CAAC,UAAU,MAAM,OAAO;AACtD,QAAM,oBAAgB,oDAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,qBAAiB,oDAAc,CAAC,UAAU,MAAM,cAAc;AAEpE,QAAM,6BAAyB;AAAA,IAC7B,OAAO;AAAA,MACL,UAAU,OAAO;AAAA,IACnB;AAAA,IACA,CAAC,OAAO,EAAE;AAAA,EACZ;AAEA,QAAM,EAAE,eAAe,WAAW,QAAI,sDAAuB,WAAW;AAExE,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAmC,IAAI;AACrF,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAS,KAAK;AAE5D,QAAM,EAAE,oBAAoB,wBAAwB,qBAAqB,sBAAsB,oBAAoB,QACjH,kDAAqB,OAAO,YAAY,iBAAiB,kBAAkB;AAE7E,QAAM,qBAAiB,sBAA0B,MAAO,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,eAAe,CAAC;AAE7G,QAAM,2BAA2B,mBAAmB;AAEpD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EACF,QAAI,+CAAmB;AAAA,IACrB,4BAA4B;AAAA,IAC5B;AAAA,IACA,WAAW;AAAA,IACX,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,0BAA0B,CAAC,cAAc,SAAS;AAAA,IAClD,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IA0BhB,iBAAiB,eAAe;AAAA,EAClC,CAAC;AAGD,8BAAU,MAAM;AACd,SAAK,oBAAoB;AAAA,EAC3B,GAAG,CAAC,SAAS,mBAAmB,CAAC;AAEjC,QAAM,wBAAoB,qBAAuB,IAAI;AACrD,QAAM,sBAAkB,yCAAa;AAAA,IACnC;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MAEC,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,MAClC,WAAW;AAAA,MAEX;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,CAAC;AAAA,YACP,eAAa,6BAAY;AAAA,YACzB;AAAA,YAEA;AAAA,cAAC;AAAA;AAAA,gBACC,YAAW;AAAA,gBACX,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,SAAS;AAAA,gBACT,QAAQ;AAAA,gBACR,cAAU,4BAAU,iBAAiB,oBAAoB,QAAQ;AAAA,gBACjE,UAAU,aAAa,eAAe,IAAI;AAAA,gBAC1C,cAAY;AAAA,gBACZ,eAAa,CAAC;AAAA,gBACd,eAAa,6BAAY;AAAA,gBAExB;AAAA;AAAA,YACH;AAAA;AAAA,QACF;AAAA,SACE,mBAAmB,oBACnB;AAAA,UAAC;AAAA;AAAA,YACC,UAAU,KAAK;AAAA,YACf,QAAQ;AAAA,YACR,gBAAgB;AAAA,cACd,GAAG;AAAA,cACH,GAAG;AAAA,cACH,UAAU,OAAO,KAAK,SAAS,eAAe;AAAA,YAChD;AAAA,YACA;AAAA,YACA,eAAa,6BAAY;AAAA,YACzB;AAAA,YACA;AAAA,YACA,MAAK;AAAA,YACL,cAAY,aAAa,OAAO,MAAgB;AAAA,YAEhD,sDAAC,+BAAc,eAA8B,UAAU,mBAAmB,WAAW,iBAClF,uBACH;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;",
4
+ "sourcesContent": ["/* eslint-disable import/no-cycle */\n/* eslint-disable no-void */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { DSButtonV2 } from '@elliemae/ds-button-v2';\nimport { useFocusTrap } from '@elliemae/ds-hooks-focus-trap';\nimport { useFloatingContext } from '@elliemae/ds-floating-context';\nimport { mergeRefs } from '@elliemae/ds-system';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { DATA_TESTID } from '../../configs/constants.js';\nimport { usePropsStore } from '../../configs/useStore/createInternalAndPropsContext.js';\nimport { useGetFilterHandlers } from './useGetFilterHandlers.js';\nimport { useGetFilterVisibility } from './useGetFilterVisibility.js';\nimport { FilterButton, PopperContent, StyledFloatingWrapper } from './styled.js';\nimport type { DSDataTableT } from '../../react-desc-prop-types.js';\n\nexport const FilterPopover: React.ComponentType<DSDataTableT.FilterPopoverProps> = (\n props: DSDataTableT.FilterPopoverProps,\n) => {\n const {\n column,\n customStyles,\n reduxHeader,\n menuContent,\n ariaLabel,\n triggerIcon,\n innerRef,\n columnReference,\n firstElementRef,\n lastElementRef,\n } = props;\n\n const filters = usePropsStore((state) => state.filters);\n const getOwnerProps = usePropsStore((store) => store.get);\n const virtualListRef = usePropsStore((state) => state.virtualListRef);\n\n const getOwnerPropsArguments = useCallback(\n () => ({\n columnId: column.id,\n }),\n [column.id],\n );\n\n const { isIconVisible, isMenuOpen } = useGetFilterVisibility(reduxHeader);\n\n const [buttonReference, setButtonReference] = useState<HTMLButtonElement | null>(null);\n const [isButtonFocused, setIsButtonFocused] = useState(false);\n\n const { handleTriggerClick, handleClickOutsideMenu, handleMenuOnKeyDown, handleTriggerOnFocus, handleTriggerOnBlur } =\n useGetFilterHandlers(props, isMenuOpen, buttonReference, setIsButtonFocused);\n\n const floatingOffset = useMemo<[number, number]>(() => (columnReference ? [0, 1] : [5, 4]), [columnReference]);\n\n const externalReferenceElement = columnReference || buttonReference;\n\n const {\n refs,\n floatingStyles,\n context,\n isOpen: isFloatingOpen,\n forceUpdatePosition,\n } = useFloatingContext({\n externallyControlledIsOpen: isMenuOpen,\n externalReferenceElement,\n placement: 'bottom-end',\n customOffset: floatingOffset,\n withoutAnimation: true,\n placementOrderPreference: ['bottom-end', 'top-end'],\n onClickOutside: handleClickOutsideMenu,\n /**\n * PUI-17187: the filter trigger lives inside DataTable's own horizontally-scrollable\n * container (virtualListRef, overflow: auto). Without a boundary, computePosition only\n * clips against the browser viewport, so once the column scrolls near the table's own edge\n * the popover keeps tracking the trigger's raw (partially clipped) screen position and\n * spills past the table's visible bounds, into the rest of the page.\n *\n * Why not `withoutPortal: true` instead (it also derives a clipping boundary \u2014 see\n * getClippingParent \u2014 which would resolve to this same scroll container automatically, no\n * explicit boundaryElement needed): withoutPortal renders the popover as a literal DOM\n * descendant of that overflow:auto container instead of portaling it to <body>. The browser\n * then clips ANY content exceeding the container's bounds unconditionally \u2014 CSS overflow\n * clipping is not something position math can override. That breaks any filter whose content\n * is taller/wider than the table itself: confirmed regression via this exact change during\n * development \u2014 DateRangeFilter's dual-calendar popover (in a 300px-tall table) got its\n * inputs pushed outside the actual browser viewport entirely, failing the existing\n * `DSDataTable - FilterPopover focus trap` Playwright CT tests (clicks on\n * ds-controlled-date-time-picker-month-input timed out as \"outside of the viewport\").\n *\n * boundaryElement keeps the portal (so oversized content still escapes fully into the page,\n * unclipped, exactly as before) and only changes computePosition's clipping *math*, with a\n * per-axis fallback to the plain viewport when the floating content doesn't fit the boundary\n * on that axis (see getBoundaryConstrainedRect) \u2014 small popovers (this one) get clamped to\n * the table; oversized ones (DateRangeFilter's calendar) are unaffected.\n */\n boundaryElement: virtualListRef.current,\n });\n\n // When the filter bar changes height, re-compute the floating position\n useEffect(() => {\n void forceUpdatePosition();\n }, [filters, forceUpdatePosition]);\n\n const popoverContentRef = useRef<HTMLDivElement>(null);\n const handleOnKeyDown = useFocusTrap({\n firstElementRef,\n lastElementRef,\n });\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={handleMenuOnKeyDown}\n >\n <FilterButton\n hide={!isIconVisible}\n data-testid={DATA_TESTID.DATA_TABLE_FILTER_BUTTON}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <DSButtonV2\n buttonType=\"icon\"\n onClick={handleTriggerClick}\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_TESTID.DATA_TABLE_FILTER_BUTTON_ELEMENT}\n >\n {triggerIcon}\n </DSButtonV2>\n </FilterButton>\n {(columnReference || buttonReference) && (\n <StyledFloatingWrapper\n innerRef={refs.setFloating}\n isOpen={isFloatingOpen}\n floatingStyles={{\n ...floatingStyles,\n ...customStyles,\n minWidth: column.ref?.current?.offsetWidth ?? '0px',\n }}\n context={context}\n data-testid={DATA_TESTID.DATA_TABLE_FILTER_MENU_CONTENT}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n role=\"dialog\"\n aria-label={`Filter by ${column.Header as string}`}\n >\n <PopperContent\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n innerRef={popoverContentRef}\n onKeyDown={handleOnKeyDown}\n >\n {menuContent}\n </PopperContent>\n </StyledFloatingWrapper>\n )}\n </div>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -39,9 +39,13 @@ var import_ds_system = require("@elliemae/ds-system");
39
39
  var import_ds_dialog = require("@elliemae/ds-dialog");
40
40
  var import_ds_floating_context = require("@elliemae/ds-floating-context");
41
41
  var import_constants = require("../../constants/index.js");
42
+ var import_helpers = require("../../helpers/index.js");
42
43
  const FilterButton = (0, import_ds_system.styled)("span", { name: import_constants.DSDataTableName, slot: import_constants.DSDataTableSlots.FILTER_POPOVER_BUTTON })`
43
44
  display: inline-grid;
44
45
  ${(props) => props.hide ? "opacity: 0; display: none; width: 0;" : ""}
46
+ & > button {
47
+ ${import_helpers.smallButtonSizeCss}
48
+ }
45
49
  `;
46
50
  const PopperContent = (0, import_ds_system.styled)("div", { name: import_constants.DSDataTableName, slot: import_constants.DSDataTableSlots.FILTER_POPOVER_CONTENT })`
47
51
  background-color: #fff;
@@ -58,5 +62,12 @@ const StyledDSDialogFooter = (0, import_ds_system.styled)(import_ds_dialog.DSDia
58
62
  flex-wrap: wrap;
59
63
  padding-top: 8px;
60
64
  padding-bottom: 8px;
65
+ & button {
66
+ ${import_helpers.smallButtonSizeCss}
67
+ padding: 0.5px ${({ theme }) => theme.space.xs} 0.5px;
68
+ }
69
+ & button[type='submit'] {
70
+ border-width: 1px;
71
+ }
61
72
  `;
62
73
  //# sourceMappingURL=styled.js.map