@atlaskit/editor-plugin-table 7.3.7 → 7.3.9

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 (67) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/afm-cc/tsconfig.json +9 -0
  3. package/dist/cjs/event-handlers.js +50 -25
  4. package/dist/cjs/nodeviews/ExternalDropTargets.js +2 -2
  5. package/dist/cjs/nodeviews/TableComponent.js +1 -1
  6. package/dist/cjs/nodeviews/TableResizer.js +1 -0
  7. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +4 -4
  8. package/dist/cjs/pm-plugins/drag-and-drop/utils/monitor.js +1 -1
  9. package/dist/cjs/pm-plugins/main.js +1 -0
  10. package/dist/cjs/ui/DragHandle/index.js +3 -3
  11. package/dist/cjs/ui/FloatingInsertButton/index.js +8 -6
  12. package/dist/cjs/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.js +3 -3
  13. package/dist/cjs/ui/TableFloatingColumnControls/index.js +2 -2
  14. package/dist/cjs/ui/TableFloatingControls/RowControls/DragControls.js +2 -2
  15. package/dist/cjs/ui/TableFloatingControls/RowDropTarget/index.js +3 -3
  16. package/dist/cjs/ui/common-styles.js +1 -1
  17. package/dist/es2019/event-handlers.js +29 -0
  18. package/dist/es2019/nodeviews/ExternalDropTargets.js +1 -1
  19. package/dist/es2019/nodeviews/TableComponent.js +1 -1
  20. package/dist/es2019/nodeviews/TableResizer.js +1 -0
  21. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +2 -2
  22. package/dist/es2019/pm-plugins/drag-and-drop/utils/monitor.js +1 -1
  23. package/dist/es2019/pm-plugins/main.js +2 -1
  24. package/dist/es2019/ui/DragHandle/index.js +2 -2
  25. package/dist/es2019/ui/FloatingInsertButton/index.js +8 -6
  26. package/dist/es2019/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.js +2 -2
  27. package/dist/es2019/ui/TableFloatingColumnControls/index.js +1 -1
  28. package/dist/es2019/ui/TableFloatingControls/RowControls/DragControls.js +1 -1
  29. package/dist/es2019/ui/TableFloatingControls/RowDropTarget/index.js +2 -2
  30. package/dist/es2019/ui/common-styles.js +1 -0
  31. package/dist/esm/event-handlers.js +49 -24
  32. package/dist/esm/nodeviews/ExternalDropTargets.js +1 -1
  33. package/dist/esm/nodeviews/TableComponent.js +1 -1
  34. package/dist/esm/nodeviews/TableResizer.js +1 -0
  35. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +2 -2
  36. package/dist/esm/pm-plugins/drag-and-drop/utils/monitor.js +1 -1
  37. package/dist/esm/pm-plugins/main.js +2 -1
  38. package/dist/esm/ui/DragHandle/index.js +2 -2
  39. package/dist/esm/ui/FloatingInsertButton/index.js +8 -6
  40. package/dist/esm/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.js +2 -2
  41. package/dist/esm/ui/TableFloatingColumnControls/index.js +1 -1
  42. package/dist/esm/ui/TableFloatingControls/RowControls/DragControls.js +1 -1
  43. package/dist/esm/ui/TableFloatingControls/RowDropTarget/index.js +2 -2
  44. package/dist/esm/ui/common-styles.js +1 -1
  45. package/dist/types/event-handlers.d.ts +1 -0
  46. package/dist/types/pm-plugins/drag-and-drop/utils/monitor.d.ts +1 -1
  47. package/dist/types/types.d.ts +1 -1
  48. package/dist/types-ts4.5/event-handlers.d.ts +1 -0
  49. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/monitor.d.ts +1 -1
  50. package/dist/types-ts4.5/types.d.ts +1 -1
  51. package/package.json +12 -9
  52. package/src/event-handlers.ts +36 -0
  53. package/src/nodeviews/ExternalDropTargets.tsx +1 -1
  54. package/src/nodeviews/TableComponent.tsx +1 -1
  55. package/src/nodeviews/TableResizer.tsx +1 -0
  56. package/src/pm-plugins/drag-and-drop/plugin.ts +2 -2
  57. package/src/pm-plugins/drag-and-drop/utils/monitor.ts +3 -3
  58. package/src/pm-plugins/main.ts +2 -0
  59. package/src/types.ts +1 -1
  60. package/src/ui/DragHandle/index.tsx +2 -2
  61. package/src/ui/FloatingInsertButton/index.tsx +11 -8
  62. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +2 -2
  63. package/src/ui/TableFloatingColumnControls/index.tsx +1 -1
  64. package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +1 -1
  65. package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +2 -2
  66. package/src/ui/common-styles.ts +1 -0
  67. package/tsconfig.json +894 -1
@@ -6,6 +6,7 @@ export declare const handleBlur: (view: EditorView, event: Event) => boolean;
6
6
  export declare const handleFocus: (view: EditorView, event: Event) => boolean;
7
7
  export declare const handleClick: (view: EditorView, event: Event) => boolean;
8
8
  export declare const handleMouseOver: (view: EditorView, mouseEvent: Event) => boolean;
9
+ export declare const handleMouseUp: (view: EditorView, mouseEvent: Event) => boolean;
9
10
  export declare const handleMouseDown: (_: EditorView, event: Event) => boolean;
10
11
  export declare const handleMouseOut: (view: EditorView, mouseEvent: Event) => boolean;
11
12
  export declare const handleMouseEnter: (view: EditorView, mouseEvent: Event) => boolean;
@@ -1,3 +1,3 @@
1
- import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
1
+ import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
2
2
  import type { DraggableData } from '../../../types';
3
3
  export declare const getDraggableDataFromEvent: ({ location, source, }: ElementEventBasePayload) => DraggableData | undefined;
@@ -7,7 +7,7 @@ import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
7
7
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
8
8
  import type { DecorationSet } from '@atlaskit/editor-prosemirror/view';
9
9
  import type { Rect } from '@atlaskit/editor-tables/table-map';
10
- import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
10
+ import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
11
11
  import type tablePlugin from './plugin';
12
12
  export declare const RESIZE_HANDLE_AREA_DECORATION_GAP = 30;
13
13
  export type RowInsertPosition = 'TOP' | 'BOTTOM';
@@ -6,6 +6,7 @@ export declare const handleBlur: (view: EditorView, event: Event) => boolean;
6
6
  export declare const handleFocus: (view: EditorView, event: Event) => boolean;
7
7
  export declare const handleClick: (view: EditorView, event: Event) => boolean;
8
8
  export declare const handleMouseOver: (view: EditorView, mouseEvent: Event) => boolean;
9
+ export declare const handleMouseUp: (view: EditorView, mouseEvent: Event) => boolean;
9
10
  export declare const handleMouseDown: (_: EditorView, event: Event) => boolean;
10
11
  export declare const handleMouseOut: (view: EditorView, mouseEvent: Event) => boolean;
11
12
  export declare const handleMouseEnter: (view: EditorView, mouseEvent: Event) => boolean;
@@ -1,3 +1,3 @@
1
- import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
1
+ import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
2
2
  import type { DraggableData } from '../../../types';
3
3
  export declare const getDraggableDataFromEvent: ({ location, source, }: ElementEventBasePayload) => DraggableData | undefined;
@@ -7,7 +7,7 @@ import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
7
7
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
8
8
  import type { DecorationSet } from '@atlaskit/editor-prosemirror/view';
9
9
  import type { Rect } from '@atlaskit/editor-tables/table-map';
10
- import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
10
+ import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
11
11
  import type tablePlugin from './plugin';
12
12
  export declare const RESIZE_HANDLE_AREA_DECORATION_GAP = 30;
13
13
  export type RowInsertPosition = 'TOP' | 'BOTTOM';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-table",
3
- "version": "7.3.7",
3
+ "version": "7.3.9",
4
4
  "description": "Table plugin for the @atlaskit/editor",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -30,26 +30,26 @@
30
30
  "dependencies": {
31
31
  "@atlaskit/adf-schema": "^35.5.1",
32
32
  "@atlaskit/custom-steps": "^0.0.13",
33
- "@atlaskit/editor-common": "^78.1.0",
33
+ "@atlaskit/editor-common": "^78.4.0",
34
34
  "@atlaskit/editor-palette": "1.5.2",
35
35
  "@atlaskit/editor-plugin-analytics": "^1.0.0",
36
36
  "@atlaskit/editor-plugin-content-insertion": "^1.0.0",
37
37
  "@atlaskit/editor-plugin-guideline": "^1.0.0",
38
- "@atlaskit/editor-plugin-selection": "^1.0.0",
38
+ "@atlaskit/editor-plugin-selection": "^1.1.0",
39
39
  "@atlaskit/editor-plugin-width": "^1.0.0",
40
40
  "@atlaskit/editor-prosemirror": "3.0.0",
41
41
  "@atlaskit/editor-shared-styles": "^2.9.0",
42
42
  "@atlaskit/editor-tables": "^2.5.0",
43
- "@atlaskit/icon": "^22.0.0",
43
+ "@atlaskit/icon": "^22.1.0",
44
44
  "@atlaskit/menu": "^2.1.5",
45
45
  "@atlaskit/platform-feature-flags": "^0.2.1",
46
- "@atlaskit/pragmatic-drag-and-drop": "^0.25.0",
47
- "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^0.8.0",
48
- "@atlaskit/pragmatic-drag-and-drop-hitbox": "^0.12.0",
49
- "@atlaskit/primitives": "^2.0.0",
46
+ "@atlaskit/pragmatic-drag-and-drop": "^1.0.0",
47
+ "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^1.0.0",
48
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.0",
49
+ "@atlaskit/primitives": "^2.1.0",
50
50
  "@atlaskit/theme": "^12.6.0",
51
51
  "@atlaskit/toggle": "^13.0.0",
52
- "@atlaskit/tokens": "^1.37.0",
52
+ "@atlaskit/tokens": "^1.38.0",
53
53
  "@atlaskit/tooltip": "^18.1.0",
54
54
  "@babel/runtime": "^7.0.0",
55
55
  "@emotion/react": "^11.7.1",
@@ -108,6 +108,9 @@
108
108
  "platform.editor.table.column-controls-styles-updated": {
109
109
  "type": "boolean"
110
110
  },
111
+ "platform.editor.table.insert-last-column-btn-stays-in-place": {
112
+ "type": "boolean"
113
+ },
111
114
  "platform.editor.resizing-table-height-improvement": {
112
115
  "type": "boolean"
113
116
  },
@@ -251,6 +251,42 @@ export const handleMouseOver = (
251
251
  return false;
252
252
  };
253
253
 
254
+ export const handleMouseUp = (view: EditorView, mouseEvent: Event): boolean => {
255
+ if (
256
+ !getBooleanFF('platform.editor.table.insert-last-column-btn-stays-in-place')
257
+ ) {
258
+ return false;
259
+ }
260
+
261
+ if (!(mouseEvent instanceof MouseEvent)) {
262
+ return false;
263
+ }
264
+ const { state, dispatch } = view;
265
+ const { insertColumnButtonIndex, tableNode, tableRef } =
266
+ getPluginState(state);
267
+
268
+ if (
269
+ insertColumnButtonIndex !== undefined &&
270
+ tableRef &&
271
+ tableRef.parentElement &&
272
+ tableNode
273
+ ) {
274
+ const { width } = TableMap.get(tableNode);
275
+ const newInsertColumnButtonIndex = insertColumnButtonIndex + 1;
276
+ if (width === newInsertColumnButtonIndex) {
277
+ const tableWidth = tableRef.clientWidth;
278
+ tableRef.parentElement.scrollTo(tableWidth, 0);
279
+
280
+ return showInsertColumnButton(newInsertColumnButtonIndex)(
281
+ state,
282
+ dispatch,
283
+ );
284
+ }
285
+ }
286
+
287
+ return false;
288
+ };
289
+
254
290
  // Ignore any `mousedown` `event` from control and numbered column buttons
255
291
  // PM end up changing selection during shift selection if not prevented
256
292
  export const handleMouseDown = (_: EditorView, event: Event) => {
@@ -3,7 +3,7 @@ import React, { useEffect, useState } from 'react';
3
3
  import { tableMarginTop } from '@atlaskit/editor-common/styles';
4
4
  import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
5
5
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
6
- import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
6
+ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
7
7
 
8
8
  import type { DraggableSourceData } from '../types';
9
9
  import { dropTargetExtendedWidth, dropTargetsZIndex } from '../ui/consts';
@@ -31,8 +31,8 @@ import {
31
31
  } from '@atlaskit/editor-shared-styles';
32
32
  import { findTable, isTableSelected } from '@atlaskit/editor-tables/utils';
33
33
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
34
+ import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
34
35
  import type { CleanupFn } from '@atlaskit/pragmatic-drag-and-drop/types';
35
- import { combine } from '@atlaskit/pragmatic-drag-and-drop/util/combine';
36
36
 
37
37
  import { autoSizeTable, clearHoverSelection } from '../commands';
38
38
  import { autoScrollerFactory } from '../pm-plugins/drag-and-drop/utils';
@@ -586,6 +586,7 @@ export const TableResizer = ({
586
586
  snap={guidelineSnaps}
587
587
  handlePositioning="adjacent"
588
588
  isHandleVisible={isTableSelected}
589
+ needExtendedResizeZone={!isTableSelected}
589
590
  appearance={
590
591
  isTableSelected && isWholeTableInDanger ? 'danger' : undefined
591
592
  }
@@ -10,8 +10,8 @@ import { DecorationSet } from '@atlaskit/editor-prosemirror/view';
10
10
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
11
11
  import { getCellsInRow } from '@atlaskit/editor-tables/utils';
12
12
  import { autoScrollForElements } from '@atlaskit/pragmatic-drag-and-drop-auto-scroll/element';
13
- import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
14
- import { combine } from '@atlaskit/pragmatic-drag-and-drop/util/combine';
13
+ import { combine } from '@atlaskit/pragmatic-drag-and-drop/combine';
14
+ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
15
15
 
16
16
  import type { DraggableSourceData } from '../../types';
17
17
  import {
@@ -1,6 +1,6 @@
1
- import { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
2
- 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';
1
+ import { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
2
+ import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
3
+ import type { ElementEventBasePayload } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
4
4
 
5
5
  import type {
6
6
  DraggableData,
@@ -65,6 +65,7 @@ import {
65
65
  handleMouseMove,
66
66
  handleMouseOut,
67
67
  handleMouseOver,
68
+ handleMouseUp,
68
69
  handleTripleClick,
69
70
  whenTableInFocus,
70
71
  withCellTracking,
@@ -420,6 +421,7 @@ export const createPlugin = (
420
421
  mouseout: whenTableInFocus(handleMouseOut),
421
422
  mousemove: whenTableInFocus(handleMouseMove, elementContentRects),
422
423
  mouseenter: handleMouseEnter,
424
+ mouseup: whenTableInFocus(handleMouseUp),
423
425
  click: withCellTracking(whenTableInFocus(handleClick)),
424
426
  },
425
427
 
package/src/types.ts CHANGED
@@ -14,7 +14,7 @@ import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
14
14
  import type { Transaction } from '@atlaskit/editor-prosemirror/state';
15
15
  import type { DecorationSet } from '@atlaskit/editor-prosemirror/view';
16
16
  import type { Rect } from '@atlaskit/editor-tables/table-map';
17
- import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/addon/closest-edge';
17
+ import type { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
18
18
 
19
19
  import type tablePlugin from './plugin';
20
20
 
@@ -9,8 +9,8 @@ import { injectIntl } from 'react-intl-next';
9
9
  import { tableMessages as messages } from '@atlaskit/editor-common/messages';
10
10
  import { browser } from '@atlaskit/editor-common/utils';
11
11
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
12
- import { draggable } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
13
- import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/util/set-custom-native-drag-preview';
12
+ import { draggable } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
13
+ import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';
14
14
  import { token } from '@atlaskit/tokens';
15
15
 
16
16
  import { getPluginState as getDnDPluginState } from '../../pm-plugins/drag-and-drop/plugin-factory';
@@ -121,14 +121,15 @@ export class FloatingInsertButton extends React.Component<
121
121
  ) {
122
122
  return null;
123
123
  }
124
-
125
- const cellPosition = this.getCellPosition(type);
126
- if (!cellPosition) {
124
+ const tablePos = findTable(tr.selection);
125
+ if (!tablePos) {
127
126
  return null;
128
127
  }
129
128
 
130
- const tablePos = findTable(editorView.state.selection);
131
- if (!tablePos) {
129
+ // the tableNode props is not always latest (when you type some text in a cell, it's not updated yet)
130
+ // we need to get the latest one by calling findTable(tr.selection)
131
+ const cellPosition = this.getCellPosition(type, tablePos?.node);
132
+ if (!cellPosition) {
132
133
  return null;
133
134
  }
134
135
 
@@ -230,9 +231,11 @@ export class FloatingInsertButton extends React.Component<
230
231
  );
231
232
  }
232
233
 
233
- private getCellPosition(type: 'column' | 'row'): number | null {
234
- const { tableNode, insertColumnButtonIndex, insertRowButtonIndex } =
235
- this.props;
234
+ private getCellPosition(
235
+ type: 'column' | 'row',
236
+ tableNode: PmNode,
237
+ ): number | null {
238
+ const { insertColumnButtonIndex, insertRowButtonIndex } = this.props;
236
239
  const tableMap = TableMap.get(tableNode!);
237
240
 
238
241
  if (type === 'column') {
@@ -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
- import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
3
+ import { attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
4
+ import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
5
5
 
6
6
  import type { DraggableSourceData } from '../../../types';
7
7
 
@@ -5,7 +5,7 @@ import type { GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
5
5
  import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
6
6
  import type { Selection } from '@atlaskit/editor-prosemirror/state';
7
7
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
8
- import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
8
+ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
9
9
 
10
10
  import type { RowStickyState } from '../../pm-plugins/sticky-headers';
11
11
  import type { CellHoverMeta, DraggableSourceData } from '../../types';
@@ -16,7 +16,7 @@ import type { Selection } from '@atlaskit/editor-prosemirror/state';
16
16
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
17
17
  import { CellSelection } from '@atlaskit/editor-tables';
18
18
  import { getSelectionRect } from '@atlaskit/editor-tables/utils';
19
- import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
19
+ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
20
20
  import { token } from '@atlaskit/tokens';
21
21
 
22
22
  import { clearHoverSelection } from '../../../commands';
@@ -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
- import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/element';
3
+ import { attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
4
+ import { dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
5
5
 
6
6
  import type { DraggableSourceData } from '../../../types';
7
7
 
@@ -720,6 +720,7 @@ export const tableStyles = (props: { featureFlags?: FeatureFlags }) => css`
720
720
  height: 4px;
721
721
  width: 4px;
722
722
  border-radius: 50%;
723
+ pointer-events: none;
723
724
  }
724
725
  }
725
726