@atlaskit/editor-plugin-table 23.3.4 → 23.3.5

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/pm-plugins/commands/active-table-menu.js +19 -8
  3. package/dist/cjs/pm-plugins/commands/commands-with-analytics.js +9 -49
  4. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +1 -1
  5. package/dist/cjs/pm-plugins/handlers.js +1 -1
  6. package/dist/cjs/pm-plugins/main.js +4 -1
  7. package/dist/cjs/ui/ContentComponent.js +11 -1
  8. package/dist/cjs/ui/FloatingContextualButton/index.js +2 -2
  9. package/dist/cjs/ui/FloatingContextualMenu/CellMenuPopup.js +2 -2
  10. package/dist/cjs/ui/FloatingDragMenu/index.js +10 -38
  11. package/dist/cjs/ui/FloatingTableMenu/index.js +175 -0
  12. package/dist/cjs/ui/TableFloatingColumnControls/ColumnControls/index.js +43 -11
  13. package/dist/cjs/ui/TableFloatingControls/RowControls/DragControls.js +57 -26
  14. package/dist/cjs/ui/TableMenu/cell/items/MergeCellsItem.js +1 -1
  15. package/dist/cjs/ui/TableMenu/cell/items/SplitCellItem.js +1 -1
  16. package/dist/cjs/ui/TableMenu/cell/items/VerticalAlignDropdownItem.js +1 -1
  17. package/dist/cjs/ui/TableMenu/column/items/AddColumnLeftItem.js +1 -1
  18. package/dist/cjs/ui/TableMenu/column/items/AddColumnRightItem.js +1 -1
  19. package/dist/cjs/ui/TableMenu/column/items/DeleteColumnItem.js +1 -1
  20. package/dist/cjs/ui/TableMenu/column/items/DistributeColumnsItem.js +1 -1
  21. package/dist/cjs/ui/TableMenu/column/items/MoveColumnLeftItem.js +1 -1
  22. package/dist/cjs/ui/TableMenu/column/items/MoveColumnRightItem.js +1 -1
  23. package/dist/cjs/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
  24. package/dist/cjs/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
  25. package/dist/cjs/ui/TableMenu/row/items/AddRowAboveItem.js +1 -1
  26. package/dist/cjs/ui/TableMenu/row/items/AddRowBelowItem.js +1 -1
  27. package/dist/cjs/ui/TableMenu/row/items/DeleteRowItem.js +1 -1
  28. package/dist/cjs/ui/TableMenu/row/items/MoveRowDownItem.js +1 -1
  29. package/dist/cjs/ui/TableMenu/row/items/MoveRowUpItem.js +1 -1
  30. package/dist/cjs/ui/TableMenu/shared/TableMenu.js +8 -8
  31. package/dist/cjs/ui/TableMenu/shared/consts.js +1 -1
  32. package/dist/cjs/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
  33. package/dist/cjs/ui/TableMenu/shared/items/ClearCellsItem.js +1 -1
  34. package/dist/es2019/pm-plugins/commands/active-table-menu.js +19 -8
  35. package/dist/es2019/pm-plugins/commands/commands-with-analytics.js +0 -39
  36. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +1 -1
  37. package/dist/es2019/pm-plugins/handlers.js +1 -1
  38. package/dist/es2019/pm-plugins/main.js +3 -0
  39. package/dist/es2019/ui/ContentComponent.js +11 -1
  40. package/dist/es2019/ui/FloatingContextualButton/index.js +2 -2
  41. package/dist/es2019/ui/FloatingContextualMenu/CellMenuPopup.js +2 -2
  42. package/dist/es2019/ui/FloatingDragMenu/index.js +11 -40
  43. package/dist/es2019/ui/FloatingTableMenu/index.js +165 -0
  44. package/dist/es2019/ui/TableFloatingColumnControls/ColumnControls/index.js +41 -7
  45. package/dist/es2019/ui/TableFloatingControls/RowControls/DragControls.js +40 -7
  46. package/dist/es2019/ui/TableMenu/cell/items/MergeCellsItem.js +1 -1
  47. package/dist/es2019/ui/TableMenu/cell/items/SplitCellItem.js +1 -1
  48. package/dist/es2019/ui/TableMenu/cell/items/VerticalAlignDropdownItem.js +1 -1
  49. package/dist/es2019/ui/TableMenu/column/items/AddColumnLeftItem.js +1 -1
  50. package/dist/es2019/ui/TableMenu/column/items/AddColumnRightItem.js +1 -1
  51. package/dist/es2019/ui/TableMenu/column/items/DeleteColumnItem.js +1 -1
  52. package/dist/es2019/ui/TableMenu/column/items/DistributeColumnsItem.js +1 -1
  53. package/dist/es2019/ui/TableMenu/column/items/MoveColumnLeftItem.js +1 -1
  54. package/dist/es2019/ui/TableMenu/column/items/MoveColumnRightItem.js +1 -1
  55. package/dist/es2019/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
  56. package/dist/es2019/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
  57. package/dist/es2019/ui/TableMenu/row/items/AddRowAboveItem.js +1 -1
  58. package/dist/es2019/ui/TableMenu/row/items/AddRowBelowItem.js +1 -1
  59. package/dist/es2019/ui/TableMenu/row/items/DeleteRowItem.js +1 -1
  60. package/dist/es2019/ui/TableMenu/row/items/MoveRowDownItem.js +1 -1
  61. package/dist/es2019/ui/TableMenu/row/items/MoveRowUpItem.js +1 -1
  62. package/dist/es2019/ui/TableMenu/shared/TableMenu.js +8 -8
  63. package/dist/es2019/ui/TableMenu/shared/consts.js +1 -1
  64. package/dist/es2019/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
  65. package/dist/es2019/ui/TableMenu/shared/items/ClearCellsItem.js +1 -1
  66. package/dist/esm/pm-plugins/commands/active-table-menu.js +19 -8
  67. package/dist/esm/pm-plugins/commands/commands-with-analytics.js +8 -48
  68. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +1 -1
  69. package/dist/esm/pm-plugins/handlers.js +1 -1
  70. package/dist/esm/pm-plugins/main.js +4 -1
  71. package/dist/esm/ui/ContentComponent.js +11 -1
  72. package/dist/esm/ui/FloatingContextualButton/index.js +2 -2
  73. package/dist/esm/ui/FloatingContextualMenu/CellMenuPopup.js +2 -2
  74. package/dist/esm/ui/FloatingDragMenu/index.js +11 -39
  75. package/dist/esm/ui/FloatingTableMenu/index.js +167 -0
  76. package/dist/esm/ui/TableFloatingColumnControls/ColumnControls/index.js +42 -10
  77. package/dist/esm/ui/TableFloatingControls/RowControls/DragControls.js +56 -25
  78. package/dist/esm/ui/TableMenu/cell/items/MergeCellsItem.js +1 -1
  79. package/dist/esm/ui/TableMenu/cell/items/SplitCellItem.js +1 -1
  80. package/dist/esm/ui/TableMenu/cell/items/VerticalAlignDropdownItem.js +1 -1
  81. package/dist/esm/ui/TableMenu/column/items/AddColumnLeftItem.js +1 -1
  82. package/dist/esm/ui/TableMenu/column/items/AddColumnRightItem.js +1 -1
  83. package/dist/esm/ui/TableMenu/column/items/DeleteColumnItem.js +1 -1
  84. package/dist/esm/ui/TableMenu/column/items/DistributeColumnsItem.js +1 -1
  85. package/dist/esm/ui/TableMenu/column/items/MoveColumnLeftItem.js +1 -1
  86. package/dist/esm/ui/TableMenu/column/items/MoveColumnRightItem.js +1 -1
  87. package/dist/esm/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
  88. package/dist/esm/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
  89. package/dist/esm/ui/TableMenu/row/items/AddRowAboveItem.js +1 -1
  90. package/dist/esm/ui/TableMenu/row/items/AddRowBelowItem.js +1 -1
  91. package/dist/esm/ui/TableMenu/row/items/DeleteRowItem.js +1 -1
  92. package/dist/esm/ui/TableMenu/row/items/MoveRowDownItem.js +1 -1
  93. package/dist/esm/ui/TableMenu/row/items/MoveRowUpItem.js +1 -1
  94. package/dist/esm/ui/TableMenu/shared/TableMenu.js +8 -8
  95. package/dist/esm/ui/TableMenu/shared/consts.js +1 -1
  96. package/dist/esm/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
  97. package/dist/esm/ui/TableMenu/shared/items/ClearCellsItem.js +1 -1
  98. package/dist/types/pm-plugins/commands/active-table-menu.d.ts +3 -3
  99. package/dist/types/pm-plugins/commands/commands-with-analytics.d.ts +1 -3
  100. package/dist/types/ui/FloatingTableMenu/index.d.ts +23 -0
  101. package/dist/types/ui/TableMenu/shared/consts.d.ts +1 -1
  102. package/dist/types-ts4.5/pm-plugins/commands/active-table-menu.d.ts +3 -3
  103. package/dist/types-ts4.5/pm-plugins/commands/commands-with-analytics.d.ts +1 -3
  104. package/dist/types-ts4.5/ui/FloatingTableMenu/index.d.ts +23 -0
  105. package/dist/types-ts4.5/ui/TableMenu/shared/consts.d.ts +1 -1
  106. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 23.3.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`473e6619e9af8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/473e6619e9af8) -
8
+ Fix shift selection + state update in table menu
9
+
3
10
  ## 23.3.4
4
11
 
5
12
  ### Patch Changes
@@ -5,17 +5,26 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.toggleActiveTableMenu = exports.closeActiveTableMenu = void 0;
7
7
  var _pluginKey = require("../plugin-key");
8
- var closeActiveTableMenu = exports.closeActiveTableMenu = function closeActiveTableMenu() {
8
+ var applyMenuUserIntent = function applyMenuUserIntent(tr, api, nextActiveTableMenu) {
9
+ var _api$userIntent;
10
+ var isRowOrColumnMenuOpen = nextActiveTableMenu.type === 'row' || nextActiveTableMenu.type === 'column';
11
+ api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 || _api$userIntent.commands.setCurrentUserIntent(isRowOrColumnMenuOpen ? 'tableDragMenuPopupOpen' : 'default')({
12
+ tr: tr
13
+ });
14
+ };
15
+ var closeActiveTableMenu = exports.closeActiveTableMenu = function closeActiveTableMenu(api) {
9
16
  return function (_ref) {
10
17
  var tr = _ref.tr;
18
+ var nextActiveTableMenu = {
19
+ type: 'none'
20
+ };
11
21
  tr.setMeta(_pluginKey.pluginKey, {
12
22
  type: 'SET_ACTIVE_TABLE_MENU',
13
23
  data: {
14
- activeTableMenu: {
15
- type: 'none'
16
- }
24
+ activeTableMenu: nextActiveTableMenu
17
25
  }
18
26
  });
27
+ applyMenuUserIntent(tr, api, nextActiveTableMenu);
19
28
  if (!tr.docChanged) {
20
29
  tr.setMeta('addToHistory', false);
21
30
  }
@@ -31,17 +40,19 @@ var isSameActiveTableMenu = function isSameActiveTableMenu(current, next) {
31
40
  }
32
41
  return true;
33
42
  };
34
- var toggleActiveTableMenu = exports.toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu, currentActiveTableMenu) {
43
+ var toggleActiveTableMenu = exports.toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu, currentActiveTableMenu, api) {
35
44
  return function (_ref2) {
36
45
  var tr = _ref2.tr;
46
+ var nextActiveTableMenu = isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? {
47
+ type: 'none'
48
+ } : activeTableMenu;
37
49
  tr.setMeta(_pluginKey.pluginKey, {
38
50
  type: 'SET_ACTIVE_TABLE_MENU',
39
51
  data: {
40
- activeTableMenu: isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? {
41
- type: 'none'
42
- } : activeTableMenu
52
+ activeTableMenu: nextActiveTableMenu
43
53
  }
44
54
  });
55
+ applyMenuUserIntent(tr, api, nextActiveTableMenu);
45
56
  tr.setMeta('addToHistory', false);
46
57
  return tr;
47
58
  };
@@ -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.wrapTableInExpandWithAnalytics = exports.toggleNumberColumnWithAnalytics = exports.toggleHeaderRowWithAnalytics = exports.toggleHeaderColumnWithAnalytics = exports.toggleFixedColumnWidthsOptionAnalytics = exports.toggleActiveTableMenuWithAnalytics = exports.splitCellWithAnalytics = exports.sortColumnWithAnalytics = exports.setTableAlignmentWithTableContentWithPosWithAnalytics = exports.setTableAlignmentWithAnalytics = exports.setColorWithAnalytics = exports.mergeCellsWithAnalytics = exports.insertRowWithAnalytics = exports.insertColumnWithAnalytics = exports.emptyMultipleCellsWithAnalytics = exports.distributeColumnsWidthsWithAnalytics = exports.deleteTableWithAnalytics = exports.deleteTableIfSelectedWithAnalytics = exports.deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteRowsWithAnalytics = exports.deleteColumnsWithAnalytics = exports.changeColumnWidthByStepWithAnalytics = exports.addRowAroundSelection = void 0;
7
+ exports.wrapTableInExpandWithAnalytics = exports.toggleNumberColumnWithAnalytics = exports.toggleHeaderRowWithAnalytics = exports.toggleHeaderColumnWithAnalytics = exports.toggleFixedColumnWidthsOptionAnalytics = exports.splitCellWithAnalytics = exports.sortColumnWithAnalytics = exports.setTableAlignmentWithTableContentWithPosWithAnalytics = exports.setTableAlignmentWithAnalytics = exports.setColorWithAnalytics = exports.mergeCellsWithAnalytics = exports.insertRowWithAnalytics = exports.insertColumnWithAnalytics = exports.emptyMultipleCellsWithAnalytics = exports.distributeColumnsWidthsWithAnalytics = exports.deleteTableWithAnalytics = exports.deleteTableIfSelectedWithAnalytics = exports.deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteRowsWithAnalytics = exports.deleteColumnsWithAnalytics = exports.changeColumnWidthByStepWithAnalytics = exports.addRowAroundSelection = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _adfSchema = require("@atlaskit/adf-schema");
10
10
  var _analytics = require("@atlaskit/editor-common/analytics");
@@ -18,7 +18,6 @@ var _deleteRows = require("../transforms/delete-rows");
18
18
  var _merge = require("../transforms/merge");
19
19
  var _analytics2 = require("../utils/analytics");
20
20
  var _nodes = require("../utils/nodes");
21
- var _activeTableMenu = require("./active-table-menu");
22
21
  var _clear = require("./clear");
23
22
  var _collapse = require("./collapse");
24
23
  var _columnResize = require("./column-resize");
@@ -31,45 +30,6 @@ var _splitCell = require("./split-cell");
31
30
  var _toggle = require("./toggle");
32
31
  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; }
33
32
  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; }
34
- var toggleActiveTableMenuWithAnalytics = exports.toggleActiveTableMenuWithAnalytics = function toggleActiveTableMenuWithAnalytics(editorAnalyticsAPI) {
35
- return function (direction, index) {
36
- var trigger = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'mouse';
37
- return (0, _analytics2.withEditorAnalyticsAPI)(function (state) {
38
- var _getPluginState = (0, _pluginFactory.getPluginState)(state),
39
- previousActiveTableMenu = _getPluginState.activeTableMenu;
40
- var isSameActiveMenu = (previousActiveTableMenu === null || previousActiveTableMenu === void 0 ? void 0 : previousActiveTableMenu.type) === direction && previousActiveTableMenu.index === index;
41
- if (isSameActiveMenu) {
42
- return undefined;
43
- }
44
- return {
45
- action: _analytics.TABLE_ACTION.DRAG_MENU_OPENED,
46
- actionSubject: _analytics.ACTION_SUBJECT.TABLE,
47
- actionSubjectId: null,
48
- eventType: _analytics.EVENT_TYPE.TRACK,
49
- attributes: {
50
- inputMethod: trigger === 'keyboard' ? _analytics.INPUT_METHOD.KEYBOARD : _analytics.INPUT_METHOD.MOUSE,
51
- direction: direction
52
- }
53
- };
54
- })(editorAnalyticsAPI)(function (state, dispatch) {
55
- if (dispatch) {
56
- var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
57
- currentActiveTableMenu = _getPluginState2.activeTableMenu;
58
- var newTr = (0, _activeTableMenu.toggleActiveTableMenu)({
59
- type: direction,
60
- index: index,
61
- openedBy: trigger
62
- }, currentActiveTableMenu)({
63
- tr: state.tr
64
- });
65
- if (newTr) {
66
- dispatch(newTr);
67
- }
68
- }
69
- return true;
70
- });
71
- };
72
- };
73
33
  var emptyMultipleCellsWithAnalytics = exports.emptyMultipleCellsWithAnalytics = function emptyMultipleCellsWithAnalytics(editorAnalyticsAPI) {
74
34
  return function (inputMethod, targetCellPosition) {
75
35
  return (0, _analytics2.withEditorAnalyticsAPI)(function (_ref) {
@@ -234,8 +194,8 @@ var changeColumnWidthByStepWithAnalytics = exports.changeColumnWidthByStepWithAn
234
194
  table = _getSelectedTableInfo2.table,
235
195
  totalRowCount = _getSelectedTableInfo2.totalRowCount,
236
196
  totalColumnCount = _getSelectedTableInfo2.totalColumnCount;
237
- var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
238
- colIndex = _getPluginState3.hoveredCell.colIndex;
197
+ var _getPluginState = (0, _pluginFactory.getPluginState)(state),
198
+ colIndex = _getPluginState.hoveredCell.colIndex;
239
199
  return {
240
200
  action: _analytics.TABLE_ACTION.COLUMN_RESIZED,
241
201
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -355,8 +315,8 @@ var deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteSelected
355
315
  }
356
316
  var selectionType = (0, _misc.getTableSelectionType)(selection);
357
317
  if (selectionType === 'row') {
358
- var _getPluginState4 = (0, _pluginFactory.getPluginState)(state),
359
- pluginConfig = _getPluginState4.pluginConfig;
318
+ var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
319
+ pluginConfig = _getPluginState2.pluginConfig;
360
320
  var isHeaderRowRequired = pluginConfig.isHeaderRowRequired || false;
361
321
  return deleteRowsWithAnalytics(editorAnalyticsAPI)(_analytics.INPUT_METHOD.SHORTCUT, rect, isHeaderRowRequired)(state, dispatch);
362
322
  } else if (selectionType === 'column') {
@@ -400,8 +360,8 @@ var toggleHeaderRowWithAnalytics = exports.toggleHeaderRowWithAnalytics = functi
400
360
  var _getSelectedTableInfo7 = (0, _analytics2.getSelectedTableInfo)(state.selection),
401
361
  totalRowCount = _getSelectedTableInfo7.totalRowCount,
402
362
  totalColumnCount = _getSelectedTableInfo7.totalColumnCount;
403
- var _getPluginState5 = (0, _pluginFactory.getPluginState)(state),
404
- isHeaderRowEnabled = _getPluginState5.isHeaderRowEnabled;
363
+ var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
364
+ isHeaderRowEnabled = _getPluginState3.isHeaderRowEnabled;
405
365
  return {
406
366
  action: _analytics.TABLE_ACTION.TOGGLED_HEADER_ROW,
407
367
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -420,8 +380,8 @@ var toggleHeaderColumnWithAnalytics = exports.toggleHeaderColumnWithAnalytics =
420
380
  var _getSelectedTableInfo8 = (0, _analytics2.getSelectedTableInfo)(state.selection),
421
381
  totalRowCount = _getSelectedTableInfo8.totalRowCount,
422
382
  totalColumnCount = _getSelectedTableInfo8.totalColumnCount;
423
- var _getPluginState6 = (0, _pluginFactory.getPluginState)(state),
424
- isHeaderColumnEnabled = _getPluginState6.isHeaderColumnEnabled;
383
+ var _getPluginState4 = (0, _pluginFactory.getPluginState)(state),
384
+ isHeaderColumnEnabled = _getPluginState4.isHeaderColumnEnabled;
425
385
  return {
426
386
  action: _analytics.TABLE_ACTION.TOGGLED_HEADER_COLUMN,
427
387
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -96,7 +96,7 @@ var destroyFn = function destroyFn(editorView, editorAnalyticsAPI, isTableScalin
96
96
  api === null || api === void 0 || api.core.actions.execute(function (_ref7) {
97
97
  var _api$userIntent;
98
98
  var tr = _ref7.tr;
99
- (0, _activeTableMenu.closeActiveTableMenu)()({
99
+ (0, _activeTableMenu.closeActiveTableMenu)(api)({
100
100
  tr: tr
101
101
  });
102
102
  api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 || _api$userIntent.commands.setCurrentUserIntent('dragging')({
@@ -53,7 +53,7 @@ var updateTargetCellPosition = function updateTargetCellPosition(_ref2) {
53
53
  }
54
54
  var hasTargetCellChanged = pluginState.targetCellPosition !== _targetCellPosition;
55
55
  var hasActiveTableMenu = pluginState.activeTableMenu != null && pluginState.activeTableMenu.type !== 'none';
56
- var shouldCloseMenu = hasActiveTableMenu && (!tableNode || hasTargetCellChanged || !(tr.selection instanceof _cellSelection.CellSelection));
56
+ var shouldCloseMenu = hasActiveTableMenu && tr.selectionSet && (!tableNode || hasTargetCellChanged || !(tr.selection instanceof _cellSelection.CellSelection));
57
57
  if (!hasTargetCellChanged && !shouldCloseMenu) {
58
58
  return pluginState;
59
59
  }
@@ -50,7 +50,10 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatchAnalytic
50
50
  wasFullWidthModeEnabled: previousFullWidthModeEnabled,
51
51
  isHeaderRowEnabled: !!pluginConfig.allowHeaderRow,
52
52
  isHeaderColumnEnabled: false,
53
- isTableScalingEnabled: isTableScalingEnabled
53
+ isTableScalingEnabled: isTableScalingEnabled,
54
+ activeTableMenu: {
55
+ type: 'none'
56
+ }
54
57
  }, _defaultTableSelection.defaultHoveredCell), _defaultTableSelection.defaultTableSelection), {}, {
55
58
  getIntl: getIntl
56
59
  }));
@@ -12,11 +12,13 @@ var _getDomRefFromSelection = require("@atlaskit/editor-common/get-dom-ref-from-
12
12
  var _hooks = require("@atlaskit/editor-common/hooks");
13
13
  var _resizer = require("@atlaskit/editor-common/resizer");
14
14
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
15
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
15
16
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
16
17
  var _FloatingContextualButton = _interopRequireDefault(require("./FloatingContextualButton"));
17
18
  var _FloatingContextualMenu = _interopRequireDefault(require("./FloatingContextualMenu"));
18
19
  var _FloatingDragMenu = _interopRequireDefault(require("./FloatingDragMenu"));
19
20
  var _FloatingInsertButton = _interopRequireDefault(require("./FloatingInsertButton"));
21
+ var _FloatingTableMenu = _interopRequireDefault(require("./FloatingTableMenu"));
20
22
  var _FloatingToolbarLabel = require("./FloatingToolbarLabel/FloatingToolbarLabel");
21
23
  var _globalStyles = require("./global-styles");
22
24
  var _SizeSelector = require("./SizeSelector");
@@ -143,7 +145,15 @@ var ContentComponentInternal = function ContentComponentInternal(_ref) {
143
145
  isCommentEditor: options === null || options === void 0 ? void 0 : options.isCommentEditor,
144
146
  api: api,
145
147
  isDragMenuOpen: isDragMenuOpen
146
- }), /*#__PURE__*/_react.default.createElement(_FloatingDragMenu.default, {
148
+ }), (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? /*#__PURE__*/_react.default.createElement(_FloatingTableMenu.default, {
149
+ api: api,
150
+ boundariesElement: popupsBoundariesElement,
151
+ editorView: editorView,
152
+ mountPoint: popupsMountPoint,
153
+ stickyHeaders: stickyHeader,
154
+ tableWrapper: tableWrapperTarget,
155
+ targetCellPosition: targetCellPosition
156
+ }) : /*#__PURE__*/_react.default.createElement(_FloatingDragMenu.default, {
147
157
  editorView: editorView,
148
158
  mountPoint: popupsMountPoint,
149
159
  boundariesElement: popupsBoundariesElement,
@@ -78,7 +78,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
78
78
  (0, _commands.toggleActiveTableMenu)({
79
79
  type: 'cell',
80
80
  openedBy: 'mouse'
81
- }, currentActiveTableMenu)({
81
+ }, currentActiveTableMenu, api)({
82
82
  tr: tr
83
83
  });
84
84
  return tr;
@@ -113,7 +113,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
113
113
  (0, _commands.toggleActiveTableMenu)({
114
114
  type: 'cell',
115
115
  openedBy: 'keyboard'
116
- }, currentActiveTableMenu)({
116
+ }, currentActiveTableMenu, api)({
117
117
  tr: tr
118
118
  });
119
119
  return tr;
@@ -43,11 +43,11 @@ var CellMenuPopup = exports.CellMenuPopup = function CellMenuPopup(_ref) {
43
43
  var closeCellMenu = (0, _react.useCallback)(function () {
44
44
  var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
45
45
  isCellMenuOpenByKeyboard = _getPluginState.isCellMenuOpenByKeyboard;
46
- api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)());
46
+ api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)(api));
47
47
  if (isCellMenuOpenByKeyboard) {
48
48
  (0, _commands.setFocusToCellMenu)(false)(editorView.state, editorView.dispatch);
49
49
  }
50
- }, [api === null || api === void 0 ? void 0 : api.core.actions, editorView]);
50
+ }, [api, editorView]);
51
51
  var isEventInsideCellMenu = (0, _react.useCallback)(function (event) {
52
52
  var _popupContentRef$curr;
53
53
  var target = event.target;
@@ -6,21 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _hooks = require("@atlaskit/editor-common/hooks");
10
9
  var _ui = require("@atlaskit/editor-common/ui");
11
- var _userIntent = require("@atlaskit/editor-common/user-intent");
12
10
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
13
11
  var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
14
12
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
- var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
16
13
  var _types = require("../../types");
17
14
  var _consts = require("../consts");
18
- var _keys = require("../TableMenu/column/keys");
19
- var _keys2 = require("../TableMenu/row/keys");
20
- var _consts2 = require("../TableMenu/shared/consts");
21
- var _TableMenu = require("../TableMenu/shared/TableMenu");
22
15
  var _DragMenu = _interopRequireDefault(require("./DragMenu"));
23
- var TABLE_MENU_OFFSET = _consts.dragTableInsertColumnButtonSize + 4;
24
16
  var FloatingDragMenu = function FloatingDragMenu(_ref) {
25
17
  var _getEditorFeatureFlag;
26
18
  var mountPoint = _ref.mountPoint,
@@ -42,23 +34,11 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
42
34
  api = _ref.api,
43
35
  isCommentEditor = _ref.isCommentEditor,
44
36
  tableWrapper = _ref.tableWrapper;
45
- var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['table'], function (states) {
46
- var _states$tableState;
47
- return {
48
- activeTableMenu: (_states$tableState = states.tableState) === null || _states$tableState === void 0 ? void 0 : _states$tableState.activeTableMenu
49
- };
50
- }),
51
- activeTableMenu = _useSharedPluginState.activeTableMenu;
52
- var isActiveTableMenuDragMenu = (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'row' || (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'column';
53
- var hasActiveTableMenuState = activeTableMenu !== undefined;
54
- var isDragMenuOpen = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) && hasActiveTableMenuState ? isActiveTableMenuDragMenu : isOpen;
55
- var dragMenuDirection = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) && hasActiveTableMenuState ? isActiveTableMenuDragMenu ? activeTableMenu.type : undefined : direction;
56
- var dragMenuIndex = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) && hasActiveTableMenuState ? isActiveTableMenuDragMenu ? activeTableMenu.index : undefined : index;
57
- if (!isDragMenuOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
37
+ if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
58
38
  return null;
59
39
  }
60
40
  var inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(_types.TableCssClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW)) && (0, _platformFeatureFlags.fg)('platform_editor_table_sticky_header_patch_7');
61
- var targetHandleRef = dragMenuDirection === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
41
+ var targetHandleRef = direction === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
62
42
  if (!targetHandleRef || !(editorView.state.selection instanceof _cellSelection.CellSelection)) {
63
43
  return null;
64
44
  }
@@ -67,8 +47,8 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
67
47
  tableWithFixedColumnWidthsOption = _ref2$tableWithFixedC === void 0 ? false : _ref2$tableWithFixedC;
68
48
  var shouldUseIncreasedScalingPercent = isTableScalingEnabled && (tableWithFixedColumnWidthsOption || isCommentEditor);
69
49
  return /*#__PURE__*/_react.default.createElement(_ui.Popup, {
70
- alignX: dragMenuDirection === 'row' ? 'right' : undefined,
71
- alignY: dragMenuDirection === 'row' ? 'start' : undefined
50
+ alignX: direction === 'row' ? 'right' : undefined,
51
+ alignY: direction === 'row' ? 'start' : undefined
72
52
  // Ignored via go/ees005
73
53
  // eslint-disable-next-line @atlaskit/editor/no-as-casting
74
54
  ,
@@ -76,7 +56,7 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
76
56
  mountTo: mountPoint,
77
57
  boundariesElement: boundariesElement,
78
58
  scrollableElement: scrollableElement,
79
- fitWidth: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? _consts2.TABLE_MENU_WIDTH : _consts.dragMenuDropdownWidth,
59
+ fitWidth: _consts.dragMenuDropdownWidth,
80
60
  fitHeight: _consts.tablePopupMenuFitHeight
81
61
  // z-index value below is to ensure that this menu is above other floating menu
82
62
  // in table, but below floating dialogs like typeaheads, pickers, etc.
@@ -84,22 +64,14 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
84
64
  ,
85
65
  zIndex: inStickyMode ? _editorSharedStyles.akEditorFloatingDialogZIndex : _editorSharedStyles.akEditorFloatingOverlapPanelZIndex,
86
66
  forcePlacement: true,
87
- preventOverflow: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? dragMenuDirection === 'row' : undefined,
88
- offset: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? [TABLE_MENU_OFFSET, 0] : direction === 'row' ? [-9, 0] : [0, -7],
67
+ offset: direction === 'row' ? [-9, 0] : [0, -7],
89
68
  stick: true
90
- }, (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? /*#__PURE__*/_react.default.createElement(_userIntent.UserIntentPopupWrapper, {
91
- api: api,
92
- userIntent: "tableDragMenuPopupOpen"
93
- }, /*#__PURE__*/_react.default.createElement(_TableMenu.TableMenu, {
94
- api: api,
95
- editorView: editorView,
96
- surface: dragMenuDirection === 'row' ? _keys2.ROW_MENU : _keys.COLUMN_MENU
97
- })) : /*#__PURE__*/_react.default.createElement(_DragMenu.default, {
69
+ }, /*#__PURE__*/_react.default.createElement(_DragMenu.default, {
98
70
  editorView: editorView,
99
- isOpen: isDragMenuOpen,
71
+ isOpen: isOpen,
100
72
  tableNode: tableNode,
101
- direction: dragMenuDirection,
102
- index: dragMenuIndex,
73
+ direction: direction,
74
+ index: index,
103
75
  target: targetHandleRef || undefined,
104
76
  targetCellPosition: targetCellPosition,
105
77
  getEditorContainerWidth: getEditorContainerWidth,
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _hooks = require("@atlaskit/editor-common/hooks");
10
+ var _ui = require("@atlaskit/editor-common/ui");
11
+ var _uiReact = require("@atlaskit/editor-common/ui-react");
12
+ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
13
+ var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
14
+ var _toolbarKeyboardNavigationProvider = require("@atlaskit/editor-toolbar/toolbar-keyboard-navigation-provider");
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
+ var _commands = require("../../pm-plugins/commands");
17
+ var _types = require("../../types");
18
+ var _consts = require("../consts");
19
+ var _keys = require("../TableMenu/column/keys");
20
+ var _keys2 = require("../TableMenu/row/keys");
21
+ var _consts2 = require("../TableMenu/shared/consts");
22
+ var _TableMenu = require("../TableMenu/shared/TableMenu");
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
+ var PopupWithListeners = (0, _uiReact.withReactEditorViewOuterListeners)(_ui.Popup);
25
+
26
+ // Defer drag-handle clicks to the drag handle's own toggle/select handlers — those own
27
+ // the open/switch/close semantics for moving between rows/columns.
28
+ var DRAG_HANDLE_CONTROLS_SELECTOR = ".".concat(_types.TableCssClassName.DRAG_ROW_CONTROLS, ", .").concat(_types.TableCssClassName.DRAG_COLUMN_CONTROLS);
29
+ var NESTED_DROPDOWN_SELECTOR = '[data-toolbar-nested-dropdown-menu]';
30
+
31
+ // Marks the menu subtree that ToolbarKeyboardNavigationProvider scopes its
32
+ // keyboard handling to. The provider only reacts to events whose target sits
33
+ // inside this selector.
34
+ var TABLE_MENU_NAV_SELECTOR = '[data-table-drag-menu-nav="true"]';
35
+ var TABLE_MENU_OFFSET = _consts.dragTableInsertColumnButtonSize + 4;
36
+ var POPUP_OFFSET = [TABLE_MENU_OFFSET, 0];
37
+
38
+ /**
39
+ * Row and column menu for table.
40
+ */
41
+ var FloatingTableMenu = function FloatingTableMenu(_ref) {
42
+ var api = _ref.api,
43
+ boundariesElement = _ref.boundariesElement,
44
+ editorView = _ref.editorView,
45
+ mountPoint = _ref.mountPoint,
46
+ scrollableElement = _ref.scrollableElement,
47
+ stickyHeaders = _ref.stickyHeaders,
48
+ tableWrapper = _ref.tableWrapper,
49
+ targetCellPosition = _ref.targetCellPosition;
50
+ var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['table'], function (states) {
51
+ var _states$tableState;
52
+ return {
53
+ activeTableMenu: (_states$tableState = states.tableState) === null || _states$tableState === void 0 ? void 0 : _states$tableState.activeTableMenu
54
+ };
55
+ }),
56
+ activeTableMenu = _useSharedPluginState.activeTableMenu;
57
+ var isDragMenuOpen = (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'row' || (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'column';
58
+ var dragMenuDirection = isDragMenuOpen ? activeTableMenu.type : undefined;
59
+ var isOpenedByKeyboard = isDragMenuOpen && activeTableMenu.openedBy === 'keyboard';
60
+ var popupContentRef = (0, _react.useRef)(null);
61
+ var setOutsideClickTargetRef = (0, _react.useContext)(_uiReact.OutsideClickTargetRefContext);
62
+ var navWrapperRef = (0, _react.useRef)(null);
63
+ var handlePopupRef = (0, _react.useCallback)(function (el) {
64
+ popupContentRef.current = el;
65
+ setOutsideClickTargetRef === null || setOutsideClickTargetRef === void 0 || setOutsideClickTargetRef(el);
66
+ }, [setOutsideClickTargetRef]);
67
+ var dismiss = (0, _react.useCallback)(function () {
68
+ api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)(api));
69
+ }, [api]);
70
+ var returnFocusToDragHandle = (0, _react.useCallback)(function () {
71
+ // Match legacy DragMenu's closeMenu('handle') behaviour.
72
+ var handleId = dragMenuDirection === 'row' ? '#drag-handle-button-row' : '#drag-handle-button-column';
73
+ var handle = document.querySelector(handleId);
74
+ handle === null || handle === void 0 || handle.focus();
75
+ }, [dragMenuDirection]);
76
+ var focusFirstMenuItem = (0, _react.useCallback)(function () {
77
+ var root = navWrapperRef.current;
78
+ if (!root) {
79
+ return;
80
+ }
81
+ var firstItem = root.querySelector('[role="menuitem"]:not([disabled]), [role="menuitemcheckbox"]:not([disabled]), [role="menuitemradio"]:not([disabled]), button:not([disabled])');
82
+ firstItem === null || firstItem === void 0 || firstItem.focus();
83
+ }, []);
84
+
85
+ // Focus the first menu item when the menu opens via keyboard (Enter/Space on
86
+ // the drag handle). Mouse-opened menus leave focus where the user clicked.
87
+ var setNavWrapperRef = (0, _react.useCallback)(function (el) {
88
+ navWrapperRef.current = el;
89
+ if (el && isOpenedByKeyboard) {
90
+ // rAF allows the popup to finish positioning before focusing.
91
+ requestAnimationFrame(function () {
92
+ focusFirstMenuItem();
93
+ });
94
+ }
95
+ }, [focusFirstMenuItem, isOpenedByKeyboard]);
96
+ var handleKeyboardFocus = (0, _react.useCallback)(function (_event) {
97
+ focusFirstMenuItem();
98
+ }, [focusFirstMenuItem]);
99
+ var handleEscape = (0, _react.useCallback)(function (event) {
100
+ event.preventDefault();
101
+ event.stopPropagation();
102
+ dismiss();
103
+ returnFocusToDragHandle();
104
+ }, [dismiss, returnFocusToDragHandle]);
105
+
106
+ // Memoize the editor DOM reference so the provider doesn't re-bind listeners
107
+ // on every render (the provider depends on `dom` in its effect's deps).
108
+ var editorDom = (0, _react.useMemo)(function () {
109
+ return editorView.dom instanceof HTMLElement ? editorView.dom : undefined;
110
+ }, [editorView.dom]);
111
+
112
+ // The drag menu is opened by interacting with the drag handle directly, not
113
+ // by a global page-level shortcut.
114
+ var isShortcutToFocusToolbar = (0, _react.useCallback)(function () {
115
+ return false;
116
+ }, []);
117
+ var handleClickOutside = (0, _react.useCallback)(function (event) {
118
+ var _popupContentRef$curr;
119
+ var target = event.target;
120
+ // Ignore clicks handled by this popup, drag handles, or nested portalled
121
+ // dropdowns so those controls can manage their own open/close behavior.
122
+ if (target instanceof Node && (_popupContentRef$curr = popupContentRef.current) !== null && _popupContentRef$curr !== void 0 && _popupContentRef$curr.contains(target) || target instanceof Element && (target.closest(DRAG_HANDLE_CONTROLS_SELECTOR) || target.closest(NESTED_DROPDOWN_SELECTOR))) {
123
+ return;
124
+ }
125
+ dismiss();
126
+ }, [dismiss]);
127
+ if (!isDragMenuOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
128
+ return null;
129
+ }
130
+ var inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(_types.TableCssClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW)) && (0, _platformFeatureFlags.fg)('platform_editor_table_sticky_header_patch_7');
131
+ var targetHandleRef = dragMenuDirection === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
132
+ if (!targetHandleRef || !(editorView.state.selection instanceof _cellSelection.CellSelection)) {
133
+ return null;
134
+ }
135
+ return /*#__PURE__*/_react.default.createElement(PopupWithListeners, {
136
+ alignX: dragMenuDirection === 'row' ? 'right' : undefined,
137
+ alignY: dragMenuDirection === 'row' ? 'start' : undefined
138
+ // Ignored via go/ees005
139
+ // eslint-disable-next-line @atlaskit/editor/no-as-casting
140
+ ,
141
+ target: targetHandleRef,
142
+ mountTo: mountPoint,
143
+ boundariesElement: boundariesElement,
144
+ scrollableElement: scrollableElement,
145
+ fitWidth: _consts2.TABLE_MENU_WIDTH,
146
+ fitHeight: _consts.tablePopupMenuFitHeight
147
+ // z-index value below is to ensure that this menu is above other floating menu
148
+ // in table, but below floating dialogs like typeaheads, pickers, etc.
149
+ // In sticky mode, we want to show the menu above the sticky header
150
+ ,
151
+ zIndex: inStickyMode ? _editorSharedStyles.akEditorFloatingDialogZIndex : _editorSharedStyles.akEditorFloatingOverlapPanelZIndex,
152
+ forcePlacement: true,
153
+ preventOverflow: dragMenuDirection === 'row',
154
+ offset: POPUP_OFFSET,
155
+ stick: true,
156
+ handleClickOutside: handleClickOutside
157
+ }, /*#__PURE__*/_react.default.createElement("div", {
158
+ ref: handlePopupRef
159
+ }, /*#__PURE__*/_react.default.createElement(_toolbarKeyboardNavigationProvider.ToolbarKeyboardNavigationProvider, {
160
+ childComponentSelector: TABLE_MENU_NAV_SELECTOR,
161
+ dom: editorDom,
162
+ isShortcutToFocusToolbar: isShortcutToFocusToolbar,
163
+ handleFocus: handleKeyboardFocus,
164
+ handleEscape: handleEscape
165
+ }, /*#__PURE__*/_react.default.createElement("div", {
166
+ "data-table-drag-menu-nav": "true",
167
+ ref: setNavWrapperRef
168
+ }, /*#__PURE__*/_react.default.createElement(_TableMenu.TableMenu, {
169
+ api: api,
170
+ editorView: editorView,
171
+ surface: dragMenuDirection === 'row' ? _keys2.ROW_MENU : _keys.COLUMN_MENU
172
+ })))));
173
+ };
174
+ FloatingTableMenu.displayName = 'FloatingTableMenu';
175
+ var _default = exports.default = FloatingTableMenu;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.ColumnControls = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _analytics = require("@atlaskit/editor-common/analytics");
9
10
  var _hooks = require("@atlaskit/editor-common/hooks");
10
11
  var _styles = require("@atlaskit/editor-common/styles");
11
12
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
@@ -13,8 +14,8 @@ var _editorTables = require("@atlaskit/editor-tables");
13
14
  var _utils = require("@atlaskit/editor-tables/utils");
14
15
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
15
16
  var _commands = require("../../../pm-plugins/commands");
16
- var _commandsWithAnalytics = require("../../../pm-plugins/commands/commands-with-analytics");
17
- var _commandsWithAnalytics2 = require("../../../pm-plugins/drag-and-drop/commands-with-analytics");
17
+ var _commandsWithAnalytics = require("../../../pm-plugins/drag-and-drop/commands-with-analytics");
18
+ var _pluginFactory = require("../../../pm-plugins/plugin-factory");
18
19
  var _rowControls = require("../../../pm-plugins/utils/row-controls");
19
20
  var _selection = require("../../../pm-plugins/utils/selection");
20
21
  var _types = require("../../../types");
@@ -33,7 +34,7 @@ var getSelectedColumns = function getSelectedColumns(selection) {
33
34
  return [];
34
35
  };
35
36
  var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
36
- var _colWidths$map$join, _api$analytics3;
37
+ var _colWidths$map$join;
37
38
  var editorView = _ref.editorView,
38
39
  tableActive = _ref.tableActive,
39
40
  tableRef = _ref.tableRef,
@@ -130,17 +131,48 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
130
131
  var state = editorView.state,
131
132
  dispatch = editorView.dispatch;
132
133
  if (event !== null && event !== void 0 && event.shiftKey) {
134
+ // Shift-click extends the selection rather than toggling the menu, but the
135
+ // open drag menu would otherwise stay anchored to a stale column. Close it here
136
+ // for the updated menu (legacy menu closes via outside-click on its dropdown).
137
+ if ((0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true)) {
138
+ api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)(api));
139
+ }
133
140
  return;
134
141
  }
135
142
  if ((0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true)) {
136
- if (colIndex !== undefined) {
137
- var _api$analytics;
138
- (0, _commandsWithAnalytics.toggleActiveTableMenuWithAnalytics)(api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions)('column', colIndex, trigger)(state, dispatch);
143
+ if (colIndex !== undefined && api) {
144
+ var _getTablePluginState = (0, _pluginFactory.getPluginState)(state),
145
+ currentActiveTableMenu = _getTablePluginState.activeTableMenu;
146
+ var isSameActiveMenu = (currentActiveTableMenu === null || currentActiveTableMenu === void 0 ? void 0 : currentActiveTableMenu.type) === 'column' && currentActiveTableMenu.index === colIndex;
147
+ api.core.actions.execute(function (_ref2) {
148
+ var tr = _ref2.tr;
149
+ if (!isSameActiveMenu) {
150
+ var _api$analytics;
151
+ (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent({
152
+ action: _analytics.TABLE_ACTION.DRAG_MENU_OPENED,
153
+ actionSubject: _analytics.ACTION_SUBJECT.TABLE,
154
+ actionSubjectId: null,
155
+ eventType: _analytics.EVENT_TYPE.TRACK,
156
+ attributes: {
157
+ inputMethod: trigger === 'keyboard' ? _analytics.INPUT_METHOD.KEYBOARD : _analytics.INPUT_METHOD.MOUSE,
158
+ direction: 'column'
159
+ }
160
+ })(tr);
161
+ }
162
+ (0, _commands.toggleActiveTableMenu)({
163
+ type: 'column',
164
+ index: colIndex,
165
+ openedBy: trigger
166
+ }, currentActiveTableMenu, api)({
167
+ tr: tr
168
+ });
169
+ return tr;
170
+ });
139
171
  }
140
172
  return;
141
173
  }
142
- (0, _commandsWithAnalytics2.toggleDragMenuWithAnalytics)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)(undefined, 'column', colIndex, trigger)(state, dispatch);
143
- }, [editorView, colIndex, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions]);
174
+ (0, _commandsWithAnalytics.toggleDragMenuWithAnalytics)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)(undefined, 'column', colIndex, trigger)(state, dispatch);
175
+ }, [editorView, colIndex, api]);
144
176
  var colIndexes = (0, _react.useMemo)(function () {
145
177
  // Ignored via go/ees005
146
178
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -247,9 +279,9 @@ var ColumnControls = exports.ColumnControls = function ColumnControls(_ref) {
247
279
  overflowX: stickyTop ? 'hidden' : 'visible',
248
280
  pointerEvents: isDragging ? 'none' : undefined
249
281
  }
250
- }, columnParams.map(function (_ref2, index) {
251
- var startIndex = _ref2.startIndex,
252
- endIndex = _ref2.endIndex;
282
+ }, columnParams.map(function (_ref3, index) {
283
+ var startIndex = _ref3.startIndex,
284
+ endIndex = _ref3.endIndex;
253
285
  return /*#__PURE__*/_react.default.createElement("div", {
254
286
  style: {
255
287
  gridColumn: "".concat(startIndex + 1, " / span 1")