@elliemae/ds-data-table 3.60.0-next.38 → 3.60.0-next.39

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 (57) hide show
  1. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js +96 -0
  2. package/dist/cjs/exported-related/FilterBar/PillsFromDataTableFilters.js.map +7 -0
  3. package/dist/cjs/exported-related/FilterBar/index.js +3 -1
  4. package/dist/cjs/exported-related/FilterBar/index.js.map +2 -2
  5. package/dist/cjs/exported-related/index.js +1 -0
  6. package/dist/cjs/exported-related/index.js.map +2 -2
  7. package/dist/cjs/index.js +1 -0
  8. package/dist/cjs/index.js.map +2 -2
  9. package/dist/cjs/parts/FilterBar/components/DateRangePill.js +21 -6
  10. package/dist/cjs/parts/FilterBar/components/DateRangePill.js.map +2 -2
  11. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js +22 -6
  12. package/dist/cjs/parts/FilterBar/components/DateSwitcherPill.js.map +2 -2
  13. package/dist/cjs/parts/FilterBar/components/FreeTextSearchPill.js +25 -5
  14. package/dist/cjs/parts/FilterBar/components/FreeTextSearchPill.js.map +2 -2
  15. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js +11 -5
  16. package/dist/cjs/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  17. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js +28 -5
  18. package/dist/cjs/parts/FilterBar/components/NumberRangePill.js.map +2 -2
  19. package/dist/cjs/parts/FilterBar/components/SelectPill.js +25 -5
  20. package/dist/cjs/parts/FilterBar/components/SelectPill.js.map +2 -2
  21. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js +26 -5
  22. package/dist/cjs/parts/FilterBar/components/SingleDatePill.js.map +2 -2
  23. package/dist/cjs/parts/Headers/HeaderCell.js +10 -1
  24. package/dist/cjs/parts/Headers/HeaderCell.js.map +2 -2
  25. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  26. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js +74 -0
  27. package/dist/esm/exported-related/FilterBar/PillsFromDataTableFilters.js.map +7 -0
  28. package/dist/esm/exported-related/FilterBar/index.js +3 -1
  29. package/dist/esm/exported-related/FilterBar/index.js.map +2 -2
  30. package/dist/esm/exported-related/index.js +2 -1
  31. package/dist/esm/exported-related/index.js.map +2 -2
  32. package/dist/esm/index.js +2 -0
  33. package/dist/esm/index.js.map +2 -2
  34. package/dist/esm/parts/FilterBar/components/DateRangePill.js +22 -7
  35. package/dist/esm/parts/FilterBar/components/DateRangePill.js.map +2 -2
  36. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js +23 -7
  37. package/dist/esm/parts/FilterBar/components/DateSwitcherPill.js.map +2 -2
  38. package/dist/esm/parts/FilterBar/components/FreeTextSearchPill.js +25 -5
  39. package/dist/esm/parts/FilterBar/components/FreeTextSearchPill.js.map +2 -2
  40. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js +11 -5
  41. package/dist/esm/parts/FilterBar/components/MultiSelectPill.js.map +2 -2
  42. package/dist/esm/parts/FilterBar/components/NumberRangePill.js +29 -6
  43. package/dist/esm/parts/FilterBar/components/NumberRangePill.js.map +2 -2
  44. package/dist/esm/parts/FilterBar/components/SelectPill.js +25 -5
  45. package/dist/esm/parts/FilterBar/components/SelectPill.js.map +2 -2
  46. package/dist/esm/parts/FilterBar/components/SingleDatePill.js +26 -5
  47. package/dist/esm/parts/FilterBar/components/SingleDatePill.js.map +2 -2
  48. package/dist/esm/parts/Headers/HeaderCell.js +11 -2
  49. package/dist/esm/parts/Headers/HeaderCell.js.map +2 -2
  50. package/dist/esm/react-desc-prop-types.js.map +2 -2
  51. package/dist/types/exported-related/FilterBar/PillsFromDataTableFilters.d.ts +12 -0
  52. package/dist/types/exported-related/FilterBar/index.d.ts +1 -0
  53. package/dist/types/exported-related/index.d.ts +1 -1
  54. package/dist/types/index.d.ts +1 -1
  55. package/dist/types/react-desc-prop-types.d.ts +3 -2
  56. package/dist/types/tests/filters/DSDatatable.PUI-17318.test.d.ts +1 -0
  57. package/package.json +30 -30
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var PillsFromDataTableFilters_exports = {};
30
+ __export(PillsFromDataTableFilters_exports, {
31
+ PillsFromDataTableFilters: () => PillsFromDataTableFilters
32
+ });
33
+ module.exports = __toCommonJS(PillsFromDataTableFilters_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_components = require("../../parts/FilterBar/components/index.js");
38
+ var import_FilterTypes = require("../FilterTypes.js");
39
+ const pillRenderMapper = {
40
+ [import_FilterTypes.FILTER_TYPES.SELECT]: import_components.SelectPill,
41
+ [import_FilterTypes.FILTER_TYPES.SELECT_V2]: import_components.SelectPill,
42
+ [import_FilterTypes.FILTER_TYPES.MULTI_SELECT]: import_components.MultiSelectPill,
43
+ [import_FilterTypes.FILTER_TYPES.MULTI_SELECT_V2]: import_components.MultiSelectPill,
44
+ [import_FilterTypes.FILTER_TYPES.SINGLE_DATE]: import_components.SingleDatePill,
45
+ [import_FilterTypes.FILTER_TYPES.SINGLE_DATE_V2]: import_components.SingleDatePill,
46
+ [import_FilterTypes.FILTER_TYPES.DATE_RANGE]: import_components.DateRangePill,
47
+ [import_FilterTypes.FILTER_TYPES.DATE_RANGE_V2]: import_components.DateRangePill,
48
+ [import_FilterTypes.FILTER_TYPES.DATE_SWITCHER]: import_components.DateSwitcherPill,
49
+ [import_FilterTypes.FILTER_TYPES.DATE_SWITCHER_V2]: import_components.DateSwitcherPill,
50
+ [import_FilterTypes.FILTER_TYPES.NUMBER_RANGE]: import_components.NumberRangePill,
51
+ [import_FilterTypes.FILTER_TYPES.NUMBER_RANGE_V2]: import_components.NumberRangePill,
52
+ [import_FilterTypes.FILTER_TYPES.CURRENCY_RANGE]: import_components.NumberRangePill,
53
+ [import_FilterTypes.FILTER_TYPES.CURRENCY_RANGE_V2]: import_components.NumberRangePill,
54
+ [import_FilterTypes.FILTER_TYPES.FREE_TEXT_SEARCH]: import_components.FreeTextSearchPillPill,
55
+ [import_FilterTypes.FILTER_TYPES.FREE_TEXT_SEARCH_V2]: import_components.FreeTextSearchPillPill
56
+ };
57
+ const PillsFromDataTableFilters = ({
58
+ filters,
59
+ columns,
60
+ onFiltersChange,
61
+ onPillRemove,
62
+ customPillRenderers,
63
+ customPillRenderer
64
+ }) => {
65
+ const pillRefs = (0, import_react.useMemo)(() => {
66
+ const refs = [];
67
+ for (let i = 0; i < filters.length; i += 1) refs.push(import_react.default.createRef());
68
+ return refs;
69
+ }, [filters.length]);
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: filters.map(({ id: column, type, value }, index) => {
71
+ const columnHeader = columns.find((col) => col.accessor === column)?.Header;
72
+ let Component = () => null;
73
+ const filterType = type;
74
+ if (customPillRenderers?.[column]) {
75
+ Component = customPillRenderers[column];
76
+ } else if (customPillRenderer) {
77
+ Component = customPillRenderer;
78
+ } else if (filterType in pillRenderMapper) {
79
+ Component = pillRenderMapper[filterType];
80
+ }
81
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
82
+ Component,
83
+ {
84
+ columnHeader: typeof columnHeader === "string" ? columnHeader : column,
85
+ column,
86
+ value,
87
+ filters,
88
+ onFiltersChange,
89
+ innerRef: pillRefs[index],
90
+ onPillRemove
91
+ },
92
+ column
93
+ );
94
+ }) });
95
+ };
96
+ //# sourceMappingURL=PillsFromDataTableFilters.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/exported-related/FilterBar/PillsFromDataTableFilters.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport React, { useMemo } from 'react';\nimport {\n DateRangePill,\n DateSwitcherPill,\n FreeTextSearchPillPill,\n MultiSelectPill,\n NumberRangePill,\n SelectPill,\n SingleDatePill,\n} from '../../parts/FilterBar/components/index.js';\nimport type { DSDataTableT } from '../../react-desc-prop-types.js';\nimport { FILTER_TYPES } from '../FilterTypes.js';\n\nconst pillRenderMapper = {\n [FILTER_TYPES.SELECT]: SelectPill,\n [FILTER_TYPES.SELECT_V2]: SelectPill,\n [FILTER_TYPES.MULTI_SELECT]: MultiSelectPill,\n [FILTER_TYPES.MULTI_SELECT_V2]: MultiSelectPill,\n [FILTER_TYPES.SINGLE_DATE]: SingleDatePill,\n [FILTER_TYPES.SINGLE_DATE_V2]: SingleDatePill,\n [FILTER_TYPES.DATE_RANGE]: DateRangePill,\n [FILTER_TYPES.DATE_RANGE_V2]: DateRangePill,\n [FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill,\n [FILTER_TYPES.DATE_SWITCHER_V2]: DateSwitcherPill,\n [FILTER_TYPES.NUMBER_RANGE]: NumberRangePill,\n [FILTER_TYPES.NUMBER_RANGE_V2]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE]: NumberRangePill,\n [FILTER_TYPES.CURRENCY_RANGE_V2]: NumberRangePill,\n [FILTER_TYPES.FREE_TEXT_SEARCH]: FreeTextSearchPillPill,\n [FILTER_TYPES.FREE_TEXT_SEARCH_V2]: FreeTextSearchPillPill,\n} as const;\n\ninterface PillsFromDataTableFiltersProps {\n filters: DSDataTableT.Filter[];\n columns: DSDataTableT.Column[];\n onFiltersChange: (filters: DSDataTableT.Filter[]) => void;\n onPillRemove?: (remove: () => void) => void;\n customPillRenderers?: Record<string, React.ComponentType<DSDataTableT.FilterPillProps<unknown>>>;\n customPillRenderer?: React.ComponentType<DSDataTableT.FilterPillProps<unknown>>;\n}\n\nexport const PillsFromDataTableFilters: React.FC<PillsFromDataTableFiltersProps> = ({\n filters,\n columns,\n\n onFiltersChange,\n onPillRemove,\n customPillRenderers,\n customPillRenderer,\n}) => {\n const pillRefs = useMemo(() => {\n const refs: React.RefObject<HTMLElement>[] = [];\n for (let i = 0; i < filters.length; i += 1) refs.push(React.createRef());\n return refs;\n }, [filters.length]);\n return (\n <>\n {filters.map(({ id: column, type, value }, index) => {\n const columnHeader = columns.find((col) => col.accessor === column)?.Header;\n let Component:\n | TypescriptHelpersT.ObjectValues<typeof pillRenderMapper>\n | React.ComponentType<DSDataTableT.FilterPillProps<unknown>> = () => null;\n\n const filterType = type;\n if (customPillRenderers?.[column]) {\n Component = customPillRenderers[column];\n } else if (customPillRenderer) {\n Component = customPillRenderer;\n } else if (filterType in pillRenderMapper) {\n Component = pillRenderMapper[filterType as keyof typeof pillRenderMapper];\n }\n\n return (\n <Component\n key={column}\n columnHeader={typeof columnHeader === 'string' ? columnHeader : column}\n column={column}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n value={value as any}\n filters={filters}\n onFiltersChange={onFiltersChange}\n innerRef={pillRefs[index]}\n onPillRemove={onPillRemove}\n />\n );\n })}\n </>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADyDnB;AAxDJ,mBAA+B;AAC/B,wBAQO;AAEP,yBAA6B;AAE7B,MAAM,mBAAmB;AAAA,EACvB,CAAC,gCAAa,MAAM,GAAG;AAAA,EACvB,CAAC,gCAAa,SAAS,GAAG;AAAA,EAC1B,CAAC,gCAAa,YAAY,GAAG;AAAA,EAC7B,CAAC,gCAAa,eAAe,GAAG;AAAA,EAChC,CAAC,gCAAa,WAAW,GAAG;AAAA,EAC5B,CAAC,gCAAa,cAAc,GAAG;AAAA,EAC/B,CAAC,gCAAa,UAAU,GAAG;AAAA,EAC3B,CAAC,gCAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,gCAAa,aAAa,GAAG;AAAA,EAC9B,CAAC,gCAAa,gBAAgB,GAAG;AAAA,EACjC,CAAC,gCAAa,YAAY,GAAG;AAAA,EAC7B,CAAC,gCAAa,eAAe,GAAG;AAAA,EAChC,CAAC,gCAAa,cAAc,GAAG;AAAA,EAC/B,CAAC,gCAAa,iBAAiB,GAAG;AAAA,EAClC,CAAC,gCAAa,gBAAgB,GAAG;AAAA,EACjC,CAAC,gCAAa,mBAAmB,GAAG;AACtC;AAWO,MAAM,4BAAsE,CAAC;AAAA,EAClF;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,eAAW,sBAAQ,MAAM;AAC7B,UAAM,OAAuC,CAAC;AAC9C,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,EAAG,MAAK,KAAK,aAAAA,QAAM,UAAU,CAAC;AACvE,WAAO;AAAA,EACT,GAAG,CAAC,QAAQ,MAAM,CAAC;AACnB,SACE,2EACG,kBAAQ,IAAI,CAAC,EAAE,IAAI,QAAQ,MAAM,MAAM,GAAG,UAAU;AACnD,UAAM,eAAe,QAAQ,KAAK,CAAC,QAAQ,IAAI,aAAa,MAAM,GAAG;AACrE,QAAI,YAE6D,MAAM;AAEvE,UAAM,aAAa;AACnB,QAAI,sBAAsB,MAAM,GAAG;AACjC,kBAAY,oBAAoB,MAAM;AAAA,IACxC,WAAW,oBAAoB;AAC7B,kBAAY;AAAA,IACd,WAAW,cAAc,kBAAkB;AACzC,kBAAY,iBAAiB,UAA2C;AAAA,IAC1E;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,cAAc,OAAO,iBAAiB,WAAW,eAAe;AAAA,QAChE;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,SAAS,KAAK;AAAA,QACxB;AAAA;AAAA,MARK;AAAA,IASP;AAAA,EAEJ,CAAC,GACH;AAEJ;",
6
+ "names": ["React"]
7
+ }
@@ -29,10 +29,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
29
29
  var FilterBar_exports = {};
30
30
  __export(FilterBar_exports, {
31
31
  FilterBarDropdownMenu: () => import_FilterBarDropdownMenu.FilterBarDropdownMenu,
32
- FilterMenuButton: () => import_FilterMenuButton.FilterMenuButton
32
+ FilterMenuButton: () => import_FilterMenuButton.FilterMenuButton,
33
+ PillsFromDataTableFilters: () => import_PillsFromDataTableFilters.PillsFromDataTableFilters
33
34
  });
34
35
  module.exports = __toCommonJS(FilterBar_exports);
35
36
  var React = __toESM(require("react"));
36
37
  var import_FilterBarDropdownMenu = require("./FilterBarDropdownMenu.js");
37
38
  var import_FilterMenuButton = require("./FilterMenuButton.js");
39
+ var import_PillsFromDataTableFilters = require("./PillsFromDataTableFilters.js");
38
40
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/exported-related/FilterBar/index.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export { FilterBarDropdownMenu } from './FilterBarDropdownMenu.js';\nexport { FilterMenuButton } from './FilterMenuButton.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mCAAsC;AACtC,8BAAiC;",
4
+ "sourcesContent": ["export { FilterBarDropdownMenu } from './FilterBarDropdownMenu.js';\nexport { FilterMenuButton } from './FilterMenuButton.js';\nexport { PillsFromDataTableFilters } from './PillsFromDataTableFilters.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mCAAsC;AACtC,8BAAiC;AACjC,uCAA0C;",
6
6
  "names": []
7
7
  }
@@ -33,6 +33,7 @@ __export(exported_related_exports, {
33
33
  FilterBarDropdownMenu: () => import_FilterBar.FilterBarDropdownMenu,
34
34
  FilterMenuButton: () => import_FilterBar.FilterMenuButton,
35
35
  FilterPopover: () => import_FilterPopover.FilterPopover,
36
+ PillsFromDataTableFilters: () => import_FilterBar.PillsFromDataTableFilters,
36
37
  ROW_VARIANTS: () => import_RowVariants.ROW_VARIANTS,
37
38
  ROW_VARIANT_COMPACT_KEY: () => import_RowVariants.ROW_VARIANT_COMPACT_KEY,
38
39
  ROW_VARIANT_KEY: () => import_RowVariants.ROW_VARIANT_KEY,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/exported-related/index.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export { FilterPopover } from './FilterPopover/index.js';\nexport { EditableCell } from './EditableCell.js';\nexport { Toolbar } from './Toolbar/index.js';\nexport { groupBy } from './groupBy.js';\nexport { FILTER_TYPES } from './FilterTypes.js';\nexport { ROW_VARIANTS, ROW_VARIANT_KEY, ROW_VARIANT_COMPACT_KEY } from './RowVariants.js';\nexport {\n applyOutOfTheBoxFilters,\n singleDateFilterFn,\n singleSelectFilterFn,\n multiSelectFilterFn,\n numberRangeFilterFn,\n currencyRangeFilterFn,\n dateRangeFilterFn,\n} from './Filters/index.js';\nexport { FilterBarDropdownMenu, FilterMenuButton } from './FilterBar/index.js';\nexport { SkeletonCell, SkeletonHeaderCell } from './Skeleton/index.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,2BAA8B;AAC9B,0BAA6B;AAC7B,qBAAwB;AACxB,qBAAwB;AACxB,yBAA6B;AAC7B,yBAAuE;AACvE,qBAQO;AACP,uBAAwD;AACxD,sBAAiD;",
4
+ "sourcesContent": ["export { FilterPopover } from './FilterPopover/index.js';\nexport { EditableCell } from './EditableCell.js';\nexport { Toolbar } from './Toolbar/index.js';\nexport { groupBy } from './groupBy.js';\nexport { FILTER_TYPES } from './FilterTypes.js';\nexport { ROW_VARIANTS, ROW_VARIANT_KEY, ROW_VARIANT_COMPACT_KEY } from './RowVariants.js';\nexport {\n applyOutOfTheBoxFilters,\n singleDateFilterFn,\n singleSelectFilterFn,\n multiSelectFilterFn,\n numberRangeFilterFn,\n currencyRangeFilterFn,\n dateRangeFilterFn,\n} from './Filters/index.js';\nexport { FilterBarDropdownMenu, FilterMenuButton, PillsFromDataTableFilters } from './FilterBar/index.js';\nexport { SkeletonCell, SkeletonHeaderCell } from './Skeleton/index.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,2BAA8B;AAC9B,0BAA6B;AAC7B,qBAAwB;AACxB,qBAAwB;AACxB,yBAA6B;AAC7B,yBAAuE;AACvE,qBAQO;AACP,uBAAmF;AACnF,sBAAiD;",
6
6
  "names": []
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -41,6 +41,7 @@ __export(index_exports, {
41
41
  FilterMenuButton: () => import_exported_related.FilterMenuButton,
42
42
  FilterPopover: () => import_exported_related.FilterPopover,
43
43
  INTERNAL_COLUMNS: () => import_Columns.INTERNAL_COLUMNS,
44
+ PillsFromDataTableFilters: () => import_exported_related.PillsFromDataTableFilters,
44
45
  ROW_VARIANTS: () => import_exported_related.ROW_VARIANTS,
45
46
  ROW_VARIANT_COMPACT_KEY: () => import_exported_related.ROW_VARIANT_COMPACT_KEY,
46
47
  ROW_VARIANT_KEY: () => import_exported_related.ROW_VARIANT_KEY,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export { DataTable, DataTableWithSchema } from './DataTable.js';\n\nexport {\n FilterPopover,\n EditableCell,\n Toolbar,\n groupBy,\n FILTER_TYPES,\n ROW_VARIANTS,\n ROW_VARIANT_KEY,\n ROW_VARIANT_COMPACT_KEY,\n applyOutOfTheBoxFilters,\n singleDateFilterFn,\n singleSelectFilterFn,\n multiSelectFilterFn,\n numberRangeFilterFn,\n currencyRangeFilterFn,\n dateRangeFilterFn,\n FilterBarDropdownMenu,\n FilterMenuButton,\n SkeletonCell,\n SkeletonHeaderCell,\n} from './exported-related/index.js';\n\nexport {\n actionColumn,\n expandRowColumn,\n multiSelectColumn,\n singleSelectColumn,\n dragHandleColumn,\n INTERNAL_COLUMNS,\n} from './addons/Columns/index.js';\n\nexport type { DSDataTableT } from './react-desc-prop-types.js';\n\nexport { useWholeStore } from './configs/useStore/useStore.js';\n\nexport {\n DATA_TABLE_DATA_TESTID,\n DATA_TABLE_SLOTS,\n DSDataTableDataTestIds,\n DSDataTableName,\n DSDataTableSlots,\n} from './constants/index.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAA+C;AAE/C,8BAoBO;AAEP,qBAOO;AAIP,sBAA8B;AAE9B,uBAMO;",
4
+ "sourcesContent": ["export { DataTable, DataTableWithSchema } from './DataTable.js';\n\nexport {\n FilterPopover,\n EditableCell,\n Toolbar,\n groupBy,\n FILTER_TYPES,\n ROW_VARIANTS,\n ROW_VARIANT_KEY,\n ROW_VARIANT_COMPACT_KEY,\n applyOutOfTheBoxFilters,\n singleDateFilterFn,\n singleSelectFilterFn,\n multiSelectFilterFn,\n numberRangeFilterFn,\n currencyRangeFilterFn,\n dateRangeFilterFn,\n FilterBarDropdownMenu,\n FilterMenuButton,\n PillsFromDataTableFilters,\n SkeletonCell,\n SkeletonHeaderCell,\n} from './exported-related/index.js';\n\nexport {\n actionColumn,\n expandRowColumn,\n multiSelectColumn,\n singleSelectColumn,\n dragHandleColumn,\n INTERNAL_COLUMNS,\n} from './addons/Columns/index.js';\n\nexport type { DSDataTableT } from './react-desc-prop-types.js';\n\nexport { useWholeStore } from './configs/useStore/useStore.js';\n\nexport {\n DATA_TABLE_DATA_TESTID,\n DATA_TABLE_SLOTS,\n DSDataTableDataTestIds,\n DSDataTableName,\n DSDataTableSlots,\n} from './constants/index.js';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAA+C;AAE/C,8BAqBO;AAEP,qBAOO;AAIP,sBAA8B;AAE9B,uBAMO;",
6
6
  "names": []
7
7
  }
@@ -36,21 +36,36 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = require("react");
37
37
  var import_ds_pills_v2 = require("@elliemae/ds-pills-v2");
38
38
  const format = (value) => value?.replace(/-/g, "/");
39
- const DateRangePill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef }) => {
39
+ const DateRangePill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef, onPillRemove }) => {
40
+ const removeFilter = (0, import_react.useCallback)(
41
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
42
+ [onFiltersChange, filters, column]
43
+ );
40
44
  const handleOnRemove = (0, import_react.useCallback)(() => {
45
+ if (onPillRemove) {
46
+ onPillRemove(removeFilter);
47
+ return;
48
+ }
41
49
  if (prevRef?.current) prevRef.current.focus();
42
- else nextRef.current?.focus();
43
- onFiltersChange(filters.filter((filter) => filter.id !== column));
44
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
50
+ else nextRef?.current?.focus();
51
+ removeFilter();
52
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
53
+ const formattedDateRange = (0, import_react.useMemo)(
54
+ () => value?.startDate && value?.endDate ? `${format(value.startDate)} - ${format(value.endDate)}` : "",
55
+ [value]
56
+ );
45
57
  return value?.startDate && value?.endDate ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_pills_v2.DSPillGroupV2, { children: [
46
58
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "label", label: columnHeader }),
47
59
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
48
60
  import_ds_pills_v2.DSPillV2,
49
61
  {
50
62
  type: "removable",
51
- label: `${format(value.startDate)} - ${format(value.endDate)}`,
63
+ label: formattedDateRange,
52
64
  onRemove: handleOnRemove,
53
- innerRef
65
+ innerRef,
66
+ dsPillPillButton: {
67
+ dsButtonRoot: { "aria-label": `Remove ${formattedDateRange} from ${columnHeader}` }
68
+ }
54
69
  }
55
70
  )
56
71
  ] }) : null;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/parts/FilterBar/components/DateRangePill.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADgBnB;AAhBJ,mBAAmC;AACnC,yBAAwC;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,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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 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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADgCnB;AAhCJ,mBAA4C;AAC5C,yBAAwC;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,mBAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,qBAAiB,0BAAY,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,yBAAqB;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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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
  }
@@ -36,21 +36,37 @@ var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = require("react");
37
37
  var import_ds_pills_v2 = require("@elliemae/ds-pills-v2");
38
38
  const format = (value) => value?.replace(/-/g, "/");
39
- const DateSwitcherPill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef }) => {
39
+ const DateSwitcherPill = ({ columnHeader, column, value, filters, onFiltersChange, prevRef, innerRef, nextRef, onPillRemove }) => {
40
+ const removeFilter = (0, import_react.useCallback)(
41
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
42
+ [onFiltersChange, filters, column]
43
+ );
40
44
  const handleOnRemove = (0, import_react.useCallback)(() => {
45
+ if (onPillRemove) {
46
+ onPillRemove(removeFilter);
47
+ return;
48
+ }
41
49
  if (prevRef?.current) prevRef.current.focus();
42
- else nextRef.current?.focus();
43
- onFiltersChange(filters.filter((filter) => filter.id !== column));
44
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
50
+ else nextRef?.current?.focus();
51
+ removeFilter();
52
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
53
+ const formattedDateSwitcher = (0, import_react.useMemo)(() => {
54
+ if (!value?.startDate) return "";
55
+ if (value.isDateRange && value?.endDate) return `${format(value.startDate)} - ${format(value.endDate)}`;
56
+ return format(value.startDate);
57
+ }, [value]);
45
58
  return value?.startDate && value?.endDate ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_pills_v2.DSPillGroupV2, { children: [
46
59
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "label", label: columnHeader }),
47
60
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
48
61
  import_ds_pills_v2.DSPillV2,
49
62
  {
50
63
  type: "removable",
51
- label: value.isDateRange ? `${format(value.startDate)} - ${format(value.endDate)}` : format(value.startDate),
64
+ label: formattedDateSwitcher,
52
65
  onRemove: handleOnRemove,
53
- innerRef
66
+ innerRef,
67
+ dsPillPillButton: {
68
+ dsButtonRoot: { "aria-label": `Remove ${formattedDateSwitcher} from ${columnHeader}` }
69
+ }
54
70
  }
55
71
  )
56
72
  ] }) : null;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/parts/FilterBar/components/DateSwitcherPill.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADgBnB;AAhBJ,mBAAmC;AACnC,yBAAwC;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,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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 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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD+BnB;AA/BJ,mBAA4C;AAC5C,yBAAwC;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,mBAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,qBAAiB,0BAAY,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,4BAAwB,sBAAQ,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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
  }
@@ -43,16 +43,36 @@ const FreeTextSearchPillPill = ({
43
43
  onFiltersChange,
44
44
  prevRef,
45
45
  innerRef,
46
- nextRef
46
+ nextRef,
47
+ onPillRemove
47
48
  }) => {
49
+ const removeFilter = (0, import_react.useCallback)(
50
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
51
+ [onFiltersChange, filters, column]
52
+ );
48
53
  const handleOnRemove = (0, import_react.useCallback)(() => {
54
+ if (onPillRemove) {
55
+ onPillRemove(removeFilter);
56
+ return;
57
+ }
49
58
  if (prevRef?.current) prevRef.current.focus();
50
- else nextRef.current?.focus();
51
- onFiltersChange(filters.filter((filter) => filter.id !== column));
52
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
59
+ else nextRef?.current?.focus();
60
+ removeFilter();
61
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
53
62
  return value ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_pills_v2.DSPillGroupV2, { children: [
54
63
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "label", label: columnHeader }),
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "removable", label: value, onRemove: handleOnRemove, innerRef })
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
65
+ import_ds_pills_v2.DSPillV2,
66
+ {
67
+ type: "removable",
68
+ label: value,
69
+ onRemove: handleOnRemove,
70
+ innerRef,
71
+ dsPillPillButton: {
72
+ dsButtonRoot: { "aria-label": `Remove ${value} from ${columnHeader}` }
73
+ }
74
+ }
75
+ )
56
76
  ] }) : null;
57
77
  };
58
78
  //# sourceMappingURL=FreeTextSearchPill.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/parts/FilterBar/components/FreeTextSearchPill.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqBnB;AArBJ,mBAAmC;AACnC,yBAAwC;AAGjC,MAAM,yBAAoF,CAAC;AAAA,EAChG;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,4CAAC,+BAAS,MAAK,aAAY,OAAO,OAAO,UAAU,gBAAgB,UAAoB;AAAA,KACzF,IACE;AACN;",
4
+ "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADiCnB;AAjCJ,mBAAmC;AACnC,yBAAwC;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,mBAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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
  }
@@ -44,7 +44,8 @@ const MultiSelectPill = ({
44
44
  onFiltersChange,
45
45
  prevRef,
46
46
  innerRef,
47
- nextRef
47
+ nextRef,
48
+ onPillRemove
48
49
  }) => {
49
50
  const multiSelectedValue = value;
50
51
  const handleOnRemove = (0, import_react.useCallback)(
@@ -54,13 +55,15 @@ const MultiSelectPill = ({
54
55
  const newFilterValue = multiSelectedValue.filter((val) => val.dsId !== valToRemove.dsId);
55
56
  newFilters[filterIndex].value = newFilterValue;
56
57
  if (newFilterValue.length === 0) {
57
- if (prevRef?.current) prevRef.current.focus();
58
- else nextRef.current?.focus();
58
+ if (onPillRemove) {
59
+ onPillRemove(() => onFiltersChange(newFilters));
60
+ } else if (prevRef?.current) prevRef.current.focus();
61
+ else nextRef?.current?.focus();
59
62
  newFilters.splice(filterIndex, 1);
60
63
  }
61
64
  onFiltersChange(newFilters);
62
65
  },
63
- [filters, multiSelectedValue, onFiltersChange, column, prevRef, nextRef]
66
+ [filters, multiSelectedValue, onFiltersChange, onPillRemove, column, prevRef, nextRef]
64
67
  );
65
68
  return multiSelectedValue?.length ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_pills_v2.DSPillGroupV2, { children: [
66
69
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "label", label: columnHeader }),
@@ -70,7 +73,10 @@ const MultiSelectPill = ({
70
73
  type: "removable",
71
74
  label: val.label,
72
75
  onRemove: () => handleOnRemove(val),
73
- innerRef: index === multiSelectedValue.length - 1 ? innerRef : void 0
76
+ innerRef: index === multiSelectedValue.length - 1 ? innerRef : void 0,
77
+ dsPillPillButton: {
78
+ dsButtonRoot: { "aria-label": `Remove ${val.label} from ${columnHeader}` }
79
+ }
74
80
  },
75
81
  val.dsId
76
82
  ))
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/parts/FilterBar/components/MultiSelectPill.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsCnB;AAtCJ,mBAAmC;AACnC,uBAA0B;AAC1B,yBAAwC;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,qBAAiB;AAAA,IACrB,CAAC,gBAA4C;AAC3C,YAAM,iBAAa,4BAAU,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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 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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADwCnB;AAxCJ,mBAAmC;AACnC,uBAA0B;AAC1B,yBAAwC;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,qBAAiB;AAAA,IACrB,CAAC,gBAA4C;AAC3C,YAAM,iBAAa,4BAAU,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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
  }
@@ -43,16 +43,39 @@ const NumberRangePill = ({
43
43
  onFiltersChange,
44
44
  prevRef,
45
45
  innerRef,
46
- nextRef
46
+ nextRef,
47
+ onPillRemove
47
48
  }) => {
49
+ const removeFilter = (0, import_react.useCallback)(
50
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
51
+ [onFiltersChange, filters, column]
52
+ );
48
53
  const handleOnRemove = (0, import_react.useCallback)(() => {
54
+ if (onPillRemove) {
55
+ onPillRemove(removeFilter);
56
+ return;
57
+ }
49
58
  if (prevRef?.current) prevRef.current.focus();
50
- else nextRef.current?.focus();
51
- onFiltersChange(filters.filter((filter) => filter.id !== column));
52
- }, [onFiltersChange, filters, column, prevRef, nextRef]);
59
+ else nextRef?.current?.focus();
60
+ removeFilter();
61
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
62
+ const formattedRange = (0, import_react.useMemo)(() => {
63
+ if (!value?.from) return "";
64
+ if (value?.to) return `${value.from} - ${value.to}`;
65
+ return value.from;
66
+ }, [value]);
53
67
  return (value?.from ?? "") !== "" && (value?.to ?? "") !== "" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_pills_v2.DSPillGroupV2, { children: [
54
68
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "label", label: columnHeader }),
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "removable", label: `${value.from} - ${value.to}`, onRemove: handleOnRemove, innerRef })
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
70
+ import_ds_pills_v2.DSPillV2,
71
+ {
72
+ type: "removable",
73
+ label: formattedRange,
74
+ onRemove: handleOnRemove,
75
+ innerRef,
76
+ dsPillPillButton: { dsButtonRoot: { "aria-label": `Remove ${formattedRange} from ${columnHeader}` } }
77
+ }
78
+ )
56
79
  ] }) : null;
57
80
  };
58
81
  //# sourceMappingURL=NumberRangePill.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/parts/FilterBar/components/NumberRangePill.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADqBnB;AArBJ,mBAAmC;AACnC,yBAAwC;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,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,4CAAC,+BAAS,MAAK,aAAY,OAAO,GAAG,MAAM,IAAI,MAAM,MAAM,EAAE,IAAI,UAAU,gBAAgB,UAAoB;AAAA,KACjH,IACE;AACN;",
4
+ "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADuCnB;AAvCJ,mBAA4C;AAC5C,yBAAwC;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,mBAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,qBAAiB,0BAAY,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,qBAAiB,sBAAQ,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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
  }
@@ -43,16 +43,36 @@ const SelectPill = ({
43
43
  onFiltersChange,
44
44
  prevRef,
45
45
  innerRef,
46
- nextRef
46
+ nextRef,
47
+ onPillRemove
47
48
  }) => {
49
+ const removeFilter = (0, import_react.useCallback)(
50
+ () => onFiltersChange(filters.filter((filter) => filter.id !== column)),
51
+ [onFiltersChange, filters, column]
52
+ );
48
53
  const handleOnRemove = (0, import_react.useCallback)(() => {
54
+ if (onPillRemove) {
55
+ onPillRemove(removeFilter);
56
+ return;
57
+ }
49
58
  if (prevRef?.current) prevRef.current.focus();
50
- else nextRef.current?.focus();
51
- onFiltersChange(filters.filter((filter) => filter.id !== column));
52
- }, [onFiltersChange, filters, prevRef, nextRef, column]);
59
+ else nextRef?.current?.focus();
60
+ removeFilter();
61
+ }, [onPillRemove, removeFilter, prevRef, nextRef]);
53
62
  return value ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_pills_v2.DSPillGroupV2, { children: [
54
63
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "label", label: columnHeader }),
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_pills_v2.DSPillV2, { type: "removable", label: value.label, onRemove: handleOnRemove, innerRef })
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
65
+ import_ds_pills_v2.DSPillV2,
66
+ {
67
+ type: "removable",
68
+ label: value.label,
69
+ onRemove: handleOnRemove,
70
+ innerRef,
71
+ dsPillPillButton: {
72
+ dsButtonRoot: { "aria-label": `Remove ${value.label} from ${columnHeader}` }
73
+ }
74
+ }
75
+ )
56
76
  ] }) : null;
57
77
  };
58
78
  //# sourceMappingURL=SelectPill.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/parts/FilterBar/components/SelectPill.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsBnB;AAtBJ,mBAAmC;AACnC,yBAAwC;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,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,MAAK,SAAQ,OAAO,cAAc;AAAA,IAC5C,4CAAC,+BAAS,MAAK,aAAY,OAAO,MAAM,OAAO,UAAU,gBAAgB,UAAoB;AAAA,KAC/F,IACE;AACN;",
4
+ "sourcesContent": ["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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkCnB;AAlCJ,mBAAmC;AACnC,yBAAwC;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,mBAAe;AAAA,IACnB,MAAM,gBAAgB,QAAQ,OAAO,CAAC,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,IACtE,CAAC,iBAAiB,SAAS,MAAM;AAAA,EACnC;AAEA,QAAM,qBAAiB,0BAAY,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,6CAAC,oCACC;AAAA,gDAAC,+BAAS,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
  }