@elliemae/ds-data-table 2.0.0-rc.3 → 2.0.0-rc.7
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.
- package/cjs/DataTableSchema.js +1 -1
- package/cjs/addons/Filters/Components/index.js +0 -2
- package/cjs/addons/Filters/index.js +0 -2
- package/cjs/exported-related/FilterPopover.js +17 -3
- package/cjs/exported-related/FilterTypes.js +0 -1
- package/cjs/exported-related/Filters/applyOutOfTheBoxFilters.js +0 -2
- package/cjs/exported-related/Filters/index.js +0 -2
- package/cjs/exported-related/index.js +0 -2
- package/cjs/helpers/dndkit/hierarchy/customCollisionDetection.js +27 -14
- package/cjs/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +22 -20
- package/cjs/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +5 -3
- package/cjs/helpers/dndkit/tree/customCollisionDetection.js +45 -25
- package/cjs/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +25 -30
- package/cjs/helpers/dndkit/tree/useTreeDndkitConfig.js +5 -3
- package/cjs/helpers/refs-helpers.js +2 -2
- package/cjs/index.js +0 -2
- package/cjs/parts/FilterBar/FiltersBar.js +0 -2
- package/cjs/parts/FilterBar/components/index.js +0 -2
- package/cjs/parts/Filters/index.js +10 -12
- package/cjs/parts/Headers/HeaderCellGroup.js +4 -3
- package/cjs/parts/Headers/index.js +1 -1
- package/cjs/parts/HoC/withConditionalDnDColumnContext.js +17 -13
- package/cjs/parts/HoC/withConditionalDnDRowContext.js +9 -10
- package/cjs/parts/HoC/withConditionalDnDSortableContext.js +1 -1
- package/cjs/parts/HoC/withDnDSortableColumnContext.js +5 -19
- package/cjs/parts/HoC/withDnDSortableRowContext.js +3 -17
- package/cjs/parts/Row.js +10 -10
- package/cjs/parts/Rows.js +1 -1
- package/cjs/parts/index.js +1 -1
- package/cjs/styled.js +1 -1
- package/esm/DataTableSchema.js +1 -1
- package/esm/addons/Filters/Components/index.js +0 -1
- package/esm/addons/Filters/index.js +0 -1
- package/esm/exported-related/FilterPopover.js +17 -3
- package/esm/exported-related/FilterTypes.js +0 -1
- package/esm/exported-related/Filters/applyOutOfTheBoxFilters.js +0 -2
- package/esm/exported-related/Filters/index.js +0 -1
- package/esm/exported-related/index.js +0 -1
- package/esm/helpers/dndkit/hierarchy/customCollisionDetection.js +27 -14
- package/esm/helpers/dndkit/hierarchy/getHierarchyKeyboardCoordinates.js +22 -20
- package/esm/helpers/dndkit/hierarchy/useHierarchyDndkitConfig.js +6 -4
- package/esm/helpers/dndkit/tree/customCollisionDetection.js +45 -25
- package/esm/helpers/dndkit/tree/getTreeKeyboardCoordinates.js +26 -31
- package/esm/helpers/dndkit/tree/useTreeDndkitConfig.js +6 -4
- package/esm/helpers/refs-helpers.js +2 -2
- package/esm/index.js +0 -1
- package/esm/parts/FilterBar/FiltersBar.js +0 -2
- package/esm/parts/FilterBar/components/index.js +0 -1
- package/esm/parts/Filters/index.js +0 -2
- package/esm/parts/Headers/HeaderCellGroup.js +4 -4
- package/esm/parts/Headers/index.js +2 -2
- package/esm/parts/HoC/withConditionalDnDColumnContext.js +19 -15
- package/esm/parts/HoC/withConditionalDnDRowContext.js +11 -12
- package/esm/parts/HoC/withConditionalDnDSortableContext.js +1 -1
- package/esm/parts/HoC/withDnDSortableColumnContext.js +6 -20
- package/esm/parts/HoC/withDnDSortableRowContext.js +4 -18
- package/esm/parts/Row.js +7 -10
- package/esm/styled.js +1 -1
- package/package.json +17 -33
- package/types/addons/Filters/Components/SelectFilter/components.d.ts +6 -6
- package/types/addons/Filters/Components/index.d.ts +0 -1
- package/types/exported-related/FilterTypes.d.ts +0 -1
- package/types/exported-related/Filters/index.d.ts +0 -1
- package/types/helpers/dndkit/hierarchy/types.d.ts +3 -3
- package/types/helpers/dndkit/tree/types.d.ts +3 -4
- package/types/helpers/dndkit/types.d.ts +2 -2
- package/types/helpers/refs-helpers.d.ts +1 -1
- package/types/parts/FilterBar/components/index.d.ts +0 -1
- package/types/parts/FilterBar/styled.d.ts +2 -2
- package/types/parts/Headers/HeaderCellGroup.d.ts +4 -3
- package/types/parts/Row.d.ts +2 -1
- package/types/styled.d.ts +19 -19
- package/types/types/props.d.ts +2 -2
- package/cjs/addons/Filters/Components/TextInputFilter/index.js +0 -92
- package/cjs/exported-related/Filters/textFilterFn.js +0 -14
- package/cjs/parts/FilterBar/components/TextPill.js +0 -42
- package/cjs/parts/HoC/DragOverlayContext.js +0 -11
- package/esm/addons/Filters/Components/TextInputFilter/index.js +0 -84
- package/esm/exported-related/Filters/textFilterFn.js +0 -10
- package/esm/parts/FilterBar/components/TextPill.js +0 -34
- package/esm/parts/HoC/DragOverlayContext.js +0 -7
- package/types/addons/Filters/Components/TextInputFilter/index.d.ts +0 -3
- package/types/exported-related/Filters/textFilterFn.d.ts +0 -2
- package/types/parts/FilterBar/components/TextPill.d.ts +0 -2
- 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$
|
|
16
|
-
var index$
|
|
17
|
-
var index$
|
|
18
|
-
var index$
|
|
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
|
|
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.
|
|
67
|
-
[FilterTypes.FILTER_TYPES.
|
|
68
|
-
[FilterTypes.FILTER_TYPES.
|
|
69
|
-
[FilterTypes.FILTER_TYPES.
|
|
70
|
-
[FilterTypes.FILTER_TYPES.
|
|
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 ?
|
|
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
|
|
97
|
-
const
|
|
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
|
|
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
|
|
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
|
|
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"](
|
|
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)))
|
|
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"](
|
|
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 ?
|
|
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.
|
|
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.
|
|
43
|
-
}), [props.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,
|
|
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,
|
|
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 = [
|
|
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
|
|
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:
|
|
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
|
-
|
|
66
|
+
const Row = reactRedux.connect(mapStateToProps)(RowComp);
|
|
67
|
+
var Row$1 = withDnDSortableRowContext.withDnDSortableRowContext(Row);
|
|
69
68
|
|
|
70
|
-
|
|
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;
|
package/cjs/parts/index.js
CHANGED
|
@@ -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
|
package/esm/DataTableSchema.js
CHANGED
|
@@ -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-
|
|
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(
|
|
145
|
-
|
|
146
|
-
|
|
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
|
|
@@ -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) =>
|
|
34
|
+
const customCollisionDetection = (activeId, activeParent, dndItems) => _ref => {
|
|
35
35
|
var _document$querySelect, _document$querySelect2;
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
let {
|
|
38
|
+
droppableContainers,
|
|
39
|
+
collisionRect
|
|
40
|
+
} = _ref;
|
|
41
|
+
const entriesWithSameParent = droppableContainers.filter(_ref2 => {
|
|
38
42
|
var _dndItems$find;
|
|
39
43
|
|
|
40
|
-
let
|
|
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
|
|
47
|
-
let
|
|
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
|
|
52
|
-
return
|
|
60
|
+
if (originalRect.offsetLeft <= collisionRect.offsetLeft && collisionRect.offsetLeft <= originalRect.offsetLeft + originalRect.width) {
|
|
61
|
+
return originalContainer.id;
|
|
53
62
|
}
|
|
54
63
|
|
|
55
|
-
const isLeft =
|
|
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 =
|
|
68
|
+
const collisionPoint = collisionRect.offsetLeft + dragOverlayRect.width / 2;
|
|
60
69
|
entriesWithSameParent.forEach(entry => {
|
|
61
|
-
const
|
|
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
|
|
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
|
|
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
|
|
82
|
+
return match === null ? null : match.id;
|
|
70
83
|
};
|
|
71
84
|
|
|
72
85
|
export { customCollisionDetection };
|