@atlaskit/editor-plugin-table 2.6.1 → 2.6.2
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 +7 -0
- package/dist/cjs/plugins/table/nodeviews/TableResizer.js +32 -22
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +1 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/plugins/table/nodeviews/TableResizer.js +28 -18
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +1 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/plugins/table/nodeviews/TableResizer.js +27 -17
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +1 -0
- package/dist/esm/version.json +1 -1
- package/package.json +2 -2
- package/src/__tests__/unit/nodeviews/TableContainer.tsx +14 -14
- package/src/plugins/table/nodeviews/TableResizer.tsx +34 -21
- package/src/plugins/table/pm-plugins/table-resizing/utils/scale-table.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-table
|
|
2
2
|
|
|
3
|
+
## 2.6.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`bc9f806f84a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bc9f806f84a) - Toggle handle visibility of resizer if current table is selected
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
3
10
|
## 2.6.1
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -14,10 +14,11 @@ var _analytics = require("@atlaskit/editor-common/analytics");
|
|
|
14
14
|
var _guideline = require("@atlaskit/editor-common/guideline");
|
|
15
15
|
var _resizer = require("@atlaskit/editor-common/resizer");
|
|
16
16
|
var _editorTables = require("@atlaskit/editor-tables");
|
|
17
|
-
var _utils = require("
|
|
17
|
+
var _utils = require("@atlaskit/editor-tables/utils");
|
|
18
|
+
var _utils2 = require("../pm-plugins/table-resizing/utils");
|
|
18
19
|
var _tableWidth = require("../pm-plugins/table-width");
|
|
19
20
|
var _consts = require("../ui/consts");
|
|
20
|
-
var
|
|
21
|
+
var _utils3 = require("../utils");
|
|
21
22
|
var _guidelines = require("../utils/guidelines");
|
|
22
23
|
var _snapping = require("../utils/snapping");
|
|
23
24
|
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); }
|
|
@@ -39,25 +40,13 @@ var generateResizedPayload = function generateResizedPayload(props) {
|
|
|
39
40
|
newWidth: props.resizedNode.attrs.width,
|
|
40
41
|
prevWidth: (_props$originalNode$a = props.originalNode.attrs.width) !== null && _props$originalNode$a !== void 0 ? _props$originalNode$a : null,
|
|
41
42
|
nodeSize: props.resizedNode.nodeSize,
|
|
42
|
-
totalTableWidth: (0,
|
|
43
|
+
totalTableWidth: (0, _utils2.hasTableBeenResized)(props.resizedNode) ? (0, _utils3.getTableWidth)(props.resizedNode) : null,
|
|
43
44
|
totalRowCount: tableMap.height,
|
|
44
45
|
totalColumnCount: tableMap.width
|
|
45
46
|
}
|
|
46
47
|
};
|
|
47
48
|
};
|
|
48
|
-
var
|
|
49
|
-
var children = _ref.children,
|
|
50
|
-
width = _ref.width,
|
|
51
|
-
maxWidth = _ref.maxWidth,
|
|
52
|
-
updateWidth = _ref.updateWidth,
|
|
53
|
-
editorView = _ref.editorView,
|
|
54
|
-
getPos = _ref.getPos,
|
|
55
|
-
node = _ref.node,
|
|
56
|
-
tableRef = _ref.tableRef,
|
|
57
|
-
displayGuideline = _ref.displayGuideline,
|
|
58
|
-
attachAnalyticsEvent = _ref.attachAnalyticsEvent;
|
|
59
|
-
var currentColumnCount = (0, _utils.getColgroupChildrenLength)(node);
|
|
60
|
-
var minColumnWidth = currentColumnCount <= 3 ? currentColumnCount * _utils.COLUMN_MIN_WIDTH : 3 * _utils.COLUMN_MIN_WIDTH;
|
|
49
|
+
var getResizerHandleHeight = function getResizerHandleHeight(tableRef) {
|
|
61
50
|
var tableHeight = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientHeight;
|
|
62
51
|
var handleHeightSize = 'small';
|
|
63
52
|
/*
|
|
@@ -73,11 +62,32 @@ var TableResizer = function TableResizer(_ref) {
|
|
|
73
62
|
} else if (tableHeight && tableHeight >= 96) {
|
|
74
63
|
handleHeightSize = 'large';
|
|
75
64
|
}
|
|
65
|
+
return handleHeightSize;
|
|
66
|
+
};
|
|
67
|
+
var getResizerMinWidth = function getResizerMinWidth(node) {
|
|
68
|
+
var currentColumnCount = (0, _utils2.getColgroupChildrenLength)(node);
|
|
69
|
+
var minColumnWidth = currentColumnCount <= 3 ? currentColumnCount * _utils2.COLUMN_MIN_WIDTH : 3 * _utils2.COLUMN_MIN_WIDTH;
|
|
70
|
+
return minColumnWidth;
|
|
71
|
+
};
|
|
72
|
+
var TableResizer = function TableResizer(_ref) {
|
|
73
|
+
var _findTable, _editorView$state;
|
|
74
|
+
var children = _ref.children,
|
|
75
|
+
width = _ref.width,
|
|
76
|
+
maxWidth = _ref.maxWidth,
|
|
77
|
+
updateWidth = _ref.updateWidth,
|
|
78
|
+
editorView = _ref.editorView,
|
|
79
|
+
getPos = _ref.getPos,
|
|
80
|
+
node = _ref.node,
|
|
81
|
+
tableRef = _ref.tableRef,
|
|
82
|
+
displayGuideline = _ref.displayGuideline,
|
|
83
|
+
attachAnalyticsEvent = _ref.attachAnalyticsEvent;
|
|
76
84
|
var currentGap = (0, _react.useRef)(0);
|
|
77
85
|
var _useState = (0, _react.useState)(false),
|
|
78
86
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
79
87
|
snappingEnabled = _useState2[0],
|
|
80
88
|
setSnappingEnabled = _useState2[1];
|
|
89
|
+
var resizerMinWidth = getResizerMinWidth(node);
|
|
90
|
+
var handleHeightSize = getResizerHandleHeight(tableRef);
|
|
81
91
|
var updateActiveGuidelines = (0, _react.useCallback)(function (_ref2) {
|
|
82
92
|
var gap = _ref2.gap,
|
|
83
93
|
keys = _ref2.keys;
|
|
@@ -98,8 +108,7 @@ var TableResizer = function TableResizer(_ref) {
|
|
|
98
108
|
resizing: true
|
|
99
109
|
}));
|
|
100
110
|
setSnappingEnabled(displayGuideline(_guidelines.defaultGuidelines));
|
|
101
|
-
|
|
102
|
-
}, [width, displayGuideline, editorView]);
|
|
111
|
+
}, [displayGuideline, editorView]);
|
|
103
112
|
var handleResizeStop = (0, _react.useCallback)(function (originalState, delta) {
|
|
104
113
|
var newWidth = originalState.width + delta.width;
|
|
105
114
|
var state = editorView.state,
|
|
@@ -114,7 +123,7 @@ var TableResizer = function TableResizer(_ref) {
|
|
|
114
123
|
width: newWidth
|
|
115
124
|
}));
|
|
116
125
|
var newNode = tr.doc.nodeAt(pos);
|
|
117
|
-
tr = (0,
|
|
126
|
+
tr = (0, _utils2.scaleTable)(tableRef, {
|
|
118
127
|
node: newNode,
|
|
119
128
|
prevNode: node,
|
|
120
129
|
start: pos + 1,
|
|
@@ -139,7 +148,7 @@ var TableResizer = function TableResizer(_ref) {
|
|
|
139
148
|
if (typeof pos !== 'number') {
|
|
140
149
|
return;
|
|
141
150
|
}
|
|
142
|
-
(0,
|
|
151
|
+
(0, _utils2.previewScaleTable)(tableRef, {
|
|
143
152
|
node: node,
|
|
144
153
|
prevNode: node,
|
|
145
154
|
start: pos + 1,
|
|
@@ -162,11 +171,12 @@ var TableResizer = function TableResizer(_ref) {
|
|
|
162
171
|
handleResize: scheduleResize,
|
|
163
172
|
handleResizeStop: handleResizeStop,
|
|
164
173
|
resizeRatio: 2,
|
|
165
|
-
minWidth:
|
|
174
|
+
minWidth: resizerMinWidth,
|
|
166
175
|
maxWidth: maxWidth,
|
|
167
176
|
snapGap: _consts.TABLE_SNAP_GAP,
|
|
168
177
|
snap: guidelineSnaps,
|
|
169
|
-
handlePositioning: "adjacent"
|
|
178
|
+
handlePositioning: "adjacent",
|
|
179
|
+
isHandleVisible: ((_findTable = (0, _utils.findTable)((_editorView$state = editorView.state) === null || _editorView$state === void 0 ? void 0 : _editorView$state.selection)) === null || _findTable === void 0 ? void 0 : _findTable.pos) === getPos()
|
|
170
180
|
}, children);
|
|
171
181
|
};
|
|
172
182
|
exports.TableResizer = TableResizer;
|
|
@@ -147,6 +147,7 @@ var scaleTable = function scaleTable(tableRef, options, domAtPos) {
|
|
|
147
147
|
// If its not a re-sized table, we still want to re-create cols
|
|
148
148
|
// To force reflow of columns upon delete.
|
|
149
149
|
(0, _colgroup.insertColgroupFromNode)(tableRef, node);
|
|
150
|
+
tr.setMeta('scrollIntoView', false);
|
|
150
151
|
return tr;
|
|
151
152
|
}
|
|
152
153
|
var resizeState;
|
package/dist/cjs/version.json
CHANGED
|
@@ -4,6 +4,7 @@ import { ACTION_SUBJECT, EVENT_TYPE, TABLE_ACTION } from '@atlaskit/editor-commo
|
|
|
4
4
|
import { getGuidelinesWithHighlights } from '@atlaskit/editor-common/guideline';
|
|
5
5
|
import { ResizerNext } from '@atlaskit/editor-common/resizer';
|
|
6
6
|
import { TableMap } from '@atlaskit/editor-tables';
|
|
7
|
+
import { findTable } from '@atlaskit/editor-tables/utils';
|
|
7
8
|
import { COLUMN_MIN_WIDTH, getColgroupChildrenLength, hasTableBeenResized, previewScaleTable, scaleTable } from '../pm-plugins/table-resizing/utils';
|
|
8
9
|
import { pluginKey as tableWidthPluginKey } from '../pm-plugins/table-width';
|
|
9
10
|
import { TABLE_HIGHLIGHT_GAP, TABLE_SNAP_GAP } from '../ui/consts';
|
|
@@ -31,20 +32,7 @@ const generateResizedPayload = props => {
|
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
};
|
|
34
|
-
|
|
35
|
-
children,
|
|
36
|
-
width,
|
|
37
|
-
maxWidth,
|
|
38
|
-
updateWidth,
|
|
39
|
-
editorView,
|
|
40
|
-
getPos,
|
|
41
|
-
node,
|
|
42
|
-
tableRef,
|
|
43
|
-
displayGuideline,
|
|
44
|
-
attachAnalyticsEvent
|
|
45
|
-
}) => {
|
|
46
|
-
const currentColumnCount = getColgroupChildrenLength(node);
|
|
47
|
-
const minColumnWidth = currentColumnCount <= 3 ? currentColumnCount * COLUMN_MIN_WIDTH : 3 * COLUMN_MIN_WIDTH;
|
|
35
|
+
const getResizerHandleHeight = tableRef => {
|
|
48
36
|
const tableHeight = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientHeight;
|
|
49
37
|
let handleHeightSize = 'small';
|
|
50
38
|
/*
|
|
@@ -60,8 +48,30 @@ export const TableResizer = ({
|
|
|
60
48
|
} else if (tableHeight && tableHeight >= 96) {
|
|
61
49
|
handleHeightSize = 'large';
|
|
62
50
|
}
|
|
51
|
+
return handleHeightSize;
|
|
52
|
+
};
|
|
53
|
+
const getResizerMinWidth = node => {
|
|
54
|
+
const currentColumnCount = getColgroupChildrenLength(node);
|
|
55
|
+
const minColumnWidth = currentColumnCount <= 3 ? currentColumnCount * COLUMN_MIN_WIDTH : 3 * COLUMN_MIN_WIDTH;
|
|
56
|
+
return minColumnWidth;
|
|
57
|
+
};
|
|
58
|
+
export const TableResizer = ({
|
|
59
|
+
children,
|
|
60
|
+
width,
|
|
61
|
+
maxWidth,
|
|
62
|
+
updateWidth,
|
|
63
|
+
editorView,
|
|
64
|
+
getPos,
|
|
65
|
+
node,
|
|
66
|
+
tableRef,
|
|
67
|
+
displayGuideline,
|
|
68
|
+
attachAnalyticsEvent
|
|
69
|
+
}) => {
|
|
70
|
+
var _findTable, _editorView$state;
|
|
63
71
|
const currentGap = useRef(0);
|
|
64
72
|
const [snappingEnabled, setSnappingEnabled] = useState(false);
|
|
73
|
+
const resizerMinWidth = getResizerMinWidth(node);
|
|
74
|
+
const handleHeightSize = getResizerHandleHeight(tableRef);
|
|
65
75
|
const updateActiveGuidelines = useCallback(({
|
|
66
76
|
gap,
|
|
67
77
|
keys
|
|
@@ -85,8 +95,7 @@ export const TableResizer = ({
|
|
|
85
95
|
resizing: true
|
|
86
96
|
}));
|
|
87
97
|
setSnappingEnabled(displayGuideline(defaultGuidelines));
|
|
88
|
-
|
|
89
|
-
}, [width, displayGuideline, editorView]);
|
|
98
|
+
}, [displayGuideline, editorView]);
|
|
90
99
|
const handleResizeStop = useCallback((originalState, delta) => {
|
|
91
100
|
const newWidth = originalState.width + delta.width;
|
|
92
101
|
const {
|
|
@@ -150,10 +159,11 @@ export const TableResizer = ({
|
|
|
150
159
|
handleResize: scheduleResize,
|
|
151
160
|
handleResizeStop: handleResizeStop,
|
|
152
161
|
resizeRatio: 2,
|
|
153
|
-
minWidth:
|
|
162
|
+
minWidth: resizerMinWidth,
|
|
154
163
|
maxWidth: maxWidth,
|
|
155
164
|
snapGap: TABLE_SNAP_GAP,
|
|
156
165
|
snap: guidelineSnaps,
|
|
157
|
-
handlePositioning: "adjacent"
|
|
166
|
+
handlePositioning: "adjacent",
|
|
167
|
+
isHandleVisible: ((_findTable = findTable((_editorView$state = editorView.state) === null || _editorView$state === void 0 ? void 0 : _editorView$state.selection)) === null || _findTable === void 0 ? void 0 : _findTable.pos) === getPos()
|
|
158
168
|
}, children);
|
|
159
169
|
};
|
|
@@ -141,6 +141,7 @@ export const scaleTable = (tableRef, options, domAtPos) => tr => {
|
|
|
141
141
|
// If its not a re-sized table, we still want to re-create cols
|
|
142
142
|
// To force reflow of columns upon delete.
|
|
143
143
|
insertColgroupFromNode(tableRef, node);
|
|
144
|
+
tr.setMeta('scrollIntoView', false);
|
|
144
145
|
return tr;
|
|
145
146
|
}
|
|
146
147
|
let resizeState;
|
package/dist/es2019/version.json
CHANGED
|
@@ -8,6 +8,7 @@ import { ACTION_SUBJECT, EVENT_TYPE, TABLE_ACTION } from '@atlaskit/editor-commo
|
|
|
8
8
|
import { getGuidelinesWithHighlights } from '@atlaskit/editor-common/guideline';
|
|
9
9
|
import { ResizerNext } from '@atlaskit/editor-common/resizer';
|
|
10
10
|
import { TableMap } from '@atlaskit/editor-tables';
|
|
11
|
+
import { findTable } from '@atlaskit/editor-tables/utils';
|
|
11
12
|
import { COLUMN_MIN_WIDTH, getColgroupChildrenLength, hasTableBeenResized, previewScaleTable, scaleTable } from '../pm-plugins/table-resizing/utils';
|
|
12
13
|
import { pluginKey as tableWidthPluginKey } from '../pm-plugins/table-width';
|
|
13
14
|
import { TABLE_HIGHLIGHT_GAP, TABLE_SNAP_GAP } from '../ui/consts';
|
|
@@ -35,19 +36,7 @@ var generateResizedPayload = function generateResizedPayload(props) {
|
|
|
35
36
|
}
|
|
36
37
|
};
|
|
37
38
|
};
|
|
38
|
-
|
|
39
|
-
var children = _ref.children,
|
|
40
|
-
width = _ref.width,
|
|
41
|
-
maxWidth = _ref.maxWidth,
|
|
42
|
-
updateWidth = _ref.updateWidth,
|
|
43
|
-
editorView = _ref.editorView,
|
|
44
|
-
getPos = _ref.getPos,
|
|
45
|
-
node = _ref.node,
|
|
46
|
-
tableRef = _ref.tableRef,
|
|
47
|
-
displayGuideline = _ref.displayGuideline,
|
|
48
|
-
attachAnalyticsEvent = _ref.attachAnalyticsEvent;
|
|
49
|
-
var currentColumnCount = getColgroupChildrenLength(node);
|
|
50
|
-
var minColumnWidth = currentColumnCount <= 3 ? currentColumnCount * COLUMN_MIN_WIDTH : 3 * COLUMN_MIN_WIDTH;
|
|
39
|
+
var getResizerHandleHeight = function getResizerHandleHeight(tableRef) {
|
|
51
40
|
var tableHeight = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientHeight;
|
|
52
41
|
var handleHeightSize = 'small';
|
|
53
42
|
/*
|
|
@@ -63,11 +52,32 @@ export var TableResizer = function TableResizer(_ref) {
|
|
|
63
52
|
} else if (tableHeight && tableHeight >= 96) {
|
|
64
53
|
handleHeightSize = 'large';
|
|
65
54
|
}
|
|
55
|
+
return handleHeightSize;
|
|
56
|
+
};
|
|
57
|
+
var getResizerMinWidth = function getResizerMinWidth(node) {
|
|
58
|
+
var currentColumnCount = getColgroupChildrenLength(node);
|
|
59
|
+
var minColumnWidth = currentColumnCount <= 3 ? currentColumnCount * COLUMN_MIN_WIDTH : 3 * COLUMN_MIN_WIDTH;
|
|
60
|
+
return minColumnWidth;
|
|
61
|
+
};
|
|
62
|
+
export var TableResizer = function TableResizer(_ref) {
|
|
63
|
+
var _findTable, _editorView$state;
|
|
64
|
+
var children = _ref.children,
|
|
65
|
+
width = _ref.width,
|
|
66
|
+
maxWidth = _ref.maxWidth,
|
|
67
|
+
updateWidth = _ref.updateWidth,
|
|
68
|
+
editorView = _ref.editorView,
|
|
69
|
+
getPos = _ref.getPos,
|
|
70
|
+
node = _ref.node,
|
|
71
|
+
tableRef = _ref.tableRef,
|
|
72
|
+
displayGuideline = _ref.displayGuideline,
|
|
73
|
+
attachAnalyticsEvent = _ref.attachAnalyticsEvent;
|
|
66
74
|
var currentGap = useRef(0);
|
|
67
75
|
var _useState = useState(false),
|
|
68
76
|
_useState2 = _slicedToArray(_useState, 2),
|
|
69
77
|
snappingEnabled = _useState2[0],
|
|
70
78
|
setSnappingEnabled = _useState2[1];
|
|
79
|
+
var resizerMinWidth = getResizerMinWidth(node);
|
|
80
|
+
var handleHeightSize = getResizerHandleHeight(tableRef);
|
|
71
81
|
var updateActiveGuidelines = useCallback(function (_ref2) {
|
|
72
82
|
var gap = _ref2.gap,
|
|
73
83
|
keys = _ref2.keys;
|
|
@@ -88,8 +98,7 @@ export var TableResizer = function TableResizer(_ref) {
|
|
|
88
98
|
resizing: true
|
|
89
99
|
}));
|
|
90
100
|
setSnappingEnabled(displayGuideline(defaultGuidelines));
|
|
91
|
-
|
|
92
|
-
}, [width, displayGuideline, editorView]);
|
|
101
|
+
}, [displayGuideline, editorView]);
|
|
93
102
|
var handleResizeStop = useCallback(function (originalState, delta) {
|
|
94
103
|
var newWidth = originalState.width + delta.width;
|
|
95
104
|
var state = editorView.state,
|
|
@@ -152,10 +161,11 @@ export var TableResizer = function TableResizer(_ref) {
|
|
|
152
161
|
handleResize: scheduleResize,
|
|
153
162
|
handleResizeStop: handleResizeStop,
|
|
154
163
|
resizeRatio: 2,
|
|
155
|
-
minWidth:
|
|
164
|
+
minWidth: resizerMinWidth,
|
|
156
165
|
maxWidth: maxWidth,
|
|
157
166
|
snapGap: TABLE_SNAP_GAP,
|
|
158
167
|
snap: guidelineSnaps,
|
|
159
|
-
handlePositioning: "adjacent"
|
|
168
|
+
handlePositioning: "adjacent",
|
|
169
|
+
isHandleVisible: ((_findTable = findTable((_editorView$state = editorView.state) === null || _editorView$state === void 0 ? void 0 : _editorView$state.selection)) === null || _findTable === void 0 ? void 0 : _findTable.pos) === getPos()
|
|
160
170
|
}, children);
|
|
161
171
|
};
|
|
@@ -135,6 +135,7 @@ export var scaleTable = function scaleTable(tableRef, options, domAtPos) {
|
|
|
135
135
|
// If its not a re-sized table, we still want to re-create cols
|
|
136
136
|
// To force reflow of columns upon delete.
|
|
137
137
|
insertColgroupFromNode(tableRef, node);
|
|
138
|
+
tr.setMeta('scrollIntoView', false);
|
|
138
139
|
return tr;
|
|
139
140
|
}
|
|
140
141
|
var resizeState;
|
package/dist/esm/version.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-table",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "Table plugin for the @atlaskit/editor",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@atlaskit/adf-schema": "^26.3.0",
|
|
31
|
-
"@atlaskit/editor-common": "^74.
|
|
31
|
+
"@atlaskit/editor-common": "^74.28.0",
|
|
32
32
|
"@atlaskit/editor-palette": "1.5.1",
|
|
33
33
|
"@atlaskit/editor-plugin-analytics": "^0.1.0",
|
|
34
34
|
"@atlaskit/editor-plugin-content-insertion": "^0.0.6",
|
|
@@ -53,15 +53,15 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
53
53
|
);
|
|
54
54
|
const resolvedTable = findTable(editorView.state.selection);
|
|
55
55
|
|
|
56
|
-
return {
|
|
56
|
+
return { table: resolvedTable!.node, editorView };
|
|
57
57
|
};
|
|
58
58
|
|
|
59
|
-
describe('show correct container
|
|
59
|
+
describe('show correct table container', () => {
|
|
60
60
|
const buildContainer = (
|
|
61
61
|
isTableResizingEnabled: boolean,
|
|
62
62
|
isBreakoutEnabled: boolean = true,
|
|
63
63
|
) => {
|
|
64
|
-
const {
|
|
64
|
+
const { table, editorView } = createNode();
|
|
65
65
|
|
|
66
66
|
const { container } = render(
|
|
67
67
|
<TableContainer
|
|
@@ -69,7 +69,7 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
69
69
|
width: 1800,
|
|
70
70
|
lineLength: 720,
|
|
71
71
|
}}
|
|
72
|
-
node={
|
|
72
|
+
node={table}
|
|
73
73
|
isTableResizingEnabled={isTableResizingEnabled}
|
|
74
74
|
isBreakoutEnabled={isBreakoutEnabled}
|
|
75
75
|
className={''}
|
|
@@ -83,12 +83,12 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
83
83
|
return container;
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
test('when isTableResizingEnabled is true', () => {
|
|
86
|
+
test('should wrap table in resizer when isTableResizingEnabled is true', () => {
|
|
87
87
|
const container = buildContainer(true);
|
|
88
88
|
expect(!!container.querySelector('.resizer-item')).toBeTruthy();
|
|
89
89
|
});
|
|
90
90
|
|
|
91
|
-
test('when isTableResizingEnabled is false', () => {
|
|
91
|
+
test('should not wrap table in resizer when isTableResizingEnabled is false', () => {
|
|
92
92
|
const container = buildContainer(false);
|
|
93
93
|
expect(!!container.querySelector('.resizer-item')).toBeFalsy();
|
|
94
94
|
});
|
|
@@ -99,7 +99,7 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
99
99
|
isTableResizingEnabled: boolean,
|
|
100
100
|
isBreakoutEnabled: boolean = true,
|
|
101
101
|
) => {
|
|
102
|
-
const {
|
|
102
|
+
const { table, editorView } = createNode();
|
|
103
103
|
|
|
104
104
|
const { container } = render(
|
|
105
105
|
<TableContainer
|
|
@@ -107,7 +107,7 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
107
107
|
width: 1800,
|
|
108
108
|
lineLength: 720,
|
|
109
109
|
}}
|
|
110
|
-
node={
|
|
110
|
+
node={table}
|
|
111
111
|
isTableResizingEnabled={isTableResizingEnabled}
|
|
112
112
|
isBreakoutEnabled={isBreakoutEnabled}
|
|
113
113
|
className={''}
|
|
@@ -121,12 +121,12 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
121
121
|
return container;
|
|
122
122
|
};
|
|
123
123
|
|
|
124
|
-
test('when isTableResizingEnabled is true
|
|
124
|
+
test('should not render resizer when isTableResizingEnabled is true', () => {
|
|
125
125
|
const container = buildContainer(true);
|
|
126
126
|
expect(!!container.querySelector('.resizer-item')).toBeFalsy();
|
|
127
127
|
});
|
|
128
128
|
|
|
129
|
-
test('when isTableResizingEnabled is false
|
|
129
|
+
test('should not render resizer when isTableResizingEnabled is false', () => {
|
|
130
130
|
const container = buildContainer(false);
|
|
131
131
|
expect(!!container.querySelector('.resizer-item')).toBeFalsy();
|
|
132
132
|
});
|
|
@@ -134,13 +134,13 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
134
134
|
|
|
135
135
|
describe('sets width and margin correctly for resizable container', () => {
|
|
136
136
|
const buildContainer = (attrs: TableAttributes) => {
|
|
137
|
-
const {
|
|
137
|
+
const { table, editorView } = createNode(attrs);
|
|
138
138
|
|
|
139
139
|
const { container } = render(
|
|
140
140
|
<ResizableTableContainer
|
|
141
141
|
containerWidth={1800}
|
|
142
142
|
lineLength={720}
|
|
143
|
-
node={
|
|
143
|
+
node={table}
|
|
144
144
|
className={''}
|
|
145
145
|
editorView={editorView}
|
|
146
146
|
getPos={() => 1}
|
|
@@ -162,14 +162,14 @@ describe('table -> nodeviews -> TableContainer.tsx', () => {
|
|
|
162
162
|
|
|
163
163
|
describe('analytics', () => {
|
|
164
164
|
const buildContainer = (attrs: TableAttributes) => {
|
|
165
|
-
const {
|
|
165
|
+
const { table, editorView } = createNode(attrs);
|
|
166
166
|
const analyticsMock = jest.fn();
|
|
167
167
|
|
|
168
168
|
const { container } = render(
|
|
169
169
|
<ResizableTableContainer
|
|
170
170
|
containerWidth={1800}
|
|
171
171
|
lineLength={720}
|
|
172
|
-
node={
|
|
172
|
+
node={table}
|
|
173
173
|
className={''}
|
|
174
174
|
editorView={editorView}
|
|
175
175
|
getPos={() => 0}
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
} from '@atlaskit/editor-common/resizer';
|
|
26
26
|
import type { GuidelineConfig } from '@atlaskit/editor-plugin-guideline';
|
|
27
27
|
import { TableMap } from '@atlaskit/editor-tables';
|
|
28
|
+
import { findTable } from '@atlaskit/editor-tables/utils';
|
|
28
29
|
|
|
29
30
|
import {
|
|
30
31
|
COLUMN_MIN_WIDTH,
|
|
@@ -78,24 +79,7 @@ const generateResizedPayload = (props: {
|
|
|
78
79
|
};
|
|
79
80
|
};
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
children,
|
|
83
|
-
width,
|
|
84
|
-
maxWidth,
|
|
85
|
-
updateWidth,
|
|
86
|
-
editorView,
|
|
87
|
-
getPos,
|
|
88
|
-
node,
|
|
89
|
-
tableRef,
|
|
90
|
-
displayGuideline,
|
|
91
|
-
attachAnalyticsEvent,
|
|
92
|
-
}: PropsWithChildren<TableResizerProps>) => {
|
|
93
|
-
const currentColumnCount = getColgroupChildrenLength(node);
|
|
94
|
-
const minColumnWidth =
|
|
95
|
-
currentColumnCount <= 3
|
|
96
|
-
? currentColumnCount * COLUMN_MIN_WIDTH
|
|
97
|
-
: 3 * COLUMN_MIN_WIDTH;
|
|
98
|
-
|
|
82
|
+
const getResizerHandleHeight = (tableRef: HTMLTableElement) => {
|
|
99
83
|
const tableHeight = tableRef?.clientHeight;
|
|
100
84
|
let handleHeightSize: HandleHeightSizeType | undefined = 'small';
|
|
101
85
|
/*
|
|
@@ -112,9 +96,38 @@ export const TableResizer = ({
|
|
|
112
96
|
} else if (tableHeight && tableHeight >= 96) {
|
|
113
97
|
handleHeightSize = 'large';
|
|
114
98
|
}
|
|
99
|
+
|
|
100
|
+
return handleHeightSize;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const getResizerMinWidth = (node: PMNode) => {
|
|
104
|
+
const currentColumnCount = getColgroupChildrenLength(node);
|
|
105
|
+
const minColumnWidth =
|
|
106
|
+
currentColumnCount <= 3
|
|
107
|
+
? currentColumnCount * COLUMN_MIN_WIDTH
|
|
108
|
+
: 3 * COLUMN_MIN_WIDTH;
|
|
109
|
+
|
|
110
|
+
return minColumnWidth;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const TableResizer = ({
|
|
114
|
+
children,
|
|
115
|
+
width,
|
|
116
|
+
maxWidth,
|
|
117
|
+
updateWidth,
|
|
118
|
+
editorView,
|
|
119
|
+
getPos,
|
|
120
|
+
node,
|
|
121
|
+
tableRef,
|
|
122
|
+
displayGuideline,
|
|
123
|
+
attachAnalyticsEvent,
|
|
124
|
+
}: PropsWithChildren<TableResizerProps>) => {
|
|
115
125
|
const currentGap = useRef(0);
|
|
116
126
|
const [snappingEnabled, setSnappingEnabled] = useState(false);
|
|
117
127
|
|
|
128
|
+
const resizerMinWidth = getResizerMinWidth(node);
|
|
129
|
+
const handleHeightSize = getResizerHandleHeight(tableRef);
|
|
130
|
+
|
|
118
131
|
const updateActiveGuidelines = useCallback(
|
|
119
132
|
({ gap, keys }: { gap: number; keys: string[] }) => {
|
|
120
133
|
if (gap !== currentGap.current) {
|
|
@@ -151,8 +164,7 @@ export const TableResizer = ({
|
|
|
151
164
|
dispatch(tr.setMeta(tableWidthPluginKey, { resizing: true }));
|
|
152
165
|
|
|
153
166
|
setSnappingEnabled(displayGuideline(defaultGuidelines));
|
|
154
|
-
|
|
155
|
-
}, [width, displayGuideline, editorView]);
|
|
167
|
+
}, [displayGuideline, editorView]);
|
|
156
168
|
|
|
157
169
|
const handleResizeStop = useCallback<HandleResize>(
|
|
158
170
|
(originalState, delta) => {
|
|
@@ -257,11 +269,12 @@ export const TableResizer = ({
|
|
|
257
269
|
handleResize={scheduleResize}
|
|
258
270
|
handleResizeStop={handleResizeStop}
|
|
259
271
|
resizeRatio={2}
|
|
260
|
-
minWidth={
|
|
272
|
+
minWidth={resizerMinWidth}
|
|
261
273
|
maxWidth={maxWidth}
|
|
262
274
|
snapGap={TABLE_SNAP_GAP}
|
|
263
275
|
snap={guidelineSnaps}
|
|
264
276
|
handlePositioning="adjacent"
|
|
277
|
+
isHandleVisible={findTable(editorView.state?.selection)?.pos === getPos()}
|
|
265
278
|
>
|
|
266
279
|
{children}
|
|
267
280
|
</ResizerNext>
|