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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js +184 -0
  2. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js.map +7 -0
  3. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +19 -3
  4. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  5. package/dist/cjs/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js +138 -0
  6. package/dist/cjs/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js.map +7 -0
  7. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js +8 -2
  8. package/dist/cjs/addons/Filters/Components/DateRangeFilter/index.js.map +2 -2
  9. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js +177 -0
  10. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js.map +7 -0
  11. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js +10 -3
  12. package/dist/cjs/addons/Filters/Components/DateSwitcherFilter/index.js.map +2 -2
  13. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js +161 -0
  14. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js.map +7 -0
  15. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/index.js +3 -0
  16. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/index.js.map +2 -2
  17. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js +181 -0
  18. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js.map +7 -0
  19. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js +7 -2
  20. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  21. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +3 -0
  22. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  23. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js +202 -0
  24. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js.map +7 -0
  25. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js +68 -0
  26. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js.map +7 -0
  27. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js +67 -0
  28. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js.map +7 -0
  29. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js +67 -0
  30. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js.map +7 -0
  31. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js +66 -0
  32. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js.map +7 -0
  33. package/dist/cjs/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js +118 -0
  34. package/dist/cjs/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js.map +7 -0
  35. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js +15 -2
  36. package/dist/cjs/addons/Filters/Components/SingleDateFilter/index.js.map +2 -2
  37. package/dist/cjs/addons/Filters/Components/index.js +26 -0
  38. package/dist/cjs/addons/Filters/Components/index.js.map +2 -2
  39. package/dist/cjs/configs/useAutocalculated/index.js +5 -1
  40. package/dist/cjs/configs/useAutocalculated/index.js.map +2 -2
  41. package/dist/cjs/configs/useTableResizeCb.js +9 -2
  42. package/dist/cjs/configs/useTableResizeCb.js.map +2 -2
  43. package/dist/cjs/constants/index.js +2 -1
  44. package/dist/cjs/constants/index.js.map +2 -2
  45. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js +96 -0
  46. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js.map +7 -0
  47. package/dist/cjs/exported-related/FilterBar/index.js +3 -1
  48. package/dist/cjs/exported-related/FilterBar/index.js.map +2 -2
  49. package/dist/cjs/exported-related/FilterPopover/FilterPopoverV2.js +158 -0
  50. package/dist/cjs/exported-related/FilterPopover/FilterPopoverV2.js.map +7 -0
  51. package/dist/cjs/exported-related/FilterPopover/index.js +33 -33
  52. package/dist/cjs/exported-related/FilterPopover/index.js.map +2 -2
  53. package/dist/cjs/exported-related/FilterPopover/styled.js +62 -0
  54. package/dist/cjs/exported-related/FilterPopover/styled.js.map +7 -0
  55. package/dist/cjs/exported-related/FilterPopover/types.js.map +1 -1
  56. package/dist/cjs/exported-related/FilterPopover/useGetFilterHandlers.js.map +1 -1
  57. package/dist/cjs/exported-related/FilterPopover/useOnClickOutside.js +60 -0
  58. package/dist/cjs/exported-related/FilterPopover/useOnClickOutside.js.map +7 -0
  59. package/dist/cjs/exported-related/FilterTypes.js +11 -1
  60. package/dist/cjs/exported-related/FilterTypes.js.map +2 -2
  61. package/dist/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +3 -2
  62. package/dist/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js.map +2 -2
  63. package/dist/cjs/exported-related/index.js +1 -0
  64. package/dist/cjs/exported-related/index.js.map +2 -2
  65. package/dist/cjs/index.js +1 -0
  66. package/dist/cjs/index.js.map +2 -2
  67. package/dist/cjs/parts/FilterBar/DeprecatedDropdown.js +2 -2
  68. package/dist/cjs/parts/FilterBar/DeprecatedDropdown.js.map +2 -2
  69. package/dist/cjs/parts/FilterBar/FiltersBar.js +9 -3
  70. package/dist/cjs/parts/FilterBar/FiltersBar.js.map +2 -2
  71. package/dist/cjs/parts/FilterBar/components/DateRangePill.js +21 -6
  72. package/dist/cjs/parts/FilterBar/components/DateRangePill.js.map +2 -2
  73. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js +22 -6
  74. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js.map +2 -2
  75. package/dist/cjs/parts/FilterBar/components/FreeTextSearchPill.js +25 -5
  76. package/dist/cjs/parts/FilterBar/components/FreeTextSearchPill.js.map +2 -2
  77. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js +11 -5
  78. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  79. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js +28 -5
  80. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js.map +2 -2
  81. package/dist/cjs/parts/FilterBar/components/SelectPill.js +25 -5
  82. package/dist/cjs/parts/FilterBar/components/SelectPill.js.map +2 -2
  83. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js +26 -5
  84. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js.map +2 -2
  85. package/dist/cjs/parts/Filters/index.js +11 -1
  86. package/dist/cjs/parts/Filters/index.js.map +2 -2
  87. package/dist/cjs/parts/Headers/HeaderCell.js +10 -1
  88. package/dist/cjs/parts/Headers/HeaderCell.js.map +2 -2
  89. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  90. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js +154 -0
  91. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.js.map +7 -0
  92. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +19 -3
  93. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  94. package/dist/esm/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js +108 -0
  95. package/dist/esm/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.js.map +7 -0
  96. package/dist/esm/addons/Filters/Components/DateRangeFilter/index.js +8 -2
  97. package/dist/esm/addons/Filters/Components/DateRangeFilter/index.js.map +2 -2
  98. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js +147 -0
  99. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.js.map +7 -0
  100. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/index.js +10 -3
  101. package/dist/esm/addons/Filters/Components/DateSwitcherFilter/index.js.map +2 -2
  102. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js +131 -0
  103. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js.map +7 -0
  104. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/index.js +3 -0
  105. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/index.js.map +2 -2
  106. package/dist/esm/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js +151 -0
  107. package/dist/esm/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.js.map +7 -0
  108. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js +7 -2
  109. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  110. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +3 -0
  111. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  112. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js +172 -0
  113. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.js.map +7 -0
  114. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js +38 -0
  115. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.js.map +7 -0
  116. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js +37 -0
  117. package/dist/esm/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.js.map +7 -0
  118. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js +37 -0
  119. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.js.map +7 -0
  120. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js +36 -0
  121. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.js.map +7 -0
  122. package/dist/esm/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js +88 -0
  123. package/dist/esm/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.js.map +7 -0
  124. package/dist/esm/addons/Filters/Components/SingleDateFilter/index.js +15 -2
  125. package/dist/esm/addons/Filters/Components/SingleDateFilter/index.js.map +2 -2
  126. package/dist/esm/addons/Filters/Components/index.js +22 -0
  127. package/dist/esm/addons/Filters/Components/index.js.map +2 -2
  128. package/dist/esm/configs/useAutocalculated/index.js +5 -1
  129. package/dist/esm/configs/useAutocalculated/index.js.map +2 -2
  130. package/dist/esm/configs/useTableResizeCb.js +9 -2
  131. package/dist/esm/configs/useTableResizeCb.js.map +2 -2
  132. package/dist/esm/constants/index.js +2 -1
  133. package/dist/esm/constants/index.js.map +2 -2
  134. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js +74 -0
  135. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js.map +7 -0
  136. package/dist/esm/exported-related/FilterBar/index.js +3 -1
  137. package/dist/esm/exported-related/FilterBar/index.js.map +2 -2
  138. package/dist/esm/exported-related/FilterPopover/FilterPopoverV2.js +128 -0
  139. package/dist/esm/exported-related/FilterPopover/FilterPopoverV2.js.map +7 -0
  140. package/dist/esm/exported-related/FilterPopover/index.js +26 -26
  141. package/dist/esm/exported-related/FilterPopover/index.js.map +2 -2
  142. package/dist/esm/exported-related/FilterPopover/styled.js +32 -0
  143. package/dist/esm/exported-related/FilterPopover/styled.js.map +7 -0
  144. package/dist/esm/exported-related/FilterPopover/useGetFilterHandlers.js.map +1 -1
  145. package/dist/esm/exported-related/FilterPopover/useOnClickOutside.js +30 -0
  146. package/dist/esm/exported-related/FilterPopover/useOnClickOutside.js.map +7 -0
  147. package/dist/esm/exported-related/FilterTypes.js +11 -1
  148. package/dist/esm/exported-related/FilterTypes.js.map +2 -2
  149. package/dist/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +3 -2
  150. package/dist/esm/exported-related/Filters/applyOutOfTheBoxFilters.js.map +2 -2
  151. package/dist/esm/exported-related/index.js +2 -1
  152. package/dist/esm/exported-related/index.js.map +2 -2
  153. package/dist/esm/index.js +2 -0
  154. package/dist/esm/index.js.map +2 -2
  155. package/dist/esm/parts/FilterBar/DeprecatedDropdown.js +1 -1
  156. package/dist/esm/parts/FilterBar/DeprecatedDropdown.js.map +1 -1
  157. package/dist/esm/parts/FilterBar/FiltersBar.js +9 -3
  158. package/dist/esm/parts/FilterBar/FiltersBar.js.map +2 -2
  159. package/dist/esm/parts/FilterBar/components/DateRangePill.js +22 -7
  160. package/dist/esm/parts/FilterBar/components/DateRangePill.js.map +2 -2
  161. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js +23 -7
  162. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js.map +2 -2
  163. package/dist/esm/parts/FilterBar/components/FreeTextSearchPill.js +25 -5
  164. package/dist/esm/parts/FilterBar/components/FreeTextSearchPill.js.map +2 -2
  165. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js +11 -5
  166. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  167. package/dist/esm/parts/FilterBar/components/NumberRangePill.js +29 -6
  168. package/dist/esm/parts/FilterBar/components/NumberRangePill.js.map +2 -2
  169. package/dist/esm/parts/FilterBar/components/SelectPill.js +25 -5
  170. package/dist/esm/parts/FilterBar/components/SelectPill.js.map +2 -2
  171. package/dist/esm/parts/FilterBar/components/SingleDatePill.js +26 -5
  172. package/dist/esm/parts/FilterBar/components/SingleDatePill.js.map +2 -2
  173. package/dist/esm/parts/Filters/index.js +22 -2
  174. package/dist/esm/parts/Filters/index.js.map +2 -2
  175. package/dist/esm/parts/Headers/HeaderCell.js +11 -2
  176. package/dist/esm/parts/Headers/HeaderCell.js.map +2 -2
  177. package/dist/esm/react-desc-prop-types.js.map +2 -2
  178. package/dist/types/addons/Filters/Components/CurrencyRangeFilter/CurrencyRangeFilterV2.d.ts +8 -0
  179. package/dist/types/addons/Filters/Components/DateRangeFilter/DateRangeFilterV2.d.ts +8 -0
  180. package/dist/types/addons/Filters/Components/DateSwitcherFilter/DateSwitcherFilterV2.d.ts +9 -0
  181. package/dist/types/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.d.ts +3 -0
  182. package/dist/types/addons/Filters/Components/NumberRangeFilter/NumberRangeFilterV2.d.ts +8 -0
  183. package/dist/types/addons/Filters/Components/SelectFilter/BaseSelectFilterV2.d.ts +11 -0
  184. package/dist/types/addons/Filters/Components/SelectFilter/MultiCreatableFilterV2.d.ts +6 -0
  185. package/dist/types/addons/Filters/Components/SelectFilter/MultiSelectFilterV2.d.ts +6 -0
  186. package/dist/types/addons/Filters/Components/SelectFilter/SingleCreatableFilterV2.d.ts +6 -0
  187. package/dist/types/addons/Filters/Components/SelectFilter/SingleSelectFilterV2.d.ts +6 -0
  188. package/dist/types/addons/Filters/Components/SingleDateFilter/SingleDateFilterV2.d.ts +5 -0
  189. package/dist/types/addons/Filters/Components/index.d.ts +10 -0
  190. package/dist/types/configs/useTableResizeCb.d.ts +1 -0
  191. package/dist/types/constants/index.d.ts +4 -0
  192. package/dist/types/exported-related/FilterBar/PillsFromDataTableFilters.d.ts +12 -0
  193. package/dist/types/exported-related/FilterBar/index.d.ts +1 -0
  194. package/dist/types/exported-related/FilterPopover/FilterPopoverV2.d.ts +3 -0
  195. package/dist/types/exported-related/FilterPopover/styled.d.ts +6 -0
  196. package/dist/types/exported-related/FilterPopover/types.d.ts +19 -0
  197. package/dist/types/exported-related/FilterPopover/useGetFilterHandlers.d.ts +2 -2
  198. package/dist/types/exported-related/FilterPopover/useOnClickOutside.d.ts +1 -0
  199. package/dist/types/exported-related/FilterTypes.d.ts +10 -0
  200. package/dist/types/exported-related/index.d.ts +1 -1
  201. package/dist/types/index.d.ts +1 -1
  202. package/dist/types/react-desc-prop-types.d.ts +3 -2
  203. package/dist/types/tests/filters/DSDatatable.PUI-17318.test.d.ts +1 -0
  204. package/dist/types/tests/playwright/DSDataTable.ControlledFilterTestRenderer.d.ts +2 -0
  205. package/dist/types/tests/playwright/DSDataTable.ControlledHiddenPanelTestRenderer.d.ts +1 -0
  206. package/dist/types/tests/playwright/GenericExampleTable.d.ts +1 -0
  207. package/package.json +54 -52
@@ -16,13 +16,21 @@ import { DeprecatedDropdown } from "./DeprecatedDropdown.js";
16
16
  import { usePropsStore } from "../../configs/useStore/createInternalAndPropsContext.js";
17
17
  const pillRenderMapper = {
18
18
  [FILTER_TYPES.SELECT]: SelectPill,
19
+ [FILTER_TYPES.SELECT_V2]: SelectPill,
19
20
  [FILTER_TYPES.MULTI_SELECT]: MultiSelectPill,
21
+ [FILTER_TYPES.MULTI_SELECT_V2]: MultiSelectPill,
20
22
  [FILTER_TYPES.SINGLE_DATE]: SingleDatePill,
23
+ [FILTER_TYPES.SINGLE_DATE_V2]: SingleDatePill,
21
24
  [FILTER_TYPES.DATE_RANGE]: DateRangePill,
25
+ [FILTER_TYPES.DATE_RANGE_V2]: DateRangePill,
22
26
  [FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill,
27
+ [FILTER_TYPES.DATE_SWITCHER_V2]: DateSwitcherPill,
23
28
  [FILTER_TYPES.NUMBER_RANGE]: NumberRangePill,
29
+ [FILTER_TYPES.NUMBER_RANGE_V2]: NumberRangePill,
24
30
  [FILTER_TYPES.CURRENCY_RANGE]: NumberRangePill,
25
- [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchPillPill
31
+ [FILTER_TYPES.CURRENCY_RANGE_V2]: NumberRangePill,
32
+ [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchPillPill,
33
+ [FILTER_TYPES.FREE_TEXT_SEARCH_V2]: FreeTextSearchPillPill
26
34
  };
27
35
  const FiltersBar = () => {
28
36
  const width = usePropsStore((state) => state.width);
@@ -77,8 +85,6 @@ const FiltersBar = () => {
77
85
  StyledWrapper,
78
86
  {
79
87
  width,
80
- "aria-live": "polite",
81
- "aria-relevant": "additions removals",
82
88
  gutter: "xs",
83
89
  getOwnerProps,
84
90
  children: [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/FilterBar/FiltersBar.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport { FILTER_TYPES } from '../../exported-related/index.js';\nimport {\n SelectPill,\n MultiSelectPill,\n SingleDatePill,\n DateRangePill,\n NumberRangePill,\n DateSwitcherPill,\n FreeTextSearchPillPill,\n} from './components/index.js';\nimport { StyledWrapper } from './styled.js';\nimport { DeprecatedDropdown } from './DeprecatedDropdown.js';\nimport type { DSDataTableT } from '../../react-desc-prop-types.js';\nimport { usePropsStore } from '../../configs/useStore/createInternalAndPropsContext.js';\n\nconst pillRenderMapper = {\n [FILTER_TYPES.SELECT]: SelectPill,\n [FILTER_TYPES.MULTI_SELECT]: MultiSelectPill,\n [FILTER_TYPES.SINGLE_DATE]: SingleDatePill,\n [FILTER_TYPES.DATE_RANGE]: DateRangePill,\n [FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill,\n [FILTER_TYPES.NUMBER_RANGE]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE]: NumberRangePill,\n [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchPillPill,\n} as const;\n\nexport const FiltersBar: React.ComponentType = () => {\n const width = usePropsStore((state) => state.width);\n const filterBarProps = usePropsStore((state) => state.filterBarProps);\n const onFiltersChange = usePropsStore((state) => state.onFiltersChange);\n const filters = usePropsStore((state) => state.filters);\n const visibleColumns = usePropsStore((state) => state.visibleColumns);\n const getOwnerProps = usePropsStore((store) => store.get);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const pillGroupRefs = useMemo(() => {\n const refs: React.RefObject<HTMLElement>[] = [];\n for (let i = 0; i < filters.length; i += 1) refs.push(React.createRef());\n return refs;\n }, [filters.length]);\n\n const dropdownMenuRef = useRef<HTMLButtonElement | null>(null);\n\n const {\n filterBarAddonRenderer: FilterBarAddonRenderer,\n onClearAllFiltersClick,\n onDropdownMenuToggle,\n onDropdownMenuClickOutside,\n onDropdownMenuTriggerClick,\n isDropdownMenuOpen,\n } = filterBarProps || {};\n\n const removeAllFilters = useCallback(() => {\n onFiltersChange([]);\n onClearAllFiltersClick?.();\n setIsOpen(false);\n }, [onFiltersChange, onClearAllFiltersClick]);\n\n const onFilterBarClose = useCallback(() => {\n onDropdownMenuToggle?.(false, 'onClose');\n dropdownMenuRef.current?.focus();\n setIsOpen(false);\n }, [onDropdownMenuToggle]);\n\n const onFilterBarOpen = useCallback(() => {\n onDropdownMenuToggle?.(true, 'onOpen');\n setIsOpen(true);\n }, [onDropdownMenuToggle]);\n\n const onFilterBarOnClickOutside = useCallback(() => {\n onDropdownMenuToggle?.(false, 'onClickOutside');\n onDropdownMenuClickOutside?.();\n setIsOpen(false);\n }, [onDropdownMenuClickOutside, onDropdownMenuToggle]);\n\n const onTriggerClick = useCallback(() => {\n onDropdownMenuTriggerClick?.();\n onFilterBarOpen();\n }, [onDropdownMenuTriggerClick, onFilterBarOpen]);\n\n const finalIsOpen = useMemo(() => {\n if (typeof isDropdownMenuOpen === 'boolean') return isDropdownMenuOpen;\n return isOpen;\n }, [isDropdownMenuOpen, isOpen]);\n\n return (\n <StyledWrapper\n width={width}\n aria-live=\"polite\"\n aria-relevant=\"additions removals\"\n gutter=\"xs\"\n getOwnerProps={getOwnerProps}\n >\n {filters.map(({ id: column, type, value }, index) => {\n const columnHeader = visibleColumns.find((col) => col.accessor === column)?.Header;\n let Component:\n | TypescriptHelpersT.ObjectValues<typeof pillRenderMapper>\n | React.ComponentType<DSDataTableT.FilterPillProps<unknown>> = () => null;\n\n const filterType = type;\n if (filterType in pillRenderMapper) {\n Component = pillRenderMapper[filterType as keyof typeof pillRenderMapper];\n } else if (filterBarProps?.customPillRenderer) {\n Component = filterBarProps.customPillRenderer;\n }\n return (\n <Component\n key={column}\n columnHeader={typeof columnHeader === 'string' ? columnHeader : column}\n column={column}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n value={value as any}\n filters={filters}\n onFiltersChange={onFiltersChange}\n prevRef={pillGroupRefs[index - 1]}\n innerRef={pillGroupRefs[index]}\n nextRef={pillGroupRefs[index + 1] ?? dropdownMenuRef}\n />\n );\n })}\n {FilterBarAddonRenderer ? (\n <FilterBarAddonRenderer innerRef={dropdownMenuRef} />\n ) : (\n <DeprecatedDropdown\n finalIsOpen={finalIsOpen}\n onFilterBarClose={onFilterBarClose}\n onFilterBarOnClickOutside={onFilterBarOnClickOutside}\n removeAllFilters={removeAllFilters}\n filterBarProps={filterBarProps}\n dropdownMenuRef={dropdownMenuRef}\n onTriggerClick={onTriggerClick}\n />\n )}\n </StyledWrapper>\n );\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useMemo, useRef, useState } from 'react';\nimport { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport { FILTER_TYPES } from '../../exported-related/index.js';\nimport {\n SelectPill,\n MultiSelectPill,\n SingleDatePill,\n DateRangePill,\n NumberRangePill,\n DateSwitcherPill,\n FreeTextSearchPillPill,\n} from './components/index.js';\nimport { StyledWrapper } from './styled.js';\nimport { DeprecatedDropdown } from './DeprecatedDropdown.js';\nimport type { DSDataTableT } from '../../react-desc-prop-types.js';\nimport { usePropsStore } from '../../configs/useStore/createInternalAndPropsContext.js';\n\nconst pillRenderMapper = {\n [FILTER_TYPES.SELECT]: SelectPill,\n [FILTER_TYPES.SELECT_V2]: SelectPill,\n [FILTER_TYPES.MULTI_SELECT]: MultiSelectPill,\n [FILTER_TYPES.MULTI_SELECT_V2]: MultiSelectPill,\n [FILTER_TYPES.SINGLE_DATE]: SingleDatePill,\n [FILTER_TYPES.SINGLE_DATE_V2]: SingleDatePill,\n [FILTER_TYPES.DATE_RANGE]: DateRangePill,\n [FILTER_TYPES.DATE_RANGE_V2]: DateRangePill,\n [FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill,\n [FILTER_TYPES.DATE_SWITCHER_V2]: DateSwitcherPill,\n [FILTER_TYPES.NUMBER_RANGE]: NumberRangePill,\n [FILTER_TYPES.NUMBER_RANGE_V2]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE_V2]: NumberRangePill,\n [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchPillPill,\n [FILTER_TYPES.FREE_TEXT_SEARCH_V2]: FreeTextSearchPillPill,\n} as const;\n\nexport const FiltersBar: React.ComponentType = () => {\n const width = usePropsStore((state) => state.width);\n const filterBarProps = usePropsStore((state) => state.filterBarProps);\n const onFiltersChange = usePropsStore((state) => state.onFiltersChange);\n const filters = usePropsStore((state) => state.filters);\n const visibleColumns = usePropsStore((state) => state.visibleColumns);\n const getOwnerProps = usePropsStore((store) => store.get);\n\n const [isOpen, setIsOpen] = useState(false);\n\n const pillGroupRefs = useMemo(() => {\n const refs: React.RefObject<HTMLElement>[] = [];\n for (let i = 0; i < filters.length; i += 1) refs.push(React.createRef());\n return refs;\n }, [filters.length]);\n\n const dropdownMenuRef = useRef<HTMLButtonElement | null>(null);\n\n const {\n filterBarAddonRenderer: FilterBarAddonRenderer,\n onClearAllFiltersClick,\n onDropdownMenuToggle,\n onDropdownMenuClickOutside,\n onDropdownMenuTriggerClick,\n isDropdownMenuOpen,\n } = filterBarProps || {};\n\n const removeAllFilters = useCallback(() => {\n onFiltersChange([]);\n onClearAllFiltersClick?.();\n setIsOpen(false);\n }, [onFiltersChange, onClearAllFiltersClick]);\n\n const onFilterBarClose = useCallback(() => {\n onDropdownMenuToggle?.(false, 'onClose');\n dropdownMenuRef.current?.focus();\n setIsOpen(false);\n }, [onDropdownMenuToggle]);\n\n const onFilterBarOpen = useCallback(() => {\n onDropdownMenuToggle?.(true, 'onOpen');\n setIsOpen(true);\n }, [onDropdownMenuToggle]);\n\n const onFilterBarOnClickOutside = useCallback(() => {\n onDropdownMenuToggle?.(false, 'onClickOutside');\n onDropdownMenuClickOutside?.();\n setIsOpen(false);\n }, [onDropdownMenuClickOutside, onDropdownMenuToggle]);\n\n const onTriggerClick = useCallback(() => {\n onDropdownMenuTriggerClick?.();\n onFilterBarOpen();\n }, [onDropdownMenuTriggerClick, onFilterBarOpen]);\n\n const finalIsOpen = useMemo(() => {\n if (typeof isDropdownMenuOpen === 'boolean') return isDropdownMenuOpen;\n return isOpen;\n }, [isDropdownMenuOpen, isOpen]);\n\n return (\n <StyledWrapper\n width={width}\n /**\n * PUI-17317 - [DataTable] No announcement is made when a filter is added or removed\n * https://jira.elliemae.io/browse/PUI-17317\n *\n * ## Problem\n * Screen reader users received no feedback when filters were added or removed.\n * The attempted fix \u2014 placing `aria-live=\"polite\"` + `aria-relevant=\"additions removals\"`\n * on this wrapper \u2014 was unreliable across screen readers and, when it did fire,\n * produced meaningless announcements by concatenating the pill label with its\n * remove-button aria-label, e.g.:\n * \"React Dev Remove React Dev from Position\"\n *\n * WCAG recommends contextual messages like \"Filter applied: Currency = USD\".\n * That level of specificity cannot be achieved automatically through aria attributes alone.\n *\n * ## Decision\n * `aria-live` / `aria-relevant` were removed from this component.\n * The responsibility for announcing filter changes is delegated to the consumer,\n * who has access to the full filter state and can compose meaningful messages like:\n *\n * e.g: Multi Select Filter\n *\n * - \"Filter added: Position: React dev\"\n * - \"Filter updated: Position: React dev, Fullstack dev\"\n * - \"Filter removed: Position: React dev, Fullstack dev\"\n */\n /*\n aria-live=\"polite\"\n aria-relevant=\"additions removals\" \n */\n gutter=\"xs\"\n getOwnerProps={getOwnerProps}\n >\n {filters.map(({ id: column, type, value }, index) => {\n const columnHeader = visibleColumns.find((col) => col.accessor === column)?.Header;\n let Component:\n | TypescriptHelpersT.ObjectValues<typeof pillRenderMapper>\n | React.ComponentType<DSDataTableT.FilterPillProps<unknown>> = () => null;\n\n const filterType = type;\n if (filterType in pillRenderMapper) {\n Component = pillRenderMapper[filterType as keyof typeof pillRenderMapper];\n } else if (filterBarProps?.customPillRenderer) {\n Component = filterBarProps.customPillRenderer;\n }\n return (\n <Component\n key={column}\n columnHeader={typeof columnHeader === 'string' ? columnHeader : column}\n column={column}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n value={value as any}\n filters={filters}\n onFiltersChange={onFiltersChange}\n prevRef={pillGroupRefs[index - 1]}\n innerRef={pillGroupRefs[index]}\n nextRef={pillGroupRefs[index + 1] ?? dropdownMenuRef}\n />\n );\n })}\n {FilterBarAddonRenderer ? (\n <FilterBarAddonRenderer innerRef={dropdownMenuRef} />\n ) : (\n <DeprecatedDropdown\n finalIsOpen={finalIsOpen}\n onFilterBarClose={onFilterBarClose}\n onFilterBarOnClickOutside={onFilterBarOnClickOutside}\n removeAllFilters={removeAllFilters}\n filterBarProps={filterBarProps}\n dropdownMenuRef={dropdownMenuRef}\n onTriggerClick={onTriggerClick}\n />\n )}\n </StyledWrapper>\n );\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["React"]
7
7
  }
@@ -1,23 +1,38 @@
1
1
  import * as React from "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useCallback } from "react";
3
+ import { useCallback, useMemo } from "react";
4
4
  import { DSPillGroupV2, DSPillV2 } from "@elliemae/ds-pills-v2";
5
5
  const format = (value) => value?.replace(/-/g, "/");
6
- const DateRangePill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef }) => {
6
+ const DateRangePill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef, onPillRemove }) => {
7
+ const removeFilter = useCallback(
8
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
9
+ [onFiltersChange, filters, column]
10
+ );
7
11
  const handleOnRemove = useCallback(() => {
12
+ if (onPillRemove) {
13
+ onPillRemove(removeFilter);
14
+ return;
15
+ }
8
16
  if (prevRef?.current) prevRef.current.focus();
9
- else nextRef.current?.focus();
10
- onFiltersChange(filters.filter((filter) => filter.id !== column));
11
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
17
+ else nextRef?.current?.focus();
18
+ removeFilter();
19
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
20
+ const formattedDateRange = useMemo(
21
+ () => value?.startDate && value?.endDate ? `${format(value.startDate)} - ${format(value.endDate)}` : "",
22
+ [value]
23
+ );
12
24
  return value?.startDate && value?.endDate ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
13
25
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
14
26
  /* @__PURE__ */ jsx(
15
27
  DSPillV2,
16
28
  {
17
29
  type: "removable",
18
- label: `${format(value.startDate)} - ${format(value.endDate)}`,
30
+ label: formattedDateRange,
19
31
  onRemove: handleOnRemove,
20
- innerRef
32
+ innerRef,
33
+ dsPillPillButton: {
34
+ dsButtonRoot: { "aria-label": `Remove ${formattedDateRange} from ${columnHeader}` }
35
+ }
21
36
  }
22
37
  )
23
38
  ] }) : null;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/DateRangePill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nconst format = (value: string) => value?.replace(/-/g, '/');\n\nexport const DateRangePill: React.ComponentType<\n DSDataTableT.FilterPillProps<{ startDate: string; endDate: string }>\n> = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef }) => {\n const handleOnRemove = useCallback(() => {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n onFiltersChange(filters.filter((filter) => filter.id !== column));\n }, [onFiltersChange, filters, prevRef, nextRef, column]);\n\n return value?.startDate && value?.endDate ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={`${format(value.startDate)} - ${format(value.endDate)}`}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACgBnB,SACE,KADF;AAhBJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGxC,MAAM,SAAS,CAAC,UAAkB,OAAO,QAAQ,MAAM,GAAG;AAEnD,MAAM,gBAET,CAAC,EAAE,cAAc,QAAQ,OAAO,SAAS,iBAAiB,SAAS,UAAU,QAAQ,MAAM;AAC7F,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,SAAQ,SAAS,MAAM;AAC5B,oBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,iBAAiB,SAAS,SAAS,SAAS,MAAM,CAAC;AAEvD,SAAO,OAAO,aAAa,OAAO,UAChC,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO,GAAG,OAAO,MAAM,SAAS,CAAC,MAAM,OAAO,MAAM,OAAO,CAAC;AAAA,QAC5D,UAAU;AAAA,QACV;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useMemo } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nconst format = (value: string) => value?.replace(/-/g, '/');\n\nexport const DateRangePill: React.ComponentType<\n DSDataTableT.FilterPillProps<{ startDate: string; endDate: string }>\n> = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef, onPillRemove }) => {\n const removeFilter = useCallback(\n () => onFiltersChange(filters.filter((filter) => filter.id !== column)),\n [onFiltersChange, filters, column],\n );\n\n const handleOnRemove = useCallback(() => {\n if (onPillRemove) {\n onPillRemove(removeFilter);\n return;\n }\n\n if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n\n removeFilter();\n }, [onPillRemove, removeFilter, prevRef, nextRef]);\n\n const formattedDateRange = useMemo(\n () => (value?.startDate && value?.endDate ? `${format(value.startDate)} - ${format(value.endDate)}` : ''),\n [value],\n );\n\n return value?.startDate && value?.endDate ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={formattedDateRange}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n dsPillPillButton={{\n dsButtonRoot: { 'aria-label': `Remove ${formattedDateRange} from ${columnHeader}` },\n }}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACgCnB,SACE,KADF;AAhCJ,SAAgB,aAAa,eAAe;AAC5C,SAAS,eAAe,gBAAgB;AAGxC,MAAM,SAAS,CAAC,UAAkB,OAAO,QAAQ,MAAM,GAAG;AAEnD,MAAM,gBAET,CAAC,EAAE,cAAc,QAAQ,OAAO,SAAS,iBAAiB,SAAS,UAAU,SAAS,aAAa,MAAM;AAC3G,QAAM,eAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,cAAc;AAChB,mBAAa,YAAY;AACzB;AAAA,IACF;AAEA,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,UAAS,SAAS,MAAM;AAE7B,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,cAAc,SAAS,OAAO,CAAC;AAEjD,QAAM,qBAAqB;AAAA,IACzB,MAAO,OAAO,aAAa,OAAO,UAAU,GAAG,OAAO,MAAM,SAAS,CAAC,MAAM,OAAO,MAAM,OAAO,CAAC,KAAK;AAAA,IACtG,CAAC,KAAK;AAAA,EACR;AAEA,SAAO,OAAO,aAAa,OAAO,UAChC,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,kBAAkB;AAAA,UAChB,cAAc,EAAE,cAAc,UAAU,kBAAkB,SAAS,YAAY,GAAG;AAAA,QACpF;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -1,23 +1,39 @@
1
1
  import * as React from "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useCallback } from "react";
3
+ import { useCallback, useMemo } from "react";
4
4
  import { DSPillGroupV2, DSPillV2 } from "@elliemae/ds-pills-v2";
5
5
  const format = (value) => value?.replace(/-/g, "/");
6
- const DateSwitcherPill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef }) => {
6
+ const DateSwitcherPill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef, onPillRemove }) => {
7
+ const removeFilter = useCallback(
8
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
9
+ [onFiltersChange, filters, column]
10
+ );
7
11
  const handleOnRemove = useCallback(() => {
12
+ if (onPillRemove) {
13
+ onPillRemove(removeFilter);
14
+ return;
15
+ }
8
16
  if (prevRef?.current) prevRef.current.focus();
9
- else nextRef.current?.focus();
10
- onFiltersChange(filters.filter((filter) => filter.id !== column));
11
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
17
+ else nextRef?.current?.focus();
18
+ removeFilter();
19
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
20
+ const formattedDateSwitcher = useMemo(() => {
21
+ if (!value?.startDate) return "";
22
+ if (value.isDateRange && value?.endDate) return `${format(value.startDate)} - ${format(value.endDate)}`;
23
+ return format(value.startDate);
24
+ }, [value]);
12
25
  return value?.startDate && value?.endDate ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
13
26
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
14
27
  /* @__PURE__ */ jsx(
15
28
  DSPillV2,
16
29
  {
17
30
  type: "removable",
18
- label: value.isDateRange ? `${format(value.startDate)} - ${format(value.endDate)}` : format(value.startDate),
31
+ label: formattedDateSwitcher,
19
32
  onRemove: handleOnRemove,
20
- innerRef
33
+ innerRef,
34
+ dsPillPillButton: {
35
+ dsButtonRoot: { "aria-label": `Remove ${formattedDateSwitcher} from ${columnHeader}` }
36
+ }
21
37
  }
22
38
  )
23
39
  ] }) : null;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/DateSwitcherPill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nconst format = (value: string) => value?.replace(/-/g, '/');\n\nexport const DateSwitcherPill: React.ComponentType<\n DSDataTableT.FilterPillProps<{ startDate: string; endDate: string; isDateRange: boolean }>\n> = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef }) => {\n const handleOnRemove = useCallback(() => {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n onFiltersChange(filters.filter((filter) => filter.id !== column));\n }, [onFiltersChange, filters, prevRef, nextRef, column]);\n\n return value?.startDate && value?.endDate ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={value.isDateRange ? `${format(value.startDate)} - ${format(value.endDate)}` : format(value.startDate)}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACgBnB,SACE,KADF;AAhBJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGxC,MAAM,SAAS,CAAC,UAAkB,OAAO,QAAQ,MAAM,GAAG;AAEnD,MAAM,mBAET,CAAC,EAAE,cAAc,QAAQ,OAAO,SAAS,iBAAiB,SAAS,UAAU,QAAQ,MAAM;AAC7F,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,SAAQ,SAAS,MAAM;AAC5B,oBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,iBAAiB,SAAS,SAAS,SAAS,MAAM,CAAC;AAEvD,SAAO,OAAO,aAAa,OAAO,UAChC,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO,MAAM,cAAc,GAAG,OAAO,MAAM,SAAS,CAAC,MAAM,OAAO,MAAM,OAAO,CAAC,KAAK,OAAO,MAAM,SAAS;AAAA,QAC3G,UAAU;AAAA,QACV;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useMemo } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nconst format = (value: string) => value?.replace(/-/g, '/');\n\nexport const DateSwitcherPill: React.ComponentType<\n DSDataTableT.FilterPillProps<{ startDate: string; endDate: string; isDateRange: boolean }>\n> = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef, onPillRemove }) => {\n const removeFilter = useCallback(\n () => onFiltersChange(filters.filter((filter) => filter.id !== column)),\n [onFiltersChange, filters, column],\n );\n\n const handleOnRemove = useCallback(() => {\n if (onPillRemove) {\n onPillRemove(removeFilter);\n return;\n }\n\n if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n\n removeFilter();\n }, [onPillRemove, removeFilter, prevRef, nextRef]);\n const formattedDateSwitcher = useMemo(() => {\n if (!value?.startDate) return '';\n if (value.isDateRange && value?.endDate) return `${format(value.startDate)} - ${format(value.endDate)}`;\n return format(value.startDate);\n }, [value]);\n return value?.startDate && value?.endDate ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={formattedDateSwitcher}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n dsPillPillButton={{\n dsButtonRoot: { 'aria-label': `Remove ${formattedDateSwitcher} from ${columnHeader}` },\n }}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;AC+BnB,SACE,KADF;AA/BJ,SAAgB,aAAa,eAAe;AAC5C,SAAS,eAAe,gBAAgB;AAGxC,MAAM,SAAS,CAAC,UAAkB,OAAO,QAAQ,MAAM,GAAG;AAEnD,MAAM,mBAET,CAAC,EAAE,cAAc,QAAQ,OAAO,SAAS,iBAAiB,SAAS,UAAU,SAAS,aAAa,MAAM;AAC3G,QAAM,eAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,cAAc;AAChB,mBAAa,YAAY;AACzB;AAAA,IACF;AAEA,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,UAAS,SAAS,MAAM;AAE7B,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,cAAc,SAAS,OAAO,CAAC;AACjD,QAAM,wBAAwB,QAAQ,MAAM;AAC1C,QAAI,CAAC,OAAO,UAAW,QAAO;AAC9B,QAAI,MAAM,eAAe,OAAO,QAAS,QAAO,GAAG,OAAO,MAAM,SAAS,CAAC,MAAM,OAAO,MAAM,OAAO,CAAC;AACrG,WAAO,OAAO,MAAM,SAAS;AAAA,EAC/B,GAAG,CAAC,KAAK,CAAC;AACV,SAAO,OAAO,aAAa,OAAO,UAChC,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,kBAAkB;AAAA,UAChB,cAAc,EAAE,cAAc,UAAU,qBAAqB,SAAS,YAAY,GAAG;AAAA,QACvF;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -10,16 +10,36 @@ const FreeTextSearchPillPill = ({
10
10
  onFiltersChange,
11
11
  prevRef,
12
12
  innerRef,
13
- nextRef
13
+ nextRef,
14
+ onPillRemove
14
15
  }) => {
16
+ const removeFilter = useCallback(
17
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
18
+ [onFiltersChange, filters, column]
19
+ );
15
20
  const handleOnRemove = useCallback(() => {
21
+ if (onPillRemove) {
22
+ onPillRemove(removeFilter);
23
+ return;
24
+ }
16
25
  if (prevRef?.current) prevRef.current.focus();
17
- else nextRef.current?.focus();
18
- onFiltersChange(filters.filter((filter) => filter.id !== column));
19
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
26
+ else nextRef?.current?.focus();
27
+ removeFilter();
28
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
20
29
  return value ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
21
30
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
22
- /* @__PURE__ */ jsx(DSPillV2, { type: "removable", label: value, onRemove: handleOnRemove, innerRef })
31
+ /* @__PURE__ */ jsx(
32
+ DSPillV2,
33
+ {
34
+ type: "removable",
35
+ label: value,
36
+ onRemove: handleOnRemove,
37
+ innerRef,
38
+ dsPillPillButton: {
39
+ dsButtonRoot: { "aria-label": `Remove ${value} from ${columnHeader}` }
40
+ }
41
+ }
42
+ )
23
43
  ] }) : null;
24
44
  };
25
45
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/FreeTextSearchPill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const FreeTextSearchPillPill: React.ComponentType<DSDataTableT.FilterPillProps<string>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n}) => {\n const handleOnRemove = useCallback(() => {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n onFiltersChange(filters.filter((filter) => filter.id !== column));\n }, [onFiltersChange, filters, prevRef, nextRef, column]);\n\n return value ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2 type=\"removable\" label={value} onRemove={handleOnRemove} innerRef={innerRef} />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACqBnB,SACE,KADF;AArBJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGjC,MAAM,yBAAoF,CAAC;AAAA,EAChG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,SAAQ,SAAS,MAAM;AAC5B,oBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,iBAAiB,SAAS,SAAS,SAAS,MAAM,CAAC;AAEvD,SAAO,QACL,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,oBAAC,YAAS,MAAK,aAAY,OAAO,OAAO,UAAU,gBAAgB,UAAoB;AAAA,KACzF,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const FreeTextSearchPillPill: React.ComponentType<DSDataTableT.FilterPillProps<string>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n onPillRemove,\n}) => {\n const removeFilter = useCallback(\n () => onFiltersChange(filters.filter((filter) => filter.id !== column)),\n [onFiltersChange, filters, column],\n );\n\n const handleOnRemove = useCallback(() => {\n if (onPillRemove) {\n onPillRemove(removeFilter);\n return;\n }\n\n if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n\n removeFilter();\n }, [onPillRemove, removeFilter, prevRef, nextRef]);\n\n return value ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={value}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n dsPillPillButton={{\n dsButtonRoot: { 'aria-label': `Remove ${value} from ${columnHeader}` },\n }}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACiCnB,SACE,KADF;AAjCJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGjC,MAAM,yBAAoF,CAAC;AAAA,EAChG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,cAAc;AAChB,mBAAa,YAAY;AACzB;AAAA,IACF;AAEA,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,UAAS,SAAS,MAAM;AAE7B,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,cAAc,SAAS,OAAO,CAAC;AAEjD,SAAO,QACL,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,kBAAkB;AAAA,UAChB,cAAc,EAAE,cAAc,UAAU,KAAK,SAAS,YAAY,GAAG;AAAA,QACvE;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -11,7 +11,8 @@ const MultiSelectPill = ({
11
11
  onFiltersChange,
12
12
  prevRef,
13
13
  innerRef,
14
- nextRef
14
+ nextRef,
15
+ onPillRemove
15
16
  }) => {
16
17
  const multiSelectedValue = value;
17
18
  const handleOnRemove = useCallback(
@@ -21,13 +22,15 @@ const MultiSelectPill = ({
21
22
  const newFilterValue = multiSelectedValue.filter((val) => val.dsId !== valToRemove.dsId);
22
23
  newFilters[filterIndex].value = newFilterValue;
23
24
  if (newFilterValue.length === 0) {
24
- if (prevRef?.current) prevRef.current.focus();
25
- else nextRef.current?.focus();
25
+ if (onPillRemove) {
26
+ onPillRemove(() => onFiltersChange(newFilters));
27
+ } else if (prevRef?.current) prevRef.current.focus();
28
+ else nextRef?.current?.focus();
26
29
  newFilters.splice(filterIndex, 1);
27
30
  }
28
31
  onFiltersChange(newFilters);
29
32
  },
30
- [filters, multiSelectedValue, onFiltersChange, column, prevRef, nextRef]
33
+ [filters, multiSelectedValue, onFiltersChange, onPillRemove, column, prevRef, nextRef]
31
34
  );
32
35
  return multiSelectedValue?.length ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
33
36
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
@@ -37,7 +40,10 @@ const MultiSelectPill = ({
37
40
  type: "removable",
38
41
  label: val.label,
39
42
  onRemove: () => handleOnRemove(val),
40
- innerRef: index === multiSelectedValue.length - 1 ? innerRef : void 0
43
+ innerRef: index === multiSelectedValue.length - 1 ? innerRef : void 0,
44
+ dsPillPillButton: {
45
+ dsButtonRoot: { "aria-label": `Remove ${val.label} from ${columnHeader}` }
46
+ }
41
47
  },
42
48
  val.dsId
43
49
  ))
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/MultiSelectPill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { cloneDeep } from 'lodash-es';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSComboboxT } from '@elliemae/ds-form-combobox';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\ntype MultiSelectPillValues = DSComboboxT.ItemOption[];\n\nexport const MultiSelectPill: React.ComponentType<DSDataTableT.FilterPillProps<MultiSelectPillValues>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n}) => {\n const multiSelectedValue = value;\n const handleOnRemove = useCallback(\n (valToRemove: DSDataTableT.FilterOptionT) => {\n const newFilters = cloneDeep(filters);\n const filterIndex = newFilters.findIndex((filter) => filter.id === column);\n\n const newFilterValue = multiSelectedValue.filter((val) => val.dsId !== valToRemove.dsId);\n\n newFilters[filterIndex].value = newFilterValue;\n\n if (newFilterValue.length === 0) {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n newFilters.splice(filterIndex, 1);\n }\n onFiltersChange(newFilters);\n },\n [filters, multiSelectedValue, onFiltersChange, column, prevRef, nextRef],\n );\n return multiSelectedValue?.length ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n {multiSelectedValue.map((val, index) => (\n <DSPillV2\n key={val.dsId}\n type=\"removable\"\n label={val.label}\n onRemove={() => handleOnRemove(val)}\n innerRef={index === multiSelectedValue.length - 1 ? innerRef : undefined}\n />\n ))}\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACsCnB,SACE,KADF;AAtCJ,SAAgB,mBAAmB;AACnC,SAAS,iBAAiB;AAC1B,SAAS,eAAe,gBAAgB;AAMjC,MAAM,kBAA4F,CAAC;AAAA,EACxG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,qBAAqB;AAC3B,QAAM,iBAAiB;AAAA,IACrB,CAAC,gBAA4C;AAC3C,YAAM,aAAa,UAAU,OAAO;AACpC,YAAM,cAAc,WAAW,UAAU,CAAC,WAAW,OAAO,OAAO,MAAM;AAEzE,YAAM,iBAAiB,mBAAmB,OAAO,CAAC,QAAQ,IAAI,SAAS,YAAY,IAAI;AAEvF,iBAAW,WAAW,EAAE,QAAQ;AAEhC,UAAI,eAAe,WAAW,GAAG;AAC/B,YAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,YACvC,SAAQ,SAAS,MAAM;AAC5B,mBAAW,OAAO,aAAa,CAAC;AAAA,MAClC;AACA,sBAAgB,UAAU;AAAA,IAC5B;AAAA,IACA,CAAC,SAAS,oBAAoB,iBAAiB,QAAQ,SAAS,OAAO;AAAA,EACzE;AACA,SAAO,oBAAoB,SACzB,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC3C,mBAAmB,IAAI,CAAC,KAAK,UAC5B;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACL,OAAO,IAAI;AAAA,QACX,UAAU,MAAM,eAAe,GAAG;AAAA,QAClC,UAAU,UAAU,mBAAmB,SAAS,IAAI,WAAW;AAAA;AAAA,MAJ1D,IAAI;AAAA,IAKX,CACD;AAAA,KACH,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { cloneDeep } from 'lodash-es';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSComboboxT } from '@elliemae/ds-form-combobox';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\ntype MultiSelectPillValues = DSComboboxT.ItemOption[];\n\nexport const MultiSelectPill: React.ComponentType<DSDataTableT.FilterPillProps<MultiSelectPillValues>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n onPillRemove,\n}) => {\n const multiSelectedValue = value;\n const handleOnRemove = useCallback(\n (valToRemove: DSDataTableT.FilterOptionT) => {\n const newFilters = cloneDeep(filters);\n const filterIndex = newFilters.findIndex((filter) => filter.id === column);\n\n const newFilterValue = multiSelectedValue.filter((val) => val.dsId !== valToRemove.dsId);\n\n newFilters[filterIndex].value = newFilterValue;\n if (newFilterValue.length === 0) {\n if (onPillRemove) {\n onPillRemove(() => onFiltersChange(newFilters));\n } else if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n newFilters.splice(filterIndex, 1);\n }\n onFiltersChange(newFilters);\n },\n [filters, multiSelectedValue, onFiltersChange, onPillRemove, column, prevRef, nextRef],\n );\n return multiSelectedValue?.length ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n {multiSelectedValue.map((val, index) => (\n <DSPillV2\n key={val.dsId}\n type=\"removable\"\n label={val.label}\n onRemove={() => handleOnRemove(val)}\n innerRef={index === multiSelectedValue.length - 1 ? innerRef : undefined}\n dsPillPillButton={{\n dsButtonRoot: { 'aria-label': `Remove ${val.label} from ${columnHeader}` },\n }}\n />\n ))}\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACwCnB,SACE,KADF;AAxCJ,SAAgB,mBAAmB;AACnC,SAAS,iBAAiB;AAC1B,SAAS,eAAe,gBAAgB;AAMjC,MAAM,kBAA4F,CAAC;AAAA,EACxG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,qBAAqB;AAC3B,QAAM,iBAAiB;AAAA,IACrB,CAAC,gBAA4C;AAC3C,YAAM,aAAa,UAAU,OAAO;AACpC,YAAM,cAAc,WAAW,UAAU,CAAC,WAAW,OAAO,OAAO,MAAM;AAEzE,YAAM,iBAAiB,mBAAmB,OAAO,CAAC,QAAQ,IAAI,SAAS,YAAY,IAAI;AAEvF,iBAAW,WAAW,EAAE,QAAQ;AAChC,UAAI,eAAe,WAAW,GAAG;AAC/B,YAAI,cAAc;AAChB,uBAAa,MAAM,gBAAgB,UAAU,CAAC;AAAA,QAChD,WAAW,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,YAC9C,UAAS,SAAS,MAAM;AAC7B,mBAAW,OAAO,aAAa,CAAC;AAAA,MAClC;AACA,sBAAgB,UAAU;AAAA,IAC5B;AAAA,IACA,CAAC,SAAS,oBAAoB,iBAAiB,cAAc,QAAQ,SAAS,OAAO;AAAA,EACvF;AACA,SAAO,oBAAoB,SACzB,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC3C,mBAAmB,IAAI,CAAC,KAAK,UAC5B;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACL,OAAO,IAAI;AAAA,QACX,UAAU,MAAM,eAAe,GAAG;AAAA,QAClC,UAAU,UAAU,mBAAmB,SAAS,IAAI,WAAW;AAAA,QAC/D,kBAAkB;AAAA,UAChB,cAAc,EAAE,cAAc,UAAU,IAAI,KAAK,SAAS,YAAY,GAAG;AAAA,QAC3E;AAAA;AAAA,MAPK,IAAI;AAAA,IAQX,CACD;AAAA,KACH,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useCallback } from "react";
3
+ import { useCallback, useMemo } from "react";
4
4
  import { DSPillGroupV2, DSPillV2 } from "@elliemae/ds-pills-v2";
5
5
  const NumberRangePill = ({
6
6
  columnHeader,
@@ -10,16 +10,39 @@ const NumberRangePill = ({
10
10
  onFiltersChange,
11
11
  prevRef,
12
12
  innerRef,
13
- nextRef
13
+ nextRef,
14
+ onPillRemove
14
15
  }) => {
16
+ const removeFilter = useCallback(
17
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
18
+ [onFiltersChange, filters, column]
19
+ );
15
20
  const handleOnRemove = useCallback(() => {
21
+ if (onPillRemove) {
22
+ onPillRemove(removeFilter);
23
+ return;
24
+ }
16
25
  if (prevRef?.current) prevRef.current.focus();
17
- else nextRef.current?.focus();
18
- onFiltersChange(filters.filter((filter) => filter.id !== column));
19
- }, [onFiltersChange, filters, column, prevRef, nextRef]);
26
+ else nextRef?.current?.focus();
27
+ removeFilter();
28
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
29
+ const formattedRange = useMemo(() => {
30
+ if (!value?.from) return "";
31
+ if (value?.to) return `${value.from} - ${value.to}`;
32
+ return value.from;
33
+ }, [value]);
20
34
  return (value?.from ?? "") !== "" && (value?.to ?? "") !== "" ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
21
35
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
22
- /* @__PURE__ */ jsx(DSPillV2, { type: "removable", label: `${value.from} - ${value.to}`, onRemove: handleOnRemove, innerRef })
36
+ /* @__PURE__ */ jsx(
37
+ DSPillV2,
38
+ {
39
+ type: "removable",
40
+ label: formattedRange,
41
+ onRemove: handleOnRemove,
42
+ innerRef,
43
+ dsPillPillButton: { dsButtonRoot: { "aria-label": `Remove ${formattedRange} from ${columnHeader}` } }
44
+ }
45
+ )
23
46
  ] }) : null;
24
47
  };
25
48
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/NumberRangePill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const NumberRangePill: React.ComponentType<DSDataTableT.FilterPillProps<{ from: string; to: string }>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n}) => {\n const handleOnRemove = useCallback(() => {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n onFiltersChange(filters.filter((filter) => filter.id !== column));\n }, [onFiltersChange, filters, column, prevRef, nextRef]);\n\n return (value?.from ?? '') !== '' && (value?.to ?? '') !== '' ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2 type=\"removable\" label={`${value.from} - ${value.to}`} onRemove={handleOnRemove} innerRef={innerRef} />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACqBnB,SACE,KADF;AArBJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGjC,MAAM,kBAAmG,CAAC;AAAA,EAC/G;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,SAAQ,SAAS,MAAM;AAC5B,oBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,iBAAiB,SAAS,QAAQ,SAAS,OAAO,CAAC;AAEvD,UAAQ,OAAO,QAAQ,QAAQ,OAAO,OAAO,MAAM,QAAQ,KACzD,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,oBAAC,YAAS,MAAK,aAAY,OAAO,GAAG,MAAM,IAAI,MAAM,MAAM,EAAE,IAAI,UAAU,gBAAgB,UAAoB;AAAA,KACjH,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useMemo } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const NumberRangePill: React.ComponentType<DSDataTableT.FilterPillProps<{ from: string; to: string }>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n onPillRemove,\n}) => {\n const removeFilter = useCallback(\n () => onFiltersChange(filters.filter((filter) => filter.id !== column)),\n [onFiltersChange, filters, column],\n );\n\n const handleOnRemove = useCallback(() => {\n if (onPillRemove) {\n onPillRemove(removeFilter);\n return;\n }\n\n if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n\n removeFilter();\n }, [onPillRemove, removeFilter, prevRef, nextRef]);\n\n const formattedRange = useMemo(() => {\n if (!value?.from) return '';\n if (value?.to) return `${value.from} - ${value.to}`;\n return value.from;\n }, [value]);\n\n return (value?.from ?? '') !== '' && (value?.to ?? '') !== '' ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={formattedRange}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n dsPillPillButton={{ dsButtonRoot: { 'aria-label': `Remove ${formattedRange} from ${columnHeader}` } }}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACuCnB,SACE,KADF;AAvCJ,SAAgB,aAAa,eAAe;AAC5C,SAAS,eAAe,gBAAgB;AAGjC,MAAM,kBAAmG,CAAC;AAAA,EAC/G;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,cAAc;AAChB,mBAAa,YAAY;AACzB;AAAA,IACF;AAEA,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,UAAS,SAAS,MAAM;AAE7B,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,cAAc,SAAS,OAAO,CAAC;AAEjD,QAAM,iBAAiB,QAAQ,MAAM;AACnC,QAAI,CAAC,OAAO,KAAM,QAAO;AACzB,QAAI,OAAO,GAAI,QAAO,GAAG,MAAM,IAAI,MAAM,MAAM,EAAE;AACjD,WAAO,MAAM;AAAA,EACf,GAAG,CAAC,KAAK,CAAC;AAEV,UAAQ,OAAO,QAAQ,QAAQ,OAAO,OAAO,MAAM,QAAQ,KACzD,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,kBAAkB,EAAE,cAAc,EAAE,cAAc,UAAU,cAAc,SAAS,YAAY,GAAG,EAAE;AAAA;AAAA,IACtG;AAAA,KACF,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -10,16 +10,36 @@ const SelectPill = ({
10
10
  onFiltersChange,
11
11
  prevRef,
12
12
  innerRef,
13
- nextRef
13
+ nextRef,
14
+ onPillRemove
14
15
  }) => {
16
+ const removeFilter = useCallback(
17
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
18
+ [onFiltersChange, filters, column]
19
+ );
15
20
  const handleOnRemove = useCallback(() => {
21
+ if (onPillRemove) {
22
+ onPillRemove(removeFilter);
23
+ return;
24
+ }
16
25
  if (prevRef?.current) prevRef.current.focus();
17
- else nextRef.current?.focus();
18
- onFiltersChange(filters.filter((filter) => filter.id !== column));
19
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
26
+ else nextRef?.current?.focus();
27
+ removeFilter();
28
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
20
29
  return value ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
21
30
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
22
- /* @__PURE__ */ jsx(DSPillV2, { type: "removable", label: value.label, onRemove: handleOnRemove, innerRef })
31
+ /* @__PURE__ */ jsx(
32
+ DSPillV2,
33
+ {
34
+ type: "removable",
35
+ label: value.label,
36
+ onRemove: handleOnRemove,
37
+ innerRef,
38
+ dsPillPillButton: {
39
+ dsButtonRoot: { "aria-label": `Remove ${value.label} from ${columnHeader}` }
40
+ }
41
+ }
42
+ )
23
43
  ] }) : null;
24
44
  };
25
45
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/SelectPill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSComboboxT } from '@elliemae/ds-form-combobox';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const SelectPill: React.ComponentType<DSDataTableT.FilterPillProps<DSComboboxT.ItemOption | null>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n}) => {\n const handleOnRemove = useCallback(() => {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n onFiltersChange(filters.filter((filter) => filter.id !== column));\n }, [onFiltersChange, filters, prevRef, nextRef, column]);\n\n return value ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2 type=\"removable\" label={value.label} onRemove={handleOnRemove} innerRef={innerRef} />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACsBnB,SACE,KADF;AAtBJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAIjC,MAAM,aAA+F,CAAC;AAAA,EAC3G;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,SAAQ,SAAS,MAAM;AAC5B,oBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,iBAAiB,SAAS,SAAS,SAAS,MAAM,CAAC;AAEvD,SAAO,QACL,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,oBAAC,YAAS,MAAK,aAAY,OAAO,MAAM,OAAO,UAAU,gBAAgB,UAAoB;AAAA,KAC/F,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSComboboxT } from '@elliemae/ds-form-combobox';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const SelectPill: React.ComponentType<DSDataTableT.FilterPillProps<DSComboboxT.ItemOption | null>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n onPillRemove,\n}) => {\n const removeFilter = useCallback(\n () => onFiltersChange(filters.filter((filter) => filter.id !== column)),\n [onFiltersChange, filters, column],\n );\n\n const handleOnRemove = useCallback(() => {\n if (onPillRemove) {\n onPillRemove(removeFilter);\n return;\n }\n\n if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n\n removeFilter();\n }, [onPillRemove, removeFilter, prevRef, nextRef]);\n\n return value ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={value.label}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n dsPillPillButton={{\n dsButtonRoot: { 'aria-label': `Remove ${value.label} from ${columnHeader}` },\n }}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACkCnB,SACE,KADF;AAlCJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAIjC,MAAM,aAA+F,CAAC;AAAA,EAC3G;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,cAAc;AAChB,mBAAa,YAAY;AACzB;AAAA,IACF;AAEA,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,UAAS,SAAS,MAAM;AAE7B,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,cAAc,SAAS,OAAO,CAAC;AAEjD,SAAO,QACL,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO,MAAM;AAAA,QACb,UAAU;AAAA,QACV;AAAA,QACA,kBAAkB;AAAA,UAChB,cAAc,EAAE,cAAc,UAAU,MAAM,KAAK,SAAS,YAAY,GAAG;AAAA,QAC7E;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -10,16 +10,37 @@ const SingleDatePill = ({
10
10
  onFiltersChange,
11
11
  prevRef,
12
12
  innerRef,
13
- nextRef
13
+ nextRef,
14
+ onPillRemove
14
15
  }) => {
16
+ const removeFilter = useCallback(
17
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
18
+ [onFiltersChange, filters, column]
19
+ );
15
20
  const handleOnRemove = useCallback(() => {
21
+ if (onPillRemove) {
22
+ onPillRemove(removeFilter);
23
+ return;
24
+ }
16
25
  if (prevRef?.current) prevRef.current.focus();
17
- else nextRef.current?.focus();
18
- onFiltersChange(filters.filter((filter) => filter.id !== column));
19
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
26
+ else nextRef?.current?.focus();
27
+ removeFilter();
28
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
29
+ const formattedDate = value ? value.replace(/-/g, "/") : "";
20
30
  return value ? /* @__PURE__ */ jsxs(DSPillGroupV2, { children: [
21
31
  /* @__PURE__ */ jsx(DSPillV2, { type: "label", label: columnHeader }),
22
- /* @__PURE__ */ jsx(DSPillV2, { type: "removable", label: value.replace(/-/g, "/"), onRemove: handleOnRemove, innerRef })
32
+ /* @__PURE__ */ jsx(
33
+ DSPillV2,
34
+ {
35
+ type: "removable",
36
+ label: formattedDate,
37
+ onRemove: handleOnRemove,
38
+ innerRef,
39
+ dsPillPillButton: {
40
+ dsButtonRoot: { "aria-label": `Remove ${formattedDate} from ${columnHeader}` }
41
+ }
42
+ }
43
+ )
23
44
  ] }) : null;
24
45
  };
25
46
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/FilterBar/components/SingleDatePill.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const SingleDatePill: React.ComponentType<DSDataTableT.FilterPillProps<string>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n}) => {\n const handleOnRemove = useCallback(() => {\n if (prevRef?.current) prevRef.current.focus();\n else nextRef.current?.focus();\n onFiltersChange(filters.filter((filter) => filter.id !== column));\n }, [onFiltersChange, filters, prevRef, nextRef, column]);\n\n return value ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2 type=\"removable\" label={value.replace(/-/g, '/')} onRemove={handleOnRemove} innerRef={innerRef} />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
- "mappings": "AAAA,YAAY,WAAW;ACqBnB,SACE,KADF;AArBJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGjC,MAAM,iBAA4E,CAAC;AAAA,EACxF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,SAAQ,SAAS,MAAM;AAC5B,oBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EAClE,GAAG,CAAC,iBAAiB,SAAS,SAAS,SAAS,MAAM,CAAC;AAEvD,SAAO,QACL,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,oBAAC,YAAS,MAAK,aAAY,OAAO,MAAM,QAAQ,MAAM,GAAG,GAAG,UAAU,gBAAgB,UAAoB;AAAA,KAC5G,IACE;AACN;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSPillGroupV2, DSPillV2 } from '@elliemae/ds-pills-v2';\nimport type { DSDataTableT } from '../../../react-desc-prop-types.js';\n\nexport const SingleDatePill: React.ComponentType<DSDataTableT.FilterPillProps<string>> = ({\n columnHeader,\n column,\n value,\n filters,\n onFiltersChange,\n prevRef,\n innerRef,\n nextRef,\n onPillRemove,\n}) => {\n const removeFilter = useCallback(\n () => onFiltersChange(filters.filter((filter) => filter.id !== column)),\n [onFiltersChange, filters, column],\n );\n\n const handleOnRemove = useCallback(() => {\n if (onPillRemove) {\n onPillRemove(removeFilter);\n return;\n }\n\n if (prevRef?.current) prevRef.current.focus();\n else nextRef?.current?.focus();\n\n removeFilter();\n }, [onPillRemove, removeFilter, prevRef, nextRef]);\n\n const formattedDate = value ? value.replace(/-/g, '/') : '';\n\n return value ? (\n <DSPillGroupV2>\n <DSPillV2 type=\"label\" label={columnHeader} />\n <DSPillV2\n type=\"removable\"\n label={formattedDate}\n onRemove={handleOnRemove}\n innerRef={innerRef}\n dsPillPillButton={{\n dsButtonRoot: { 'aria-label': `Remove ${formattedDate} from ${columnHeader}` },\n }}\n />\n </DSPillGroupV2>\n ) : null;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACmCnB,SACE,KADF;AAnCJ,SAAgB,mBAAmB;AACnC,SAAS,eAAe,gBAAgB;AAGjC,MAAM,iBAA4E,CAAC;AAAA,EACxF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,iBAAiB,YAAY,MAAM;AACvC,QAAI,cAAc;AAChB,mBAAa,YAAY;AACzB;AAAA,IACF;AAEA,QAAI,SAAS,QAAS,SAAQ,QAAQ,MAAM;AAAA,QACvC,UAAS,SAAS,MAAM;AAE7B,iBAAa;AAAA,EACf,GAAG,CAAC,cAAc,cAAc,SAAS,OAAO,CAAC;AAEjD,QAAM,gBAAgB,QAAQ,MAAM,QAAQ,MAAM,GAAG,IAAI;AAEzD,SAAO,QACL,qBAAC,iBACC;AAAA,wBAAC,YAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA,QACV;AAAA,QACA,kBAAkB;AAAA,UAChB,cAAc,EAAE,cAAc,UAAU,aAAa,SAAS,YAAY,GAAG;AAAA,QAC/E;AAAA;AAAA,IACF;AAAA,KACF,IACE;AACN;",
6
6
  "names": []
7
7
  }
@@ -12,21 +12,41 @@ import {
12
12
  SingleCreatableFilter,
13
13
  SingleDateFilter,
14
14
  SingleSelectFilter,
15
- FreeTextSearchFilter
15
+ FreeTextSearchFilter,
16
+ SingleSelectFilterV2,
17
+ MultiSelectFilterV2,
18
+ SingleCreatableFilterV2,
19
+ MultiCreatableFilterV2,
20
+ SingleDateFilterV2,
21
+ DateRangeFilterV2,
22
+ DateSwitcherFilterV2,
23
+ FreeTextSearchFilterV2,
24
+ CurrencyRangeFilterV2,
25
+ NumberRangeFilterV2
16
26
  } from "../../addons/Filters/index.js";
17
27
  import { useInternalStore, usePropsStore } from "../../configs/useStore/createInternalAndPropsContext.js";
18
28
  import { FILTER_TYPES } from "../../exported-related/index.js";
19
29
  const FilterMapper = {
20
30
  [FILTER_TYPES.SELECT]: SingleSelectFilter,
31
+ [FILTER_TYPES.SELECT_V2]: SingleSelectFilterV2,
21
32
  [FILTER_TYPES.CREATABLE_SELECT]: SingleCreatableFilter,
33
+ [FILTER_TYPES.CREATABLE_SELECT_V2]: SingleCreatableFilterV2,
22
34
  [FILTER_TYPES.MULTI_SELECT]: MultiSelectFilter,
35
+ [FILTER_TYPES.MULTI_SELECT_V2]: MultiSelectFilterV2,
23
36
  [FILTER_TYPES.CREATABLE_MULTI_SELECT]: MultiCreatableFilter,
37
+ [FILTER_TYPES.CREATABLE_MULTI_SELECT_V2]: MultiCreatableFilterV2,
24
38
  [FILTER_TYPES.SINGLE_DATE]: SingleDateFilter,
39
+ [FILTER_TYPES.SINGLE_DATE_V2]: SingleDateFilterV2,
25
40
  [FILTER_TYPES.DATE_RANGE]: DateRangeFilter,
41
+ [FILTER_TYPES.DATE_RANGE_V2]: DateRangeFilterV2,
26
42
  [FILTER_TYPES.DATE_SWITCHER]: DateSwitcherFilter,
43
+ [FILTER_TYPES.DATE_SWITCHER_V2]: DateSwitcherFilterV2,
27
44
  [FILTER_TYPES.NUMBER_RANGE]: NumberRangeFilter,
45
+ [FILTER_TYPES.NUMBER_RANGE_V2]: NumberRangeFilterV2,
28
46
  [FILTER_TYPES.CURRENCY_RANGE]: CurrencyRangeFilter,
29
- [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchFilter
47
+ [FILTER_TYPES.CURRENCY_RANGE_V2]: CurrencyRangeFilterV2,
48
+ [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchFilter,
49
+ [FILTER_TYPES.FREE_TEXT_SEARCH_V2]: FreeTextSearchFilterV2
30
50
  };
31
51
  const FilterMapItem = (props) => {
32
52
  const { column, filters, onFiltersChange } = props;