@atlaskit/editor-plugin-table 5.4.15 → 5.4.16
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/CHANGELOG.md +6 -0
- package/dist/cjs/plugins/table/ui/DragHandle/HandleIconComponent.js +3 -5
- package/dist/cjs/plugins/table/ui/DragHandle/index.js +3 -0
- package/dist/cjs/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +62 -33
- package/dist/cjs/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +62 -31
- package/dist/es2019/plugins/table/ui/DragHandle/HandleIconComponent.js +3 -5
- package/dist/es2019/plugins/table/ui/DragHandle/index.js +2 -0
- package/dist/es2019/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +63 -33
- package/dist/es2019/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +61 -29
- package/dist/esm/plugins/table/ui/DragHandle/HandleIconComponent.js +3 -5
- package/dist/esm/plugins/table/ui/DragHandle/index.js +3 -0
- package/dist/esm/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +62 -33
- package/dist/esm/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +60 -29
- package/dist/types/plugins/table/types.d.ts +1 -0
- package/dist/types/plugins/table/ui/DragHandle/HandleIconComponent.d.ts +1 -0
- package/dist/types/plugins/table/ui/DragHandle/index.d.ts +2 -1
- package/dist/types-ts4.5/plugins/table/types.d.ts +1 -0
- package/dist/types-ts4.5/plugins/table/ui/DragHandle/HandleIconComponent.d.ts +1 -0
- package/dist/types-ts4.5/plugins/table/ui/DragHandle/index.d.ts +2 -1
- package/package.json +1 -1
- package/src/plugins/table/types.ts +2 -0
- package/src/plugins/table/ui/DragHandle/HandleIconComponent.tsx +10 -9
- package/src/plugins/table/ui/DragHandle/index.tsx +4 -0
- package/src/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.tsx +118 -48
- package/src/plugins/table/ui/TableFloatingControls/RowControls/DragControls.tsx +126 -41
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-table
|
|
2
2
|
|
|
3
|
+
## 5.4.16
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#58843](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58843) [`630177f9bf2e`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/630177f9bf2e) - [ux] add selected handle and also keep hover handle
|
|
8
|
+
|
|
3
9
|
## 5.4.15
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -9,6 +9,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
var _icons = require("../icons");
|
|
10
10
|
var HandleIconComponent = exports.HandleIconComponent = function HandleIconComponent(props) {
|
|
11
11
|
var direction = props.direction,
|
|
12
|
+
forceDefaultHandle = props.forceDefaultHandle,
|
|
12
13
|
isDragMenuOpen = props.isDragMenuOpen,
|
|
13
14
|
isRowHandleHovered = props.isRowHandleHovered,
|
|
14
15
|
isColumnHandleHovered = props.isColumnHandleHovered,
|
|
@@ -19,11 +20,8 @@ var HandleIconComponent = exports.HandleIconComponent = function HandleIconCompo
|
|
|
19
20
|
var isHandleHovered = isRowHandleHovered || isColumnHandleHovered;
|
|
20
21
|
var isCurrentRowOrColumnSelected = isCurrentRowSelected || isCurrentColumnSelected;
|
|
21
22
|
var isDragMenuOpenOnCurrentRowOrColumn = isDragMenuOpen && dragMenuDirection === direction && isCurrentRowOrColumnSelected;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// hoverred handle or open drag menu
|
|
25
|
-
if (isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
26
|
-
return showNormalHandle;
|
|
23
|
+
if (forceDefaultHandle || isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
24
|
+
return hasMergedCells ? /*#__PURE__*/_react.default.createElement(_icons.DragHandleDisabledIcon, null) : /*#__PURE__*/_react.default.createElement(_icons.DragHandleIcon, null);
|
|
27
25
|
}
|
|
28
26
|
return /*#__PURE__*/_react.default.createElement(_icons.MinimisedHandleIcon, null);
|
|
29
27
|
};
|
|
@@ -28,6 +28,8 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
28
28
|
_ref$appearance = _ref.appearance,
|
|
29
29
|
appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
|
|
30
30
|
indexes = _ref.indexes,
|
|
31
|
+
_ref$forceDefaultHand = _ref.forceDefaultHandle,
|
|
32
|
+
forceDefaultHandle = _ref$forceDefaultHand === void 0 ? false : _ref$forceDefaultHand,
|
|
31
33
|
previewWidth = _ref.previewWidth,
|
|
32
34
|
previewHeight = _ref.previewHeight,
|
|
33
35
|
onMouseOver = _ref.onMouseOver,
|
|
@@ -59,6 +61,7 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
59
61
|
var handleIconProps = {
|
|
60
62
|
hasMergedCells: hasMergedCells,
|
|
61
63
|
direction: direction,
|
|
64
|
+
forceDefaultHandle: forceDefaultHandle,
|
|
62
65
|
isDragMenuOpen: isDragMenuOpen,
|
|
63
66
|
isRowHandleHovered: isRowHandleHovered,
|
|
64
67
|
isColumnHandleHovered: isColumnHandleHovered,
|
|
@@ -10,11 +10,14 @@ var _editorTables = require("@atlaskit/editor-tables");
|
|
|
10
10
|
var _utils = require("@atlaskit/editor-tables/utils");
|
|
11
11
|
var _commands = require("../../../commands");
|
|
12
12
|
var _commands2 = require("../../../pm-plugins/drag-and-drop/commands");
|
|
13
|
+
var _pluginFactory = require("../../../pm-plugins/drag-and-drop/plugin-factory");
|
|
13
14
|
var _types = require("../../../types");
|
|
14
15
|
var _utils2 = require("../../../utils");
|
|
15
16
|
var _DragHandle = require("../../DragHandle");
|
|
16
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
/* eslint-disable @atlaskit/design-system/prefer-primitives */
|
|
20
|
+
|
|
18
21
|
var getSelectedColumns = function getSelectedColumns(selection) {
|
|
19
22
|
if (selection instanceof _editorTables.CellSelection && selection.isColSelection()) {
|
|
20
23
|
var rect = (0, _utils.getSelectionRect)(selection);
|
|
@@ -26,7 +29,7 @@ var getSelectedColumns = function getSelectedColumns(selection) {
|
|
|
26
29
|
return [];
|
|
27
30
|
};
|
|
28
31
|
var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
29
|
-
var _colWidths$map$join, _rowHeights$, _rowHeights$reduce
|
|
32
|
+
var _colWidths$map$join, _rowHeights$, _rowHeights$reduce;
|
|
30
33
|
var editorView = _ref.editorView,
|
|
31
34
|
tableActive = _ref.tableActive,
|
|
32
35
|
tableRef = _ref.tableRef,
|
|
@@ -46,13 +49,6 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
|
46
49
|
var columnParams = (0, _utils2.getRowsParams)(colWidths !== null && colWidths !== void 0 ? colWidths : []);
|
|
47
50
|
var colIndex = hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex;
|
|
48
51
|
var selectedColIndexes = getSelectedColumns(editorView.state.selection);
|
|
49
|
-
var gridColumnPosition = (0, _react.useMemo)(function () {
|
|
50
|
-
// if more than one row is selected, ensure the handle spans over the selected range
|
|
51
|
-
if (selectedColIndexes.includes(colIndex)) {
|
|
52
|
-
return "".concat(selectedColIndexes[0] + 1, " / span ").concat(selectedColIndexes.length);
|
|
53
|
-
}
|
|
54
|
-
return "".concat(colIndex + 1, " / span 1");
|
|
55
|
-
}, [colIndex, selectedColIndexes]);
|
|
56
52
|
var firstRow = tableRef.querySelector('tr');
|
|
57
53
|
var hasHeaderRow = firstRow ? firstRow.getAttribute('data-header-row') : false;
|
|
58
54
|
var marginTop = hasHeaderRow && stickyTop !== undefined ? (_rowHeights$ = rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights[0]) !== null && _rowHeights$ !== void 0 ? _rowHeights$ : 0 : 0;
|
|
@@ -104,6 +100,63 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
|
104
100
|
var previewHeight = (_rowHeights$reduce = rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights.reduce(function (sum, cur) {
|
|
105
101
|
return sum + cur;
|
|
106
102
|
}, 0)) !== null && _rowHeights$reduce !== void 0 ? _rowHeights$reduce : 0;
|
|
103
|
+
var generateHandleByType = (0, _react.useCallback)(function (type) {
|
|
104
|
+
var _colWidths;
|
|
105
|
+
if (!hoveredCell) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
var _getDragDropPluginSta = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
109
|
+
isDragMenuOpen = _getDragDropPluginSta.isDragMenuOpen,
|
|
110
|
+
dragMenuIndex = _getDragDropPluginSta.dragMenuIndex,
|
|
111
|
+
dragMenuDirection = _getDragDropPluginSta.dragMenuDirection;
|
|
112
|
+
var isHover = type === 'hover';
|
|
113
|
+
var isHoveredOnSelectedColumn = isDragMenuOpen && dragMenuDirection === 'column' && dragMenuIndex === colIndex;
|
|
114
|
+
var showCondition = isHover ? !isHoveredOnSelectedColumn && Number.isFinite(hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex) : isDragMenuOpen && dragMenuDirection === 'column';
|
|
115
|
+
if (!showCondition) {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
var selectedColumnPosition = "".concat(dragMenuIndex + 1, " / span ").concat(selectedColIndexes.length);
|
|
119
|
+
var gridColumnPosition = selectedColIndexes.includes(colIndex) ? "".concat(selectedColIndexes[0] + 1, " / span ").concat(selectedColIndexes.length) : "".concat(colIndex + 1, " / span 1");
|
|
120
|
+
var selectedApprearance = isInDanger ? 'danger' : 'selected';
|
|
121
|
+
var hoveredAppearance = selectedColIndexes.includes(colIndex) ? isInDanger ? 'danger' : 'selected' : 'default';
|
|
122
|
+
return showCondition && /*#__PURE__*/_react.default.createElement("div", {
|
|
123
|
+
key: type,
|
|
124
|
+
style: {
|
|
125
|
+
gridColumn: isHover ? gridColumnPosition : selectedColumnPosition,
|
|
126
|
+
display: 'flex',
|
|
127
|
+
justifyContent: 'center',
|
|
128
|
+
alignItems: 'center',
|
|
129
|
+
height: 'fit-content',
|
|
130
|
+
placeSelf: 'center',
|
|
131
|
+
zIndex: 99
|
|
132
|
+
},
|
|
133
|
+
"data-column-control-index": hoveredCell.colIndex,
|
|
134
|
+
"data-testid": isHover ? 'table-floating-column-control' : 'table-floating-column-control-selected'
|
|
135
|
+
}, /*#__PURE__*/_react.default.createElement(_DragHandle.DragHandle, {
|
|
136
|
+
direction: "column",
|
|
137
|
+
tableLocalId: localId || '',
|
|
138
|
+
indexes: isHover ? colIndexes : selectedColIndexes,
|
|
139
|
+
forceDefaultHandle: !isHover,
|
|
140
|
+
previewWidth: (_colWidths = colWidths === null || colWidths === void 0 ? void 0 : colWidths[colIndex]) !== null && _colWidths !== void 0 ? _colWidths : 48,
|
|
141
|
+
previewHeight: previewHeight,
|
|
142
|
+
appearance: isHover ? hoveredAppearance : selectedApprearance,
|
|
143
|
+
onClick: handleClick,
|
|
144
|
+
onMouseOver: handleMouseOver,
|
|
145
|
+
onMouseOut: handleMouseOut,
|
|
146
|
+
onMouseUp: handleMouseUp,
|
|
147
|
+
editorView: editorView
|
|
148
|
+
}));
|
|
149
|
+
}, [colIndex, previewHeight, colWidths, colIndexes, editorView, handleClick, handleMouseOut, handleMouseOver, handleMouseUp, hoveredCell, isInDanger, localId, selectedColIndexes]);
|
|
150
|
+
var columnHandles = (0, _react.useCallback)(function (hoveredCell) {
|
|
151
|
+
if (!hoveredCell) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
if (hoveredCell.colIndex === undefined) {
|
|
155
|
+
return generateHandleByType('selected');
|
|
156
|
+
}
|
|
157
|
+
var sortedHandles = [generateHandleByType('hover'), generateHandleByType('selected')];
|
|
158
|
+
return hoveredCell.colIndex < selectedColIndexes[0] ? sortedHandles : sortedHandles.reverse();
|
|
159
|
+
}, [generateHandleByType, selectedColIndexes]);
|
|
107
160
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
108
161
|
className: _types.TableCssClassName.DRAG_COLUMN_CONTROLS,
|
|
109
162
|
onMouseMove: handleMouseMove
|
|
@@ -132,30 +185,6 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
|
132
185
|
right: '0'
|
|
133
186
|
} : {}
|
|
134
187
|
}));
|
|
135
|
-
}), tableActive && !isResizing &&
|
|
136
|
-
style: {
|
|
137
|
-
gridColumn: gridColumnPosition,
|
|
138
|
-
display: 'flex',
|
|
139
|
-
justifyContent: 'center',
|
|
140
|
-
alignItems: 'center',
|
|
141
|
-
height: 'fit-content',
|
|
142
|
-
placeSelf: 'center',
|
|
143
|
-
zIndex: 99
|
|
144
|
-
},
|
|
145
|
-
"data-column-control-index": hoveredCell.colIndex,
|
|
146
|
-
"data-testid": "table-floating-column-control"
|
|
147
|
-
}, /*#__PURE__*/_react.default.createElement(_DragHandle.DragHandle, {
|
|
148
|
-
direction: "column",
|
|
149
|
-
tableLocalId: localId || '',
|
|
150
|
-
indexes: colIndexes,
|
|
151
|
-
previewWidth: (_colWidths = colWidths === null || colWidths === void 0 ? void 0 : colWidths[colIndex]) !== null && _colWidths !== void 0 ? _colWidths : 48,
|
|
152
|
-
previewHeight: previewHeight,
|
|
153
|
-
appearance: selectedColIndexes.includes(hoveredCell.colIndex) ? isInDanger ? 'danger' : 'selected' : 'default',
|
|
154
|
-
onClick: handleClick,
|
|
155
|
-
onMouseOver: handleMouseOver,
|
|
156
|
-
onMouseOut: handleMouseOut,
|
|
157
|
-
onMouseUp: handleMouseUp,
|
|
158
|
-
editorView: editorView
|
|
159
|
-
}))));
|
|
188
|
+
}), tableActive && !isResizing && columnHandles(hoveredCell)));
|
|
160
189
|
};
|
|
161
190
|
var _default = exports.default = ColumnControls;
|
|
@@ -14,7 +14,8 @@ var _utils = require("@atlaskit/editor-tables/utils");
|
|
|
14
14
|
var _element = require("@atlaskit/pragmatic-drag-and-drop/adapter/element");
|
|
15
15
|
var _commands = require("../../../commands");
|
|
16
16
|
var _commands2 = require("../../../pm-plugins/drag-and-drop/commands");
|
|
17
|
-
var _pluginFactory = require("../../../pm-plugins/plugin-factory");
|
|
17
|
+
var _pluginFactory = require("../../../pm-plugins/drag-and-drop/plugin-factory");
|
|
18
|
+
var _pluginFactory2 = require("../../../pm-plugins/plugin-factory");
|
|
18
19
|
var _types = require("../../../types");
|
|
19
20
|
var _utils2 = require("../../../utils");
|
|
20
21
|
var _consts = require("../../consts");
|
|
@@ -22,6 +23,8 @@ var _DragHandle = require("../../DragHandle");
|
|
|
22
23
|
var _RowDropTarget = _interopRequireDefault(require("../RowDropTarget"));
|
|
23
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
25
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
|
+
/* eslint-disable @atlaskit/design-system/prefer-primitives */
|
|
27
|
+
|
|
25
28
|
var getSelectedRows = function getSelectedRows(selection) {
|
|
26
29
|
if (selection instanceof _editorTables.CellSelection && selection.isRowSelection()) {
|
|
27
30
|
var rect = (0, _utils.getSelectionRect)(selection);
|
|
@@ -68,7 +71,7 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
68
71
|
if (!indexes || !localId || type !== 'table-row') {
|
|
69
72
|
return false;
|
|
70
73
|
}
|
|
71
|
-
var _getTablePluginState = (0,
|
|
74
|
+
var _getTablePluginState = (0, _pluginFactory2.getPluginState)(editorView.state),
|
|
72
75
|
tableNode = _getTablePluginState.tableNode;
|
|
73
76
|
// If the draggable localId is the same as the current selected table localId then we will allow the monitor
|
|
74
77
|
// watch for changes
|
|
@@ -86,13 +89,6 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
86
89
|
(0, _commands2.toggleDragMenu)(undefined, 'row', hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex)(editorView.state, editorView.dispatch);
|
|
87
90
|
}, [editorView, hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex]);
|
|
88
91
|
var rowIndex = hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex;
|
|
89
|
-
var gridRowPosition = (0, _react.useMemo)(function () {
|
|
90
|
-
// if more than one row is selected, ensure the handle spans over the selected range
|
|
91
|
-
if (selectedRowIndexes.includes(rowIndex)) {
|
|
92
|
-
return "".concat(selectedRowIndexes[0] + 1, " / span ").concat(selectedRowIndexes.length);
|
|
93
|
-
}
|
|
94
|
-
return "".concat(rowIndex + 1, " / span 1");
|
|
95
|
-
}, [rowIndex, selectedRowIndexes]);
|
|
96
92
|
var handleMouseOut = (0, _react.useCallback)(function () {
|
|
97
93
|
if (tableActive) {
|
|
98
94
|
var state = editorView.state,
|
|
@@ -119,6 +115,62 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
119
115
|
var handleClick = (0, _react.useCallback)(function (e) {
|
|
120
116
|
selectRow(rowIndex, e === null || e === void 0 ? void 0 : e.shiftKey);
|
|
121
117
|
}, [rowIndex, selectRow]);
|
|
118
|
+
var generateHandleByType = (0, _react.useCallback)(function (type) {
|
|
119
|
+
if (!hoveredCell) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
var _getDragDropPluginSta = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
123
|
+
isDragMenuOpen = _getDragDropPluginSta.isDragMenuOpen,
|
|
124
|
+
dragMenuIndex = _getDragDropPluginSta.dragMenuIndex,
|
|
125
|
+
dragMenuDirection = _getDragDropPluginSta.dragMenuDirection;
|
|
126
|
+
var isHover = type === 'hover';
|
|
127
|
+
var isHoveredOnSelectedRow = isDragMenuOpen && dragMenuDirection === 'row' && dragMenuIndex === rowIndex;
|
|
128
|
+
var showCondition = isHover ? !isHoveredOnSelectedRow && !selectedRowIndexes.includes(rowIndex) && Number.isFinite(hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex) : isDragMenuOpen && dragMenuDirection === 'row' && Number.isFinite(hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex);
|
|
129
|
+
if (!showCondition) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
var gridRowPosition =
|
|
133
|
+
// if more than one row is selected, ensure the handle spans over the selected range
|
|
134
|
+
selectedRowIndexes.includes(rowIndex) ? "".concat(selectedRowIndexes[0] + 1, " / span ").concat(selectedRowIndexes.length) : "".concat(rowIndex + 1, " / span 1");
|
|
135
|
+
var selectedRowPosition = "".concat(dragMenuIndex + 1, " / span ").concat(selectedRowIndexes.length);
|
|
136
|
+
var selectedApprearance = isInDanger ? 'danger' : 'selected';
|
|
137
|
+
var hoveredAppearance = selectedRowIndexes.includes(rowIndex) ? isInDanger ? 'danger' : 'selected' : 'default';
|
|
138
|
+
return showCondition && /*#__PURE__*/_react.default.createElement("div", {
|
|
139
|
+
key: type,
|
|
140
|
+
style: {
|
|
141
|
+
gridRow: isHover ? gridRowPosition : selectedRowPosition,
|
|
142
|
+
gridColumn: '2',
|
|
143
|
+
display: 'flex',
|
|
144
|
+
height: '100%',
|
|
145
|
+
alignItems: 'center',
|
|
146
|
+
justifyContent: 'center'
|
|
147
|
+
},
|
|
148
|
+
"data-testid": isHover ? 'table-floating-row-drag-handle' : 'table-floating-row-control-selected'
|
|
149
|
+
}, /*#__PURE__*/_react.default.createElement(_DragHandle.DragHandle, {
|
|
150
|
+
direction: "row",
|
|
151
|
+
tableLocalId: currentNodeLocalId,
|
|
152
|
+
indexes: isHover ? rowIndexes : selectedRowIndexes,
|
|
153
|
+
forceDefaultHandle: !isHover,
|
|
154
|
+
previewWidth: tableWidth,
|
|
155
|
+
previewHeight: rowHeights[rowIndex],
|
|
156
|
+
appearance: isHover ? hoveredAppearance : selectedApprearance,
|
|
157
|
+
onClick: handleClick,
|
|
158
|
+
onMouseOver: handleMouseOver,
|
|
159
|
+
onMouseOut: handleMouseOut,
|
|
160
|
+
onMouseUp: onMouseUp,
|
|
161
|
+
editorView: editorView
|
|
162
|
+
}));
|
|
163
|
+
}, [currentNodeLocalId, editorView, handleClick, handleMouseOut, handleMouseOver, hoveredCell, isInDanger, onMouseUp, rowHeights, rowIndex, rowIndexes, selectedRowIndexes, tableWidth]);
|
|
164
|
+
var rowHandles = (0, _react.useCallback)(function (hoveredCell) {
|
|
165
|
+
if (!hoveredCell) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
if (hoveredCell.rowIndex === undefined) {
|
|
169
|
+
return generateHandleByType('selected');
|
|
170
|
+
}
|
|
171
|
+
var sortedHandles = [generateHandleByType('hover'), generateHandleByType('selected')];
|
|
172
|
+
return hoveredCell.rowIndex < selectedRowIndexes[0] ? sortedHandles : sortedHandles.reverse();
|
|
173
|
+
}, [generateHandleByType, selectedRowIndexes]);
|
|
122
174
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
123
175
|
className: _types.TableCssClassName.DRAG_ROW_CONTROLS,
|
|
124
176
|
style: {
|
|
@@ -158,27 +210,6 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
158
210
|
left: "var(--ds-space-negative-100, -8px)"
|
|
159
211
|
}
|
|
160
212
|
}));
|
|
161
|
-
}), !isResizing &&
|
|
162
|
-
style: {
|
|
163
|
-
gridRow: gridRowPosition,
|
|
164
|
-
gridColumn: '2',
|
|
165
|
-
display: 'flex',
|
|
166
|
-
height: '100%',
|
|
167
|
-
alignItems: 'center',
|
|
168
|
-
justifyContent: 'center'
|
|
169
|
-
},
|
|
170
|
-
"data-testid": "table-floating-row-drag-handle"
|
|
171
|
-
}, /*#__PURE__*/_react.default.createElement(_DragHandle.DragHandle, {
|
|
172
|
-
tableLocalId: currentNodeLocalId,
|
|
173
|
-
indexes: rowIndexes,
|
|
174
|
-
previewWidth: tableWidth,
|
|
175
|
-
previewHeight: rowHeights[rowIndex],
|
|
176
|
-
appearance: selectedRowIndexes.includes(rowIndex) ? isInDanger ? 'danger' : 'selected' : 'default',
|
|
177
|
-
onClick: handleClick,
|
|
178
|
-
onMouseOver: handleMouseOver,
|
|
179
|
-
onMouseOut: handleMouseOut,
|
|
180
|
-
onMouseUp: onMouseUp,
|
|
181
|
-
editorView: editorView
|
|
182
|
-
})));
|
|
213
|
+
}), !isResizing && Number.isFinite(rowIndex) && rowHandles(hoveredCell));
|
|
183
214
|
};
|
|
184
215
|
var DragControls = exports.DragControls = (0, _reactIntlNext.injectIntl)(DragControlsComponent);
|
|
@@ -3,6 +3,7 @@ import { DragHandleDisabledIcon, DragHandleIcon, MinimisedHandleIcon } from '../
|
|
|
3
3
|
export const HandleIconComponent = props => {
|
|
4
4
|
const {
|
|
5
5
|
direction,
|
|
6
|
+
forceDefaultHandle,
|
|
6
7
|
isDragMenuOpen,
|
|
7
8
|
isRowHandleHovered,
|
|
8
9
|
isColumnHandleHovered,
|
|
@@ -14,11 +15,8 @@ export const HandleIconComponent = props => {
|
|
|
14
15
|
const isHandleHovered = isRowHandleHovered || isColumnHandleHovered;
|
|
15
16
|
const isCurrentRowOrColumnSelected = isCurrentRowSelected || isCurrentColumnSelected;
|
|
16
17
|
const isDragMenuOpenOnCurrentRowOrColumn = isDragMenuOpen && dragMenuDirection === direction && isCurrentRowOrColumnSelected;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// hoverred handle or open drag menu
|
|
20
|
-
if (isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
21
|
-
return showNormalHandle;
|
|
18
|
+
if (forceDefaultHandle || isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
19
|
+
return hasMergedCells ? /*#__PURE__*/React.createElement(DragHandleDisabledIcon, null) : /*#__PURE__*/React.createElement(DragHandleIcon, null);
|
|
22
20
|
}
|
|
23
21
|
return /*#__PURE__*/React.createElement(MinimisedHandleIcon, null);
|
|
24
22
|
};
|
|
@@ -14,6 +14,7 @@ export const DragHandle = ({
|
|
|
14
14
|
direction = 'row',
|
|
15
15
|
appearance = 'default',
|
|
16
16
|
indexes,
|
|
17
|
+
forceDefaultHandle = false,
|
|
17
18
|
previewWidth,
|
|
18
19
|
previewHeight,
|
|
19
20
|
onMouseOver,
|
|
@@ -45,6 +46,7 @@ export const DragHandle = ({
|
|
|
45
46
|
const handleIconProps = {
|
|
46
47
|
hasMergedCells,
|
|
47
48
|
direction,
|
|
49
|
+
forceDefaultHandle,
|
|
48
50
|
isDragMenuOpen,
|
|
49
51
|
isRowHandleHovered,
|
|
50
52
|
isColumnHandleHovered,
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
/* eslint-disable @atlaskit/design-system/prefer-primitives */
|
|
2
|
+
|
|
1
3
|
import React, { useCallback, useMemo } from 'react';
|
|
2
4
|
import { CellSelection } from '@atlaskit/editor-tables';
|
|
3
5
|
import { getSelectionRect } from '@atlaskit/editor-tables/utils';
|
|
4
6
|
import { clearHoverSelection, hoverCell, hoverColumns, selectColumn } from '../../../commands';
|
|
5
7
|
import { toggleDragMenu } from '../../../pm-plugins/drag-and-drop/commands';
|
|
8
|
+
import { getPluginState as getDragDropPluginState } from '../../../pm-plugins/drag-and-drop/plugin-factory';
|
|
6
9
|
import { TableCssClassName as ClassName } from '../../../types';
|
|
7
10
|
import { getRowsParams, getSelectedColumnIndexes } from '../../../utils';
|
|
8
11
|
import { DragHandle } from '../../DragHandle';
|
|
@@ -30,19 +33,12 @@ export const ColumnControls = ({
|
|
|
30
33
|
hasHeaderColumn,
|
|
31
34
|
isTableHovered
|
|
32
35
|
}) => {
|
|
33
|
-
var _colWidths$map$join, _rowHeights$, _rowHeights$reduce
|
|
36
|
+
var _colWidths$map$join, _rowHeights$, _rowHeights$reduce;
|
|
34
37
|
const widths = (_colWidths$map$join = colWidths === null || colWidths === void 0 ? void 0 : colWidths.map(width => width ? `${width - 1}px` : '0px').join(' ')) !== null && _colWidths$map$join !== void 0 ? _colWidths$map$join : '0px';
|
|
35
38
|
// TODO: reusing getRowsParams here because it's generic enough to work for columns -> rename
|
|
36
39
|
const columnParams = getRowsParams(colWidths !== null && colWidths !== void 0 ? colWidths : []);
|
|
37
40
|
const colIndex = hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex;
|
|
38
41
|
const selectedColIndexes = getSelectedColumns(editorView.state.selection);
|
|
39
|
-
const gridColumnPosition = useMemo(() => {
|
|
40
|
-
// if more than one row is selected, ensure the handle spans over the selected range
|
|
41
|
-
if (selectedColIndexes.includes(colIndex)) {
|
|
42
|
-
return `${selectedColIndexes[0] + 1} / span ${selectedColIndexes.length}`;
|
|
43
|
-
}
|
|
44
|
-
return `${colIndex + 1} / span 1`;
|
|
45
|
-
}, [colIndex, selectedColIndexes]);
|
|
46
42
|
const firstRow = tableRef.querySelector('tr');
|
|
47
43
|
const hasHeaderRow = firstRow ? firstRow.getAttribute('data-header-row') : false;
|
|
48
44
|
const marginTop = hasHeaderRow && stickyTop !== undefined ? (_rowHeights$ = rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights[0]) !== null && _rowHeights$ !== void 0 ? _rowHeights$ : 0 : 0;
|
|
@@ -102,6 +98,64 @@ export const ColumnControls = ({
|
|
|
102
98
|
return [colIndex];
|
|
103
99
|
}, [colIndex]);
|
|
104
100
|
const previewHeight = (_rowHeights$reduce = rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights.reduce((sum, cur) => sum + cur, 0)) !== null && _rowHeights$reduce !== void 0 ? _rowHeights$reduce : 0;
|
|
101
|
+
const generateHandleByType = useCallback(type => {
|
|
102
|
+
var _colWidths;
|
|
103
|
+
if (!hoveredCell) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
const {
|
|
107
|
+
isDragMenuOpen,
|
|
108
|
+
dragMenuIndex,
|
|
109
|
+
dragMenuDirection
|
|
110
|
+
} = getDragDropPluginState(editorView.state);
|
|
111
|
+
const isHover = type === 'hover';
|
|
112
|
+
const isHoveredOnSelectedColumn = isDragMenuOpen && dragMenuDirection === 'column' && dragMenuIndex === colIndex;
|
|
113
|
+
const showCondition = isHover ? !isHoveredOnSelectedColumn && Number.isFinite(hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex) : isDragMenuOpen && dragMenuDirection === 'column';
|
|
114
|
+
if (!showCondition) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const selectedColumnPosition = `${dragMenuIndex + 1} / span ${selectedColIndexes.length}`;
|
|
118
|
+
const gridColumnPosition = selectedColIndexes.includes(colIndex) ? `${selectedColIndexes[0] + 1} / span ${selectedColIndexes.length}` : `${colIndex + 1} / span 1`;
|
|
119
|
+
const selectedApprearance = isInDanger ? 'danger' : 'selected';
|
|
120
|
+
const hoveredAppearance = selectedColIndexes.includes(colIndex) ? isInDanger ? 'danger' : 'selected' : 'default';
|
|
121
|
+
return showCondition && /*#__PURE__*/React.createElement("div", {
|
|
122
|
+
key: type,
|
|
123
|
+
style: {
|
|
124
|
+
gridColumn: isHover ? gridColumnPosition : selectedColumnPosition,
|
|
125
|
+
display: 'flex',
|
|
126
|
+
justifyContent: 'center',
|
|
127
|
+
alignItems: 'center',
|
|
128
|
+
height: 'fit-content',
|
|
129
|
+
placeSelf: 'center',
|
|
130
|
+
zIndex: 99
|
|
131
|
+
},
|
|
132
|
+
"data-column-control-index": hoveredCell.colIndex,
|
|
133
|
+
"data-testid": isHover ? 'table-floating-column-control' : 'table-floating-column-control-selected'
|
|
134
|
+
}, /*#__PURE__*/React.createElement(DragHandle, {
|
|
135
|
+
direction: "column",
|
|
136
|
+
tableLocalId: localId || '',
|
|
137
|
+
indexes: isHover ? colIndexes : selectedColIndexes,
|
|
138
|
+
forceDefaultHandle: !isHover,
|
|
139
|
+
previewWidth: (_colWidths = colWidths === null || colWidths === void 0 ? void 0 : colWidths[colIndex]) !== null && _colWidths !== void 0 ? _colWidths : 48,
|
|
140
|
+
previewHeight: previewHeight,
|
|
141
|
+
appearance: isHover ? hoveredAppearance : selectedApprearance,
|
|
142
|
+
onClick: handleClick,
|
|
143
|
+
onMouseOver: handleMouseOver,
|
|
144
|
+
onMouseOut: handleMouseOut,
|
|
145
|
+
onMouseUp: handleMouseUp,
|
|
146
|
+
editorView: editorView
|
|
147
|
+
}));
|
|
148
|
+
}, [colIndex, previewHeight, colWidths, colIndexes, editorView, handleClick, handleMouseOut, handleMouseOver, handleMouseUp, hoveredCell, isInDanger, localId, selectedColIndexes]);
|
|
149
|
+
const columnHandles = useCallback(hoveredCell => {
|
|
150
|
+
if (!hoveredCell) {
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
if (hoveredCell.colIndex === undefined) {
|
|
154
|
+
return generateHandleByType('selected');
|
|
155
|
+
}
|
|
156
|
+
const sortedHandles = [generateHandleByType('hover'), generateHandleByType('selected')];
|
|
157
|
+
return hoveredCell.colIndex < selectedColIndexes[0] ? sortedHandles : sortedHandles.reverse();
|
|
158
|
+
}, [generateHandleByType, selectedColIndexes]);
|
|
105
159
|
return /*#__PURE__*/React.createElement("div", {
|
|
106
160
|
className: ClassName.DRAG_COLUMN_CONTROLS,
|
|
107
161
|
onMouseMove: handleMouseMove
|
|
@@ -129,30 +183,6 @@ export const ColumnControls = ({
|
|
|
129
183
|
style: columnParams.length - 1 === index ? {
|
|
130
184
|
right: '0'
|
|
131
185
|
} : {}
|
|
132
|
-
}))), tableActive && !isResizing &&
|
|
133
|
-
style: {
|
|
134
|
-
gridColumn: gridColumnPosition,
|
|
135
|
-
display: 'flex',
|
|
136
|
-
justifyContent: 'center',
|
|
137
|
-
alignItems: 'center',
|
|
138
|
-
height: 'fit-content',
|
|
139
|
-
placeSelf: 'center',
|
|
140
|
-
zIndex: 99
|
|
141
|
-
},
|
|
142
|
-
"data-column-control-index": hoveredCell.colIndex,
|
|
143
|
-
"data-testid": "table-floating-column-control"
|
|
144
|
-
}, /*#__PURE__*/React.createElement(DragHandle, {
|
|
145
|
-
direction: "column",
|
|
146
|
-
tableLocalId: localId || '',
|
|
147
|
-
indexes: colIndexes,
|
|
148
|
-
previewWidth: (_colWidths = colWidths === null || colWidths === void 0 ? void 0 : colWidths[colIndex]) !== null && _colWidths !== void 0 ? _colWidths : 48,
|
|
149
|
-
previewHeight: previewHeight,
|
|
150
|
-
appearance: selectedColIndexes.includes(hoveredCell.colIndex) ? isInDanger ? 'danger' : 'selected' : 'default',
|
|
151
|
-
onClick: handleClick,
|
|
152
|
-
onMouseOver: handleMouseOver,
|
|
153
|
-
onMouseOut: handleMouseOut,
|
|
154
|
-
onMouseUp: handleMouseUp,
|
|
155
|
-
editorView: editorView
|
|
156
|
-
}))));
|
|
186
|
+
}))), tableActive && !isResizing && columnHandles(hoveredCell)));
|
|
157
187
|
};
|
|
158
188
|
export default ColumnControls;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable @atlaskit/design-system/prefer-primitives */
|
|
2
|
+
|
|
1
3
|
import React, { Fragment, useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
4
|
import { injectIntl } from 'react-intl-next';
|
|
3
5
|
import { CellSelection } from '@atlaskit/editor-tables';
|
|
@@ -5,6 +7,7 @@ import { getSelectionRect } from '@atlaskit/editor-tables/utils';
|
|
|
5
7
|
import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
|
|
6
8
|
import { clearHoverSelection } from '../../../commands';
|
|
7
9
|
import { toggleDragMenu } from '../../../pm-plugins/drag-and-drop/commands';
|
|
10
|
+
import { getPluginState as getDragDropPluginState } from '../../../pm-plugins/drag-and-drop/plugin-factory';
|
|
8
11
|
import { getPluginState as getTablePluginState } from '../../../pm-plugins/plugin-factory';
|
|
9
12
|
import { TableCssClassName as ClassName } from '../../../types';
|
|
10
13
|
import { getRowHeights, getRowsParams, getSelectedRowIndexes } from '../../../utils';
|
|
@@ -74,13 +77,6 @@ const DragControlsComponent = ({
|
|
|
74
77
|
toggleDragMenu(undefined, 'row', hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex)(editorView.state, editorView.dispatch);
|
|
75
78
|
}, [editorView, hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex]);
|
|
76
79
|
const rowIndex = hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex;
|
|
77
|
-
const gridRowPosition = useMemo(() => {
|
|
78
|
-
// if more than one row is selected, ensure the handle spans over the selected range
|
|
79
|
-
if (selectedRowIndexes.includes(rowIndex)) {
|
|
80
|
-
return `${selectedRowIndexes[0] + 1} / span ${selectedRowIndexes.length}`;
|
|
81
|
-
}
|
|
82
|
-
return `${rowIndex + 1} / span 1`;
|
|
83
|
-
}, [rowIndex, selectedRowIndexes]);
|
|
84
80
|
const handleMouseOut = useCallback(() => {
|
|
85
81
|
if (tableActive) {
|
|
86
82
|
const {
|
|
@@ -109,6 +105,63 @@ const DragControlsComponent = ({
|
|
|
109
105
|
const handleClick = useCallback(e => {
|
|
110
106
|
selectRow(rowIndex, e === null || e === void 0 ? void 0 : e.shiftKey);
|
|
111
107
|
}, [rowIndex, selectRow]);
|
|
108
|
+
const generateHandleByType = useCallback(type => {
|
|
109
|
+
if (!hoveredCell) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const {
|
|
113
|
+
isDragMenuOpen,
|
|
114
|
+
dragMenuIndex,
|
|
115
|
+
dragMenuDirection
|
|
116
|
+
} = getDragDropPluginState(editorView.state);
|
|
117
|
+
const isHover = type === 'hover';
|
|
118
|
+
const isHoveredOnSelectedRow = isDragMenuOpen && dragMenuDirection === 'row' && dragMenuIndex === rowIndex;
|
|
119
|
+
const showCondition = isHover ? !isHoveredOnSelectedRow && !selectedRowIndexes.includes(rowIndex) && Number.isFinite(hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex) : isDragMenuOpen && dragMenuDirection === 'row' && Number.isFinite(hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex);
|
|
120
|
+
if (!showCondition) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const gridRowPosition =
|
|
124
|
+
// if more than one row is selected, ensure the handle spans over the selected range
|
|
125
|
+
selectedRowIndexes.includes(rowIndex) ? `${selectedRowIndexes[0] + 1} / span ${selectedRowIndexes.length}` : `${rowIndex + 1} / span 1`;
|
|
126
|
+
const selectedRowPosition = `${dragMenuIndex + 1} / span ${selectedRowIndexes.length}`;
|
|
127
|
+
const selectedApprearance = isInDanger ? 'danger' : 'selected';
|
|
128
|
+
const hoveredAppearance = selectedRowIndexes.includes(rowIndex) ? isInDanger ? 'danger' : 'selected' : 'default';
|
|
129
|
+
return showCondition && /*#__PURE__*/React.createElement("div", {
|
|
130
|
+
key: type,
|
|
131
|
+
style: {
|
|
132
|
+
gridRow: isHover ? gridRowPosition : selectedRowPosition,
|
|
133
|
+
gridColumn: '2',
|
|
134
|
+
display: 'flex',
|
|
135
|
+
height: '100%',
|
|
136
|
+
alignItems: 'center',
|
|
137
|
+
justifyContent: 'center'
|
|
138
|
+
},
|
|
139
|
+
"data-testid": isHover ? 'table-floating-row-drag-handle' : 'table-floating-row-control-selected'
|
|
140
|
+
}, /*#__PURE__*/React.createElement(DragHandle, {
|
|
141
|
+
direction: "row",
|
|
142
|
+
tableLocalId: currentNodeLocalId,
|
|
143
|
+
indexes: isHover ? rowIndexes : selectedRowIndexes,
|
|
144
|
+
forceDefaultHandle: !isHover,
|
|
145
|
+
previewWidth: tableWidth,
|
|
146
|
+
previewHeight: rowHeights[rowIndex],
|
|
147
|
+
appearance: isHover ? hoveredAppearance : selectedApprearance,
|
|
148
|
+
onClick: handleClick,
|
|
149
|
+
onMouseOver: handleMouseOver,
|
|
150
|
+
onMouseOut: handleMouseOut,
|
|
151
|
+
onMouseUp: onMouseUp,
|
|
152
|
+
editorView: editorView
|
|
153
|
+
}));
|
|
154
|
+
}, [currentNodeLocalId, editorView, handleClick, handleMouseOut, handleMouseOver, hoveredCell, isInDanger, onMouseUp, rowHeights, rowIndex, rowIndexes, selectedRowIndexes, tableWidth]);
|
|
155
|
+
const rowHandles = useCallback(hoveredCell => {
|
|
156
|
+
if (!hoveredCell) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
if (hoveredCell.rowIndex === undefined) {
|
|
160
|
+
return generateHandleByType('selected');
|
|
161
|
+
}
|
|
162
|
+
const sortedHandles = [generateHandleByType('hover'), generateHandleByType('selected')];
|
|
163
|
+
return hoveredCell.rowIndex < selectedRowIndexes[0] ? sortedHandles : sortedHandles.reverse();
|
|
164
|
+
}, [generateHandleByType, selectedRowIndexes]);
|
|
112
165
|
return /*#__PURE__*/React.createElement("div", {
|
|
113
166
|
className: ClassName.DRAG_ROW_CONTROLS,
|
|
114
167
|
style: {
|
|
@@ -147,27 +200,6 @@ const DragControlsComponent = ({
|
|
|
147
200
|
position: 'relative',
|
|
148
201
|
left: "var(--ds-space-negative-100, -8px)"
|
|
149
202
|
}
|
|
150
|
-
}))), !isResizing &&
|
|
151
|
-
style: {
|
|
152
|
-
gridRow: gridRowPosition,
|
|
153
|
-
gridColumn: '2',
|
|
154
|
-
display: 'flex',
|
|
155
|
-
height: '100%',
|
|
156
|
-
alignItems: 'center',
|
|
157
|
-
justifyContent: 'center'
|
|
158
|
-
},
|
|
159
|
-
"data-testid": "table-floating-row-drag-handle"
|
|
160
|
-
}, /*#__PURE__*/React.createElement(DragHandle, {
|
|
161
|
-
tableLocalId: currentNodeLocalId,
|
|
162
|
-
indexes: rowIndexes,
|
|
163
|
-
previewWidth: tableWidth,
|
|
164
|
-
previewHeight: rowHeights[rowIndex],
|
|
165
|
-
appearance: selectedRowIndexes.includes(rowIndex) ? isInDanger ? 'danger' : 'selected' : 'default',
|
|
166
|
-
onClick: handleClick,
|
|
167
|
-
onMouseOver: handleMouseOver,
|
|
168
|
-
onMouseOut: handleMouseOut,
|
|
169
|
-
onMouseUp: onMouseUp,
|
|
170
|
-
editorView: editorView
|
|
171
|
-
})));
|
|
203
|
+
}))), !isResizing && Number.isFinite(rowIndex) && rowHandles(hoveredCell));
|
|
172
204
|
};
|
|
173
205
|
export const DragControls = injectIntl(DragControlsComponent);
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { DragHandleDisabledIcon, DragHandleIcon, MinimisedHandleIcon } from '../icons';
|
|
3
3
|
export var HandleIconComponent = function HandleIconComponent(props) {
|
|
4
4
|
var direction = props.direction,
|
|
5
|
+
forceDefaultHandle = props.forceDefaultHandle,
|
|
5
6
|
isDragMenuOpen = props.isDragMenuOpen,
|
|
6
7
|
isRowHandleHovered = props.isRowHandleHovered,
|
|
7
8
|
isColumnHandleHovered = props.isColumnHandleHovered,
|
|
@@ -12,11 +13,8 @@ export var HandleIconComponent = function HandleIconComponent(props) {
|
|
|
12
13
|
var isHandleHovered = isRowHandleHovered || isColumnHandleHovered;
|
|
13
14
|
var isCurrentRowOrColumnSelected = isCurrentRowSelected || isCurrentColumnSelected;
|
|
14
15
|
var isDragMenuOpenOnCurrentRowOrColumn = isDragMenuOpen && dragMenuDirection === direction && isCurrentRowOrColumnSelected;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// hoverred handle or open drag menu
|
|
18
|
-
if (isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
19
|
-
return showNormalHandle;
|
|
16
|
+
if (forceDefaultHandle || isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
17
|
+
return hasMergedCells ? /*#__PURE__*/React.createElement(DragHandleDisabledIcon, null) : /*#__PURE__*/React.createElement(DragHandleIcon, null);
|
|
20
18
|
}
|
|
21
19
|
return /*#__PURE__*/React.createElement(MinimisedHandleIcon, null);
|
|
22
20
|
};
|
|
@@ -18,6 +18,8 @@ export var DragHandle = function DragHandle(_ref) {
|
|
|
18
18
|
_ref$appearance = _ref.appearance,
|
|
19
19
|
appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
|
|
20
20
|
indexes = _ref.indexes,
|
|
21
|
+
_ref$forceDefaultHand = _ref.forceDefaultHandle,
|
|
22
|
+
forceDefaultHandle = _ref$forceDefaultHand === void 0 ? false : _ref$forceDefaultHand,
|
|
21
23
|
previewWidth = _ref.previewWidth,
|
|
22
24
|
previewHeight = _ref.previewHeight,
|
|
23
25
|
onMouseOver = _ref.onMouseOver,
|
|
@@ -49,6 +51,7 @@ export var DragHandle = function DragHandle(_ref) {
|
|
|
49
51
|
var handleIconProps = {
|
|
50
52
|
hasMergedCells: hasMergedCells,
|
|
51
53
|
direction: direction,
|
|
54
|
+
forceDefaultHandle: forceDefaultHandle,
|
|
52
55
|
isDragMenuOpen: isDragMenuOpen,
|
|
53
56
|
isRowHandleHovered: isRowHandleHovered,
|
|
54
57
|
isColumnHandleHovered: isColumnHandleHovered,
|