@elliemae/ds-data-table 2.0.0-rc.2 → 2.0.0-rc.6

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 (85) hide show
  1. package/cjs/DataTableSchema.js +1 -1
  2. package/cjs/addons/Filters/Components/index.js +0 -2
  3. package/cjs/addons/Filters/index.js +0 -2
  4. package/cjs/exported-related/FilterPopover.js +17 -3
  5. package/cjs/exported-related/FilterTypes.js +0 -1
  6. package/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +0 -2
  7. package/cjs/exported-related/Filters/index.js +0 -2
  8. package/cjs/exported-related/index.js +0 -2
  9. package/cjs/helpers/dndkit/hierarchy/customCollisionDetection.js +27 -14
  10. package/cjs/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +22 -20
  11. package/cjs/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +5 -3
  12. package/cjs/helpers/dndkit/tree/customCollisionDetection.js +45 -25
  13. package/cjs/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +25 -30
  14. package/cjs/helpers/dndkit/tree/useTreeDndkitConfig.js +5 -3
  15. package/cjs/helpers/refs-helpers.js +2 -2
  16. package/cjs/index.js +0 -2
  17. package/cjs/parts/FilterBar/FiltersBar.js +0 -2
  18. package/cjs/parts/FilterBar/components/index.js +0 -2
  19. package/cjs/parts/Filters/index.js +10 -12
  20. package/cjs/parts/Headers/HeaderCellGroup.js +4 -3
  21. package/cjs/parts/Headers/index.js +1 -1
  22. package/cjs/parts/HoC/withConditionalDnDColumnContext.js +17 -13
  23. package/cjs/parts/HoC/withConditionalDnDRowContext.js +9 -10
  24. package/cjs/parts/HoC/withConditionalDnDSortableContext.js +1 -1
  25. package/cjs/parts/HoC/withDnDSortableColumnContext.js +5 -19
  26. package/cjs/parts/HoC/withDnDSortableRowContext.js +3 -17
  27. package/cjs/parts/Row.js +10 -10
  28. package/cjs/parts/Rows.js +1 -1
  29. package/cjs/parts/index.js +1 -1
  30. package/cjs/styled.js +1 -1
  31. package/esm/DataTableSchema.js +1 -1
  32. package/esm/addons/Filters/Components/index.js +0 -1
  33. package/esm/addons/Filters/index.js +0 -1
  34. package/esm/exported-related/FilterPopover.js +17 -3
  35. package/esm/exported-related/FilterTypes.js +0 -1
  36. package/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +0 -2
  37. package/esm/exported-related/Filters/index.js +0 -1
  38. package/esm/exported-related/index.js +0 -1
  39. package/esm/helpers/dndkit/hierarchy/customCollisionDetection.js +27 -14
  40. package/esm/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +22 -20
  41. package/esm/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +6 -4
  42. package/esm/helpers/dndkit/tree/customCollisionDetection.js +45 -25
  43. package/esm/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +26 -31
  44. package/esm/helpers/dndkit/tree/useTreeDndkitConfig.js +6 -4
  45. package/esm/helpers/refs-helpers.js +2 -2
  46. package/esm/index.js +0 -1
  47. package/esm/parts/FilterBar/FiltersBar.js +0 -2
  48. package/esm/parts/FilterBar/components/index.js +0 -1
  49. package/esm/parts/Filters/index.js +0 -2
  50. package/esm/parts/Headers/HeaderCellGroup.js +4 -4
  51. package/esm/parts/Headers/index.js +2 -2
  52. package/esm/parts/HoC/withConditionalDnDColumnContext.js +19 -15
  53. package/esm/parts/HoC/withConditionalDnDRowContext.js +11 -12
  54. package/esm/parts/HoC/withConditionalDnDSortableContext.js +1 -1
  55. package/esm/parts/HoC/withDnDSortableColumnContext.js +6 -20
  56. package/esm/parts/HoC/withDnDSortableRowContext.js +4 -18
  57. package/esm/parts/Row.js +7 -10
  58. package/esm/styled.js +1 -1
  59. package/package.json +17 -33
  60. package/types/addons/Filters/Components/SelectFilter/components.d.ts +6 -6
  61. package/types/addons/Filters/Components/index.d.ts +0 -1
  62. package/types/exported-related/FilterTypes.d.ts +0 -1
  63. package/types/exported-related/Filters/index.d.ts +0 -1
  64. package/types/helpers/dndkit/hierarchy/types.d.ts +3 -3
  65. package/types/helpers/dndkit/tree/types.d.ts +3 -4
  66. package/types/helpers/dndkit/types.d.ts +2 -2
  67. package/types/helpers/refs-helpers.d.ts +1 -1
  68. package/types/parts/FilterBar/components/index.d.ts +0 -1
  69. package/types/parts/FilterBar/styled.d.ts +2 -2
  70. package/types/parts/Headers/HeaderCellGroup.d.ts +4 -3
  71. package/types/parts/Row.d.ts +2 -1
  72. package/types/styled.d.ts +19 -19
  73. package/types/types/props.d.ts +2 -2
  74. package/cjs/addons/Filters/Components/TextInputFilter/index.js +0 -92
  75. package/cjs/exported-related/Filters/textFilterFn.js +0 -14
  76. package/cjs/parts/FilterBar/components/TextPill.js +0 -42
  77. package/cjs/parts/HoC/DragOverlayContext.js +0 -11
  78. package/esm/addons/Filters/Components/TextInputFilter/index.js +0 -84
  79. package/esm/exported-related/Filters/textFilterFn.js +0 -10
  80. package/esm/parts/FilterBar/components/TextPill.js +0 -34
  81. package/esm/parts/HoC/DragOverlayContext.js +0 -7
  82. package/types/addons/Filters/Components/TextInputFilter/index.d.ts +0 -3
  83. package/types/exported-related/Filters/textFilterFn.d.ts +0 -2
  84. package/types/parts/FilterBar/components/TextPill.d.ts +0 -2
  85. package/types/parts/HoC/DragOverlayContext.d.ts +0 -6
@@ -49,7 +49,6 @@ var MultiSelectPill = require('./components/MultiSelectPill.js');
49
49
  var NumberRangePill = require('./components/NumberRangePill.js');
50
50
  var SelectPill = require('./components/SelectPill.js');
51
51
  var SingleDatePill = require('./components/SingleDatePill.js');
52
- var TextPill = require('./components/TextPill.js');
53
52
  var styled = require('./styled.js');
54
53
 
55
54
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -62,7 +61,6 @@ var _MoreOptionsVert;
62
61
  const pillRenderMapper = {
63
62
  [FilterTypes.FILTER_TYPES.SELECT]: SelectPill.SelectPill,
64
63
  [FilterTypes.FILTER_TYPES.MULTI_SELECT]: MultiSelectPill.MultiSelectPill,
65
- [FilterTypes.FILTER_TYPES.TEXT]: TextPill.TextPill,
66
64
  [FilterTypes.FILTER_TYPES.SINGLE_DATE]: SingleDatePill.SingleDatePill,
67
65
  [FilterTypes.FILTER_TYPES.DATE_RANGE]: DateRangePill.DateRangePill,
68
66
  [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: DateSwitcherPill.DateSwitcherPill,
@@ -8,7 +8,6 @@ var MultiSelectPill = require('./MultiSelectPill.js');
8
8
  var NumberRangePill = require('./NumberRangePill.js');
9
9
  var SelectPill = require('./SelectPill.js');
10
10
  var SingleDatePill = require('./SingleDatePill.js');
11
- var TextPill = require('./TextPill.js');
12
11
 
13
12
 
14
13
 
@@ -18,4 +17,3 @@ exports.MultiSelectPill = MultiSelectPill.MultiSelectPill;
18
17
  exports.NumberRangePill = NumberRangePill.NumberRangePill;
19
18
  exports.SelectPill = SelectPill.SelectPill;
20
19
  exports.SingleDatePill = SingleDatePill.SingleDatePill;
21
- exports.TextPill = TextPill.TextPill;
@@ -12,14 +12,13 @@ require('core-js/modules/web.dom-collections.iterator.js');
12
12
  require('core-js/modules/esnext.async-iterator.for-each.js');
13
13
  require('core-js/modules/esnext.iterator.for-each.js');
14
14
  var React = require('react');
15
- var index$2 = require('../../addons/Filters/Components/DateRangeFilter/index.js');
16
- var index$3 = require('../../addons/Filters/Components/DateSwitcherFilter/index.js');
17
- var index$4 = require('../../addons/Filters/Components/NumberRangeFilter/index.js');
18
- var index$5 = require('../../addons/Filters/Components/CurrencyRangeFilter/index.js');
15
+ var index$1 = require('../../addons/Filters/Components/DateRangeFilter/index.js');
16
+ var index$2 = require('../../addons/Filters/Components/DateSwitcherFilter/index.js');
17
+ var index$3 = require('../../addons/Filters/Components/NumberRangeFilter/index.js');
18
+ var index$4 = require('../../addons/Filters/Components/CurrencyRangeFilter/index.js');
19
19
  var SingleSelectFilter = require('../../addons/Filters/Components/SelectFilter/SingleSelectFilter.js');
20
20
  var MultiSelectFilter = require('../../addons/Filters/Components/SelectFilter/MultiSelectFilter.js');
21
- var index$1 = require('../../addons/Filters/Components/SingleDateFilter/index.js');
22
- var index = require('../../addons/Filters/Components/TextInputFilter/index.js');
21
+ var index = require('../../addons/Filters/Components/SingleDateFilter/index.js');
23
22
  require('@babel/runtime/helpers/jsx');
24
23
  require('@elliemae/ds-button');
25
24
  require('@elliemae/ds-popperjs');
@@ -63,12 +62,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
63
62
  const FilterMapper = {
64
63
  [FilterTypes.FILTER_TYPES.SELECT]: SingleSelectFilter.SingleSelectFilter,
65
64
  [FilterTypes.FILTER_TYPES.MULTI_SELECT]: MultiSelectFilter.MultiSelectFilter,
66
- [FilterTypes.FILTER_TYPES.TEXT]: index.TextInputFilter,
67
- [FilterTypes.FILTER_TYPES.SINGLE_DATE]: index$1.SingleDateFilter,
68
- [FilterTypes.FILTER_TYPES.DATE_RANGE]: index$2.DateRangeFilter,
69
- [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: index$3.DateSwitcherFilter,
70
- [FilterTypes.FILTER_TYPES.NUMBER_RANGE]: index$4.NumberRangeFilter,
71
- [FilterTypes.FILTER_TYPES.CURRENCY_RANGE]: index$5.CurrencyRangeFilter
65
+ [FilterTypes.FILTER_TYPES.SINGLE_DATE]: index.SingleDateFilter,
66
+ [FilterTypes.FILTER_TYPES.DATE_RANGE]: index$1.DateRangeFilter,
67
+ [FilterTypes.FILTER_TYPES.DATE_SWITCHER]: index$2.DateSwitcherFilter,
68
+ [FilterTypes.FILTER_TYPES.NUMBER_RANGE]: index$3.NumberRangeFilter,
69
+ [FilterTypes.FILTER_TYPES.CURRENCY_RANGE]: index$4.CurrencyRangeFilter
72
70
  };
73
71
  const FilterMapItem = props => {
74
72
  const {
@@ -63,7 +63,7 @@ const HeaderCellGroupComp = _ref => {
63
63
  const children = header.columns;
64
64
  const isDragging = draggableProps && draggableProps.isDragging || isDraggingParent;
65
65
  const dropIndicatorPosition = draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;
66
- const ChildGroup = isDragOverlay ? NotSortableHeaderCellGroup : HeaderCellGroup;
66
+ const ChildGroup = isDragOverlay ? HeaderCellGroup : HeaderCellGroupSortable;
67
67
  const colSpan = (_children$length = children === null || children === void 0 ? void 0 : children.length) !== null && _children$length !== void 0 ? _children$length : 1;
68
68
  return /*#__PURE__*/jsxRuntime.jsxs(StyledWrapper, {
69
69
  ref: draggableProps ? draggableProps.setNodeRef : null,
@@ -93,7 +93,8 @@ const HeaderCellGroupComp = _ref => {
93
93
  };
94
94
 
95
95
  // We need to declare this because we MUST avoid the useSortable call in the recursive calls of the function
96
- const NotSortableHeaderCellGroup = HeaderCellGroupComp;
97
- const HeaderCellGroup = withDnDSortableColumnContext.withDnDSortableColumnContext(HeaderCellGroupComp);
96
+ const HeaderCellGroup = HeaderCellGroupComp;
97
+ const HeaderCellGroupSortable = withDnDSortableColumnContext.withDnDSortableColumnContext(HeaderCellGroupComp);
98
98
 
99
99
  exports.HeaderCellGroup = HeaderCellGroup;
100
+ exports["default"] = HeaderCellGroupSortable;
@@ -35,7 +35,7 @@ const HeadersComp = () => {
35
35
  cols: gridLayout,
36
36
  colsLayoutStyle: colsLayoutStyle,
37
37
  isExpandable: isExpandable
38
- }, void 0, visibleColumns.map((h, index) => /*#__PURE__*/_jsx__default["default"](HeaderCellGroup.HeaderCellGroup, {
38
+ }, void 0, visibleColumns.map((h, index) => /*#__PURE__*/_jsx__default["default"](HeaderCellGroup["default"], {
39
39
  header: h,
40
40
  isLast: index === visibleColumns.length - 1
41
41
  }, h.id)))), [isExpandable, visibleColumns, gridLayout, colsLayoutStyle]);
@@ -8,14 +8,16 @@ require('core-js/modules/esnext.async-iterator.for-each.js');
8
8
  require('core-js/modules/esnext.iterator.constructor.js');
9
9
  require('core-js/modules/esnext.iterator.for-each.js');
10
10
  require('core-js/modules/web.dom-collections.iterator.js');
11
+ require('core-js/modules/esnext.async-iterator.find.js');
12
+ require('core-js/modules/esnext.iterator.find.js');
11
13
  require('core-js/modules/esnext.async-iterator.filter.js');
12
14
  require('core-js/modules/esnext.iterator.filter.js');
13
15
  var React = require('react');
14
16
  var core = require('@dnd-kit/core');
15
17
  var sortable = require('@dnd-kit/sortable');
16
- var DragOverlayContext = require('./DragOverlayContext.js');
17
18
  var useHierarchyDndkitConfig = require('../../helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js');
18
19
  var DataTableContext = require('../../DataTableContext.js');
20
+ var HeaderCellGroup = require('../Headers/HeaderCellGroup.js');
19
21
  var jsxRuntime = require('react/jsx-runtime');
20
22
 
21
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -36,7 +38,9 @@ const flattenColumns = cols => {
36
38
 
37
39
  const flatten = function (col, index) {
38
40
  let parentId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
39
- const id = col.Header;
41
+ const {
42
+ id
43
+ } = col;
40
44
  flattened.push([{
41
45
  id,
42
46
  parentId,
@@ -54,13 +58,11 @@ const withConditionalDnDColumnContext = Component => props => {
54
58
  const {
55
59
  tableProps: {
56
60
  dragAndDropColumns,
57
- columns,
58
61
  onColumnsReorder
59
- }
62
+ },
63
+ visibleColumns
60
64
  } = React__default["default"].useContext(DataTableContext["default"]);
61
- const [PureDraggedJSX, setPureDraggedJSX] = React__default["default"].useState(null); // todo: check if this can be done via portal
62
-
63
- const flattenedItems = React.useMemo(() => flattenColumns(columns), [columns]);
65
+ const flattenedItems = React.useMemo(() => flattenColumns(visibleColumns), [visibleColumns]);
64
66
  const onReorder = React.useCallback((movedItem, indexes) => {
65
67
  // Send from index to target index
66
68
  const newFlattenedData = sortable.arrayMove(flattenedItems, indexes.fromIndex, indexes.targetIndex); // Pull the cols's data into an object
@@ -94,15 +96,17 @@ const withConditionalDnDColumnContext = Component => props => {
94
96
  onReorder
95
97
  });
96
98
  if (dragAndDropColumns) return /*#__PURE__*/jsxRuntime.jsxs(core.DndContext, _objectSpread(_objectSpread({}, dndContextProps), {}, {
97
- children: [/*#__PURE__*/_jsx__default["default"](DragOverlayContext.DragOverlayContext.Provider, {
98
- value: {
99
- setPureDraggedJSX
100
- }
101
- }, void 0, /*#__PURE__*/_jsx__default["default"](DnDGroupContext.Provider, {
99
+ children: [/*#__PURE__*/_jsx__default["default"](DnDGroupContext.Provider, {
102
100
  value: {
103
101
  activeIndex
104
102
  }
105
- }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)))), /*#__PURE__*/_jsx__default["default"](core.DragOverlay, {}, void 0, activeId ? PureDraggedJSX : null)]
103
+ }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props))), /*#__PURE__*/_jsx__default["default"](core.DragOverlay, {}, void 0, activeId ? /*#__PURE__*/_jsx__default["default"](HeaderCellGroup.HeaderCellGroup, {
104
+ header: flattenedItems.find(_ref3 => {
105
+ let [item] = _ref3;
106
+ return item.id === activeId;
107
+ })[1],
108
+ isDragOverlay: true
109
+ }) : null)]
106
110
  }));
107
111
  return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props));
108
112
  };
@@ -8,6 +8,8 @@ require('core-js/modules/web.dom-collections.iterator.js');
8
8
  require('core-js/modules/esnext.async-iterator.for-each.js');
9
9
  require('core-js/modules/esnext.iterator.constructor.js');
10
10
  require('core-js/modules/esnext.iterator.for-each.js');
11
+ require('core-js/modules/esnext.async-iterator.find.js');
12
+ require('core-js/modules/esnext.iterator.find.js');
11
13
  require('core-js/modules/esnext.async-iterator.filter.js');
12
14
  require('core-js/modules/esnext.iterator.filter.js');
13
15
  var React = require('react');
@@ -15,8 +17,8 @@ var core = require('@dnd-kit/core');
15
17
  var sortable = require('@dnd-kit/sortable');
16
18
  var DataTableContext = require('../../DataTableContext.js');
17
19
  var useTreeDndkitConfig = require('../../helpers/dndkit/tree/useTreeDndkitConfig.js');
18
- var DragOverlayContext = require('./DragOverlayContext.js');
19
20
  var SortableItemContext = require('./SortableItemContext.js');
21
+ var Row = require('../Row.js');
20
22
  var jsxRuntime = require('react/jsx-runtime');
21
23
 
22
24
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -48,8 +50,6 @@ const withConditionalDnDRowContext = Component => props => {
48
50
  flattenedData,
49
51
  allDataFlattened
50
52
  } = React__default["default"].useContext(DataTableContext["default"]);
51
- const [PureDraggedJSX, setPureDraggedJSX] = React__default["default"].useState(null); // todo: check if this can be done via portal
52
-
53
53
  const [lastActiveId, setLastActiveId] = React__default["default"].useState(null);
54
54
  const onReorder = React.useCallback((newData, indexes, considerExpanding) => {
55
55
  // Pull the row's original data into an object
@@ -89,11 +89,7 @@ const withConditionalDnDRowContext = Component => props => {
89
89
  if (lastActiveId !== activeId && activeId) setLastActiveId(activeId);
90
90
  if (dragAndDropRows) return /*#__PURE__*/jsxRuntime.jsxs(core.DndContext, _objectSpread(_objectSpread({}, dndContextProps), {}, {
91
91
  children: [/*#__PURE__*/jsxRuntime.jsx(sortable.SortableContext, _objectSpread(_objectSpread({}, sortableContextProps), {}, {
92
- children: /*#__PURE__*/_jsx__default["default"](DragOverlayContext.DragOverlayContext.Provider, {
93
- value: {
94
- setPureDraggedJSX
95
- }
96
- }, void 0, /*#__PURE__*/_jsx__default["default"](DnDTreeContext.Provider, {
92
+ children: /*#__PURE__*/_jsx__default["default"](DnDTreeContext.Provider, {
97
93
  value: {
98
94
  activeIndex,
99
95
  depth,
@@ -102,12 +98,15 @@ const withConditionalDnDRowContext = Component => props => {
102
98
  lastActiveId,
103
99
  setLastActiveId
104
100
  }
105
- }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props))))
101
+ }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)))
106
102
  })), /*#__PURE__*/_jsx__default["default"](core.DragOverlay, {
107
103
  style: {
108
104
  width: 'auto'
109
105
  }
110
- }, void 0, activeId ? PureDraggedJSX : null)]
106
+ }, void 0, activeId ? /*#__PURE__*/_jsx__default["default"](Row.Row, {
107
+ row: flattenedData.find(row => row.uid === activeId),
108
+ isDragOverlay: true
109
+ }) : null)]
111
110
  }));
112
111
  return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props));
113
112
  };
@@ -35,7 +35,7 @@ const withConditionalDnDSortableContext = function (items) {
35
35
  // It's important that drag overlays DO NOT have any sortable functionality!
36
36
 
37
37
  if (!isDragOverlay && dragAndDropColumns) return /*#__PURE__*/_jsx__default["default"](sortable.SortableContext, {
38
- items: items.map(item => item.Header),
38
+ items: items.map(item => item.id),
39
39
  strategy: sortable.horizontalListSortingStrategy
40
40
  }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)));
41
41
  return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props));
@@ -12,7 +12,6 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
12
  var React = require('react');
13
13
  var sortable = require('@dnd-kit/sortable');
14
14
  var DataTableContext = require('../../DataTableContext.js');
15
- var DragOverlayContext = require('./DragOverlayContext.js');
16
15
  var withConditionalDnDColumnContext = require('./withConditionalDnDColumnContext.js');
17
16
  var SortableItemContext = require('./SortableItemContext.js');
18
17
  var jsxRuntime = require('react/jsx-runtime');
@@ -31,18 +30,14 @@ const withDnDSortableColumnContext = Component => props => {
31
30
  dragAndDropColumns
32
31
  }
33
32
  } = React.useContext(DataTableContext["default"]);
34
- const {
35
- setPureDraggedJSX
36
- } = React.useContext(DragOverlayContext.DragOverlayContext);
37
33
  const {
38
34
  activeIndex
39
35
  } = React.useContext(withConditionalDnDColumnContext.DnDGroupContext); // onMount generate unique options, so everyting is only ran once
40
36
 
41
37
  const draggableOptions = React.useMemo(() => ({
42
- id: props.header.Header
43
- }), [props.header.Header]);
44
- const useSortableHelpers = sortable.useSortable(draggableOptions);
45
- const PureComponentJSX = React.useMemo(() => /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)), [props]); // calculate all the "useSortable" values as per required
38
+ id: props.header.id
39
+ }), [props.header.id]);
40
+ const useSortableHelpers = sortable.useSortable(draggableOptions); // calculate all the "useSortable" values as per required
46
41
 
47
42
  const draggableProps = React.useMemo(() => {
48
43
  if (!dragAndDropColumns) return false;
@@ -54,16 +49,7 @@ const withDnDSortableColumnContext = Component => props => {
54
49
  shouldShowDropIndicatorPosition: overIndex === index && overIndex !== -1,
55
50
  dropIndicatorPosition: index > activeIndex ? SortableItemContext.DropIndicatorPosition.After : SortableItemContext.DropIndicatorPosition.Before
56
51
  });
57
- }, [useSortableHelpers, dragAndDropColumns, activeIndex]);
58
- React.useEffect(() => {
59
- // We assume the structure of the inner element WON'T change during DnD
60
- // This is a huge performance boost
61
- if (useSortableHelpers.isDragging) {
62
- setPureDraggedJSX( /*#__PURE__*/React.cloneElement(PureComponentJSX, {
63
- isDragOverlay: true
64
- }));
65
- }
66
- }, [useSortableHelpers.isDragging, setPureDraggedJSX]); // we use a context so we can easly access information wherever without bubbling down
52
+ }, [useSortableHelpers, dragAndDropColumns, activeIndex]); // we use a context so we can easly access information wherever without bubbling down
67
53
  // this context is all Memoized so as long as component is not re-mounted,
68
54
  // the context won't trigger un-required renders per-se...
69
55
 
@@ -73,7 +59,7 @@ const withDnDSortableColumnContext = Component => props => {
73
59
 
74
60
  return /*#__PURE__*/_jsx__default["default"](SortableItemContext.SortableItemContext.Provider, {
75
61
  value: ctx
76
- }, void 0, PureComponentJSX);
62
+ }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)));
77
63
  };
78
64
 
79
65
  exports.withDnDSortableColumnContext = withDnDSortableColumnContext;
@@ -13,7 +13,6 @@ var React = require('react');
13
13
  var sortable = require('@dnd-kit/sortable');
14
14
  var DataTableContext = require('../../DataTableContext.js');
15
15
  var withConditionalDnDRowContext = require('./withConditionalDnDRowContext.js');
16
- var DragOverlayContext = require('./DragOverlayContext.js');
17
16
  var SortableItemContext = require('./SortableItemContext.js');
18
17
  var jsxRuntime = require('react/jsx-runtime');
19
18
 
@@ -31,9 +30,6 @@ const withDnDSortableRowContext = Component => props => {
31
30
  dragAndDropRows
32
31
  }
33
32
  } = React.useContext(DataTableContext["default"]);
34
- const {
35
- setPureDraggedJSX
36
- } = React.useContext(DragOverlayContext.DragOverlayContext);
37
33
  const {
38
34
  dropIndicatorPosition,
39
35
  lastActiveId,
@@ -43,8 +39,7 @@ const withDnDSortableRowContext = Component => props => {
43
39
  const draggableOptions = React.useMemo(() => ({
44
40
  id: props.row.uid
45
41
  }), [props.row]);
46
- const useSortableHelpers = sortable.useSortable(draggableOptions);
47
- const PureComponentJSX = React.useMemo(() => /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)), [props]); // calculate all the "useSortable" values as per required
42
+ const useSortableHelpers = sortable.useSortable(draggableOptions); // calculate all the "useSortable" values as per required
48
43
 
49
44
  const draggableProps = React.useMemo(() => {
50
45
  if (!dragAndDropRows) return false;
@@ -58,16 +53,7 @@ const withDnDSortableRowContext = Component => props => {
58
53
  lastActiveId,
59
54
  setLastActiveId
60
55
  });
61
- }, [dragAndDropRows, useSortableHelpers, dropIndicatorPosition, lastActiveId, setLastActiveId]);
62
- React.useEffect(() => {
63
- // We assume the structure of the inner element WON'T change during DnD
64
- // This is a huge performance boost
65
- if (useSortableHelpers.isDragging) {
66
- setPureDraggedJSX( /*#__PURE__*/React.cloneElement(PureComponentJSX, {
67
- isDragOverlay: true
68
- }));
69
- }
70
- }, [useSortableHelpers.isDragging, setPureDraggedJSX]); // we use a context so we can easly access information wherever without bubbling down
56
+ }, [dragAndDropRows, useSortableHelpers, dropIndicatorPosition, lastActiveId, setLastActiveId]); // we use a context so we can easly access information wherever without bubbling down
71
57
  // this context is all Memoized so as long as component is not re-mounted,
72
58
  // the context won't trigger un-required renders per-se...
73
59
 
@@ -77,7 +63,7 @@ const withDnDSortableRowContext = Component => props => {
77
63
 
78
64
  return /*#__PURE__*/_jsx__default["default"](SortableItemContext.SortableItemContext.Provider, {
79
65
  value: ctx
80
- }, void 0, PureComponentJSX);
66
+ }, void 0, /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread({}, props)));
81
67
  };
82
68
 
83
69
  exports.withDnDSortableRowContext = withDnDSortableRowContext;
package/cjs/parts/Row.js CHANGED
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  var _jsx = require('@babel/runtime/helpers/jsx');
4
6
  require('core-js/modules/web.dom-collections.iterator.js');
5
7
  var React = require('react');
@@ -22,17 +24,17 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
22
24
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
25
 
24
26
  const setItemRefs = (measureRef, draggableRef, ref) => {
25
- const refsToSet = [measureRef];
27
+ const refsToSet = [];
28
+ if (measureRef) refsToSet.push(measureRef);
26
29
  if (draggableRef) refsToSet.push(draggableRef);
27
30
  refsHelpers.setMultipleRefs(...refsToSet)(ref);
28
31
  };
29
32
 
30
- const Row = props => {
33
+ const RowComp = props => {
31
34
  const {
32
35
  row,
33
36
  measureRef,
34
37
  itemWrapperStyle,
35
- itemIndex,
36
38
  isDragOverlay,
37
39
  focusedRowId,
38
40
  selectedRowId
@@ -47,7 +49,7 @@ const Row = props => {
47
49
  ref: ref => setItemRefs(measureRef, draggableRef, ref),
48
50
  children: /*#__PURE__*/_jsx__default["default"](index.RowVariantMapItem, {
49
51
  row: row,
50
- itemIndex: itemIndex,
52
+ itemIndex: row.realIndex,
51
53
  isDragOverlay: isDragOverlay,
52
54
  ctx: ctx,
53
55
  focusedRowId: focusedRowId,
@@ -56,15 +58,13 @@ const Row = props => {
56
58
  });
57
59
  };
58
60
 
59
- Row.defaultProps = {
60
- itemWrapperStyle: {}
61
- };
62
-
63
61
  const mapStateToProps = state => ({
64
62
  focusedRowId: state.rows.focusedRowId,
65
63
  selectedRowId: state.rows.selectedRowId
66
64
  });
67
65
 
68
- var Row$1 = withDnDSortableRowContext.withDnDSortableRowContext(reactRedux.connect(mapStateToProps)(Row));
66
+ const Row = reactRedux.connect(mapStateToProps)(RowComp);
67
+ var Row$1 = withDnDSortableRowContext.withDnDSortableRowContext(Row);
69
68
 
70
- module.exports = Row$1;
69
+ exports.Row = Row;
70
+ exports["default"] = Row$1;
package/cjs/parts/Rows.js CHANGED
@@ -64,7 +64,7 @@ const Rows = () => {
64
64
  itemIndex: index,
65
65
  itemWrapperStyle: style
66
66
  };
67
- return /*#__PURE__*/jsxRuntime.jsx(Row, _objectSpread({}, rowProps));
67
+ return /*#__PURE__*/jsxRuntime.jsx(Row["default"], _objectSpread({}, rowProps));
68
68
  })
69
69
  }), [virtualItems, items, visibleColumns, totalColumnsWidth]);
70
70
  return PureVirtualizedRows;
@@ -14,6 +14,6 @@ var DnDHandle = require('./DnDHandle.js');
14
14
  exports.TableContent = TableContent;
15
15
  exports.Loader = Loader;
16
16
  exports.EmptyContent = EmptyContent;
17
- exports.Row = Row;
17
+ exports.Row = Row["default"];
18
18
  exports.Footer = Footer;
19
19
  exports.DnDHandle = DnDHandle;
package/cjs/styled.js CHANGED
@@ -181,7 +181,7 @@ const GroupHeaderTitle = /*#__PURE__*/styled__default["default"].span.withConfig
181
181
  })(["font-weight:", ";font-size:12px;color:", ";"], props => props.theme.fontWeights.semibold, props => props.theme.colors.neutral[700]);
182
182
  const StyledCellContainer = /*#__PURE__*/styled__default["default"](Grid__default["default"]).withConfig({
183
183
  componentId: "sc-38sgfo-18"
184
- })(["position:relative;z-index:2;min-height:", ";height:", ";width:", ";", ";background-color:", ";outline:none;:focus{", "}", " ", " box-shadow:0 2px 4px 0 ", ";opacity:", ";", " color:", ";"], props => props.minHeight || '36px', props => props.height || 'auto', props => props.colLayoutStyle === constants.ColsLayoutStyle.Fixed ? sizeToCss.sizeToCss(props.totalColumnsWidth) : '100%', props => getGridTemplateColumnsStyle({
184
+ })(["position:relative;z-index:2;min-height:", ";height:", ";width:", ";", ";", ";background-color:", ";outline:none;:focus{", "}", " ", " box-shadow:0 2px 4px 0 ", ";opacity:", ";", " color:", ";"], props => props.minHeight || '36px', props => props.height || 'auto', props => props.colLayoutStyle === constants.ColsLayoutStyle.Fixed ? sizeToCss.sizeToCss(props.totalColumnsWidth) : '100%', props => props.isDragOverlay ? 'width: fit-content;' : '', props => getGridTemplateColumnsStyle({
185
185
  cols: props.cols,
186
186
  colsLayoutStyle: props.colLayoutStyle,
187
187
  isExpandable: props.isExpandable
@@ -1,7 +1,7 @@
1
1
  import { PropTypes } from 'react-desc';
2
2
 
3
3
  /* eslint-disable max-lines */
4
- const outOfTheBoxFilterType = PropTypes.oneOf(['ds-filter-select', 'ds-filter-multi-select', 'ds-filter-text', 'ds-filter-single-date', 'ds-filter-date-range', 'ds-filter-number-range']);
4
+ const outOfTheBoxFilterType = PropTypes.oneOf(['ds-filter-select', 'ds-filter-multi-select', 'ds-filter-single-date', 'ds-filter-date-range', 'ds-filter-number-range']);
5
5
  const textWrappingType = PropTypes.oneOf(['wrap', 'wrap-all', 'truncate']);
6
6
  const rowVariantType = PropTypes.oneOf(['ds_header_group_row', 'ds_primary_row', 'ds_secondary_row']);
7
7
  const columnPropTypes = {
@@ -5,4 +5,3 @@ export { CurrencyRangeFilter } from './CurrencyRangeFilter/index.js';
5
5
  export { SingleSelectFilter } from './SelectFilter/SingleSelectFilter.js';
6
6
  export { MultiSelectFilter } from './SelectFilter/MultiSelectFilter.js';
7
7
  export { SingleDateFilter } from './SingleDateFilter/index.js';
8
- export { TextInputFilter } from './TextInputFilter/index.js';
@@ -5,4 +5,3 @@ export { CurrencyRangeFilter } from './Components/CurrencyRangeFilter/index.js';
5
5
  export { SingleSelectFilter } from './Components/SelectFilter/SingleSelectFilter.js';
6
6
  export { MultiSelectFilter } from './Components/SelectFilter/MultiSelectFilter.js';
7
7
  export { SingleDateFilter } from './Components/SingleDateFilter/index.js';
8
- export { TextInputFilter } from './Components/TextInputFilter/index.js';
@@ -41,6 +41,9 @@ const FilterButton = /*#__PURE__*/styled.span.withConfig({
41
41
  const Button = /*#__PURE__*/styled(DSButton).withConfig({
42
42
  componentId: "sc-16i88ut-1"
43
43
  })(["position:relative;justify-self:flex-end;"]);
44
+ const PopperContent = /*#__PURE__*/styled.div.withConfig({
45
+ componentId: "sc-16i88ut-2"
46
+ })(["background-color:'#fff';"]);
44
47
  const FilterPopover = _ref2 => {
45
48
  var _column$ref$current$o, _column$ref, _column$ref$current;
46
49
 
@@ -141,9 +144,20 @@ const FilterPopover = _ref2 => {
141
144
  minWidth: (_column$ref$current$o = (_column$ref = column.ref) === null || _column$ref === void 0 ? void 0 : (_column$ref$current = _column$ref.current) === null || _column$ref$current === void 0 ? void 0 : _column$ref$current.offsetWidth) !== null && _column$ref$current$o !== void 0 ? _column$ref$current$o : '0px'
142
145
  }),
143
146
  placementOrderPreference: ['bottom-end']
144
- }, void 0, /*#__PURE__*/jsx("div", {
145
- style: {
146
- backgroundColor: '#fff'
147
+ }, void 0, /*#__PURE__*/jsx(PopperContent, {
148
+ onKeyDown: e => {
149
+ if (e.code === 'Tab') {
150
+ setTimeout(() => {
151
+ var _popperRef$current;
152
+
153
+ if (!(popperRef !== null && popperRef !== void 0 && (_popperRef$current = popperRef.current) !== null && _popperRef$current !== void 0 && _popperRef$current.contains(document.activeElement))) {
154
+ patchHeader(columnId, {
155
+ hideFilterMenu: true,
156
+ hideFilterButton: false
157
+ });
158
+ }
159
+ });
160
+ }
147
161
  },
148
162
  ref: popperRef,
149
163
  children: menuContent
@@ -1,7 +1,6 @@
1
1
  const FILTER_TYPES = {
2
2
  SELECT: 'ds-filter-select',
3
3
  MULTI_SELECT: 'ds-filter-multi-select',
4
- TEXT: 'ds-filter-text',
5
4
  SINGLE_DATE: 'ds-filter-single-date',
6
5
  DATE_RANGE: 'ds-filter-date-range',
7
6
  DATE_SWITCHER: 'ds-filter-date-switcher',
@@ -3,7 +3,6 @@ import 'core-js/modules/esnext.iterator.constructor.js';
3
3
  import 'core-js/modules/esnext.iterator.for-each.js';
4
4
  import { singleSelectFilterFn } from './singleSelectFilterFn.js';
5
5
  import { multiSelectFilterFn } from './multiSelectFilterFn.js';
6
- import { textFilterFn } from './textFilterFn.js';
7
6
  import { singleDateFilterFn } from './singleDateFilterFn.js';
8
7
  import { dateRangeFilterFn } from './dateRangeFilterFn.js';
9
8
  import { dateSwitcherFilterFn } from './dateSwitcherFilterFn.js';
@@ -15,7 +14,6 @@ import { FILTER_TYPES } from '../FilterTypes.js';
15
14
  const filterMapper = {
16
15
  [FILTER_TYPES.SELECT]: singleSelectFilterFn,
17
16
  [FILTER_TYPES.MULTI_SELECT]: multiSelectFilterFn,
18
- [FILTER_TYPES.TEXT]: textFilterFn,
19
17
  [FILTER_TYPES.SINGLE_DATE]: singleDateFilterFn,
20
18
  [FILTER_TYPES.DATE_RANGE]: dateRangeFilterFn,
21
19
  [FILTER_TYPES.DATE_SWITCHER]: dateSwitcherFilterFn,
@@ -1,5 +1,4 @@
1
1
  export { applyOutOfTheBoxFilters } from './applyOutOfTheBoxFilters.js';
2
- export { textFilterFn } from './textFilterFn.js';
3
2
  export { singleDateFilterFn } from './singleDateFilterFn.js';
4
3
  export { singleSelectFilterFn } from './singleSelectFilterFn.js';
5
4
  export { multiSelectFilterFn } from './multiSelectFilterFn.js';
@@ -5,7 +5,6 @@ export { groupBy } from './groupBy.js';
5
5
  export { FILTER_TYPES } from './FilterTypes.js';
6
6
  export { ROW_VARIANTS, ROW_VARIANT_COMPACT_KEY, ROW_VARIANT_KEY } from './RowVariants.js';
7
7
  export { applyOutOfTheBoxFilters } from './Filters/applyOutOfTheBoxFilters.js';
8
- export { textFilterFn } from './Filters/textFilterFn.js';
9
8
  export { singleDateFilterFn } from './Filters/singleDateFilterFn.js';
10
9
  export { singleSelectFilterFn } from './Filters/singleSelectFilterFn.js';
11
10
  export { multiSelectFilterFn } from './Filters/multiSelectFilterFn.js';
@@ -1,12 +1,12 @@
1
1
  import 'core-js/modules/esnext.async-iterator.filter.js';
2
2
  import 'core-js/modules/esnext.iterator.constructor.js';
3
3
  import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/web.dom-collections.iterator.js';
5
4
  import 'core-js/modules/esnext.async-iterator.find.js';
6
5
  import 'core-js/modules/esnext.iterator.find.js';
7
6
  import 'core-js/modules/esnext.async-iterator.for-each.js';
8
7
  import 'core-js/modules/esnext.iterator.for-each.js';
9
8
  import { DATA_TESTID } from '../../../configs/constants.js';
9
+ import 'core-js/modules/web.dom-collections.iterator.js';
10
10
  import 'core-js/modules/esnext.async-iterator.reduce.js';
11
11
  import 'core-js/modules/esnext.iterator.reduce.js';
12
12
  import 'react';
@@ -31,42 +31,55 @@ import '../../../parts/Row.js';
31
31
  import '../../../parts/Footer.js';
32
32
  import '../../../parts/HoC/SortableItemContext.js';
33
33
 
34
- const customCollisionDetection = (activeId, activeParent, dndItems) => (entries, target) => {
34
+ const customCollisionDetection = (activeId, activeParent, dndItems) => _ref => {
35
35
  var _document$querySelect, _document$querySelect2;
36
36
 
37
- const entriesWithSameParent = entries.filter(_ref => {
37
+ let {
38
+ droppableContainers,
39
+ collisionRect
40
+ } = _ref;
41
+ const entriesWithSameParent = droppableContainers.filter(_ref2 => {
38
42
  var _dndItems$find;
39
43
 
40
- let [id] = _ref;
44
+ let {
45
+ id
46
+ } = _ref2;
41
47
  return ((_dndItems$find = dndItems.find(item => item.id === id)) === null || _dndItems$find === void 0 ? void 0 : _dndItems$find.parentId) === activeParent;
42
48
  });
43
49
  const dragOverlayRect = (_document$querySelect = (_document$querySelect2 = document.querySelector("[data-testid=\"".concat(DATA_TESTID.DATA_TABLE_COLUMN_DRAG_OVERLAY, "\"]"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.getBoundingClientRect()) !== null && _document$querySelect !== void 0 ? _document$querySelect : {
44
50
  width: 150
45
51
  };
46
- const originalRect = entriesWithSameParent.find(_ref2 => {
47
- let [id] = _ref2;
52
+ const originalContainer = entriesWithSameParent.find(_ref3 => {
53
+ let {
54
+ id
55
+ } = _ref3;
48
56
  return id === activeId;
49
57
  });
58
+ const originalRect = originalContainer.rect.current;
50
59
 
51
- if (originalRect[1].offsetLeft <= target.offsetLeft && target.offsetLeft <= originalRect[1].offsetLeft + originalRect[1].width) {
52
- return originalRect[0];
60
+ if (originalRect.offsetLeft <= collisionRect.offsetLeft && collisionRect.offsetLeft <= originalRect.offsetLeft + originalRect.width) {
61
+ return originalContainer.id;
53
62
  }
54
63
 
55
- const isLeft = target.offsetLeft <= originalRect[1].offsetLeft + dragOverlayRect.width / 2 + 5;
64
+ const isLeft = collisionRect.offsetLeft <= originalRect.offsetLeft + dragOverlayRect.width / 2 + 5;
56
65
  let match = null; // If going to the left, search the closest offset left
57
66
  // Otherwise, get the closest offset right
58
67
 
59
- const collisionPoint = target.offsetLeft + dragOverlayRect.width / 2;
68
+ const collisionPoint = collisionRect.offsetLeft + dragOverlayRect.width / 2;
60
69
  entriesWithSameParent.forEach(entry => {
61
- const [, rect] = entry;
70
+ const {
71
+ rect: {
72
+ current: rect
73
+ }
74
+ } = entry;
62
75
  const offsetRight = rect.offsetLeft + rect.width;
63
- if (!match) match = entry;else if (isLeft && Math.abs(collisionPoint - rect.offsetLeft) <= Math.abs(collisionPoint - match[1].offsetLeft)) {
76
+ if (!match) match = entry;else if (isLeft && Math.abs(collisionPoint - rect.offsetLeft) <= Math.abs(collisionPoint - match.rect.current.offsetLeft)) {
64
77
  match = entry;
65
- } else if (!isLeft && Math.abs(collisionPoint - offsetRight) <= Math.abs(collisionPoint - match[1].offsetLeft - match[1].width)) {
78
+ } else if (!isLeft && Math.abs(collisionPoint - offsetRight) <= Math.abs(collisionPoint - match.rect.current.offsetLeft - match.rect.current.width)) {
66
79
  match = entry;
67
80
  }
68
81
  });
69
- return match === null ? null : match[0];
82
+ return match === null ? null : match.id;
70
83
  };
71
84
 
72
85
  export { customCollisionDetection };