@atlaskit/editor-plugin-table 7.3.0 → 7.3.2
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 +13 -0
- package/afm-cc/tsconfig.json +3 -0
- package/dist/cjs/commands/misc.js +4 -2
- package/dist/cjs/commands/selection.js +4 -2
- package/dist/cjs/pm-plugins/drag-and-drop/commands.js +3 -1
- package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +33 -1
- package/dist/cjs/pm-plugins/drag-and-drop/reducer.js +2 -1
- package/dist/cjs/pm-plugins/table-selection-keymap.js +2 -2
- package/dist/cjs/ui/DragHandle/HandleIconComponent.js +1 -3
- package/dist/cjs/ui/DragHandle/index.js +24 -10
- package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +75 -33
- package/dist/cjs/ui/FloatingDragMenu/DropdownMenu.js +123 -0
- package/dist/cjs/ui/FloatingDragMenu/index.js +2 -2
- package/dist/cjs/ui/TableFloatingColumnControls/ColumnControls/index.js +24 -35
- package/dist/cjs/ui/TableFloatingColumnControls/index.js +1 -2
- package/dist/cjs/ui/TableFloatingControls/CornerControls/DragCornerControls.js +4 -0
- package/dist/cjs/ui/TableFloatingControls/RowControls/DragControls.js +26 -33
- package/dist/cjs/ui/common-styles.js +1 -1
- package/dist/cjs/ui/consts.js +3 -2
- package/dist/es2019/commands/misc.js +4 -4
- package/dist/es2019/commands/selection.js +4 -4
- package/dist/es2019/pm-plugins/drag-and-drop/commands.js +3 -3
- package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +34 -1
- package/dist/es2019/pm-plugins/drag-and-drop/reducer.js +2 -1
- package/dist/es2019/pm-plugins/table-selection-keymap.js +2 -2
- package/dist/es2019/ui/DragHandle/HandleIconComponent.js +1 -3
- package/dist/es2019/ui/DragHandle/index.js +27 -10
- package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +72 -32
- package/dist/es2019/ui/FloatingDragMenu/DropdownMenu.js +109 -0
- package/dist/es2019/ui/FloatingDragMenu/index.js +2 -2
- package/dist/es2019/ui/TableFloatingColumnControls/ColumnControls/index.js +24 -35
- package/dist/es2019/ui/TableFloatingColumnControls/index.js +1 -2
- package/dist/es2019/ui/TableFloatingControls/CornerControls/DragCornerControls.js +4 -0
- package/dist/es2019/ui/TableFloatingControls/RowControls/DragControls.js +26 -33
- package/dist/es2019/ui/common-styles.js +11 -1
- package/dist/es2019/ui/consts.js +2 -1
- package/dist/esm/commands/misc.js +4 -2
- package/dist/esm/commands/selection.js +4 -2
- package/dist/esm/pm-plugins/drag-and-drop/commands.js +3 -2
- package/dist/esm/pm-plugins/drag-and-drop/plugin.js +33 -1
- package/dist/esm/pm-plugins/drag-and-drop/reducer.js +2 -1
- package/dist/esm/pm-plugins/table-selection-keymap.js +2 -2
- package/dist/esm/ui/DragHandle/HandleIconComponent.js +1 -3
- package/dist/esm/ui/DragHandle/index.js +23 -9
- package/dist/esm/ui/FloatingDragMenu/DragMenu.js +74 -35
- package/dist/esm/ui/FloatingDragMenu/DropdownMenu.js +116 -0
- package/dist/esm/ui/FloatingDragMenu/index.js +2 -2
- package/dist/esm/ui/TableFloatingColumnControls/ColumnControls/index.js +24 -35
- package/dist/esm/ui/TableFloatingColumnControls/index.js +1 -2
- package/dist/esm/ui/TableFloatingControls/CornerControls/DragCornerControls.js +4 -0
- package/dist/esm/ui/TableFloatingControls/RowControls/DragControls.js +26 -33
- package/dist/esm/ui/common-styles.js +1 -1
- package/dist/esm/ui/consts.js +2 -1
- package/dist/types/commands/misc.d.ts +2 -2
- package/dist/types/commands/selection.d.ts +2 -2
- package/dist/types/pm-plugins/drag-and-drop/actions.d.ts +1 -0
- package/dist/types/pm-plugins/drag-and-drop/commands.d.ts +2 -1
- package/dist/types/pm-plugins/drag-and-drop/types.d.ts +2 -0
- package/dist/types/ui/DragHandle/HandleIconComponent.d.ts +1 -2
- package/dist/types/ui/DragHandle/index.d.ts +3 -2
- package/dist/types/ui/FloatingDragMenu/DragMenu.d.ts +7 -8
- package/dist/types/ui/FloatingDragMenu/DropdownMenu.d.ts +30 -0
- package/dist/types/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +1 -2
- package/dist/types/ui/TableFloatingControls/RowControls/DragControls.d.ts +1 -1
- package/dist/types/ui/consts.d.ts +1 -0
- package/dist/types-ts4.5/commands/misc.d.ts +2 -2
- package/dist/types-ts4.5/commands/selection.d.ts +2 -2
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/actions.d.ts +1 -0
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/commands.d.ts +2 -1
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/types.d.ts +2 -0
- package/dist/types-ts4.5/ui/DragHandle/HandleIconComponent.d.ts +1 -2
- package/dist/types-ts4.5/ui/DragHandle/index.d.ts +3 -2
- package/dist/types-ts4.5/ui/FloatingDragMenu/DragMenu.d.ts +7 -8
- package/dist/types-ts4.5/ui/FloatingDragMenu/DropdownMenu.d.ts +30 -0
- package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +1 -2
- package/dist/types-ts4.5/ui/TableFloatingControls/RowControls/DragControls.d.ts +1 -1
- package/dist/types-ts4.5/ui/consts.d.ts +1 -0
- package/package.json +3 -2
- package/src/commands/misc.ts +17 -4
- package/src/commands/selection.ts +12 -4
- package/src/pm-plugins/drag-and-drop/actions.ts +1 -0
- package/src/pm-plugins/drag-and-drop/commands.ts +3 -0
- package/src/pm-plugins/drag-and-drop/plugin.ts +47 -0
- package/src/pm-plugins/drag-and-drop/reducer.ts +1 -0
- package/src/pm-plugins/drag-and-drop/types.ts +3 -0
- package/src/pm-plugins/table-selection-keymap.ts +2 -2
- package/src/ui/DragHandle/HandleIconComponent.tsx +2 -9
- package/src/ui/DragHandle/index.tsx +39 -16
- package/src/ui/FloatingDragMenu/DragMenu.tsx +362 -310
- package/src/ui/FloatingDragMenu/DropdownMenu.tsx +150 -0
- package/src/ui/FloatingDragMenu/index.tsx +3 -3
- package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +72 -91
- package/src/ui/TableFloatingColumnControls/index.tsx +1 -2
- package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +5 -0
- package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +89 -104
- package/src/ui/common-styles.ts +11 -1
- package/src/ui/consts.ts +1 -0
- package/tsconfig.app.json +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-table
|
|
2
2
|
|
|
3
|
+
## 7.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#72081](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/72081) [`4487160917d2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4487160917d2) - [ux] ED-22052: adds button type attribute to non atlaskit button instances
|
|
8
|
+
|
|
9
|
+
## 7.3.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#69911](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/69911) [`50161fb5966e`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/50161fb5966e) - [ux] Added keyboard shortcut to drag handle and keyboard navigation for drag menu
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
3
16
|
## 7.3.0
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/afm-cc/tsconfig.json
CHANGED
|
@@ -328,6 +328,7 @@ var setMultipleCellAttrs = exports.setMultipleCellAttrs = function setMultipleCe
|
|
|
328
328
|
};
|
|
329
329
|
};
|
|
330
330
|
var selectColumn = exports.selectColumn = function selectColumn(column, expand) {
|
|
331
|
+
var triggeredByKeyboard = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
331
332
|
return (0, _pluginFactory.createCommand)(function (state) {
|
|
332
333
|
var cells = (0, _utils2.getCellsInColumn)(column)(state.tr.selection);
|
|
333
334
|
if (!cells || !cells.length || typeof cells[0].pos !== 'number') {
|
|
@@ -344,7 +345,7 @@ var selectColumn = exports.selectColumn = function selectColumn(column, expand)
|
|
|
344
345
|
}
|
|
345
346
|
};
|
|
346
347
|
}, function (tr) {
|
|
347
|
-
return (0, _utils2.selectColumn)(column, expand)(tr).setMeta('addToHistory', false);
|
|
348
|
+
return (0, _utils2.selectColumn)(column, expand)(tr).setMeta('addToHistory', false).setMeta('selectedColumnViaKeyboard', triggeredByKeyboard);
|
|
348
349
|
});
|
|
349
350
|
};
|
|
350
351
|
var selectColumns = exports.selectColumns = function selectColumns(columnIndexes) {
|
|
@@ -379,6 +380,7 @@ var selectColumns = exports.selectColumns = function selectColumns(columnIndexes
|
|
|
379
380
|
});
|
|
380
381
|
};
|
|
381
382
|
var selectRow = exports.selectRow = function selectRow(row, expand) {
|
|
383
|
+
var triggeredByKeyboard = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
382
384
|
return (0, _pluginFactory.createCommand)(function (state) {
|
|
383
385
|
var targetCellPosition;
|
|
384
386
|
var cells = (0, _utils2.getCellsInRow)(row)(state.tr.selection);
|
|
@@ -392,7 +394,7 @@ var selectRow = exports.selectRow = function selectRow(row, expand) {
|
|
|
392
394
|
}
|
|
393
395
|
};
|
|
394
396
|
}, function (tr) {
|
|
395
|
-
return (0, _utils2.selectRow)(row, expand)(tr).setMeta('addToHistory', false);
|
|
397
|
+
return (0, _utils2.selectRow)(row, expand)(tr).setMeta('addToHistory', false).setMeta('selectedRowViaKeyboard', triggeredByKeyboard);
|
|
396
398
|
});
|
|
397
399
|
};
|
|
398
400
|
var selectRows = exports.selectRows = function selectRows(rowIndexes) {
|
|
@@ -88,6 +88,7 @@ var arrowRightFromCellSelection = function arrowRightFromCellSelection(editorSel
|
|
|
88
88
|
};
|
|
89
89
|
var selectColumns = exports.selectColumns = function selectColumns(editorSelectionAPI) {
|
|
90
90
|
return function () {
|
|
91
|
+
var triggeredByKeyboard = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
91
92
|
return function (state, dispatch) {
|
|
92
93
|
var selection = state.selection;
|
|
93
94
|
var table = (0, _utils.findTable)(selection);
|
|
@@ -100,7 +101,7 @@ var selectColumns = exports.selectColumns = function selectColumns(editorSelecti
|
|
|
100
101
|
})(state, dispatch);
|
|
101
102
|
}
|
|
102
103
|
if (table && rect) {
|
|
103
|
-
return (0, _misc.selectColumn)(rect.left)(state, dispatch);
|
|
104
|
+
return (0, _misc.selectColumn)(rect.left, undefined, triggeredByKeyboard)(state, dispatch);
|
|
104
105
|
}
|
|
105
106
|
return false;
|
|
106
107
|
};
|
|
@@ -108,6 +109,7 @@ var selectColumns = exports.selectColumns = function selectColumns(editorSelecti
|
|
|
108
109
|
};
|
|
109
110
|
var selectRows = exports.selectRows = function selectRows(editorSelectionAPI) {
|
|
110
111
|
return function () {
|
|
112
|
+
var triggeredByKeyboard = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
111
113
|
return function (state, dispatch) {
|
|
112
114
|
var selection = state.selection;
|
|
113
115
|
var table = (0, _utils.findTable)(selection);
|
|
@@ -120,7 +122,7 @@ var selectRows = exports.selectRows = function selectRows(editorSelectionAPI) {
|
|
|
120
122
|
})(state, dispatch);
|
|
121
123
|
}
|
|
122
124
|
if (table && rect) {
|
|
123
|
-
return (0, _misc.selectRow)(rect.top)(state, dispatch);
|
|
125
|
+
return (0, _misc.selectRow)(rect.top, undefined, triggeredByKeyboard)(state, dispatch);
|
|
124
126
|
}
|
|
125
127
|
return false;
|
|
126
128
|
};
|
|
@@ -84,6 +84,7 @@ var moveSource = exports.moveSource = function moveSource(sourceType, sourceInde
|
|
|
84
84
|
});
|
|
85
85
|
};
|
|
86
86
|
var toggleDragMenu = exports.toggleDragMenu = function toggleDragMenu(isDragMenuOpen, direction, index) {
|
|
87
|
+
var trigger = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'mouse';
|
|
87
88
|
return (0, _pluginFactory.createCommand)(function (state) {
|
|
88
89
|
var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
|
|
89
90
|
previousOpenState = _getPluginState3.isDragMenuOpen,
|
|
@@ -110,7 +111,8 @@ var toggleDragMenu = exports.toggleDragMenu = function toggleDragMenu(isDragMenu
|
|
|
110
111
|
data: {
|
|
111
112
|
isDragMenuOpen: updatedMenuOpenState,
|
|
112
113
|
direction: direction !== null && direction !== void 0 ? direction : previousDragMenuDirection,
|
|
113
|
-
index: index !== null && index !== void 0 ? index : previousDragMenuIndex
|
|
114
|
+
index: index !== null && index !== void 0 ? index : previousDragMenuIndex,
|
|
115
|
+
isKeyboardModeActive: updatedMenuOpenState && trigger === 'keyboard'
|
|
114
116
|
}
|
|
115
117
|
};
|
|
116
118
|
}, function (tr) {
|
|
@@ -170,7 +170,8 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, eventD
|
|
|
170
170
|
dropTargetIndex: 0,
|
|
171
171
|
isDragMenuOpen: false,
|
|
172
172
|
dragMenuIndex: 0,
|
|
173
|
-
isDragging: false
|
|
173
|
+
isDragging: false,
|
|
174
|
+
isKeyboardModeActive: false
|
|
174
175
|
};
|
|
175
176
|
}),
|
|
176
177
|
key: _pluginKey2.pluginKey,
|
|
@@ -182,6 +183,20 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, eventD
|
|
|
182
183
|
var _getPluginState = (0, _pluginFactory2.getPluginState)(newState),
|
|
183
184
|
isDragMenuOpen = _getPluginState.isDragMenuOpen,
|
|
184
185
|
dragMenuIndex = _getPluginState.dragMenuIndex;
|
|
186
|
+
transactions.forEach(function (transaction) {
|
|
187
|
+
if (transaction.getMeta('selectedRowViaKeyboard')) {
|
|
188
|
+
var button = document.querySelector('#drag-handle-button-row');
|
|
189
|
+
if (button) {
|
|
190
|
+
button.focus();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (transaction.getMeta('selectedColumnViaKeyboard')) {
|
|
194
|
+
var _button = document.querySelector('#drag-handle-button-column');
|
|
195
|
+
if (_button) {
|
|
196
|
+
_button.focus();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
});
|
|
185
200
|
|
|
186
201
|
// What's happening here? you asked... In a nutshell;
|
|
187
202
|
// If the target cell position changes while the drag menu is open then we want to close the drag menu if it has been opened.
|
|
@@ -222,6 +237,23 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, eventD
|
|
|
222
237
|
var _getPluginState2 = (0, _pluginFactory2.getPluginState)(state),
|
|
223
238
|
decorationSet = _getPluginState2.decorationSet;
|
|
224
239
|
return decorationSet;
|
|
240
|
+
},
|
|
241
|
+
handleKeyDown: function handleKeyDown(view, event) {
|
|
242
|
+
var _ref8;
|
|
243
|
+
var isDragHandleFocused = ['drag-handle-button-row', 'drag-handle-button-column'].includes((_ref8 = event.target || null) === null || _ref8 === void 0 ? void 0 : _ref8.id);
|
|
244
|
+
var keysToTrap = ['Enter', ' '];
|
|
245
|
+
var keysToTrapWhen = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];
|
|
246
|
+
var _getPluginState3 = (0, _pluginFactory2.getPluginState)(view.state),
|
|
247
|
+
isDragMenuOpen = _getPluginState3.isDragMenuOpen;
|
|
248
|
+
|
|
249
|
+
// drag handle is focused, and user presses any key return them back to editing
|
|
250
|
+
if (isDragHandleFocused && !isDragMenuOpen && !keysToTrap.includes(event.key)) {
|
|
251
|
+
view.dom.focus();
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
if (isDragHandleFocused && keysToTrap.includes(event.key) || isDragMenuOpen && keysToTrapWhen.includes(event.key)) {
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
225
257
|
}
|
|
226
258
|
}
|
|
227
259
|
});
|
|
@@ -30,7 +30,8 @@ var _default = exports.default = function _default(pluginState, action) {
|
|
|
30
30
|
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
31
31
|
isDragMenuOpen: action.data.isDragMenuOpen,
|
|
32
32
|
dragMenuDirection: action.data.direction,
|
|
33
|
-
dragMenuIndex: action.data.index
|
|
33
|
+
dragMenuIndex: action.data.index,
|
|
34
|
+
isKeyboardModeActive: action.data.isKeyboardModeActive
|
|
34
35
|
});
|
|
35
36
|
default:
|
|
36
37
|
return pluginState;
|
|
@@ -14,8 +14,8 @@ function tableSelectionKeymapPlugin(editorSelectionAPI) {
|
|
|
14
14
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveRight.common, (0, _selection.arrowRightFromTable)(editorSelectionAPI)(), list);
|
|
15
15
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveLeft.common, (0, _selection.arrowLeftFromTable)(editorSelectionAPI)(), list);
|
|
16
16
|
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y.table-selection_9uv33')) {
|
|
17
|
-
(0, _keymaps.bindKeymapArrayWithCommand)(_keymaps.selectColumn, (0, _selection.selectColumns)(editorSelectionAPI)(), list);
|
|
18
|
-
(0, _keymaps.bindKeymapArrayWithCommand)(_keymaps.selectRow, (0, _selection.selectRows)(editorSelectionAPI)(), list);
|
|
17
|
+
(0, _keymaps.bindKeymapArrayWithCommand)(_keymaps.selectColumn, (0, _selection.selectColumns)(editorSelectionAPI)(true), list);
|
|
18
|
+
(0, _keymaps.bindKeymapArrayWithCommand)(_keymaps.selectRow, (0, _selection.selectRows)(editorSelectionAPI)(true), list);
|
|
19
19
|
}
|
|
20
20
|
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.shift-arrowup-fix')) {
|
|
21
21
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.shiftArrowUp.common, (0, _selection.shiftArrowUpFromTable)(editorSelectionAPI)(), list);
|
|
@@ -9,10 +9,8 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
var _icons = require("../icons");
|
|
10
10
|
var HandleIconComponent = exports.HandleIconComponent = function HandleIconComponent(props) {
|
|
11
11
|
var forceDefaultHandle = props.forceDefaultHandle,
|
|
12
|
-
|
|
13
|
-
isColumnHandleHovered = props.isColumnHandleHovered,
|
|
12
|
+
isHandleHovered = props.isHandleHovered,
|
|
14
13
|
hasMergedCells = props.hasMergedCells;
|
|
15
|
-
var isHandleHovered = isRowHandleHovered || isColumnHandleHovered;
|
|
16
14
|
if (isHandleHovered || forceDefaultHandle) {
|
|
17
15
|
return hasMergedCells ? /*#__PURE__*/_react.default.createElement(_icons.DragHandleDisabledIcon, null) : /*#__PURE__*/_react.default.createElement(_icons.DragHandleIcon, null);
|
|
18
16
|
}
|
|
@@ -16,7 +16,8 @@ var _messages = require("@atlaskit/editor-common/messages");
|
|
|
16
16
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
17
17
|
var _element = require("@atlaskit/pragmatic-drag-and-drop/adapter/element");
|
|
18
18
|
var _setCustomNativeDragPreview = require("@atlaskit/pragmatic-drag-and-drop/util/set-custom-native-drag-preview");
|
|
19
|
-
var _pluginFactory = require("../../pm-plugins/plugin-factory");
|
|
19
|
+
var _pluginFactory = require("../../pm-plugins/drag-and-drop/plugin-factory");
|
|
20
|
+
var _pluginFactory2 = require("../../pm-plugins/plugin-factory");
|
|
20
21
|
var _types = require("../../types");
|
|
21
22
|
var _utils2 = require("../../utils");
|
|
22
23
|
var _consts = require("../consts");
|
|
@@ -38,7 +39,7 @@ var DragHandleComponent = function DragHandleComponent(_ref) {
|
|
|
38
39
|
previewHeight = _ref.previewHeight,
|
|
39
40
|
onMouseOver = _ref.onMouseOver,
|
|
40
41
|
onMouseOut = _ref.onMouseOut,
|
|
41
|
-
|
|
42
|
+
toggleDragMenu = _ref.toggleDragMenu,
|
|
42
43
|
onClick = _ref.onClick,
|
|
43
44
|
editorView = _ref.editorView,
|
|
44
45
|
formatMessage = _ref.intl.formatMessage;
|
|
@@ -47,10 +48,13 @@ var DragHandleComponent = function DragHandleComponent(_ref) {
|
|
|
47
48
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
48
49
|
previewContainer = _useState2[0],
|
|
49
50
|
setPreviewContainer = _useState2[1];
|
|
50
|
-
var
|
|
51
|
+
var state = editorView.state,
|
|
52
|
+
selection = editorView.state.selection;
|
|
53
|
+
var _getPluginState = (0, _pluginFactory2.getPluginState)(state),
|
|
51
54
|
hoveredColumns = _getPluginState.hoveredColumns,
|
|
52
55
|
hoveredRows = _getPluginState.hoveredRows;
|
|
53
|
-
var
|
|
56
|
+
var _getDnDPluginState = (0, _pluginFactory.getPluginState)(state),
|
|
57
|
+
isDragMenuOpen = _getDnDPluginState.isDragMenuOpen;
|
|
54
58
|
var isRow = direction === 'row';
|
|
55
59
|
var isColumn = direction === 'column';
|
|
56
60
|
var isRowHandleHovered = isRow && hoveredRows.length > 0;
|
|
@@ -60,8 +64,7 @@ var DragHandleComponent = function DragHandleComponent(_ref) {
|
|
|
60
64
|
}, [indexes, isRow, selection]);
|
|
61
65
|
var handleIconProps = {
|
|
62
66
|
forceDefaultHandle: forceDefaultHandle,
|
|
63
|
-
|
|
64
|
-
isRowHandleHovered: isRowHandleHovered,
|
|
67
|
+
isHandleHovered: isColumnHandleHovered || isRowHandleHovered,
|
|
65
68
|
hasMergedCells: hasMergedCells
|
|
66
69
|
};
|
|
67
70
|
(0, _react.useEffect)(function () {
|
|
@@ -121,6 +124,7 @@ var DragHandleComponent = function DragHandleComponent(_ref) {
|
|
|
121
124
|
}, [tableLocalId, direction, indexes, isRow, editorView.state.selection, hasMergedCells]);
|
|
122
125
|
var showDragMenuAnchorId = isRow ? 'drag-handle-button-row' : 'drag-handle-button-column';
|
|
123
126
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("button", {
|
|
127
|
+
type: "button",
|
|
124
128
|
className: _types.TableCssClassName.DRAG_HANDLE_BUTTON_CLICKABLE_ZONE,
|
|
125
129
|
"data-testid": "table-drag-handle-clickable-zone-button",
|
|
126
130
|
style: {
|
|
@@ -135,6 +139,7 @@ var DragHandleComponent = function DragHandleComponent(_ref) {
|
|
|
135
139
|
},
|
|
136
140
|
onClick: onClick
|
|
137
141
|
}), /*#__PURE__*/_react.default.createElement("button", {
|
|
142
|
+
type: "button",
|
|
138
143
|
id: isDragMenuTarget ? showDragMenuAnchorId : undefined,
|
|
139
144
|
className: (0, _classnames2.default)(_types.TableCssClassName.DRAG_HANDLE_BUTTON_CONTAINER, appearance, (0, _defineProperty2.default)({}, _types.TableCssClassName.DRAG_HANDLE_DISABLED, hasMergedCells)),
|
|
140
145
|
ref: dragHandleDivRef,
|
|
@@ -144,20 +149,29 @@ var DragHandleComponent = function DragHandleComponent(_ref) {
|
|
|
144
149
|
},
|
|
145
150
|
"data-testid": "table-drag-handle-button",
|
|
146
151
|
"aria-label": formatMessage(isRow ? _messages.tableMessages.rowDragHandle : _messages.tableMessages.columnDragHandle),
|
|
152
|
+
"aria-expanded": isDragMenuOpen && isDragMenuTarget ? 'true' : 'false',
|
|
153
|
+
"aria-haspopup": "menu",
|
|
147
154
|
onMouseOver: onMouseOver,
|
|
148
155
|
onMouseOut: onMouseOut,
|
|
149
156
|
onMouseUp: function onMouseUp(e) {
|
|
150
157
|
// return focus to editor so copying table selections whilst still works, i cannot call e.preventDefault in a mousemove event as this stops dragstart events from firing
|
|
151
158
|
// -> this is bad for a11y but is the current standard new copy/paste keyboard shortcuts should be introduced instead
|
|
152
159
|
editorView.focus();
|
|
153
|
-
|
|
160
|
+
toggleDragMenu && toggleDragMenu('mouse', e);
|
|
154
161
|
},
|
|
155
|
-
onClick: onClick
|
|
156
|
-
|
|
162
|
+
onClick: onClick,
|
|
163
|
+
onKeyDown: function onKeyDown(e) {
|
|
164
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
165
|
+
toggleDragMenu && toggleDragMenu('keyboard');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}, appearance !== 'placeholder' ?
|
|
169
|
+
// cannot block pointer events in Firefox as it breaks Dragging functionality
|
|
170
|
+
_utils.browser.gecko ? /*#__PURE__*/_react.default.createElement(_HandleIconComponent.HandleIconComponent, handleIconProps) : /*#__PURE__*/_react.default.createElement("span", {
|
|
157
171
|
style: {
|
|
158
172
|
pointerEvents: 'none'
|
|
159
173
|
}
|
|
160
|
-
}, /*#__PURE__*/_react.default.createElement(_HandleIconComponent.HandleIconComponent, handleIconProps))), previewContainer && previewWidth !== undefined && previewHeight !== undefined && /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_DragPreview.DragPreview, {
|
|
174
|
+
}, /*#__PURE__*/_react.default.createElement(_HandleIconComponent.HandleIconComponent, handleIconProps)) : null), previewContainer && previewWidth !== undefined && previewHeight !== undefined && /*#__PURE__*/_reactDom.default.createPortal( /*#__PURE__*/_react.default.createElement(_DragPreview.DragPreview, {
|
|
161
175
|
direction: direction,
|
|
162
176
|
width: previewWidth,
|
|
163
177
|
height: previewHeight
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.default = exports.DragMenu = void 0;
|
|
8
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
-
var _react = require("react");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _react2 = require("@emotion/react");
|
|
12
13
|
var _reactIntlNext = require("react-intl-next");
|
|
13
14
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
14
15
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
15
16
|
var _styles = require("@atlaskit/editor-common/styles");
|
|
17
|
+
var _ui = require("@atlaskit/editor-common/ui");
|
|
16
18
|
var _uiColor = require("@atlaskit/editor-common/ui-color");
|
|
17
19
|
var _uiMenu = require("@atlaskit/editor-common/ui-menu");
|
|
18
20
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
@@ -32,9 +34,13 @@ var _types = require("../../types");
|
|
|
32
34
|
var _utils3 = require("../../utils");
|
|
33
35
|
var _dragMenu = require("../../utils/drag-menu");
|
|
34
36
|
var _consts = require("../consts");
|
|
37
|
+
var _DropdownMenu = require("./DropdownMenu");
|
|
35
38
|
var _styles2 = require("./styles");
|
|
39
|
+
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); }
|
|
40
|
+
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; }
|
|
36
41
|
/* eslint-disable @atlaskit/design-system/prefer-primitives */
|
|
37
42
|
/** @jsx jsx */
|
|
43
|
+
/** @jsxFrag */
|
|
38
44
|
|
|
39
45
|
var MapDragMenuOptionIdToMessage = {
|
|
40
46
|
add_row_above: {
|
|
@@ -165,17 +171,16 @@ var convertToDropdownItems = function convertToDropdownItems(dragMenuConfig, for
|
|
|
165
171
|
menuCallback: menuCallback
|
|
166
172
|
};
|
|
167
173
|
};
|
|
168
|
-
var
|
|
174
|
+
var ColorPaletteWithListeners = (0, _ui.withOuterListeners)(_uiColor.ColorPalette);
|
|
175
|
+
var DragMenu = exports.DragMenu = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
169
176
|
var _pluginConfig$allowBa;
|
|
170
177
|
var _ref$direction = _ref.direction,
|
|
171
178
|
direction = _ref$direction === void 0 ? 'row' : _ref$direction,
|
|
172
179
|
index = _ref.index,
|
|
180
|
+
target = _ref.target,
|
|
173
181
|
isOpen = _ref.isOpen,
|
|
174
182
|
editorView = _ref.editorView,
|
|
175
183
|
tableNode = _ref.tableNode,
|
|
176
|
-
mountPoint = _ref.mountPoint,
|
|
177
|
-
boundariesElement = _ref.boundariesElement,
|
|
178
|
-
scrollableElement = _ref.scrollableElement,
|
|
179
184
|
targetCellPosition = _ref.targetCellPosition,
|
|
180
185
|
getEditorContainerWidth = _ref.getEditorContainerWidth,
|
|
181
186
|
editorAnalyticsAPI = _ref.editorAnalyticsAPI,
|
|
@@ -189,6 +194,8 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
189
194
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
190
195
|
isSubmenuOpen = _useState2[0],
|
|
191
196
|
setIsSubmenuOpen = _useState2[1];
|
|
197
|
+
var _getPluginState = (0, _pluginFactory.getPluginState)(state),
|
|
198
|
+
isKeyboardModeActive = _getPluginState.isKeyboardModeActive;
|
|
192
199
|
var selectionRect = (0, _utils2.isSelectionType)(selection, 'cell') ? (0, _utils2.getSelectionRect)(selection) : (0, _utils2.findCellRectClosestToPos)(selection.$from);
|
|
193
200
|
var hasMergedCells = direction === 'row' ? _utils3.hasMergedCellsInRow : _utils3.hasMergedCellsInColumn;
|
|
194
201
|
var shouldMoveDisabled = index !== undefined && hasMergedCells(index)(selection);
|
|
@@ -224,7 +231,11 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
224
231
|
targetCellPosition = _getTablePluginState2.targetCellPosition;
|
|
225
232
|
var node = targetCellPosition ? state.doc.nodeAt(targetCellPosition) : null;
|
|
226
233
|
var background = (0, _editorPalette.hexToEditorBackgroundPaletteColor)((node === null || node === void 0 || (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.background) || '#ffffff');
|
|
234
|
+
var _getSelectedRowAndCol = (0, _uiColor.getSelectedRowAndColumnFromPalette)(_uiColor.cellBackgroundColorPalette, background, _consts.colorPalletteColumns),
|
|
235
|
+
selectedRowIndex = _getSelectedRowAndCol.selectedRowIndex,
|
|
236
|
+
selectedColumnIndex = _getSelectedRowAndCol.selectedColumnIndex;
|
|
227
237
|
return {
|
|
238
|
+
key: 'background',
|
|
228
239
|
content: formatMessage(_messages.tableMessages.backgroundColor),
|
|
229
240
|
value: {
|
|
230
241
|
name: 'background'
|
|
@@ -244,16 +255,33 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
244
255
|
}), isSubmenuOpen && (0, _react2.jsx)("div", {
|
|
245
256
|
className: _types.TableCssClassName.DRAG_SUBMENU,
|
|
246
257
|
ref: handleSubMenuRef
|
|
247
|
-
}, (0, _react2.jsx)(
|
|
248
|
-
|
|
249
|
-
|
|
258
|
+
}, (0, _react2.jsx)(_uiMenu.ArrowKeyNavigationProvider, {
|
|
259
|
+
type: _uiMenu.ArrowKeyNavigationType.COLOR,
|
|
260
|
+
selectedRowIndex: selectedRowIndex,
|
|
261
|
+
selectedColumnIndex: selectedColumnIndex,
|
|
262
|
+
handleClose: function handleClose() {
|
|
263
|
+
var keyboardEvent = new KeyboardEvent('keydown', {
|
|
264
|
+
key: 'ArrowDown',
|
|
265
|
+
bubbles: true
|
|
266
|
+
});
|
|
267
|
+
setIsSubmenuOpen(false);
|
|
268
|
+
target === null || target === void 0 || target.focus();
|
|
269
|
+
target === null || target === void 0 || target.dispatchEvent(keyboardEvent);
|
|
270
|
+
},
|
|
271
|
+
isPopupPositioned: true,
|
|
272
|
+
isOpenedByKeyboard: isKeyboardModeActive
|
|
273
|
+
}, (0, _react2.jsx)(ColorPaletteWithListeners, {
|
|
274
|
+
cols: _consts.colorPalletteColumns,
|
|
275
|
+
onClick: function onClick(color) {
|
|
276
|
+
setColor(color);
|
|
277
|
+
},
|
|
250
278
|
selectedColor: background,
|
|
251
279
|
paletteOptions: {
|
|
252
280
|
palette: _uiColor.cellBackgroundColorPalette,
|
|
253
281
|
paletteColorTooltipMessages: _uiColor.backgroundPaletteTooltipMessages,
|
|
254
282
|
hexToPaletteColor: _editorPalette.hexToEditorBackgroundPaletteColor
|
|
255
283
|
}
|
|
256
|
-
})))
|
|
284
|
+
}))))
|
|
257
285
|
};
|
|
258
286
|
};
|
|
259
287
|
var toggleHeaderColumn = function toggleHeaderColumn() {
|
|
@@ -265,8 +293,9 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
265
293
|
var toggleRowNumbers = function toggleRowNumbers() {
|
|
266
294
|
(0, _commandsWithAnalytics.toggleNumberColumnWithAnalytics)(editorAnalyticsAPI)(state, dispatch);
|
|
267
295
|
};
|
|
268
|
-
var
|
|
296
|
+
var createHeaderRowColumnMenuItem = function createHeaderRowColumnMenuItem(direction) {
|
|
269
297
|
return direction === 'column' ? {
|
|
298
|
+
key: 'header_column',
|
|
270
299
|
content: formatMessage(_messages.tableMessages.headerColumn),
|
|
271
300
|
value: {
|
|
272
301
|
name: 'header_column'
|
|
@@ -279,6 +308,7 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
279
308
|
isChecked: (0, _utils3.checkIfHeaderColumnEnabled)(selection)
|
|
280
309
|
}))
|
|
281
310
|
} : {
|
|
311
|
+
key: 'header_row',
|
|
282
312
|
content: formatMessage(_messages.tableMessages.headerRow),
|
|
283
313
|
value: {
|
|
284
314
|
name: 'header_row'
|
|
@@ -294,6 +324,7 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
294
324
|
};
|
|
295
325
|
var createRowNumbersMenuItem = function createRowNumbersMenuItem() {
|
|
296
326
|
return {
|
|
327
|
+
key: 'row_numbers',
|
|
297
328
|
content: formatMessage(_messages.tableMessages.rowNumbers),
|
|
298
329
|
value: {
|
|
299
330
|
name: 'row_numbers'
|
|
@@ -315,10 +346,10 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
315
346
|
* @returns true when the menu should be closed, false otherwise
|
|
316
347
|
*/
|
|
317
348
|
var shouldCloseMenu = function shouldCloseMenu(state) {
|
|
318
|
-
var
|
|
319
|
-
previousOpenState =
|
|
320
|
-
previousDragMenuDirection =
|
|
321
|
-
previousDragMenuIndex =
|
|
349
|
+
var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
|
|
350
|
+
previousOpenState = _getPluginState2.isDragMenuOpen,
|
|
351
|
+
previousDragMenuDirection = _getPluginState2.dragMenuDirection,
|
|
352
|
+
previousDragMenuIndex = _getPluginState2.dragMenuIndex;
|
|
322
353
|
|
|
323
354
|
// menu open but menu direction changed, means user clicked on drag handle of different row/column
|
|
324
355
|
// menu open menu direction not changed, but index changed, means user clicked on drag handle of same row/column, different cells.
|
|
@@ -330,9 +361,15 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
330
361
|
}
|
|
331
362
|
};
|
|
332
363
|
var closeMenu = function closeMenu() {
|
|
364
|
+
var focusTarget = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'handle';
|
|
333
365
|
var state = editorView.state,
|
|
334
366
|
dispatch = editorView.dispatch;
|
|
335
367
|
if (shouldCloseMenu(state)) {
|
|
368
|
+
if (target && focusTarget === 'handle') {
|
|
369
|
+
target === null || target === void 0 || target.focus();
|
|
370
|
+
} else {
|
|
371
|
+
editorView.dom.focus();
|
|
372
|
+
}
|
|
336
373
|
(0, _commands2.toggleDragMenu)(false, direction, index)(state, dispatch);
|
|
337
374
|
}
|
|
338
375
|
};
|
|
@@ -341,6 +378,9 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
341
378
|
var item = _ref2.item;
|
|
342
379
|
(_menuCallback$item$va = menuCallback[item.value.name]) === null || _menuCallback$item$va === void 0 || _menuCallback$item$va.call(menuCallback, state, dispatch);
|
|
343
380
|
switch (item.value.name) {
|
|
381
|
+
case 'background':
|
|
382
|
+
setIsSubmenuOpen(!isSubmenuOpen);
|
|
383
|
+
break;
|
|
344
384
|
case 'header_column':
|
|
345
385
|
toggleHeaderColumn();
|
|
346
386
|
break;
|
|
@@ -354,7 +394,7 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
354
394
|
break;
|
|
355
395
|
}
|
|
356
396
|
if (['header_column', 'header_row', 'row_numbers', 'background'].indexOf(item.value.name) <= -1) {
|
|
357
|
-
closeMenu();
|
|
397
|
+
closeMenu('editor');
|
|
358
398
|
}
|
|
359
399
|
};
|
|
360
400
|
var handleItemMouseEnter = function handleItemMouseEnter(_ref3) {
|
|
@@ -380,6 +420,17 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
380
420
|
(0, _commands.clearHoverSelection)()(state, dispatch);
|
|
381
421
|
}
|
|
382
422
|
};
|
|
423
|
+
(0, _react.useEffect)(function () {
|
|
424
|
+
// focus on first menu item automatically when menu renders
|
|
425
|
+
// and user is using keyboard
|
|
426
|
+
if (isOpen && target && isKeyboardModeActive) {
|
|
427
|
+
var keyboardEvent = new KeyboardEvent('keydown', {
|
|
428
|
+
key: 'ArrowDown',
|
|
429
|
+
bubbles: true
|
|
430
|
+
});
|
|
431
|
+
target.dispatchEvent(keyboardEvent);
|
|
432
|
+
}
|
|
433
|
+
}, [isOpen, target, isKeyboardModeActive]);
|
|
383
434
|
if (!menuItems) {
|
|
384
435
|
return null;
|
|
385
436
|
}
|
|
@@ -387,11 +438,11 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
387
438
|
menuItems[0].items.unshift(createBackgroundColorMenuItem());
|
|
388
439
|
}
|
|
389
440
|
|
|
390
|
-
// If first row, add toggle for
|
|
441
|
+
// If first row, add toggle for Header row, default is true
|
|
391
442
|
// If first column, add toggle for Header column, default is false
|
|
392
443
|
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.new-cell-context-menu-styling') && index === 0) {
|
|
393
444
|
menuItems.push({
|
|
394
|
-
items: [
|
|
445
|
+
items: [createHeaderRowColumnMenuItem(direction)]
|
|
395
446
|
});
|
|
396
447
|
}
|
|
397
448
|
|
|
@@ -401,26 +452,17 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
|
|
|
401
452
|
items: [createRowNumbersMenuItem()]
|
|
402
453
|
});
|
|
403
454
|
}
|
|
404
|
-
return (0, _react2.jsx)(
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
,
|
|
409
|
-
arrowKeyNavigationProviderOptions: {
|
|
410
|
-
type: _uiMenu.ArrowKeyNavigationType.MENU,
|
|
411
|
-
disableArrowKeyNavigation: true
|
|
455
|
+
return (0, _react2.jsx)(_DropdownMenu.DropdownMenu, {
|
|
456
|
+
disableKeyboardHandling: isSubmenuOpen,
|
|
457
|
+
section: {
|
|
458
|
+
hasSeparator: true
|
|
412
459
|
},
|
|
460
|
+
target: target,
|
|
413
461
|
items: menuItems,
|
|
414
|
-
isOpen: isOpen,
|
|
415
|
-
onOpenChange: closeMenu,
|
|
416
462
|
onItemActivated: handleMenuItemActivated,
|
|
417
463
|
onMouseEnter: handleItemMouseEnter,
|
|
418
464
|
onMouseLeave: handleItemMouseLeave,
|
|
419
|
-
|
|
420
|
-
boundariesElement: boundariesElement,
|
|
421
|
-
section: {
|
|
422
|
-
hasSeparator: true
|
|
423
|
-
}
|
|
465
|
+
handleClose: closeMenu
|
|
424
466
|
});
|
|
425
|
-
};
|
|
467
|
+
});
|
|
426
468
|
var _default = exports.default = (0, _reactIntlNext.injectIntl)(DragMenu);
|