@atlaskit/editor-plugin-table 7.20.2 → 7.21.0
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 +17 -0
- package/dist/cjs/nodeviews/TableResizer.js +25 -2
- package/dist/cjs/nodeviews/TableStickyScrollbar.js +8 -1
- package/dist/cjs/nodeviews/lazy-node-views.js +133 -0
- package/dist/cjs/plugin.js +39 -4
- package/dist/cjs/pm-plugins/keymap.js +1 -1
- package/dist/cjs/pm-plugins/main.js +19 -15
- package/dist/cjs/ui/FloatingContextualButton/index.js +4 -2
- package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +11 -11
- package/dist/es2019/nodeviews/TableResizer.js +25 -2
- package/dist/es2019/nodeviews/TableStickyScrollbar.js +8 -1
- package/dist/es2019/nodeviews/lazy-node-views.js +116 -0
- package/dist/es2019/plugin.js +38 -2
- package/dist/es2019/pm-plugins/keymap.js +1 -1
- package/dist/es2019/pm-plugins/main.js +19 -7
- package/dist/es2019/ui/FloatingContextualButton/index.js +5 -3
- package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +11 -11
- package/dist/esm/nodeviews/TableResizer.js +25 -2
- package/dist/esm/nodeviews/TableStickyScrollbar.js +8 -1
- package/dist/esm/nodeviews/lazy-node-views.js +116 -0
- package/dist/esm/plugin.js +39 -4
- package/dist/esm/pm-plugins/keymap.js +1 -1
- package/dist/esm/pm-plugins/main.js +19 -15
- package/dist/esm/ui/FloatingContextualButton/index.js +5 -3
- package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +11 -11
- package/dist/types/nodeviews/lazy-node-views.d.ts +26 -0
- package/dist/types-ts4.5/nodeviews/lazy-node-views.d.ts +26 -0
- package/package.json +6 -3
- package/src/nodeviews/TableResizer.tsx +26 -1
- package/src/nodeviews/TableStickyScrollbar.ts +8 -1
- package/src/nodeviews/lazy-node-views.ts +196 -0
- package/src/plugin.tsx +53 -2
- package/src/pm-plugins/keymap.ts +1 -1
- package/src/pm-plugins/main.ts +18 -19
- package/src/ui/FloatingContextualButton/index.tsx +7 -5
- package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +11 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-table
|
|
2
2
|
|
|
3
|
+
## 7.21.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#120893](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/120893)
|
|
8
|
+
[`67a22e5eb05a2`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/67a22e5eb05a2) -
|
|
9
|
+
[ux] [ECA11Y-113] This change adds the keyboard shortcut (Shift+F10) to the Cell Options Tooltip
|
|
10
|
+
and to the Editor Help dialog. This change is behind the `platform_editor_a11y_table_context_menu`
|
|
11
|
+
feature flag.
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#120665](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/120665)
|
|
16
|
+
[`a4ee6908e0e2c`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a4ee6908e0e2c) -
|
|
17
|
+
[ED-23943] Milestone: Initial LazyNodeViewLoading implementation for Table
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 7.20.2
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -16,6 +16,7 @@ var _guideline = require("@atlaskit/editor-common/guideline");
|
|
|
16
16
|
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
17
17
|
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
18
18
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
19
|
+
var _monitoring = require("@atlaskit/editor-common/monitoring");
|
|
19
20
|
var _resizer = require("@atlaskit/editor-common/resizer");
|
|
20
21
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
21
22
|
var _commands = require("@atlaskit/editor-prosemirror/commands");
|
|
@@ -101,7 +102,7 @@ var getVisibleGuidelines = function getVisibleGuidelines(guidelines, containerWi
|
|
|
101
102
|
});
|
|
102
103
|
};
|
|
103
104
|
var TableResizer = exports.TableResizer = function TableResizer(_ref) {
|
|
104
|
-
var
|
|
105
|
+
var _editorView$state, _pluginInjectionApi$a2;
|
|
105
106
|
var children = _ref.children,
|
|
106
107
|
width = _ref.width,
|
|
107
108
|
maxWidth = _ref.maxWidth,
|
|
@@ -142,7 +143,29 @@ var TableResizer = exports.TableResizer = function TableResizer(_ref) {
|
|
|
142
143
|
setSnappingEnabled = _useState2[1];
|
|
143
144
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
144
145
|
formatMessage = _useIntl.formatMessage;
|
|
145
|
-
var
|
|
146
|
+
var currentSelection = (_editorView$state = editorView.state) === null || _editorView$state === void 0 ? void 0 : _editorView$state.selection;
|
|
147
|
+
var tableFromSelection = (0, _react.useMemo)(function () {
|
|
148
|
+
return (0, _utils2.findTable)(currentSelection);
|
|
149
|
+
}, [currentSelection]);
|
|
150
|
+
var tableFromSelectionPosition = tableFromSelection === null || tableFromSelection === void 0 ? void 0 : tableFromSelection.pos;
|
|
151
|
+
var isTableSelected = (0, _react.useMemo)(function () {
|
|
152
|
+
// Avoid call getPos if there is no table in the current selection,
|
|
153
|
+
if (typeof tableFromSelectionPosition !== 'number') {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
var currentNodePosition;
|
|
157
|
+
try {
|
|
158
|
+
// The React Table and the ProseMirror can endup out-of-sync
|
|
159
|
+
// ProseMirror always assume the DOM is not managed by other framework
|
|
160
|
+
currentNodePosition = getPos();
|
|
161
|
+
} catch (e) {
|
|
162
|
+
(0, _monitoring.logException)(e, {
|
|
163
|
+
location: 'editor-plugin-table/table-resizer'
|
|
164
|
+
});
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
return tableFromSelectionPosition === currentNodePosition;
|
|
168
|
+
}, [tableFromSelectionPosition, getPos]);
|
|
146
169
|
var resizerMinWidth = getResizerMinWidth(node);
|
|
147
170
|
var handleSize = getResizerHandleHeight(tableRef);
|
|
148
171
|
var _useMeasureFramerate = (0, _analytics2.useMeasureFramerate)(),
|
|
@@ -9,6 +9,7 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _types = require("../types");
|
|
13
14
|
var TableStickyScrollbar = exports.TableStickyScrollbar = /*#__PURE__*/function () {
|
|
14
15
|
function TableStickyScrollbar(wrapper, view) {
|
|
@@ -23,7 +24,13 @@ var TableStickyScrollbar = exports.TableStickyScrollbar = /*#__PURE__*/function
|
|
|
23
24
|
});
|
|
24
25
|
this.wrapper = wrapper;
|
|
25
26
|
this.view = view;
|
|
26
|
-
|
|
27
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_lazy-node-views')) {
|
|
28
|
+
requestAnimationFrame(function () {
|
|
29
|
+
_this.init();
|
|
30
|
+
});
|
|
31
|
+
} else {
|
|
32
|
+
this.init();
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
35
|
(0, _createClass2.default)(TableStickyScrollbar, [{
|
|
29
36
|
key: "dispose",
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.lazyTableView = exports.lazyTableRowView = exports.lazyTableHeaderView = exports.lazyTableCellView = void 0;
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
9
|
+
var _lazyNodeView = require("@atlaskit/editor-common/lazy-node-view");
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
|
+
var _table = require("./table");
|
|
12
|
+
var _TableCell = _interopRequireDefault(require("./TableCell"));
|
|
13
|
+
var _TableRow = _interopRequireDefault(require("./TableRow"));
|
|
14
|
+
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); }
|
|
15
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != (0, _typeof2.default)(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; } // TODO: Clean up ED-23976
|
|
16
|
+
var lazyTableView = exports.lazyTableView = function lazyTableView(options) {
|
|
17
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_lazy-node-views')) {
|
|
18
|
+
return function (node, view, getPos) {
|
|
19
|
+
return (0, _table.createTableView)(node, view, getPos, options.portalProviderAPI, options.eventDispatcher, options.getEditorContainerWidth, options.getEditorFeatureFlags, options.dispatchAnalyticsEvent, options.pluginInjectionApi, options.isTableAlignmentEnabled);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var loader = function loader() {
|
|
23
|
+
var result = Promise.resolve().then(function () {
|
|
24
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-plugin-table_nodeview" */
|
|
25
|
+
'./table'));
|
|
26
|
+
}).then(function (_ref) {
|
|
27
|
+
var createTableView = _ref.createTableView;
|
|
28
|
+
return function (node, view, getPos, decorations, getNodeViewOptions) {
|
|
29
|
+
var _getNodeViewOptions = getNodeViewOptions(),
|
|
30
|
+
portalProviderAPI = _getNodeViewOptions.portalProviderAPI,
|
|
31
|
+
eventDispatcher = _getNodeViewOptions.eventDispatcher,
|
|
32
|
+
getEditorContainerWidth = _getNodeViewOptions.getEditorContainerWidth,
|
|
33
|
+
getEditorFeatureFlags = _getNodeViewOptions.getEditorFeatureFlags,
|
|
34
|
+
dispatchAnalyticsEvent = _getNodeViewOptions.dispatchAnalyticsEvent,
|
|
35
|
+
pluginInjectionApi = _getNodeViewOptions.pluginInjectionApi,
|
|
36
|
+
isTableAlignmentEnabled = _getNodeViewOptions.isTableAlignmentEnabled;
|
|
37
|
+
return createTableView(node, view, getPos, portalProviderAPI, eventDispatcher, getEditorContainerWidth, getEditorFeatureFlags, dispatchAnalyticsEvent, pluginInjectionApi, isTableAlignmentEnabled);
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
return (0, _lazyNodeView.withLazyLoading)({
|
|
43
|
+
nodeName: 'table',
|
|
44
|
+
getNodeViewOptions: function getNodeViewOptions() {
|
|
45
|
+
return options;
|
|
46
|
+
},
|
|
47
|
+
loader: loader
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
var lazyTableCellView = exports.lazyTableCellView = function lazyTableCellView(options) {
|
|
51
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_lazy-node-views')) {
|
|
52
|
+
return function (node, view, getPos) {
|
|
53
|
+
return new _TableCell.default(node, view, getPos, options.eventDispatcher);
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
var loader = function loader() {
|
|
57
|
+
var result = Promise.resolve().then(function () {
|
|
58
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-plugin-table_nodeview" */
|
|
59
|
+
'./TableCell'));
|
|
60
|
+
}).then(function (_ref2) {
|
|
61
|
+
var TableCell = _ref2.default;
|
|
62
|
+
return function (node, view, getPos, decorations, getNodeViewOptions) {
|
|
63
|
+
var _getNodeViewOptions2 = getNodeViewOptions(),
|
|
64
|
+
eventDispatcher = _getNodeViewOptions2.eventDispatcher;
|
|
65
|
+
return new TableCell(node, view, getPos, eventDispatcher);
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
return result;
|
|
69
|
+
};
|
|
70
|
+
return (0, _lazyNodeView.withLazyLoading)({
|
|
71
|
+
nodeName: 'tableCell',
|
|
72
|
+
getNodeViewOptions: function getNodeViewOptions() {
|
|
73
|
+
return options;
|
|
74
|
+
},
|
|
75
|
+
loader: loader
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
var lazyTableHeaderView = exports.lazyTableHeaderView = function lazyTableHeaderView(options) {
|
|
79
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_lazy-node-views')) {
|
|
80
|
+
return function (node, view, getPos) {
|
|
81
|
+
return new _TableCell.default(node, view, getPos, options.eventDispatcher);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
var loader = function loader() {
|
|
85
|
+
var result = Promise.resolve().then(function () {
|
|
86
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-plugin-table-cell_nodeview" */
|
|
87
|
+
'./TableCell'));
|
|
88
|
+
}).then(function (_ref3) {
|
|
89
|
+
var TableCell = _ref3.default;
|
|
90
|
+
return function (node, view, getPos, decorations, getNodeViewOptions) {
|
|
91
|
+
var _getNodeViewOptions3 = getNodeViewOptions(),
|
|
92
|
+
eventDispatcher = _getNodeViewOptions3.eventDispatcher;
|
|
93
|
+
return new TableCell(node, view, getPos, eventDispatcher);
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
return result;
|
|
97
|
+
};
|
|
98
|
+
return (0, _lazyNodeView.withLazyLoading)({
|
|
99
|
+
nodeName: 'tableHeader',
|
|
100
|
+
getNodeViewOptions: function getNodeViewOptions() {
|
|
101
|
+
return options;
|
|
102
|
+
},
|
|
103
|
+
loader: loader
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
var lazyTableRowView = exports.lazyTableRowView = function lazyTableRowView(options) {
|
|
107
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_lazy-node-views')) {
|
|
108
|
+
return function (node, view, getPos) {
|
|
109
|
+
return new _TableRow.default(node, view, getPos, options.eventDispatcher);
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
var loader = function loader() {
|
|
113
|
+
var result = Promise.resolve().then(function () {
|
|
114
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "@atlaskit-internal_editor-plugin-table-row_nodeview" */
|
|
115
|
+
'./TableRow'));
|
|
116
|
+
}).then(function (_ref4) {
|
|
117
|
+
var TableRow = _ref4.default;
|
|
118
|
+
return function (node, view, getPos, decorations, getNodeViewOptions) {
|
|
119
|
+
var _getNodeViewOptions4 = getNodeViewOptions(),
|
|
120
|
+
eventDispatcher = _getNodeViewOptions4.eventDispatcher;
|
|
121
|
+
return new TableRow(node, view, getPos, eventDispatcher);
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
return result;
|
|
125
|
+
};
|
|
126
|
+
return (0, _lazyNodeView.withLazyLoading)({
|
|
127
|
+
nodeName: 'tableRow',
|
|
128
|
+
getNodeViewOptions: function getNodeViewOptions() {
|
|
129
|
+
return options;
|
|
130
|
+
},
|
|
131
|
+
loader: loader
|
|
132
|
+
});
|
|
133
|
+
};
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _react = _interopRequireDefault(require("react"));
|
|
10
11
|
var _adfSchema = require("@atlaskit/adf-schema");
|
|
@@ -34,6 +35,7 @@ var _stickyHeaders = require("./pm-plugins/sticky-headers");
|
|
|
34
35
|
var _tableAnalytics = require("./pm-plugins/table-analytics");
|
|
35
36
|
var _tableLocalId = require("./pm-plugins/table-local-id");
|
|
36
37
|
var _tableResizing = require("./pm-plugins/table-resizing");
|
|
38
|
+
var _colgroup = require("./pm-plugins/table-resizing/utils/colgroup");
|
|
37
39
|
var _tableSelectionKeymap = require("./pm-plugins/table-selection-keymap");
|
|
38
40
|
var _tableWidth = require("./pm-plugins/table-width");
|
|
39
41
|
var _viewModeSort = require("./pm-plugins/view-mode-sort");
|
|
@@ -54,6 +56,39 @@ var defaultGetEditorFeatureFlags = function defaultGetEditorFeatureFlags() {
|
|
|
54
56
|
|
|
55
57
|
// TODO: duplicating type instead of importing media plugin causing a circular dependency
|
|
56
58
|
|
|
59
|
+
// TODO: ED-23944 Move this override to `toDOM` function on table adf-schema nodespec
|
|
60
|
+
var tableNodeSpecWithFixedToDOM = function tableNodeSpecWithFixedToDOM(tableOptions) {
|
|
61
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_lazy-node-views')) {
|
|
62
|
+
return _adfSchema.table;
|
|
63
|
+
}
|
|
64
|
+
return _objectSpread(_objectSpread({}, _adfSchema.table), {}, {
|
|
65
|
+
toDOM: function toDOM(node) {
|
|
66
|
+
var attrs = {
|
|
67
|
+
'data-number-column': node.attrs.isNumberColumnEnabled,
|
|
68
|
+
'data-layout': node.attrs.layout,
|
|
69
|
+
'data-autosize': node.attrs.__autoSize,
|
|
70
|
+
'data-table-local-id': node.attrs.localId,
|
|
71
|
+
'data-table-width': node.attrs.width
|
|
72
|
+
};
|
|
73
|
+
var colgroup = '';
|
|
74
|
+
var _pluginConfig = (0, _createPluginConfig.pluginConfig)(tableOptions),
|
|
75
|
+
allowColumnResizing = _pluginConfig.allowColumnResizing;
|
|
76
|
+
if (allowColumnResizing) {
|
|
77
|
+
colgroup = ['colgroup', {}].concat((0, _toConsumableArray2.default)((0, _colgroup.generateColgroup)(node)));
|
|
78
|
+
}
|
|
79
|
+
return ['div', {
|
|
80
|
+
class: 'tableView-content-wrap'
|
|
81
|
+
}, ['div', {
|
|
82
|
+
class: 'pm-table-container'
|
|
83
|
+
}, ['div', {
|
|
84
|
+
class: 'pm-table-wrapper',
|
|
85
|
+
'data-number-column': node.attrs.isNumberColumnEnabled,
|
|
86
|
+
'data-layout': node.attrs.layout
|
|
87
|
+
}, ['table', attrs, colgroup, ['tbody', 0]]]]];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
|
|
57
92
|
/**
|
|
58
93
|
* Table plugin to be added to an `EditorPresetBuilder` and used with `ComposableEditor`
|
|
59
94
|
* from `@atlaskit/editor-core`.
|
|
@@ -137,7 +172,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
|
|
|
137
172
|
nodes: function nodes() {
|
|
138
173
|
return [{
|
|
139
174
|
name: 'table',
|
|
140
|
-
node:
|
|
175
|
+
node: tableNodeSpecWithFixedToDOM(options === null || options === void 0 ? void 0 : options.tableOptions)
|
|
141
176
|
}, {
|
|
142
177
|
name: 'tableHeader',
|
|
143
178
|
node: _adfSchema.tableHeader
|
|
@@ -180,8 +215,8 @@ var tablesPlugin = function tablesPlugin(_ref) {
|
|
|
180
215
|
isTableScalingEnabled = _ref5.isTableScalingEnabled,
|
|
181
216
|
isNewColumnResizingEnabled = _ref5.isNewColumnResizingEnabled,
|
|
182
217
|
isTableAlignmentEnabled = _ref5.isTableAlignmentEnabled;
|
|
183
|
-
var
|
|
184
|
-
allowColumnResizing =
|
|
218
|
+
var _pluginConfig2 = (0, _createPluginConfig.pluginConfig)(tableOptions),
|
|
219
|
+
allowColumnResizing = _pluginConfig2.allowColumnResizing;
|
|
185
220
|
return allowColumnResizing ? (0, _tableResizing.createPlugin)(dispatch, {
|
|
186
221
|
lastColumnResizable: !fullWidthEnabled
|
|
187
222
|
}, defaultGetEditorContainerWidth, getEditorFeatureFlags || defaultGetEditorFeatureFlags, editorAnalyticsAPI, isTableScalingEnabled || false, isNewColumnResizingEnabled, isTableAlignmentEnabled) : undefined;
|
|
@@ -362,7 +397,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
|
|
|
362
397
|
isCellMenuOpenByKeyboard = _ref19.isCellMenuOpenByKeyboard;
|
|
363
398
|
var allowControls = pluginConfig.allowControls;
|
|
364
399
|
var stickyHeader = stickyHeadersState ? (0, _stickyHeaders.findStickyHeaderForTable)(stickyHeadersState, tablePos) : undefined;
|
|
365
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, targetCellPosition && (tableRef || isCellMenuOpenByKeyboard && (0, _platformFeatureFlags.fg)('
|
|
400
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, targetCellPosition && (tableRef || isCellMenuOpenByKeyboard && (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) && !isResizing && options && options.allowContextualMenu && /*#__PURE__*/_react.default.createElement(_FloatingContextualButton.default, {
|
|
366
401
|
isNumberColumnEnabled: tableNode && tableNode.attrs.isNumberColumnEnabled,
|
|
367
402
|
editorView: editorView,
|
|
368
403
|
tableNode: tableNode,
|
|
@@ -82,7 +82,7 @@ function keymapPlugin(getEditorContainerWidth, editorAnalyticsAPI, dragAndDropEn
|
|
|
82
82
|
ariaNotify: ariaNotifyPlugin,
|
|
83
83
|
getIntl: getIntl
|
|
84
84
|
}), list);
|
|
85
|
-
if ((0, _platformFeatureFlags.fg)('
|
|
85
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
86
86
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.focusToContextMenuTrigger.common, (0, _commands2.setFocusToCellMenu)(), list);
|
|
87
87
|
}
|
|
88
88
|
return (0, _keymap.keymap)(list);
|
|
@@ -19,9 +19,7 @@ var _commands = require("../commands");
|
|
|
19
19
|
var _columnResize = require("../commands/column-resize");
|
|
20
20
|
var _misc = require("../commands/misc");
|
|
21
21
|
var _eventHandlers = require("../event-handlers");
|
|
22
|
-
var
|
|
23
|
-
var _TableCell = _interopRequireDefault(require("../nodeviews/TableCell"));
|
|
24
|
-
var _TableRow = _interopRequireDefault(require("../nodeviews/TableRow"));
|
|
22
|
+
var _lazyNodeViews = require("../nodeviews/lazy-node-views");
|
|
25
23
|
var _plugin = require("../pm-plugins/decorations/plugin");
|
|
26
24
|
var _transforms2 = require("../transforms");
|
|
27
25
|
var _types = require("../types");
|
|
@@ -258,18 +256,24 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatchAnalytic
|
|
|
258
256
|
return false;
|
|
259
257
|
},
|
|
260
258
|
nodeViews: {
|
|
261
|
-
table:
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
},
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
259
|
+
table: (0, _lazyNodeViews.lazyTableView)({
|
|
260
|
+
portalProviderAPI: portalProviderAPI,
|
|
261
|
+
eventDispatcher: eventDispatcher,
|
|
262
|
+
getEditorContainerWidth: getEditorContainerWidth,
|
|
263
|
+
getEditorFeatureFlags: getEditorFeatureFlags,
|
|
264
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
265
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
266
|
+
isTableAlignmentEnabled: isTableAlignmentEnabled
|
|
267
|
+
}),
|
|
268
|
+
tableRow: (0, _lazyNodeViews.lazyTableRowView)({
|
|
269
|
+
eventDispatcher: eventDispatcher
|
|
270
|
+
}),
|
|
271
|
+
tableCell: (0, _lazyNodeViews.lazyTableCellView)({
|
|
272
|
+
eventDispatcher: eventDispatcher
|
|
273
|
+
}),
|
|
274
|
+
tableHeader: (0, _lazyNodeViews.lazyTableHeaderView)({
|
|
275
|
+
eventDispatcher: eventDispatcher
|
|
276
|
+
})
|
|
273
277
|
},
|
|
274
278
|
handleDOMEvents: {
|
|
275
279
|
focus: _eventHandlers.handleFocus,
|
|
@@ -11,6 +11,7 @@ var _react2 = require("@emotion/react");
|
|
|
11
11
|
var _reactIntlNext = require("react-intl-next");
|
|
12
12
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
13
|
var _errorBoundary = require("@atlaskit/editor-common/error-boundary");
|
|
14
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
14
15
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
15
16
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
16
17
|
var _uiMenu = require("@atlaskit/editor-common/ui-menu");
|
|
@@ -56,7 +57,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
|
|
|
56
57
|
var targetCellRef;
|
|
57
58
|
targetCellRef = (0, _utils.findDomRefAtPos)(targetCellPosition, domAtPos);
|
|
58
59
|
(0, _react.useEffect)(function () {
|
|
59
|
-
if ((0, _platformFeatureFlags.
|
|
60
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
60
61
|
if (isCellMenuOpenByKeyboard && !isContextualMenuOpen) {
|
|
61
62
|
var state = editorView.state,
|
|
62
63
|
dispatch = editorView.dispatch;
|
|
@@ -81,12 +82,13 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
|
|
|
81
82
|
className: _types.TableCssClassName.CONTEXTUAL_MENU_BUTTON,
|
|
82
83
|
selected: isContextualMenuOpen,
|
|
83
84
|
title: labelCellOptions,
|
|
85
|
+
keymap: (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? _keymaps.focusToContextMenuTrigger : undefined,
|
|
84
86
|
onClick: handleClick,
|
|
85
87
|
iconBefore: (0, _react2.jsx)(_chevronDown.default, {
|
|
86
88
|
label: ""
|
|
87
89
|
}),
|
|
88
90
|
"aria-label": labelCellOptions,
|
|
89
|
-
"aria-expanded": (0, _platformFeatureFlags.
|
|
91
|
+
"aria-expanded": (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? isContextualMenuOpen : undefined
|
|
90
92
|
}));
|
|
91
93
|
var parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
|
|
92
94
|
if (stickyHeader && parentSticky && tableWrapper) {
|
|
@@ -94,7 +94,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
94
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
95
|
var selectedRowIndex;
|
|
96
96
|
var selectedColumnIndex;
|
|
97
|
-
if ((0, _platformFeatureFlags.fg)('
|
|
97
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
98
98
|
var selectedRowAndColumnFromPalette = (0, _uiColor.getSelectedRowAndColumnFromPalette)(_uiColor.cellBackgroundColorPalette, background, _consts.colorPalletteColumns);
|
|
99
99
|
selectedRowIndex = selectedRowAndColumnFromPalette.selectedRowIndex;
|
|
100
100
|
selectedColumnIndex = selectedRowAndColumnFromPalette.selectedColumnIndex;
|
|
@@ -122,7 +122,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
122
122
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
123
123
|
,
|
|
124
124
|
className: isDragAndDropEnabled ? _types.TableCssClassName.CONTEXTUAL_MENU_ICON_SMALL : _types.TableCssClassName.CONTEXTUAL_MENU_ICON
|
|
125
|
-
}), (0, _platformFeatureFlags.fg)('
|
|
125
|
+
}), (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? isSubmenuOpen && (0, _react2.jsx)("div", {
|
|
126
126
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
127
127
|
className: _types.TableCssClassName.CONTEXTUAL_SUBMENU,
|
|
128
128
|
ref: _this.handleSubMenuRef
|
|
@@ -167,7 +167,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
167
167
|
hexToPaletteColor: _editorPalette.hexToEditorBackgroundPaletteColor
|
|
168
168
|
}
|
|
169
169
|
}))),
|
|
170
|
-
'aria-expanded': (0, _platformFeatureFlags.fg)('
|
|
170
|
+
'aria-expanded': (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? isSubmenuOpen : undefined
|
|
171
171
|
};
|
|
172
172
|
}
|
|
173
173
|
});
|
|
@@ -469,7 +469,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
469
469
|
tableWithFixedColumnWidthsOption = _ref4$tableWithFixedC === void 0 ? false : _ref4$tableWithFixedC;
|
|
470
470
|
// context menu opened by keyboard and any item except 'background' activated
|
|
471
471
|
// or color has been chosen from color palette
|
|
472
|
-
if (isCellMenuOpenByKeyboard && (item.value.name !== 'background' || item.value.name === 'background' && _this.state.isSubmenuOpen) && (0, _platformFeatureFlags.fg)('
|
|
472
|
+
if (isCellMenuOpenByKeyboard && (item.value.name !== 'background' || item.value.name === 'background' && _this.state.isSubmenuOpen) && (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
473
473
|
var tr = state.tr;
|
|
474
474
|
tr.setMeta(_pluginKey.pluginKey, {
|
|
475
475
|
type: 'SET_CELL_MENU_OPEN',
|
|
@@ -536,7 +536,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
536
536
|
// 1st time when user chooses the background color item.
|
|
537
537
|
// 2nd when color has been chosen from color palette.
|
|
538
538
|
// here we are handling the 1st call relying on the isSubmenuOpen state value
|
|
539
|
-
if (isCellMenuOpenByKeyboard && !_this.state.isSubmenuOpen && (0, _platformFeatureFlags.fg)('
|
|
539
|
+
if (isCellMenuOpenByKeyboard && !_this.state.isSubmenuOpen && (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
540
540
|
_this.setState({
|
|
541
541
|
isSubmenuOpen: true
|
|
542
542
|
});
|
|
@@ -565,7 +565,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
565
565
|
dispatch = _this$props12$editorV.dispatch,
|
|
566
566
|
dom = _this$props12$editorV.dom,
|
|
567
567
|
isCellMenuOpenByKeyboard = _this$props12.isCellMenuOpenByKeyboard;
|
|
568
|
-
if ((0, _platformFeatureFlags.fg)('
|
|
568
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
569
569
|
if (payload) {
|
|
570
570
|
var event = payload.event;
|
|
571
571
|
if (event && event instanceof KeyboardEvent) {
|
|
@@ -657,7 +657,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
657
657
|
(0, _createClass2.default)(ContextualMenu, [{
|
|
658
658
|
key: "componentDidMount",
|
|
659
659
|
value: function componentDidMount() {
|
|
660
|
-
if ((0, _platformFeatureFlags.fg)('
|
|
660
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
661
661
|
// ArrowKeyNavigationProvider in DropdownMenu expects that menu handle will stay focused
|
|
662
662
|
// until user pressed ArrowDown.
|
|
663
663
|
// Behavior above fails the A11Y requirement about first item in menu should be focused immediately.
|
|
@@ -684,7 +684,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
684
684
|
isDragAndDropEnabled = _getPluginState13.isDragAndDropEnabled;
|
|
685
685
|
var items = isDragAndDropEnabled ? this.createNewContextMenuItems() : this.createOriginalContextMenuItems();
|
|
686
686
|
var isOpenAllowed = false;
|
|
687
|
-
if ((0, _platformFeatureFlags.fg)('
|
|
687
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu')) {
|
|
688
688
|
isOpenAllowed = isCellMenuOpenByKeyboard ? this.state.isOpenAllowed : isOpen;
|
|
689
689
|
} else {
|
|
690
690
|
isOpenAllowed = isOpen;
|
|
@@ -700,7 +700,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
700
700
|
,
|
|
701
701
|
arrowKeyNavigationProviderOptions: {
|
|
702
702
|
type: _uiMenu.ArrowKeyNavigationType.MENU,
|
|
703
|
-
disableArrowKeyNavigation: isCellMenuOpenByKeyboard && !this.state.isSubmenuOpen && (0, _platformFeatureFlags.fg)('
|
|
703
|
+
disableArrowKeyNavigation: isCellMenuOpenByKeyboard && !this.state.isSubmenuOpen && (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? false : true
|
|
704
704
|
},
|
|
705
705
|
items: items,
|
|
706
706
|
isOpen: isOpenAllowed,
|
|
@@ -710,7 +710,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
710
710
|
onMouseLeave: this.handleItemMouseLeave,
|
|
711
711
|
fitHeight: 188,
|
|
712
712
|
fitWidth: isDragAndDropEnabled ? _consts.contextualMenuDropdownWidthDnD : _consts.contextualMenuDropdownWidth,
|
|
713
|
-
shouldFocusFirstItem: (0, _platformFeatureFlags.fg)('
|
|
713
|
+
shouldFocusFirstItem: (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? function () {
|
|
714
714
|
return Boolean(isCellMenuOpenByKeyboard);
|
|
715
715
|
} : undefined,
|
|
716
716
|
boundariesElement: boundariesElement,
|
|
@@ -718,7 +718,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
|
|
|
718
718
|
section: isDragAndDropEnabled ? {
|
|
719
719
|
hasSeparator: true
|
|
720
720
|
} : undefined,
|
|
721
|
-
allowEnterDefaultBehavior: (0, _platformFeatureFlags.fg)('
|
|
721
|
+
allowEnterDefaultBehavior: (0, _platformFeatureFlags.fg)('platform_editor_a11y_table_context_menu') ? this.state.isSubmenuOpen : false
|
|
722
722
|
}));
|
|
723
723
|
}
|
|
724
724
|
}]);
|
|
@@ -6,6 +6,7 @@ import { getGuidelinesWithHighlights } from '@atlaskit/editor-common/guideline';
|
|
|
6
6
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
7
7
|
import { focusTableResizer, ToolTipContent } from '@atlaskit/editor-common/keymaps';
|
|
8
8
|
import { tableMessages as messages } from '@atlaskit/editor-common/messages';
|
|
9
|
+
import { logException } from '@atlaskit/editor-common/monitoring';
|
|
9
10
|
import { ResizerNext } from '@atlaskit/editor-common/resizer';
|
|
10
11
|
import { browser } from '@atlaskit/editor-common/utils';
|
|
11
12
|
import { chainCommands } from '@atlaskit/editor-prosemirror/commands';
|
|
@@ -110,7 +111,7 @@ export const TableResizer = ({
|
|
|
110
111
|
pluginInjectionApi,
|
|
111
112
|
isFullWidthModeEnabled
|
|
112
113
|
}) => {
|
|
113
|
-
var
|
|
114
|
+
var _editorView$state, _pluginInjectionApi$a2;
|
|
114
115
|
const currentGap = useRef(0);
|
|
115
116
|
// track resizing state - use ref over state to avoid re-render
|
|
116
117
|
const isResizing = useRef(false);
|
|
@@ -129,7 +130,29 @@ export const TableResizer = ({
|
|
|
129
130
|
const {
|
|
130
131
|
formatMessage
|
|
131
132
|
} = useIntl();
|
|
132
|
-
const
|
|
133
|
+
const currentSelection = (_editorView$state = editorView.state) === null || _editorView$state === void 0 ? void 0 : _editorView$state.selection;
|
|
134
|
+
const tableFromSelection = useMemo(() => {
|
|
135
|
+
return findTable(currentSelection);
|
|
136
|
+
}, [currentSelection]);
|
|
137
|
+
const tableFromSelectionPosition = tableFromSelection === null || tableFromSelection === void 0 ? void 0 : tableFromSelection.pos;
|
|
138
|
+
const isTableSelected = useMemo(() => {
|
|
139
|
+
// Avoid call getPos if there is no table in the current selection,
|
|
140
|
+
if (typeof tableFromSelectionPosition !== 'number') {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
let currentNodePosition;
|
|
144
|
+
try {
|
|
145
|
+
// The React Table and the ProseMirror can endup out-of-sync
|
|
146
|
+
// ProseMirror always assume the DOM is not managed by other framework
|
|
147
|
+
currentNodePosition = getPos();
|
|
148
|
+
} catch (e) {
|
|
149
|
+
logException(e, {
|
|
150
|
+
location: 'editor-plugin-table/table-resizer'
|
|
151
|
+
});
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return tableFromSelectionPosition === currentNodePosition;
|
|
155
|
+
}, [tableFromSelectionPosition, getPos]);
|
|
133
156
|
const resizerMinWidth = getResizerMinWidth(node);
|
|
134
157
|
const handleSize = getResizerHandleHeight(tableRef);
|
|
135
158
|
const {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import { findOverflowScrollParent } from '@atlaskit/editor-common/ui';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import { TableCssClassName as ClassName } from '../types';
|
|
4
5
|
export class TableStickyScrollbar {
|
|
5
6
|
constructor(wrapper, view) {
|
|
@@ -12,7 +13,13 @@ export class TableStickyScrollbar {
|
|
|
12
13
|
});
|
|
13
14
|
this.wrapper = wrapper;
|
|
14
15
|
this.view = view;
|
|
15
|
-
|
|
16
|
+
if (fg('platform_editor_lazy-node-views')) {
|
|
17
|
+
requestAnimationFrame(() => {
|
|
18
|
+
this.init();
|
|
19
|
+
});
|
|
20
|
+
} else {
|
|
21
|
+
this.init();
|
|
22
|
+
}
|
|
16
23
|
}
|
|
17
24
|
dispose() {
|
|
18
25
|
if (this.stickyScrollbarContainerElement) {
|