@elliemae/ds-data-table 3.3.1 → 3.4.0-next.0

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 (121) hide show
  1. package/dist/cjs/DataTableContext.js +2 -16
  2. package/dist/cjs/DataTableContext.js.map +2 -2
  3. package/dist/cjs/DataTableSchema.js +0 -2
  4. package/dist/cjs/DataTableSchema.js.map +2 -2
  5. package/dist/cjs/addons/Columns/ColumnAction/ColumnAction.js.map +2 -2
  6. package/dist/cjs/addons/Columns/ColumnDragHandle/ColumnDragHandle.js.map +2 -2
  7. package/dist/cjs/addons/Columns/ColumnExpand/ColumnExpand.js +69 -68
  8. package/dist/cjs/addons/Columns/ColumnExpand/ColumnExpand.js.map +2 -2
  9. package/dist/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +32 -35
  10. package/dist/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js.map +2 -2
  11. package/dist/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +13 -18
  12. package/dist/cjs/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js.map +2 -2
  13. package/dist/cjs/addons/Columns/index.js +1 -7
  14. package/dist/cjs/addons/Columns/index.js.map +2 -2
  15. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js +1 -3
  16. package/dist/cjs/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  17. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js +1 -3
  18. package/dist/cjs/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  19. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +23 -3
  20. package/dist/cjs/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  21. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilter.js +55 -0
  22. package/dist/cjs/addons/Filters/Components/SelectFilter/MultiCreatableFilter.js.map +7 -0
  23. package/dist/cjs/addons/Filters/Components/SelectFilter/{utils.js → SingleCreatableFilter.js} +30 -16
  24. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleCreatableFilter.js.map +7 -0
  25. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +0 -1
  26. package/dist/cjs/addons/Filters/Components/SelectFilter/SingleSelectFilter.js.map +2 -2
  27. package/dist/cjs/addons/Filters/Components/index.js +2 -0
  28. package/dist/cjs/addons/Filters/Components/index.js.map +2 -2
  29. package/dist/cjs/configs/useRowFlattenization.js +4 -3
  30. package/dist/cjs/configs/useRowFlattenization.js.map +2 -2
  31. package/dist/cjs/configs/useTableColsWithAddons.js +18 -6
  32. package/dist/cjs/configs/useTableColsWithAddons.js.map +2 -2
  33. package/dist/cjs/exported-related/FilterTypes.js +2 -0
  34. package/dist/cjs/exported-related/FilterTypes.js.map +2 -2
  35. package/dist/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js +2 -2
  36. package/dist/cjs/exported-related/RowRenderer/DefaultRowContentRenderer.js.map +2 -2
  37. package/dist/cjs/exported-related/RowRenderer/useRowStyle.js.map +2 -2
  38. package/dist/cjs/helpers/addCellData.js +7 -3
  39. package/dist/cjs/helpers/addCellData.js.map +2 -2
  40. package/dist/cjs/helpers/getIdFromUniqueRowAccessor.js.map +2 -2
  41. package/dist/cjs/index.js +1 -0
  42. package/dist/cjs/index.js.map +2 -2
  43. package/dist/cjs/parts/DropIndicator.js +11 -11
  44. package/dist/cjs/parts/DropIndicator.js.map +2 -2
  45. package/dist/cjs/parts/Filters/index.js +2 -0
  46. package/dist/cjs/parts/Filters/index.js.map +2 -2
  47. package/dist/cjs/parts/HoC/SortableItemContext.js +0 -8
  48. package/dist/cjs/parts/HoC/SortableItemContext.js.map +2 -2
  49. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js +2 -2
  50. package/dist/cjs/parts/HoC/withConditionalDnDRowContext.js.map +2 -2
  51. package/dist/cjs/parts/HoC/withDnDSortableColumnContext.js +2 -1
  52. package/dist/cjs/parts/HoC/withDnDSortableColumnContext.js.map +2 -2
  53. package/dist/cjs/parts/RowVariants/types.js.map +1 -1
  54. package/dist/cjs/types/props.js +14 -0
  55. package/dist/cjs/types/props.js.map +2 -2
  56. package/dist/esm/DataTableContext.js +2 -16
  57. package/dist/esm/DataTableContext.js.map +2 -2
  58. package/dist/esm/DataTableSchema.js +0 -2
  59. package/dist/esm/DataTableSchema.js.map +2 -2
  60. package/dist/esm/addons/Columns/ColumnAction/ColumnAction.js.map +2 -2
  61. package/dist/esm/addons/Columns/ColumnDragHandle/ColumnDragHandle.js.map +2 -2
  62. package/dist/esm/addons/Columns/ColumnExpand/ColumnExpand.js +69 -68
  63. package/dist/esm/addons/Columns/ColumnExpand/ColumnExpand.js.map +2 -2
  64. package/dist/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +32 -35
  65. package/dist/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js.map +2 -2
  66. package/dist/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js +14 -19
  67. package/dist/esm/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.js.map +2 -2
  68. package/dist/esm/addons/Columns/index.js +1 -7
  69. package/dist/esm/addons/Columns/index.js.map +2 -2
  70. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js +2 -4
  71. package/dist/esm/addons/Filters/Components/CurrencyRangeFilter/index.js.map +2 -2
  72. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js +2 -4
  73. package/dist/esm/addons/Filters/Components/NumberRangeFilter/index.js.map +2 -2
  74. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js +24 -4
  75. package/dist/esm/addons/Filters/Components/SelectFilter/BaseSelectFilter.js.map +2 -2
  76. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilter.js +32 -0
  77. package/dist/esm/addons/Filters/Components/SelectFilter/MultiCreatableFilter.js.map +7 -0
  78. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilter.js +31 -0
  79. package/dist/esm/addons/Filters/Components/SelectFilter/SingleCreatableFilter.js.map +7 -0
  80. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js +0 -1
  81. package/dist/esm/addons/Filters/Components/SelectFilter/SingleSelectFilter.js.map +2 -2
  82. package/dist/esm/addons/Filters/Components/index.js +2 -0
  83. package/dist/esm/addons/Filters/Components/index.js.map +2 -2
  84. package/dist/esm/configs/useRowFlattenization.js +4 -3
  85. package/dist/esm/configs/useRowFlattenization.js.map +2 -2
  86. package/dist/esm/configs/useTableColsWithAddons.js +18 -6
  87. package/dist/esm/configs/useTableColsWithAddons.js.map +2 -2
  88. package/dist/esm/exported-related/FilterTypes.js +2 -0
  89. package/dist/esm/exported-related/FilterTypes.js.map +2 -2
  90. package/dist/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js +1 -1
  91. package/dist/esm/exported-related/RowRenderer/DefaultRowContentRenderer.js.map +2 -2
  92. package/dist/esm/exported-related/RowRenderer/useRowStyle.js.map +1 -1
  93. package/dist/esm/helpers/addCellData.js +7 -3
  94. package/dist/esm/helpers/addCellData.js.map +2 -2
  95. package/dist/esm/helpers/getIdFromUniqueRowAccessor.js.map +2 -2
  96. package/dist/esm/index.js +1 -0
  97. package/dist/esm/index.js.map +2 -2
  98. package/dist/esm/parts/DropIndicator.js +1 -1
  99. package/dist/esm/parts/DropIndicator.js.map +1 -1
  100. package/dist/esm/parts/Filters/index.js +5 -1
  101. package/dist/esm/parts/Filters/index.js.map +2 -2
  102. package/dist/esm/parts/HoC/SortableItemContext.js +0 -8
  103. package/dist/esm/parts/HoC/SortableItemContext.js.map +2 -2
  104. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js +1 -1
  105. package/dist/esm/parts/HoC/withConditionalDnDRowContext.js.map +1 -1
  106. package/dist/esm/parts/HoC/withDnDSortableColumnContext.js +2 -1
  107. package/dist/esm/parts/HoC/withDnDSortableColumnContext.js.map +2 -2
  108. package/dist/esm/types/props.js +10 -0
  109. package/dist/esm/types/props.js.map +3 -3
  110. package/package.json +18 -18
  111. package/dist/cjs/addons/Filters/Components/SelectFilter/components.js +0 -80
  112. package/dist/cjs/addons/Filters/Components/SelectFilter/components.js.map +0 -7
  113. package/dist/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +0 -86
  114. package/dist/cjs/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js.map +0 -7
  115. package/dist/cjs/addons/Filters/Components/SelectFilter/utils.js.map +0 -7
  116. package/dist/esm/addons/Filters/Components/SelectFilter/components.js +0 -57
  117. package/dist/esm/addons/Filters/Components/SelectFilter/components.js.map +0 -7
  118. package/dist/esm/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js +0 -63
  119. package/dist/esm/addons/Filters/Components/SelectFilter/useSelectFilterHandlers.js.map +0 -7
  120. package/dist/esm/addons/Filters/Components/SelectFilter/utils.js +0 -17
  121. package/dist/esm/addons/Filters/Components/SelectFilter/utils.js.map +0 -7
@@ -1,7 +1,8 @@
1
1
  import * as React from "react";
2
2
  import React2, { useMemo, useCallback } from "react";
3
- import { DSCheckbox } from "@elliemae/ds-form";
3
+ import { DSControlledCheckbox } from "@elliemae/ds-controlled-form";
4
4
  import { DATA_TESTID } from "../../../configs/constants";
5
+ const stopThePropagation = (e) => e.stopPropagation();
5
6
  const multiSelectColumn = {
6
7
  id: "multiSelecter",
7
8
  Header: ({ ctx }) => {
@@ -9,64 +10,60 @@ const multiSelectColumn = {
9
10
  tableProps: { onSelectionChange, selection, data, disabledRows },
10
11
  allDataFlattened
11
12
  } = ctx;
12
- const selectionKeyCount = Object.keys(selection).length;
13
+ const dtSelection = selection ?? {};
14
+ const selectionKeyCount = Object.keys(dtSelection).length;
13
15
  const currentGlobalState = useMemo(() => selectionKeyCount > 0 && selectionKeyCount < data.length ? "mixed" : selectionKeyCount > 0, [selectionKeyCount, data]);
14
- const newGlobalStateAfterToggle = useMemo(() => {
15
- let newState = false;
16
- if (currentGlobalState === false || currentGlobalState === "mixed")
17
- newState = true;
18
- return newState;
19
- }, [currentGlobalState]);
16
+ const newGlobalStateAfterToggle = useMemo(() => currentGlobalState !== true, [currentGlobalState]);
20
17
  const newSelection = useMemo(() => {
21
- if (newGlobalStateAfterToggle) {
22
- const nextSelection = {};
23
- allDataFlattened.forEach((datum) => {
24
- nextSelection[datum.uid] = !disabledRows[datum.uid];
25
- });
26
- return nextSelection;
27
- }
28
- return {};
18
+ if (!newGlobalStateAfterToggle)
19
+ return {};
20
+ return allDataFlattened.reduce((newSelectionObject, datum) => {
21
+ newSelectionObject[datum.uid] = !disabledRows[datum.uid];
22
+ return newSelectionObject;
23
+ }, {});
29
24
  }, [newGlobalStateAfterToggle, allDataFlattened, disabledRows]);
30
25
  const onChangeHandler = useCallback((e) => {
31
26
  onSelectionChange(newSelection, "All", e);
32
27
  }, [newSelection, onSelectionChange]);
33
- const PureHeaderCheckbox = useMemo(() => /* @__PURE__ */ React2.createElement(DSCheckbox, {
28
+ const ariaControls = useMemo(() => allDataFlattened.map((datum) => `data-table-checkbox-${datum.uid}`).join(" "), [allDataFlattened]);
29
+ return /* @__PURE__ */ React2.createElement(DSControlledCheckbox, {
30
+ "aria-controls": ariaControls,
34
31
  "data-testid": DATA_TESTID.DATA_TABLE_GLOBAL_CHECKBOX,
35
- title: "Toggle All Rows Selected",
32
+ "aria-label": "Toggle all rows selected",
36
33
  checked: currentGlobalState,
37
34
  onChange: onChangeHandler,
38
- tabIndex: "0",
39
35
  style: { cursor: "pointer" }
40
- }), [currentGlobalState, onChangeHandler]);
41
- return PureHeaderCheckbox;
36
+ });
42
37
  },
43
38
  Cell: ({ cell, row, isRowSelected, ctx }) => {
44
39
  const {
45
40
  tableProps: { onSelectionChange, selection, disabledRows }
46
41
  } = ctx;
47
42
  const { uid } = row;
48
- const selectedState = selection?.[uid];
49
- const PureCheckboxCell = useMemo(() => /* @__PURE__ */ React2.createElement("div", {
50
- onClick: (e) => e.stopPropagation()
51
- }, /* @__PURE__ */ React2.createElement(DSCheckbox, {
43
+ const selectedState = selection?.[uid] ?? false;
44
+ const onChangeHandler = useCallback((e) => {
45
+ const newState = !selectedState;
46
+ const newSelection = { ...selection, [uid]: newState };
47
+ if (!newState)
48
+ delete newSelection[uid];
49
+ onSelectionChange(newSelection, uid, e);
50
+ }, [onSelectionChange, selectedState, selection, uid]);
51
+ return /* @__PURE__ */ React2.createElement("div", {
52
+ role: "presentation",
53
+ onClick: stopThePropagation
54
+ }, /* @__PURE__ */ React2.createElement(DSControlledCheckbox, {
55
+ id: `data-table-checkbox-${uid}`,
52
56
  "data-testid": DATA_TESTID.DATA_TABLE_CHECKBOX,
53
- title: "Toggle Row Selected",
57
+ "aria-label": "Toggle row selected",
54
58
  "aria-checked": selectedState,
55
59
  "aria-disabled": false,
56
60
  checked: selectedState,
57
- onChange: (e) => {
58
- const newState = !selectedState;
59
- const newSelection = { ...selection, [uid]: newState };
60
- if (!newState)
61
- delete newSelection[uid];
62
- onSelectionChange(newSelection, uid, e);
63
- },
61
+ onChange: onChangeHandler,
64
62
  disabled: disabledRows[row.uid],
65
63
  innerRef: cell.ref,
66
64
  tabIndex: isRowSelected ? 0 : -1,
67
65
  style: { cursor: "pointer" }
68
- })), [selectedState, disabledRows, row.uid, cell.ref, isRowSelected, selection, uid, onSelectionChange]);
69
- return PureCheckboxCell;
66
+ }));
70
67
  },
71
68
  textWrap: "wrap",
72
69
  width: 32,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useMemo, useCallback } from 'react';\nimport { DSCheckbox } from '@elliemae/ds-form';\nimport { TypescriptColumn } from '../../../types/props';\nimport { DATA_TESTID } from '../../../configs/constants';\n\nexport const multiSelectColumn: TypescriptColumn = {\n // Build our multiSelecter column\n id: 'multiSelecter', // Make sure it has an ID\n Header: ({ ctx }) => {\n const {\n tableProps: { onSelectionChange, selection, data, disabledRows },\n allDataFlattened,\n } = ctx;\n\n const selectionKeyCount = Object.keys(selection).length;\n\n const currentGlobalState = useMemo(\n () => (selectionKeyCount > 0 && selectionKeyCount < data.length ? 'mixed' : selectionKeyCount > 0),\n [selectionKeyCount, data],\n );\n\n const newGlobalStateAfterToggle = useMemo(() => {\n // false -- toggles into --> true\n // mixed -- toggles into --> true\n // true -- toggles into --> false\n let newState = false;\n if (currentGlobalState === false || currentGlobalState === 'mixed') newState = true;\n return newState;\n }, [currentGlobalState]);\n\n const newSelection = useMemo(() => {\n if (newGlobalStateAfterToggle) {\n const nextSelection = {};\n allDataFlattened.forEach((datum) => {\n nextSelection[datum.uid] = !disabledRows[datum.uid];\n });\n return nextSelection;\n }\n return {};\n }, [newGlobalStateAfterToggle, allDataFlattened, disabledRows]);\n\n const onChangeHandler = useCallback(\n (e) => {\n onSelectionChange(newSelection, 'All', e);\n },\n [newSelection, onSelectionChange],\n );\n\n const PureHeaderCheckbox = useMemo(\n () => (\n <DSCheckbox\n data-testid={DATA_TESTID.DATA_TABLE_GLOBAL_CHECKBOX}\n title=\"Toggle All Rows Selected\"\n checked={currentGlobalState}\n onChange={onChangeHandler}\n tabIndex=\"0\"\n style={{ cursor: 'pointer' }}\n />\n ),\n [currentGlobalState, onChangeHandler],\n );\n return PureHeaderCheckbox;\n },\n Cell: ({ cell, row, isRowSelected, ctx }) => {\n const {\n tableProps: { onSelectionChange, selection, disabledRows },\n } = ctx;\n const { uid } = row;\n const selectedState = selection?.[uid];\n const PureCheckboxCell = useMemo(\n () => (\n <div onClick={(e) => e.stopPropagation()}>\n <DSCheckbox\n data-testid={DATA_TESTID.DATA_TABLE_CHECKBOX}\n title=\"Toggle Row Selected\"\n aria-checked={selectedState}\n aria-disabled={false}\n checked={selectedState}\n onChange={(e) => {\n const newState = !selectedState;\n const newSelection = { ...selection, [uid]: newState }; // we only want true and mixed values\n if (!newState) delete newSelection[uid]; // if newState is false, remove from the new selection\n onSelectionChange(newSelection, uid, e);\n }}\n disabled={disabledRows[row.uid]}\n innerRef={cell.ref}\n tabIndex={isRowSelected ? 0 : -1}\n style={{ cursor: 'pointer' }}\n />\n </div>\n ),\n [selectedState, disabledRows, row.uid, cell.ref, isRowSelected, selection, uid, onSelectionChange],\n );\n return PureCheckboxCell;\n },\n textWrap: 'wrap',\n width: 32,\n padding: 7,\n canResize: false,\n isFocuseable: false,\n disableDnD: true,\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AAEA;AAEO,MAAM,oBAAsC;AAAA,EAEjD,IAAI;AAAA,EACJ,QAAQ,CAAC,EAAE,UAAU;AACnB,UAAM;AAAA,MACJ,YAAY,EAAE,mBAAmB,WAAW,MAAM;AAAA,MAClD;AAAA,QACE;AAEJ,UAAM,oBAAoB,OAAO,KAAK,SAAS,EAAE;AAEjD,UAAM,qBAAqB,QACzB,MAAO,oBAAoB,KAAK,oBAAoB,KAAK,SAAS,UAAU,oBAAoB,GAChG,CAAC,mBAAmB,IAAI,CAC1B;AAEA,UAAM,4BAA4B,QAAQ,MAAM;AAI9C,UAAI,WAAW;AACf,UAAI,uBAAuB,SAAS,uBAAuB;AAAS,mBAAW;AAC/E,aAAO;AAAA,IACT,GAAG,CAAC,kBAAkB,CAAC;AAEvB,UAAM,eAAe,QAAQ,MAAM;AACjC,UAAI,2BAA2B;AAC7B,cAAM,gBAAgB,CAAC;AACvB,yBAAiB,QAAQ,CAAC,UAAU;AAClC,wBAAc,MAAM,OAAO,CAAC,aAAa,MAAM;AAAA,QACjD,CAAC;AACD,eAAO;AAAA,MACT;AACA,aAAO,CAAC;AAAA,IACV,GAAG,CAAC,2BAA2B,kBAAkB,YAAY,CAAC;AAE9D,UAAM,kBAAkB,YACtB,CAAC,MAAM;AACL,wBAAkB,cAAc,OAAO,CAAC;AAAA,IAC1C,GACA,CAAC,cAAc,iBAAiB,CAClC;AAEA,UAAM,qBAAqB,QACzB,MACE,qCAAC;AAAA,MACC,eAAa,YAAY;AAAA,MACzB,OAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAS;AAAA,MACT,OAAO,EAAE,QAAQ,UAAU;AAAA,KAC7B,GAEF,CAAC,oBAAoB,eAAe,CACtC;AACA,WAAO;AAAA,EACT;AAAA,EACA,MAAM,CAAC,EAAE,MAAM,KAAK,eAAe,UAAU;AAC3C,UAAM;AAAA,MACJ,YAAY,EAAE,mBAAmB,WAAW;AAAA,QAC1C;AACJ,UAAM,EAAE,QAAQ;AAChB,UAAM,gBAAgB,YAAY;AAClC,UAAM,mBAAmB,QACvB,MACE,qCAAC;AAAA,MAAI,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,OACrC,qCAAC;AAAA,MACC,eAAa,YAAY;AAAA,MACzB,OAAM;AAAA,MACN,gBAAc;AAAA,MACd,iBAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU,CAAC,MAAM;AACf,cAAM,WAAW,CAAC;AAClB,cAAM,eAAe,EAAE,GAAG,WAAW,CAAC,MAAM,SAAS;AACrD,YAAI,CAAC;AAAU,iBAAO,aAAa;AACnC,0BAAkB,cAAc,KAAK,CAAC;AAAA,MACxC;AAAA,MACA,UAAU,aAAa,IAAI;AAAA,MAC3B,UAAU,KAAK;AAAA,MACf,UAAU,gBAAgB,IAAI;AAAA,MAC9B,OAAO,EAAE,QAAQ,UAAU;AAAA,KAC7B,CACF,GAEF,CAAC,eAAe,cAAc,IAAI,KAAK,KAAK,KAAK,eAAe,WAAW,KAAK,iBAAiB,CACnG;AACA,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AACd;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useMemo, useCallback } from 'react';\nimport { DSControlledCheckbox } from '@elliemae/ds-controlled-form';\nimport { TypescriptColumn, TypescriptSelection } from '../../../types/props';\nimport { DATA_TESTID } from '../../../configs/constants';\n\nconst stopThePropagation = (e: React.MouseEvent) => e.stopPropagation();\n\nexport const multiSelectColumn: TypescriptColumn<HTMLInputElement> = {\n // Build our multiSelecter column\n id: 'multiSelecter', // Make sure it has an ID\n Header: ({ ctx }) => {\n const {\n tableProps: { onSelectionChange, selection, data, disabledRows },\n allDataFlattened,\n } = ctx;\n\n // We for sure have selection, so we just typecast it for TS reasons\n const dtSelection = selection ?? {};\n\n const selectionKeyCount = Object.keys(dtSelection).length;\n\n const currentGlobalState = useMemo(\n () => (selectionKeyCount > 0 && selectionKeyCount < data.length ? 'mixed' : selectionKeyCount > 0),\n [selectionKeyCount, data],\n );\n\n // global state toggling: false to true, mixed to true, true to false\n const newGlobalStateAfterToggle = useMemo(() => currentGlobalState !== true, [currentGlobalState]);\n\n const newSelection: TypescriptSelection = useMemo(() => {\n if (!newGlobalStateAfterToggle) return {};\n\n return allDataFlattened.reduce<TypescriptSelection>((newSelectionObject, datum) => {\n newSelectionObject[datum.uid] = !disabledRows[datum.uid];\n return newSelectionObject;\n }, {});\n }, [newGlobalStateAfterToggle, allDataFlattened, disabledRows]);\n\n const onChangeHandler = useCallback(\n (e: React.ChangeEvent) => {\n onSelectionChange(newSelection, 'All', e);\n },\n [newSelection, onSelectionChange],\n );\n\n const ariaControls = useMemo(\n () => allDataFlattened.map((datum) => `data-table-checkbox-${datum.uid}`).join(' '),\n [allDataFlattened],\n );\n\n return (\n <DSControlledCheckbox\n aria-controls={ariaControls}\n data-testid={DATA_TESTID.DATA_TABLE_GLOBAL_CHECKBOX}\n aria-label=\"Toggle all rows selected\"\n checked={currentGlobalState}\n onChange={onChangeHandler}\n style={{ cursor: 'pointer' }}\n />\n );\n },\n Cell: ({ cell, row, isRowSelected, ctx }) => {\n const {\n tableProps: { onSelectionChange, selection, disabledRows },\n } = ctx;\n const { uid } = row;\n const selectedState = selection?.[uid] ?? false;\n\n const onChangeHandler = useCallback(\n (e: React.ChangeEvent) => {\n const newState = !selectedState;\n const newSelection = { ...selection, [uid]: newState }; // we only want true and mixed values\n if (!newState) delete newSelection[uid]; // if newState is false, remove from the new selection\n onSelectionChange(newSelection, uid, e);\n },\n [onSelectionChange, selectedState, selection, uid],\n );\n\n return (\n <div role=\"presentation\" onClick={stopThePropagation}>\n <DSControlledCheckbox\n id={`data-table-checkbox-${uid}`}\n data-testid={DATA_TESTID.DATA_TABLE_CHECKBOX}\n aria-label=\"Toggle row selected\"\n aria-checked={selectedState}\n aria-disabled={false}\n checked={selectedState}\n onChange={onChangeHandler}\n disabled={disabledRows[row.uid]}\n innerRef={cell.ref}\n tabIndex={isRowSelected ? 0 : -1}\n style={{ cursor: 'pointer' }}\n />\n </div>\n );\n },\n textWrap: 'wrap',\n width: 32,\n padding: 7,\n canResize: false,\n isFocuseable: false,\n disableDnD: true,\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AAEA;AAEA,MAAM,qBAAqB,CAAC,MAAwB,EAAE,gBAAgB;AAE/D,MAAM,oBAAwD;AAAA,EAEnE,IAAI;AAAA,EACJ,QAAQ,CAAC,EAAE,UAAU;AACnB,UAAM;AAAA,MACJ,YAAY,EAAE,mBAAmB,WAAW,MAAM;AAAA,MAClD;AAAA,QACE;AAGJ,UAAM,cAAc,aAAa,CAAC;AAElC,UAAM,oBAAoB,OAAO,KAAK,WAAW,EAAE;AAEnD,UAAM,qBAAqB,QACzB,MAAO,oBAAoB,KAAK,oBAAoB,KAAK,SAAS,UAAU,oBAAoB,GAChG,CAAC,mBAAmB,IAAI,CAC1B;AAGA,UAAM,4BAA4B,QAAQ,MAAM,uBAAuB,MAAM,CAAC,kBAAkB,CAAC;AAEjG,UAAM,eAAoC,QAAQ,MAAM;AACtD,UAAI,CAAC;AAA2B,eAAO,CAAC;AAExC,aAAO,iBAAiB,OAA4B,CAAC,oBAAoB,UAAU;AACjF,2BAAmB,MAAM,OAAO,CAAC,aAAa,MAAM;AACpD,eAAO;AAAA,MACT,GAAG,CAAC,CAAC;AAAA,IACP,GAAG,CAAC,2BAA2B,kBAAkB,YAAY,CAAC;AAE9D,UAAM,kBAAkB,YACtB,CAAC,MAAyB;AACxB,wBAAkB,cAAc,OAAO,CAAC;AAAA,IAC1C,GACA,CAAC,cAAc,iBAAiB,CAClC;AAEA,UAAM,eAAe,QACnB,MAAM,iBAAiB,IAAI,CAAC,UAAU,uBAAuB,MAAM,KAAK,EAAE,KAAK,GAAG,GAClF,CAAC,gBAAgB,CACnB;AAEA,WACE,qCAAC;AAAA,MACC,iBAAe;AAAA,MACf,eAAa,YAAY;AAAA,MACzB,cAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO,EAAE,QAAQ,UAAU;AAAA,KAC7B;AAAA,EAEJ;AAAA,EACA,MAAM,CAAC,EAAE,MAAM,KAAK,eAAe,UAAU;AAC3C,UAAM;AAAA,MACJ,YAAY,EAAE,mBAAmB,WAAW;AAAA,QAC1C;AACJ,UAAM,EAAE,QAAQ;AAChB,UAAM,gBAAgB,YAAY,QAAQ;AAE1C,UAAM,kBAAkB,YACtB,CAAC,MAAyB;AACxB,YAAM,WAAW,CAAC;AAClB,YAAM,eAAe,EAAE,GAAG,WAAW,CAAC,MAAM,SAAS;AACrD,UAAI,CAAC;AAAU,eAAO,aAAa;AACnC,wBAAkB,cAAc,KAAK,CAAC;AAAA,IACxC,GACA,CAAC,mBAAmB,eAAe,WAAW,GAAG,CACnD;AAEA,WACE,qCAAC;AAAA,MAAI,MAAK;AAAA,MAAe,SAAS;AAAA,OAChC,qCAAC;AAAA,MACC,IAAI,uBAAuB;AAAA,MAC3B,eAAa,YAAY;AAAA,MACzB,cAAW;AAAA,MACX,gBAAc;AAAA,MACd,iBAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU,aAAa,IAAI;AAAA,MAC3B,UAAU,KAAK;AAAA,MACf,UAAU,gBAAgB,IAAI;AAAA,MAC9B,OAAO,EAAE,QAAQ,UAAU;AAAA,KAC7B,CACF;AAAA,EAEJ;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AACd;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
- import React2, { useMemo } from "react";
3
- import { DSRadio } from "@elliemae/ds-form";
2
+ import React2, { useCallback } from "react";
3
+ import { DSControlledRadio } from "@elliemae/ds-controlled-form";
4
4
  import { styled } from "@elliemae/ds-system";
5
5
  import { DATA_TESTID } from "../../../configs/constants";
6
6
  const CenteredContent = styled.div`
@@ -10,10 +10,6 @@ const CenteredContent = styled.div`
10
10
  justify-content: center;
11
11
  align-items: center;
12
12
  `;
13
- const StyledDSRadio = styled(DSRadio)`
14
- padding-bottom: 0;
15
- cursor: pointer;
16
- `;
17
13
  const singleSelectColumn = {
18
14
  id: "singleSelecter",
19
15
  Header: () => /* @__PURE__ */ React2.createElement("div", null),
@@ -22,24 +18,23 @@ const singleSelectColumn = {
22
18
  tableProps: { onSelectionChange, selection, disabledRows }
23
19
  } = ctx;
24
20
  const { uid } = row;
25
- const selectedState = selection?.[uid];
26
- const PureCheckBox = useMemo(() => /* @__PURE__ */ React2.createElement(CenteredContent, null, /* @__PURE__ */ React2.createElement(StyledDSRadio, {
27
- containerProps: {
28
- "aria-checked": selectedState,
29
- "aria-disabled": false,
30
- title: "Toggle Row Selected"
31
- },
21
+ const selectedState = !!selection?.[uid];
22
+ const onChangeHandler = useCallback((newValue, e) => {
23
+ onSelectionChange({ [uid]: !selectedState }, uid, e);
24
+ }, [onSelectionChange, selectedState, uid]);
25
+ return /* @__PURE__ */ React2.createElement(CenteredContent, null, /* @__PURE__ */ React2.createElement(DSControlledRadio, {
26
+ "aria-checked": selectedState,
27
+ "aria-disabled": disabledRows[row.uid],
28
+ title: "Toggle row selected",
29
+ "aria-label": "Toggle row selected",
32
30
  checked: selectedState,
33
- onChange: () => {
34
- onSelectionChange(!selectedState ? { [uid]: !selectedState } : {});
35
- },
31
+ onChange: onChangeHandler,
36
32
  "data-testid": DATA_TESTID.DATA_TABLE_RADIO,
37
33
  disabled: disabledRows[row.uid],
38
34
  innerRef: cell.ref,
39
- value: "",
35
+ value: uid,
40
36
  tabIndex: isRowSelected ? 0 : -1
41
- })), [selectedState, disabledRows, row.uid, cell.ref, isRowSelected, onSelectionChange, uid]);
42
- return PureCheckBox;
37
+ }));
43
38
  },
44
39
  textWrap: "wrap",
45
40
  width: 32,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/addons/Columns/ColumnSelectSingle/ColumnSelectSingle.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useMemo } from 'react';\nimport { DSRadio } from '@elliemae/ds-form';\nimport { styled } from '@elliemae/ds-system';\nimport { TypescriptColumn } from '../../../types/props';\nimport { DATA_TESTID } from '../../../configs/constants';\n\nconst CenteredContent = styled.div`\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: center;\n align-items: center;\n`;\nconst StyledDSRadio = styled(DSRadio)`\n padding-bottom: 0;\n cursor: pointer;\n`;\n\nexport const singleSelectColumn: TypescriptColumn = {\n // Build our singleSelecter column\n id: 'singleSelecter', // Make sure it has an ID\n // The header doesn't need anything for single selection\n Header: () => <div />,\n Cell: ({ cell, row, isRowSelected, ctx }) => {\n const {\n tableProps: { onSelectionChange, selection, disabledRows },\n } = ctx;\n const { uid } = row;\n const selectedState = selection?.[uid];\n\n const PureCheckBox = useMemo(\n () => (\n <CenteredContent>\n <StyledDSRadio\n containerProps={{\n 'aria-checked': selectedState,\n 'aria-disabled': false,\n title: 'Toggle Row Selected',\n }}\n checked={selectedState}\n onChange={() => {\n // in single select we only allow one item to be selected\n onSelectionChange(!selectedState ? { [uid]: !selectedState } : {});\n }}\n data-testid={DATA_TESTID.DATA_TABLE_RADIO}\n disabled={disabledRows[row.uid]}\n innerRef={cell.ref}\n value=\"\"\n tabIndex={isRowSelected ? 0 : -1}\n />\n </CenteredContent>\n ),\n [selectedState, disabledRows, row.uid, cell.ref, isRowSelected, onSelectionChange, uid],\n );\n return PureCheckBox;\n },\n textWrap: 'wrap',\n width: 32,\n padding: 4,\n canResize: false,\n isFocuseable: false,\n disableDnD: true,\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AAEA;AAEA,MAAM,kBAAkB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/B,MAAM,gBAAgB,OAAO,OAAO;AAAA;AAAA;AAAA;AAK7B,MAAM,qBAAuC;AAAA,EAElD,IAAI;AAAA,EAEJ,QAAQ,MAAM,qCAAC,WAAI;AAAA,EACnB,MAAM,CAAC,EAAE,MAAM,KAAK,eAAe,UAAU;AAC3C,UAAM;AAAA,MACJ,YAAY,EAAE,mBAAmB,WAAW;AAAA,QAC1C;AACJ,UAAM,EAAE,QAAQ;AAChB,UAAM,gBAAgB,YAAY;AAElC,UAAM,eAAe,QACnB,MACE,qCAAC,uBACC,qCAAC;AAAA,MACC,gBAAgB;AAAA,QACd,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,OAAO;AAAA,MACT;AAAA,MACA,SAAS;AAAA,MACT,UAAU,MAAM;AAEd,0BAAkB,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;AAAA,MACnE;AAAA,MACA,eAAa,YAAY;AAAA,MACzB,UAAU,aAAa,IAAI;AAAA,MAC3B,UAAU,KAAK;AAAA,MACf,OAAM;AAAA,MACN,UAAU,gBAAgB,IAAI;AAAA,KAChC,CACF,GAEF,CAAC,eAAe,cAAc,IAAI,KAAK,KAAK,KAAK,eAAe,mBAAmB,GAAG,CACxF;AACA,WAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AACd;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback } from 'react';\nimport { DSControlledRadio } from '@elliemae/ds-controlled-form';\nimport { styled } from '@elliemae/ds-system';\nimport { TypescriptColumn } from '../../../types/props';\nimport { DATA_TESTID } from '../../../configs/constants';\n\nconst CenteredContent = styled.div`\n display: flex;\n height: 100%;\n width: 100%;\n justify-content: center;\n align-items: center;\n`;\n\nexport const singleSelectColumn: TypescriptColumn<HTMLInputElement> = {\n // Build our singleSelecter column\n id: 'singleSelecter', // Make sure it has an ID\n // The header doesn't need anything for single selection\n Header: () => <div />,\n Cell: ({ cell, row, isRowSelected, ctx }) => {\n const {\n tableProps: { onSelectionChange, selection, disabledRows },\n } = ctx;\n const { uid } = row;\n const selectedState = !!selection?.[uid];\n\n const onChangeHandler = useCallback(\n (newValue: string, e: React.ChangeEvent) => {\n // in single select we only allow one item to be selected\n onSelectionChange({ [uid]: !selectedState }, uid, e);\n },\n [onSelectionChange, selectedState, uid],\n );\n\n return (\n <CenteredContent>\n <DSControlledRadio\n aria-checked={selectedState}\n aria-disabled={disabledRows[row.uid]}\n title=\"Toggle row selected\"\n aria-label=\"Toggle row selected\"\n checked={selectedState}\n onChange={onChangeHandler}\n data-testid={DATA_TESTID.DATA_TABLE_RADIO}\n disabled={disabledRows[row.uid]}\n innerRef={cell.ref}\n value={uid}\n tabIndex={isRowSelected ? 0 : -1}\n />\n </CenteredContent>\n );\n },\n textWrap: 'wrap',\n width: 32,\n padding: 4,\n canResize: false,\n isFocuseable: false,\n disableDnD: true,\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AAEA;AAEA,MAAM,kBAAkB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQxB,MAAM,qBAAyD;AAAA,EAEpE,IAAI;AAAA,EAEJ,QAAQ,MAAM,qCAAC,WAAI;AAAA,EACnB,MAAM,CAAC,EAAE,MAAM,KAAK,eAAe,UAAU;AAC3C,UAAM;AAAA,MACJ,YAAY,EAAE,mBAAmB,WAAW;AAAA,QAC1C;AACJ,UAAM,EAAE,QAAQ;AAChB,UAAM,gBAAgB,CAAC,CAAC,YAAY;AAEpC,UAAM,kBAAkB,YACtB,CAAC,UAAkB,MAAyB;AAE1C,wBAAkB,EAAE,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;AAAA,IACrD,GACA,CAAC,mBAAmB,eAAe,GAAG,CACxC;AAEA,WACE,qCAAC,uBACC,qCAAC;AAAA,MACC,gBAAc;AAAA,MACd,iBAAe,aAAa,IAAI;AAAA,MAChC,OAAM;AAAA,MACN,cAAW;AAAA,MACX,SAAS;AAAA,MACT,UAAU;AAAA,MACV,eAAa,YAAY;AAAA,MACzB,UAAU,aAAa,IAAI;AAAA,MAC3B,UAAU,KAAK;AAAA,MACf,OAAO;AAAA,MACP,UAAU,gBAAgB,IAAI;AAAA,KAChC,CACF;AAAA,EAEJ;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AACd;",
6
6
  "names": []
7
7
  }
@@ -4,13 +4,7 @@ import { expandRowColumn } from "./ColumnExpand/ColumnExpand";
4
4
  import { multiSelectColumn } from "./ColumnSelectMultiple/ColumnSelectMultiple";
5
5
  import { singleSelectColumn } from "./ColumnSelectSingle/ColumnSelectSingle";
6
6
  import { dragHandleColumn } from "./ColumnDragHandle/ColumnDragHandle";
7
- const INTERNAL_COLUMNS = [
8
- "rowActions",
9
- "expander",
10
- "multiSelecter",
11
- "singleSelecter",
12
- "dragHandleColumn"
13
- ];
7
+ const INTERNAL_COLUMNS = ["rowActions", "expander", "multiSelecter", "singleSelecter", "dragHandleColumn"];
14
8
  export {
15
9
  INTERNAL_COLUMNS,
16
10
  actionColumn,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/addons/Columns/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { actionColumn } from './ColumnAction/ColumnAction';\nexport { expandRowColumn } from './ColumnExpand/ColumnExpand';\nexport { multiSelectColumn } from './ColumnSelectMultiple/ColumnSelectMultiple';\nexport { singleSelectColumn } from './ColumnSelectSingle/ColumnSelectSingle';\nexport { dragHandleColumn } from './ColumnDragHandle/ColumnDragHandle';\n\nexport const INTERNAL_COLUMNS = [\n 'rowActions',\n 'expander',\n 'multiSelecter',\n 'singleSelecter',\n 'dragHandleColumn',\n];\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AAEO,MAAM,mBAAmB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export { actionColumn } from './ColumnAction/ColumnAction';\nexport { expandRowColumn } from './ColumnExpand/ColumnExpand';\nexport { multiSelectColumn } from './ColumnSelectMultiple/ColumnSelectMultiple';\nexport { singleSelectColumn } from './ColumnSelectSingle/ColumnSelectSingle';\nexport { dragHandleColumn } from './ColumnDragHandle/ColumnDragHandle';\n\nexport const INTERNAL_COLUMNS = ['rowActions', 'expander', 'multiSelecter', 'singleSelecter', 'dragHandleColumn'];\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AAEO,MAAM,mBAAmB,CAAC,cAAc,YAAY,iBAAiB,kBAAkB,kBAAkB;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,11 @@
1
1
  import * as React from "react";
2
- import React2, { useContext } from "react";
2
+ import React2 from "react";
3
3
  import { Grid } from "@elliemae/ds-grid";
4
4
  import { DSInputMask, MASK_TYPES } from "@elliemae/ds-form";
5
5
  import { DSFormLayoutBlockItem } from "@elliemae/ds-form-layout-blocks";
6
6
  import { SearchXsmall } from "@elliemae/ds-icons";
7
7
  import { FilterPopover, FILTER_TYPES } from "../../../../exported-related";
8
8
  import { DATA_TESTID } from "../../../../configs/constants";
9
- import DataTableContext from "../../../../DataTableContext";
10
9
  const opts = {
11
10
  prefix: "",
12
11
  suffix: "",
@@ -17,8 +16,7 @@ const opts = {
17
16
  allowNegative: true
18
17
  };
19
18
  const CurrencyRangeFilter = (props) => {
20
- const { column, filterValue = { from: null, to: null }, reduxHeader, onValueChange, innerRef } = props;
21
- const { patchHeader } = useContext(DataTableContext);
19
+ const { column, filterValue = { from: null, to: null }, reduxHeader, patchHeader, onValueChange, innerRef } = props;
22
20
  const handleFromChange = (e) => {
23
21
  const nextValue = {
24
22
  ...filterValue,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/addons/Filters/Components/CurrencyRangeFilter/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSInputMask, MASK_TYPES } from '@elliemae/ds-form';\nimport { DSFormLayoutBlockItem } from '@elliemae/ds-form-layout-blocks';\nimport { SearchXsmall } from '@elliemae/ds-icons';\nimport { FilterPopover, FILTER_TYPES } from '../../../../exported-related';\nimport { FilterProps } from '../../../../types/props';\nimport { DATA_TESTID } from '../../../../configs/constants';\nimport DataTableContext from '../../../../DataTableContext';\n\nconst opts = {\n prefix: '',\n suffix: '',\n allowDecimal: true,\n decimalLimit: 2,\n includeThousandsSeparator: false,\n requireDecimal: true,\n allowNegative: true,\n};\n\nexport const CurrencyRangeFilter: React.ComponentType<FilterProps> = (props) => {\n const { column, filterValue = { from: null, to: null }, reduxHeader, onValueChange, innerRef } = props;\n\n const { patchHeader } = useContext(DataTableContext);\n\n const handleFromChange = (e) => {\n const nextValue = {\n ...filterValue,\n from: e.target.value,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n const handleToChange = (e) => {\n const nextValue = {\n ...filterValue,\n to: e.target.value,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n\n // workaround to close menu with esc key since DSInputMask has stoppropagation on key down\n const closePopover = (e) => {\n if (e.code === 'Escape') {\n patchHeader(column.id, { hideFilterMenu: true, hideFilterButton: false });\n innerRef.current.focus();\n }\n };\n\n const idPreffix = 'datatable-currency-range';\n return (\n <FilterPopover\n reduxHeader={reduxHeader}\n column={column}\n columnId={column.id}\n menuContent={\n <Grid\n data-testid={DATA_TESTID.DATA_TABLE_CURRENCY_RANGE_CONTROLLER}\n gutter=\"xxxs\"\n padding=\"xxs\"\n cols={['auto', 'auto']}\n style={{ background: 'white' }}\n >\n <DSFormLayoutBlockItem label=\"Min\" inputID={`${idPreffix}-min-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-min-${column.id}`}\n value={`${filterValue?.from ?? ''}`}\n onChange={handleFromChange}\n placeholder=\"0.00\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n autoFocus\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n <DSFormLayoutBlockItem label=\"Max\" inputID={`${idPreffix}-max-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-max-${column.id}`}\n value={`${filterValue?.to ?? ''}`}\n onChange={handleToChange}\n placeholder=\"0.00\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n </Grid>\n }\n triggerIcon={<SearchXsmall />}\n customStyles={{ width: column.ref?.current?.offsetWidth ?? '0px' }}\n innerRef={innerRef}\n ariaLabel=\"Open Currency Range Filter\"\n />\n );\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA,MAAM,OAAO;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAEO,MAAM,sBAAwD,CAAC,UAAU;AAC9E,QAAM,EAAE,QAAQ,cAAc,EAAE,MAAM,MAAM,IAAI,KAAK,GAAG,aAAa,eAAe,aAAa;AAEjG,QAAM,EAAE,gBAAgB,WAAW,gBAAgB;AAEnD,QAAM,mBAAmB,CAAC,MAAM;AAC9B,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,OAAO;AAAA,IACjB;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AACA,QAAM,iBAAiB,CAAC,MAAM;AAC5B,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,IAAI,EAAE,OAAO;AAAA,IACf;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AAGA,QAAM,eAAe,CAAC,MAAM;AAC1B,QAAI,EAAE,SAAS,UAAU;AACvB,kBAAY,OAAO,IAAI,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AACxE,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,YAAY;AAClB,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,aACE,qCAAC;AAAA,MACC,eAAa,YAAY;AAAA,MACzB,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,OAAO,EAAE,YAAY,QAAQ;AAAA,OAE7B,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAM,SAAS,GAAG,iBAAiB,OAAO;AAAA,OACrE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,iBAAiB,OAAO;AAAA,MAC/B,OAAO,GAAG,aAAa,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAS;AAAA,MACT,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,GACA,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAM,SAAS,GAAG,iBAAiB,OAAO;AAAA,OACrE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,iBAAiB,OAAO;AAAA,MAC/B,OAAO,GAAG,aAAa,MAAM;AAAA,MAC7B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,CACF;AAAA,IAEF,aAAa,qCAAC,kBAAa;AAAA,IAC3B,cAAc,EAAE,OAAO,OAAO,KAAK,SAAS,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,WAAU;AAAA,GACZ;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSInputMask, MASK_TYPES } from '@elliemae/ds-form';\nimport { DSFormLayoutBlockItem } from '@elliemae/ds-form-layout-blocks';\nimport { SearchXsmall } from '@elliemae/ds-icons';\nimport { FilterPopover, FILTER_TYPES } from '../../../../exported-related';\nimport { FilterProps } from '../../../../types/props';\nimport { DATA_TESTID } from '../../../../configs/constants';\n\nconst opts = {\n prefix: '',\n suffix: '',\n allowDecimal: true,\n decimalLimit: 2,\n includeThousandsSeparator: false,\n requireDecimal: true,\n allowNegative: true,\n};\n\nexport const CurrencyRangeFilter: React.ComponentType<FilterProps> = (props) => {\n const { column, filterValue = { from: null, to: null }, reduxHeader, patchHeader, onValueChange, innerRef } = props;\n\n const handleFromChange = (e) => {\n const nextValue = {\n ...filterValue,\n from: e.target.value,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n const handleToChange = (e) => {\n const nextValue = {\n ...filterValue,\n to: e.target.value,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n\n // workaround to close menu with esc key since DSInputMask has stoppropagation on key down\n const closePopover = (e) => {\n if (e.code === 'Escape') {\n patchHeader(column.id, { hideFilterMenu: true, hideFilterButton: false });\n innerRef.current.focus();\n }\n };\n\n const idPreffix = 'datatable-currency-range';\n return (\n <FilterPopover\n reduxHeader={reduxHeader}\n column={column}\n columnId={column.id}\n menuContent={\n <Grid\n data-testid={DATA_TESTID.DATA_TABLE_CURRENCY_RANGE_CONTROLLER}\n gutter=\"xxxs\"\n padding=\"xxs\"\n cols={['auto', 'auto']}\n style={{ background: 'white' }}\n >\n <DSFormLayoutBlockItem label=\"Min\" inputID={`${idPreffix}-min-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-min-${column.id}`}\n value={`${filterValue?.from ?? ''}`}\n onChange={handleFromChange}\n placeholder=\"0.00\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n autoFocus\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n <DSFormLayoutBlockItem label=\"Max\" inputID={`${idPreffix}-max-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-max-${column.id}`}\n value={`${filterValue?.to ?? ''}`}\n onChange={handleToChange}\n placeholder=\"0.00\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n </Grid>\n }\n triggerIcon={<SearchXsmall />}\n customStyles={{ width: column.ref?.current?.offsetWidth ?? '0px' }}\n innerRef={innerRef}\n ariaLabel=\"Open Currency Range Filter\"\n />\n );\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,MAAM,OAAO;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,cAAc;AAAA,EACd,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAEO,MAAM,sBAAwD,CAAC,UAAU;AAC9E,QAAM,EAAE,QAAQ,cAAc,EAAE,MAAM,MAAM,IAAI,KAAK,GAAG,aAAa,aAAa,eAAe,aAAa;AAE9G,QAAM,mBAAmB,CAAC,MAAM;AAC9B,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,MAAM,EAAE,OAAO;AAAA,IACjB;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AACA,QAAM,iBAAiB,CAAC,MAAM;AAC5B,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,IAAI,EAAE,OAAO;AAAA,IACf;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AAGA,QAAM,eAAe,CAAC,MAAM;AAC1B,QAAI,EAAE,SAAS,UAAU;AACvB,kBAAY,OAAO,IAAI,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AACxE,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,YAAY;AAClB,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,aACE,qCAAC;AAAA,MACC,eAAa,YAAY;AAAA,MACzB,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,OAAO,EAAE,YAAY,QAAQ;AAAA,OAE7B,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAM,SAAS,GAAG,iBAAiB,OAAO;AAAA,OACrE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,iBAAiB,OAAO;AAAA,MAC/B,OAAO,GAAG,aAAa,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAS;AAAA,MACT,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,GACA,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAM,SAAS,GAAG,iBAAiB,OAAO;AAAA,OACrE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,iBAAiB,OAAO;AAAA,MAC/B,OAAO,GAAG,aAAa,MAAM;AAAA,MAC7B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,CACF;AAAA,IAEF,aAAa,qCAAC,kBAAa;AAAA,IAC3B,cAAc,EAAE,OAAO,OAAO,KAAK,SAAS,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,WAAU;AAAA,GACZ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1,12 +1,11 @@
1
1
  import * as React from "react";
2
- import React2, { useContext } from "react";
2
+ import React2 from "react";
3
3
  import { Grid } from "@elliemae/ds-grid";
4
4
  import { DSInputMask, MASK_TYPES } from "@elliemae/ds-form";
5
5
  import { DSFormLayoutBlockItem } from "@elliemae/ds-form-layout-blocks";
6
6
  import { SearchXsmall } from "@elliemae/ds-icons";
7
7
  import { FilterPopover, FILTER_TYPES } from "../../../../exported-related";
8
8
  import { DATA_TESTID } from "../../../../configs/constants";
9
- import DataTableContext from "../../../../DataTableContext";
10
9
  const opts = {
11
10
  prefix: "",
12
11
  suffix: "",
@@ -16,8 +15,7 @@ const opts = {
16
15
  allowNegative: true
17
16
  };
18
17
  const NumberRangeFilter = (props) => {
19
- const { column, filterValue = { from: null, to: null }, reduxHeader, onValueChange, innerRef } = props;
20
- const { patchHeader } = useContext(DataTableContext);
18
+ const { column, filterValue = { from: null, to: null }, reduxHeader, patchHeader, onValueChange, innerRef } = props;
21
19
  const handleFromChange = (e) => {
22
20
  const from = e.target.value !== "" ? parseInt(e.target.value, 10) : "";
23
21
  const nextValue = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/addons/Filters/Components/NumberRangeFilter/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useContext } from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSInputMask, MASK_TYPES } from '@elliemae/ds-form';\nimport { DSFormLayoutBlockItem } from '@elliemae/ds-form-layout-blocks';\nimport { SearchXsmall } from '@elliemae/ds-icons';\nimport { FilterPopover, FILTER_TYPES } from '../../../../exported-related';\nimport { FilterProps } from '../../../../types/props';\nimport { DATA_TESTID } from '../../../../configs/constants';\nimport DataTableContext from '../../../../DataTableContext';\n\nconst opts = {\n prefix: '',\n suffix: '',\n allowDecimal: false,\n includeThousandsSeparator: false,\n requireDecimal: false,\n allowNegative: true,\n};\n\nexport const NumberRangeFilter: React.ComponentType<FilterProps> = (props) => {\n const { column, filterValue = { from: null, to: null }, reduxHeader, onValueChange, innerRef } = props;\n\n const { patchHeader } = useContext(DataTableContext);\n\n const handleFromChange = (e) => {\n const from = e.target.value !== '' ? parseInt(e.target.value, 10) : '';\n const nextValue = {\n ...filterValue,\n from,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n const handleToChange = (e) => {\n const to = e.target.value !== '' ? parseInt(e.target.value, 10) : '';\n const nextValue = {\n ...filterValue,\n to,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n\n // workaround to close menu with esc key since DSInputMask has stoppropagation on key down\n const closePopover = (e) => {\n if (e.code === 'Escape') {\n patchHeader(column.id, { hideFilterMenu: true, hideFilterButton: false });\n innerRef.current.focus();\n }\n };\n const idPreffix = 'datatable-number-range';\n return (\n <FilterPopover\n reduxHeader={reduxHeader}\n column={column}\n columnId={column.id}\n menuContent={\n <Grid\n data-testid={DATA_TESTID.DATA_TABLE_NUMBER_RANGE_CONTROLLER}\n gutter=\"xxxs\"\n padding=\"xxs\"\n cols={['auto', 'auto']}\n style={{ background: 'white' }}\n >\n <DSFormLayoutBlockItem label=\"Low\" inputID={`${idPreffix}-low-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-low-${column.id}`}\n value={`${filterValue?.from ?? ''}`}\n onChange={handleFromChange}\n placeholder=\"0\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n autoFocus\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n <DSFormLayoutBlockItem label=\"High\" inputID={`${idPreffix}-high-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-high-${column.id}`}\n value={`${filterValue?.to ?? ''}`}\n onChange={handleToChange}\n placeholder=\"0\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n </Grid>\n }\n triggerIcon={<SearchXsmall />}\n customStyles={{ width: column.ref?.current?.offsetWidth ?? '0px' }}\n innerRef={innerRef}\n ariaLabel=\"Open Number Range Filter\"\n />\n );\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA,MAAM,OAAO;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAEO,MAAM,oBAAsD,CAAC,UAAU;AAC5E,QAAM,EAAE,QAAQ,cAAc,EAAE,MAAM,MAAM,IAAI,KAAK,GAAG,aAAa,eAAe,aAAa;AAEjG,QAAM,EAAE,gBAAgB,WAAW,gBAAgB;AAEnD,QAAM,mBAAmB,CAAC,MAAM;AAC9B,UAAM,OAAO,EAAE,OAAO,UAAU,KAAK,SAAS,EAAE,OAAO,OAAO,EAAE,IAAI;AACpE,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,IACF;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AACA,QAAM,iBAAiB,CAAC,MAAM;AAC5B,UAAM,KAAK,EAAE,OAAO,UAAU,KAAK,SAAS,EAAE,OAAO,OAAO,EAAE,IAAI;AAClE,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,IACF;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AAGA,QAAM,eAAe,CAAC,MAAM;AAC1B,QAAI,EAAE,SAAS,UAAU;AACvB,kBAAY,OAAO,IAAI,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AACxE,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF;AACA,QAAM,YAAY;AAClB,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,aACE,qCAAC;AAAA,MACC,eAAa,YAAY;AAAA,MACzB,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,OAAO,EAAE,YAAY,QAAQ;AAAA,OAE7B,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAM,SAAS,GAAG,iBAAiB,OAAO;AAAA,OACrE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,iBAAiB,OAAO;AAAA,MAC/B,OAAO,GAAG,aAAa,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAS;AAAA,MACT,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,GACA,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAO,SAAS,GAAG,kBAAkB,OAAO;AAAA,OACvE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,kBAAkB,OAAO;AAAA,MAChC,OAAO,GAAG,aAAa,MAAM;AAAA,MAC7B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,CACF;AAAA,IAEF,aAAa,qCAAC,kBAAa;AAAA,IAC3B,cAAc,EAAE,OAAO,OAAO,KAAK,SAAS,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,WAAU;AAAA,GACZ;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSInputMask, MASK_TYPES } from '@elliemae/ds-form';\nimport { DSFormLayoutBlockItem } from '@elliemae/ds-form-layout-blocks';\nimport { SearchXsmall } from '@elliemae/ds-icons';\nimport { FilterPopover, FILTER_TYPES } from '../../../../exported-related';\nimport { FilterProps } from '../../../../types/props';\nimport { DATA_TESTID } from '../../../../configs/constants';\n\nconst opts = {\n prefix: '',\n suffix: '',\n allowDecimal: false,\n includeThousandsSeparator: false,\n requireDecimal: false,\n allowNegative: true,\n};\n\nexport const NumberRangeFilter: React.ComponentType<FilterProps> = (props) => {\n const { column, filterValue = { from: null, to: null }, reduxHeader, patchHeader, onValueChange, innerRef } = props;\n\n const handleFromChange = (e) => {\n const from = e.target.value !== '' ? parseInt(e.target.value, 10) : '';\n const nextValue = {\n ...filterValue,\n from,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n const handleToChange = (e) => {\n const to = e.target.value !== '' ? parseInt(e.target.value, 10) : '';\n const nextValue = {\n ...filterValue,\n to,\n };\n onValueChange(FILTER_TYPES.CURRENCY_RANGE, nextValue);\n };\n\n // workaround to close menu with esc key since DSInputMask has stoppropagation on key down\n const closePopover = (e) => {\n if (e.code === 'Escape') {\n patchHeader(column.id, { hideFilterMenu: true, hideFilterButton: false });\n innerRef.current.focus();\n }\n };\n const idPreffix = 'datatable-number-range';\n return (\n <FilterPopover\n reduxHeader={reduxHeader}\n column={column}\n columnId={column.id}\n menuContent={\n <Grid\n data-testid={DATA_TESTID.DATA_TABLE_NUMBER_RANGE_CONTROLLER}\n gutter=\"xxxs\"\n padding=\"xxs\"\n cols={['auto', 'auto']}\n style={{ background: 'white' }}\n >\n <DSFormLayoutBlockItem label=\"Low\" inputID={`${idPreffix}-low-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-low-${column.id}`}\n value={`${filterValue?.from ?? ''}`}\n onChange={handleFromChange}\n placeholder=\"0\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n autoFocus\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n <DSFormLayoutBlockItem label=\"High\" inputID={`${idPreffix}-high-${column.id}`}>\n <DSInputMask\n containerProps={{ style: { textAlign: 'right' } }}\n id={`${idPreffix}-high-${column.id}`}\n value={`${filterValue?.to ?? ''}`}\n onChange={handleToChange}\n placeholder=\"0\"\n mask={(number) => MASK_TYPES.NUMBER(opts)(number)}\n onKeyDown={(e) => {\n closePopover(e);\n }}\n />\n </DSFormLayoutBlockItem>\n </Grid>\n }\n triggerIcon={<SearchXsmall />}\n customStyles={{ width: column.ref?.current?.offsetWidth ?? '0px' }}\n innerRef={innerRef}\n ariaLabel=\"Open Number Range Filter\"\n />\n );\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA,MAAM,OAAO;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAEO,MAAM,oBAAsD,CAAC,UAAU;AAC5E,QAAM,EAAE,QAAQ,cAAc,EAAE,MAAM,MAAM,IAAI,KAAK,GAAG,aAAa,aAAa,eAAe,aAAa;AAE9G,QAAM,mBAAmB,CAAC,MAAM;AAC9B,UAAM,OAAO,EAAE,OAAO,UAAU,KAAK,SAAS,EAAE,OAAO,OAAO,EAAE,IAAI;AACpE,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,IACF;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AACA,QAAM,iBAAiB,CAAC,MAAM;AAC5B,UAAM,KAAK,EAAE,OAAO,UAAU,KAAK,SAAS,EAAE,OAAO,OAAO,EAAE,IAAI;AAClE,UAAM,YAAY;AAAA,MAChB,GAAG;AAAA,MACH;AAAA,IACF;AACA,kBAAc,aAAa,gBAAgB,SAAS;AAAA,EACtD;AAGA,QAAM,eAAe,CAAC,MAAM;AAC1B,QAAI,EAAE,SAAS,UAAU;AACvB,kBAAY,OAAO,IAAI,EAAE,gBAAgB,MAAM,kBAAkB,MAAM,CAAC;AACxE,eAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF;AACA,QAAM,YAAY;AAClB,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,aACE,qCAAC;AAAA,MACC,eAAa,YAAY;AAAA,MACzB,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,OAAO,EAAE,YAAY,QAAQ;AAAA,OAE7B,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAM,SAAS,GAAG,iBAAiB,OAAO;AAAA,OACrE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,iBAAiB,OAAO;AAAA,MAC/B,OAAO,GAAG,aAAa,QAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAS;AAAA,MACT,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,GACA,qCAAC;AAAA,MAAsB,OAAM;AAAA,MAAO,SAAS,GAAG,kBAAkB,OAAO;AAAA,OACvE,qCAAC;AAAA,MACC,gBAAgB,EAAE,OAAO,EAAE,WAAW,QAAQ,EAAE;AAAA,MAChD,IAAI,GAAG,kBAAkB,OAAO;AAAA,MAChC,OAAO,GAAG,aAAa,MAAM;AAAA,MAC7B,UAAU;AAAA,MACV,aAAY;AAAA,MACZ,MAAM,CAAC,WAAW,WAAW,OAAO,IAAI,EAAE,MAAM;AAAA,MAChD,WAAW,CAAC,MAAM;AAChB,qBAAa,CAAC;AAAA,MAChB;AAAA,KACF,CACF,CACF;AAAA,IAEF,aAAa,qCAAC,kBAAa;AAAA,IAC3B,cAAc,EAAE,OAAO,OAAO,KAAK,SAAS,eAAe,MAAM;AAAA,IACjE;AAAA,IACA,WAAU;AAAA,GACZ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -1,15 +1,16 @@
1
1
  import * as React from "react";
2
- import React2, { useState, useEffect, useMemo, useContext } from "react";
2
+ import React2, { useState, useEffect, useMemo } from "react";
3
3
  import { Grid } from "@elliemae/ds-grid";
4
4
  import { DSComboBox } from "@elliemae/ds-controlled-form";
5
5
  import { SearchXsmall } from "@elliemae/ds-icons";
6
+ import { uid } from "uid";
6
7
  import { FilterPopover } from "../../../../exported-related";
7
8
  import { DATA_TESTID } from "../../../../configs";
8
- import DataTableContext from "../../../../DataTableContext";
9
9
  const BaseSelectFilter = (props) => {
10
10
  const {
11
11
  isMulti = false,
12
12
  selectedItems = null,
13
+ creatable = false,
13
14
  column,
14
15
  type,
15
16
  column: { id, filterOptions: userFilterOptions, filterMinWidth },
@@ -17,10 +18,10 @@ const BaseSelectFilter = (props) => {
17
18
  tableProps: { data }
18
19
  },
19
20
  reduxHeader,
21
+ patchHeaderFilterButtonAndMenu,
20
22
  innerRef,
21
23
  onValueChange
22
24
  } = props;
23
- const { patchHeaderFilterButtonAndMenu } = useContext(DataTableContext);
24
25
  const filterOptions = useMemo(() => {
25
26
  if (!userFilterOptions) {
26
27
  const automaticFilters = [
@@ -37,12 +38,30 @@ const BaseSelectFilter = (props) => {
37
38
  return userFilterOptions;
38
39
  return userFilterOptions();
39
40
  }, [data, id, userFilterOptions]);
41
+ const [filters, setFilteredOptions] = useState(filterOptions);
40
42
  const handleOnChange = (value) => {
41
43
  onValueChange(type, value);
42
44
  if (!isMulti)
43
45
  patchHeaderFilterButtonAndMenu(column.id, true);
44
46
  };
45
- const [filters, setFilteredOptions] = useState(filterOptions);
47
+ const handleOnCreate = (label) => {
48
+ if (label.trim() === "") {
49
+ return;
50
+ }
51
+ if (filterOptions.some((item) => item.label === label)) {
52
+ return;
53
+ }
54
+ const newId = uid();
55
+ const newItem = {
56
+ dsId: newId,
57
+ value: newId,
58
+ label,
59
+ type: "option"
60
+ };
61
+ filterOptions.unshift(newItem);
62
+ handleOnChange(Array.isArray(selectedItems) ? [...selectedItems, newItem] : newItem);
63
+ setFilteredOptions(filterOptions);
64
+ };
46
65
  useEffect(() => {
47
66
  setFilteredOptions(filterOptions);
48
67
  }, [filterOptions]);
@@ -53,6 +72,7 @@ const BaseSelectFilter = (props) => {
53
72
  inline: true,
54
73
  autoFocus: true,
55
74
  allOptions: filterOptions,
75
+ onCreate: creatable ? handleOnCreate : void 0,
56
76
  filteredOptions: filters,
57
77
  onChange: handleOnChange,
58
78
  selectedValues: selectedItems,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/addons/Filters/Components/SelectFilter/BaseSelectFilter.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useState, useEffect, useMemo, useCallback, useContext } from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSComboBox } from '@elliemae/ds-controlled-form';\nimport { SearchXsmall } from '@elliemae/ds-icons';\nimport { FilterPopover } from '../../../../exported-related';\nimport { FilterProps } from '../../../../types/props';\nimport { DATA_TESTID } from '../../../../configs';\nimport DataTableContext from '../../../../DataTableContext';\n\ninterface FilterOptionT {\n dsId: string;\n type: string;\n value: string;\n label: string;\n}\n\ninterface BaseSelectProps {\n isSingle?: boolean;\n isMulti?: boolean;\n selectedItems?: FilterOptionT[] | FilterOptionT;\n type: string;\n}\n\nexport const BaseSelectFilter: React.ComponentType<FilterProps & BaseSelectProps> = (props) => {\n const {\n isMulti = false,\n selectedItems = null,\n column,\n type,\n column: { id, filterOptions: userFilterOptions, filterMinWidth },\n ctx: {\n tableProps: { data },\n },\n reduxHeader,\n innerRef,\n onValueChange,\n } = props;\n\n const { patchHeaderFilterButtonAndMenu } = useContext(DataTableContext);\n\n const filterOptions: FilterOptionT[] = useMemo(() => {\n // If the user didn't provide options, use the available ones\n if (!userFilterOptions) {\n const automaticFilters = [\n ...new Set(data.map((datum) => datum?.[id]?.toString()).filter((val) => val !== undefined)),\n ].map((item) => ({\n type: 'option',\n dsId: item,\n value: item,\n label: item,\n }));\n\n return automaticFilters;\n }\n\n // If user provided the array itself, use it\n if (Array.isArray(userFilterOptions)) return userFilterOptions;\n // Otherwise, it is a function\n return userFilterOptions();\n }, [data, id, userFilterOptions]);\n\n const handleOnChange = (value) => {\n onValueChange(type, value);\n if (!isMulti) patchHeaderFilterButtonAndMenu(column.id, true);\n };\n\n const [filters, setFilteredOptions] = useState(filterOptions);\n\n useEffect(() => {\n setFilteredOptions(filterOptions);\n }, [filterOptions]);\n\n const Select = (\n <Grid\n data-testid={\n isMulti ? DATA_TESTID.DATA_TABLE_MULTISELECT_CONTROLLER : DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER\n }\n style={{ background: '#fff', position: 'relative', width: filterMinWidth ?? column.ref?.current?.offsetWidth }}\n >\n <DSComboBox\n inline\n autoFocus\n allOptions={filterOptions}\n filteredOptions={filters}\n onChange={handleOnChange}\n selectedValues={selectedItems}\n onFilter={setFilteredOptions}\n menuMaxHeight={300}\n />\n </Grid>\n );\n\n const handleOnClickOutside = () => {\n setFilteredOptions(filterOptions);\n };\n return (\n <FilterPopover\n reduxHeader={reduxHeader}\n column={column}\n columnId={column.id}\n menuContent={Select}\n triggerIcon={<SearchXsmall />}\n innerRef={innerRef}\n ariaLabel=\"Open Selection Filter\"\n onClickOutsideMenu={handleOnClickOutside}\n />\n );\n};\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAgBO,MAAM,mBAAuE,CAAC,UAAU;AAC7F,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,QAAQ,EAAE,IAAI,eAAe,mBAAmB;AAAA,IAChD,KAAK;AAAA,MACH,YAAY,EAAE;AAAA;AAAA,IAEhB;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,EAAE,mCAAmC,WAAW,gBAAgB;AAEtE,QAAM,gBAAiC,QAAQ,MAAM;AAEnD,QAAI,CAAC,mBAAmB;AACtB,YAAM,mBAAmB;AAAA,QACvB,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,QAAQ,KAAK,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,QAAQ,MAAS,CAAC;AAAA,MAC5F,EAAE,IAAI,CAAC,SAAU;AAAA,QACf,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT,EAAE;AAEF,aAAO;AAAA,IACT;AAGA,QAAI,MAAM,QAAQ,iBAAiB;AAAG,aAAO;AAE7C,WAAO,kBAAkB;AAAA,EAC3B,GAAG,CAAC,MAAM,IAAI,iBAAiB,CAAC;AAEhC,QAAM,iBAAiB,CAAC,UAAU;AAChC,kBAAc,MAAM,KAAK;AACzB,QAAI,CAAC;AAAS,qCAA+B,OAAO,IAAI,IAAI;AAAA,EAC9D;AAEA,QAAM,CAAC,SAAS,sBAAsB,SAAS,aAAa;AAE5D,YAAU,MAAM;AACd,uBAAmB,aAAa;AAAA,EAClC,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,SACJ,qCAAC;AAAA,IACC,eACE,UAAU,YAAY,oCAAoC,YAAY;AAAA,IAExE,OAAO,EAAE,YAAY,QAAQ,UAAU,YAAY,OAAO,kBAAkB,OAAO,KAAK,SAAS,YAAY;AAAA,KAE7G,qCAAC;AAAA,IACC,QAAM;AAAA,IACN,WAAS;AAAA,IACT,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,eAAe;AAAA,GACjB,CACF;AAGF,QAAM,uBAAuB,MAAM;AACjC,uBAAmB,aAAa;AAAA,EAClC;AACA,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,aAAa;AAAA,IACb,aAAa,qCAAC,kBAAa;AAAA,IAC3B;AAAA,IACA,WAAU;AAAA,IACV,oBAAoB;AAAA,GACtB;AAEJ;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useState, useEffect, useMemo } from 'react';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSComboBox } from '@elliemae/ds-controlled-form';\nimport { SearchXsmall } from '@elliemae/ds-icons';\nimport { uid } from 'uid';\nimport { FilterPopover } from '../../../../exported-related';\nimport { FilterProps } from '../../../../types/props';\nimport { DATA_TESTID } from '../../../../configs';\n\ninterface FilterOptionT {\n dsId: string;\n type: string;\n value: string;\n label: string;\n}\n\ninterface BaseSelectProps {\n isMulti?: boolean;\n creatable?: boolean;\n selectedItems?: FilterOptionT[] | FilterOptionT;\n type: string;\n}\n\nexport const BaseSelectFilter: React.ComponentType<FilterProps & BaseSelectProps> = (props) => {\n const {\n isMulti = false,\n selectedItems = null,\n creatable = false,\n column,\n type,\n column: { id, filterOptions: userFilterOptions, filterMinWidth },\n ctx: {\n tableProps: { data },\n },\n reduxHeader,\n patchHeaderFilterButtonAndMenu,\n innerRef,\n onValueChange,\n } = props;\n\n const filterOptions: FilterOptionT[] = useMemo(() => {\n // If the user didn't provide options, use the available ones\n if (!userFilterOptions) {\n const automaticFilters = [\n ...new Set(data.map((datum) => datum?.[id]?.toString()).filter((val) => val !== undefined)),\n ].map((item) => ({\n type: 'option',\n dsId: item,\n value: item,\n label: item,\n }));\n\n return automaticFilters;\n }\n\n // If user provided the array itself, use it\n if (Array.isArray(userFilterOptions)) return userFilterOptions;\n // Otherwise, it is a function\n return userFilterOptions();\n }, [data, id, userFilterOptions]);\n\n const [filters, setFilteredOptions] = useState(filterOptions);\n\n const handleOnChange = (value) => {\n onValueChange(type, value);\n if (!isMulti) patchHeaderFilterButtonAndMenu(column.id, true);\n };\n\n const handleOnCreate = (label: string) => {\n if (label.trim() === '') {\n return;\n }\n if (filterOptions.some((item) => item.label === label)) {\n return;\n }\n const newId = uid();\n const newItem = {\n dsId: newId,\n value: newId,\n label,\n type: 'option',\n };\n filterOptions.unshift(newItem);\n handleOnChange(Array.isArray(selectedItems) ? [...selectedItems, newItem] : newItem);\n setFilteredOptions(filterOptions);\n };\n\n useEffect(() => {\n setFilteredOptions(filterOptions);\n }, [filterOptions]);\n\n const Select = (\n <Grid\n data-testid={\n isMulti ? DATA_TESTID.DATA_TABLE_MULTISELECT_CONTROLLER : DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER\n }\n style={{ background: '#fff', position: 'relative', width: filterMinWidth ?? column.ref?.current?.offsetWidth }}\n >\n <DSComboBox\n inline\n autoFocus\n allOptions={filterOptions}\n onCreate={creatable ? handleOnCreate : undefined}\n filteredOptions={filters}\n onChange={handleOnChange}\n selectedValues={selectedItems}\n onFilter={setFilteredOptions}\n menuMaxHeight={300}\n />\n </Grid>\n );\n\n const handleOnClickOutside = () => {\n setFilteredOptions(filterOptions);\n };\n return (\n <FilterPopover\n reduxHeader={reduxHeader}\n column={column}\n columnId={column.id}\n menuContent={Select}\n triggerIcon={<SearchXsmall />}\n innerRef={innerRef}\n ariaLabel=\"Open Selection Filter\"\n onClickOutsideMenu={handleOnClickOutside}\n />\n );\n};\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAgBO,MAAM,mBAAuE,CAAC,UAAU;AAC7F,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,QAAQ,EAAE,IAAI,eAAe,mBAAmB;AAAA,IAChD,KAAK;AAAA,MACH,YAAY,EAAE;AAAA;AAAA,IAEhB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,gBAAiC,QAAQ,MAAM;AAEnD,QAAI,CAAC,mBAAmB;AACtB,YAAM,mBAAmB;AAAA,QACvB,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,QAAQ,KAAK,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,QAAQ,MAAS,CAAC;AAAA,MAC5F,EAAE,IAAI,CAAC,SAAU;AAAA,QACf,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,MACT,EAAE;AAEF,aAAO;AAAA,IACT;AAGA,QAAI,MAAM,QAAQ,iBAAiB;AAAG,aAAO;AAE7C,WAAO,kBAAkB;AAAA,EAC3B,GAAG,CAAC,MAAM,IAAI,iBAAiB,CAAC;AAEhC,QAAM,CAAC,SAAS,sBAAsB,SAAS,aAAa;AAE5D,QAAM,iBAAiB,CAAC,UAAU;AAChC,kBAAc,MAAM,KAAK;AACzB,QAAI,CAAC;AAAS,qCAA+B,OAAO,IAAI,IAAI;AAAA,EAC9D;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACxC,QAAI,MAAM,KAAK,MAAM,IAAI;AACvB;AAAA,IACF;AACA,QAAI,cAAc,KAAK,CAAC,SAAS,KAAK,UAAU,KAAK,GAAG;AACtD;AAAA,IACF;AACA,UAAM,QAAQ,IAAI;AAClB,UAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,MACA,MAAM;AAAA,IACR;AACA,kBAAc,QAAQ,OAAO;AAC7B,mBAAe,MAAM,QAAQ,aAAa,IAAI,CAAC,GAAG,eAAe,OAAO,IAAI,OAAO;AACnF,uBAAmB,aAAa;AAAA,EAClC;AAEA,YAAU,MAAM;AACd,uBAAmB,aAAa;AAAA,EAClC,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,SACJ,qCAAC;AAAA,IACC,eACE,UAAU,YAAY,oCAAoC,YAAY;AAAA,IAExE,OAAO,EAAE,YAAY,QAAQ,UAAU,YAAY,OAAO,kBAAkB,OAAO,KAAK,SAAS,YAAY;AAAA,KAE7G,qCAAC;AAAA,IACC,QAAM;AAAA,IACN,WAAS;AAAA,IACT,YAAY;AAAA,IACZ,UAAU,YAAY,iBAAiB;AAAA,IACvC,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,eAAe;AAAA,GACjB,CACF;AAGF,QAAM,uBAAuB,MAAM;AACjC,uBAAmB,aAAa;AAAA,EAClC;AACA,SACE,qCAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,aAAa;AAAA,IACb,aAAa,qCAAC,kBAAa;AAAA,IAC3B;AAAA,IACA,WAAU;AAAA,IACV,oBAAoB;AAAA,GACtB;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,32 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import { BaseSelectFilter } from "./BaseSelectFilter";
4
+ import { FILTER_TYPES } from "../../../../exported-related";
5
+ import { DATA_TESTID } from "../../../../configs/constants";
6
+ const MultiCreatableFilter = ({
7
+ column,
8
+ ctx,
9
+ onValueChange,
10
+ patchHeaderFilterButtonAndMenu,
11
+ patchHeader,
12
+ reduxHeader,
13
+ filterValue,
14
+ innerRef
15
+ }) => /* @__PURE__ */ React2.createElement(BaseSelectFilter, {
16
+ creatable: true,
17
+ reduxHeader,
18
+ "data-testid": DATA_TESTID.DATA_TABLE_MULTISELECT_CONTROLLER,
19
+ isMulti: true,
20
+ column,
21
+ ctx,
22
+ selectedItems: filterValue ?? [],
23
+ type: FILTER_TYPES.MULTI_SELECT,
24
+ onValueChange,
25
+ patchHeaderFilterButtonAndMenu,
26
+ patchHeader,
27
+ innerRef
28
+ });
29
+ export {
30
+ MultiCreatableFilter
31
+ };
32
+ //# sourceMappingURL=MultiCreatableFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/addons/Filters/Components/SelectFilter/MultiCreatableFilter.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { FilterProps } from '../../../../types/props';\nimport { BaseSelectFilter } from './BaseSelectFilter';\nimport { FILTER_TYPES } from '../../../../exported-related';\nimport { DATA_TESTID } from '../../../../configs/constants';\n\nexport const MultiCreatableFilter: React.ComponentType<FilterProps> = ({\n column,\n ctx,\n onValueChange,\n patchHeaderFilterButtonAndMenu,\n patchHeader,\n reduxHeader,\n filterValue,\n innerRef,\n}) => (\n <BaseSelectFilter\n creatable\n reduxHeader={reduxHeader}\n data-testid={DATA_TESTID.DATA_TABLE_MULTISELECT_CONTROLLER}\n isMulti\n column={column}\n ctx={ctx}\n selectedItems={filterValue ?? []}\n type={FILTER_TYPES.MULTI_SELECT}\n onValueChange={onValueChange}\n patchHeaderFilterButtonAndMenu={patchHeaderFilterButtonAndMenu}\n patchHeader={patchHeader}\n innerRef={innerRef}\n />\n);\n"],
5
+ "mappings": "AAAA;ACAA;AAEA;AACA;AACA;AAEO,MAAM,uBAAyD,CAAC;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAEA,qCAAC;AAAA,EACC,WAAS;AAAA,EACT;AAAA,EACA,eAAa,YAAY;AAAA,EACzB,SAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,eAAe,eAAe,CAAC;AAAA,EAC/B,MAAM,aAAa;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,CACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,31 @@
1
+ import * as React from "react";
2
+ import React2 from "react";
3
+ import { BaseSelectFilter } from "./BaseSelectFilter";
4
+ import { FILTER_TYPES } from "../../../../exported-related";
5
+ import { DATA_TESTID } from "../../../../configs/constants";
6
+ const SingleCreatableFilter = ({
7
+ column,
8
+ ctx,
9
+ patchHeaderFilterButtonAndMenu,
10
+ patchHeader,
11
+ onValueChange,
12
+ filterValue,
13
+ reduxHeader,
14
+ innerRef
15
+ }) => /* @__PURE__ */ React2.createElement(BaseSelectFilter, {
16
+ creatable: true,
17
+ reduxHeader,
18
+ "data-testid": DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER,
19
+ column,
20
+ ctx,
21
+ selectedItems: filterValue,
22
+ type: FILTER_TYPES.SELECT,
23
+ onValueChange,
24
+ patchHeaderFilterButtonAndMenu,
25
+ patchHeader,
26
+ innerRef
27
+ });
28
+ export {
29
+ SingleCreatableFilter
30
+ };
31
+ //# sourceMappingURL=SingleCreatableFilter.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/addons/Filters/Components/SelectFilter/SingleCreatableFilter.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React from 'react';\nimport { BaseSelectFilter } from './BaseSelectFilter';\nimport { FilterProps } from '../../../../types/props';\nimport { FILTER_TYPES } from '../../../../exported-related';\nimport { DATA_TESTID } from '../../../../configs/constants';\n\nexport const SingleCreatableFilter: React.ComponentType<FilterProps> = ({\n column,\n ctx,\n patchHeaderFilterButtonAndMenu,\n patchHeader,\n onValueChange,\n filterValue,\n reduxHeader,\n innerRef,\n}) => (\n <BaseSelectFilter\n creatable\n reduxHeader={reduxHeader}\n data-testid={DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER}\n column={column}\n ctx={ctx}\n selectedItems={filterValue}\n type={FILTER_TYPES.SELECT}\n onValueChange={onValueChange}\n patchHeaderFilterButtonAndMenu={patchHeaderFilterButtonAndMenu}\n patchHeader={patchHeader}\n innerRef={innerRef}\n />\n);\n"],
5
+ "mappings": "AAAA;ACCA;AACA;AAEA;AACA;AAEO,MAAM,wBAA0D,CAAC;AAAA,EACtE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAEA,qCAAC;AAAA,EACC,WAAS;AAAA,EACT;AAAA,EACA,eAAa,YAAY;AAAA,EACzB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,MAAM,aAAa;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,CACF;",
6
+ "names": []
7
+ }
@@ -15,7 +15,6 @@ const SingleSelectFilter = ({
15
15
  }) => /* @__PURE__ */ React2.createElement(BaseSelectFilter, {
16
16
  reduxHeader,
17
17
  "data-testid": DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER,
18
- isSingle: true,
19
18
  column,
20
19
  ctx,
21
20
  selectedItems: filterValue,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../../src/addons/Filters/Components/SelectFilter/SingleSelectFilter.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React from 'react';\nimport { BaseSelectFilter } from './BaseSelectFilter';\nimport { FilterProps } from '../../../../types/props';\nimport { FILTER_TYPES } from '../../../../exported-related';\nimport { DATA_TESTID } from '../../../../configs/constants';\n\nexport const SingleSelectFilter: React.ComponentType<FilterProps> = ({\n column,\n ctx,\n patchHeaderFilterButtonAndMenu,\n patchHeader,\n onValueChange,\n filterValue,\n reduxHeader,\n innerRef,\n}) => (\n <BaseSelectFilter\n reduxHeader={reduxHeader}\n data-testid={DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER}\n isSingle\n column={column}\n ctx={ctx}\n selectedItems={filterValue}\n type={FILTER_TYPES.SELECT}\n onValueChange={onValueChange}\n patchHeaderFilterButtonAndMenu={patchHeaderFilterButtonAndMenu}\n patchHeader={patchHeader}\n innerRef={innerRef}\n />\n);\n"],
5
- "mappings": "AAAA;ACCA;AACA;AAEA;AACA;AAEO,MAAM,qBAAuD,CAAC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAEA,qCAAC;AAAA,EACC;AAAA,EACA,eAAa,YAAY;AAAA,EACzB,UAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,MAAM,aAAa;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,CACF;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React from 'react';\nimport { BaseSelectFilter } from './BaseSelectFilter';\nimport { FilterProps } from '../../../../types/props';\nimport { FILTER_TYPES } from '../../../../exported-related';\nimport { DATA_TESTID } from '../../../../configs/constants';\n\nexport const SingleSelectFilter: React.ComponentType<FilterProps> = ({\n column,\n ctx,\n patchHeaderFilterButtonAndMenu,\n patchHeader,\n onValueChange,\n filterValue,\n reduxHeader,\n innerRef,\n}) => (\n <BaseSelectFilter\n reduxHeader={reduxHeader}\n data-testid={DATA_TESTID.DATA_TABLE_SINGLESELECT_CONTROLLER}\n column={column}\n ctx={ctx}\n selectedItems={filterValue}\n type={FILTER_TYPES.SELECT}\n onValueChange={onValueChange}\n patchHeaderFilterButtonAndMenu={patchHeaderFilterButtonAndMenu}\n patchHeader={patchHeader}\n innerRef={innerRef}\n />\n);\n"],
5
+ "mappings": "AAAA;ACCA;AACA;AAEA;AACA;AAEO,MAAM,qBAAuD,CAAC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MAEA,qCAAC;AAAA,EACC;AAAA,EACA,eAAa,YAAY;AAAA,EACzB;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,MAAM,aAAa;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,CACF;",
6
6
  "names": []
7
7
  }
@@ -6,4 +6,6 @@ export * from "./CurrencyRangeFilter";
6
6
  export * from "./SelectFilter/SingleSelectFilter";
7
7
  export * from "./SelectFilter/MultiSelectFilter";
8
8
  export * from "./SingleDateFilter";
9
+ export * from "./SelectFilter/SingleCreatableFilter";
10
+ export * from "./SelectFilter/MultiCreatableFilter";
9
11
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/addons/Filters/Components/index.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './DateRangeFilter';\nexport * from './DateSwitcherFilter';\nexport * from './NumberRangeFilter';\nexport * from './CurrencyRangeFilter';\nexport * from './SelectFilter/SingleSelectFilter';\nexport * from './SelectFilter/MultiSelectFilter';\nexport * from './SingleDateFilter';\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;",
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './DateRangeFilter';\nexport * from './DateSwitcherFilter';\nexport * from './NumberRangeFilter';\nexport * from './CurrencyRangeFilter';\nexport * from './SelectFilter/SingleSelectFilter';\nexport * from './SelectFilter/MultiSelectFilter';\nexport * from './SingleDateFilter';\nexport * from './SelectFilter/SingleCreatableFilter';\nexport * from './SelectFilter/MultiCreatableFilter';\n"],
5
+ "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;",
6
6
  "names": []
7
7
  }