@atlaskit/editor-plugin-table 7.18.2 → 7.18.3
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 +8 -0
- package/dist/cjs/commands/index.js +6 -0
- package/dist/cjs/commands/misc.js +15 -1
- package/dist/cjs/plugin.js +7 -4
- package/dist/cjs/pm-plugins/keymap.js +3 -0
- package/dist/cjs/reducer.js +1 -0
- package/dist/cjs/ui/FloatingContextualButton/index.js +18 -2
- package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +170 -35
- package/dist/cjs/ui/FloatingContextualMenu/index.js +4 -2
- package/dist/es2019/commands/index.js +1 -1
- package/dist/es2019/commands/misc.js +9 -1
- package/dist/es2019/plugin.js +7 -4
- package/dist/es2019/pm-plugins/keymap.js +5 -2
- package/dist/es2019/reducer.js +1 -0
- package/dist/es2019/ui/FloatingContextualButton/index.js +17 -2
- package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +159 -24
- package/dist/es2019/ui/FloatingContextualMenu/index.js +4 -2
- package/dist/esm/commands/index.js +1 -1
- package/dist/esm/commands/misc.js +14 -0
- package/dist/esm/plugin.js +7 -4
- package/dist/esm/pm-plugins/keymap.js +5 -2
- package/dist/esm/reducer.js +1 -0
- package/dist/esm/ui/FloatingContextualButton/index.js +15 -2
- package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +171 -40
- package/dist/esm/ui/FloatingContextualMenu/index.js +4 -2
- package/dist/types/commands/index.d.ts +1 -1
- package/dist/types/commands/misc.d.ts +1 -0
- package/dist/types/types.d.ts +6 -0
- package/dist/types/ui/FloatingContextualButton/index.d.ts +1 -0
- package/dist/types/ui/FloatingContextualMenu/ContextualMenu.d.ts +7 -3
- package/dist/types/ui/FloatingContextualMenu/index.d.ts +2 -1
- package/dist/types-ts4.5/commands/index.d.ts +1 -1
- package/dist/types-ts4.5/commands/misc.d.ts +1 -0
- package/dist/types-ts4.5/types.d.ts +6 -0
- package/dist/types-ts4.5/ui/FloatingContextualButton/index.d.ts +1 -0
- package/dist/types-ts4.5/ui/FloatingContextualMenu/ContextualMenu.d.ts +7 -3
- package/dist/types-ts4.5/ui/FloatingContextualMenu/index.d.ts +2 -1
- package/package.json +4 -1
- package/src/commands/index.ts +1 -0
- package/src/commands/misc.ts +13 -0
- package/src/plugin.tsx +6 -1
- package/src/pm-plugins/keymap.ts +6 -1
- package/src/reducer.ts +1 -0
- package/src/types.ts +27 -20
- package/src/ui/FloatingContextualButton/index.tsx +19 -1
- package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +209 -30
- package/src/ui/FloatingContextualMenu/index.tsx +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-table
|
|
2
2
|
|
|
3
|
+
## 7.18.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#115110](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/115110)
|
|
8
|
+
[`c6f8e2be84f70`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c6f8e2be84f70) -
|
|
9
|
+
ECA11Y-20/ECA11Y-59 Make table cell options menu accessible for keyboard only users
|
|
10
|
+
|
|
3
11
|
## 7.18.2
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -165,6 +165,12 @@ Object.defineProperty(exports, "setEditorFocus", {
|
|
|
165
165
|
return _misc.setEditorFocus;
|
|
166
166
|
}
|
|
167
167
|
});
|
|
168
|
+
Object.defineProperty(exports, "setFocusToCellMenu", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function get() {
|
|
171
|
+
return _misc.setFocusToCellMenu;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
168
174
|
Object.defineProperty(exports, "setMultipleCellAttrs", {
|
|
169
175
|
enumerable: true,
|
|
170
176
|
get: function get() {
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateWidthToWidest = exports.updateResizeHandleDecorations = exports.triggerUnlessTableHeader = exports.transformSliceToRemoveColumnsWidths = exports.transformSliceToAddTableHeaders = exports.transformSliceRemoveCellBackgroundColor = exports.showInsertRowButton = exports.showInsertColumnButton = exports.setTableRef = exports.setTableAlignmentWithTableContentWithPos = exports.setTableAlignment = exports.setMultipleCellAttrs = exports.setEditorFocus = exports.setCellAttr = exports.selectRows = exports.selectRow = exports.selectColumns = exports.selectColumn = exports.removeResizeHandleDecorations = exports.moveCursorBackward = exports.isInsideFirstCellOfRowOrColumn = exports.hideInsertColumnOrRowButton = exports.getTableSelectionType = exports.getTableElementMoveTypeBySlice = exports.deleteTableIfSelected = exports.deleteTable = exports.countCellsInSlice = exports.convertFirstRowToHeader = exports.autoSizeTable = exports.addResizeHandleDecorations = exports.addBoldInEmptyHeaderCells = void 0;
|
|
7
|
+
exports.updateWidthToWidest = exports.updateResizeHandleDecorations = exports.triggerUnlessTableHeader = exports.transformSliceToRemoveColumnsWidths = exports.transformSliceToAddTableHeaders = exports.transformSliceRemoveCellBackgroundColor = exports.showInsertRowButton = exports.showInsertColumnButton = exports.setTableRef = exports.setTableAlignmentWithTableContentWithPos = exports.setTableAlignment = exports.setMultipleCellAttrs = exports.setFocusToCellMenu = exports.setEditorFocus = exports.setCellAttr = exports.selectRows = exports.selectRow = exports.selectColumns = exports.selectColumn = exports.removeResizeHandleDecorations = exports.moveCursorBackward = exports.isInsideFirstCellOfRowOrColumn = exports.hideInsertColumnOrRowButton = exports.getTableSelectionType = exports.getTableElementMoveTypeBySlice = exports.deleteTableIfSelected = exports.deleteTable = exports.countCellsInSlice = exports.convertFirstRowToHeader = exports.autoSizeTable = exports.addResizeHandleDecorations = exports.addBoldInEmptyHeaderCells = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
@@ -626,4 +626,18 @@ var setTableAlignmentWithTableContentWithPos = exports.setTableAlignmentWithTabl
|
|
|
626
626
|
tr.setNodeMarkup(tableNodeWithPos.pos, undefined, nextTableAttrs).setMeta('scrollIntoView', false);
|
|
627
627
|
return tr;
|
|
628
628
|
};
|
|
629
|
+
};
|
|
630
|
+
var setFocusToCellMenu = exports.setFocusToCellMenu = function setFocusToCellMenu() {
|
|
631
|
+
var isCellMenuOpenByKeyboard = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
632
|
+
var originalTr = arguments.length > 1 ? arguments[1] : undefined;
|
|
633
|
+
return (0, _pluginFactory.createCommand)(function () {
|
|
634
|
+
return {
|
|
635
|
+
type: 'SET_CELL_MENU_OPEN',
|
|
636
|
+
data: {
|
|
637
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
}, function (tr) {
|
|
641
|
+
return (originalTr || tr).setMeta('addToHistory', false);
|
|
642
|
+
});
|
|
629
643
|
};
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -356,10 +356,11 @@ var tablesPlugin = function tablesPlugin(_ref) {
|
|
|
356
356
|
isHeaderColumnEnabled = _ref18.isHeaderColumnEnabled,
|
|
357
357
|
isHeaderRowEnabled = _ref18.isHeaderRowEnabled,
|
|
358
358
|
isDragAndDropEnabled = _ref18.isDragAndDropEnabled,
|
|
359
|
-
tableWrapperTarget = _ref18.tableWrapperTarget
|
|
359
|
+
tableWrapperTarget = _ref18.tableWrapperTarget,
|
|
360
|
+
isCellMenuOpenByKeyboard = _ref18.isCellMenuOpenByKeyboard;
|
|
360
361
|
var allowControls = pluginConfig.allowControls;
|
|
361
362
|
var stickyHeader = stickyHeadersState ? (0, _stickyHeaders.findStickyHeaderForTable)(stickyHeadersState, tablePos) : undefined;
|
|
362
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, targetCellPosition && tableRef && !isResizing && options && options.allowContextualMenu && /*#__PURE__*/_react.default.createElement(_FloatingContextualButton.default, {
|
|
363
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, targetCellPosition && (tableRef || (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') && isCellMenuOpenByKeyboard) && !isResizing && options && options.allowContextualMenu && /*#__PURE__*/_react.default.createElement(_FloatingContextualButton.default, {
|
|
363
364
|
isNumberColumnEnabled: tableNode && tableNode.attrs.isNumberColumnEnabled,
|
|
364
365
|
editorView: editorView,
|
|
365
366
|
tableNode: tableNode,
|
|
@@ -369,7 +370,8 @@ var tablesPlugin = function tablesPlugin(_ref) {
|
|
|
369
370
|
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
370
371
|
isContextualMenuOpen: isContextualMenuOpen,
|
|
371
372
|
stickyHeader: stickyHeader,
|
|
372
|
-
tableWrapper: tableWrapperTarget
|
|
373
|
+
tableWrapper: tableWrapperTarget,
|
|
374
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
373
375
|
}), allowControls && /*#__PURE__*/_react.default.createElement(_FloatingInsertButton.default, {
|
|
374
376
|
tableNode: tableNode,
|
|
375
377
|
tableRef: tableRef,
|
|
@@ -397,7 +399,8 @@ var tablesPlugin = function tablesPlugin(_ref) {
|
|
|
397
399
|
pluginConfig: pluginConfig,
|
|
398
400
|
editorAnalyticsAPI: editorAnalyticsAPI,
|
|
399
401
|
getEditorContainerWidth: defaultGetEditorContainerWidth,
|
|
400
|
-
getEditorFeatureFlags: (options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags) || defaultGetEditorFeatureFlags
|
|
402
|
+
getEditorFeatureFlags: (options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags) || defaultGetEditorFeatureFlags,
|
|
403
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
401
404
|
}), isDragAndDropEnabled && /*#__PURE__*/_react.default.createElement(_FloatingDragMenu.default, {
|
|
402
405
|
editorView: editorView,
|
|
403
406
|
mountPoint: popupsMountPoint,
|
|
@@ -84,6 +84,9 @@ function keymapPlugin(getEditorContainerWidth, editorAnalyticsAPI, dragAndDropEn
|
|
|
84
84
|
getIntl: getIntl
|
|
85
85
|
}), list);
|
|
86
86
|
}
|
|
87
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
88
|
+
(0, _keymaps.bindKeymapWithCommand)(_keymaps.focusToContextMenuTrigger.common, (0, _commands2.setFocusToCellMenu)(), list);
|
|
89
|
+
}
|
|
87
90
|
return (0, _keymap.keymap)(list);
|
|
88
91
|
}
|
|
89
92
|
var _default = exports.default = keymapPlugin;
|
package/dist/cjs/reducer.js
CHANGED
|
@@ -102,6 +102,7 @@ var _default = exports.default = function _default(pluginState, action) {
|
|
|
102
102
|
case 'HOVER_CELL':
|
|
103
103
|
case 'SHOW_RESIZE_HANDLE_LINE':
|
|
104
104
|
case 'SET_EDITOR_FOCUS':
|
|
105
|
+
case 'SET_CELL_MENU_OPEN':
|
|
105
106
|
return _objectSpread(_objectSpread({}, pluginState), action.data);
|
|
106
107
|
default:
|
|
107
108
|
return pluginState;
|
|
@@ -1,11 +1,12 @@
|
|
|
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 = _default;
|
|
8
|
-
var _react =
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
10
|
var _react2 = require("@emotion/react");
|
|
10
11
|
var _reactIntlNext = require("react-intl-next");
|
|
11
12
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
@@ -16,10 +17,13 @@ var _uiMenu = require("@atlaskit/editor-common/ui-menu");
|
|
|
16
17
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
17
18
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
18
19
|
var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
|
|
20
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
19
21
|
var _commands = require("../../commands");
|
|
20
22
|
var _types = require("../../types");
|
|
21
23
|
var _FixedButton = _interopRequireDefault(require("./FixedButton"));
|
|
22
24
|
var _styles = require("./styles");
|
|
25
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
26
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
27
|
/** @jsx jsx */
|
|
24
28
|
|
|
25
29
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
@@ -33,6 +37,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
|
|
|
33
37
|
stickyHeader = props.stickyHeader,
|
|
34
38
|
tableWrapper = props.tableWrapper,
|
|
35
39
|
targetCellPosition = props.targetCellPosition,
|
|
40
|
+
isCellMenuOpenByKeyboard = props.isCellMenuOpenByKeyboard,
|
|
36
41
|
formatMessage = props.intl.formatMessage; // : Props & WrappedComponentProps
|
|
37
42
|
|
|
38
43
|
var handleClick = function handleClick() {
|
|
@@ -50,6 +55,16 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
|
|
|
50
55
|
var domAtPos = editorView.domAtPos.bind(editorView);
|
|
51
56
|
var targetCellRef;
|
|
52
57
|
targetCellRef = (0, _utils.findDomRefAtPos)(targetCellPosition, domAtPos);
|
|
58
|
+
(0, _react.useEffect)(function () {
|
|
59
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
60
|
+
if (isCellMenuOpenByKeyboard && !isContextualMenuOpen) {
|
|
61
|
+
var state = editorView.state,
|
|
62
|
+
dispatch = editorView.dispatch;
|
|
63
|
+
// open the menu when the keyboard shortcut is pressed
|
|
64
|
+
(0, _commands.toggleContextualMenu)()(state, dispatch);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, [isCellMenuOpenByKeyboard, isContextualMenuOpen, editorView]);
|
|
53
68
|
if (!targetCellRef || !(targetCellRef instanceof HTMLElement)) {
|
|
54
69
|
return null;
|
|
55
70
|
}
|
|
@@ -70,7 +85,8 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
|
|
|
70
85
|
iconBefore: (0, _react2.jsx)(_chevronDown.default, {
|
|
71
86
|
label: ""
|
|
72
87
|
}),
|
|
73
|
-
"aria-label": labelCellOptions
|
|
88
|
+
"aria-label": labelCellOptions,
|
|
89
|
+
"aria-expanded": (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') ? isContextualMenuOpen : undefined
|
|
74
90
|
}));
|
|
75
91
|
var parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
|
|
76
92
|
if (stickyHeader && parentSticky && tableWrapper) {
|
|
@@ -1,6 +1,7 @@
|
|
|
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
|
});
|
|
@@ -13,7 +14,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
|
|
|
13
14
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
15
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
-
var _react = require("react");
|
|
17
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
18
|
var _react2 = require("@emotion/react");
|
|
18
19
|
var _reactIntlNext = require("react-intl-next");
|
|
19
20
|
var _customSteps = require("@atlaskit/custom-steps");
|
|
@@ -34,6 +35,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
34
35
|
var _commands = require("../../commands");
|
|
35
36
|
var _commandsWithAnalytics = require("../../commands-with-analytics");
|
|
36
37
|
var _pluginFactory = require("../../pm-plugins/plugin-factory");
|
|
38
|
+
var _pluginKey = require("../../pm-plugins/plugin-key");
|
|
37
39
|
var _resizeState = require("../../pm-plugins/table-resizing/utils/resize-state");
|
|
38
40
|
var _transforms = require("../../transforms");
|
|
39
41
|
var _types = require("../../types");
|
|
@@ -41,10 +43,13 @@ var _utils3 = require("../../utils");
|
|
|
41
43
|
var _consts = require("../consts");
|
|
42
44
|
var _icons = require("../icons");
|
|
43
45
|
var _styles2 = require("./styles");
|
|
46
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
47
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
44
48
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
45
49
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
46
50
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
47
51
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable @atlaskit/design-system/prefer-primitives */ /** @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
52
|
+
var arrowsList = new Set(['ArrowRight', 'ArrowLeft']);
|
|
48
53
|
var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component) {
|
|
49
54
|
(0, _inherits2.default)(ContextualMenu, _Component);
|
|
50
55
|
var _super = _createSuper(ContextualMenu);
|
|
@@ -56,8 +61,10 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
56
61
|
}
|
|
57
62
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
58
63
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
|
|
59
|
-
isSubmenuOpen: false
|
|
64
|
+
isSubmenuOpen: false,
|
|
65
|
+
isOpenAllowed: false
|
|
60
66
|
});
|
|
67
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "dropdownMenuRef", /*#__PURE__*/_react.default.createRef());
|
|
61
68
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleSubMenuRef", function (ref) {
|
|
62
69
|
var parent = (0, _utils.closestElement)(_this.props.editorView.dom, '.fabric-editor-popup-scroll-parent');
|
|
63
70
|
if (!(parent && ref)) {
|
|
@@ -75,15 +82,23 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
75
82
|
state = _this$props.editorView.state,
|
|
76
83
|
isOpen = _this$props.isOpen,
|
|
77
84
|
formatMessage = _this$props.intl.formatMessage,
|
|
78
|
-
editorView = _this$props.editorView
|
|
85
|
+
editorView = _this$props.editorView,
|
|
86
|
+
isCellMenuOpenByKeyboard = _this$props.isCellMenuOpenByKeyboard;
|
|
79
87
|
var isSubmenuOpen = _this.state.isSubmenuOpen;
|
|
80
88
|
var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
81
89
|
targetCellPosition = _getPluginState.targetCellPosition,
|
|
82
90
|
isDragAndDropEnabled = _getPluginState.isDragAndDropEnabled;
|
|
83
91
|
if (allowBackgroundColor) {
|
|
84
|
-
var _node$attrs, _node$attrs2;
|
|
92
|
+
var _node$attrs, _node$attrs2, _node$attrs3;
|
|
85
93
|
var node = isOpen && targetCellPosition ? state.doc.nodeAt(targetCellPosition) : null;
|
|
86
94
|
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');
|
|
95
|
+
var selectedRowIndex;
|
|
96
|
+
var selectedColumnIndex;
|
|
97
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
98
|
+
var selectedRowAndColumnFromPalette = (0, _uiColor.getSelectedRowAndColumnFromPalette)(_uiColor.cellBackgroundColorPalette, background, _consts.colorPalletteColumns);
|
|
99
|
+
selectedRowIndex = selectedRowAndColumnFromPalette.selectedRowIndex;
|
|
100
|
+
selectedColumnIndex = selectedRowAndColumnFromPalette.selectedColumnIndex;
|
|
101
|
+
}
|
|
87
102
|
return {
|
|
88
103
|
content: isDragAndDropEnabled ? formatMessage(_messages.tableMessages.backgroundColor) : formatMessage(_messages.tableMessages.cellBackground),
|
|
89
104
|
value: {
|
|
@@ -107,10 +122,27 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
107
122
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
108
123
|
,
|
|
109
124
|
className: isDragAndDropEnabled ? _types.TableCssClassName.CONTEXTUAL_MENU_ICON_SMALL : _types.TableCssClassName.CONTEXTUAL_MENU_ICON
|
|
110
|
-
}), isSubmenuOpen && (0, _react2.jsx)("div", {
|
|
125
|
+
}), (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') ? isSubmenuOpen && (0, _react2.jsx)("div", {
|
|
111
126
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
112
127
|
className: _types.TableCssClassName.CONTEXTUAL_SUBMENU,
|
|
113
128
|
ref: _this.handleSubMenuRef
|
|
129
|
+
}, (0, _react2.jsx)(_uiMenu.ArrowKeyNavigationProvider, {
|
|
130
|
+
type: _uiMenu.ArrowKeyNavigationType.COLOR,
|
|
131
|
+
selectedRowIndex: selectedRowIndex || 0,
|
|
132
|
+
selectedColumnIndex: selectedColumnIndex || 0,
|
|
133
|
+
handleClose: function handleClose() {
|
|
134
|
+
_this.setState({
|
|
135
|
+
isSubmenuOpen: false
|
|
136
|
+
});
|
|
137
|
+
if (_this.dropdownMenuRef && _this.dropdownMenuRef.current) {
|
|
138
|
+
var focusableItems = _this.dropdownMenuRef.current.querySelectorAll('div[tabindex="-1"]:not([disabled])');
|
|
139
|
+
if (focusableItems && focusableItems.length) {
|
|
140
|
+
focusableItems[0].focus();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
isPopupPositioned: true,
|
|
145
|
+
isOpenedByKeyboard: isCellMenuOpenByKeyboard
|
|
114
146
|
}, (0, _react2.jsx)(_uiColor.ColorPalette, {
|
|
115
147
|
cols: 7,
|
|
116
148
|
onClick: _this.setColor,
|
|
@@ -120,7 +152,22 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
120
152
|
paletteColorTooltipMessages: _uiColor.backgroundPaletteTooltipMessages,
|
|
121
153
|
hexToPaletteColor: _editorPalette.hexToEditorBackgroundPaletteColor
|
|
122
154
|
}
|
|
123
|
-
})))
|
|
155
|
+
}))) : isSubmenuOpen &&
|
|
156
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
157
|
+
(0, _react2.jsx)("div", {
|
|
158
|
+
className: _types.TableCssClassName.CONTEXTUAL_SUBMENU,
|
|
159
|
+
ref: _this.handleSubMenuRef
|
|
160
|
+
}, (0, _react2.jsx)(_uiColor.ColorPalette, {
|
|
161
|
+
cols: 7,
|
|
162
|
+
onClick: _this.setColor,
|
|
163
|
+
selectedColor: (node === null || node === void 0 || (_node$attrs3 = node.attrs) === null || _node$attrs3 === void 0 ? void 0 : _node$attrs3.background) || '#ffffff',
|
|
164
|
+
paletteOptions: {
|
|
165
|
+
palette: _uiColor.cellBackgroundColorPalette,
|
|
166
|
+
paletteColorTooltipMessages: _uiColor.backgroundPaletteTooltipMessages,
|
|
167
|
+
hexToPaletteColor: _editorPalette.hexToEditorBackgroundPaletteColor
|
|
168
|
+
}
|
|
169
|
+
}))),
|
|
170
|
+
'aria-expanded': (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') ? isSubmenuOpen : undefined
|
|
124
171
|
};
|
|
125
172
|
}
|
|
126
173
|
});
|
|
@@ -406,7 +453,8 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
406
453
|
selectionRect = _this$props10.selectionRect,
|
|
407
454
|
editorAnalyticsAPI = _this$props10.editorAnalyticsAPI,
|
|
408
455
|
getEditorContainerWidth = _this$props10.getEditorContainerWidth,
|
|
409
|
-
getEditorFeatureFlags = _this$props10.getEditorFeatureFlags
|
|
456
|
+
getEditorFeatureFlags = _this$props10.getEditorFeatureFlags,
|
|
457
|
+
isCellMenuOpenByKeyboard = _this$props10.isCellMenuOpenByKeyboard;
|
|
410
458
|
// TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
|
|
411
459
|
var state = editorView.state,
|
|
412
460
|
dispatch = editorView.dispatch;
|
|
@@ -419,6 +467,19 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
419
467
|
tableDuplicateCellColouring = _ref4$tableDuplicateC === void 0 ? false : _ref4$tableDuplicateC,
|
|
420
468
|
_ref4$tableWithFixedC = _ref4.tableWithFixedColumnWidthsOption,
|
|
421
469
|
tableWithFixedColumnWidthsOption = _ref4$tableWithFixedC === void 0 ? false : _ref4$tableWithFixedC;
|
|
470
|
+
// context menu opened by keyboard and any item except 'background' activated
|
|
471
|
+
// or color has been chosen from color palette
|
|
472
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') && isCellMenuOpenByKeyboard && (item.value.name !== 'background' || item.value.name === 'background' && _this.state.isSubmenuOpen)) {
|
|
473
|
+
var tr = state.tr;
|
|
474
|
+
tr.setMeta(_pluginKey.pluginKey, {
|
|
475
|
+
type: 'SET_CELL_MENU_OPEN',
|
|
476
|
+
data: {
|
|
477
|
+
isCellMenuOpenByKeyboard: false
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
dispatch(tr);
|
|
481
|
+
editorView.dom.focus(); // otherwise cursor disappears from cell
|
|
482
|
+
}
|
|
422
483
|
var shouldUseIncreasedScalingPercent = isTableScalingEnabled && tableWithFixedColumnWidthsOption && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.use-increased-scaling-percent');
|
|
423
484
|
switch (item.value.name) {
|
|
424
485
|
case 'sort_column_desc':
|
|
@@ -469,6 +530,19 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
469
530
|
(0, _commandsWithAnalytics.deleteRowsWithAnalytics)(editorAnalyticsAPI)(_analytics.INPUT_METHOD.CONTEXT_MENU, selectionRect, !!isHeaderRowRequired)(state, dispatch);
|
|
470
531
|
_this.toggleOpen();
|
|
471
532
|
break;
|
|
533
|
+
case 'background':
|
|
534
|
+
{
|
|
535
|
+
// This is called twice.
|
|
536
|
+
// 1st time when user chooses the background color item.
|
|
537
|
+
// 2nd when color has been chosen from color palette.
|
|
538
|
+
// here we are handling the 1st call relying on the isSubmenuOpen state value
|
|
539
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') && isCellMenuOpenByKeyboard && !_this.state.isSubmenuOpen) {
|
|
540
|
+
_this.setState({
|
|
541
|
+
isSubmenuOpen: true
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
break;
|
|
545
|
+
}
|
|
472
546
|
}
|
|
473
547
|
});
|
|
474
548
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleOpen", function () {
|
|
@@ -484,22 +558,55 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
484
558
|
});
|
|
485
559
|
}
|
|
486
560
|
});
|
|
487
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleOpenChange", function () {
|
|
488
|
-
var _this$props$editorVie = _this.props.editorView,
|
|
489
|
-
state = _this$props$editorVie.state,
|
|
490
|
-
dispatch = _this$props$editorVie.dispatch;
|
|
491
|
-
(0, _commands.toggleContextualMenu)()(state, dispatch);
|
|
492
|
-
_this.setState({
|
|
493
|
-
isSubmenuOpen: false
|
|
494
|
-
});
|
|
495
|
-
});
|
|
496
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseEnter", function (_ref5) {
|
|
497
|
-
var item = _ref5.item;
|
|
561
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleOpenChange", function (payload) {
|
|
498
562
|
var _this$props12 = _this.props,
|
|
499
563
|
_this$props12$editorV = _this$props12.editorView,
|
|
500
564
|
state = _this$props12$editorV.state,
|
|
501
565
|
dispatch = _this$props12$editorV.dispatch,
|
|
502
|
-
|
|
566
|
+
dom = _this$props12$editorV.dom,
|
|
567
|
+
isCellMenuOpenByKeyboard = _this$props12.isCellMenuOpenByKeyboard;
|
|
568
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
569
|
+
if (payload) {
|
|
570
|
+
var event = payload.event;
|
|
571
|
+
if (event && event instanceof KeyboardEvent) {
|
|
572
|
+
if (!_this.state.isSubmenuOpen) {
|
|
573
|
+
if (arrowsList.has(event.key)) {
|
|
574
|
+
// preventing default behavior for avoiding cursor jump to next/previous table column
|
|
575
|
+
// when left/right arrow pressed.
|
|
576
|
+
event.preventDefault();
|
|
577
|
+
}
|
|
578
|
+
(0, _commands.toggleContextualMenu)()(state, dispatch);
|
|
579
|
+
_this.setState({
|
|
580
|
+
isSubmenuOpen: false
|
|
581
|
+
});
|
|
582
|
+
(0, _commands.setFocusToCellMenu)(false)(state, dispatch);
|
|
583
|
+
dom.focus();
|
|
584
|
+
}
|
|
585
|
+
} else {
|
|
586
|
+
// mouse click outside
|
|
587
|
+
(0, _commands.toggleContextualMenu)()(state, dispatch);
|
|
588
|
+
_this.setState({
|
|
589
|
+
isSubmenuOpen: false
|
|
590
|
+
});
|
|
591
|
+
if (isCellMenuOpenByKeyboard) {
|
|
592
|
+
(0, _commands.setFocusToCellMenu)(false)(state, dispatch);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
} else {
|
|
597
|
+
(0, _commands.toggleContextualMenu)()(state, dispatch);
|
|
598
|
+
_this.setState({
|
|
599
|
+
isSubmenuOpen: false
|
|
600
|
+
});
|
|
601
|
+
}
|
|
602
|
+
});
|
|
603
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseEnter", function (_ref5) {
|
|
604
|
+
var item = _ref5.item;
|
|
605
|
+
var _this$props13 = _this.props,
|
|
606
|
+
_this$props13$editorV = _this$props13.editorView,
|
|
607
|
+
state = _this$props13$editorV.state,
|
|
608
|
+
dispatch = _this$props13$editorV.dispatch,
|
|
609
|
+
selectionRect = _this$props13.selectionRect;
|
|
503
610
|
if (item.value.name === 'background') {
|
|
504
611
|
if (!_this.state.isSubmenuOpen) {
|
|
505
612
|
_this.setState({
|
|
@@ -519,9 +626,9 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
519
626
|
});
|
|
520
627
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseLeave", function (_ref6) {
|
|
521
628
|
var item = _ref6.item;
|
|
522
|
-
var _this$props$
|
|
523
|
-
state = _this$props$
|
|
524
|
-
dispatch = _this$props$
|
|
629
|
+
var _this$props$editorVie = _this.props.editorView,
|
|
630
|
+
state = _this$props$editorVie.state,
|
|
631
|
+
dispatch = _this$props$editorVie.dispatch;
|
|
525
632
|
if (item.value.name === 'background') {
|
|
526
633
|
_this.closeSubmenu();
|
|
527
634
|
}
|
|
@@ -537,9 +644,9 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
537
644
|
}
|
|
538
645
|
});
|
|
539
646
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setColor", function (color) {
|
|
540
|
-
var _this$
|
|
541
|
-
editorView = _this$
|
|
542
|
-
editorAnalyticsAPI = _this$
|
|
647
|
+
var _this$props14 = _this.props,
|
|
648
|
+
editorView = _this$props14.editorView,
|
|
649
|
+
editorAnalyticsAPI = _this$props14.editorAnalyticsAPI;
|
|
543
650
|
// TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
|
|
544
651
|
var _getPluginState13 = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
545
652
|
targetCellPosition = _getPluginState13.targetCellPosition;
|
|
@@ -551,20 +658,44 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
551
658
|
return _this;
|
|
552
659
|
}
|
|
553
660
|
(0, _createClass2.default)(ContextualMenu, [{
|
|
661
|
+
key: "componentDidMount",
|
|
662
|
+
value: function componentDidMount() {
|
|
663
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
664
|
+
// ArrowKeyNavigationProvider in DropdownMenu expects that menu handle will stay focused
|
|
665
|
+
// until user pressed ArrowDown.
|
|
666
|
+
// Behavior above fails the A11Y requirement about first item in menu should be focused immediately.
|
|
667
|
+
// so here is triggering componentDidUpdate inside dropdown to set focus on first element
|
|
668
|
+
var isCellMenuOpenByKeyboard = this.props.isCellMenuOpenByKeyboard;
|
|
669
|
+
if (isCellMenuOpenByKeyboard) {
|
|
670
|
+
this.setState(_objectSpread(_objectSpread({}, this.state), {}, {
|
|
671
|
+
isOpenAllowed: isCellMenuOpenByKeyboard
|
|
672
|
+
}));
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
}, {
|
|
554
677
|
key: "render",
|
|
555
678
|
value: function render() {
|
|
556
|
-
var _this$
|
|
557
|
-
isOpen = _this$
|
|
558
|
-
mountPoint = _this$
|
|
559
|
-
offset = _this$
|
|
560
|
-
boundariesElement = _this$
|
|
561
|
-
editorView = _this$
|
|
679
|
+
var _this$props15 = this.props,
|
|
680
|
+
isOpen = _this$props15.isOpen,
|
|
681
|
+
mountPoint = _this$props15.mountPoint,
|
|
682
|
+
offset = _this$props15.offset,
|
|
683
|
+
boundariesElement = _this$props15.boundariesElement,
|
|
684
|
+
editorView = _this$props15.editorView,
|
|
685
|
+
isCellMenuOpenByKeyboard = _this$props15.isCellMenuOpenByKeyboard;
|
|
562
686
|
var _getPluginState14 = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
563
687
|
isDragAndDropEnabled = _getPluginState14.isDragAndDropEnabled;
|
|
564
688
|
var items = isDragAndDropEnabled ? this.createNewContextMenuItems() : this.createOriginalContextMenuItems();
|
|
689
|
+
var isOpenAllowed = false;
|
|
690
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
691
|
+
isOpenAllowed = isCellMenuOpenByKeyboard ? this.state.isOpenAllowed : isOpen;
|
|
692
|
+
} else {
|
|
693
|
+
isOpenAllowed = isOpen;
|
|
694
|
+
}
|
|
565
695
|
return (0, _react2.jsx)("div", {
|
|
566
696
|
"data-testid": "table-cell-contextual-menu",
|
|
567
|
-
onMouseLeave: this.closeSubmenu
|
|
697
|
+
onMouseLeave: this.closeSubmenu,
|
|
698
|
+
ref: this.dropdownMenuRef
|
|
568
699
|
}, (0, _react2.jsx)(_uiMenu.DropdownMenu, {
|
|
569
700
|
mountTo: mountPoint
|
|
570
701
|
//This needs be removed when the a11y is completely handled
|
|
@@ -572,21 +703,25 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
572
703
|
,
|
|
573
704
|
arrowKeyNavigationProviderOptions: {
|
|
574
705
|
type: _uiMenu.ArrowKeyNavigationType.MENU,
|
|
575
|
-
disableArrowKeyNavigation: true
|
|
706
|
+
disableArrowKeyNavigation: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') && isCellMenuOpenByKeyboard && !this.state.isSubmenuOpen ? false : true
|
|
576
707
|
},
|
|
577
708
|
items: items,
|
|
578
|
-
isOpen:
|
|
709
|
+
isOpen: isOpenAllowed,
|
|
579
710
|
onOpenChange: this.handleOpenChange,
|
|
580
711
|
onItemActivated: this.onMenuItemActivated,
|
|
581
712
|
onMouseEnter: this.handleItemMouseEnter,
|
|
582
713
|
onMouseLeave: this.handleItemMouseLeave,
|
|
583
714
|
fitHeight: 188,
|
|
584
715
|
fitWidth: isDragAndDropEnabled ? _consts.contextualMenuDropdownWidthDnD : _consts.contextualMenuDropdownWidth,
|
|
716
|
+
shouldFocusFirstItem: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') ? function () {
|
|
717
|
+
return Boolean(isCellMenuOpenByKeyboard);
|
|
718
|
+
} : undefined,
|
|
585
719
|
boundariesElement: boundariesElement,
|
|
586
720
|
offset: offset,
|
|
587
721
|
section: isDragAndDropEnabled ? {
|
|
588
722
|
hasSeparator: true
|
|
589
|
-
} : undefined
|
|
723
|
+
} : undefined,
|
|
724
|
+
isAllowEnterDefaultBehavior: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.a11y-table-context-menu_y4c9c') ? this.state.isSubmenuOpen : false
|
|
590
725
|
}));
|
|
591
726
|
}
|
|
592
727
|
}]);
|
|
@@ -26,7 +26,8 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
|
|
|
26
26
|
pluginConfig = _ref.pluginConfig,
|
|
27
27
|
editorAnalyticsAPI = _ref.editorAnalyticsAPI,
|
|
28
28
|
getEditorContainerWidth = _ref.getEditorContainerWidth,
|
|
29
|
-
getEditorFeatureFlags = _ref.getEditorFeatureFlags
|
|
29
|
+
getEditorFeatureFlags = _ref.getEditorFeatureFlags,
|
|
30
|
+
isCellMenuOpenByKeyboard = _ref.isCellMenuOpenByKeyboard;
|
|
30
31
|
// TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
|
|
31
32
|
var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
|
|
32
33
|
targetCellPosition = _getPluginState.targetCellPosition,
|
|
@@ -75,7 +76,8 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
|
|
|
75
76
|
boundariesElement: boundariesElement,
|
|
76
77
|
editorAnalyticsAPI: editorAnalyticsAPI,
|
|
77
78
|
getEditorContainerWidth: getEditorContainerWidth,
|
|
78
|
-
getEditorFeatureFlags: getEditorFeatureFlags
|
|
79
|
+
getEditorFeatureFlags: getEditorFeatureFlags,
|
|
80
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
79
81
|
})));
|
|
80
82
|
};
|
|
81
83
|
FloatingContextualMenu.displayName = 'FloatingContextualMenu';
|
|
@@ -2,7 +2,7 @@ export { hoverColumns, hoverRows, hoverTable, hoverCell, hoverMergedCells, clear
|
|
|
2
2
|
export { insertColumn, insertRow, createTable } from './insert';
|
|
3
3
|
export { getNextLayout, toggleContextualMenu, toggleHeaderColumn, toggleHeaderRow, toggleNumberColumn, toggleTableLayout } from './toggle';
|
|
4
4
|
export { clearMultipleCells } from './clear';
|
|
5
|
-
export { autoSizeTable, convertFirstRowToHeader, deleteTable, hideInsertColumnOrRowButton, moveCursorBackward, selectColumn, selectColumns, selectRow, selectRows, setCellAttr, setEditorFocus, setMultipleCellAttrs, setTableRef, showInsertColumnButton, showInsertRowButton, transformSliceToAddTableHeaders, triggerUnlessTableHeader, addBoldInEmptyHeaderCells, addResizeHandleDecorations, updateWidthToWidest } from './misc';
|
|
5
|
+
export { autoSizeTable, convertFirstRowToHeader, deleteTable, hideInsertColumnOrRowButton, moveCursorBackward, selectColumn, selectColumns, selectRow, selectRows, setCellAttr, setEditorFocus, setMultipleCellAttrs, setTableRef, showInsertColumnButton, showInsertRowButton, transformSliceToAddTableHeaders, triggerUnlessTableHeader, addBoldInEmptyHeaderCells, addResizeHandleDecorations, updateWidthToWidest, setFocusToCellMenu } from './misc';
|
|
6
6
|
export { sortByColumn } from './sort';
|
|
7
7
|
export { goToNextCell } from './go-to-next-cell';
|
|
8
8
|
export { removeDescendantNodes } from './referentiality';
|
|
@@ -589,4 +589,12 @@ export const setTableAlignmentWithTableContentWithPos = (newAlignment, tableNode
|
|
|
589
589
|
}
|
|
590
590
|
tr.setNodeMarkup(tableNodeWithPos.pos, undefined, nextTableAttrs).setMeta('scrollIntoView', false);
|
|
591
591
|
return tr;
|
|
592
|
-
};
|
|
592
|
+
};
|
|
593
|
+
export const setFocusToCellMenu = (isCellMenuOpenByKeyboard = true, originalTr) => createCommand(() => {
|
|
594
|
+
return {
|
|
595
|
+
type: 'SET_CELL_MENU_OPEN',
|
|
596
|
+
data: {
|
|
597
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
598
|
+
}
|
|
599
|
+
};
|
|
600
|
+
}, tr => (originalTr || tr).setMeta('addToHistory', false));
|
package/dist/es2019/plugin.js
CHANGED
|
@@ -347,13 +347,14 @@ const tablesPlugin = ({
|
|
|
347
347
|
isHeaderColumnEnabled,
|
|
348
348
|
isHeaderRowEnabled,
|
|
349
349
|
isDragAndDropEnabled,
|
|
350
|
-
tableWrapperTarget
|
|
350
|
+
tableWrapperTarget,
|
|
351
|
+
isCellMenuOpenByKeyboard
|
|
351
352
|
} = tablePluginState;
|
|
352
353
|
const {
|
|
353
354
|
allowControls
|
|
354
355
|
} = pluginConfig;
|
|
355
356
|
const stickyHeader = stickyHeadersState ? findStickyHeaderForTable(stickyHeadersState, tablePos) : undefined;
|
|
356
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, targetCellPosition && tableRef && !isResizing && options && options.allowContextualMenu && /*#__PURE__*/React.createElement(FloatingContextualButton, {
|
|
357
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, targetCellPosition && (tableRef || getBooleanFF('platform.editor.a11y-table-context-menu_y4c9c') && isCellMenuOpenByKeyboard) && !isResizing && options && options.allowContextualMenu && /*#__PURE__*/React.createElement(FloatingContextualButton, {
|
|
357
358
|
isNumberColumnEnabled: tableNode && tableNode.attrs.isNumberColumnEnabled,
|
|
358
359
|
editorView: editorView,
|
|
359
360
|
tableNode: tableNode,
|
|
@@ -363,7 +364,8 @@ const tablesPlugin = ({
|
|
|
363
364
|
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
364
365
|
isContextualMenuOpen: isContextualMenuOpen,
|
|
365
366
|
stickyHeader: stickyHeader,
|
|
366
|
-
tableWrapper: tableWrapperTarget
|
|
367
|
+
tableWrapper: tableWrapperTarget,
|
|
368
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
367
369
|
}), allowControls && /*#__PURE__*/React.createElement(FloatingInsertButton, {
|
|
368
370
|
tableNode: tableNode,
|
|
369
371
|
tableRef: tableRef,
|
|
@@ -391,7 +393,8 @@ const tablesPlugin = ({
|
|
|
391
393
|
pluginConfig: pluginConfig,
|
|
392
394
|
editorAnalyticsAPI: editorAnalyticsAPI,
|
|
393
395
|
getEditorContainerWidth: defaultGetEditorContainerWidth,
|
|
394
|
-
getEditorFeatureFlags: (options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags) || defaultGetEditorFeatureFlags
|
|
396
|
+
getEditorFeatureFlags: (options === null || options === void 0 ? void 0 : options.getEditorFeatureFlags) || defaultGetEditorFeatureFlags,
|
|
397
|
+
isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard
|
|
395
398
|
}), isDragAndDropEnabled && /*#__PURE__*/React.createElement(FloatingDragMenu, {
|
|
396
399
|
editorView: editorView,
|
|
397
400
|
mountPoint: popupsMountPoint,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
2
|
-
import { addColumnAfter, addColumnAfterVO, addColumnBefore, addColumnBeforeVO, addRowAfter, addRowAfterVO, addRowBefore, addRowBeforeVO, backspace, bindKeymapWithCommand, decreaseMediaSize, deleteColumn, deleteRow, escape, increaseMediaSize, moveColumnLeft, moveColumnRight, moveLeft, moveRight, moveRowDown, moveRowUp, nextCell, previousCell, startColumnResizing, toggleTable } from '@atlaskit/editor-common/keymaps';
|
|
2
|
+
import { addColumnAfter, addColumnAfterVO, addColumnBefore, addColumnBeforeVO, addRowAfter, addRowAfterVO, addRowBefore, addRowBeforeVO, backspace, bindKeymapWithCommand, decreaseMediaSize, deleteColumn, deleteRow, escape, focusToContextMenuTrigger, increaseMediaSize, moveColumnLeft, moveColumnRight, moveLeft, moveRight, moveRowDown, moveRowUp, nextCell, previousCell, startColumnResizing, toggleTable } from '@atlaskit/editor-common/keymaps';
|
|
3
3
|
import { chainCommands } from '@atlaskit/editor-prosemirror/commands';
|
|
4
4
|
import { keymap } from '@atlaskit/editor-prosemirror/keymap';
|
|
5
5
|
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
6
|
-
import { goToNextCell, moveCursorBackward } from '../commands';
|
|
6
|
+
import { goToNextCell, moveCursorBackward, setFocusToCellMenu } from '../commands';
|
|
7
7
|
import { addRowAroundSelection, changeColumnWidthByStepWithAnalytics, deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut, deleteTableIfSelectedWithAnalytics, emptyMultipleCellsWithAnalytics } from '../commands-with-analytics';
|
|
8
8
|
import { activateNextResizeArea, initiateKeyboardColumnResizing, stopKeyboardColumnResizing } from '../commands/column-resize';
|
|
9
9
|
import { addColumnAfter as addColumnAfterCommand, addColumnBefore as addColumnBeforeCommand, createTable } from '../commands/insert';
|
|
@@ -69,6 +69,9 @@ export function keymapPlugin(getEditorContainerWidth, editorAnalyticsAPI, dragAn
|
|
|
69
69
|
getIntl: getIntl
|
|
70
70
|
}), list);
|
|
71
71
|
}
|
|
72
|
+
if (getBooleanFF('platform.editor.a11y-table-context-menu_y4c9c')) {
|
|
73
|
+
bindKeymapWithCommand(focusToContextMenuTrigger.common, setFocusToCellMenu(), list);
|
|
74
|
+
}
|
|
72
75
|
return keymap(list);
|
|
73
76
|
}
|
|
74
77
|
export default keymapPlugin;
|