@atlaskit/editor-plugin-table 7.5.4 → 7.5.6
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.
- package/CHANGELOG.md +13 -0
- package/dist/cjs/commands/column-resize.js +3 -3
- package/dist/cjs/commands/delete.js +2 -2
- package/dist/cjs/commands/insert.js +15 -15
- package/dist/cjs/commands-with-analytics.js +7 -7
- package/dist/cjs/event-handlers.js +27 -11
- package/dist/cjs/nodeviews/OverflowShadowsObserver.js +24 -15
- package/dist/cjs/nodeviews/TableCell.js +5 -30
- package/dist/cjs/nodeviews/TableComponent.js +120 -83
- package/dist/cjs/nodeviews/TableContainer.js +23 -21
- package/dist/cjs/nodeviews/TableResizer.js +13 -13
- package/dist/cjs/nodeviews/table.js +9 -9
- package/dist/cjs/plugin.js +60 -59
- package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +13 -13
- package/dist/cjs/pm-plugins/keymap.js +6 -8
- package/dist/cjs/pm-plugins/main.js +7 -24
- package/dist/cjs/pm-plugins/sticky-headers/plugin.js +2 -3
- package/dist/cjs/pm-plugins/table-resizing/event-handlers.js +12 -12
- package/dist/cjs/pm-plugins/table-resizing/utils/colgroup.js +2 -2
- package/dist/cjs/pm-plugins/table-resizing/utils/consts.js +4 -2
- package/dist/cjs/pm-plugins/table-resizing/utils/index.js +2 -2
- package/dist/cjs/pm-plugins/table-resizing/utils/misc.js +3 -3
- package/dist/cjs/pm-plugins/table-resizing/utils/resize-column.js +3 -3
- package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +11 -12
- package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +13 -13
- package/dist/cjs/pm-plugins/table-width.js +6 -2
- package/dist/cjs/toolbar.js +21 -21
- package/dist/cjs/transforms/column-width.js +4 -4
- package/dist/cjs/transforms/delete-columns.js +2 -2
- package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +53 -55
- package/dist/cjs/ui/FloatingContextualMenu/index.js +2 -4
- package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +2 -2
- package/dist/cjs/ui/FloatingDragMenu/index.js +6 -6
- package/dist/cjs/ui/FloatingInsertButton/index.js +6 -7
- package/dist/cjs/ui/TableFloatingColumnControls/index.js +8 -48
- package/dist/cjs/ui/TableFloatingControls/index.js +113 -223
- package/dist/cjs/utils/column-controls.js +5 -5
- package/dist/cjs/utils/create.js +2 -5
- package/dist/cjs/utils/dom.js +13 -15
- package/dist/cjs/utils/drag-menu.js +4 -4
- package/dist/es2019/commands/column-resize.js +3 -3
- package/dist/es2019/commands/delete.js +2 -2
- package/dist/es2019/commands/insert.js +12 -12
- package/dist/es2019/commands-with-analytics.js +6 -6
- package/dist/es2019/event-handlers.js +27 -11
- package/dist/es2019/nodeviews/OverflowShadowsObserver.js +24 -15
- package/dist/es2019/nodeviews/TableCell.js +1 -24
- package/dist/es2019/nodeviews/TableComponent.js +88 -63
- package/dist/es2019/nodeviews/TableContainer.js +20 -22
- package/dist/es2019/nodeviews/TableResizer.js +13 -13
- package/dist/es2019/nodeviews/table.js +9 -9
- package/dist/es2019/plugin.js +19 -20
- package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +6 -6
- package/dist/es2019/pm-plugins/keymap.js +5 -8
- package/dist/es2019/pm-plugins/main.js +6 -23
- package/dist/es2019/pm-plugins/sticky-headers/plugin.js +1 -1
- package/dist/es2019/pm-plugins/table-resizing/event-handlers.js +5 -5
- package/dist/es2019/pm-plugins/table-resizing/utils/colgroup.js +2 -2
- package/dist/es2019/pm-plugins/table-resizing/utils/consts.js +3 -1
- package/dist/es2019/pm-plugins/table-resizing/utils/index.js +1 -1
- package/dist/es2019/pm-plugins/table-resizing/utils/misc.js +2 -2
- package/dist/es2019/pm-plugins/table-resizing/utils/resize-column.js +3 -2
- package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +12 -13
- package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +13 -13
- package/dist/es2019/pm-plugins/table-width.js +6 -2
- package/dist/es2019/toolbar.js +15 -15
- package/dist/es2019/transforms/column-width.js +5 -5
- package/dist/es2019/transforms/delete-columns.js +2 -2
- package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +9 -12
- package/dist/es2019/ui/FloatingContextualMenu/index.js +2 -4
- package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +2 -2
- package/dist/es2019/ui/FloatingDragMenu/index.js +5 -5
- package/dist/es2019/ui/FloatingInsertButton/index.js +5 -6
- package/dist/es2019/ui/TableFloatingColumnControls/index.js +5 -27
- package/dist/es2019/ui/TableFloatingControls/index.js +119 -193
- package/dist/es2019/utils/column-controls.js +6 -6
- package/dist/es2019/utils/create.js +2 -5
- package/dist/es2019/utils/dom.js +13 -15
- package/dist/es2019/utils/drag-menu.js +4 -4
- package/dist/esm/commands/column-resize.js +3 -3
- package/dist/esm/commands/delete.js +2 -2
- package/dist/esm/commands/insert.js +15 -15
- package/dist/esm/commands-with-analytics.js +7 -7
- package/dist/esm/event-handlers.js +27 -11
- package/dist/esm/nodeviews/OverflowShadowsObserver.js +24 -15
- package/dist/esm/nodeviews/TableCell.js +5 -30
- package/dist/esm/nodeviews/TableComponent.js +119 -82
- package/dist/esm/nodeviews/TableContainer.js +24 -22
- package/dist/esm/nodeviews/TableResizer.js +13 -13
- package/dist/esm/nodeviews/table.js +9 -9
- package/dist/esm/plugin.js +60 -59
- package/dist/esm/pm-plugins/drag-and-drop/plugin.js +13 -13
- package/dist/esm/pm-plugins/keymap.js +6 -8
- package/dist/esm/pm-plugins/main.js +7 -24
- package/dist/esm/pm-plugins/sticky-headers/plugin.js +2 -3
- package/dist/esm/pm-plugins/table-resizing/event-handlers.js +12 -12
- package/dist/esm/pm-plugins/table-resizing/utils/colgroup.js +2 -2
- package/dist/esm/pm-plugins/table-resizing/utils/consts.js +3 -1
- package/dist/esm/pm-plugins/table-resizing/utils/index.js +1 -1
- package/dist/esm/pm-plugins/table-resizing/utils/misc.js +2 -2
- package/dist/esm/pm-plugins/table-resizing/utils/resize-column.js +4 -3
- package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +13 -14
- package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +13 -13
- package/dist/esm/pm-plugins/table-width.js +6 -2
- package/dist/esm/toolbar.js +21 -21
- package/dist/esm/transforms/column-width.js +5 -5
- package/dist/esm/transforms/delete-columns.js +2 -2
- package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +53 -55
- package/dist/esm/ui/FloatingContextualMenu/index.js +2 -4
- package/dist/esm/ui/FloatingDragMenu/DragMenu.js +2 -2
- package/dist/esm/ui/FloatingDragMenu/index.js +6 -6
- package/dist/esm/ui/FloatingInsertButton/index.js +6 -7
- package/dist/esm/ui/TableFloatingColumnControls/index.js +8 -48
- package/dist/esm/ui/TableFloatingControls/index.js +113 -224
- package/dist/esm/utils/column-controls.js +6 -6
- package/dist/esm/utils/create.js +2 -5
- package/dist/esm/utils/dom.js +13 -15
- package/dist/esm/utils/drag-menu.js +4 -4
- package/dist/types/commands/column-resize.d.ts +1 -1
- package/dist/types/commands/delete.d.ts +1 -1
- package/dist/types/commands/insert.d.ts +7 -7
- package/dist/types/commands-with-analytics.d.ts +3 -3
- package/dist/types/event-handlers.d.ts +4 -5
- package/dist/types/nodeviews/OverflowShadowsObserver.d.ts +3 -1
- package/dist/types/nodeviews/TableCell.d.ts +1 -5
- package/dist/types/nodeviews/TableComponent.d.ts +6 -3
- package/dist/types/nodeviews/TableContainer.d.ts +6 -4
- package/dist/types/nodeviews/TableResizer.d.ts +2 -2
- package/dist/types/nodeviews/table.d.ts +1 -1
- package/dist/types/nodeviews/types.d.ts +1 -0
- package/dist/types/plugin.d.ts +1 -0
- package/dist/types/pm-plugins/drag-and-drop/plugin.d.ts +1 -2
- package/dist/types/pm-plugins/keymap.d.ts +2 -2
- package/dist/types/pm-plugins/main.d.ts +1 -1
- package/dist/types/pm-plugins/sticky-headers/plugin.d.ts +2 -3
- package/dist/types/pm-plugins/table-resizing/utils/colgroup.d.ts +1 -1
- package/dist/types/pm-plugins/table-resizing/utils/consts.d.ts +1 -0
- package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
- package/dist/types/pm-plugins/table-resizing/utils/misc.d.ts +1 -1
- package/dist/types/pm-plugins/table-resizing/utils/resize-column.d.ts +2 -1
- package/dist/types/pm-plugins/table-resizing/utils/resize-state.d.ts +4 -4
- package/dist/types/pm-plugins/table-resizing/utils/scale-table.d.ts +4 -4
- package/dist/types/pm-plugins/table-width.d.ts +1 -2
- package/dist/types/toolbar.d.ts +2 -2
- package/dist/types/transforms/column-width.d.ts +1 -1
- package/dist/types/transforms/delete-columns.d.ts +1 -1
- package/dist/types/types.d.ts +1 -3
- package/dist/types/ui/FloatingContextualMenu/index.d.ts +1 -1
- package/dist/types/ui/FloatingDragMenu/DragMenu.d.ts +2 -2
- package/dist/types/ui/FloatingDragMenu/index.d.ts +2 -3
- package/dist/types/ui/FloatingInsertButton/index.d.ts +1 -2
- package/dist/types/ui/TableFloatingColumnControls/index.d.ts +2 -1
- package/dist/types/ui/TableFloatingControls/index.d.ts +5 -22
- package/dist/types/utils/create.d.ts +1 -2
- package/dist/types/utils/dom.d.ts +10 -2
- package/dist/types/utils/drag-menu.d.ts +1 -1
- package/dist/types-ts4.5/commands/column-resize.d.ts +1 -1
- package/dist/types-ts4.5/commands/delete.d.ts +1 -1
- package/dist/types-ts4.5/commands/insert.d.ts +7 -7
- package/dist/types-ts4.5/commands-with-analytics.d.ts +3 -3
- package/dist/types-ts4.5/event-handlers.d.ts +4 -5
- package/dist/types-ts4.5/nodeviews/OverflowShadowsObserver.d.ts +3 -1
- package/dist/types-ts4.5/nodeviews/TableCell.d.ts +1 -5
- package/dist/types-ts4.5/nodeviews/TableComponent.d.ts +6 -3
- package/dist/types-ts4.5/nodeviews/TableContainer.d.ts +6 -4
- package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -2
- package/dist/types-ts4.5/nodeviews/table.d.ts +1 -1
- package/dist/types-ts4.5/nodeviews/types.d.ts +1 -0
- package/dist/types-ts4.5/plugin.d.ts +1 -0
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/plugin.d.ts +1 -2
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +2 -2
- package/dist/types-ts4.5/pm-plugins/main.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/sticky-headers/plugin.d.ts +2 -3
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/colgroup.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/consts.d.ts +1 -0
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/misc.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-column.d.ts +2 -1
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-state.d.ts +4 -4
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/scale-table.d.ts +4 -4
- package/dist/types-ts4.5/pm-plugins/table-width.d.ts +1 -2
- package/dist/types-ts4.5/toolbar.d.ts +2 -2
- package/dist/types-ts4.5/transforms/column-width.d.ts +1 -1
- package/dist/types-ts4.5/transforms/delete-columns.d.ts +1 -1
- package/dist/types-ts4.5/types.d.ts +1 -3
- package/dist/types-ts4.5/ui/FloatingContextualMenu/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/FloatingDragMenu/DragMenu.d.ts +2 -2
- package/dist/types-ts4.5/ui/FloatingDragMenu/index.d.ts +2 -3
- package/dist/types-ts4.5/ui/FloatingInsertButton/index.d.ts +1 -2
- package/dist/types-ts4.5/ui/TableFloatingColumnControls/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/TableFloatingControls/index.d.ts +5 -22
- package/dist/types-ts4.5/utils/create.d.ts +1 -2
- package/dist/types-ts4.5/utils/dom.d.ts +10 -2
- package/dist/types-ts4.5/utils/drag-menu.d.ts +1 -1
- package/package.json +3 -4
- package/src/commands/column-resize.ts +4 -3
- package/src/commands/delete.ts +2 -2
- package/src/commands/insert.ts +15 -27
- package/src/commands-with-analytics.ts +6 -9
- package/src/event-handlers.ts +107 -105
- package/src/nodeviews/OverflowShadowsObserver.ts +32 -21
- package/src/nodeviews/TableCell.ts +0 -26
- package/src/nodeviews/TableComponent.tsx +107 -78
- package/src/nodeviews/TableContainer.tsx +26 -32
- package/src/nodeviews/TableResizer.tsx +15 -18
- package/src/nodeviews/table.tsx +6 -5
- package/src/nodeviews/types.ts +1 -0
- package/src/plugin.tsx +17 -32
- package/src/pm-plugins/drag-and-drop/plugin.ts +10 -15
- package/src/pm-plugins/keymap.ts +6 -13
- package/src/pm-plugins/main.ts +6 -25
- package/src/pm-plugins/sticky-headers/plugin.ts +2 -11
- package/src/pm-plugins/table-resizing/event-handlers.ts +6 -4
- package/src/pm-plugins/table-resizing/utils/colgroup.ts +2 -2
- package/src/pm-plugins/table-resizing/utils/consts.ts +2 -0
- package/src/pm-plugins/table-resizing/utils/index.ts +1 -1
- package/src/pm-plugins/table-resizing/utils/misc.ts +2 -2
- package/src/pm-plugins/table-resizing/utils/resize-column.ts +5 -2
- package/src/pm-plugins/table-resizing/utils/resize-state.ts +18 -13
- package/src/pm-plugins/table-resizing/utils/scale-table.ts +14 -14
- package/src/pm-plugins/table-width.ts +4 -6
- package/src/toolbar.tsx +16 -19
- package/src/transforms/column-width.ts +7 -6
- package/src/transforms/delete-columns.ts +2 -2
- package/src/types.ts +1 -4
- package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +11 -16
- package/src/ui/FloatingContextualMenu/index.tsx +0 -2
- package/src/ui/FloatingDragMenu/DragMenu.tsx +3 -3
- package/src/ui/FloatingDragMenu/index.tsx +4 -8
- package/src/ui/FloatingInsertButton/index.tsx +11 -22
- package/src/ui/TableFloatingColumnControls/index.tsx +5 -29
- package/src/ui/TableFloatingControls/index.tsx +155 -241
- package/src/utils/column-controls.ts +5 -6
- package/src/utils/create.ts +2 -5
- package/src/utils/dom.ts +12 -19
- package/src/utils/drag-menu.ts +7 -12
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
2
|
|
|
3
3
|
import type { TableColumnOrdering } from '@atlaskit/custom-steps';
|
|
4
4
|
import { browser } from '@atlaskit/editor-common/utils';
|
|
@@ -10,13 +10,12 @@ import { hoverCell, hoverRows, selectRow, selectRows } from '../../commands';
|
|
|
10
10
|
import type { RowStickyState } from '../../pm-plugins/sticky-headers';
|
|
11
11
|
import { TableCssClassName as ClassName } from '../../types';
|
|
12
12
|
import type { CellHoverMeta } from '../../types';
|
|
13
|
-
import { isSelectionUpdated } from '../../utils';
|
|
14
13
|
|
|
15
14
|
import { CornerControls, DragCornerControls } from './CornerControls';
|
|
16
15
|
import NumberColumn from './NumberColumn';
|
|
17
16
|
import { DragControls, RowControls } from './RowControls';
|
|
18
17
|
|
|
19
|
-
export interface
|
|
18
|
+
export interface TableFloatingControlsProps {
|
|
20
19
|
editorView: EditorView;
|
|
21
20
|
selection?: Selection;
|
|
22
21
|
tableRef?: HTMLTableElement;
|
|
@@ -36,248 +35,163 @@ export interface Props {
|
|
|
36
35
|
ordering?: TableColumnOrdering;
|
|
37
36
|
stickyHeader?: RowStickyState;
|
|
38
37
|
insertRowButtonIndex?: number;
|
|
38
|
+
tableWrapperWidth?: number;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
shouldComponentUpdate(nextProps: Props, nextState: State) {
|
|
94
|
-
const {
|
|
95
|
-
tableRef,
|
|
96
|
-
isInDanger,
|
|
97
|
-
isResizing,
|
|
98
|
-
isHeaderRowEnabled,
|
|
99
|
-
isNumberColumnEnabled,
|
|
100
|
-
hoveredRows,
|
|
101
|
-
selection,
|
|
102
|
-
tableActive,
|
|
103
|
-
isHeaderColumnEnabled,
|
|
104
|
-
ordering,
|
|
105
|
-
headerRowHeight,
|
|
106
|
-
stickyHeader,
|
|
107
|
-
hoveredCell,
|
|
108
|
-
isTableHovered,
|
|
109
|
-
} = this.props;
|
|
110
|
-
return (
|
|
111
|
-
this.state.tableWrapperWidth !== nextState.tableWrapperWidth ||
|
|
112
|
-
this.state.tableWrapperHeight !== nextState.tableWrapperHeight ||
|
|
113
|
-
ordering !== nextProps.ordering ||
|
|
114
|
-
tableRef !== nextProps.tableRef ||
|
|
115
|
-
tableActive !== nextProps.tableActive ||
|
|
116
|
-
isInDanger !== nextProps.isInDanger ||
|
|
117
|
-
isResizing !== nextProps.isResizing ||
|
|
118
|
-
hoveredRows !== nextProps.hoveredRows ||
|
|
119
|
-
isHeaderRowEnabled !== nextProps.isHeaderRowEnabled ||
|
|
120
|
-
isHeaderColumnEnabled !== nextProps.isHeaderColumnEnabled ||
|
|
121
|
-
isNumberColumnEnabled !== nextProps.isNumberColumnEnabled ||
|
|
122
|
-
isSelectionUpdated(selection!, nextProps.selection) ||
|
|
123
|
-
headerRowHeight !== nextProps.headerRowHeight ||
|
|
124
|
-
stickyHeader !== nextProps.stickyHeader ||
|
|
125
|
-
hoveredCell !== nextProps.hoveredCell ||
|
|
126
|
-
isTableHovered !== nextProps.isTableHovered
|
|
127
|
-
);
|
|
128
|
-
}
|
|
41
|
+
export const TableFloatingControls = ({
|
|
42
|
+
editorView,
|
|
43
|
+
tableRef,
|
|
44
|
+
tableNode,
|
|
45
|
+
isInDanger,
|
|
46
|
+
isResizing,
|
|
47
|
+
isNumberColumnEnabled,
|
|
48
|
+
isHeaderRowEnabled,
|
|
49
|
+
isHeaderColumnEnabled,
|
|
50
|
+
tableActive,
|
|
51
|
+
hasHeaderRow,
|
|
52
|
+
hoveredRows,
|
|
53
|
+
stickyHeader,
|
|
54
|
+
isDragAndDropEnabled,
|
|
55
|
+
hoveredCell,
|
|
56
|
+
isTableHovered,
|
|
57
|
+
tableWrapperWidth,
|
|
58
|
+
}: TableFloatingControlsProps) => {
|
|
59
|
+
const _selectRow = useCallback(
|
|
60
|
+
(row: number, expand: boolean) => {
|
|
61
|
+
const { state, dispatch } = editorView;
|
|
62
|
+
// fix for issue ED-4665
|
|
63
|
+
if (browser.ie_version === 11) {
|
|
64
|
+
(editorView.dom as HTMLElement).blur();
|
|
65
|
+
}
|
|
66
|
+
selectRow(row, expand)(state, dispatch);
|
|
67
|
+
},
|
|
68
|
+
[editorView],
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const _selectRows = useCallback(
|
|
72
|
+
(rowIndexes: number[]) => {
|
|
73
|
+
const { state, dispatch } = editorView;
|
|
74
|
+
// fix for issue ED-4665
|
|
75
|
+
if (browser.ie_version === 11) {
|
|
76
|
+
(editorView.dom as HTMLElement).blur();
|
|
77
|
+
}
|
|
78
|
+
selectRows(rowIndexes)(state, dispatch);
|
|
79
|
+
},
|
|
80
|
+
[editorView],
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
const _hoverRows = useCallback(
|
|
84
|
+
(rows: Array<number>, danger?: boolean) => {
|
|
85
|
+
const { state, dispatch } = editorView;
|
|
86
|
+
hoverRows(rows, danger)(state, dispatch);
|
|
87
|
+
},
|
|
88
|
+
[editorView],
|
|
89
|
+
);
|
|
129
90
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
91
|
+
// re-use across numbered columns and row controls
|
|
92
|
+
const updateCellHoverLocation = useCallback(
|
|
93
|
+
(rowIndex: number) => {
|
|
94
|
+
const { state, dispatch } = editorView;
|
|
95
|
+
|
|
96
|
+
if (tableActive) {
|
|
97
|
+
// For context: Whenever we mouse over a column or row drag handle, we will ALWAYS be hovering over the 0 index
|
|
98
|
+
// of the opposite dimension. For example; here when we mouse over the row drag handle then we're technically
|
|
99
|
+
// also hovering over column 0 index. And vice-versa with columns. This means we don't need to worry about knowing the
|
|
100
|
+
// current column index. We can just force it to 0.
|
|
101
|
+
hoverCell(rowIndex, 0)(state, dispatch);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
[editorView, tableActive],
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
if (!tableRef) {
|
|
108
|
+
return null;
|
|
134
109
|
}
|
|
135
110
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
editorView={editorView}
|
|
218
|
-
tableRef={tableRef}
|
|
219
|
-
isInDanger={isInDanger}
|
|
220
|
-
isResizing={isResizing}
|
|
221
|
-
isHeaderRowEnabled={isHeaderRowEnabled}
|
|
222
|
-
isHeaderColumnEnabled={isHeaderColumnEnabled}
|
|
223
|
-
hoveredRows={hoveredRows}
|
|
224
|
-
stickyTop={tableActive ? stickyTop : undefined}
|
|
225
|
-
/>
|
|
226
|
-
<RowControls
|
|
227
|
-
editorView={editorView}
|
|
228
|
-
tableRef={tableRef}
|
|
229
|
-
hoverRows={this.hoverRows}
|
|
230
|
-
hoveredRows={hoveredRows}
|
|
231
|
-
isInDanger={isInDanger}
|
|
232
|
-
isResizing={isResizing}
|
|
233
|
-
selectRow={this.selectRow}
|
|
234
|
-
stickyTop={tableActive ? stickyTop : undefined}
|
|
235
|
-
/>
|
|
236
|
-
</>
|
|
237
|
-
)}
|
|
238
|
-
</>
|
|
239
|
-
)}
|
|
240
|
-
</div>
|
|
111
|
+
const stickyTop =
|
|
112
|
+
stickyHeader && stickyHeader.sticky && hasHeaderRow
|
|
113
|
+
? stickyHeader.top
|
|
114
|
+
: undefined;
|
|
115
|
+
|
|
116
|
+
const wrapperClassName = isDragAndDropEnabled
|
|
117
|
+
? ClassName.DRAG_ROW_CONTROLS_WRAPPER
|
|
118
|
+
: ClassName.ROW_CONTROLS_WRAPPER;
|
|
119
|
+
|
|
120
|
+
return (
|
|
121
|
+
<div className={wrapperClassName}>
|
|
122
|
+
<div onMouseDown={(e) => !isDragAndDropEnabled && e.preventDefault()}>
|
|
123
|
+
{isNumberColumnEnabled ? (
|
|
124
|
+
<NumberColumn
|
|
125
|
+
editorView={editorView}
|
|
126
|
+
hoverRows={_hoverRows}
|
|
127
|
+
tableRef={tableRef}
|
|
128
|
+
tableActive={tableActive}
|
|
129
|
+
hoveredRows={hoveredRows}
|
|
130
|
+
hasHeaderRow={hasHeaderRow}
|
|
131
|
+
isInDanger={isInDanger}
|
|
132
|
+
isResizing={isResizing}
|
|
133
|
+
selectRow={_selectRow}
|
|
134
|
+
updateCellHoverLocation={updateCellHoverLocation}
|
|
135
|
+
stickyTop={stickyTop}
|
|
136
|
+
isDragAndDropEnabled={isDragAndDropEnabled}
|
|
137
|
+
/>
|
|
138
|
+
) : null}
|
|
139
|
+
|
|
140
|
+
{tableActive && (
|
|
141
|
+
<>
|
|
142
|
+
{isDragAndDropEnabled ? (
|
|
143
|
+
<>
|
|
144
|
+
<DragCornerControls
|
|
145
|
+
editorView={editorView}
|
|
146
|
+
tableRef={tableRef}
|
|
147
|
+
isInDanger={isInDanger}
|
|
148
|
+
isResizing={isResizing}
|
|
149
|
+
/>
|
|
150
|
+
<DragControls
|
|
151
|
+
tableRef={tableRef}
|
|
152
|
+
tableNode={tableNode}
|
|
153
|
+
hoveredCell={hoveredCell}
|
|
154
|
+
isTableHovered={isTableHovered}
|
|
155
|
+
editorView={editorView}
|
|
156
|
+
tableActive={tableActive}
|
|
157
|
+
isInDanger={isInDanger}
|
|
158
|
+
isResizing={isResizing}
|
|
159
|
+
tableWidth={tableWrapperWidth!}
|
|
160
|
+
hoverRows={_hoverRows}
|
|
161
|
+
selectRow={_selectRow}
|
|
162
|
+
selectRows={_selectRows}
|
|
163
|
+
updateCellHoverLocation={updateCellHoverLocation}
|
|
164
|
+
/>
|
|
165
|
+
</>
|
|
166
|
+
) : (
|
|
167
|
+
<>
|
|
168
|
+
<CornerControls
|
|
169
|
+
editorView={editorView}
|
|
170
|
+
tableRef={tableRef}
|
|
171
|
+
isInDanger={isInDanger}
|
|
172
|
+
isResizing={isResizing}
|
|
173
|
+
isHeaderRowEnabled={isHeaderRowEnabled}
|
|
174
|
+
isHeaderColumnEnabled={isHeaderColumnEnabled}
|
|
175
|
+
hoveredRows={hoveredRows}
|
|
176
|
+
stickyTop={tableActive ? stickyTop : undefined}
|
|
177
|
+
/>
|
|
178
|
+
<RowControls
|
|
179
|
+
editorView={editorView}
|
|
180
|
+
tableRef={tableRef}
|
|
181
|
+
hoverRows={_hoverRows}
|
|
182
|
+
hoveredRows={hoveredRows}
|
|
183
|
+
isInDanger={isInDanger}
|
|
184
|
+
isResizing={isResizing}
|
|
185
|
+
selectRow={_selectRow}
|
|
186
|
+
stickyTop={tableActive ? stickyTop : undefined}
|
|
187
|
+
/>
|
|
188
|
+
</>
|
|
189
|
+
)}
|
|
190
|
+
</>
|
|
191
|
+
)}
|
|
241
192
|
</div>
|
|
242
|
-
|
|
243
|
-
|
|
193
|
+
</div>
|
|
194
|
+
);
|
|
195
|
+
};
|
|
244
196
|
|
|
245
|
-
|
|
246
|
-
const { editorView } = this.props;
|
|
247
|
-
const { state, dispatch } = editorView;
|
|
248
|
-
// fix for issue ED-4665
|
|
249
|
-
if (browser.ie_version === 11) {
|
|
250
|
-
(editorView.dom as HTMLElement).blur();
|
|
251
|
-
}
|
|
252
|
-
selectRow(row, expand)(state, dispatch);
|
|
253
|
-
};
|
|
254
|
-
|
|
255
|
-
private selectRows = (rowIndexes: number[]) => {
|
|
256
|
-
const { editorView } = this.props;
|
|
257
|
-
const { state, dispatch } = editorView;
|
|
258
|
-
// fix for issue ED-4665
|
|
259
|
-
if (browser.ie_version === 11) {
|
|
260
|
-
(editorView.dom as HTMLElement).blur();
|
|
261
|
-
}
|
|
262
|
-
selectRows(rowIndexes)(state, dispatch);
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
private hoverRows = (rows: Array<number>, danger?: boolean) => {
|
|
266
|
-
const { state, dispatch } = this.props.editorView;
|
|
267
|
-
hoverRows(rows, danger)(state, dispatch);
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
// re-use across numbered columns and row controls
|
|
271
|
-
private updateCellHoverLocation = (rowIndex: number) => {
|
|
272
|
-
const { editorView, tableActive } = this.props;
|
|
273
|
-
const { state, dispatch } = editorView;
|
|
274
|
-
|
|
275
|
-
if (tableActive) {
|
|
276
|
-
// For context: Whenever we mouse over a column or row drag handle, we will ALWAYS be hovering over the 0 index
|
|
277
|
-
// of the opposite dimension. For example; here when we mouse over the row drag handle then we're technically
|
|
278
|
-
// also hovering over column 0 index. And vice-versa with columns. This means we don't need to worry about knowing the
|
|
279
|
-
// current column index. We can just force it to 0.
|
|
280
|
-
hoverCell(rowIndex, 0)(state, dispatch);
|
|
281
|
-
}
|
|
282
|
-
};
|
|
283
|
-
}
|
|
197
|
+
export default TableFloatingControls;
|
|
@@ -6,7 +6,6 @@ import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
|
|
|
6
6
|
import { TableMap } from '@atlaskit/editor-tables/table-map';
|
|
7
7
|
import {
|
|
8
8
|
findTable,
|
|
9
|
-
getCellsInColumn,
|
|
10
9
|
getSelectionRect,
|
|
11
10
|
isColumnSelected,
|
|
12
11
|
isTableSelected,
|
|
@@ -34,13 +33,13 @@ export const getColumnsWidths = (
|
|
|
34
33
|
// When there is no cell we need to fill it with undefined
|
|
35
34
|
widths = Array.from({ length: map.width });
|
|
36
35
|
for (let i = 0; i < map.width; i++) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
const cellRef = findDomRefAtPos(
|
|
36
|
+
if (!map.isCellMergedTopLeft(0, i)) {
|
|
37
|
+
const node = table.node.nodeAt(map.map[i])!;
|
|
38
|
+
const pos = map.map[i] + table.start;
|
|
39
|
+
const cellRef = findDomRefAtPos(pos, domAtPos) as HTMLElement;
|
|
41
40
|
const rect = cellRef.getBoundingClientRect();
|
|
42
41
|
widths[i] = (rect ? rect.width : cellRef.offsetWidth) + 1;
|
|
43
|
-
i +=
|
|
42
|
+
i += node.attrs.colspan - 1;
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
}
|
package/src/utils/create.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
|
|
2
1
|
import type { Schema } from '@atlaskit/editor-prosemirror/model';
|
|
3
2
|
import { createTable } from '@atlaskit/editor-tables/utils';
|
|
4
3
|
|
|
@@ -6,17 +5,15 @@ import { TABLE_MAX_WIDTH } from '../pm-plugins/table-resizing/utils';
|
|
|
6
5
|
|
|
7
6
|
export const createTableWithWidth =
|
|
8
7
|
(
|
|
8
|
+
isTableScalingEnabled?: boolean,
|
|
9
9
|
isFullWidthModeEnabled?: boolean,
|
|
10
|
-
getEditorFeatureFlags?: GetEditorFeatureFlags,
|
|
11
10
|
createTableProps?: {
|
|
12
11
|
rowsCount?: number;
|
|
13
12
|
colsCount?: number;
|
|
14
13
|
},
|
|
15
14
|
) =>
|
|
16
15
|
(schema: Schema) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (tablePreserveWidth && isFullWidthModeEnabled) {
|
|
16
|
+
if (isTableScalingEnabled && isFullWidthModeEnabled) {
|
|
20
17
|
return createTable({
|
|
21
18
|
schema,
|
|
22
19
|
tableWidth: TABLE_MAX_WIDTH,
|
package/src/utils/dom.ts
CHANGED
|
@@ -4,9 +4,6 @@ import {
|
|
|
4
4
|
} from '@atlaskit/editor-common/utils';
|
|
5
5
|
|
|
6
6
|
import { TableCssClassName as ClassName } from '../types';
|
|
7
|
-
import type { ElementContentRects } from '../types';
|
|
8
|
-
|
|
9
|
-
const SELECTOR_TABLE_LEAFS = `.${ClassName.TABLE_CELL}, .${ClassName.TABLE_HEADER_CELL}`;
|
|
10
7
|
|
|
11
8
|
export const isCell = (node: HTMLElement | null): boolean => {
|
|
12
9
|
return Boolean(
|
|
@@ -118,29 +115,25 @@ export const isDragCornerButton = (node: HTMLElement | null) =>
|
|
|
118
115
|
*
|
|
119
116
|
* the same is valid to the right side.
|
|
120
117
|
*/
|
|
121
|
-
|
|
118
|
+
/**
|
|
119
|
+
* This can be used with mouse events to determine the left/right side of the target the pointer is closest too.
|
|
120
|
+
*
|
|
121
|
+
* WARNING: This metod reads properties which can trigger a reflow; use this wisely.
|
|
122
|
+
*
|
|
123
|
+
* @param mouseEvent
|
|
124
|
+
* @param gapInPixels
|
|
125
|
+
* @returns
|
|
126
|
+
*/
|
|
122
127
|
export const getMousePositionHorizontalRelativeByElement = (
|
|
123
128
|
mouseEvent: MouseEvent,
|
|
124
|
-
|
|
129
|
+
offsetX: number,
|
|
125
130
|
gapInPixels?: number,
|
|
126
|
-
isDragAndDropEnabled?: boolean,
|
|
127
131
|
): 'left' | 'right' | null => {
|
|
128
132
|
const element = mouseEvent.target;
|
|
129
133
|
|
|
130
134
|
if (element instanceof HTMLElement) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (isDragAndDropEnabled) {
|
|
134
|
-
// mouse event fires for new overlapping column controls, so the cell can not get detected. Get width
|
|
135
|
-
// directly from element that will be .pm-table-drag-columns-floating-insert-dot-wrapper
|
|
136
|
-
width = element.clientWidth;
|
|
137
|
-
} else {
|
|
138
|
-
const closestCell = element.closest(SELECTOR_TABLE_LEAFS);
|
|
139
|
-
|
|
140
|
-
const id = closestCell?.id ?? '';
|
|
141
|
-
width = elementContentRects?.[id]?.width ?? 0;
|
|
142
|
-
}
|
|
143
|
-
x = mouseEvent.offsetX;
|
|
135
|
+
const width = element.clientWidth; // reflow
|
|
136
|
+
const x = !Number.isNaN(offsetX) ? offsetX : mouseEvent.offsetX; // reflow
|
|
144
137
|
|
|
145
138
|
if (width <= 0) {
|
|
146
139
|
return null;
|
package/src/utils/drag-menu.ts
CHANGED
|
@@ -159,7 +159,7 @@ export const getDragMenuConfig = (
|
|
|
159
159
|
selectionRect?: Rect,
|
|
160
160
|
editorAnalyticsAPI?: EditorAnalyticsAPI,
|
|
161
161
|
isHeaderRowRequired?: boolean,
|
|
162
|
-
|
|
162
|
+
isTableScalingEnabled = false,
|
|
163
163
|
): DragMenuConfig[] => {
|
|
164
164
|
const addOptions =
|
|
165
165
|
direction === 'row'
|
|
@@ -294,15 +294,10 @@ export const getDragMenuConfig = (
|
|
|
294
294
|
},
|
|
295
295
|
)(state, dispatch);
|
|
296
296
|
} else {
|
|
297
|
-
insertColumnWithAnalytics(
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
)(INPUT_METHOD.TABLE_CONTEXT_MENU, (index ?? 0) + offset)(
|
|
302
|
-
state,
|
|
303
|
-
dispatch,
|
|
304
|
-
editorView,
|
|
305
|
-
);
|
|
297
|
+
insertColumnWithAnalytics(editorAnalyticsAPI, isTableScalingEnabled)(
|
|
298
|
+
INPUT_METHOD.TABLE_CONTEXT_MENU,
|
|
299
|
+
(index ?? 0) + offset,
|
|
300
|
+
)(state, dispatch, editorView);
|
|
306
301
|
}
|
|
307
302
|
return true;
|
|
308
303
|
},
|
|
@@ -321,7 +316,7 @@ export const getDragMenuConfig = (
|
|
|
321
316
|
state,
|
|
322
317
|
editorView.domAtPos.bind(editorView),
|
|
323
318
|
getEditorContainerWidth,
|
|
324
|
-
|
|
319
|
+
isTableScalingEnabled,
|
|
325
320
|
);
|
|
326
321
|
|
|
327
322
|
if (newResizeState) {
|
|
@@ -362,7 +357,7 @@ export const getDragMenuConfig = (
|
|
|
362
357
|
!!isHeaderRowRequired,
|
|
363
358
|
)(state, dispatch);
|
|
364
359
|
} else {
|
|
365
|
-
deleteColumnsWithAnalytics(editorAnalyticsAPI,
|
|
360
|
+
deleteColumnsWithAnalytics(editorAnalyticsAPI, isTableScalingEnabled)(
|
|
366
361
|
INPUT_METHOD.TABLE_CONTEXT_MENU,
|
|
367
362
|
selectionRect ?? defaultSelectionRect,
|
|
368
363
|
)(state, dispatch, editorView);
|