@atlaskit/editor-plugin-table 7.6.2 → 7.6.4

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 (119) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/commands/misc.js +3 -2
  3. package/dist/cjs/nodeviews/TableComponent.js +25 -11
  4. package/dist/cjs/nodeviews/TableComponentWithSharedState.js +87 -0
  5. package/dist/cjs/nodeviews/TableContainer.js +37 -21
  6. package/dist/cjs/nodeviews/TableResizer.js +40 -29
  7. package/dist/cjs/nodeviews/table.js +21 -1
  8. package/dist/cjs/plugin.js +25 -2
  9. package/dist/cjs/toolbar.js +5 -4
  10. package/dist/cjs/types.js +3 -0
  11. package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +16 -16
  12. package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +3 -3
  13. package/dist/cjs/ui/FloatingDragMenu/DropdownMenu.js +21 -28
  14. package/dist/cjs/ui/TableFloatingColumnControls/ColumnControls/index.js +6 -2
  15. package/dist/cjs/ui/TableFloatingColumnControls/index.js +5 -2
  16. package/dist/cjs/ui/TableFloatingControls/CornerControls/DragCornerControls.js +48 -1
  17. package/dist/cjs/ui/TableFloatingControls/CornerControls/index.js +6 -0
  18. package/dist/cjs/ui/TableFloatingControls/FloatingControlsWithSelection.js +47 -0
  19. package/dist/cjs/ui/TableFloatingControls/RowControls/ClassicControls.js +3 -2
  20. package/dist/cjs/ui/TableFloatingControls/index.js +25 -3
  21. package/dist/cjs/ui/common-styles.js +11 -6
  22. package/dist/cjs/utils/guidelines.js +1 -1
  23. package/dist/es2019/commands/misc.js +6 -2
  24. package/dist/es2019/nodeviews/TableComponent.js +27 -12
  25. package/dist/es2019/nodeviews/TableComponentWithSharedState.js +83 -0
  26. package/dist/es2019/nodeviews/TableContainer.js +24 -6
  27. package/dist/es2019/nodeviews/TableResizer.js +27 -19
  28. package/dist/es2019/nodeviews/table.js +21 -1
  29. package/dist/es2019/plugin.js +26 -3
  30. package/dist/es2019/toolbar.js +5 -4
  31. package/dist/es2019/types.js +3 -0
  32. package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +16 -16
  33. package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +3 -3
  34. package/dist/es2019/ui/FloatingDragMenu/DropdownMenu.js +20 -27
  35. package/dist/es2019/ui/TableFloatingColumnControls/ColumnControls/index.js +7 -2
  36. package/dist/es2019/ui/TableFloatingColumnControls/index.js +5 -2
  37. package/dist/es2019/ui/TableFloatingControls/CornerControls/DragCornerControls.js +55 -0
  38. package/dist/es2019/ui/TableFloatingControls/CornerControls/index.js +1 -1
  39. package/dist/es2019/ui/TableFloatingControls/FloatingControlsWithSelection.js +42 -0
  40. package/dist/es2019/ui/TableFloatingControls/RowControls/ClassicControls.js +3 -2
  41. package/dist/es2019/ui/TableFloatingControls/index.js +26 -4
  42. package/dist/es2019/ui/common-styles.js +589 -588
  43. package/dist/es2019/utils/guidelines.js +1 -1
  44. package/dist/esm/commands/misc.js +3 -2
  45. package/dist/esm/nodeviews/TableComponent.js +25 -11
  46. package/dist/esm/nodeviews/TableComponentWithSharedState.js +80 -0
  47. package/dist/esm/nodeviews/TableContainer.js +37 -21
  48. package/dist/esm/nodeviews/TableResizer.js +41 -30
  49. package/dist/esm/nodeviews/table.js +21 -1
  50. package/dist/esm/plugin.js +26 -3
  51. package/dist/esm/toolbar.js +5 -4
  52. package/dist/esm/types.js +3 -0
  53. package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +16 -16
  54. package/dist/esm/ui/FloatingDragMenu/DragMenu.js +3 -3
  55. package/dist/esm/ui/FloatingDragMenu/DropdownMenu.js +21 -28
  56. package/dist/esm/ui/TableFloatingColumnControls/ColumnControls/index.js +6 -2
  57. package/dist/esm/ui/TableFloatingColumnControls/index.js +5 -2
  58. package/dist/esm/ui/TableFloatingControls/CornerControls/DragCornerControls.js +47 -0
  59. package/dist/esm/ui/TableFloatingControls/CornerControls/index.js +1 -1
  60. package/dist/esm/ui/TableFloatingControls/FloatingControlsWithSelection.js +40 -0
  61. package/dist/esm/ui/TableFloatingControls/RowControls/ClassicControls.js +3 -2
  62. package/dist/esm/ui/TableFloatingControls/index.js +26 -4
  63. package/dist/esm/ui/common-styles.js +10 -5
  64. package/dist/esm/utils/guidelines.js +1 -1
  65. package/dist/types/commands/misc.d.ts +2 -1
  66. package/dist/types/nodeviews/TableComponent.d.ts +7 -2
  67. package/dist/types/nodeviews/TableComponentWithSharedState.d.ts +27 -0
  68. package/dist/types/nodeviews/TableContainer.d.ts +4 -2
  69. package/dist/types/nodeviews/TableResizer.d.ts +4 -1
  70. package/dist/types/nodeviews/types.d.ts +1 -0
  71. package/dist/types/plugin.d.ts +11 -7
  72. package/dist/types/types.d.ts +13 -4
  73. package/dist/types/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +113 -1
  74. package/dist/types/ui/TableFloatingColumnControls/index.d.ts +3 -2
  75. package/dist/types/ui/TableFloatingControls/CornerControls/DragCornerControls.d.ts +223 -0
  76. package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  77. package/dist/types/ui/TableFloatingControls/FloatingControlsWithSelection.d.ts +20 -0
  78. package/dist/types/ui/TableFloatingControls/RowControls/ClassicControls.d.ts +2 -0
  79. package/dist/types/ui/TableFloatingControls/index.d.ts +113 -1
  80. package/dist/types/ui/common-styles.d.ts +3 -0
  81. package/dist/types-ts4.5/commands/misc.d.ts +2 -1
  82. package/dist/types-ts4.5/nodeviews/TableComponent.d.ts +7 -2
  83. package/dist/types-ts4.5/nodeviews/TableComponentWithSharedState.d.ts +27 -0
  84. package/dist/types-ts4.5/nodeviews/TableContainer.d.ts +4 -2
  85. package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +4 -1
  86. package/dist/types-ts4.5/nodeviews/types.d.ts +1 -0
  87. package/dist/types-ts4.5/plugin.d.ts +11 -7
  88. package/dist/types-ts4.5/types.d.ts +13 -4
  89. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +144 -1
  90. package/dist/types-ts4.5/ui/TableFloatingColumnControls/index.d.ts +3 -2
  91. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/DragCornerControls.d.ts +285 -0
  92. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  93. package/dist/types-ts4.5/ui/TableFloatingControls/FloatingControlsWithSelection.d.ts +20 -0
  94. package/dist/types-ts4.5/ui/TableFloatingControls/RowControls/ClassicControls.d.ts +2 -0
  95. package/dist/types-ts4.5/ui/TableFloatingControls/index.d.ts +144 -1
  96. package/dist/types-ts4.5/ui/common-styles.d.ts +3 -0
  97. package/package.json +6 -6
  98. package/src/commands/misc.ts +6 -3
  99. package/src/nodeviews/TableComponent.tsx +36 -7
  100. package/src/nodeviews/TableComponentWithSharedState.tsx +125 -0
  101. package/src/nodeviews/TableContainer.tsx +24 -3
  102. package/src/nodeviews/TableResizer.tsx +36 -21
  103. package/src/nodeviews/table.tsx +22 -1
  104. package/src/nodeviews/types.ts +1 -0
  105. package/src/plugin.tsx +47 -6
  106. package/src/toolbar.tsx +20 -19
  107. package/src/types.ts +33 -4
  108. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +66 -112
  109. package/src/ui/FloatingDragMenu/DragMenu.tsx +3 -12
  110. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +19 -28
  111. package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +10 -2
  112. package/src/ui/TableFloatingColumnControls/index.tsx +13 -1
  113. package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +58 -0
  114. package/src/ui/TableFloatingControls/CornerControls/index.tsx +4 -1
  115. package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +68 -0
  116. package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +4 -1
  117. package/src/ui/TableFloatingControls/index.tsx +42 -8
  118. package/src/ui/common-styles.ts +611 -610
  119. package/src/utils/guidelines.ts +5 -4
@@ -0,0 +1,68 @@
1
+ import React from 'react';
2
+
3
+ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
4
+ import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
5
+ import type { EditorView } from '@atlaskit/editor-prosemirror/view';
6
+
7
+ import type { TablePlugin } from '../../plugin';
8
+
9
+ import { CornerControls } from './CornerControls';
10
+ import { RowControls } from './RowControls';
11
+
12
+ type FloatingControlsWithSelectionProps = {
13
+ editorView: EditorView;
14
+ tableRef: HTMLTableElement;
15
+ isInDanger?: boolean;
16
+ isResizing?: boolean;
17
+ isHeaderRowEnabled?: boolean;
18
+ isHeaderColumnEnabled?: boolean;
19
+ hoveredRows?: number[];
20
+ stickyTop?: number;
21
+ hoverRows: (rows: number[]) => void;
22
+ selectRow: (row: number, expand: boolean) => void;
23
+ tableActive: boolean;
24
+ api?: ExtractInjectionAPI<TablePlugin>;
25
+ };
26
+
27
+ export const FloatingControlsWithSelection = ({
28
+ editorView,
29
+ tableRef,
30
+ isInDanger,
31
+ isResizing,
32
+ isHeaderRowEnabled,
33
+ isHeaderColumnEnabled,
34
+ hoveredRows,
35
+ stickyTop,
36
+ hoverRows,
37
+ selectRow,
38
+ tableActive,
39
+ api,
40
+ }: FloatingControlsWithSelectionProps) => {
41
+ const { selectionState } = useSharedPluginState(api, ['selection']);
42
+
43
+ return (
44
+ <>
45
+ <CornerControls
46
+ editorView={editorView}
47
+ tableRef={tableRef}
48
+ isInDanger={isInDanger}
49
+ isResizing={isResizing}
50
+ isHeaderRowEnabled={isHeaderRowEnabled}
51
+ isHeaderColumnEnabled={isHeaderColumnEnabled}
52
+ hoveredRows={hoveredRows}
53
+ stickyTop={tableActive ? stickyTop : undefined}
54
+ />
55
+ <RowControls
56
+ selection={selectionState?.selection}
57
+ editorView={editorView}
58
+ tableRef={tableRef}
59
+ hoverRows={hoverRows}
60
+ hoveredRows={hoveredRows}
61
+ isInDanger={isInDanger}
62
+ isResizing={isResizing}
63
+ selectRow={selectRow}
64
+ stickyTop={tableActive ? stickyTop : undefined}
65
+ />
66
+ </>
67
+ );
68
+ };
@@ -4,6 +4,7 @@ import type { WrappedComponentProps } from 'react-intl-next';
4
4
  import { injectIntl } from 'react-intl-next';
5
5
 
6
6
  import { tableMessages as messages } from '@atlaskit/editor-common/messages';
7
+ import type { Selection } from '@atlaskit/editor-prosemirror/state';
7
8
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
8
9
 
9
10
  import { clearHoverSelection } from '../../../commands';
@@ -22,6 +23,7 @@ export interface Props {
22
23
  isResizing?: boolean;
23
24
  insertRowButtonIndex?: number;
24
25
  stickyTop?: number;
26
+ selection?: Selection;
25
27
  }
26
28
 
27
29
  class RowControlsComponent extends Component<Props & WrappedComponentProps> {
@@ -33,6 +35,7 @@ class RowControlsComponent extends Component<Props & WrappedComponentProps> {
33
35
  isInDanger,
34
36
  isResizing,
35
37
  intl: { formatMessage },
38
+ selection: selectionState,
36
39
  } = this.props;
37
40
  if (!tableRef) {
38
41
  return null;
@@ -72,7 +75,7 @@ class RowControlsComponent extends Component<Props & WrappedComponentProps> {
72
75
  ClassName.ROW_CONTROLS_BUTTON_WRAP
73
76
  } ${getRowClassNames(
74
77
  startIndex,
75
- selection,
78
+ selectionState || selection,
76
79
  hoveredRows,
77
80
  isInDanger,
78
81
  isResizing,
@@ -1,17 +1,25 @@
1
1
  import React, { useCallback } from 'react';
2
2
 
3
3
  import type { TableColumnOrdering } from '@atlaskit/custom-steps';
4
+ import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types';
4
5
  import { browser } from '@atlaskit/editor-common/utils';
5
6
  import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
6
7
  import type { Selection } from '@atlaskit/editor-prosemirror/state';
7
8
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
9
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
8
10
 
9
11
  import { hoverCell, hoverRows, selectRow, selectRows } from '../../commands';
12
+ import type { TablePlugin } from '../../plugin';
10
13
  import type { RowStickyState } from '../../pm-plugins/sticky-headers';
11
14
  import { TableCssClassName as ClassName } from '../../types';
12
15
  import type { CellHoverMeta } from '../../types';
13
16
 
14
- import { CornerControls, DragCornerControls } from './CornerControls';
17
+ import {
18
+ CornerControls,
19
+ DragCornerControls,
20
+ DragCornerControlsWithSelection,
21
+ } from './CornerControls';
22
+ import { FloatingControlsWithSelection } from './FloatingControlsWithSelection';
15
23
  import NumberColumn from './NumberColumn';
16
24
  import { DragControls, RowControls } from './RowControls';
17
25
 
@@ -55,7 +63,8 @@ export const TableFloatingControls = ({
55
63
  hoveredCell,
56
64
  isTableHovered,
57
65
  tableWrapperWidth,
58
- }: TableFloatingControlsProps) => {
66
+ api,
67
+ }: TableFloatingControlsProps & { api?: ExtractInjectionAPI<TablePlugin> }) => {
59
68
  const _selectRow = useCallback(
60
69
  (row: number, expand: boolean) => {
61
70
  const { state, dispatch } = editorView;
@@ -141,12 +150,22 @@ export const TableFloatingControls = ({
141
150
  <>
142
151
  {isDragAndDropEnabled ? (
143
152
  <>
144
- <DragCornerControls
145
- editorView={editorView}
146
- tableRef={tableRef}
147
- isInDanger={isInDanger}
148
- isResizing={isResizing}
149
- />
153
+ {getBooleanFF('platform.editor.table.use-shared-state-hook') ? (
154
+ <DragCornerControlsWithSelection
155
+ editorView={editorView}
156
+ tableRef={tableRef}
157
+ isInDanger={isInDanger}
158
+ isResizing={isResizing}
159
+ api={api}
160
+ />
161
+ ) : (
162
+ <DragCornerControls
163
+ editorView={editorView}
164
+ tableRef={tableRef}
165
+ isInDanger={isInDanger}
166
+ isResizing={isResizing}
167
+ />
168
+ )}
150
169
  <DragControls
151
170
  tableRef={tableRef}
152
171
  tableNode={tableNode}
@@ -163,6 +182,21 @@ export const TableFloatingControls = ({
163
182
  updateCellHoverLocation={updateCellHoverLocation}
164
183
  />
165
184
  </>
185
+ ) : getBooleanFF('platform.editor.table.use-shared-state-hook') ? (
186
+ <FloatingControlsWithSelection
187
+ editorView={editorView}
188
+ tableRef={tableRef}
189
+ isInDanger={isInDanger}
190
+ isResizing={isResizing}
191
+ isHeaderRowEnabled={isHeaderRowEnabled}
192
+ isHeaderColumnEnabled={isHeaderColumnEnabled}
193
+ hoveredRows={hoveredRows}
194
+ stickyTop={tableActive ? stickyTop : undefined}
195
+ tableActive={tableActive}
196
+ hoverRows={_hoverRows}
197
+ selectRow={_selectRow}
198
+ api={api}
199
+ />
166
200
  ) : (
167
201
  <>
168
202
  <CornerControls