@atlaskit/editor-plugin-table 5.4.16 → 5.4.18
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 +14 -0
- package/dist/cjs/plugins/table/commands/hover.js +4 -2
- package/dist/cjs/plugins/table/nodeviews/TableComponent.js +1 -1
- package/dist/cjs/plugins/table/nodeviews/TableResizer.js +2 -2
- package/dist/cjs/plugins/table/ui/DragHandle/HandleIconComponent.js +5 -3
- package/dist/cjs/plugins/table/ui/DragHandle/index.js +4 -6
- package/dist/cjs/plugins/table/ui/FloatingDragMenu/DragMenu.js +2 -2
- package/dist/cjs/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +33 -62
- package/dist/cjs/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +31 -62
- package/dist/es2019/plugins/table/commands/hover.js +4 -2
- package/dist/es2019/plugins/table/nodeviews/TableComponent.js +1 -1
- package/dist/es2019/plugins/table/nodeviews/TableResizer.js +2 -2
- package/dist/es2019/plugins/table/ui/DragHandle/HandleIconComponent.js +5 -3
- package/dist/es2019/plugins/table/ui/DragHandle/index.js +2 -3
- package/dist/es2019/plugins/table/ui/FloatingDragMenu/DragMenu.js +2 -2
- package/dist/es2019/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +33 -63
- package/dist/es2019/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +29 -61
- package/dist/esm/plugins/table/commands/hover.js +4 -2
- package/dist/esm/plugins/table/nodeviews/TableComponent.js +1 -1
- package/dist/esm/plugins/table/nodeviews/TableResizer.js +2 -2
- package/dist/esm/plugins/table/ui/DragHandle/HandleIconComponent.js +5 -3
- package/dist/esm/plugins/table/ui/DragHandle/index.js +2 -4
- package/dist/esm/plugins/table/ui/FloatingDragMenu/DragMenu.js +2 -2
- package/dist/esm/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +33 -62
- package/dist/esm/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +29 -60
- package/dist/types/plugins/table/types.d.ts +1 -1
- package/dist/types/plugins/table/ui/DragHandle/HandleIconComponent.d.ts +0 -1
- package/dist/types/plugins/table/ui/DragHandle/index.d.ts +1 -2
- package/dist/types-ts4.5/plugins/table/types.d.ts +1 -1
- package/dist/types-ts4.5/plugins/table/ui/DragHandle/HandleIconComponent.d.ts +0 -1
- package/dist/types-ts4.5/plugins/table/ui/DragHandle/index.d.ts +1 -2
- package/package.json +1 -1
- package/src/plugins/table/commands/hover.ts +2 -0
- package/src/plugins/table/nodeviews/TableComponent.tsx +1 -1
- package/src/plugins/table/nodeviews/TableResizer.tsx +4 -2
- package/src/plugins/table/types.ts +1 -2
- package/src/plugins/table/ui/DragHandle/HandleIconComponent.tsx +9 -10
- package/src/plugins/table/ui/DragHandle/index.tsx +8 -6
- package/src/plugins/table/ui/FloatingDragMenu/DragMenu.tsx +3 -2
- package/src/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.tsx +48 -118
- package/src/plugins/table/ui/TableFloatingControls/RowControls/DragControls.tsx +41 -126
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-table
|
|
2
2
|
|
|
3
|
+
## 5.4.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#59374](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/59374) [`7c5ff172f275`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7c5ff172f275) - Fix firefox issue with dragging when child element has pointer elements blocked
|
|
8
|
+
- [#59400](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/59400) [`92bff40b42a1`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/92bff40b42a1) - revert changes to make drag handle visible when menu is open
|
|
9
|
+
|
|
10
|
+
## 5.4.17
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [#59009](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/59009) [`f7e9d874ff37`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f7e9d874ff37) - Fix table expand selection when `platform.editor.table-shift-click-selection-backward` FF is enabled
|
|
15
|
+
- [#58768](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58768) [`a300aa54a8e9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a300aa54a8e9) - [ux] Fixes resize handle state when column is in danger
|
|
16
|
+
|
|
3
17
|
## 5.4.16
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -106,7 +106,8 @@ var hoverTable = exports.hoverTable = function hoverTable(isInDanger, isSelected
|
|
|
106
106
|
decorationSet: (0, _utils2.updatePluginStateDecorations)(state, decorations, _types.TableDecorations.TABLE_CONTROLS_HOVER),
|
|
107
107
|
hoveredColumns: hoveredColumns,
|
|
108
108
|
hoveredRows: hoveredRows,
|
|
109
|
-
isInDanger: isInDanger
|
|
109
|
+
isInDanger: isInDanger,
|
|
110
|
+
isWholeTableInDanger: isInDanger
|
|
110
111
|
}
|
|
111
112
|
};
|
|
112
113
|
}, function (tr) {
|
|
@@ -119,7 +120,8 @@ var clearHoverSelection = exports.clearHoverSelection = function clearHoverSelec
|
|
|
119
120
|
type: 'CLEAR_HOVER_SELECTION',
|
|
120
121
|
data: {
|
|
121
122
|
decorationSet: (0, _utils2.updatePluginStateDecorations)(state, [], _types.TableDecorations.ALL_CONTROLS_HOVER),
|
|
122
|
-
isInDanger: false
|
|
123
|
+
isInDanger: false,
|
|
124
|
+
isWholeTableInDanger: false
|
|
123
125
|
}
|
|
124
126
|
};
|
|
125
127
|
});
|
|
@@ -286,7 +286,7 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
286
286
|
_this.containerWidth = _containerWidth;
|
|
287
287
|
_this.isInitialOverflowSent = false;
|
|
288
288
|
|
|
289
|
-
// store table size using previous full-width mode so can detect if it has changed
|
|
289
|
+
// store table size using previous full-width mode so can detect if it has changed.
|
|
290
290
|
var isFullWidthModeEnabled = _options ? _options.wasFullWidthModeEnabled : false;
|
|
291
291
|
_this.layoutSize = _this.tableNodeLayoutSize(_this.node, _containerWidth.width, {
|
|
292
292
|
isFullWidthModeEnabled: isFullWidthModeEnabled
|
|
@@ -105,7 +105,7 @@ var TableResizer = exports.TableResizer = function TableResizer(_ref) {
|
|
|
105
105
|
var resizerMinWidth = getResizerMinWidth(node);
|
|
106
106
|
var handleSize = getResizerHandleHeight(tableRef);
|
|
107
107
|
var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
108
|
-
|
|
108
|
+
isWholeTableInDanger = _getPluginState.isWholeTableInDanger;
|
|
109
109
|
var _useMeasureFramerate = (0, _analytics2.useMeasureFramerate)(),
|
|
110
110
|
startMeasure = _useMeasureFramerate.startMeasure,
|
|
111
111
|
endMeasure = _useMeasureFramerate.endMeasure,
|
|
@@ -252,7 +252,7 @@ var TableResizer = exports.TableResizer = function TableResizer(_ref) {
|
|
|
252
252
|
snap: guidelineSnaps,
|
|
253
253
|
handlePositioning: "adjacent",
|
|
254
254
|
isHandleVisible: isTableSelected,
|
|
255
|
-
appearance:
|
|
255
|
+
appearance: isTableSelected && isWholeTableInDanger ? 'danger' : undefined,
|
|
256
256
|
handleHighlight: "shadow",
|
|
257
257
|
handleTooltipContent: formatMessage(_messages.tableMessages.resizeTable)
|
|
258
258
|
}, children);
|
|
@@ -9,7 +9,6 @@ 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,
|
|
13
12
|
isDragMenuOpen = props.isDragMenuOpen,
|
|
14
13
|
isRowHandleHovered = props.isRowHandleHovered,
|
|
15
14
|
isColumnHandleHovered = props.isColumnHandleHovered,
|
|
@@ -20,8 +19,11 @@ var HandleIconComponent = exports.HandleIconComponent = function HandleIconCompo
|
|
|
20
19
|
var isHandleHovered = isRowHandleHovered || isColumnHandleHovered;
|
|
21
20
|
var isCurrentRowOrColumnSelected = isCurrentRowSelected || isCurrentColumnSelected;
|
|
22
21
|
var isDragMenuOpenOnCurrentRowOrColumn = isDragMenuOpen && dragMenuDirection === direction && isCurrentRowOrColumnSelected;
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
var showNormalHandle = hasMergedCells ? /*#__PURE__*/_react.default.createElement(_icons.DragHandleDisabledIcon, null) : /*#__PURE__*/_react.default.createElement(_icons.DragHandleIcon, null);
|
|
23
|
+
|
|
24
|
+
// hoverred handle or open drag menu
|
|
25
|
+
if (isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
26
|
+
return showNormalHandle;
|
|
25
27
|
}
|
|
26
28
|
return /*#__PURE__*/_react.default.createElement(_icons.MinimisedHandleIcon, null);
|
|
27
29
|
};
|
|
@@ -11,12 +11,13 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _classnames2 = _interopRequireDefault(require("classnames"));
|
|
13
13
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
14
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
14
15
|
var _element = require("@atlaskit/pragmatic-drag-and-drop/adapter/element");
|
|
15
16
|
var _setCustomNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/util/set-custom-native-drag-preview");
|
|
16
17
|
var _pluginFactory = require("../../pm-plugins/drag-and-drop/plugin-factory");
|
|
17
18
|
var _pluginFactory2 = require("../../pm-plugins/plugin-factory");
|
|
18
19
|
var _types = require("../../types");
|
|
19
|
-
var
|
|
20
|
+
var _utils2 = require("../../utils");
|
|
20
21
|
var _DragPreview = require("../DragPreview");
|
|
21
22
|
var _HandleIconComponent = require("./HandleIconComponent");
|
|
22
23
|
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); }
|
|
@@ -28,8 +29,6 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
28
29
|
_ref$appearance = _ref.appearance,
|
|
29
30
|
appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
|
|
30
31
|
indexes = _ref.indexes,
|
|
31
|
-
_ref$forceDefaultHand = _ref.forceDefaultHandle,
|
|
32
|
-
forceDefaultHandle = _ref$forceDefaultHand === void 0 ? false : _ref$forceDefaultHand,
|
|
33
32
|
previewWidth = _ref.previewWidth,
|
|
34
33
|
previewHeight = _ref.previewHeight,
|
|
35
34
|
onMouseOver = _ref.onMouseOver,
|
|
@@ -56,12 +55,11 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
56
55
|
var isRowHandleHovered = direction === 'row' && hoveredRows.length > 0;
|
|
57
56
|
var isColumnHandleHovered = direction === 'column' && hoveredColumns.length > 0;
|
|
58
57
|
var hasMergedCells = (0, _react.useMemo)(function () {
|
|
59
|
-
return direction === 'row' ? (0,
|
|
58
|
+
return direction === 'row' ? (0, _utils2.hasMergedCellsInRow)(indexes[0])(selection) : (0, _utils2.hasMergedCellsInColumn)(indexes[0])(selection);
|
|
60
59
|
}, [indexes, direction, selection]);
|
|
61
60
|
var handleIconProps = {
|
|
62
61
|
hasMergedCells: hasMergedCells,
|
|
63
62
|
direction: direction,
|
|
64
|
-
forceDefaultHandle: forceDefaultHandle,
|
|
65
63
|
isDragMenuOpen: isDragMenuOpen,
|
|
66
64
|
isRowHandleHovered: isRowHandleHovered,
|
|
67
65
|
isColumnHandleHovered: isColumnHandleHovered,
|
|
@@ -131,7 +129,7 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
131
129
|
_onMouseUp && _onMouseUp(e);
|
|
132
130
|
},
|
|
133
131
|
onClick: onClick
|
|
134
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
132
|
+
}, _utils.browser.gecko ? /*#__PURE__*/_react.default.createElement(_HandleIconComponent.HandleIconComponent, handleIconProps) : /*#__PURE__*/_react.default.createElement("span", {
|
|
135
133
|
style: {
|
|
136
134
|
pointerEvents: 'none'
|
|
137
135
|
}
|
|
@@ -82,8 +82,8 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
82
82
|
var selection = state.selection;
|
|
83
83
|
var selectionRect = (0, _utils.isSelectionType)(selection, 'cell') ? (0, _utils.getSelectionRect)(selection) : (0, _utils.findCellRectClosestToPos)(selection.$from);
|
|
84
84
|
var hasMergedCells = direction === 'row' ? _utils2.hasMergedCellsInRow : _utils2.hasMergedCellsInColumn;
|
|
85
|
-
var
|
|
86
|
-
var dragMenuConfig = (0, _dragMenu.getDragMenuConfig)(direction, getEditorContainerWidth,
|
|
85
|
+
var shouldMoveDisabled = index !== undefined && hasMergedCells(index)(selection);
|
|
86
|
+
var dragMenuConfig = (0, _dragMenu.getDragMenuConfig)(direction, getEditorContainerWidth, shouldMoveDisabled, tableMap, index, targetCellPosition, selectionRect);
|
|
87
87
|
var _convertToDropdownIte = convertToDropdownItems(dragMenuConfig),
|
|
88
88
|
menuItems = _convertToDropdownIte.menuItems,
|
|
89
89
|
menuCallback = _convertToDropdownIte.menuCallback;
|
|
@@ -10,14 +10,11 @@ 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");
|
|
14
13
|
var _types = require("../../../types");
|
|
15
14
|
var _utils2 = require("../../../utils");
|
|
16
15
|
var _DragHandle = require("../../DragHandle");
|
|
17
16
|
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); }
|
|
18
17
|
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
|
-
|
|
21
18
|
var getSelectedColumns = function getSelectedColumns(selection) {
|
|
22
19
|
if (selection instanceof _editorTables.CellSelection && selection.isColSelection()) {
|
|
23
20
|
var rect = (0, _utils.getSelectionRect)(selection);
|
|
@@ -29,7 +26,7 @@ var getSelectedColumns = function getSelectedColumns(selection) {
|
|
|
29
26
|
return [];
|
|
30
27
|
};
|
|
31
28
|
var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
32
|
-
var _colWidths$map$join, _rowHeights$, _rowHeights$reduce;
|
|
29
|
+
var _colWidths$map$join, _rowHeights$, _rowHeights$reduce, _colWidths;
|
|
33
30
|
var editorView = _ref.editorView,
|
|
34
31
|
tableActive = _ref.tableActive,
|
|
35
32
|
tableRef = _ref.tableRef,
|
|
@@ -49,6 +46,13 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
|
49
46
|
var columnParams = (0, _utils2.getRowsParams)(colWidths !== null && colWidths !== void 0 ? colWidths : []);
|
|
50
47
|
var colIndex = hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.colIndex;
|
|
51
48
|
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]);
|
|
52
56
|
var firstRow = tableRef.querySelector('tr');
|
|
53
57
|
var hasHeaderRow = firstRow ? firstRow.getAttribute('data-header-row') : false;
|
|
54
58
|
var marginTop = hasHeaderRow && stickyTop !== undefined ? (_rowHeights$ = rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights[0]) !== null && _rowHeights$ !== void 0 ? _rowHeights$ : 0 : 0;
|
|
@@ -100,63 +104,6 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
|
100
104
|
var previewHeight = (_rowHeights$reduce = rowHeights === null || rowHeights === void 0 ? void 0 : rowHeights.reduce(function (sum, cur) {
|
|
101
105
|
return sum + cur;
|
|
102
106
|
}, 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]);
|
|
160
107
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
161
108
|
className: _types.TableCssClassName.DRAG_COLUMN_CONTROLS,
|
|
162
109
|
onMouseMove: handleMouseMove
|
|
@@ -185,6 +132,30 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
|
|
|
185
132
|
right: '0'
|
|
186
133
|
} : {}
|
|
187
134
|
}));
|
|
188
|
-
}), tableActive && !isResizing &&
|
|
135
|
+
}), tableActive && !isResizing && isTableHovered && !!hoveredCell && Number.isFinite(hoveredCell.colIndex) && /*#__PURE__*/_react.default.createElement("div", {
|
|
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
|
+
}))));
|
|
189
160
|
};
|
|
190
161
|
var _default = exports.default = ColumnControls;
|
|
@@ -14,8 +14,7 @@ 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/
|
|
18
|
-
var _pluginFactory2 = require("../../../pm-plugins/plugin-factory");
|
|
17
|
+
var _pluginFactory = require("../../../pm-plugins/plugin-factory");
|
|
19
18
|
var _types = require("../../../types");
|
|
20
19
|
var _utils2 = require("../../../utils");
|
|
21
20
|
var _consts = require("../../consts");
|
|
@@ -23,8 +22,6 @@ var _DragHandle = require("../../DragHandle");
|
|
|
23
22
|
var _RowDropTarget = _interopRequireDefault(require("../RowDropTarget"));
|
|
24
23
|
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); }
|
|
25
24
|
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
|
-
|
|
28
25
|
var getSelectedRows = function getSelectedRows(selection) {
|
|
29
26
|
if (selection instanceof _editorTables.CellSelection && selection.isRowSelection()) {
|
|
30
27
|
var rect = (0, _utils.getSelectionRect)(selection);
|
|
@@ -71,7 +68,7 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
71
68
|
if (!indexes || !localId || type !== 'table-row') {
|
|
72
69
|
return false;
|
|
73
70
|
}
|
|
74
|
-
var _getTablePluginState = (0,
|
|
71
|
+
var _getTablePluginState = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
75
72
|
tableNode = _getTablePluginState.tableNode;
|
|
76
73
|
// If the draggable localId is the same as the current selected table localId then we will allow the monitor
|
|
77
74
|
// watch for changes
|
|
@@ -89,6 +86,13 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
89
86
|
(0, _commands2.toggleDragMenu)(undefined, 'row', hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex)(editorView.state, editorView.dispatch);
|
|
90
87
|
}, [editorView, hoveredCell === null || hoveredCell === void 0 ? void 0 : hoveredCell.rowIndex]);
|
|
91
88
|
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]);
|
|
92
96
|
var handleMouseOut = (0, _react.useCallback)(function () {
|
|
93
97
|
if (tableActive) {
|
|
94
98
|
var state = editorView.state,
|
|
@@ -115,62 +119,6 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
115
119
|
var handleClick = (0, _react.useCallback)(function (e) {
|
|
116
120
|
selectRow(rowIndex, e === null || e === void 0 ? void 0 : e.shiftKey);
|
|
117
121
|
}, [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]);
|
|
174
122
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
175
123
|
className: _types.TableCssClassName.DRAG_ROW_CONTROLS,
|
|
176
124
|
style: {
|
|
@@ -210,6 +158,27 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
|
|
|
210
158
|
left: "var(--ds-space-negative-100, -8px)"
|
|
211
159
|
}
|
|
212
160
|
}));
|
|
213
|
-
}), !isResizing && Number.isFinite(rowIndex) &&
|
|
161
|
+
}), !isResizing && isTableHovered && Number.isFinite(rowIndex) && /*#__PURE__*/_react.default.createElement("div", {
|
|
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
|
+
})));
|
|
214
183
|
};
|
|
215
184
|
var DragControls = exports.DragControls = (0, _reactIntlNext.injectIntl)(DragControlsComponent);
|
|
@@ -85,7 +85,8 @@ export const hoverTable = (isInDanger, isSelected) => createCommand(state => {
|
|
|
85
85
|
decorationSet: updatePluginStateDecorations(state, decorations, TableDecorations.TABLE_CONTROLS_HOVER),
|
|
86
86
|
hoveredColumns,
|
|
87
87
|
hoveredRows,
|
|
88
|
-
isInDanger
|
|
88
|
+
isInDanger,
|
|
89
|
+
isWholeTableInDanger: isInDanger
|
|
89
90
|
}
|
|
90
91
|
};
|
|
91
92
|
}, tr => tr.setMeta('addToHistory', false));
|
|
@@ -93,7 +94,8 @@ export const clearHoverSelection = () => createCommand(state => ({
|
|
|
93
94
|
type: 'CLEAR_HOVER_SELECTION',
|
|
94
95
|
data: {
|
|
95
96
|
decorationSet: updatePluginStateDecorations(state, [], TableDecorations.ALL_CONTROLS_HOVER),
|
|
96
|
-
isInDanger: false
|
|
97
|
+
isInDanger: false,
|
|
98
|
+
isWholeTableInDanger: false
|
|
97
99
|
}
|
|
98
100
|
}));
|
|
99
101
|
export const showResizeHandleLine = cellColumnPositioning => createCommand(state => ({
|
|
@@ -284,7 +284,7 @@ class TableComponent extends React.Component {
|
|
|
284
284
|
this.containerWidth = _containerWidth;
|
|
285
285
|
this.isInitialOverflowSent = false;
|
|
286
286
|
|
|
287
|
-
// store table size using previous full-width mode so can detect if it has changed
|
|
287
|
+
// store table size using previous full-width mode so can detect if it has changed.
|
|
288
288
|
const isFullWidthModeEnabled = _options ? _options.wasFullWidthModeEnabled : false;
|
|
289
289
|
this.layoutSize = this.tableNodeLayoutSize(this.node, _containerWidth.width, {
|
|
290
290
|
isFullWidthModeEnabled
|
|
@@ -90,7 +90,7 @@ export const TableResizer = ({
|
|
|
90
90
|
const resizerMinWidth = getResizerMinWidth(node);
|
|
91
91
|
const handleSize = getResizerHandleHeight(tableRef);
|
|
92
92
|
const {
|
|
93
|
-
|
|
93
|
+
isWholeTableInDanger
|
|
94
94
|
} = getPluginState(editorView.state);
|
|
95
95
|
const {
|
|
96
96
|
startMeasure,
|
|
@@ -247,7 +247,7 @@ export const TableResizer = ({
|
|
|
247
247
|
snap: guidelineSnaps,
|
|
248
248
|
handlePositioning: "adjacent",
|
|
249
249
|
isHandleVisible: isTableSelected,
|
|
250
|
-
appearance:
|
|
250
|
+
appearance: isTableSelected && isWholeTableInDanger ? 'danger' : undefined,
|
|
251
251
|
handleHighlight: "shadow",
|
|
252
252
|
handleTooltipContent: formatMessage(messages.resizeTable)
|
|
253
253
|
}, children);
|
|
@@ -3,7 +3,6 @@ import { DragHandleDisabledIcon, DragHandleIcon, MinimisedHandleIcon } from '../
|
|
|
3
3
|
export const HandleIconComponent = props => {
|
|
4
4
|
const {
|
|
5
5
|
direction,
|
|
6
|
-
forceDefaultHandle,
|
|
7
6
|
isDragMenuOpen,
|
|
8
7
|
isRowHandleHovered,
|
|
9
8
|
isColumnHandleHovered,
|
|
@@ -15,8 +14,11 @@ export const HandleIconComponent = props => {
|
|
|
15
14
|
const isHandleHovered = isRowHandleHovered || isColumnHandleHovered;
|
|
16
15
|
const isCurrentRowOrColumnSelected = isCurrentRowSelected || isCurrentColumnSelected;
|
|
17
16
|
const isDragMenuOpenOnCurrentRowOrColumn = isDragMenuOpen && dragMenuDirection === direction && isCurrentRowOrColumnSelected;
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const showNormalHandle = hasMergedCells ? /*#__PURE__*/React.createElement(DragHandleDisabledIcon, null) : /*#__PURE__*/React.createElement(DragHandleIcon, null);
|
|
18
|
+
|
|
19
|
+
// hoverred handle or open drag menu
|
|
20
|
+
if (isHandleHovered || isDragMenuOpenOnCurrentRowOrColumn) {
|
|
21
|
+
return showNormalHandle;
|
|
20
22
|
}
|
|
21
23
|
return /*#__PURE__*/React.createElement(MinimisedHandleIcon, null);
|
|
22
24
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import classnames from 'classnames';
|
|
3
3
|
import ReactDOM from 'react-dom';
|
|
4
|
+
import { browser } from '@atlaskit/editor-common/utils';
|
|
4
5
|
import { draggable } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
|
|
5
6
|
import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/util/set-custom-native-drag-preview';
|
|
6
7
|
import { getPluginState as getDragDropPluginState } from '../../pm-plugins/drag-and-drop/plugin-factory';
|
|
@@ -14,7 +15,6 @@ export const DragHandle = ({
|
|
|
14
15
|
direction = 'row',
|
|
15
16
|
appearance = 'default',
|
|
16
17
|
indexes,
|
|
17
|
-
forceDefaultHandle = false,
|
|
18
18
|
previewWidth,
|
|
19
19
|
previewHeight,
|
|
20
20
|
onMouseOver,
|
|
@@ -46,7 +46,6 @@ export const DragHandle = ({
|
|
|
46
46
|
const handleIconProps = {
|
|
47
47
|
hasMergedCells,
|
|
48
48
|
direction,
|
|
49
|
-
forceDefaultHandle,
|
|
50
49
|
isDragMenuOpen,
|
|
51
50
|
isRowHandleHovered,
|
|
52
51
|
isColumnHandleHovered,
|
|
@@ -119,7 +118,7 @@ export const DragHandle = ({
|
|
|
119
118
|
onMouseUp && onMouseUp(e);
|
|
120
119
|
},
|
|
121
120
|
onClick: onClick
|
|
122
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
121
|
+
}, browser.gecko ? /*#__PURE__*/React.createElement(HandleIconComponent, handleIconProps) : /*#__PURE__*/React.createElement("span", {
|
|
123
122
|
style: {
|
|
124
123
|
pointerEvents: 'none'
|
|
125
124
|
}
|
|
@@ -73,8 +73,8 @@ export const DragMenu = ({
|
|
|
73
73
|
} = state;
|
|
74
74
|
const selectionRect = isSelectionType(selection, 'cell') ? getSelectionRect(selection) : findCellRectClosestToPos(selection.$from);
|
|
75
75
|
const hasMergedCells = direction === 'row' ? hasMergedCellsInRow : hasMergedCellsInColumn;
|
|
76
|
-
const
|
|
77
|
-
const dragMenuConfig = getDragMenuConfig(direction, getEditorContainerWidth,
|
|
76
|
+
const shouldMoveDisabled = index !== undefined && hasMergedCells(index)(selection);
|
|
77
|
+
const dragMenuConfig = getDragMenuConfig(direction, getEditorContainerWidth, shouldMoveDisabled, tableMap, index, targetCellPosition, selectionRect);
|
|
78
78
|
const {
|
|
79
79
|
menuItems,
|
|
80
80
|
menuCallback
|