@atlaskit/editor-plugin-table 5.3.22 → 5.3.24

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 (72) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/plugins/table/nodeviews/TableRow.js +1 -1
  3. package/dist/cjs/plugins/table/pm-plugins/drag-and-drop/plugin.js +1 -1
  4. package/dist/cjs/plugins/table/pm-plugins/keymap.js +1 -1
  5. package/dist/cjs/plugins/table/ui/FloatingDragMenu/DragMenu.js +24 -6
  6. package/dist/cjs/plugins/table/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.js +1 -1
  7. package/dist/es2019/plugins/table/nodeviews/TableRow.js +1 -1
  8. package/dist/es2019/plugins/table/pm-plugins/drag-and-drop/plugin.js +1 -1
  9. package/dist/es2019/plugins/table/pm-plugins/keymap.js +1 -1
  10. package/dist/es2019/plugins/table/ui/FloatingDragMenu/DragMenu.js +18 -6
  11. package/dist/es2019/plugins/table/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.js +1 -1
  12. package/dist/esm/plugins/table/nodeviews/TableRow.js +1 -1
  13. package/dist/esm/plugins/table/pm-plugins/drag-and-drop/plugin.js +1 -1
  14. package/dist/esm/plugins/table/pm-plugins/keymap.js +1 -1
  15. package/dist/esm/plugins/table/ui/FloatingDragMenu/DragMenu.js +23 -6
  16. package/dist/esm/plugins/table/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.js +1 -1
  17. package/package.json +3 -3
  18. package/src/__tests__/unit/analytics.ts +2 -1
  19. package/src/__tests__/unit/collab.ts +2 -1
  20. package/src/__tests__/unit/commands/go-to-next-cell.ts +1 -0
  21. package/src/__tests__/unit/commands/insert.ts +1 -0
  22. package/src/__tests__/unit/commands/misc.ts +1 -0
  23. package/src/__tests__/unit/commands/sort.ts +2 -1
  24. package/src/__tests__/unit/commands.ts +1 -0
  25. package/src/__tests__/unit/copy-paste.ts +2 -1
  26. package/src/__tests__/unit/event-handlers/index.ts +2 -1
  27. package/src/__tests__/unit/event-handlers.ts +2 -1
  28. package/src/__tests__/unit/fix-tables.ts +2 -1
  29. package/src/__tests__/unit/get-toolbar-config.ts +1 -0
  30. package/src/__tests__/unit/handlers.ts +2 -1
  31. package/src/__tests__/unit/hover-selection.ts +2 -1
  32. package/src/__tests__/unit/index.ts +2 -1
  33. package/src/__tests__/unit/layout.ts +2 -1
  34. package/src/__tests__/unit/nodeviews/TableComponent.tsx +1 -1
  35. package/src/__tests__/unit/nodeviews/TableContainer.tsx +1 -1
  36. package/src/__tests__/unit/nodeviews/cell.ts +2 -1
  37. package/src/__tests__/unit/nodeviews/table.ts +1 -0
  38. package/src/__tests__/unit/pm-plugins/decorations/column-resizing.ts +1 -0
  39. package/src/__tests__/unit/pm-plugins/decorations/plugin.ts +1 -0
  40. package/src/__tests__/unit/pm-plugins/main.ts +1 -0
  41. package/src/__tests__/unit/pm-plugins/safari-delete-composition-text-issue-workaround.ts +2 -1
  42. package/src/__tests__/unit/pm-plugins/sticky-headers/tableRow.tsx +1 -0
  43. package/src/__tests__/unit/pm-plugins/table-resizing/event-handlers.ts +1 -0
  44. package/src/__tests__/unit/pm-plugins/table-width.ts +2 -1
  45. package/src/__tests__/unit/sort-column.ts +2 -1
  46. package/src/__tests__/unit/toolbar.ts +1 -0
  47. package/src/__tests__/unit/transforms/delete-columns.ts +2 -1
  48. package/src/__tests__/unit/transforms/delete-rows.ts +2 -1
  49. package/src/__tests__/unit/transforms/merging.ts +2 -1
  50. package/src/__tests__/unit/ui/ContextualMenu.tsx +2 -1
  51. package/src/__tests__/unit/ui/CornerControls.tsx +2 -1
  52. package/src/__tests__/unit/ui/FloatingContextualButton.tsx +2 -1
  53. package/src/__tests__/unit/ui/FloatingContextualMenu.tsx +2 -1
  54. package/src/__tests__/unit/ui/FloatingDeleteButton.tsx +1 -1
  55. package/src/__tests__/unit/ui/FloatingDragMenu.tsx +195 -0
  56. package/src/__tests__/unit/ui/FloatingInsertButton.tsx +1 -1
  57. package/src/__tests__/unit/ui/NumberColumn.tsx +2 -1
  58. package/src/__tests__/unit/ui/RowControls.tsx +2 -1
  59. package/src/__tests__/unit/ui/RowDragControls.tsx +2 -1
  60. package/src/__tests__/unit/ui/TableFloatingColumnControls.tsx +2 -1
  61. package/src/__tests__/unit/ui/TableFloatingControls.tsx +2 -1
  62. package/src/__tests__/unit/undo-redo.ts +1 -0
  63. package/src/__tests__/unit/utils/collapse.ts +1 -0
  64. package/src/__tests__/unit/utils/nodes.ts +2 -1
  65. package/src/__tests__/unit/utils/row-controls.ts +2 -1
  66. package/src/__tests__/unit/utils.ts +1 -0
  67. package/src/plugins/table/nodeviews/TableRow.ts +1 -1
  68. package/src/plugins/table/pm-plugins/drag-and-drop/plugin.ts +1 -1
  69. package/src/plugins/table/pm-plugins/drag-and-drop/utils/monitor.ts +1 -1
  70. package/src/plugins/table/pm-plugins/keymap.ts +4 -4
  71. package/src/plugins/table/ui/FloatingDragMenu/DragMenu.tsx +33 -7
  72. package/src/plugins/table/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +1 -1
@@ -14,6 +14,7 @@ import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
14
14
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
15
15
  import type { PluginKey } from '@atlaskit/editor-prosemirror/state';
16
16
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
17
+ // eslint-disable-next-line import/no-extraneous-dependencies
17
18
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
18
19
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
19
20
  import {
@@ -29,10 +30,10 @@ import {
29
30
  tr,
30
31
  } from '@atlaskit/editor-test-helpers/doc-builder';
31
32
 
32
- import tablePlugin from '../../../plugins/table-plugin';
33
33
  import { pluginKey } from '../../../plugins/table/pm-plugins/plugin-key';
34
34
  import type { TablePluginState } from '../../../plugins/table/types';
35
35
  import TableFloatingColumnControls from '../../../plugins/table/ui/TableFloatingColumnControls';
36
+ import tablePlugin from '../../../plugins/table-plugin';
36
37
 
37
38
  describe('TableFloatingColumnControls', () => {
38
39
  const createEditor = createProsemirrorEditorFactory();
@@ -12,6 +12,7 @@ import { guidelinePlugin } from '@atlaskit/editor-plugin-guideline';
12
12
  import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
13
13
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
14
14
  import type { PluginKey } from '@atlaskit/editor-prosemirror/state';
15
+ // eslint-disable-next-line import/no-extraneous-dependencies
15
16
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
16
17
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
17
18
  import {
@@ -28,12 +29,12 @@ import {
28
29
  tr,
29
30
  } from '@atlaskit/editor-test-helpers/doc-builder';
30
31
 
31
- import tablePlugin from '../../../plugins/table-plugin';
32
32
  import { hoverTable } from '../../../plugins/table/commands';
33
33
  import { getDecorations } from '../../../plugins/table/pm-plugins/decorations/plugin';
34
34
  import { pluginKey } from '../../../plugins/table/pm-plugins/plugin-key';
35
35
  import type { TablePluginState } from '../../../plugins/table/types';
36
36
  import TableFloatingControls from '../../../plugins/table/ui/TableFloatingControls';
37
+ import tablePlugin from '../../../plugins/table-plugin';
37
38
 
38
39
  describe('TableFloatingControls', () => {
39
40
  const createEditor = createProsemirrorEditorFactory();
@@ -10,6 +10,7 @@ import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
10
10
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
11
11
  import { redo, undo } from '@atlaskit/editor-prosemirror/history';
12
12
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
13
+ // eslint-disable-next-line import/no-extraneous-dependencies
13
14
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
14
15
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
15
16
  import {
@@ -6,6 +6,7 @@ import { featureFlagsPlugin } from '@atlaskit/editor-plugin-feature-flags';
6
6
  import { guidelinePlugin } from '@atlaskit/editor-plugin-guideline';
7
7
  import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
8
8
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
9
+ // eslint-disable-next-line import/no-extraneous-dependencies
9
10
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
10
11
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
11
12
  import {
@@ -7,6 +7,7 @@ import { guidelinePlugin } from '@atlaskit/editor-plugin-guideline';
7
7
  import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
8
8
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
9
9
  import { findTable } from '@atlaskit/editor-tables/utils';
10
+ // eslint-disable-next-line import/no-extraneous-dependencies
10
11
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
11
12
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
12
13
  import {
@@ -25,9 +26,9 @@ import {
25
26
  tr,
26
27
  } from '@atlaskit/editor-test-helpers/doc-builder';
27
28
 
28
- import tablePlugin from '../../../plugins/table-plugin';
29
29
  import { pluginKey } from '../../../plugins/table/pm-plugins/plugin-key';
30
30
  import { containsHeaderColumn } from '../../../plugins/table/utils/nodes';
31
+ import tablePlugin from '../../../plugins/table-plugin';
31
32
 
32
33
  describe('table merging logic', () => {
33
34
  const createEditor = createProsemirrorEditorFactory();
@@ -9,6 +9,7 @@ import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
9
9
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
10
10
  import { TableMap } from '@atlaskit/editor-tables/table-map';
11
11
  import { findTable } from '@atlaskit/editor-tables/utils';
12
+ // eslint-disable-next-line import/no-extraneous-dependencies
12
13
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
13
14
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
14
15
  import {
@@ -25,9 +26,9 @@ import {
25
26
  th,
26
27
  } from '@atlaskit/editor-test-helpers/doc-builder';
27
28
 
28
- import tablePlugin from '../../../plugins/table-plugin';
29
29
  import { pluginKey } from '../../../plugins/table/pm-plugins/plugin-key';
30
30
  import { copyPreviousRow } from '../../../plugins/table/utils/row-controls';
31
+ import tablePlugin from '../../../plugins/table-plugin';
31
32
 
32
33
  const TABLE_LOCAL_ID = 'test-table-local-id';
33
34
 
@@ -7,6 +7,7 @@ import { guidelinePlugin } from '@atlaskit/editor-plugin-guideline';
7
7
  import { selectionPlugin } from '@atlaskit/editor-plugin-selection';
8
8
  import { widthPlugin } from '@atlaskit/editor-plugin-width';
9
9
  import type { PluginKey } from '@atlaskit/editor-prosemirror/state';
10
+ // eslint-disable-next-line import/no-extraneous-dependencies
10
11
  import type { LightEditorPlugin } from '@atlaskit/editor-test-helpers/create-prosemirror-editor';
11
12
  // eslint-disable-next-line import/no-extraneous-dependencies -- Removed import for fixing circular dependencies
12
13
  import {
@@ -6,8 +6,8 @@ import { findOverflowScrollParent } from '@atlaskit/editor-common/ui';
6
6
  import { browser } from '@atlaskit/editor-common/utils';
7
7
  import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
8
8
  import type { EditorView, NodeView } from '@atlaskit/editor-prosemirror/view';
9
- import { attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
10
9
  import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
10
+ import { attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
11
11
 
12
12
  import { getPluginState } from '../pm-plugins/plugin-factory';
13
13
  import { pluginKey as tablePluginKey } from '../pm-plugins/plugin-key';
@@ -6,8 +6,8 @@ import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
6
6
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
7
7
  import { DecorationSet } from '@atlaskit/editor-prosemirror/view';
8
8
  import { getCellsInRow } from '@atlaskit/editor-tables/utils';
9
- import { autoScroller } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll';
10
9
  import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
10
+ import { autoScroller } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll';
11
11
 
12
12
  import type { DraggableSourceData } from '../../types';
13
13
  import {
@@ -1,6 +1,6 @@
1
+ import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
1
2
  import { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
2
3
  import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
3
- import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
4
4
 
5
5
  import type {
6
6
  DraggableData,
@@ -28,15 +28,15 @@ import {
28
28
  moveCursorBackward,
29
29
  triggerUnlessTableHeader,
30
30
  } from '../commands';
31
+ import {
32
+ addColumnAfter as addColumnAfterCommand,
33
+ addColumnBefore as addColumnBeforeCommand,
34
+ } from '../commands/insert';
31
35
  import {
32
36
  addRowAroundSelection,
33
37
  deleteTableIfSelectedWithAnalytics,
34
38
  emptyMultipleCellsWithAnalytics,
35
39
  } from '../commands-with-analytics';
36
- import {
37
- addColumnAfter as addColumnAfterCommand,
38
- addColumnBefore as addColumnBeforeCommand,
39
- } from '../commands/insert';
40
40
  import { withEditorAnalyticsAPI } from '../utils/analytics';
41
41
 
42
42
  const createTableWithAnalytics = (
@@ -44,11 +44,35 @@ type DragMenuProps = {
44
44
  getEditorContainerWidth: GetEditorContainerWidth;
45
45
  };
46
46
 
47
+ const groupedDragMenuConfig = [
48
+ [
49
+ 'add_row_above',
50
+ 'add_row_below',
51
+ 'add_column_left',
52
+ 'add_column_right',
53
+ 'distribute_columns',
54
+ 'clear_cells',
55
+ 'delete_row',
56
+ 'delete_column',
57
+ ],
58
+ ['move_column_left', 'move_column_right', 'move_row_up', 'move_row_down'],
59
+ ['sort_column_asc', 'sort_column_desc'],
60
+ ];
61
+
47
62
  const convertToDropdownItems = (dragMenuConfig: DragMenuConfig[]) => {
48
- let menuItems: MenuItem[] = [];
63
+ let menuItemsArr: MenuItem[][] = [...Array(groupedDragMenuConfig.length)].map(
64
+ () => [],
65
+ );
49
66
  let menuCallback: { [key: string]: Command } = {};
50
67
  dragMenuConfig.forEach((item) => {
51
- menuItems.push({
68
+ const menuGroupIndex = groupedDragMenuConfig.findIndex((group) =>
69
+ group.includes(item.id),
70
+ );
71
+
72
+ if (menuGroupIndex === -1) {
73
+ return;
74
+ }
75
+ menuItemsArr[menuGroupIndex].push({
52
76
  key: item.id,
53
77
  content: item.title,
54
78
  value: { name: item.id },
@@ -69,6 +93,11 @@ const convertToDropdownItems = (dragMenuConfig: DragMenuConfig[]) => {
69
93
  });
70
94
  item.onClick && (menuCallback[item.id] = item.onClick);
71
95
  });
96
+
97
+ const menuItems = menuItemsArr.reduce((acc, curr) => {
98
+ curr?.length > 0 && acc.push({ items: curr });
99
+ return acc;
100
+ }, [] as { items: MenuItem[] }[]);
72
101
  return { menuItems, menuCallback };
73
102
  };
74
103
 
@@ -149,11 +178,7 @@ export const DragMenu = ({
149
178
  type: ArrowKeyNavigationType.MENU,
150
179
  disableArrowKeyNavigation: true,
151
180
  }}
152
- items={[
153
- {
154
- items: menuItems,
155
- },
156
- ]}
181
+ items={menuItems}
157
182
  isOpen={isOpen}
158
183
  onOpenChange={closeMenu}
159
184
  onItemActivated={handleMenuItemActivated}
@@ -161,6 +186,7 @@ export const DragMenu = ({
161
186
  onMouseLeave={handleItemMouseLeave}
162
187
  fitWidth={dragMenuDropdownWidth}
163
188
  boundariesElement={boundariesElement}
189
+ section={{ hasSeparator: true }}
164
190
  />
165
191
  );
166
192
  };
@@ -1,7 +1,7 @@
1
1
  import React, { useEffect, useRef } from 'react';
2
2
 
3
- import { attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
4
3
  import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
4
+ import { attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
5
5
 
6
6
  import type { DraggableSourceData } from '../../../types';
7
7