@elliemae/ds-data-table 2.0.0-rc.4 → 2.0.0-rc.8
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/DataTable.d.ts +245 -43
- package/types/DataTableSchema.d.ts +245 -43
- 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 +165 -30
- 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
package/cjs/DataTableSchema.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var reactDesc = require('react-desc');
|
|
6
6
|
|
|
7
7
|
/* eslint-disable max-lines */
|
|
8
|
-
const outOfTheBoxFilterType = reactDesc.PropTypes.oneOf(['ds-filter-select', 'ds-filter-multi-select', 'ds-filter-
|
|
8
|
+
const outOfTheBoxFilterType = reactDesc.PropTypes.oneOf(['ds-filter-select', 'ds-filter-multi-select', 'ds-filter-single-date', 'ds-filter-date-range', 'ds-filter-number-range']);
|
|
9
9
|
const textWrappingType = reactDesc.PropTypes.oneOf(['wrap', 'wrap-all', 'truncate']);
|
|
10
10
|
const rowVariantType = reactDesc.PropTypes.oneOf(['ds_header_group_row', 'ds_primary_row', 'ds_secondary_row']);
|
|
11
11
|
const columnPropTypes = {
|
|
@@ -9,7 +9,6 @@ var index$3 = require('./CurrencyRangeFilter/index.js');
|
|
|
9
9
|
var SingleSelectFilter = require('./SelectFilter/SingleSelectFilter.js');
|
|
10
10
|
var MultiSelectFilter = require('./SelectFilter/MultiSelectFilter.js');
|
|
11
11
|
var index$4 = require('./SingleDateFilter/index.js');
|
|
12
|
-
var index$5 = require('./TextInputFilter/index.js');
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
|
|
@@ -20,4 +19,3 @@ exports.CurrencyRangeFilter = index$3.CurrencyRangeFilter;
|
|
|
20
19
|
exports.SingleSelectFilter = SingleSelectFilter.SingleSelectFilter;
|
|
21
20
|
exports.MultiSelectFilter = MultiSelectFilter.MultiSelectFilter;
|
|
22
21
|
exports.SingleDateFilter = index$4.SingleDateFilter;
|
|
23
|
-
exports.TextInputFilter = index$5.TextInputFilter;
|
|
@@ -9,7 +9,6 @@ var index$3 = require('./Components/CurrencyRangeFilter/index.js');
|
|
|
9
9
|
var SingleSelectFilter = require('./Components/SelectFilter/SingleSelectFilter.js');
|
|
10
10
|
var MultiSelectFilter = require('./Components/SelectFilter/MultiSelectFilter.js');
|
|
11
11
|
var index$4 = require('./Components/SingleDateFilter/index.js');
|
|
12
|
-
var index$5 = require('./Components/TextInputFilter/index.js');
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
|
|
@@ -20,4 +19,3 @@ exports.CurrencyRangeFilter = index$3.CurrencyRangeFilter;
|
|
|
20
19
|
exports.SingleSelectFilter = SingleSelectFilter.SingleSelectFilter;
|
|
21
20
|
exports.MultiSelectFilter = MultiSelectFilter.MultiSelectFilter;
|
|
22
21
|
exports.SingleDateFilter = index$4.SingleDateFilter;
|
|
23
|
-
exports.TextInputFilter = index$5.TextInputFilter;
|
|
@@ -52,6 +52,9 @@ const FilterButton = /*#__PURE__*/styled__default["default"].span.withConfig({
|
|
|
52
52
|
const Button = /*#__PURE__*/styled__default["default"](DSButton__default["default"]).withConfig({
|
|
53
53
|
componentId: "sc-16i88ut-1"
|
|
54
54
|
})(["position:relative;justify-self:flex-end;"]);
|
|
55
|
+
const PopperContent = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
56
|
+
componentId: "sc-16i88ut-2"
|
|
57
|
+
})(["background-color:'#fff';"]);
|
|
55
58
|
const FilterPopover = _ref2 => {
|
|
56
59
|
var _column$ref$current$o, _column$ref, _column$ref$current;
|
|
57
60
|
|
|
@@ -152,9 +155,20 @@ const FilterPopover = _ref2 => {
|
|
|
152
155
|
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'
|
|
153
156
|
}),
|
|
154
157
|
placementOrderPreference: ['bottom-end']
|
|
155
|
-
}, void 0, /*#__PURE__*/jsxRuntime.jsx(
|
|
156
|
-
|
|
157
|
-
|
|
158
|
+
}, void 0, /*#__PURE__*/jsxRuntime.jsx(PopperContent, {
|
|
159
|
+
onKeyDown: e => {
|
|
160
|
+
if (e.code === 'Tab') {
|
|
161
|
+
setTimeout(() => {
|
|
162
|
+
var _popperRef$current;
|
|
163
|
+
|
|
164
|
+
if (!(popperRef !== null && popperRef !== void 0 && (_popperRef$current = popperRef.current) !== null && _popperRef$current !== void 0 && _popperRef$current.contains(document.activeElement))) {
|
|
165
|
+
patchHeader(columnId, {
|
|
166
|
+
hideFilterMenu: true,
|
|
167
|
+
hideFilterButton: false
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
158
172
|
},
|
|
159
173
|
ref: popperRef,
|
|
160
174
|
children: menuContent
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const FILTER_TYPES = {
|
|
6
6
|
SELECT: 'ds-filter-select',
|
|
7
7
|
MULTI_SELECT: 'ds-filter-multi-select',
|
|
8
|
-
TEXT: 'ds-filter-text',
|
|
9
8
|
SINGLE_DATE: 'ds-filter-single-date',
|
|
10
9
|
DATE_RANGE: 'ds-filter-date-range',
|
|
11
10
|
DATE_SWITCHER: 'ds-filter-date-switcher',
|
|
@@ -7,7 +7,6 @@ require('core-js/modules/esnext.iterator.constructor.js');
|
|
|
7
7
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
8
8
|
var singleSelectFilterFn = require('./singleSelectFilterFn.js');
|
|
9
9
|
var multiSelectFilterFn = require('./multiSelectFilterFn.js');
|
|
10
|
-
var textFilterFn = require('./textFilterFn.js');
|
|
11
10
|
var singleDateFilterFn = require('./singleDateFilterFn.js');
|
|
12
11
|
var dateRangeFilterFn = require('./dateRangeFilterFn.js');
|
|
13
12
|
var dateSwitcherFilterFn = require('./dateSwitcherFilterFn.js');
|
|
@@ -19,7 +18,6 @@ var FilterTypes = require('../FilterTypes.js');
|
|
|
19
18
|
const filterMapper = {
|
|
20
19
|
[FilterTypes.FILTER_TYPES.SELECT]: singleSelectFilterFn.singleSelectFilterFn,
|
|
21
20
|
[FilterTypes.FILTER_TYPES.MULTI_SELECT]: multiSelectFilterFn.multiSelectFilterFn,
|
|
22
|
-
[FilterTypes.FILTER_TYPES.TEXT]: textFilterFn.textFilterFn,
|
|
23
21
|
[FilterTypes.FILTER_TYPES.SINGLE_DATE]: singleDateFilterFn.singleDateFilterFn,
|
|
24
22
|
[FilterTypes.FILTER_TYPES.DATE_RANGE]: dateRangeFilterFn.dateRangeFilterFn,
|
|
25
23
|
[FilterTypes.FILTER_TYPES.DATE_SWITCHER]: dateSwitcherFilterFn.dateSwitcherFilterFn,
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var applyOutOfTheBoxFilters = require('./applyOutOfTheBoxFilters.js');
|
|
6
|
-
var textFilterFn = require('./textFilterFn.js');
|
|
7
6
|
var singleDateFilterFn = require('./singleDateFilterFn.js');
|
|
8
7
|
var singleSelectFilterFn = require('./singleSelectFilterFn.js');
|
|
9
8
|
var multiSelectFilterFn = require('./multiSelectFilterFn.js');
|
|
@@ -14,7 +13,6 @@ var dateRangeFilterFn = require('./dateRangeFilterFn.js');
|
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
exports.applyOutOfTheBoxFilters = applyOutOfTheBoxFilters.applyOutOfTheBoxFilters;
|
|
17
|
-
exports.textFilterFn = textFilterFn.textFilterFn;
|
|
18
16
|
exports.singleDateFilterFn = singleDateFilterFn.singleDateFilterFn;
|
|
19
17
|
exports.singleSelectFilterFn = singleSelectFilterFn.singleSelectFilterFn;
|
|
20
18
|
exports.multiSelectFilterFn = multiSelectFilterFn.multiSelectFilterFn;
|
|
@@ -9,7 +9,6 @@ var groupBy = require('./groupBy.js');
|
|
|
9
9
|
var FilterTypes = require('./FilterTypes.js');
|
|
10
10
|
var RowVariants = require('./RowVariants.js');
|
|
11
11
|
var applyOutOfTheBoxFilters = require('./Filters/applyOutOfTheBoxFilters.js');
|
|
12
|
-
var textFilterFn = require('./Filters/textFilterFn.js');
|
|
13
12
|
var singleDateFilterFn = require('./Filters/singleDateFilterFn.js');
|
|
14
13
|
var singleSelectFilterFn = require('./Filters/singleSelectFilterFn.js');
|
|
15
14
|
var multiSelectFilterFn = require('./Filters/multiSelectFilterFn.js');
|
|
@@ -28,7 +27,6 @@ exports.ROW_VARIANTS = RowVariants.ROW_VARIANTS;
|
|
|
28
27
|
exports.ROW_VARIANT_COMPACT_KEY = RowVariants.ROW_VARIANT_COMPACT_KEY;
|
|
29
28
|
exports.ROW_VARIANT_KEY = RowVariants.ROW_VARIANT_KEY;
|
|
30
29
|
exports.applyOutOfTheBoxFilters = applyOutOfTheBoxFilters.applyOutOfTheBoxFilters;
|
|
31
|
-
exports.textFilterFn = textFilterFn.textFilterFn;
|
|
32
30
|
exports.singleDateFilterFn = singleDateFilterFn.singleDateFilterFn;
|
|
33
31
|
exports.singleSelectFilterFn = singleSelectFilterFn.singleSelectFilterFn;
|
|
34
32
|
exports.multiSelectFilterFn = multiSelectFilterFn.multiSelectFilterFn;
|
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
6
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
8
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
9
8
|
require('core-js/modules/esnext.async-iterator.find.js');
|
|
10
9
|
require('core-js/modules/esnext.iterator.find.js');
|
|
11
10
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
11
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
13
12
|
var constants = require('../../../configs/constants.js');
|
|
13
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
14
14
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
15
15
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
16
16
|
require('react');
|
|
@@ -35,42 +35,55 @@ require('../../../parts/Row.js');
|
|
|
35
35
|
require('../../../parts/Footer.js');
|
|
36
36
|
require('../../../parts/HoC/SortableItemContext.js');
|
|
37
37
|
|
|
38
|
-
const customCollisionDetection = (activeId, activeParent, dndItems) =>
|
|
38
|
+
const customCollisionDetection = (activeId, activeParent, dndItems) => _ref => {
|
|
39
39
|
var _document$querySelect, _document$querySelect2;
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
let {
|
|
42
|
+
droppableContainers,
|
|
43
|
+
collisionRect
|
|
44
|
+
} = _ref;
|
|
45
|
+
const entriesWithSameParent = droppableContainers.filter(_ref2 => {
|
|
42
46
|
var _dndItems$find;
|
|
43
47
|
|
|
44
|
-
let
|
|
48
|
+
let {
|
|
49
|
+
id
|
|
50
|
+
} = _ref2;
|
|
45
51
|
return ((_dndItems$find = dndItems.find(item => item.id === id)) === null || _dndItems$find === void 0 ? void 0 : _dndItems$find.parentId) === activeParent;
|
|
46
52
|
});
|
|
47
53
|
const dragOverlayRect = (_document$querySelect = (_document$querySelect2 = document.querySelector("[data-testid=\"".concat(constants.DATA_TESTID.DATA_TABLE_COLUMN_DRAG_OVERLAY, "\"]"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.getBoundingClientRect()) !== null && _document$querySelect !== void 0 ? _document$querySelect : {
|
|
48
54
|
width: 150
|
|
49
55
|
};
|
|
50
|
-
const
|
|
51
|
-
let
|
|
56
|
+
const originalContainer = entriesWithSameParent.find(_ref3 => {
|
|
57
|
+
let {
|
|
58
|
+
id
|
|
59
|
+
} = _ref3;
|
|
52
60
|
return id === activeId;
|
|
53
61
|
});
|
|
62
|
+
const originalRect = originalContainer.rect.current;
|
|
54
63
|
|
|
55
|
-
if (originalRect
|
|
56
|
-
return
|
|
64
|
+
if (originalRect.offsetLeft <= collisionRect.offsetLeft && collisionRect.offsetLeft <= originalRect.offsetLeft + originalRect.width) {
|
|
65
|
+
return originalContainer.id;
|
|
57
66
|
}
|
|
58
67
|
|
|
59
|
-
const isLeft =
|
|
68
|
+
const isLeft = collisionRect.offsetLeft <= originalRect.offsetLeft + dragOverlayRect.width / 2 + 5;
|
|
60
69
|
let match = null; // If going to the left, search the closest offset left
|
|
61
70
|
// Otherwise, get the closest offset right
|
|
62
71
|
|
|
63
|
-
const collisionPoint =
|
|
72
|
+
const collisionPoint = collisionRect.offsetLeft + dragOverlayRect.width / 2;
|
|
64
73
|
entriesWithSameParent.forEach(entry => {
|
|
65
|
-
const
|
|
74
|
+
const {
|
|
75
|
+
rect: {
|
|
76
|
+
current: rect
|
|
77
|
+
}
|
|
78
|
+
} = entry;
|
|
66
79
|
const offsetRight = rect.offsetLeft + rect.width;
|
|
67
|
-
if (!match) match = entry;else if (isLeft && Math.abs(collisionPoint - rect.offsetLeft) <= Math.abs(collisionPoint - match
|
|
80
|
+
if (!match) match = entry;else if (isLeft && Math.abs(collisionPoint - rect.offsetLeft) <= Math.abs(collisionPoint - match.rect.current.offsetLeft)) {
|
|
68
81
|
match = entry;
|
|
69
|
-
} else if (!isLeft && Math.abs(collisionPoint - offsetRight) <= Math.abs(collisionPoint - match
|
|
82
|
+
} else if (!isLeft && Math.abs(collisionPoint - offsetRight) <= Math.abs(collisionPoint - match.rect.current.offsetLeft - match.rect.current.width)) {
|
|
70
83
|
match = entry;
|
|
71
84
|
}
|
|
72
85
|
});
|
|
73
|
-
return match === null ? null : match
|
|
86
|
+
return match === null ? null : match.id;
|
|
74
87
|
};
|
|
75
88
|
|
|
76
89
|
exports.customCollisionDetection = customCollisionDetection;
|
|
@@ -8,11 +8,11 @@ require('core-js/modules/esnext.iterator.constructor.js');
|
|
|
8
8
|
require('core-js/modules/esnext.iterator.find.js');
|
|
9
9
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
10
10
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
11
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
12
11
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
13
12
|
require('core-js/modules/esnext.iterator.filter.js');
|
|
14
13
|
var core = require('@dnd-kit/core');
|
|
15
14
|
var constants = require('../../../configs/constants.js');
|
|
15
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
16
16
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
17
17
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
18
18
|
require('react');
|
|
@@ -56,16 +56,14 @@ const getHorizontalKeyboardCoordinates = _ref => {
|
|
|
56
56
|
event,
|
|
57
57
|
currentCoordinates,
|
|
58
58
|
droppableContainers,
|
|
59
|
-
|
|
59
|
+
collisionRect
|
|
60
60
|
} = _ref;
|
|
61
61
|
if (vertical.includes(event.code)) return undefined;
|
|
62
|
-
const activeItem = items.find(item => item.id === active);
|
|
62
|
+
const activeItem = items.find(item => item.id === active.id);
|
|
63
63
|
const overRect = over.rect;
|
|
64
64
|
const layoutRects = []; // Get the reacheable rects depending on the arrow key pressed
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
let [id, container] = _ref2;
|
|
68
|
-
|
|
66
|
+
droppableContainers.forEach(container => {
|
|
69
67
|
if (container !== null && container !== void 0 && container.disabled || !overRect) {
|
|
70
68
|
return;
|
|
71
69
|
}
|
|
@@ -76,44 +74,48 @@ const getHorizontalKeyboardCoordinates = _ref => {
|
|
|
76
74
|
return;
|
|
77
75
|
}
|
|
78
76
|
|
|
79
|
-
const itemParent = items.find(item => item.id === id).parentId;
|
|
77
|
+
const itemParent = items.find(item => item.id === container.id).parentId;
|
|
80
78
|
if (itemParent !== activeItem.parentId) return;
|
|
81
79
|
const rect = core.getViewRect(node);
|
|
82
80
|
|
|
83
|
-
if (event.code === core.KeyboardCode.Left &&
|
|
84
|
-
layoutRects.push(
|
|
85
|
-
} else if (event.code === core.KeyboardCode.Right &&
|
|
86
|
-
layoutRects.push(
|
|
81
|
+
if (event.code === core.KeyboardCode.Left && collisionRect.left > rect.right - 10) {
|
|
82
|
+
layoutRects.push(container);
|
|
83
|
+
} else if (event.code === core.KeyboardCode.Right && collisionRect.left < rect.left) {
|
|
84
|
+
layoutRects.push(container);
|
|
87
85
|
}
|
|
88
86
|
});
|
|
89
87
|
const dragOverlayRect = (_document$querySelect = (_document$querySelect2 = document.querySelector("[data-testid=\"".concat(constants.DATA_TESTID.DATA_TABLE_COLUMN_DRAG_OVERLAY, "\"]"))) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.getBoundingClientRect()) !== null && _document$querySelect !== void 0 ? _document$querySelect : {
|
|
90
88
|
width: 150,
|
|
91
89
|
left: 0
|
|
92
90
|
};
|
|
93
|
-
const closestId = core.closestCorners(
|
|
91
|
+
const closestId = core.closestCorners({
|
|
92
|
+
droppableContainers: layoutRects,
|
|
93
|
+
collisionRect,
|
|
94
|
+
active
|
|
95
|
+
});
|
|
94
96
|
if (!closestId) return undefined;
|
|
95
|
-
const closestRect = core.getViewRect(droppableContainers
|
|
96
|
-
const activeRect = core.getViewRect(droppableContainers
|
|
97
|
+
const closestRect = core.getViewRect(droppableContainers.get(closestId).node.current);
|
|
98
|
+
const activeRect = core.getViewRect(droppableContainers.get(active.id).node.current);
|
|
97
99
|
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
98
100
|
x: closestRect.left + (closestRect.width - dragOverlayRect.width) / 2 + (closestRect.offsetLeft < activeRect.left ? -1 : 1)
|
|
99
101
|
});
|
|
100
102
|
};
|
|
101
103
|
|
|
102
|
-
const getHierarchyKeyboardCoordinates = (context, isHorizontalDnD) => (event,
|
|
104
|
+
const getHierarchyKeyboardCoordinates = (context, isHorizontalDnD) => (event, _ref2) => {
|
|
103
105
|
let {
|
|
104
|
-
active,
|
|
105
106
|
currentCoordinates,
|
|
106
107
|
context: {
|
|
108
|
+
active,
|
|
107
109
|
over,
|
|
108
|
-
|
|
110
|
+
collisionRect,
|
|
109
111
|
droppableContainers
|
|
110
112
|
}
|
|
111
|
-
} =
|
|
113
|
+
} = _ref2;
|
|
112
114
|
|
|
113
115
|
if (directions.includes(event.code)) {
|
|
114
116
|
event.preventDefault();
|
|
115
117
|
|
|
116
|
-
if (!
|
|
118
|
+
if (!collisionRect) {
|
|
117
119
|
return undefined;
|
|
118
120
|
}
|
|
119
121
|
|
|
@@ -129,7 +131,7 @@ const getHierarchyKeyboardCoordinates = (context, isHorizontalDnD) => (event, _r
|
|
|
129
131
|
event,
|
|
130
132
|
currentCoordinates,
|
|
131
133
|
droppableContainers,
|
|
132
|
-
|
|
134
|
+
collisionRect
|
|
133
135
|
};
|
|
134
136
|
if (isHorizontalDnD) return getHorizontalKeyboardCoordinates(args);
|
|
135
137
|
return undefined;
|
|
@@ -45,8 +45,10 @@ const adjustTranslate = function (_ref) {
|
|
|
45
45
|
return newTransform;
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
const
|
|
49
|
-
|
|
48
|
+
const measuring = {
|
|
49
|
+
droppable: {
|
|
50
|
+
strategy: core.MeasuringStrategy.Always
|
|
51
|
+
}
|
|
50
52
|
};
|
|
51
53
|
|
|
52
54
|
const useHierarchyDndkitConfig = _ref2 => {
|
|
@@ -95,7 +97,7 @@ const useHierarchyDndkitConfig = _ref2 => {
|
|
|
95
97
|
announcements,
|
|
96
98
|
modifiers,
|
|
97
99
|
sensors,
|
|
98
|
-
|
|
100
|
+
measuring,
|
|
99
101
|
collisionDetection: customCollisionDetection.customCollisionDetection(activeId, activeItem === null || activeItem === void 0 ? void 0 : activeItem.parentId, dndItems)
|
|
100
102
|
}, dragActionHandlers), [announcements, modifiers, sensors, activeId, activeItem === null || activeItem === void 0 ? void 0 : activeItem.parentId, dndItems, dragActionHandlers]);
|
|
101
103
|
return {
|
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
require('core-js/modules/esnext.async-iterator.find.js');
|
|
6
6
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.find.js');
|
|
8
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
9
8
|
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
10
9
|
require('core-js/modules/esnext.iterator.reduce.js');
|
|
10
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
11
11
|
var SortableItemContext = require('../../../parts/HoC/SortableItemContext.js');
|
|
12
12
|
|
|
13
13
|
const DUMMY_ID = 'DUMMY_ID_INTERNAL_USE_ONLY';
|
|
@@ -33,58 +33,78 @@ const RECT_DOWN = {
|
|
|
33
33
|
const thresholdRatio = 0.2; // Percentage to be inside
|
|
34
34
|
|
|
35
35
|
const insideThreshold = 0.7;
|
|
36
|
-
const customCollisionDetection = (activeId, visibleItemsDictionary, setDropIndicatorPosition, maxDragAndDropLevel, lastPosition, setLastPosition) =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
const customCollisionDetection = (activeId, visibleItemsDictionary, setDropIndicatorPosition, maxDragAndDropLevel, lastPosition, setLastPosition) => _ref => {
|
|
37
|
+
var _originalContainer$re;
|
|
38
|
+
|
|
39
|
+
let {
|
|
40
|
+
droppableContainers,
|
|
41
|
+
collisionRect
|
|
42
|
+
} = _ref;
|
|
43
|
+
const originalContainer = droppableContainers.find(_ref2 => {
|
|
44
|
+
let {
|
|
45
|
+
id
|
|
46
|
+
} = _ref2;
|
|
47
|
+
return id === activeId;
|
|
48
|
+
});
|
|
49
|
+
const originalRect = originalContainer === null || originalContainer === void 0 ? void 0 : (_originalContainer$re = originalContainer.rect) === null || _originalContainer$re === void 0 ? void 0 : _originalContainer$re.current; // We first check if the item was moved up or down
|
|
41
50
|
// This modifies how to search the matching colliding rect
|
|
42
51
|
|
|
43
52
|
let isUp = lastPosition === 'up';
|
|
44
53
|
|
|
45
54
|
if (originalRect) {
|
|
46
|
-
isUp = originalRect
|
|
55
|
+
isUp = originalRect.offsetTop > collisionRect.top;
|
|
47
56
|
} // Threshold
|
|
48
57
|
|
|
49
58
|
|
|
50
|
-
const threshold =
|
|
51
|
-
let
|
|
59
|
+
const threshold = collisionRect.height * thresholdRatio;
|
|
60
|
+
let collidingContainer = null;
|
|
52
61
|
|
|
53
62
|
if (isUp) {
|
|
54
63
|
// Up -- We need to find the first rectangle downwards
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
collidingContainer = droppableContainers.reduce((acc, container) => {
|
|
65
|
+
const rect = container.rect.current;
|
|
57
66
|
|
|
58
|
-
if (
|
|
59
|
-
return
|
|
67
|
+
if (rect.offsetTop + threshold > collisionRect.top && rect.offsetTop < acc.rect.current.offsetTop) {
|
|
68
|
+
return container;
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
return acc;
|
|
63
|
-
},
|
|
72
|
+
}, {
|
|
73
|
+
id: DUMMY_ID,
|
|
74
|
+
rect: {
|
|
75
|
+
current: RECT_DOWN
|
|
76
|
+
}
|
|
77
|
+
});
|
|
64
78
|
} else {
|
|
65
79
|
// Down -- We need to find the first rectangle upwards
|
|
66
|
-
|
|
67
|
-
|
|
80
|
+
collidingContainer = droppableContainers.reduce((acc, container) => {
|
|
81
|
+
const rect = container.rect.current;
|
|
68
82
|
|
|
69
|
-
if (
|
|
70
|
-
return
|
|
83
|
+
if (rect.offsetTop - threshold < collisionRect.top && rect.offsetTop > acc.rect.current.offsetTop) {
|
|
84
|
+
return container;
|
|
71
85
|
}
|
|
72
86
|
|
|
73
87
|
return acc;
|
|
74
|
-
},
|
|
88
|
+
}, {
|
|
89
|
+
id: DUMMY_ID,
|
|
90
|
+
rect: {
|
|
91
|
+
current: RECT_UP
|
|
92
|
+
}
|
|
93
|
+
});
|
|
75
94
|
} // If we didn't find a match, return null
|
|
76
95
|
|
|
77
96
|
|
|
78
|
-
if (
|
|
97
|
+
if (collidingContainer.id === DUMMY_ID) {
|
|
79
98
|
return null;
|
|
80
|
-
}
|
|
99
|
+
}
|
|
81
100
|
|
|
101
|
+
const collidingRect = collidingContainer.rect.current; // Calculate the intersection interval
|
|
82
102
|
|
|
83
|
-
const [top, bottom] = [Math.max(
|
|
103
|
+
const [top, bottom] = [Math.max(collisionRect.top, collidingRect.offsetTop), Math.min(collisionRect.bottom, collidingRect.offsetTop + collidingRect.height)]; // Calculate the percentage of intersection
|
|
84
104
|
|
|
85
|
-
const intersectionPercentage = Math.abs(bottom - top) / collidingRect
|
|
105
|
+
const intersectionPercentage = Math.abs(bottom - top) / collidingRect.height;
|
|
86
106
|
|
|
87
|
-
if (intersectionPercentage > insideThreshold && visibleItemsDictionary[
|
|
107
|
+
if (intersectionPercentage > insideThreshold && visibleItemsDictionary[collidingContainer.id].depth + 1 <= maxDragAndDropLevel && collidingContainer.id !== activeId) {
|
|
88
108
|
setDropIndicatorPosition(SortableItemContext.DropIndicatorPosition.Inside);
|
|
89
109
|
} else {
|
|
90
110
|
setDropIndicatorPosition(isUp ? SortableItemContext.DropIndicatorPosition.Before : SortableItemContext.DropIndicatorPosition.After);
|
|
@@ -92,7 +112,7 @@ const customCollisionDetection = (activeId, visibleItemsDictionary, setDropIndic
|
|
|
92
112
|
|
|
93
113
|
if (isUp && lastPosition !== 'up') setLastPosition('up');else if (!isUp && lastPosition !== 'down') setLastPosition('down'); // Return the id of the match rectangle
|
|
94
114
|
|
|
95
|
-
return
|
|
115
|
+
return collidingContainer.id;
|
|
96
116
|
};
|
|
97
117
|
|
|
98
118
|
exports.customCollisionDetection = customCollisionDetection;
|
|
@@ -6,7 +6,6 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
|
6
6
|
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
7
7
|
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
8
|
require('core-js/modules/esnext.iterator.for-each.js');
|
|
9
|
-
require('core-js/modules/web.dom-collections.iterator.js');
|
|
10
9
|
require('core-js/modules/esnext.async-iterator.find.js');
|
|
11
10
|
require('core-js/modules/esnext.iterator.find.js');
|
|
12
11
|
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
@@ -32,80 +31,76 @@ const getVerticalKeyboardCoordinates = _ref => {
|
|
|
32
31
|
event,
|
|
33
32
|
currentCoordinates,
|
|
34
33
|
droppableContainers,
|
|
35
|
-
|
|
34
|
+
collisionRect,
|
|
36
35
|
dropIndicatorPosition,
|
|
37
36
|
maxDragAndDropLevel
|
|
38
37
|
} = _ref;
|
|
39
38
|
if (horizontal.includes(event.code)) return undefined;
|
|
40
|
-
const activeRect = droppableContainers[active].rect.current;
|
|
41
39
|
const overRect = over.rect;
|
|
42
40
|
const layoutRects = []; // Get the reacheable rects depending on the arrow key pressed
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
let [id, container] = _ref2;
|
|
46
|
-
|
|
42
|
+
droppableContainers.forEach(container => {
|
|
47
43
|
if (container !== null && container !== void 0 && container.disabled || !overRect) {
|
|
48
44
|
return;
|
|
49
45
|
}
|
|
50
46
|
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
if (!node) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
const rect = core.getViewRect(node);
|
|
47
|
+
const rect = container.rect.current;
|
|
58
48
|
|
|
59
|
-
if (event.code === core.KeyboardCode.Down &&
|
|
60
|
-
layoutRects.push(
|
|
61
|
-
} else if (event.code === core.KeyboardCode.Up &&
|
|
62
|
-
layoutRects.push(
|
|
49
|
+
if (event.code === core.KeyboardCode.Down && collisionRect.top - 2 <= rect.offsetTop) {
|
|
50
|
+
layoutRects.push(container);
|
|
51
|
+
} else if (event.code === core.KeyboardCode.Up && collisionRect.top >= rect.offsetTop) {
|
|
52
|
+
layoutRects.push(container);
|
|
63
53
|
}
|
|
64
54
|
});
|
|
65
|
-
const closestId = core.closestCorners(
|
|
55
|
+
const closestId = core.closestCorners({
|
|
56
|
+
collisionRect,
|
|
57
|
+
droppableContainers: layoutRects,
|
|
58
|
+
active
|
|
59
|
+
});
|
|
66
60
|
if (!closestId) return undefined;
|
|
67
61
|
const closestItem = items.find(item => item.uid === closestId);
|
|
68
|
-
const closestRect = core.getViewRect(droppableContainers
|
|
62
|
+
const closestRect = core.getViewRect(droppableContainers.get(closestId).node.current);
|
|
69
63
|
|
|
70
64
|
if (event.code === core.KeyboardCode.Up) {
|
|
71
65
|
// If the drop indicator is inside (or over ourselves)
|
|
72
66
|
// We are gonna go to the before position
|
|
73
67
|
// Else we are gonna go inside the over rect
|
|
74
|
-
if (dropIndicatorPosition === SortableItemContext.DropIndicatorPosition.Inside || closestId === active || closestItem.depth + 1 > maxDragAndDropLevel) {
|
|
68
|
+
if (dropIndicatorPosition === SortableItemContext.DropIndicatorPosition.Inside || closestId === active.id || closestItem.depth + 1 > maxDragAndDropLevel) {
|
|
75
69
|
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
76
|
-
y: closestRect.top -
|
|
70
|
+
y: closestRect.top - collisionRect.height / 2
|
|
77
71
|
});
|
|
78
72
|
}
|
|
79
73
|
|
|
80
74
|
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
81
|
-
y: closestRect.top + Math.abs(closestRect.height -
|
|
75
|
+
y: closestRect.top + Math.abs(closestRect.height - collisionRect.height) / 2
|
|
82
76
|
});
|
|
83
77
|
} // If the drop indicator is inside (or over ourselves)
|
|
84
78
|
// We are gonna go to the after position
|
|
85
79
|
// Else we are gonna go inside the over rect
|
|
86
80
|
|
|
87
81
|
|
|
88
|
-
if (dropIndicatorPosition === SortableItemContext.DropIndicatorPosition.Inside || closestId === active || closestItem.depth + 1 > maxDragAndDropLevel) {
|
|
82
|
+
if (dropIndicatorPosition === SortableItemContext.DropIndicatorPosition.Inside || closestId === active.id || closestItem.depth + 1 > maxDragAndDropLevel) {
|
|
89
83
|
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
90
|
-
y: closestRect.top +
|
|
84
|
+
y: closestRect.top + collisionRect.height / 2
|
|
91
85
|
});
|
|
92
86
|
}
|
|
93
87
|
|
|
94
88
|
return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
|
|
95
|
-
y: closestRect.top + Math.abs(closestRect.height -
|
|
89
|
+
y: closestRect.top + Math.abs(closestRect.height - collisionRect.height) / 2
|
|
96
90
|
});
|
|
97
91
|
};
|
|
98
92
|
|
|
99
|
-
const getTreeKeyboardCoordinates = (context, isHorizontalDnD, maxDragAndDropLevel) => (event,
|
|
93
|
+
const getTreeKeyboardCoordinates = (context, isHorizontalDnD, maxDragAndDropLevel) => (event, _ref2) => {
|
|
100
94
|
let {
|
|
101
|
-
active,
|
|
102
95
|
currentCoordinates,
|
|
103
96
|
context: {
|
|
104
97
|
over,
|
|
105
98
|
translatedRect,
|
|
106
|
-
droppableContainers
|
|
99
|
+
droppableContainers,
|
|
100
|
+
active,
|
|
101
|
+
collisionRect
|
|
107
102
|
}
|
|
108
|
-
} =
|
|
103
|
+
} = _ref2;
|
|
109
104
|
|
|
110
105
|
if (directions.includes(event.code)) {
|
|
111
106
|
if (!translatedRect) {
|
|
@@ -125,7 +120,7 @@ const getTreeKeyboardCoordinates = (context, isHorizontalDnD, maxDragAndDropLeve
|
|
|
125
120
|
event,
|
|
126
121
|
currentCoordinates,
|
|
127
122
|
droppableContainers,
|
|
128
|
-
|
|
123
|
+
collisionRect,
|
|
129
124
|
dropIndicatorPosition,
|
|
130
125
|
maxDragAndDropLevel
|
|
131
126
|
};
|
|
@@ -45,8 +45,10 @@ const adjustTranslate = function (_ref) {
|
|
|
45
45
|
return newTransform;
|
|
46
46
|
};
|
|
47
47
|
|
|
48
|
-
const
|
|
49
|
-
|
|
48
|
+
const measuring = {
|
|
49
|
+
droppable: {
|
|
50
|
+
strategy: core.MeasuringStrategy.BeforeDragging
|
|
51
|
+
}
|
|
50
52
|
};
|
|
51
53
|
|
|
52
54
|
const useTreeDndkitConfig = _ref2 => {
|
|
@@ -117,7 +119,7 @@ const useTreeDndkitConfig = _ref2 => {
|
|
|
117
119
|
announcements,
|
|
118
120
|
modifiers,
|
|
119
121
|
sensors,
|
|
120
|
-
|
|
122
|
+
measuring,
|
|
121
123
|
collisionDetection: customCollisionDetection.customCollisionDetection(activeId, visibleItemsDictionary, setDropIndicatorPosition, maxDragAndDropLevel, lastPosition, setLastPosition)
|
|
122
124
|
}, dragActionHandlers), [announcements, modifiers, sensors, dragActionHandlers, visibleItemsDictionary, setDropIndicatorPosition, activeId, maxDragAndDropLevel, lastPosition, setLastPosition]);
|
|
123
125
|
const sortableContextProps = React.useMemo(() => ({
|
|
@@ -15,8 +15,8 @@ const setMultipleRefs = function () {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
const filteredRefs = refs.filter(Boolean);
|
|
18
|
-
if (!filteredRefs.length) return null;
|
|
19
|
-
if (filteredRefs.length === 0) return
|
|
18
|
+
if (!filteredRefs.length) return () => null;
|
|
19
|
+
if (filteredRefs.length === 0) return () => null;
|
|
20
20
|
return newRef => {
|
|
21
21
|
filteredRefs.forEach(refToBeUpdated => {
|
|
22
22
|
if (typeof refToBeUpdated === 'function') {
|
package/cjs/index.js
CHANGED
|
@@ -10,7 +10,6 @@ var groupBy = require('./exported-related/groupBy.js');
|
|
|
10
10
|
var FilterTypes = require('./exported-related/FilterTypes.js');
|
|
11
11
|
var RowVariants = require('./exported-related/RowVariants.js');
|
|
12
12
|
var applyOutOfTheBoxFilters = require('./exported-related/Filters/applyOutOfTheBoxFilters.js');
|
|
13
|
-
var textFilterFn = require('./exported-related/Filters/textFilterFn.js');
|
|
14
13
|
var singleDateFilterFn = require('./exported-related/Filters/singleDateFilterFn.js');
|
|
15
14
|
var singleSelectFilterFn = require('./exported-related/Filters/singleSelectFilterFn.js');
|
|
16
15
|
var multiSelectFilterFn = require('./exported-related/Filters/multiSelectFilterFn.js');
|
|
@@ -31,7 +30,6 @@ exports.ROW_VARIANTS = RowVariants.ROW_VARIANTS;
|
|
|
31
30
|
exports.ROW_VARIANT_COMPACT_KEY = RowVariants.ROW_VARIANT_COMPACT_KEY;
|
|
32
31
|
exports.ROW_VARIANT_KEY = RowVariants.ROW_VARIANT_KEY;
|
|
33
32
|
exports.applyOutOfTheBoxFilters = applyOutOfTheBoxFilters.applyOutOfTheBoxFilters;
|
|
34
|
-
exports.textFilterFn = textFilterFn.textFilterFn;
|
|
35
33
|
exports.singleDateFilterFn = singleDateFilterFn.singleDateFilterFn;
|
|
36
34
|
exports.singleSelectFilterFn = singleSelectFilterFn.singleSelectFilterFn;
|
|
37
35
|
exports.multiSelectFilterFn = multiSelectFilterFn.multiSelectFilterFn;
|