@atlaskit/editor-plugin-table 5.3.14 → 5.3.15

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 (54) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/plugins/table/index.js +2 -1
  3. package/dist/cjs/plugins/table/ui/FloatingDragMenu/DragMenu.js +49 -11
  4. package/dist/cjs/plugins/table/ui/FloatingDragMenu/index.js +5 -2
  5. package/dist/cjs/plugins/table/ui/icons/AddColLeftIcon.js +44 -0
  6. package/dist/cjs/plugins/table/ui/icons/AddColRightIcon.js +44 -0
  7. package/dist/cjs/plugins/table/ui/icons/AddRowAboveIcon.js +45 -0
  8. package/dist/cjs/plugins/table/ui/icons/AddRowBelowIcon.js +40 -0
  9. package/dist/cjs/plugins/table/ui/icons/index.js +29 -1
  10. package/dist/cjs/plugins/table/utils/drag-menu.js +122 -10
  11. package/dist/es2019/plugins/table/index.js +2 -1
  12. package/dist/es2019/plugins/table/ui/FloatingDragMenu/DragMenu.js +52 -8
  13. package/dist/es2019/plugins/table/ui/FloatingDragMenu/index.js +5 -2
  14. package/dist/es2019/plugins/table/ui/icons/AddColLeftIcon.js +35 -0
  15. package/dist/es2019/plugins/table/ui/icons/AddColRightIcon.js +35 -0
  16. package/dist/es2019/plugins/table/ui/icons/AddRowAboveIcon.js +36 -0
  17. package/dist/es2019/plugins/table/ui/icons/AddRowBelowIcon.js +31 -0
  18. package/dist/es2019/plugins/table/ui/icons/index.js +5 -1
  19. package/dist/es2019/plugins/table/utils/drag-menu.js +118 -8
  20. package/dist/esm/plugins/table/index.js +2 -1
  21. package/dist/esm/plugins/table/ui/FloatingDragMenu/DragMenu.js +46 -8
  22. package/dist/esm/plugins/table/ui/FloatingDragMenu/index.js +5 -2
  23. package/dist/esm/plugins/table/ui/icons/AddColLeftIcon.js +37 -0
  24. package/dist/esm/plugins/table/ui/icons/AddColRightIcon.js +37 -0
  25. package/dist/esm/plugins/table/ui/icons/AddRowAboveIcon.js +38 -0
  26. package/dist/esm/plugins/table/ui/icons/AddRowBelowIcon.js +33 -0
  27. package/dist/esm/plugins/table/ui/icons/index.js +5 -1
  28. package/dist/esm/plugins/table/utils/drag-menu.js +120 -8
  29. package/dist/types/plugins/table/ui/FloatingDragMenu/DragMenu.d.ts +5 -2
  30. package/dist/types/plugins/table/ui/FloatingDragMenu/index.d.ts +3 -1
  31. package/dist/types/plugins/table/ui/icons/AddColLeftIcon.d.ts +2 -0
  32. package/dist/types/plugins/table/ui/icons/AddColRightIcon.d.ts +2 -0
  33. package/dist/types/plugins/table/ui/icons/AddRowAboveIcon.d.ts +2 -0
  34. package/dist/types/plugins/table/ui/icons/AddRowBelowIcon.d.ts +2 -0
  35. package/dist/types/plugins/table/ui/icons/index.d.ts +4 -0
  36. package/dist/types/plugins/table/utils/drag-menu.d.ts +6 -3
  37. package/dist/types-ts4.5/plugins/table/ui/FloatingDragMenu/DragMenu.d.ts +5 -2
  38. package/dist/types-ts4.5/plugins/table/ui/FloatingDragMenu/index.d.ts +3 -1
  39. package/dist/types-ts4.5/plugins/table/ui/icons/AddColLeftIcon.d.ts +2 -0
  40. package/dist/types-ts4.5/plugins/table/ui/icons/AddColRightIcon.d.ts +2 -0
  41. package/dist/types-ts4.5/plugins/table/ui/icons/AddRowAboveIcon.d.ts +2 -0
  42. package/dist/types-ts4.5/plugins/table/ui/icons/AddRowBelowIcon.d.ts +2 -0
  43. package/dist/types-ts4.5/plugins/table/ui/icons/index.d.ts +4 -0
  44. package/dist/types-ts4.5/plugins/table/utils/drag-menu.d.ts +6 -3
  45. package/package.json +1 -1
  46. package/src/plugins/table/index.tsx +1 -0
  47. package/src/plugins/table/ui/FloatingDragMenu/DragMenu.tsx +73 -6
  48. package/src/plugins/table/ui/FloatingDragMenu/index.tsx +5 -0
  49. package/src/plugins/table/ui/icons/AddColLeftIcon.tsx +43 -0
  50. package/src/plugins/table/ui/icons/AddColRightIcon.tsx +43 -0
  51. package/src/plugins/table/ui/icons/AddRowAboveIcon.tsx +42 -0
  52. package/src/plugins/table/ui/icons/AddRowBelowIcon.tsx +36 -0
  53. package/src/plugins/table/ui/icons/index.ts +4 -0
  54. package/src/plugins/table/utils/drag-menu.ts +158 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 5.3.15
4
+
5
+ ### Patch Changes
6
+
7
+ - [#42203](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42203) [`7eb9439a045`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7eb9439a045) - Implement drag menu options
8
+
3
9
  ## 5.3.14
4
10
 
5
11
  ### Patch Changes
@@ -337,7 +337,8 @@ var tablesPlugin = function tablesPlugin(_ref) {
337
337
  targetCellPosition: targetCellPosition,
338
338
  direction: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuDirection,
339
339
  index: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuIndex,
340
- isOpen: !!(dragAndDropState !== null && dragAndDropState !== void 0 && dragAndDropState.isDragMenuOpen) && !isResizing
340
+ isOpen: !!(dragAndDropState !== null && dragAndDropState !== void 0 && dragAndDropState.isDragMenuOpen) && !isResizing,
341
+ getEditorContainerWidth: defaultGetEditorContainerWidth
341
342
  }), allowControls && !isDragAndDropEnabled && !isResizing && /*#__PURE__*/_react.default.createElement(_FloatingDeleteButton.default, {
342
343
  editorView: editorView,
343
344
  selection: editorView.state.selection,
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.DragMenu = void 0;
8
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = require("@emotion/react");
9
8
  var _uiMenu = require("@atlaskit/editor-common/ui-menu");
9
+ var _shortcut = require("@atlaskit/editor-shared-styles/shortcut");
10
10
  var _tableMap = require("@atlaskit/editor-tables/table-map");
11
- var _commands = require("../../pm-plugins/drag-and-drop/commands");
11
+ var _utils = require("@atlaskit/editor-tables/utils");
12
+ var _commands = require("../../commands");
13
+ var _commands2 = require("../../pm-plugins/drag-and-drop/commands");
14
+ var _utils2 = require("../../utils");
12
15
  var _dragMenu = require("../../utils/drag-menu");
13
16
  var _consts = require("../consts");
17
+ /** @jsx jsx */
18
+
14
19
  var convertToDropdownItems = function convertToDropdownItems(dragMenuConfig) {
15
20
  var menuItems = [];
16
21
  var menuCallback = {};
@@ -21,7 +26,18 @@ var convertToDropdownItems = function convertToDropdownItems(dragMenuConfig) {
21
26
  value: {
22
27
  name: item.id
23
28
  },
24
- isDisabled: item.disabled
29
+ isDisabled: item.disabled,
30
+ elemBefore: item.icon ? (0, _react.jsx)("div", {
31
+ style: {
32
+ marginRight: "var(--ds-space-negative-075, -6px)",
33
+ display: 'flex'
34
+ }
35
+ }, (0, _react.jsx)(item.icon, {
36
+ label: item.title
37
+ })) : undefined,
38
+ elemAfter: item.keymap ? (0, _react.jsx)("div", {
39
+ css: _shortcut.shortcutStyle
40
+ }, item.keymap) : undefined
25
41
  });
26
42
  item.onClick && (menuCallback[item.id] = item.onClick);
27
43
  });
@@ -39,27 +55,47 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
39
55
  tableNode = _ref.tableNode,
40
56
  mountPoint = _ref.mountPoint,
41
57
  boundariesElement = _ref.boundariesElement,
42
- scrollableElement = _ref.scrollableElement;
58
+ scrollableElement = _ref.scrollableElement,
59
+ targetCellPosition = _ref.targetCellPosition,
60
+ getEditorContainerWidth = _ref.getEditorContainerWidth;
43
61
  var tableMap = tableNode ? _tableMap.TableMap.get(tableNode) : undefined;
44
- var dragMenuConfig = (0, _dragMenu.getDragMenuConfig)(direction, tableMap, index);
62
+ var state = editorView.state,
63
+ dispatch = editorView.dispatch;
64
+ var selection = state.selection;
65
+ var selectionRect = (0, _utils.isSelectionType)(selection, 'cell') ? (0, _utils.getSelectionRect)(selection) : (0, _utils.findCellRectClosestToPos)(selection.$from);
66
+ var dragMenuConfig = (0, _dragMenu.getDragMenuConfig)(direction, getEditorContainerWidth, tableMap, index, targetCellPosition, selectionRect);
45
67
  var _convertToDropdownIte = convertToDropdownItems(dragMenuConfig),
46
68
  menuItems = _convertToDropdownIte.menuItems,
47
69
  menuCallback = _convertToDropdownIte.menuCallback;
48
70
  var closeMenu = function closeMenu() {
49
71
  var state = editorView.state,
50
72
  dispatch = editorView.dispatch;
51
- (0, _commands.toggleDragMenu)(false)(state, dispatch);
73
+ (0, _commands2.toggleDragMenu)(false)(state, dispatch);
52
74
  };
53
- var onMenuItemActivated = function onMenuItemActivated(_ref2) {
75
+ var handleMenuItemActivated = function handleMenuItemActivated(_ref2) {
54
76
  var _menuCallback$item$va;
55
77
  var item = _ref2.item;
56
- (_menuCallback$item$va = menuCallback[item.value.name]) === null || _menuCallback$item$va === void 0 || _menuCallback$item$va.call(menuCallback, editorView.state, editorView.dispatch);
78
+ (_menuCallback$item$va = menuCallback[item.value.name]) === null || _menuCallback$item$va === void 0 || _menuCallback$item$va.call(menuCallback, state, dispatch);
57
79
  closeMenu();
58
80
  };
81
+ var handleItemMouseEnter = function handleItemMouseEnter(_ref3) {
82
+ var _item$value$name;
83
+ var item = _ref3.item;
84
+ if (!selectionRect || !((_item$value$name = item.value.name) !== null && _item$value$name !== void 0 && _item$value$name.startsWith('delete'))) {
85
+ return;
86
+ }
87
+ (item.value.name === 'delete_column' ? (0, _commands.hoverColumns)((0, _utils2.getSelectedColumnIndexes)(selectionRect), true) : (0, _commands.hoverRows)((0, _utils2.getSelectedRowIndexes)(selectionRect), true))(state, dispatch);
88
+ };
89
+ var handleItemMouseLeave = function handleItemMouseLeave(_ref4) {
90
+ var item = _ref4.item;
91
+ if (['sort_column_asc', 'sort_column_desc', 'delete_column', 'delete_row'].indexOf(item.value.name) > -1) {
92
+ (0, _commands.clearHoverSelection)()(state, dispatch);
93
+ }
94
+ };
59
95
  if (!menuItems) {
60
96
  return null;
61
97
  }
62
- return /*#__PURE__*/_react.default.createElement(_uiMenu.DropdownMenu, {
98
+ return (0, _react.jsx)(_uiMenu.DropdownMenu, {
63
99
  mountTo: mountPoint
64
100
  //This needs be removed when the a11y is completely handled
65
101
  //Disabling key navigation now as it works only partially
@@ -73,7 +109,9 @@ var DragMenu = exports.DragMenu = function DragMenu(_ref) {
73
109
  }],
74
110
  isOpen: isOpen,
75
111
  onOpenChange: closeMenu,
76
- onItemActivated: onMenuItemActivated,
112
+ onItemActivated: handleMenuItemActivated,
113
+ onMouseEnter: handleItemMouseEnter,
114
+ onMouseLeave: handleItemMouseLeave,
77
115
  fitWidth: _consts.dragMenuDropdownWidth,
78
116
  boundariesElement: boundariesElement
79
117
  });
@@ -22,7 +22,8 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
22
22
  tableNode = _ref.tableNode,
23
23
  direction = _ref.direction,
24
24
  index = _ref.index,
25
- targetCellPosition = _ref.targetCellPosition;
25
+ targetCellPosition = _ref.targetCellPosition,
26
+ getEditorContainerWidth = _ref.getEditorContainerWidth;
26
27
  if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
27
28
  return null;
28
29
  }
@@ -55,7 +56,9 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
55
56
  boundariesElement: boundariesElement,
56
57
  tableNode: tableNode,
57
58
  direction: direction,
58
- index: index
59
+ index: index,
60
+ targetCellPosition: targetCellPosition,
61
+ getEditorContainerWidth: getEditorContainerWidth
59
62
  }));
60
63
  };
61
64
  FloatingDragMenu.displayName = 'FloatingDragMenu';
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AddColLeftIcon = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var AddColLeftIcon = exports.AddColLeftIcon = function AddColLeftIcon() {
10
+ return /*#__PURE__*/_react.default.createElement("svg", {
11
+ width: "24",
12
+ height: "24",
13
+ viewBox: "0 0 24 24",
14
+ fill: "currentColor",
15
+ xmlns: "http://www.w3.org/2000/svg"
16
+ }, /*#__PURE__*/_react.default.createElement("rect", {
17
+ width: "24",
18
+ height: "24",
19
+ transform: "matrix(0 -1 1 0 0 24)",
20
+ fill: "none",
21
+ fillOpacity: "0.01"
22
+ }), /*#__PURE__*/_react.default.createElement("rect", {
23
+ x: "12",
24
+ y: "18",
25
+ width: "12",
26
+ height: "3",
27
+ rx: "0.5",
28
+ transform: "rotate(-90 12 18)",
29
+ fill: "currentColor"
30
+ }), /*#__PURE__*/_react.default.createElement("rect", {
31
+ x: "16",
32
+ y: "18",
33
+ width: "12",
34
+ height: "3",
35
+ rx: "0.5",
36
+ transform: "rotate(-90 16 18)",
37
+ fill: "currentColor"
38
+ }), /*#__PURE__*/_react.default.createElement("path", {
39
+ fillRule: "evenodd",
40
+ clipRule: "evenodd",
41
+ d: "M7 11H5.99C5.72652 11.0026 5.47473 11.1092 5.28935 11.2964C5.10397 11.4837 4.99999 11.7365 5 12C5 12.556 5.444 13 5.99 13H7V14C7 14.2652 7.10536 14.5196 7.29289 14.7071C7.48043 14.8946 7.73478 15 8 15C8.26522 15 8.51957 14.8946 8.70711 14.7071C8.89464 14.5196 9 14.2652 9 14V13H10.01C10.2735 12.9974 10.5253 12.8908 10.7107 12.7036C10.896 12.5163 11 12.2635 11 12C11 11.444 10.556 11 10.01 11H9V10C9 9.73478 8.89464 9.48043 8.70711 9.29289C8.51957 9.10536 8.26522 9 8 9C7.73478 9 7.48043 9.10536 7.29289 9.29289C7.10536 9.48043 7 9.73478 7 10V11Z",
42
+ fill: "currentColor"
43
+ }));
44
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AddColRightIcon = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var AddColRightIcon = exports.AddColRightIcon = function AddColRightIcon() {
10
+ return /*#__PURE__*/_react.default.createElement("svg", {
11
+ width: "24",
12
+ height: "24",
13
+ viewBox: "0 0 24 24",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg"
16
+ }, /*#__PURE__*/_react.default.createElement("rect", {
17
+ width: "24",
18
+ height: "24",
19
+ transform: "translate(0 24) rotate(-90)",
20
+ fill: "none",
21
+ fillOpacity: "0.01"
22
+ }), /*#__PURE__*/_react.default.createElement("rect", {
23
+ x: "9",
24
+ y: "18",
25
+ width: "12",
26
+ height: "3",
27
+ rx: "0.5",
28
+ transform: "rotate(-90 9 18)",
29
+ fill: "currentColor"
30
+ }), /*#__PURE__*/_react.default.createElement("rect", {
31
+ x: "5",
32
+ y: "18",
33
+ width: "12",
34
+ height: "3",
35
+ rx: "0.5",
36
+ transform: "rotate(-90 5 18)",
37
+ fill: "currentColor"
38
+ }), /*#__PURE__*/_react.default.createElement("path", {
39
+ fillRule: "evenodd",
40
+ clipRule: "evenodd",
41
+ d: "M15 11L13.99 11C13.7265 11.0026 13.4747 11.1092 13.2893 11.2964C13.104 11.4837 13 11.7365 13 12C13 12.556 13.444 13 13.99 13L15 13L15 14C15 14.2652 15.1054 14.5196 15.2929 14.7071C15.4804 14.8946 15.7348 15 16 15C16.2652 15 16.5196 14.8946 16.7071 14.7071C16.8946 14.5196 17 14.2652 17 14L17 13L18.01 13C18.2735 12.9974 18.5253 12.8908 18.7107 12.7036C18.896 12.5163 19 12.2635 19 12C19 11.444 18.556 11 18.01 11L17 11L17 10C17 9.73478 16.8946 9.48043 16.7071 9.29289C16.5196 9.10536 16.2652 9 16 9C15.7348 9 15.4804 9.10536 15.2929 9.29289C15.1054 9.48043 15 9.73478 15 10L15 11Z",
42
+ fill: "currentColor"
43
+ }));
44
+ };
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AddRowAboveIcon = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var AddRowAboveIcon = exports.AddRowAboveIcon = function AddRowAboveIcon() {
10
+ return /*#__PURE__*/_react.default.createElement("svg", {
11
+ width: "24",
12
+ height: "24",
13
+ viewBox: "0 0 24 24",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg"
16
+ }, /*#__PURE__*/_react.default.createElement("rect", {
17
+ width: "24",
18
+ height: "24",
19
+ fill: "var(--ds-border-inverse, #FFFFFF)",
20
+ fillOpacity: "0.01"
21
+ }), /*#__PURE__*/_react.default.createElement("mask", {
22
+ id: "path-1-inside-1_896_17822",
23
+ fill: "var(--ds-border-inverse, #FFFFFF)"
24
+ }, /*#__PURE__*/_react.default.createElement("rect", {
25
+ x: "6",
26
+ y: "12",
27
+ width: "12",
28
+ height: "8",
29
+ rx: "0.5"
30
+ })), /*#__PURE__*/_react.default.createElement("rect", {
31
+ x: "6",
32
+ y: "12",
33
+ width: "12",
34
+ height: "8",
35
+ rx: "0.5",
36
+ stroke: "currentColor",
37
+ strokeWidth: "4",
38
+ mask: "url(#path-1-inside-1_896_17822)"
39
+ }), /*#__PURE__*/_react.default.createElement("path", {
40
+ fillRule: "evenodd",
41
+ clipRule: "evenodd",
42
+ d: "M13 7V5.99C12.9974 5.72652 12.8908 5.47473 12.7036 5.28935C12.5163 5.10397 12.2635 4.99999 12 5C11.444 5 11 5.444 11 5.99V7H10C9.73478 7 9.48043 7.10536 9.29289 7.29289C9.10536 7.48043 9 7.73478 9 8C9 8.26522 9.10536 8.51957 9.29289 8.70711C9.48043 8.89464 9.73478 9 10 9H11V10.01C11.0026 10.2735 11.1092 10.5253 11.2964 10.7107C11.4837 10.896 11.7365 11 12 11C12.556 11 13 10.556 13 10.01V9H14C14.2652 9 14.5196 8.89464 14.7071 8.70711C14.8946 8.51957 15 8.26522 15 8C15 7.73478 14.8946 7.48043 14.7071 7.29289C14.5196 7.10536 14.2652 7 14 7H13Z",
43
+ fill: "currentColor"
44
+ }));
45
+ };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.AddRowBelowIcon = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var AddRowBelowIcon = exports.AddRowBelowIcon = function AddRowBelowIcon() {
10
+ return /*#__PURE__*/_react.default.createElement("svg", {
11
+ width: "24",
12
+ height: "24",
13
+ viewBox: "0 0 24 24",
14
+ fill: "none",
15
+ xmlns: "http://www.w3.org/2000/svg"
16
+ }, /*#__PURE__*/_react.default.createElement("mask", {
17
+ id: "path-1-inside-1_920_47112",
18
+ fill: "var(--ds-border-inverse, #FFFFFF)"
19
+ }, /*#__PURE__*/_react.default.createElement("rect", {
20
+ x: "6",
21
+ y: "4",
22
+ width: "12",
23
+ height: "8",
24
+ rx: "0.5"
25
+ })), /*#__PURE__*/_react.default.createElement("rect", {
26
+ x: "6",
27
+ y: "4",
28
+ width: "12",
29
+ height: "8",
30
+ rx: "0.5",
31
+ stroke: "currentColor",
32
+ strokeWidth: "4",
33
+ mask: "url(#path-1-inside-1_920_47112)"
34
+ }), /*#__PURE__*/_react.default.createElement("path", {
35
+ fillRule: "evenodd",
36
+ clipRule: "evenodd",
37
+ d: "M13 15V13.99C12.9974 13.7265 12.8908 13.4747 12.7036 13.2893C12.5163 13.104 12.2635 13 12 13C11.444 13 11 13.444 11 13.99V15H10C9.73478 15 9.48043 15.1054 9.29289 15.2929C9.10536 15.4804 9 15.7348 9 16C9 16.2652 9.10536 16.5196 9.29289 16.7071C9.48043 16.8946 9.73478 17 10 17H11V18.01C11.0026 18.2735 11.1092 18.5253 11.2964 18.7107C11.4837 18.896 11.7365 19 12 19C12.556 19 13 18.556 13 18.01V17H14C14.2652 17 14.5196 16.8946 14.7071 16.7071C14.8946 16.5196 15 16.2652 15 16C15 15.7348 14.8946 15.4804 14.7071 15.2929C14.5196 15.1054 14.2652 15 14 15H13Z",
38
+ fill: "currentColor"
39
+ }));
40
+ };
@@ -3,6 +3,30 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "AddColLeftIcon", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _AddColLeftIcon.AddColLeftIcon;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "AddColRightIcon", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _AddColRightIcon.AddColRightIcon;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "AddRowAboveIcon", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _AddRowAboveIcon.AddRowAboveIcon;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "AddRowBelowIcon", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _AddRowBelowIcon.AddRowBelowIcon;
28
+ }
29
+ });
6
30
  Object.defineProperty(exports, "DragHandleIcon", {
7
31
  enumerable: true,
8
32
  get: function get() {
@@ -16,4 +40,8 @@ Object.defineProperty(exports, "DragInMotionIcon", {
16
40
  }
17
41
  });
18
42
  var _DragHandleIcon = require("./DragHandleIcon");
19
- var _DragInMotionIcon = require("./DragInMotionIcon");
43
+ var _DragInMotionIcon = require("./DragInMotionIcon");
44
+ var _AddRowAboveIcon = require("./AddRowAboveIcon");
45
+ var _AddRowBelowIcon = require("./AddRowBelowIcon");
46
+ var _AddColLeftIcon = require("./AddColLeftIcon");
47
+ var _AddColRightIcon = require("./AddColRightIcon");
@@ -6,7 +6,22 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.getDragMenuConfig = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
- var _commands = require("../pm-plugins/drag-and-drop/commands");
9
+ var _customSteps = require("@atlaskit/custom-steps");
10
+ var _keymaps = require("@atlaskit/editor-common/keymaps");
11
+ var _arrowDown = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-down"));
12
+ var _arrowLeft = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-left"));
13
+ var _arrowRight = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-right"));
14
+ var _arrowUp = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-up"));
15
+ var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/cross-circle"));
16
+ var _layoutThreeEqual = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/layout-three-equal"));
17
+ var _remove = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/remove"));
18
+ var _chevronDoubleDown = _interopRequireDefault(require("@atlaskit/icon/glyph/hipchat/chevron-double-down"));
19
+ var _chevronDoubleUp = _interopRequireDefault(require("@atlaskit/icon/glyph/hipchat/chevron-double-up"));
20
+ var _commands = require("../commands");
21
+ var _delete = require("../commands/delete");
22
+ var _commands2 = require("../pm-plugins/drag-and-drop/commands");
23
+ var _transforms = require("../transforms");
24
+ var _icons = require("../ui/icons");
10
25
  var canDecrease = function canDecrease(index) {
11
26
  var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
12
27
  return index !== undefined && index > min;
@@ -15,45 +30,142 @@ var canIncrease = function canIncrease(index) {
15
30
  var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
16
31
  return index !== undefined && index < max;
17
32
  };
18
- var getDragMenuConfig = exports.getDragMenuConfig = function getDragMenuConfig(direction, tableMap, index) {
33
+ var getDragMenuConfig = exports.getDragMenuConfig = function getDragMenuConfig(direction, getEditorContainerWidth, tableMap, index, targetCellPosition, selectionRect) {
34
+ var addOptions = direction === 'row' ? [{
35
+ label: 'above',
36
+ offset: 0,
37
+ icon: _icons.AddRowAboveIcon,
38
+ keymap: _keymaps.addRowBefore
39
+ }, {
40
+ label: 'below',
41
+ offset: 1,
42
+ icon: _icons.AddRowBelowIcon,
43
+ keymap: _keymaps.addRowAfter
44
+ }] : [{
45
+ label: 'left',
46
+ offset: 0,
47
+ icon: _icons.AddColLeftIcon,
48
+ keymap: _keymaps.addColumnBefore
49
+ }, {
50
+ label: 'right',
51
+ offset: 1,
52
+ icon: _icons.AddColRightIcon,
53
+ keymap: _keymaps.addColumnAfter
54
+ }];
19
55
  var moveOptions = direction === 'row' ? [{
20
56
  label: 'up',
21
57
  offset: -1,
22
- canMove: canDecrease
58
+ canMove: canDecrease,
59
+ icon: _arrowUp.default
23
60
  }, {
24
61
  label: 'down',
25
62
  offset: 1,
26
63
  canMove: function canMove(index) {
27
64
  var _tableMap$height;
28
65
  return canIncrease(index, ((_tableMap$height = tableMap === null || tableMap === void 0 ? void 0 : tableMap.height) !== null && _tableMap$height !== void 0 ? _tableMap$height : 0) - 1);
29
- }
66
+ },
67
+ icon: _arrowDown.default
30
68
  }] : [{
31
69
  label: 'left',
32
70
  offset: -1,
33
- canMove: canDecrease
71
+ canMove: canDecrease,
72
+ icon: _arrowLeft.default
34
73
  }, {
35
74
  label: 'right',
36
75
  offset: 1,
37
76
  canMove: function canMove(index) {
38
77
  var _tableMap$width;
39
78
  return canIncrease(index, ((_tableMap$width = tableMap === null || tableMap === void 0 ? void 0 : tableMap.width) !== null && _tableMap$width !== void 0 ? _tableMap$width : 0) - 1);
40
- }
79
+ },
80
+ icon: _arrowRight.default
41
81
  }];
42
- return (0, _toConsumableArray2.default)(moveOptions.map(function (_ref) {
82
+ var sortOptions = direction === 'column' ? [{
83
+ label: 'increasing',
84
+ order: _customSteps.TableSortOrder.ASC,
85
+ icon: _chevronDoubleUp.default
86
+ }, {
87
+ label: 'decreasing',
88
+ order: _customSteps.TableSortOrder.DESC,
89
+ icon: _chevronDoubleDown.default
90
+ }] : [];
91
+ return [].concat((0, _toConsumableArray2.default)(addOptions.map(function (_ref) {
43
92
  var label = _ref.label,
44
93
  offset = _ref.offset,
45
- canMove = _ref.canMove;
94
+ icon = _ref.icon,
95
+ keymap = _ref.keymap;
96
+ return {
97
+ id: "add_".concat(direction, "_").concat(label),
98
+ title: "Add ".concat(direction, " ").concat(label),
99
+ icon: icon,
100
+ onClick: function onClick(state, dispatch) {
101
+ if (direction === 'row') {
102
+ (0, _commands.insertRow)(index + offset, true)(state, dispatch);
103
+ } else {
104
+ (0, _commands.insertColumn)(getEditorContainerWidth)(index + offset)(state, dispatch);
105
+ }
106
+ return true;
107
+ },
108
+ keymap: keymap && (0, _keymaps.tooltip)(keymap)
109
+ };
110
+ })), [direction === 'column' ? {
111
+ id: 'distribute_columns',
112
+ title: 'Distribute columns',
113
+ disabled: true,
114
+ onClick: function onClick() {
115
+ return false;
116
+ },
117
+ icon: _layoutThreeEqual.default
118
+ } : undefined, {
119
+ id: 'clear_cells',
120
+ title: 'Clear cells',
121
+ onClick: function onClick(state, dispatch) {
122
+ (0, _commands.clearMultipleCells)(targetCellPosition)(state, dispatch);
123
+ return true;
124
+ },
125
+ icon: _crossCircle.default,
126
+ keymap: (0, _keymaps.tooltip)(_keymaps.backspace)
127
+ }, {
128
+ id: "delete_".concat(direction),
129
+ title: "Delete ".concat(direction),
130
+ onClick: function onClick(state, dispatch) {
131
+ if (direction === 'row') {
132
+ dispatch === null || dispatch === void 0 || dispatch((0, _transforms.deleteRows)(selectionRect, false)(state.tr));
133
+ } else {
134
+ (0, _delete.deleteColumnsCommand)(selectionRect)(state, dispatch);
135
+ }
136
+ return true;
137
+ },
138
+ icon: _remove.default
139
+ }], (0, _toConsumableArray2.default)(moveOptions.map(function (_ref2) {
140
+ var label = _ref2.label,
141
+ offset = _ref2.offset,
142
+ canMove = _ref2.canMove,
143
+ icon = _ref2.icon;
46
144
  return {
47
145
  id: "move_".concat(direction, "_").concat(label),
48
146
  title: "Move ".concat(direction, " ").concat(label),
49
147
  disabled: !canMove(index),
148
+ icon: icon,
50
149
  onClick: function onClick(state, dispatch) {
51
150
  if (canMove(index)) {
52
- (0, _commands.moveSource)("table-".concat(direction), index, index + offset)(state, dispatch);
151
+ (0, _commands2.moveSource)("table-".concat(direction), index, index + offset)(state, dispatch);
53
152
  return true;
54
153
  }
55
154
  return false;
56
155
  }
57
156
  };
58
- }));
157
+ })), (0, _toConsumableArray2.default)(sortOptions.map(function (_ref3) {
158
+ var label = _ref3.label,
159
+ order = _ref3.order,
160
+ icon = _ref3.icon;
161
+ return {
162
+ id: "sort_column_".concat(order),
163
+ title: "Sort ".concat(label),
164
+ icon: icon,
165
+ onClick: function onClick(state, dispatch) {
166
+ (0, _commands.sortByColumn)(index, order)(state, dispatch);
167
+ return true;
168
+ }
169
+ };
170
+ }))).filter(Boolean);
59
171
  };
@@ -329,7 +329,8 @@ const tablesPlugin = ({
329
329
  targetCellPosition: targetCellPosition,
330
330
  direction: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuDirection,
331
331
  index: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuIndex,
332
- isOpen: !!(dragAndDropState !== null && dragAndDropState !== void 0 && dragAndDropState.isDragMenuOpen) && !isResizing
332
+ isOpen: !!(dragAndDropState !== null && dragAndDropState !== void 0 && dragAndDropState.isDragMenuOpen) && !isResizing,
333
+ getEditorContainerWidth: defaultGetEditorContainerWidth
333
334
  }), allowControls && !isDragAndDropEnabled && !isResizing && /*#__PURE__*/React.createElement(FloatingDeleteButton, {
334
335
  editorView: editorView,
335
336
  selection: editorView.state.selection,
@@ -1,7 +1,12 @@
1
- import React from 'react';
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
2
3
  import { ArrowKeyNavigationType, DropdownMenu } from '@atlaskit/editor-common/ui-menu';
4
+ import { shortcutStyle } from '@atlaskit/editor-shared-styles/shortcut';
3
5
  import { TableMap } from '@atlaskit/editor-tables/table-map';
6
+ import { findCellRectClosestToPos, getSelectionRect, isSelectionType } from '@atlaskit/editor-tables/utils';
7
+ import { clearHoverSelection, hoverColumns, hoverRows } from '../../commands';
4
8
  import { toggleDragMenu } from '../../pm-plugins/drag-and-drop/commands';
9
+ import { getSelectedColumnIndexes, getSelectedRowIndexes } from '../../utils';
5
10
  import { getDragMenuConfig } from '../../utils/drag-menu';
6
11
  import { dragMenuDropdownWidth } from '../consts';
7
12
  const convertToDropdownItems = dragMenuConfig => {
@@ -14,7 +19,18 @@ const convertToDropdownItems = dragMenuConfig => {
14
19
  value: {
15
20
  name: item.id
16
21
  },
17
- isDisabled: item.disabled
22
+ isDisabled: item.disabled,
23
+ elemBefore: item.icon ? jsx("div", {
24
+ style: {
25
+ marginRight: "var(--ds-space-negative-075, -6px)",
26
+ display: 'flex'
27
+ }
28
+ }, jsx(item.icon, {
29
+ label: item.title
30
+ })) : undefined,
31
+ elemAfter: item.keymap ? jsx("div", {
32
+ css: shortcutStyle
33
+ }, item.keymap) : undefined
18
34
  });
19
35
  item.onClick && (menuCallback[item.id] = item.onClick);
20
36
  });
@@ -31,10 +47,20 @@ export const DragMenu = ({
31
47
  tableNode,
32
48
  mountPoint,
33
49
  boundariesElement,
34
- scrollableElement
50
+ scrollableElement,
51
+ targetCellPosition,
52
+ getEditorContainerWidth
35
53
  }) => {
36
54
  const tableMap = tableNode ? TableMap.get(tableNode) : undefined;
37
- const dragMenuConfig = getDragMenuConfig(direction, tableMap, index);
55
+ const {
56
+ state,
57
+ dispatch
58
+ } = editorView;
59
+ const {
60
+ selection
61
+ } = state;
62
+ const selectionRect = isSelectionType(selection, 'cell') ? getSelectionRect(selection) : findCellRectClosestToPos(selection.$from);
63
+ const dragMenuConfig = getDragMenuConfig(direction, getEditorContainerWidth, tableMap, index, targetCellPosition, selectionRect);
38
64
  const {
39
65
  menuItems,
40
66
  menuCallback
@@ -46,17 +72,33 @@ export const DragMenu = ({
46
72
  } = editorView;
47
73
  toggleDragMenu(false)(state, dispatch);
48
74
  };
49
- const onMenuItemActivated = ({
75
+ const handleMenuItemActivated = ({
50
76
  item
51
77
  }) => {
52
78
  var _menuCallback$item$va;
53
- (_menuCallback$item$va = menuCallback[item.value.name]) === null || _menuCallback$item$va === void 0 ? void 0 : _menuCallback$item$va.call(menuCallback, editorView.state, editorView.dispatch);
79
+ (_menuCallback$item$va = menuCallback[item.value.name]) === null || _menuCallback$item$va === void 0 ? void 0 : _menuCallback$item$va.call(menuCallback, state, dispatch);
54
80
  closeMenu();
55
81
  };
82
+ const handleItemMouseEnter = ({
83
+ item
84
+ }) => {
85
+ var _item$value$name;
86
+ if (!selectionRect || !((_item$value$name = item.value.name) !== null && _item$value$name !== void 0 && _item$value$name.startsWith('delete'))) {
87
+ return;
88
+ }
89
+ (item.value.name === 'delete_column' ? hoverColumns(getSelectedColumnIndexes(selectionRect), true) : hoverRows(getSelectedRowIndexes(selectionRect), true))(state, dispatch);
90
+ };
91
+ const handleItemMouseLeave = ({
92
+ item
93
+ }) => {
94
+ if (['sort_column_asc', 'sort_column_desc', 'delete_column', 'delete_row'].indexOf(item.value.name) > -1) {
95
+ clearHoverSelection()(state, dispatch);
96
+ }
97
+ };
56
98
  if (!menuItems) {
57
99
  return null;
58
100
  }
59
- return /*#__PURE__*/React.createElement(DropdownMenu, {
101
+ return jsx(DropdownMenu, {
60
102
  mountTo: mountPoint
61
103
  //This needs be removed when the a11y is completely handled
62
104
  //Disabling key navigation now as it works only partially
@@ -70,7 +112,9 @@ export const DragMenu = ({
70
112
  }],
71
113
  isOpen: isOpen,
72
114
  onOpenChange: closeMenu,
73
- onItemActivated: onMenuItemActivated,
115
+ onItemActivated: handleMenuItemActivated,
116
+ onMouseEnter: handleItemMouseEnter,
117
+ onMouseLeave: handleItemMouseLeave,
74
118
  fitWidth: dragMenuDropdownWidth,
75
119
  boundariesElement: boundariesElement
76
120
  });