@atlaskit/editor-plugin-table 5.3.13 → 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 (139) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/plugins/table/event-handlers.js +6 -3
  3. package/dist/cjs/plugins/table/index.js +6 -4
  4. package/dist/cjs/plugins/table/pm-plugins/decorations/plugin.js +3 -7
  5. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-controls.js +1 -3
  6. package/dist/cjs/plugins/table/pm-plugins/drag-and-drop/plugin.js +11 -0
  7. package/dist/cjs/plugins/table/types.js +9 -2
  8. package/dist/cjs/plugins/table/ui/FloatingDragMenu/DragMenu.js +49 -11
  9. package/dist/cjs/plugins/table/ui/FloatingDragMenu/index.js +10 -5
  10. package/dist/cjs/plugins/table/ui/FloatingInsertButton/InsertButton.js +57 -9
  11. package/dist/cjs/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +9 -7
  12. package/dist/cjs/plugins/table/ui/FloatingInsertButton/index.js +13 -4
  13. package/dist/cjs/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +44 -5
  14. package/dist/cjs/plugins/table/ui/TableFloatingColumnControls/index.js +6 -4
  15. package/dist/cjs/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +35 -13
  16. package/dist/cjs/plugins/table/ui/TableFloatingControls/index.js +2 -0
  17. package/dist/cjs/plugins/table/ui/common-styles.js +1 -1
  18. package/dist/cjs/plugins/table/ui/icons/AddColLeftIcon.js +44 -0
  19. package/dist/cjs/plugins/table/ui/icons/AddColRightIcon.js +44 -0
  20. package/dist/cjs/plugins/table/ui/icons/AddRowAboveIcon.js +45 -0
  21. package/dist/cjs/plugins/table/ui/icons/AddRowBelowIcon.js +40 -0
  22. package/dist/cjs/plugins/table/ui/icons/index.js +29 -1
  23. package/dist/cjs/plugins/table/ui/ui-styles.js +27 -24
  24. package/dist/cjs/plugins/table/utils/dom.js +12 -4
  25. package/dist/cjs/plugins/table/utils/drag-menu.js +122 -10
  26. package/dist/cjs/plugins/table/utils/index.js +12 -0
  27. package/dist/es2019/plugins/table/event-handlers.js +5 -4
  28. package/dist/es2019/plugins/table/index.js +6 -4
  29. package/dist/es2019/plugins/table/pm-plugins/decorations/plugin.js +3 -7
  30. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-controls.js +1 -3
  31. package/dist/es2019/plugins/table/pm-plugins/drag-and-drop/plugin.js +12 -0
  32. package/dist/es2019/plugins/table/types.js +9 -2
  33. package/dist/es2019/plugins/table/ui/FloatingDragMenu/DragMenu.js +52 -8
  34. package/dist/es2019/plugins/table/ui/FloatingDragMenu/index.js +10 -5
  35. package/dist/es2019/plugins/table/ui/FloatingInsertButton/InsertButton.js +58 -7
  36. package/dist/es2019/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +9 -7
  37. package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +10 -4
  38. package/dist/es2019/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +46 -6
  39. package/dist/es2019/plugins/table/ui/TableFloatingColumnControls/index.js +7 -5
  40. package/dist/es2019/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +35 -14
  41. package/dist/es2019/plugins/table/ui/TableFloatingControls/index.js +2 -0
  42. package/dist/es2019/plugins/table/ui/common-styles.js +51 -3
  43. package/dist/es2019/plugins/table/ui/icons/AddColLeftIcon.js +35 -0
  44. package/dist/es2019/plugins/table/ui/icons/AddColRightIcon.js +35 -0
  45. package/dist/es2019/plugins/table/ui/icons/AddRowAboveIcon.js +36 -0
  46. package/dist/es2019/plugins/table/ui/icons/AddRowBelowIcon.js +31 -0
  47. package/dist/es2019/plugins/table/ui/icons/index.js +5 -1
  48. package/dist/es2019/plugins/table/ui/ui-styles.js +23 -1
  49. package/dist/es2019/plugins/table/utils/dom.js +5 -1
  50. package/dist/es2019/plugins/table/utils/drag-menu.js +118 -8
  51. package/dist/es2019/plugins/table/utils/index.js +1 -1
  52. package/dist/esm/plugins/table/event-handlers.js +7 -4
  53. package/dist/esm/plugins/table/index.js +6 -4
  54. package/dist/esm/plugins/table/pm-plugins/decorations/plugin.js +3 -7
  55. package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-controls.js +1 -3
  56. package/dist/esm/plugins/table/pm-plugins/drag-and-drop/plugin.js +11 -0
  57. package/dist/esm/plugins/table/types.js +9 -2
  58. package/dist/esm/plugins/table/ui/FloatingDragMenu/DragMenu.js +46 -8
  59. package/dist/esm/plugins/table/ui/FloatingDragMenu/index.js +10 -5
  60. package/dist/esm/plugins/table/ui/FloatingInsertButton/InsertButton.js +56 -8
  61. package/dist/esm/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +9 -7
  62. package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +10 -4
  63. package/dist/esm/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.js +45 -6
  64. package/dist/esm/plugins/table/ui/TableFloatingColumnControls/index.js +7 -5
  65. package/dist/esm/plugins/table/ui/TableFloatingControls/RowControls/DragControls.js +36 -14
  66. package/dist/esm/plugins/table/ui/TableFloatingControls/index.js +2 -0
  67. package/dist/esm/plugins/table/ui/common-styles.js +2 -2
  68. package/dist/esm/plugins/table/ui/icons/AddColLeftIcon.js +37 -0
  69. package/dist/esm/plugins/table/ui/icons/AddColRightIcon.js +37 -0
  70. package/dist/esm/plugins/table/ui/icons/AddRowAboveIcon.js +38 -0
  71. package/dist/esm/plugins/table/ui/icons/AddRowBelowIcon.js +33 -0
  72. package/dist/esm/plugins/table/ui/icons/index.js +5 -1
  73. package/dist/esm/plugins/table/ui/ui-styles.js +26 -23
  74. package/dist/esm/plugins/table/utils/dom.js +11 -3
  75. package/dist/esm/plugins/table/utils/drag-menu.js +120 -8
  76. package/dist/esm/plugins/table/utils/index.js +1 -1
  77. package/dist/types/plugins/table/types.d.ts +9 -2
  78. package/dist/types/plugins/table/ui/FloatingDragMenu/DragMenu.d.ts +5 -2
  79. package/dist/types/plugins/table/ui/FloatingDragMenu/index.d.ts +3 -1
  80. package/dist/types/plugins/table/ui/FloatingInsertButton/InsertButton.d.ts +5 -1
  81. package/dist/types/plugins/table/ui/FloatingInsertButton/getPopupOptions.d.ts +1 -1
  82. package/dist/types/plugins/table/ui/FloatingInsertButton/index.d.ts +1 -0
  83. package/dist/types/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +2 -1
  84. package/dist/types/plugins/table/ui/TableFloatingControls/RowControls/DragControls.d.ts +2 -0
  85. package/dist/types/plugins/table/ui/icons/AddColLeftIcon.d.ts +2 -0
  86. package/dist/types/plugins/table/ui/icons/AddColRightIcon.d.ts +2 -0
  87. package/dist/types/plugins/table/ui/icons/AddRowAboveIcon.d.ts +2 -0
  88. package/dist/types/plugins/table/ui/icons/AddRowBelowIcon.d.ts +2 -0
  89. package/dist/types/plugins/table/ui/icons/index.d.ts +4 -0
  90. package/dist/types/plugins/table/ui/ui-styles.d.ts +1 -0
  91. package/dist/types/plugins/table/utils/dom.d.ts +4 -1
  92. package/dist/types/plugins/table/utils/drag-menu.d.ts +6 -3
  93. package/dist/types/plugins/table/utils/index.d.ts +1 -1
  94. package/dist/types-ts4.5/plugins/table/types.d.ts +9 -2
  95. package/dist/types-ts4.5/plugins/table/ui/FloatingDragMenu/DragMenu.d.ts +5 -2
  96. package/dist/types-ts4.5/plugins/table/ui/FloatingDragMenu/index.d.ts +3 -1
  97. package/dist/types-ts4.5/plugins/table/ui/FloatingInsertButton/InsertButton.d.ts +5 -1
  98. package/dist/types-ts4.5/plugins/table/ui/FloatingInsertButton/getPopupOptions.d.ts +1 -1
  99. package/dist/types-ts4.5/plugins/table/ui/FloatingInsertButton/index.d.ts +1 -0
  100. package/dist/types-ts4.5/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +2 -1
  101. package/dist/types-ts4.5/plugins/table/ui/TableFloatingControls/RowControls/DragControls.d.ts +2 -0
  102. package/dist/types-ts4.5/plugins/table/ui/icons/AddColLeftIcon.d.ts +2 -0
  103. package/dist/types-ts4.5/plugins/table/ui/icons/AddColRightIcon.d.ts +2 -0
  104. package/dist/types-ts4.5/plugins/table/ui/icons/AddRowAboveIcon.d.ts +2 -0
  105. package/dist/types-ts4.5/plugins/table/ui/icons/AddRowBelowIcon.d.ts +2 -0
  106. package/dist/types-ts4.5/plugins/table/ui/icons/index.d.ts +4 -0
  107. package/dist/types-ts4.5/plugins/table/ui/ui-styles.d.ts +1 -0
  108. package/dist/types-ts4.5/plugins/table/utils/dom.d.ts +4 -1
  109. package/dist/types-ts4.5/plugins/table/utils/drag-menu.d.ts +6 -3
  110. package/dist/types-ts4.5/plugins/table/utils/index.d.ts +1 -1
  111. package/package.json +2 -1
  112. package/src/__tests__/unit/pm-plugins/decorations/plugin.ts +40 -194
  113. package/src/__tests__/unit/ui/RowDragControls.tsx +9 -11
  114. package/src/plugins/table/event-handlers.ts +15 -3
  115. package/src/plugins/table/index.tsx +4 -2
  116. package/src/plugins/table/pm-plugins/decorations/plugin.ts +2 -9
  117. package/src/plugins/table/pm-plugins/decorations/utils/column-controls.ts +1 -3
  118. package/src/plugins/table/pm-plugins/drag-and-drop/plugin.ts +9 -0
  119. package/src/plugins/table/types.ts +12 -2
  120. package/src/plugins/table/ui/FloatingDragMenu/DragMenu.tsx +73 -6
  121. package/src/plugins/table/ui/FloatingDragMenu/index.tsx +15 -3
  122. package/src/plugins/table/ui/FloatingInsertButton/InsertButton.tsx +82 -8
  123. package/src/plugins/table/ui/FloatingInsertButton/getPopupOptions.ts +28 -5
  124. package/src/plugins/table/ui/FloatingInsertButton/index.tsx +19 -7
  125. package/src/plugins/table/ui/TableFloatingColumnControls/ColumnControls/index.tsx +47 -3
  126. package/src/plugins/table/ui/TableFloatingColumnControls/index.tsx +11 -4
  127. package/src/plugins/table/ui/TableFloatingControls/RowControls/DragControls.tsx +49 -18
  128. package/src/plugins/table/ui/TableFloatingControls/index.tsx +2 -0
  129. package/src/plugins/table/ui/common-styles.ts +57 -2
  130. package/src/plugins/table/ui/icons/AddColLeftIcon.tsx +43 -0
  131. package/src/plugins/table/ui/icons/AddColRightIcon.tsx +43 -0
  132. package/src/plugins/table/ui/icons/AddRowAboveIcon.tsx +42 -0
  133. package/src/plugins/table/ui/icons/AddRowBelowIcon.tsx +36 -0
  134. package/src/plugins/table/ui/icons/index.ts +4 -0
  135. package/src/plugins/table/ui/ui-styles.ts +27 -1
  136. package/src/plugins/table/utils/dom.ts +11 -4
  137. package/src/plugins/table/utils/drag-menu.ts +158 -5
  138. package/src/plugins/table/utils/index.ts +2 -0
  139. package/tsconfig.app.json +3 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
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
+
9
+ ## 5.3.14
10
+
11
+ ### Patch Changes
12
+
13
+ - [#42038](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42038) [`071533736a8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/071533736a8) - Fixed an bug in the tables where the onBlur was causing the editor has focus flag to be reset to false. This would result in the drag handle disappearing due to the table not being active anymore.
14
+ - [#42188](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42188) [`5b8b565940b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/5b8b565940b) - Killed the outline for the drag handle button which appears only in firfox when the button has focus
15
+ - [#42186](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42186) [`20b5f464a2b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/20b5f464a2b) - [ux] Integrate drag menu with column control
16
+ - [#42148](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42148) [`fb0c3a2c035`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fb0c3a2c035) - Add row and column select functionality for table drag controls
17
+ - [#42182](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/42182) [`1053f5745d3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1053f5745d3) - Added autoscroller functionality to the table DnD plugin. When dragging rows/cols the table will auto scroll into view when the drag approaches the borders of the table
18
+
3
19
  ## 5.3.13
4
20
 
5
21
  ### Patch Changes
@@ -30,12 +30,15 @@ var isFocusingModal = function isFocusingModal(event) {
30
30
  var isFocusingFloatingToolbar = function isFocusingFloatingToolbar(event) {
31
31
  return event instanceof FocusEvent && event.relatedTarget instanceof HTMLElement && event.relatedTarget.closest('[role="toolbar"]');
32
32
  };
33
+ var isFocusingDragHandles = function isFocusingDragHandles(event) {
34
+ return event instanceof FocusEvent && event.relatedTarget instanceof HTMLElement && event.relatedTarget.closest('button') && event.relatedTarget.getAttribute('draggable') === 'true';
35
+ };
33
36
  var handleBlur = exports.handleBlur = function handleBlur(view, event) {
34
37
  var state = view.state,
35
38
  dispatch = view.dispatch;
36
39
  // IE version check for ED-4665
37
40
  // Calendar focus check for ED-10466
38
- if (_utils.browser.ie_version !== 11 && !isFocusingCalendar(event) && !isFocusingModal(event) && !isFocusingFloatingToolbar(event)) {
41
+ if (_utils.browser.ie_version !== 11 && !isFocusingCalendar(event) && !isFocusingModal(event) && !isFocusingFloatingToolbar(event) && !isFocusingDragHandles(event)) {
39
42
  (0, _commands.setEditorFocus)(false)(state, dispatch);
40
43
  }
41
44
  event.preventDefault();
@@ -192,7 +195,7 @@ var handleMouseMove = exports.handleMouseMove = function handleMouseMove(view, e
192
195
  return false;
193
196
  }
194
197
  var element = event.target;
195
- if ((0, _utils3.isColumnControlsDecorations)(element)) {
198
+ if ((0, _utils3.isColumnControlsDecorations)(element) || (0, _utils3.isDragColumnFloatingInsertDot)(element)) {
196
199
  var state = view.state,
197
200
  dispatch = view.dispatch;
198
201
  var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
@@ -206,7 +209,7 @@ var handleMouseMove = exports.handleMouseMove = function handleMouseMove(view, e
206
209
  return (0, _commands.showInsertColumnButton)(positionColumn)(state, dispatch);
207
210
  }
208
211
  }
209
- if ((0, _utils3.isRowControlsButton)(element)) {
212
+ if ((0, _utils3.isRowControlsButton)(element) || (0, _utils3.isDragRowFloatingInsertDot)(element)) {
210
213
  var _state3 = view.state,
211
214
  _dispatch4 = view.dispatch;
212
215
  var _getPluginState4 = (0, _pluginFactory.getPluginState)(_state3),
@@ -275,8 +275,8 @@ var tablesPlugin = function tablesPlugin(_ref) {
275
275
  insertRowButtonIndex = _ref14.insertRowButtonIndex,
276
276
  isHeaderColumnEnabled = _ref14.isHeaderColumnEnabled,
277
277
  isHeaderRowEnabled = _ref14.isHeaderRowEnabled,
278
- tableWrapperTarget = _ref14.tableWrapperTarget,
279
- isDragAndDropEnabled = _ref14.isDragAndDropEnabled;
278
+ isDragAndDropEnabled = _ref14.isDragAndDropEnabled,
279
+ tableWrapperTarget = _ref14.tableWrapperTarget;
280
280
  var allowControls = pluginConfig.allowControls;
281
281
  var stickyHeader = stickyHeadersState ? (0, _stickyHeaders.findStickyHeaderForTable)(stickyHeadersState, tablePos) : undefined;
282
282
  var LayoutContent = options && !options.tableResizingEnabled && (0, _utils3.isLayoutSupported)(state) && options.breakoutEnabled ? /*#__PURE__*/_react.default.createElement(_LayoutButton.default, {
@@ -309,6 +309,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
309
309
  insertRowButtonIndex: insertRowButtonIndex,
310
310
  isHeaderColumnEnabled: isHeaderColumnEnabled,
311
311
  isHeaderRowEnabled: isHeaderRowEnabled,
312
+ isDragAndDropEnabled: isDragAndDropEnabled,
312
313
  editorView: editorView,
313
314
  mountPoint: popupsMountPoint,
314
315
  boundariesElement: popupsBoundariesElement,
@@ -336,8 +337,9 @@ var tablesPlugin = function tablesPlugin(_ref) {
336
337
  targetCellPosition: targetCellPosition,
337
338
  direction: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuDirection,
338
339
  index: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuIndex,
339
- isOpen: !!(dragAndDropState !== null && dragAndDropState !== void 0 && dragAndDropState.isDragMenuOpen) && !isResizing
340
- }), allowControls && !isResizing && /*#__PURE__*/_react.default.createElement(_FloatingDeleteButton.default, {
340
+ isOpen: !!(dragAndDropState !== null && dragAndDropState !== void 0 && dragAndDropState.isDragMenuOpen) && !isResizing,
341
+ getEditorContainerWidth: defaultGetEditorContainerWidth
342
+ }), allowControls && !isDragAndDropEnabled && !isResizing && /*#__PURE__*/_react.default.createElement(_FloatingDeleteButton.default, {
341
343
  editorView: editorView,
342
344
  selection: editorView.state.selection,
343
345
  tableRef: tableRef,
@@ -17,7 +17,7 @@ var getDecorations = exports.getDecorations = function getDecorations(state) {
17
17
  return pluginKey.getState(state);
18
18
  };
19
19
  var handleDocOrSelectionChanged = exports.handleDocOrSelectionChanged = function handleDocOrSelectionChanged(tr, decorationSet, oldState, newState) {
20
- var _tableWidthPluginKey$, _tableWidthPluginKey$2, _tr$getMeta;
20
+ var _tableWidthPluginKey$, _tableWidthPluginKey$2;
21
21
  var isResizing = (_tableWidthPluginKey$ = _tableWidth.pluginKey.getState(newState)) === null || _tableWidthPluginKey$ === void 0 ? void 0 : _tableWidthPluginKey$.resizing;
22
22
  var wasResizing = (_tableWidthPluginKey$2 = _tableWidth.pluginKey.getState(oldState)) === null || _tableWidthPluginKey$2 === void 0 ? void 0 : _tableWidthPluginKey$2.resizing;
23
23
  var changedResizing = isResizing !== wasResizing;
@@ -25,7 +25,7 @@ var handleDocOrSelectionChanged = exports.handleDocOrSelectionChanged = function
25
25
  // Remove column controls when resizing and don't add column decoration controls when DnD enabled
26
26
  if (isResizing || (0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.drag-and-drop')) {
27
27
  return _view.DecorationSet.empty;
28
- } else if (tr.docChanged || tr.selection instanceof _cellSelection.CellSelection || changedResizing || ((_tr$getMeta = tr.getMeta(_pluginKey.pluginKey)) === null || _tr$getMeta === void 0 ? void 0 : _tr$getMeta.type) === 'HOVER_CELL') {
28
+ } else if (tr.docChanged || tr.selection instanceof _cellSelection.CellSelection || changedResizing) {
29
29
  return (0, _utils.buildColumnControlsDecorations)({
30
30
  decorationSet: decorationSet,
31
31
  tr: tr
@@ -48,16 +48,12 @@ var createPlugin = exports.createPlugin = function createPlugin() {
48
48
  return _view.DecorationSet.empty;
49
49
  },
50
50
  apply: function apply(tr, decorationSet, oldState, newState) {
51
- var _tablePluginKey$getSt, _tablePluginKey$getSt2;
52
51
  var pluginState = decorationSet;
53
52
  var meta = tr.getMeta(_pluginKey.pluginKey);
54
- var previousHover = (_tablePluginKey$getSt = _pluginKey.pluginKey.getState(oldState)) === null || _tablePluginKey$getSt === void 0 ? void 0 : _tablePluginKey$getSt.hoveredCell;
55
- var newHover = (_tablePluginKey$getSt2 = _pluginKey.pluginKey.getState(newState)) === null || _tablePluginKey$getSt2 === void 0 ? void 0 : _tablePluginKey$getSt2.hoveredCell;
56
- var changedCellHover = (previousHover === null || previousHover === void 0 ? void 0 : previousHover.colIndex) !== (newHover === null || newHover === void 0 ? void 0 : newHover.colIndex) || (previousHover === null || previousHover === void 0 ? void 0 : previousHover.rowIndex) !== (newHover === null || newHover === void 0 ? void 0 : newHover.rowIndex);
57
53
  if (meta && meta.data && meta.data.decorationSet) {
58
54
  pluginState = meta.data.decorationSet;
59
55
  }
60
- if (tr.docChanged || tr.selectionSet || tr.getMeta(_tableWidth.pluginKey) || changedCellHover) {
56
+ if (tr.docChanged || tr.selectionSet || tr.getMeta(_tableWidth.pluginKey)) {
61
57
  pluginState = pluginState.map(tr.mapping, tr.doc);
62
58
  return handleDocOrSelectionChanged(tr, pluginState, oldState, newState);
63
59
  }
@@ -8,7 +8,6 @@ var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
8
8
  var _utils = require("@atlaskit/editor-tables/utils");
9
9
  var _types = require("../../../types");
10
10
  var _decoration = require("../../../utils/decoration");
11
- var _pluginKey = require("../../plugin-key");
12
11
  var _composeDecorations = require("./compose-decorations");
13
12
  // @ts-ignore -- ReadonlyTransaction is a local declaration and will cause a TS2305 error in CCFE typecheck
14
13
 
@@ -33,10 +32,9 @@ var maybeUpdateColumnControlsDecoration = function maybeUpdateColumnControlsDeco
33
32
  var decorationSet = _ref3.decorationSet,
34
33
  tr = _ref3.tr;
35
34
  var table = (0, _utils.findTable)(tr.selection);
36
- var meta = tr.getMeta(_pluginKey.pluginKey);
37
35
 
38
36
  // avoid re-drawing state if dnd decorations don't need to be updated
39
- if (!table && (meta === null || meta === void 0 ? void 0 : meta.type) !== 'HOVER_CELL') {
37
+ if (!table) {
40
38
  return decorationSet;
41
39
  }
42
40
  return (0, _decoration.updateDecorations)(tr.doc, decorationSet, (0, _decoration.createColumnControlsDecoration)(tr.selection), _types.TableDecorations.COLUMN_CONTROLS_DECORATIONS);
@@ -9,6 +9,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
9
9
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
10
10
  var _view = require("@atlaskit/editor-prosemirror/view");
11
11
  var _utils = require("@atlaskit/editor-tables/utils");
12
+ var _pragmaticDragAndDropReactBeautifulDndAutoscroll = require("@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll");
12
13
  var _element = require("@atlaskit/pragmatic-drag-and-drop/adapter/element");
13
14
  var _mergedCells = require("../../utils/merged-cells");
14
15
  var _pluginFactory = require("../plugin-factory");
@@ -87,7 +88,16 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, eventD
87
88
  // watch for changes
88
89
  return localId === (tableNode === null || tableNode === void 0 ? void 0 : tableNode.attrs.localId);
89
90
  },
91
+ onDragStart: function onDragStart(_ref3) {
92
+ var location = _ref3.location;
93
+ _pragmaticDragAndDropReactBeautifulDndAutoscroll.autoScroller.start({
94
+ input: location.current.input
95
+ });
96
+ },
90
97
  onDrag: function onDrag(event) {
98
+ _pragmaticDragAndDropReactBeautifulDndAutoscroll.autoScroller.updateInput({
99
+ input: event.location.current.input
100
+ });
91
101
  var data = (0, _monitor.getDraggableDataFromEvent)(event);
92
102
  // If no data can be found then it's most like we do not want to perform any drag actions
93
103
  if (!data) {
@@ -103,6 +113,7 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatch, eventD
103
113
  (0, _commands.setDropTarget)(dropTargetType, targetAdjustedIndex)(editorView.state, editorView.dispatch);
104
114
  },
105
115
  onDrop: function onDrop(event) {
116
+ _pragmaticDragAndDropReactBeautifulDndAutoscroll.autoScroller.stop();
106
117
  var data = (0, _monitor.getDraggableDataFromEvent)(event);
107
118
 
108
119
  // If no data can be found then it's most like we do not want to perform any drop action
@@ -74,6 +74,9 @@ var TableCssClassName = exports.TableCssClassName = _objectSpread(_objectSpread(
74
74
  CONTROLS_INSERT_LINE: "".concat(_adfSchema.tablePrefixSelector, "-controls__insert-line"),
75
75
  CONTROLS_BUTTON_OVERLAY: "".concat(_adfSchema.tablePrefixSelector, "-controls__button-overlay"),
76
76
  LAYOUT_BUTTON: "".concat(_adfSchema.tablePrefixSelector, "-layout-button"),
77
+ DRAG_CONTROLS_INSERT_BUTTON: "".concat(_adfSchema.tablePrefixSelector, "-controls__drag-insert-button"),
78
+ DRAG_CONTROLS_INSERT_BUTTON_INNER: "".concat(_adfSchema.tablePrefixSelector, "-controls__drag-insert-button-inner"),
79
+ DRAG_CONTROLS_INSERT_BUTTON_WRAP: "".concat(_adfSchema.tablePrefixSelector, "-controls__drag-insert-button-wrap"),
77
80
  CONTROLS_INSERT_MARKER: "".concat(_adfSchema.tablePrefixSelector, "-controls__insert-marker"),
78
81
  CONTROLS_INSERT_COLUMN: "".concat(_adfSchema.tablePrefixSelector, "-controls__insert-column"),
79
82
  CONTROLS_INSERT_ROW: "".concat(_adfSchema.tablePrefixSelector, "-controls__insert-row"),
@@ -86,8 +89,12 @@ var TableCssClassName = exports.TableCssClassName = _objectSpread(_objectSpread(
86
89
  CORNER_CONTROLS_INSERT_COLUMN_MARKER: "".concat(_adfSchema.tablePrefixSelector, "-corner-controls__insert-column-marker"),
87
90
  CONTROLS_CORNER_BUTTON: "".concat(_adfSchema.tablePrefixSelector, "-corner-button"),
88
91
  /** Controls with drag handle */
89
- COLUMN_CONTROLS_WITH_DRAG: "".concat(_adfSchema.tablePrefixSelector, "-column-controls-with-drag"),
90
- ROW_CONTROLS_WITH_DRAG: "".concat(_adfSchema.tablePrefixSelector, "-row-controls-with-drag"),
92
+ DRAG_ROW_CONTROLS: "".concat(_adfSchema.tablePrefixSelector, "-drag-row-controls"),
93
+ DRAG_ROW_FLOATING_INSERT_DOT_WRAPPER: "".concat(_adfSchema.tablePrefixSelector, "-drag-row-floating-insert-dot-wrapper"),
94
+ DRAG_ROW_FLOATING_INSERT_DOT: "".concat(_adfSchema.tablePrefixSelector, "-drag-row-floating-insert-dot"),
95
+ DRAG_COLUMN_CONTROLS: "".concat(_adfSchema.tablePrefixSelector, "-drag-column-controls"),
96
+ DRAG_COLUMN_FLOATING_INSERT_DOT_WRAPPER: "".concat(_adfSchema.tablePrefixSelector, "-drag-columns-floating-insert-dot-wrapper"),
97
+ DRAG_COLUMN_FLOATING_INSERT_DOT: "".concat(_adfSchema.tablePrefixSelector, "-drag-columns-floating-insert-dot"),
91
98
  DRAG_HANDLE_BUTTON_CONTAINER: "".concat(_adfSchema.tablePrefixSelector, "-drag-handle-button-container"),
92
99
  /** Other classes */
93
100
  NUMBERED_COLUMN: "".concat(_adfSchema.tablePrefixSelector, "-numbered-column"),
@@ -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
  });
@@ -9,6 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
  var _ui = require("@atlaskit/editor-common/ui");
10
10
  var _utils = require("@atlaskit/editor-prosemirror/utils");
11
11
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
12
+ var _tableMap = require("@atlaskit/editor-tables/table-map");
12
13
  var _consts = require("../consts");
13
14
  var _DragMenu = require("./DragMenu");
14
15
  var FloatingDragMenu = function FloatingDragMenu(_ref) {
@@ -21,7 +22,8 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
21
22
  tableNode = _ref.tableNode,
22
23
  direction = _ref.direction,
23
24
  index = _ref.index,
24
- targetCellPosition = _ref.targetCellPosition;
25
+ targetCellPosition = _ref.targetCellPosition,
26
+ getEditorContainerWidth = _ref.getEditorContainerWidth;
25
27
  if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
26
28
  return null;
27
29
  }
@@ -30,10 +32,11 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
30
32
  if (!targetCellRef) {
31
33
  return null;
32
34
  }
33
-
35
+ var tableMap = tableNode ? _tableMap.TableMap.get(tableNode) : undefined;
36
+ var offset = direction === 'row' ? [7, 0] : index === ((tableMap === null || tableMap === void 0 ? void 0 : tableMap.width) || 1) - 1 ? [14, 0] : [-14, 0];
34
37
  // TODO: we will need to adjust the alignment and offset values depending on whether this is a row or column menu.
35
38
  return /*#__PURE__*/_react.default.createElement(_ui.Popup, {
36
- alignX: "left",
39
+ alignX: direction === 'row' ? 'left' : 'center',
37
40
  alignY: "top",
38
41
  target: targetCellRef,
39
42
  mountTo: mountPoint,
@@ -45,7 +48,7 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
45
48
  ,
46
49
  zIndex: _editorSharedStyles.akEditorFloatingOverlapPanelZIndex,
47
50
  forcePlacement: true,
48
- offset: [7, 0],
51
+ offset: offset,
49
52
  stick: true
50
53
  }, /*#__PURE__*/_react.default.createElement(_DragMenu.DragMenu, {
51
54
  editorView: editorView,
@@ -53,7 +56,9 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
53
56
  boundariesElement: boundariesElement,
54
57
  tableNode: tableNode,
55
58
  direction: direction,
56
- index: index
59
+ index: index,
60
+ targetCellPosition: targetCellPosition,
61
+ getEditorContainerWidth: getEditorContainerWidth
57
62
  }));
58
63
  };
59
64
  FloatingDragMenu.displayName = 'FloatingDragMenu';
@@ -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.default = void 0;
7
+ exports.default = exports.InsertButtonForDragAndDrop = exports.DragAndDropInsertButton = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _reactIntlNext = require("react-intl-next");
10
10
  var _keymaps = require("@atlaskit/editor-common/keymaps");
@@ -15,6 +15,8 @@ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
15
15
  var _types = require("../../types");
16
16
  var _consts = require("../consts");
17
17
  var _messages = _interopRequireDefault(require("../messages"));
18
+ /* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
19
+
18
20
  var getInsertLineHeight = function getInsertLineHeight(tableRef, hasStickyHeaders) {
19
21
  // The line gets height 100% from the table,
20
22
  // but since we have an overflow on the left,
@@ -30,7 +32,7 @@ var getToolbarSize = function getToolbarSize(tableRef) {
30
32
  }
31
33
  return _consts.tableToolbarSize;
32
34
  };
33
- var getInsertLineWidth = function getInsertLineWidth(tableRef) {
35
+ var getInsertLineWidth = function getInsertLineWidth(tableRef, isDragAndDropEnabled) {
34
36
  // The line gets width 100% from the table,
35
37
  // but since we have an overflow on the left,
36
38
  // we should add an offset to make up for it.
@@ -41,22 +43,68 @@ var getInsertLineWidth = function getInsertLineWidth(tableRef) {
41
43
  var _ref = parentElement,
42
44
  scrollLeft = _ref.scrollLeft;
43
45
  var diff = offsetWidth - parentOffsetWidth;
44
- var toolbarSize = getToolbarSize(tableRef);
46
+ var toolbarSize = isDragAndDropEnabled ? 0 : getToolbarSize(tableRef);
45
47
  return Math.min(offsetWidth + toolbarSize, parentOffsetWidth + toolbarSize - Math.max(scrollLeft - diff, 0)) + LINE_OFFSET;
46
48
  };
47
49
  var tooltipMessageByType = function tooltipMessageByType(type) {
48
50
  return type === 'row' ? _messages.default.insertRow : _messages.default.insertColumn;
49
51
  };
50
- var InsertButton = function InsertButton(_ref2) {
52
+ var InsertButtonForDragAndDrop = exports.InsertButtonForDragAndDrop = function InsertButtonForDragAndDrop(_ref2) {
51
53
  var onMouseDown = _ref2.onMouseDown,
52
54
  tableRef = _ref2.tableRef,
53
- direction = _ref2.direction,
55
+ type = _ref2.type,
54
56
  formatMessage = _ref2.intl.formatMessage,
55
57
  hasStickyHeaders = _ref2.hasStickyHeaders;
56
58
  var content = /*#__PURE__*/_react.default.createElement(_tooltip.default, {
57
59
  content: /*#__PURE__*/_react.default.createElement(_keymaps.ToolTipContent, {
58
- description: formatMessage(tooltipMessageByType(direction)),
59
- keymap: direction === 'row' ? _keymaps.addRowAfter : _keymaps.addColumnAfter
60
+ description: formatMessage(tooltipMessageByType(type)),
61
+ keymap: type === 'row' ? _keymaps.addRowAfter : _keymaps.addColumnAfter
62
+ }),
63
+ position: "top"
64
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
65
+ className: _types.TableCssClassName.DRAG_CONTROLS_INSERT_BUTTON_INNER
66
+ }, /*#__PURE__*/_react.default.createElement("button", {
67
+ type: "button",
68
+ className: _types.TableCssClassName.DRAG_CONTROLS_INSERT_BUTTON,
69
+ onMouseDown: onMouseDown
70
+ }, /*#__PURE__*/_react.default.createElement("svg", {
71
+ width: "10",
72
+ height: "10",
73
+ viewBox: "0 0 10 10",
74
+ fill: "none",
75
+ xmlns: "http://www.w3.org/2000/svg"
76
+ }, /*#__PURE__*/_react.default.createElement("path", {
77
+ fillRule: "evenodd",
78
+ clipRule: "evenodd",
79
+ d: "M5.41667 4.58333V2.91667C5.41667 2.80616 5.37277 2.70018 5.29463 2.62204C5.21649 2.5439 5.11051 2.5 5 2.5C4.88949 2.5 4.78351 2.5439 4.70537 2.62204C4.62723 2.70018 4.58333 2.80616 4.58333 2.91667V4.58333H2.91667C2.80616 4.58333 2.70018 4.62723 2.62204 4.70537C2.5439 4.78351 2.5 4.88949 2.5 5C2.5 5.11051 2.5439 5.21649 2.62204 5.29463C2.70018 5.37277 2.80616 5.41667 2.91667 5.41667H4.58333V7.08333C4.58333 7.19384 4.62723 7.29982 4.70537 7.37796C4.78351 7.4561 4.88949 7.5 5 7.5C5.11051 7.5 5.21649 7.4561 5.29463 7.37796C5.37277 7.29982 5.41667 7.19384 5.41667 7.08333V5.41667H7.08333C7.19384 5.41667 7.29982 5.37277 7.37796 5.29463C7.4561 5.21649 7.5 5.11051 7.5 5C7.5 4.88949 7.4561 4.78351 7.37796 4.70537C7.29982 4.62723 7.19384 4.58333 7.08333 4.58333H5.41667Z",
80
+ fill: "currentColor"
81
+ })))), /*#__PURE__*/_react.default.createElement("div", {
82
+ className: _types.TableCssClassName.CONTROLS_INSERT_LINE,
83
+ style: type === 'row' ? {
84
+ width: getInsertLineWidth(tableRef, true),
85
+ left: '14px'
86
+ } : {
87
+ height: getInsertLineHeight(tableRef, hasStickyHeaders) - 11
88
+ }
89
+ })));
90
+ var floatingButtonClassName = type === 'column' ? _types.TableCssClassName.CONTROLS_FLOATING_BUTTON_COLUMN : _types.TableCssClassName.CONTROLS_FLOATING_BUTTON_ROW;
91
+ return /*#__PURE__*/_react.default.createElement("div", {
92
+ className: floatingButtonClassName
93
+ }, /*#__PURE__*/_react.default.createElement("div", {
94
+ className: "".concat(_types.TableCssClassName.CONTROLS_INSERT_BUTTON_WRAP, " ").concat(_types.TableCssClassName.CONTROLS_INSERT_ROW)
95
+ }, content));
96
+ };
97
+ var DragAndDropInsertButton = exports.DragAndDropInsertButton = (0, _reactIntlNext.injectIntl)(InsertButtonForDragAndDrop);
98
+ var InsertButton = function InsertButton(_ref3) {
99
+ var onMouseDown = _ref3.onMouseDown,
100
+ tableRef = _ref3.tableRef,
101
+ type = _ref3.type,
102
+ formatMessage = _ref3.intl.formatMessage,
103
+ hasStickyHeaders = _ref3.hasStickyHeaders;
104
+ var content = /*#__PURE__*/_react.default.createElement(_tooltip.default, {
105
+ content: /*#__PURE__*/_react.default.createElement(_keymaps.ToolTipContent, {
106
+ description: formatMessage(tooltipMessageByType(type)),
107
+ keymap: type === 'row' ? _keymaps.addRowAfter : _keymaps.addColumnAfter
60
108
  }),
61
109
  position: "top"
62
110
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
@@ -73,13 +121,13 @@ var InsertButton = function InsertButton(_ref2) {
73
121
  fillRule: "evenodd"
74
122
  })))), /*#__PURE__*/_react.default.createElement("div", {
75
123
  className: _types.TableCssClassName.CONTROLS_INSERT_LINE,
76
- style: direction === 'row' ? {
124
+ style: type === 'row' ? {
77
125
  width: getInsertLineWidth(tableRef)
78
126
  } : {
79
127
  height: getInsertLineHeight(tableRef, hasStickyHeaders)
80
128
  }
81
129
  })));
82
- var floatingButtonClassName = direction === 'column' ? _types.TableCssClassName.CONTROLS_FLOATING_BUTTON_COLUMN : _types.TableCssClassName.CONTROLS_FLOATING_BUTTON_ROW;
130
+ var floatingButtonClassName = type === 'column' ? _types.TableCssClassName.CONTROLS_FLOATING_BUTTON_COLUMN : _types.TableCssClassName.CONTROLS_FLOATING_BUTTON_ROW;
83
131
  return /*#__PURE__*/_react.default.createElement("div", {
84
132
  className: floatingButtonClassName
85
133
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -13,9 +13,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
13
13
  var HORIZONTAL_ALIGN_COLUMN_BUTTON = -(_consts.tableInsertColumnButtonSize / 2);
14
14
  var HORIZONTAL_ALIGN_NUMBERED_COLUMN_BUTTON = HORIZONTAL_ALIGN_COLUMN_BUTTON + _editorSharedStyles.akEditorTableNumberColumnWidth;
15
15
  var VERTICAL_ALIGN_COLUMN_BUTTON = _consts.tableToolbarSize + _consts.tableInsertColumnButtonOffset;
16
+ var VERTICAL_ALIGN_COLUMN_BUTTON_DRAG = _consts.tableInsertColumnButtonOffset;
16
17
  var HORIZONTAL_ALIGN_ROW_BUTTON = -(_consts.tableToolbarSize + _consts.tableInsertColumnButtonOffset + _consts.tableInsertColumnButtonSize);
18
+ var HORIZONTAL_ALIGN_ROW_BUTTON_DRAG = -18;
17
19
  var VERTICAL_ALIGN_ROW_BUTTON = _consts.tableInsertColumnButtonSize / 2;
18
- function getRowOptions(index) {
20
+ function getRowOptions(index, isDragAndDropEnabled) {
19
21
  var defaultOptions = {
20
22
  alignX: 'left',
21
23
  alignY: 'bottom',
@@ -32,16 +34,16 @@ function getRowOptions(index) {
32
34
  onPositionCalculated: function onPositionCalculated(position) {
33
35
  return _objectSpread(_objectSpread({}, position), {}, {
34
36
  // Left position should be always the offset (To place in the correct position even if the table has overflow).
35
- left: HORIZONTAL_ALIGN_ROW_BUTTON
37
+ left: isDragAndDropEnabled ? HORIZONTAL_ALIGN_ROW_BUTTON_DRAG : HORIZONTAL_ALIGN_ROW_BUTTON
36
38
  });
37
39
  }
38
40
  });
39
41
  }
40
- function getColumnOptions(index, tableContainer, hasNumberedColumns) {
42
+ function getColumnOptions(index, tableContainer, hasNumberedColumns, isDragAndDropEnabled) {
41
43
  var options = {
42
44
  alignX: 'end',
43
45
  alignY: 'top',
44
- offset: [HORIZONTAL_ALIGN_COLUMN_BUTTON, VERTICAL_ALIGN_COLUMN_BUTTON],
46
+ offset: [HORIZONTAL_ALIGN_COLUMN_BUTTON, isDragAndDropEnabled ? VERTICAL_ALIGN_COLUMN_BUTTON_DRAG : VERTICAL_ALIGN_COLUMN_BUTTON],
45
47
  // :: (position: PopupPosition) -> PopupPosition
46
48
  // Limit the InsertButton position to the table container
47
49
  // if the left position starts before it
@@ -77,12 +79,12 @@ function getColumnOptions(index, tableContainer, hasNumberedColumns) {
77
79
  }
78
80
  return options;
79
81
  }
80
- function getPopupOptions(direction, index, hasNumberedColumns, tableContainer) {
82
+ function getPopupOptions(direction, index, hasNumberedColumns, isDragAndDropEnabled, tableContainer) {
81
83
  switch (direction) {
82
84
  case 'column':
83
- return getColumnOptions(index, tableContainer, hasNumberedColumns);
85
+ return getColumnOptions(index, tableContainer, hasNumberedColumns, isDragAndDropEnabled);
84
86
  case 'row':
85
- return getRowOptions(index);
87
+ return getRowOptions(index, isDragAndDropEnabled);
86
88
  default:
87
89
  return {};
88
90
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -27,7 +28,9 @@ var _commandsWithAnalytics = require("../../commands-with-analytics");
27
28
  var _types = require("../../types");
28
29
  var _utils4 = require("../../utils");
29
30
  var _getPopupOptions = _interopRequireDefault(require("./getPopupOptions"));
30
- var _InsertButton = _interopRequireDefault(require("./InsertButton"));
31
+ var _InsertButton = _interopRequireWildcard(require("./InsertButton"));
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
34
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
32
35
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
33
36
  var FloatingInsertButton = exports.FloatingInsertButton = /*#__PURE__*/function (_React$Component) {
@@ -54,6 +57,7 @@ var FloatingInsertButton = exports.FloatingInsertButton = /*#__PURE__*/function
54
57
  boundariesElement = _this$props.boundariesElement,
55
58
  isHeaderColumnEnabled = _this$props.isHeaderColumnEnabled,
56
59
  isHeaderRowEnabled = _this$props.isHeaderRowEnabled,
60
+ isDragAndDropEnabled = _this$props.isDragAndDropEnabled,
57
61
  dispatchAnalyticsEvent = _this$props.dispatchAnalyticsEvent;
58
62
  var type = typeof insertColumnButtonIndex !== 'undefined' ? 'column' : typeof insertRowButtonIndex !== 'undefined' ? 'row' : null;
59
63
  if (!tableNode || !tableRef || !type) {
@@ -128,10 +132,15 @@ var FloatingInsertButton = exports.FloatingInsertButton = /*#__PURE__*/function
128
132
  scrollableElement: tableWrapper,
129
133
  forcePlacement: true,
130
134
  allowOutOfBounds: true
131
- }, (0, _getPopupOptions.default)(type, index, hasNumberedColumns, tableContainerWrapper), {
135
+ }, (0, _getPopupOptions.default)(type, index, hasNumberedColumns, !!isDragAndDropEnabled, tableContainerWrapper), {
132
136
  zIndex: zIndex
133
- }), /*#__PURE__*/_react.default.createElement(_InsertButton.default, {
134
- direction: type,
137
+ }), isDragAndDropEnabled ? /*#__PURE__*/_react.default.createElement(_InsertButton.DragAndDropInsertButton, {
138
+ type: type,
139
+ tableRef: tableRef,
140
+ onMouseDown: type === 'column' ? this.insertColumn : this.insertRow,
141
+ hasStickyHeaders: this.props.hasStickyHeaders || false
142
+ }) : /*#__PURE__*/_react.default.createElement(_InsertButton.default, {
143
+ type: type,
135
144
  tableRef: tableRef,
136
145
  onMouseDown: type === 'column' ? this.insertColumn : this.insertRow,
137
146
  hasStickyHeaders: this.props.hasStickyHeaders || false