@atlaskit/editor-plugin-table 7.16.11 → 7.16.13
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/.eslintrc.js +3 -3
- package/CHANGELOG.md +16 -0
- package/dist/cjs/commands/misc.js +3 -3
- package/dist/cjs/nodeviews/TableCell.js +10 -10
- package/dist/cjs/nodeviews/TableContainer.js +83 -27
- package/dist/cjs/nodeviews/TableResizer.js +40 -19
- package/dist/cjs/nodeviews/TableRow.js +23 -23
- package/dist/cjs/pm-plugins/table-resizing/plugin.js +3 -3
- package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +4 -4
- package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +3 -3
- package/dist/cjs/ui/FloatingContextualMenu/styles.js +1 -1
- package/dist/cjs/ui/FloatingDragMenu/styles.js +1 -1
- package/dist/cjs/ui/common-styles.js +13 -13
- package/dist/cjs/ui/ui-styles.js +25 -25
- package/dist/cjs/utils/guidelines.js +7 -4
- package/dist/cjs/utils/merged-cells.js +3 -3
- package/dist/cjs/utils/snapping.js +7 -8
- package/dist/es2019/commands/misc.js +3 -3
- package/dist/es2019/nodeviews/TableContainer.js +70 -9
- package/dist/es2019/nodeviews/TableResizer.js +42 -21
- package/dist/es2019/nodeviews/TableRow.js +21 -21
- package/dist/es2019/pm-plugins/table-resizing/plugin.js +3 -3
- package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +4 -4
- package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +3 -3
- package/dist/es2019/ui/FloatingContextualMenu/styles.js +47 -47
- package/dist/es2019/ui/FloatingDragMenu/styles.js +30 -30
- package/dist/es2019/ui/common-styles.js +802 -816
- package/dist/es2019/ui/ui-styles.js +665 -678
- package/dist/es2019/utils/guidelines.js +5 -2
- package/dist/es2019/utils/merged-cells.js +3 -3
- package/dist/es2019/utils/snapping.js +5 -6
- package/dist/esm/commands/misc.js +3 -3
- package/dist/esm/nodeviews/TableCell.js +10 -10
- package/dist/esm/nodeviews/TableContainer.js +85 -29
- package/dist/esm/nodeviews/TableResizer.js +42 -21
- package/dist/esm/nodeviews/TableRow.js +23 -23
- package/dist/esm/pm-plugins/table-resizing/plugin.js +3 -3
- package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +4 -4
- package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +3 -3
- package/dist/esm/ui/FloatingContextualMenu/styles.js +1 -1
- package/dist/esm/ui/FloatingDragMenu/styles.js +1 -1
- package/dist/esm/ui/common-styles.js +13 -13
- package/dist/esm/ui/ui-styles.js +25 -25
- package/dist/esm/utils/guidelines.js +6 -3
- package/dist/esm/utils/merged-cells.js +3 -3
- package/dist/esm/utils/snapping.js +6 -7
- package/dist/types/nodeviews/TableResizer.d.ts +2 -1
- package/dist/types/pm-plugins/decorations/utils/index.d.ts +1 -1
- package/dist/types/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
- package/dist/types/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
- package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
- package/dist/types/ui/ColumnResizeWidget/index.d.ts +1 -1
- package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
- package/dist/types/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
- package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
- package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
- package/dist/types/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
- package/dist/types/utils/guidelines.d.ts +2 -1
- package/dist/types/utils/snapping.d.ts +3 -2
- package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -1
- package/dist/types-ts4.5/pm-plugins/decorations/utils/index.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
- package/dist/types-ts4.5/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
- package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
- package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
- package/dist/types-ts4.5/utils/guidelines.d.ts +2 -1
- package/dist/types-ts4.5/utils/snapping.d.ts +3 -2
- package/docs/0-intro.tsx +9 -7
- package/package.json +3 -3
- package/report.api.md +67 -66
- package/src/commands/clear.ts +36 -44
- package/src/commands/collapse.ts +8 -8
- package/src/commands/column-resize.ts +412 -452
- package/src/commands/delete.ts +14 -14
- package/src/commands/display-mode.ts +10 -11
- package/src/commands/go-to-next-cell.ts +48 -54
- package/src/commands/hover.ts +210 -227
- package/src/commands/index.ts +35 -35
- package/src/commands/insert.ts +208 -235
- package/src/commands/misc.ts +655 -748
- package/src/commands/referentiality.ts +9 -9
- package/src/commands/selection.ts +433 -563
- package/src/commands/sort.ts +68 -86
- package/src/commands/split-cell.ts +14 -14
- package/src/commands/toggle.ts +69 -67
- package/src/commands-with-analytics.ts +570 -639
- package/src/create-plugin-config.ts +13 -13
- package/src/event-handlers.ts +513 -612
- package/src/handlers.ts +120 -133
- package/src/nodeviews/ExternalDropTargets.tsx +68 -73
- package/src/nodeviews/OverflowShadowsObserver.ts +148 -157
- package/src/nodeviews/TableCell.ts +47 -54
- package/src/nodeviews/TableComponent.tsx +1018 -1112
- package/src/nodeviews/TableComponentWithSharedState.tsx +91 -94
- package/src/nodeviews/TableContainer.tsx +384 -340
- package/src/nodeviews/TableNodeViewBase.ts +19 -24
- package/src/nodeviews/TableResizer.tsx +642 -653
- package/src/nodeviews/TableRow.ts +580 -629
- package/src/nodeviews/TableStickyScrollbar.ts +173 -190
- package/src/nodeviews/__mocks__/OverflowShadowsObserver.ts +8 -8
- package/src/nodeviews/__mocks__/OverridableMock.ts +14 -15
- package/src/nodeviews/table.tsx +345 -375
- package/src/nodeviews/types.ts +21 -24
- package/src/nodeviews/update-overflow-shadows.ts +8 -14
- package/src/plugin.tsx +578 -603
- package/src/pm-plugins/analytics/actions.ts +10 -12
- package/src/pm-plugins/analytics/commands.ts +31 -37
- package/src/pm-plugins/analytics/plugin-factory.ts +4 -2
- package/src/pm-plugins/analytics/plugin-key.ts +1 -3
- package/src/pm-plugins/analytics/plugin.ts +60 -70
- package/src/pm-plugins/analytics/reducer.ts +19 -19
- package/src/pm-plugins/analytics/types.ts +10 -10
- package/src/pm-plugins/analytics/utils/moved-event.ts +38 -38
- package/src/pm-plugins/decorations/plugin.ts +58 -77
- package/src/pm-plugins/decorations/utils/column-controls.ts +59 -71
- package/src/pm-plugins/decorations/utils/column-resizing.ts +50 -57
- package/src/pm-plugins/decorations/utils/compose-decorations.ts +6 -6
- package/src/pm-plugins/decorations/utils/index.ts +3 -6
- package/src/pm-plugins/decorations/utils/types.ts +7 -12
- package/src/pm-plugins/default-table-selection.ts +3 -3
- package/src/pm-plugins/drag-and-drop/actions.ts +25 -25
- package/src/pm-plugins/drag-and-drop/commands-with-analytics.ts +158 -190
- package/src/pm-plugins/drag-and-drop/commands.ts +154 -170
- package/src/pm-plugins/drag-and-drop/consts.ts +4 -5
- package/src/pm-plugins/drag-and-drop/plugin-factory.ts +23 -20
- package/src/pm-plugins/drag-and-drop/plugin-key.ts +1 -3
- package/src/pm-plugins/drag-and-drop/plugin.ts +329 -383
- package/src/pm-plugins/drag-and-drop/reducer.ts +30 -30
- package/src/pm-plugins/drag-and-drop/types.ts +8 -8
- package/src/pm-plugins/drag-and-drop/utils/autoscrollers.ts +38 -41
- package/src/pm-plugins/drag-and-drop/utils/getDragBehaviour.ts +3 -6
- package/src/pm-plugins/drag-and-drop/utils/monitor.ts +57 -70
- package/src/pm-plugins/keymap.ts +208 -220
- package/src/pm-plugins/main.ts +348 -400
- package/src/pm-plugins/plugin-factory.ts +32 -34
- package/src/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -97
- package/src/pm-plugins/sticky-headers/commands.ts +2 -6
- package/src/pm-plugins/sticky-headers/plugin-key.ts +1 -3
- package/src/pm-plugins/sticky-headers/plugin-state.ts +41 -44
- package/src/pm-plugins/sticky-headers/plugin.ts +4 -4
- package/src/pm-plugins/sticky-headers/types.ts +8 -8
- package/src/pm-plugins/sticky-headers/util.ts +10 -10
- package/src/pm-plugins/table-analytics.ts +70 -72
- package/src/pm-plugins/table-local-id.ts +180 -184
- package/src/pm-plugins/table-resizing/commands.ts +72 -85
- package/src/pm-plugins/table-resizing/event-handlers.ts +298 -317
- package/src/pm-plugins/table-resizing/plugin-factory.ts +10 -10
- package/src/pm-plugins/table-resizing/plugin-key.ts +1 -3
- package/src/pm-plugins/table-resizing/plugin.ts +61 -68
- package/src/pm-plugins/table-resizing/reducer.ts +30 -33
- package/src/pm-plugins/table-resizing/utils/colgroup.ts +84 -84
- package/src/pm-plugins/table-resizing/utils/column-state.ts +78 -81
- package/src/pm-plugins/table-resizing/utils/content-width.ts +94 -114
- package/src/pm-plugins/table-resizing/utils/dom.ts +93 -110
- package/src/pm-plugins/table-resizing/utils/index.ts +29 -34
- package/src/pm-plugins/table-resizing/utils/misc.ts +94 -119
- package/src/pm-plugins/table-resizing/utils/resize-column.ts +93 -106
- package/src/pm-plugins/table-resizing/utils/resize-logic.ts +240 -257
- package/src/pm-plugins/table-resizing/utils/resize-state.ts +343 -372
- package/src/pm-plugins/table-resizing/utils/scale-table.ts +202 -207
- package/src/pm-plugins/table-resizing/utils/types.ts +17 -17
- package/src/pm-plugins/table-resizing/utils/unit-to-number.ts +1 -2
- package/src/pm-plugins/table-selection-keymap.ts +25 -51
- package/src/pm-plugins/table-width.ts +191 -204
- package/src/pm-plugins/view-mode-sort/index.ts +223 -227
- package/src/pm-plugins/view-mode-sort/plugin-key.ts +3 -2
- package/src/pm-plugins/view-mode-sort/types.ts +12 -12
- package/src/pm-plugins/view-mode-sort/utils.ts +108 -117
- package/src/reducer.ts +139 -155
- package/src/toolbar.tsx +815 -905
- package/src/transforms/column-width.ts +186 -213
- package/src/transforms/delete-columns.ts +208 -222
- package/src/transforms/delete-rows.ts +117 -121
- package/src/transforms/fix-tables.ts +190 -215
- package/src/transforms/merge.ts +263 -269
- package/src/transforms/replace-table.ts +27 -43
- package/src/transforms/split.ts +65 -75
- package/src/types.ts +421 -427
- package/src/ui/ColumnResizeWidget/index.tsx +40 -47
- package/src/ui/DragHandle/HandleIconComponent.tsx +9 -13
- package/src/ui/DragHandle/index.tsx +221 -250
- package/src/ui/DragPreview/index.tsx +35 -35
- package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +33 -41
- package/src/ui/FloatingContextualButton/FixedButton.tsx +154 -157
- package/src/ui/FloatingContextualButton/index.tsx +109 -115
- package/src/ui/FloatingContextualButton/styles.ts +43 -46
- package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +634 -694
- package/src/ui/FloatingContextualMenu/index.tsx +83 -101
- package/src/ui/FloatingContextualMenu/styles.ts +57 -65
- package/src/ui/FloatingDeleteButton/DeleteButton.tsx +37 -37
- package/src/ui/FloatingDeleteButton/getPopUpOptions.ts +47 -57
- package/src/ui/FloatingDeleteButton/index.tsx +319 -350
- package/src/ui/FloatingDragMenu/DragMenu.tsx +555 -596
- package/src/ui/FloatingDragMenu/DropdownMenu.tsx +152 -162
- package/src/ui/FloatingDragMenu/index.tsx +88 -102
- package/src/ui/FloatingDragMenu/styles.ts +51 -54
- package/src/ui/FloatingInsertButton/InsertButton.tsx +204 -217
- package/src/ui/FloatingInsertButton/getPopupOptions.ts +100 -115
- package/src/ui/FloatingInsertButton/index.tsx +248 -292
- package/src/ui/FloatingToolbarLabel/FloatingToolbarLabel.tsx +24 -29
- package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +308 -329
- package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +85 -94
- package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +46 -46
- package/src/ui/TableFloatingColumnControls/index.tsx +116 -136
- package/src/ui/TableFloatingControls/CornerControls/ClassicCornerControls.tsx +79 -91
- package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +95 -102
- package/src/ui/TableFloatingControls/CornerControls/index.tsx +1 -4
- package/src/ui/TableFloatingControls/CornerControls/types.ts +8 -8
- package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +50 -50
- package/src/ui/TableFloatingControls/NumberColumn/index.tsx +111 -124
- package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +86 -105
- package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +305 -341
- package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +72 -75
- package/src/ui/TableFloatingControls/index.tsx +191 -193
- package/src/ui/TableFullWidthLabel/index.tsx +20 -20
- package/src/ui/common-styles.ts +880 -912
- package/src/ui/consts.ts +29 -74
- package/src/ui/icons/AddColLeftIcon.tsx +33 -39
- package/src/ui/icons/AddColRightIcon.tsx +33 -39
- package/src/ui/icons/AddRowAboveIcon.tsx +16 -22
- package/src/ui/icons/AddRowBelowIcon.tsx +33 -39
- package/src/ui/icons/DisplayModeIcon.tsx +31 -31
- package/src/ui/icons/DragHandleDisabledIcon.tsx +19 -21
- package/src/ui/icons/DragHandleIcon.tsx +12 -12
- package/src/ui/icons/DragInMotionIcon.tsx +45 -52
- package/src/ui/icons/MergeCellsIcon.tsx +22 -28
- package/src/ui/icons/MinimisedHandle.tsx +9 -9
- package/src/ui/icons/SplitCellIcon.tsx +30 -36
- package/src/ui/ui-styles.ts +769 -798
- package/src/utils/alignment.ts +1 -1
- package/src/utils/analytics.ts +192 -208
- package/src/utils/collapse.ts +55 -64
- package/src/utils/column-controls.ts +237 -254
- package/src/utils/create.ts +30 -30
- package/src/utils/decoration.ts +482 -502
- package/src/utils/dom.ts +127 -134
- package/src/utils/drag-menu.ts +322 -373
- package/src/utils/get-allow-add-column-custom-step.ts +4 -5
- package/src/utils/guidelines.ts +16 -21
- package/src/utils/index.ts +68 -68
- package/src/utils/merged-cells.ts +245 -254
- package/src/utils/nodes.ts +91 -106
- package/src/utils/paste.ts +119 -135
- package/src/utils/row-controls.ts +199 -213
- package/src/utils/selection.ts +77 -87
- package/src/utils/snapping.ts +87 -100
- package/src/utils/table.ts +44 -44
- package/src/utils/transforms.ts +5 -5
- package/src/utils/update-plugin-state-decorations.ts +5 -9
|
@@ -4,11 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.findClosestSnap = exports.defaultTablePreserveSnappingWidths = exports.defaultSnappingWidths = exports.calculateDefaultTablePreserveSnappings = exports.calculateDefaultSnappings = void 0;
|
|
7
|
+
exports.findClosestSnap = exports.defaultTablePreserveSnappingWidths = exports.defaultSnappingWidths = exports.calculateDefaultTablePreserveSnappings = exports.calculateDefaultSnappings = exports.PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
9
|
var _guideline = require("@atlaskit/editor-common/guideline");
|
|
10
10
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
11
|
-
var _consts = require("../ui/consts");
|
|
12
11
|
var numberOfLanesInDefaultLayoutWidth = 12;
|
|
13
12
|
var calculateSubSnappingWidths = function calculateSubSnappingWidths(totalLanes, totalWidth) {
|
|
14
13
|
return new Array(Math.round(totalLanes / 2) - 1).fill(totalWidth / totalLanes).map(function (v, i) {
|
|
@@ -27,7 +26,7 @@ var calculateDefaultTablePreserveSnappings = exports.calculateDefaultTablePreser
|
|
|
27
26
|
innerGuidelines: false,
|
|
28
27
|
breakoutPoints: false
|
|
29
28
|
};
|
|
30
|
-
var dynamicFullWidthLine = editorContainerWith - _editorSharedStyles.akEditorGutterPadding * 2 >= _editorSharedStyles.akEditorFullWidthLayoutWidth ? _editorSharedStyles.akEditorFullWidthLayoutWidth : editorContainerWith - _editorSharedStyles.akEditorGutterPadding * 2
|
|
29
|
+
var dynamicFullWidthLine = editorContainerWith - _editorSharedStyles.akEditorGutterPadding * 2 >= _editorSharedStyles.akEditorFullWidthLayoutWidth ? _editorSharedStyles.akEditorFullWidthLayoutWidth : editorContainerWith - _editorSharedStyles.akEditorGutterPadding * 2;
|
|
31
30
|
var guides = [dynamicFullWidthLine - lengthOffset];
|
|
32
31
|
if (!exclude.breakoutPoints) {
|
|
33
32
|
guides.unshift(_editorSharedStyles.akEditorDefaultLayoutWidth + lengthOffset, _editorSharedStyles.akEditorCalculatedWideLayoutWidth + lengthOffset);
|
|
@@ -38,18 +37,18 @@ var calculateDefaultTablePreserveSnappings = exports.calculateDefaultTablePreser
|
|
|
38
37
|
return guides;
|
|
39
38
|
};
|
|
40
39
|
var defaultSnappingWidths = exports.defaultSnappingWidths = calculateDefaultSnappings();
|
|
41
|
-
|
|
40
|
+
var PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET = exports.PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET = 0;
|
|
42
41
|
// FF TablePreserve for defaultSnappingWidths
|
|
43
|
-
var defaultTablePreserveSnappingWidths = exports.defaultTablePreserveSnappingWidths = function defaultTablePreserveSnappingWidths(editorContainerWidth) {
|
|
44
|
-
var exclude = arguments.length >
|
|
42
|
+
var defaultTablePreserveSnappingWidths = exports.defaultTablePreserveSnappingWidths = function defaultTablePreserveSnappingWidths(lengthOffset, editorContainerWidth) {
|
|
43
|
+
var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
45
44
|
innerGuidelines: false,
|
|
46
45
|
breakoutPoints: false
|
|
47
46
|
};
|
|
48
|
-
return editorContainerWidth - _editorSharedStyles.akEditorGutterPadding * 2 > _editorSharedStyles.akEditorFullWidthLayoutWidth ? calculateDefaultSnappings() : calculateDefaultTablePreserveSnappings(
|
|
47
|
+
return editorContainerWidth - _editorSharedStyles.akEditorGutterPadding * 2 > _editorSharedStyles.akEditorFullWidthLayoutWidth ? calculateDefaultSnappings() : calculateDefaultTablePreserveSnappings(lengthOffset, editorContainerWidth, exclude); // lengthOffset was hardcoded 0 here, created PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET instead.
|
|
49
48
|
};
|
|
50
49
|
|
|
51
50
|
/**
|
|
52
|
-
* Returns keys of guidelines that are closest to the table and
|
|
51
|
+
* Returns keys of guidelines that are closest to the table and within the snapGap
|
|
53
52
|
*/
|
|
54
53
|
var findClosestSnap = exports.findClosestSnap = function findClosestSnap(currentWidth, snapWidths, guidelines) {
|
|
55
54
|
var snapGap = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
@@ -278,9 +278,9 @@ export const moveCursorBackward = (state, dispatch) => {
|
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
/*
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
281
|
+
ensure we're just at a top level paragraph
|
|
282
|
+
otherwise, perform regular backspace behaviour
|
|
283
|
+
*/
|
|
284
284
|
const grandparent = $cursor.node($cursor.depth - 1);
|
|
285
285
|
if ($cursor.parent.type !== state.schema.nodes.paragraph || grandparent && grandparent.type !== state.schema.nodes.doc) {
|
|
286
286
|
return false;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React, { forwardRef, useCallback, useMemo, useRef, useState } from 'react';
|
|
1
|
+
import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
4
4
|
import { getTableContainerWidth } from '@atlaskit/editor-common/node-width';
|
|
5
|
-
import { akEditorDefaultLayoutWidth, akEditorGutterPadding,
|
|
5
|
+
import { akEditorDefaultLayoutWidth, akEditorGutterPadding, akEditorMobileBreakoutPoint } from '@atlaskit/editor-shared-styles';
|
|
6
|
+
import { setTableAlignmentWithTableContentWithPos } from '../commands/misc';
|
|
6
7
|
import { TABLE_MAX_WIDTH } from '../pm-plugins/table-resizing/utils';
|
|
7
8
|
import { TableCssClassName as ClassName } from '../types';
|
|
8
9
|
import { TableResizer } from './TableResizer';
|
|
@@ -35,9 +36,37 @@ const leftAlignStyle = {
|
|
|
35
36
|
};
|
|
36
37
|
const AlignmentTableContainer = ({
|
|
37
38
|
node,
|
|
38
|
-
children
|
|
39
|
+
children,
|
|
40
|
+
pluginInjectionApi,
|
|
41
|
+
getPos,
|
|
42
|
+
editorView
|
|
39
43
|
}) => {
|
|
40
44
|
const alignment = node.attrs.layout;
|
|
45
|
+
const {
|
|
46
|
+
tableState
|
|
47
|
+
} = useSharedPluginState(pluginInjectionApi, ['table']);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (tableState && editorView && getPos) {
|
|
50
|
+
const {
|
|
51
|
+
wasFullWidthModeEnabled,
|
|
52
|
+
isFullWidthModeEnabled
|
|
53
|
+
} = tableState;
|
|
54
|
+
if (wasFullWidthModeEnabled && !isFullWidthModeEnabled && node.attrs.width > akEditorDefaultLayoutWidth) {
|
|
55
|
+
const pos = getPos && getPos();
|
|
56
|
+
if (typeof pos !== 'number') {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const tr = setTableAlignmentWithTableContentWithPos('center', {
|
|
60
|
+
pos,
|
|
61
|
+
node
|
|
62
|
+
})(editorView.state);
|
|
63
|
+
if (tr) {
|
|
64
|
+
editorView.dispatch(tr);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
|
+
}, [editorView, tableState, node]);
|
|
41
70
|
const style = useMemo(() => {
|
|
42
71
|
return alignment === 'align-start' ? leftAlignStyle : centerAlignStyle;
|
|
43
72
|
}, [alignment]);
|
|
@@ -53,7 +82,10 @@ const AlignmentTableContainer = ({
|
|
|
53
82
|
const AlignmentTableContainerWrapper = ({
|
|
54
83
|
isTableAlignmentEnabled,
|
|
55
84
|
node,
|
|
56
|
-
children
|
|
85
|
+
children,
|
|
86
|
+
pluginInjectionApi,
|
|
87
|
+
getPos,
|
|
88
|
+
editorView
|
|
57
89
|
}) => {
|
|
58
90
|
if (!isTableAlignmentEnabled) {
|
|
59
91
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -67,7 +99,10 @@ const AlignmentTableContainerWrapper = ({
|
|
|
67
99
|
}, children);
|
|
68
100
|
}
|
|
69
101
|
return /*#__PURE__*/React.createElement(AlignmentTableContainer, {
|
|
70
|
-
node: node
|
|
102
|
+
node: node,
|
|
103
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
104
|
+
getPos: getPos,
|
|
105
|
+
editorView: editorView
|
|
71
106
|
}, children);
|
|
72
107
|
};
|
|
73
108
|
export const ResizableTableContainer = /*#__PURE__*/React.memo(({
|
|
@@ -89,6 +124,12 @@ export const ResizableTableContainer = /*#__PURE__*/React.memo(({
|
|
|
89
124
|
const containerRef = useRef(null);
|
|
90
125
|
const tableWidthRef = useRef(akEditorDefaultLayoutWidth);
|
|
91
126
|
const [resizing, setIsResizing] = useState(false);
|
|
127
|
+
const {
|
|
128
|
+
tableState
|
|
129
|
+
} = useSharedPluginState(pluginInjectionApi, ['table']);
|
|
130
|
+
const {
|
|
131
|
+
isFullWidthModeEnabled
|
|
132
|
+
} = tableState;
|
|
92
133
|
const updateContainerHeight = useCallback(height => {
|
|
93
134
|
var _containerRef$current;
|
|
94
135
|
// current StickyHeader State is not stable to be fetch.
|
|
@@ -145,9 +186,25 @@ export const ResizableTableContainer = /*#__PURE__*/React.memo(({
|
|
|
145
186
|
const {
|
|
146
187
|
editorViewModeState
|
|
147
188
|
} = useSharedPluginState(pluginInjectionApi, ['editorViewMode']);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
189
|
+
let responsiveContainerWidth = 0;
|
|
190
|
+
const resizeHandleSpacing = 12;
|
|
191
|
+
// When Full width editor enabled, a Mac OS user can change "ak-editor-content-area" width by
|
|
192
|
+
// updating Settings -> Appearance -> Show scroll bars from "When scrolling" to "Always". It causes
|
|
193
|
+
// issues when viwport width is less than full width Editor's width. To detect avoid them
|
|
194
|
+
// we need to use lineLength to defined responsiveWidth instead of containerWidth
|
|
195
|
+
// (which does not get updated when Mac setting changes) in Full-width editor.
|
|
196
|
+
if (isFullWidthModeEnabled) {
|
|
197
|
+
// When: Show scroll bars -> containerWidth = akEditorGutterPadding * 2 + lineLength;
|
|
198
|
+
// When: Always -> containerWidth = akEditorGutterPadding * 2 + lineLength + scrollbarWidth;
|
|
199
|
+
// scrollbarWidth can vary. Values can be 14, 15, 16 and up to 20px;
|
|
200
|
+
responsiveContainerWidth = isTableScalingEnabled ? lineLength : containerWidth - akEditorGutterPadding * 2 - resizeHandleSpacing;
|
|
201
|
+
} else {
|
|
202
|
+
// 76 is currently an accepted padding value considering the spacing for resizer handle
|
|
203
|
+
// containerWidth = width of a DIV with test id="ak-editor-fp-content-area". It is a parent of
|
|
204
|
+
// a DIV with className="ak-editor-content-area". This DIV has padding left and padding right.
|
|
205
|
+
// padding left = padding right = akEditorGutterPadding = 32
|
|
206
|
+
responsiveContainerWidth = isTableScalingEnabled ? containerWidth - akEditorGutterPadding * 2 : containerWidth - akEditorGutterPadding * 2 - resizeHandleSpacing;
|
|
207
|
+
}
|
|
151
208
|
let width = Math.min(tableWidth, responsiveContainerWidth);
|
|
152
209
|
if (!isResizing) {
|
|
153
210
|
tableWidthRef.current = width;
|
|
@@ -167,6 +224,7 @@ export const ResizableTableContainer = /*#__PURE__*/React.memo(({
|
|
|
167
224
|
attachAnalyticsEvent,
|
|
168
225
|
displayGapCursor,
|
|
169
226
|
isTableAlignmentEnabled,
|
|
227
|
+
isFullWidthModeEnabled,
|
|
170
228
|
isTableScalingEnabled,
|
|
171
229
|
isWholeTableInDanger,
|
|
172
230
|
pluginInjectionApi,
|
|
@@ -176,7 +234,10 @@ export const ResizableTableContainer = /*#__PURE__*/React.memo(({
|
|
|
176
234
|
const isLivePageViewMode = (editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode) === 'view';
|
|
177
235
|
return /*#__PURE__*/React.createElement(AlignmentTableContainerWrapper, {
|
|
178
236
|
isTableAlignmentEnabled: isTableAlignmentEnabled,
|
|
179
|
-
node: node
|
|
237
|
+
node: node,
|
|
238
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
239
|
+
getPos: getPos,
|
|
240
|
+
editorView: editorView
|
|
180
241
|
}, /*#__PURE__*/React.createElement("div", {
|
|
181
242
|
style: {
|
|
182
243
|
width: tableWidthRef.current,
|
|
@@ -9,6 +9,7 @@ import { tableMessages as messages } from '@atlaskit/editor-common/messages';
|
|
|
9
9
|
import { ResizerNext } from '@atlaskit/editor-common/resizer';
|
|
10
10
|
import { browser } from '@atlaskit/editor-common/utils';
|
|
11
11
|
import { chainCommands } from '@atlaskit/editor-prosemirror/commands';
|
|
12
|
+
import { akEditorGutterPadding } from '@atlaskit/editor-shared-styles';
|
|
12
13
|
import { findTable } from '@atlaskit/editor-tables/utils';
|
|
13
14
|
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
14
15
|
import { setTableAlignmentWithTableContentWithPos, updateWidthToWidest } from '../commands/misc';
|
|
@@ -18,8 +19,8 @@ import { pluginKey as tableWidthPluginKey } from '../pm-plugins/table-width';
|
|
|
18
19
|
import { TABLE_GUIDELINE_VISIBLE_ADJUSTMENT, TABLE_HIGHLIGHT_GAP, TABLE_HIGHLIGHT_TOLERANCE, TABLE_SNAP_GAP } from '../ui/consts';
|
|
19
20
|
import { ALIGN_CENTER, ALIGN_START, normaliseAlignment } from '../utils/alignment';
|
|
20
21
|
import { generateResizedPayload, generateResizeFrameRatePayloads, useMeasureFramerate } from '../utils/analytics';
|
|
21
|
-
import { defaultGuidelines, defaultGuidelinesForPreserveTable } from '../utils/guidelines';
|
|
22
|
-
import { defaultSnappingWidths, defaultTablePreserveSnappingWidths, findClosestSnap } from '../utils/snapping';
|
|
22
|
+
import { defaultGuidelines, defaultGuidelinesForPreserveTable, PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET } from '../utils/guidelines';
|
|
23
|
+
import { defaultSnappingWidths, defaultTablePreserveSnappingWidths, findClosestSnap, PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET } from '../utils/snapping';
|
|
23
24
|
const RESIZE_STEP_VALUE = 10;
|
|
24
25
|
const FULL_WIDTH_EDITOR_CONTENT_WIDTH = 1800;
|
|
25
26
|
const handles = {
|
|
@@ -36,13 +37,13 @@ const getResizerHandleHeight = tableRef => {
|
|
|
36
37
|
var _tableRef$clientHeigh;
|
|
37
38
|
const tableHeight = (_tableRef$clientHeigh = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientHeight) !== null && _tableRef$clientHeigh !== void 0 ? _tableRef$clientHeigh : 0;
|
|
38
39
|
/*
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
- One row table height (minimum possible table height) ~ 45px
|
|
41
|
+
- Two row table height ~ 90px
|
|
42
|
+
- Three row table height ~ 134px
|
|
43
|
+
In the if below we need to use:
|
|
44
|
+
- > 46 because the height of the table can be a float number like 45.44.
|
|
45
|
+
- < 96 is the height of large resize handle.
|
|
46
|
+
*/
|
|
46
47
|
if (tableHeight >= 96) {
|
|
47
48
|
return 'large';
|
|
48
49
|
}
|
|
@@ -64,10 +65,26 @@ const getResizerMinWidth = node => {
|
|
|
64
65
|
* So the guideline container won't make the fabric-editor-popup-scroll-parent overflow
|
|
65
66
|
* @param guidelines
|
|
66
67
|
* @param containerWidth editorWidth
|
|
68
|
+
* @param lineLength
|
|
69
|
+
* @param isTableScalingEnabled
|
|
70
|
+
* @param isFullWidthModeEnabled
|
|
67
71
|
*/
|
|
68
|
-
const getVisibleGuidelines = (guidelines, containerWidth) => {
|
|
72
|
+
const getVisibleGuidelines = (guidelines, containerWidth, lineLength, isTableScalingEnabled, isFullWidthModeEnabled) => {
|
|
73
|
+
let guidelineVisibleAdjustment = TABLE_GUIDELINE_VISIBLE_ADJUSTMENT;
|
|
74
|
+
if (isTableScalingEnabled) {
|
|
75
|
+
// Notes:
|
|
76
|
+
// Example: containerWidth = 1244, lineLength = 1180 (used for when editor full width mode is enabled)
|
|
77
|
+
// Full width/dynamic x coordinate can be float number.
|
|
78
|
+
// Ex: guideline.position.x can be 590.5. So 590.5 * 2 = 1181 (not 1180).
|
|
79
|
+
// For PTW we need to ensure that dynamic guideline never gets excluded: 1181 should be > width + guidelineVisibleAdjustment
|
|
80
|
+
// guidelineVisibleAdjustment is set as a negative value, so we making it positive and adding + 1
|
|
81
|
+
const preserve_table_widths_adjustment = -1 * PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET + 1;
|
|
82
|
+
guidelineVisibleAdjustment = isFullWidthModeEnabled ? preserve_table_widths_adjustment // guidelineVisibleAdjustment = -2, if lineLength = 1180, 1181 < 1180 + 2 is true.
|
|
83
|
+
: -2 * akEditorGutterPadding + preserve_table_widths_adjustment; // guidelineVisibleAdjustment = -62, if containerWidth is 1244, 1181 < 1244 - 62 = 1182 is true.
|
|
84
|
+
}
|
|
85
|
+
const width = isTableScalingEnabled && isFullWidthModeEnabled ? lineLength : containerWidth;
|
|
69
86
|
return guidelines.filter(guideline => {
|
|
70
|
-
return guideline.position && guideline.position.x !== undefined && typeof guideline.position.x === 'number' && Math.abs(guideline.position.x * 2) <
|
|
87
|
+
return guideline.position && guideline.position.x !== undefined && typeof guideline.position.x === 'number' && Math.abs(guideline.position.x * 2) < width + guidelineVisibleAdjustment;
|
|
71
88
|
});
|
|
72
89
|
};
|
|
73
90
|
export const TableResizer = ({
|
|
@@ -89,7 +106,8 @@ export const TableResizer = ({
|
|
|
89
106
|
isTableScalingEnabled,
|
|
90
107
|
isTableAlignmentEnabled,
|
|
91
108
|
isWholeTableInDanger,
|
|
92
|
-
pluginInjectionApi
|
|
109
|
+
pluginInjectionApi,
|
|
110
|
+
isFullWidthModeEnabled
|
|
93
111
|
}) => {
|
|
94
112
|
var _findTable, _editorView$state;
|
|
95
113
|
const currentGap = useRef(0);
|
|
@@ -128,13 +146,15 @@ export const TableResizer = ({
|
|
|
128
146
|
}) => {
|
|
129
147
|
if (gap !== currentGap.current) {
|
|
130
148
|
currentGap.current = gap;
|
|
131
|
-
const visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth);
|
|
149
|
+
const visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth, lineLength, Boolean(isTableScalingEnabled), Boolean(isFullWidthModeEnabled));
|
|
132
150
|
displayGuideline(getGuidelinesWithHighlights(gap, TABLE_SNAP_GAP, keys, visibleGuidelines));
|
|
133
151
|
}
|
|
134
|
-
}, [isTableScalingEnabled, excludeGuidelineConfig, containerWidth, displayGuideline]);
|
|
152
|
+
}, [isTableScalingEnabled, excludeGuidelineConfig, containerWidth, displayGuideline, lineLength, isFullWidthModeEnabled]);
|
|
135
153
|
const guidelineSnaps = useMemo(() => snappingEnabled ? {
|
|
136
|
-
x: isTableScalingEnabled ? defaultTablePreserveSnappingWidths(
|
|
137
|
-
|
|
154
|
+
x: isTableScalingEnabled ? defaultTablePreserveSnappingWidths(PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET,
|
|
155
|
+
// was hardcoded to 0, using PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET instead.
|
|
156
|
+
isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth, excludeGuidelineConfig) : defaultSnappingWidths
|
|
157
|
+
} : undefined, [snappingEnabled, isTableScalingEnabled, excludeGuidelineConfig, containerWidth, lineLength, isFullWidthModeEnabled]);
|
|
138
158
|
const switchToCenterAlignment = useCallback((pos, node, newWidth, state, dispatch) => {
|
|
139
159
|
if (isTableAlignmentEnabled && node && node.attrs.layout === ALIGN_START && newWidth > lineLength && lineLength < FULL_WIDTH_EDITOR_CONTENT_WIDTH &&
|
|
140
160
|
// We don't want to switch alignment in Full-width editor
|
|
@@ -192,12 +212,12 @@ export const TableResizer = ({
|
|
|
192
212
|
name: TABLE_OVERFLOW_CHANGE_TRIGGER.RESIZED
|
|
193
213
|
});
|
|
194
214
|
dispatch(tr);
|
|
195
|
-
const visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth);
|
|
215
|
+
const visibleGuidelines = getVisibleGuidelines(isTableScalingEnabled ? defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth, excludeGuidelineConfig) : defaultGuidelines, containerWidth, lineLength, Boolean(isTableScalingEnabled), Boolean(isFullWidthModeEnabled));
|
|
196
216
|
setSnappingEnabled(displayGuideline(visibleGuidelines));
|
|
197
217
|
if (onResizeStart) {
|
|
198
218
|
onResizeStart();
|
|
199
219
|
}
|
|
200
|
-
}, [startMeasure, editorView, displayGapCursor, node.attrs.localId, tableRef, isTableScalingEnabled, excludeGuidelineConfig, containerWidth, displayGuideline, onResizeStart]);
|
|
220
|
+
}, [startMeasure, editorView, displayGapCursor, node.attrs.localId, tableRef, isTableScalingEnabled, excludeGuidelineConfig, containerWidth, lineLength, displayGuideline, onResizeStart, isFullWidthModeEnabled]);
|
|
201
221
|
const handleResize = useCallback((originalState, delta) => {
|
|
202
222
|
var _node$attrs$localId, _node$attrs;
|
|
203
223
|
countFrames();
|
|
@@ -217,7 +237,8 @@ export const TableResizer = ({
|
|
|
217
237
|
start: pos + 1,
|
|
218
238
|
parentWidth: newWidth
|
|
219
239
|
}, editorView.domAtPos.bind(editorView), isTableScalingEnabled);
|
|
220
|
-
const
|
|
240
|
+
const editorContainerWidth = isFullWidthModeEnabled ? lineLength + 2 * akEditorGutterPadding : containerWidth;
|
|
241
|
+
const closestSnap = findClosestSnap(newWidth, isTableScalingEnabled ? defaultTablePreserveSnappingWidths(PRESERVE_TABLE_SNAPPING_LENGTH_OFFSET, editorContainerWidth, excludeGuidelineConfig) : defaultSnappingWidths, isTableScalingEnabled ? defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, editorContainerWidth, excludeGuidelineConfig) : defaultGuidelines, TABLE_HIGHLIGHT_GAP, TABLE_HIGHLIGHT_TOLERANCE);
|
|
221
242
|
updateActiveGuidelines(closestSnap);
|
|
222
243
|
|
|
223
244
|
// When snapping to the full width guideline, resize the table to be 1800px
|
|
@@ -226,7 +247,7 @@ export const TableResizer = ({
|
|
|
226
247
|
dispatch
|
|
227
248
|
} = editorView;
|
|
228
249
|
const currentTableNodeLocalId = (_node$attrs$localId = node === null || node === void 0 ? void 0 : (_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.localId) !== null && _node$attrs$localId !== void 0 ? _node$attrs$localId : '';
|
|
229
|
-
const fullWidthGuideline = defaultGuidelinesForPreserveTable(
|
|
250
|
+
const fullWidthGuideline = defaultGuidelinesForPreserveTable(PRESERVE_TABLE_GUIDELINES_LENGTH_OFFSET, editorContainerWidth, excludeGuidelineConfig).filter(guideline => guideline.isFullWidth)[0];
|
|
230
251
|
const isFullWidthGuidelineActive = closestSnap.keys.includes(fullWidthGuideline.key);
|
|
231
252
|
const shouldUpdateWidthToWidest = !!isTableScalingEnabled && isFullWidthGuidelineActive;
|
|
232
253
|
chainCommands((state, dispatch) => {
|
|
@@ -236,7 +257,7 @@ export const TableResizer = ({
|
|
|
236
257
|
}))(state, dispatch);
|
|
237
258
|
updateWidth(shouldUpdateWidthToWidest ? TABLE_MAX_WIDTH : newWidth);
|
|
238
259
|
return newWidth;
|
|
239
|
-
}, [countFrames, isTableScalingEnabled, excludeGuidelineConfig, tableRef, node, editorView, updateActiveGuidelines, containerWidth, updateWidth, getPos, switchToCenterAlignment]);
|
|
260
|
+
}, [countFrames, isTableScalingEnabled, isFullWidthModeEnabled, excludeGuidelineConfig, tableRef, node, editorView, updateActiveGuidelines, containerWidth, lineLength, updateWidth, getPos, switchToCenterAlignment]);
|
|
240
261
|
const scheduleResize = useMemo(() => rafSchd(handleResize), [handleResize]);
|
|
241
262
|
const handleResizeStop = useCallback((originalState, delta) => {
|
|
242
263
|
var _node$attrs$localId2, _node$attrs2;
|
|
@@ -294,27 +294,27 @@ export default class TableRow extends TableNodeView {
|
|
|
294
294
|
isHeaderSticky() {
|
|
295
295
|
var _sentinelTop$rootBoun;
|
|
296
296
|
/*
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
297
|
+
# Overview
|
|
298
|
+
I'm going to list all the view states associated with the sentinels and when they should trigger sticky headers.
|
|
299
|
+
The format of the states are; {top|bottom}:{in|above|below}
|
|
300
|
+
ie sentinel:view-position -- both "above" and "below" are equal to out of the viewport
|
|
301
|
+
For example; "top:in" means top sentinel is within the viewport. "bottom:above" means the bottom sentinel is
|
|
302
|
+
above and out of the viewport
|
|
303
|
+
This will hopefully simplify things and make it easier to determine when sticky should/shouldn't be triggered.
|
|
304
|
+
# States
|
|
305
|
+
top:in / bottom:in - NOT sticky
|
|
306
|
+
top:in / bottom:above - NOT sticky - NOTE: This is an inversion clause
|
|
307
|
+
top:in / bottom:below - NOT sticky
|
|
308
|
+
top:above / bottom:in - STICKY
|
|
309
|
+
top:above / bottom:above - NOT sticky
|
|
310
|
+
top:above / bottom:below - STICKY
|
|
311
|
+
top:below / bottom:in - NOT sticky - NOTE: This is an inversion clause
|
|
312
|
+
top:below / bottom:above - NOT sticky - NOTE: This is an inversion clause
|
|
313
|
+
top:below / bottom:below - NOT sticky
|
|
314
|
+
# Summary
|
|
315
|
+
The only time the header should be sticky is when the top sentinel is above the view and the bottom sentinel
|
|
316
|
+
is in or below it.
|
|
317
|
+
*/
|
|
318
318
|
|
|
319
319
|
const {
|
|
320
320
|
top: sentinelTop,
|
|
@@ -43,9 +43,9 @@ export function createPlugin(dispatch, {
|
|
|
43
43
|
let isColumnKeyboardResizeStarted = false;
|
|
44
44
|
if (getBooleanFF('platform.editor.a11y-column-resizing_emcvz')) {
|
|
45
45
|
/*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
We need to start listening mouse events if column resize started from keyboard.
|
|
47
|
+
This will allow continue resizing via mouse
|
|
48
|
+
*/
|
|
49
49
|
const {
|
|
50
50
|
isKeyboardResize
|
|
51
51
|
} = getTablePluginState(state);
|
|
@@ -76,10 +76,10 @@ export const updateColgroup = (state, tableRef, tableNode, isTableScalingEnabled
|
|
|
76
76
|
const cols = tableRef === null || tableRef === void 0 ? void 0 : tableRef.querySelectorAll('col');
|
|
77
77
|
const columnsCount = cols === null || cols === void 0 ? void 0 : cols.length;
|
|
78
78
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
updateColgroup will update whole table scale when click the column resize handle, this behavior will affect when table overflowed, when now resize handle been dragged and extend to make table overflowed, table will show overflow. This need to be confirmed because it conflict with how isTableScalingEnabled work.
|
|
80
|
+
We don't want to scale the table when resizing columns, only when viewpoint shrinks the table.
|
|
81
|
+
We need to remove !isColumnResizing if we handled auto scale table when mouseUp event.
|
|
82
|
+
* */
|
|
83
83
|
if (isTableScalingEnabled && tableNode) {
|
|
84
84
|
const scalePercent = getTableScalingPercent(tableNode, tableRef);
|
|
85
85
|
state.cols.filter(column => column && !!column.width) // if width is 0, we dont want to apply that.
|
|
@@ -162,9 +162,9 @@ export const scaleTable = (tableRef, options, domAtPos, isTableScalingEnabledOnC
|
|
|
162
162
|
// We need to do this check to reduce the number of race conditions when working with tables.
|
|
163
163
|
// This metadata is been used in the sendTransaction function in the Collab plugin
|
|
164
164
|
/* Added !layoutChanged check here to solve unnecessary scroll bar after publish when click on breakout button multiple times and publish
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
scaleTable is only called once every time a breakout button is clicked, so it is safe not to add the meta 'scaleTable' to the tr.
|
|
166
|
+
Leaving the tr.setMeta('scaleTable', true) here for race conditions that we aren't aware of.
|
|
167
|
+
*/
|
|
168
168
|
!layoutChanged && tr.setMeta('scaleTable', true);
|
|
169
169
|
return tr;
|
|
170
170
|
}
|
|
@@ -18,58 +18,58 @@ export const elementBeforeIconStyles = css({
|
|
|
18
18
|
export const tablePopupStyles = (isDragAndDropEnabled
|
|
19
19
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
20
20
|
) => css`
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
21
|
+
.${ClassName.CONTEXTUAL_SUBMENU} {
|
|
22
|
+
border-radius: ${"var(--ds-border-radius, 3px)"};
|
|
23
|
+
background: ${"var(--ds-surface-overlay, white)"};
|
|
24
|
+
box-shadow: ${`var(--ds-shadow-overlay, ${`0 4px 8px -2px ${N60A}, 0 0 1px ${N60A}`})`};
|
|
25
|
+
display: block;
|
|
26
|
+
position: absolute;
|
|
27
|
+
top: 0;
|
|
28
|
+
left: ${isDragAndDropEnabled ? contextualMenuDropdownWidthDnD : contextualMenuDropdownWidth}px;
|
|
29
|
+
padding: ${"var(--ds-space-100, 8px)"};
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
> div {
|
|
32
|
+
padding: 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
.${ClassName.CONTEXTUAL_MENU_ICON} {
|
|
37
|
+
display: flex;
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
&::before {
|
|
40
|
+
content: '';
|
|
41
|
+
display: block;
|
|
42
|
+
border: 1px solid ${tableBackgroundBorderColor};
|
|
43
|
+
border-radius: ${"var(--ds-border-radius, 3px)"};
|
|
44
|
+
width: 20px;
|
|
45
|
+
height: 20px;
|
|
46
|
+
}
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
&::after {
|
|
49
|
+
content: '›';
|
|
50
|
+
margin-left: ${"var(--ds-space-050, 4px)"};
|
|
51
|
+
line-height: 20px;
|
|
52
|
+
color: ${`var(--ds-icon, ${N90})`};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
.${ClassName.CONTEXTUAL_MENU_ICON_SMALL} {
|
|
57
|
+
display: flex;
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
&::before {
|
|
60
|
+
content: '';
|
|
61
|
+
display: block;
|
|
62
|
+
border: 1px solid ${tableBackgroundBorderColor};
|
|
63
|
+
border-radius: ${"var(--ds-border-radius, 3px)"};
|
|
64
|
+
width: 14px;
|
|
65
|
+
height: 14px;
|
|
66
|
+
}
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
&::after {
|
|
69
|
+
content: '›';
|
|
70
|
+
margin-left: ${"var(--ds-space-050, 4px)"};
|
|
71
|
+
line-height: 14px;
|
|
72
|
+
color: ${`var(--ds-icon, ${N90})`};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
75
|
`;
|
|
@@ -15,40 +15,40 @@ export const elementBeforeIconStyles = css({
|
|
|
15
15
|
|
|
16
16
|
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
17
17
|
export const dragMenuBackgroundColorStyles = css`
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
.${ClassName.DRAG_SUBMENU} {
|
|
19
|
+
border-radius: ${"var(--ds-border-radius, 3px)"};
|
|
20
|
+
background: ${"var(--ds-surface-overlay, white)"};
|
|
21
|
+
box-shadow: ${`var(--ds-shadow-overlay, ${`0 4px 8px -2px ${N60A}, 0 0 1px ${N60A}`})`};
|
|
22
|
+
display: block;
|
|
23
|
+
position: absolute;
|
|
24
|
+
top: 0;
|
|
25
|
+
left: ${dragMenuDropdownWidth}px;
|
|
26
|
+
padding: ${"var(--ds-space-100, 8px)"};
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
> div {
|
|
29
|
+
padding: 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
.${ClassName.DRAG_SUBMENU_ICON} {
|
|
34
|
+
display: flex;
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
&::before {
|
|
37
|
+
content: '';
|
|
38
|
+
display: block;
|
|
39
|
+
border: 1px solid ${tableBackgroundBorderColor};
|
|
40
|
+
border-radius: ${"var(--ds-border-radius, 3px)"};
|
|
41
|
+
width: 14px;
|
|
42
|
+
height: 14px;
|
|
43
|
+
}
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
&::after {
|
|
46
|
+
content: '›';
|
|
47
|
+
margin-left: ${"var(--ds-space-050, 4px)"};
|
|
48
|
+
line-height: 14px;
|
|
49
|
+
color: ${`var(--ds-icon, ${N90})`};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
52
|
`;
|
|
53
53
|
export const toggleStyles = css({
|
|
54
54
|
display: 'flex',
|