@atlaskit/editor-plugin-table 24.4.14 → 24.4.16
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 +16 -0
- package/dist/cjs/nodeviews/TableRowNativeStickyWithFallback.js +60 -85
- package/dist/cjs/pm-plugins/handlers.js +13 -21
- package/dist/cjs/pm-plugins/table-anchor-names/plugin.js +3 -6
- package/dist/cjs/tablePlugin.js +2 -2
- package/dist/cjs/ui/FloatingContextualButton/index.js +1 -16
- package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +31 -51
- package/dist/cjs/ui/FloatingDragMenu/index.js +1 -2
- package/dist/cjs/ui/FloatingTableMenu/index.js +1 -2
- package/dist/cjs/ui/TableFloatingControls/index.js +1 -10
- package/dist/cjs/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
- package/dist/cjs/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
- package/dist/cjs/ui/TableMenu/shared/items/BackgroundColorItem.compiled.css +0 -1
- package/dist/cjs/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
- package/dist/cjs/ui/common-styles.js +4 -4
- package/dist/es2019/nodeviews/TableRowNativeStickyWithFallback.js +60 -85
- package/dist/es2019/pm-plugins/handlers.js +13 -22
- package/dist/es2019/pm-plugins/table-anchor-names/plugin.js +3 -6
- package/dist/es2019/tablePlugin.js +2 -2
- package/dist/es2019/ui/FloatingContextualButton/index.js +1 -16
- package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +4 -23
- package/dist/es2019/ui/FloatingDragMenu/index.js +1 -2
- package/dist/es2019/ui/FloatingTableMenu/index.js +1 -2
- package/dist/es2019/ui/TableFloatingControls/index.js +2 -11
- package/dist/es2019/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
- package/dist/es2019/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
- package/dist/es2019/ui/TableMenu/shared/items/BackgroundColorItem.compiled.css +0 -1
- package/dist/es2019/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
- package/dist/es2019/ui/common-styles.js +54 -72
- package/dist/esm/nodeviews/TableRowNativeStickyWithFallback.js +60 -85
- package/dist/esm/pm-plugins/handlers.js +13 -21
- package/dist/esm/pm-plugins/table-anchor-names/plugin.js +3 -6
- package/dist/esm/tablePlugin.js +2 -2
- package/dist/esm/ui/FloatingContextualButton/index.js +1 -16
- package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +31 -51
- package/dist/esm/ui/FloatingDragMenu/index.js +1 -2
- package/dist/esm/ui/FloatingTableMenu/index.js +1 -2
- package/dist/esm/ui/TableFloatingControls/index.js +2 -11
- package/dist/esm/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
- package/dist/esm/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
- package/dist/esm/ui/TableMenu/shared/items/BackgroundColorItem.compiled.css +0 -1
- package/dist/esm/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
- package/dist/esm/ui/common-styles.js +4 -4
- package/package.json +10 -31
|
@@ -16,7 +16,6 @@ import { ToolbarButton } from '@atlaskit/editor-common/ui-menu';
|
|
|
16
16
|
import { findDomRefAtPos } from '@atlaskit/editor-prosemirror/utils';
|
|
17
17
|
import { akEditorSmallZIndex } from '@atlaskit/editor-shared-styles';
|
|
18
18
|
import ExpandIcon from '@atlaskit/icon/core/chevron-down';
|
|
19
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
20
19
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
21
20
|
import { toggleActiveTableMenu, toggleContextualMenu } from '../../pm-plugins/commands';
|
|
22
21
|
import { getPluginState } from '../../pm-plugins/plugin-factory';
|
|
@@ -156,7 +155,7 @@ const FloatingContextualButtonInner = /*#__PURE__*/React.memo(props => {
|
|
|
156
155
|
testId: expValEquals('platform_editor_table_menu_updates', 'isEnabled', true) ? 'pm-table-contextual-menu-button' : undefined
|
|
157
156
|
}));
|
|
158
157
|
const parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
|
|
159
|
-
const parentStickyNative = targetCellRef.parentElement && (
|
|
158
|
+
const parentStickyNative = targetCellRef.parentElement && (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW));
|
|
160
159
|
if (parentStickyNative && targetCellRef.nodeName === 'TH' && isNativeStickySupported() && expValEquals('platform_editor_table_sticky_header_improvements', 'cohort', 'test_with_overflow')) {
|
|
161
160
|
var _targetCellRef$parent;
|
|
162
161
|
/* We need to default to checking the anchor style because there may be a conflict with the block controls
|
|
@@ -171,20 +170,6 @@ const FloatingContextualButtonInner = /*#__PURE__*/React.memo(props => {
|
|
|
171
170
|
if (colAnchorName === '') {
|
|
172
171
|
colAnchorName = targetCellRef === null || targetCellRef === void 0 ? void 0 : targetCellRef.dataset.nodeAnchor;
|
|
173
172
|
}
|
|
174
|
-
if (!expValEquals('platform_editor_table_sticky_header_patch_9', 'isEnabled', true)) {
|
|
175
|
-
return jsx("div", {
|
|
176
|
-
css: anchorStyles,
|
|
177
|
-
style: {
|
|
178
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
|
|
179
|
-
top: `calc(${BUTTON_OFFSET}px + anchor(${rowAnchorName} top))`,
|
|
180
|
-
right: `calc(${BUTTON_OFFSET}px + anchor(${colAnchorName} right))`,
|
|
181
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
|
|
182
|
-
positionAnchor: colAnchorName
|
|
183
|
-
} // need to do this because CSSProperties doesn't have positionAnchor property even though it's a valid CSS property
|
|
184
|
-
,
|
|
185
|
-
"data-testid": "table-cell-options-anchor-wrapper"
|
|
186
|
-
}, button);
|
|
187
|
-
}
|
|
188
173
|
if (rowAnchorName && colAnchorName) {
|
|
189
174
|
return jsx("div", {
|
|
190
175
|
css: anchorStyles,
|
|
@@ -574,25 +574,15 @@ export class ContextualMenu extends Component {
|
|
|
574
574
|
});
|
|
575
575
|
_defineProperty(this, "toggleOpen", () => {
|
|
576
576
|
const {
|
|
577
|
-
isOpen,
|
|
578
577
|
editorView: {
|
|
579
578
|
state,
|
|
580
579
|
dispatch
|
|
581
580
|
}
|
|
582
581
|
} = this.props;
|
|
583
|
-
if (
|
|
584
|
-
|
|
585
|
-
toggleContextualMenu()(state, dispatch);
|
|
586
|
-
}
|
|
587
|
-
this.closeSubmenu();
|
|
588
|
-
return;
|
|
589
|
-
}
|
|
590
|
-
toggleContextualMenu()(state, dispatch);
|
|
591
|
-
if (!isOpen) {
|
|
592
|
-
this.setState({
|
|
593
|
-
isSubmenuOpen: false
|
|
594
|
-
});
|
|
582
|
+
if (getPluginState(state).isContextualMenuOpen) {
|
|
583
|
+
toggleContextualMenu()(state, dispatch);
|
|
595
584
|
}
|
|
585
|
+
this.closeSubmenu();
|
|
596
586
|
});
|
|
597
587
|
_defineProperty(this, "handleOpenChange", payload => {
|
|
598
588
|
const {
|
|
@@ -709,21 +699,12 @@ export class ContextualMenu extends Component {
|
|
|
709
699
|
setColorWithAnalytics(editorAnalyticsAPI)(INPUT_METHOD.CONTEXT_MENU, color)(state, dispatch);
|
|
710
700
|
if (!expValEquals('platform_editor_toolbar_submenu_open_click', 'isEnabled', true)) {
|
|
711
701
|
this.toggleOpen();
|
|
712
|
-
} else
|
|
702
|
+
} else {
|
|
713
703
|
this.toggleOpen();
|
|
714
704
|
if (isCellMenuOpenByKeyboard) {
|
|
715
705
|
setFocusToCellMenu(false)(editorView.state, dispatch);
|
|
716
706
|
dom.focus();
|
|
717
707
|
}
|
|
718
|
-
} else {
|
|
719
|
-
toggleContextualMenu()(state, dispatch);
|
|
720
|
-
this.setState({
|
|
721
|
-
isSubmenuOpen: false
|
|
722
|
-
});
|
|
723
|
-
if (isCellMenuOpenByKeyboard) {
|
|
724
|
-
setFocusToCellMenu(false)(state, dispatch);
|
|
725
|
-
dom.focus();
|
|
726
|
-
}
|
|
727
708
|
}
|
|
728
709
|
});
|
|
729
710
|
}
|
|
@@ -2,7 +2,6 @@ import React from 'react';
|
|
|
2
2
|
import { Popup } from '@atlaskit/editor-common/ui';
|
|
3
3
|
import { akEditorFloatingDialogZIndex, akEditorFloatingOverlapPanelZIndex } from '@atlaskit/editor-shared-styles';
|
|
4
4
|
import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
|
|
5
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
5
|
import { TableCssClassName as ClassName } from '../../types';
|
|
7
6
|
import { dragMenuDropdownWidth, tablePopupMenuFitHeight } from '../consts';
|
|
8
7
|
import DragMenu from './DragMenu';
|
|
@@ -31,7 +30,7 @@ const FloatingDragMenu = ({
|
|
|
31
30
|
if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
|
|
32
31
|
return null;
|
|
33
32
|
}
|
|
34
|
-
const inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW))
|
|
33
|
+
const inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW));
|
|
35
34
|
const targetHandleRef = direction === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
|
|
36
35
|
if (!targetHandleRef || !(editorView.state.selection instanceof CellSelection)) {
|
|
37
36
|
return null;
|
|
@@ -5,7 +5,6 @@ import { OutsideClickTargetRefContext, withReactEditorViewOuterListeners } from
|
|
|
5
5
|
import { akEditorFloatingDialogZIndex, akEditorFloatingOverlapPanelZIndex } from '@atlaskit/editor-shared-styles';
|
|
6
6
|
import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
|
|
7
7
|
import { ToolbarKeyboardNavigationProvider } from '@atlaskit/editor-toolbar/toolbar-keyboard-navigation-provider';
|
|
8
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
9
8
|
import { closeActiveTableMenu } from '../../pm-plugins/commands';
|
|
10
9
|
import { TableCssClassName as ClassName } from '../../types';
|
|
11
10
|
import { dragTableInsertColumnButtonSize, tablePopupMenuFitHeight } from '../consts';
|
|
@@ -122,7 +121,7 @@ const FloatingTableMenu = ({
|
|
|
122
121
|
if (!isDragMenuOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
|
|
123
122
|
return null;
|
|
124
123
|
}
|
|
125
|
-
const inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW))
|
|
124
|
+
const inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW));
|
|
126
125
|
const targetHandleRef = dragMenuDirection === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
|
|
127
126
|
if (!targetHandleRef || !(editorView.state.selection instanceof CellSelection)) {
|
|
128
127
|
return null;
|
|
@@ -5,24 +5,16 @@
|
|
|
5
5
|
import { Fragment, useCallback } from 'react';
|
|
6
6
|
|
|
7
7
|
/* eslint-disable @typescript-eslint/consistent-type-imports, @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766; jsx required at runtime for @jsxRuntime classic */
|
|
8
|
-
import { jsx
|
|
8
|
+
import { jsx } from '@emotion/react';
|
|
9
9
|
import { getBrowserInfo } from '@atlaskit/editor-common/browser';
|
|
10
10
|
import { findTable } from '@atlaskit/editor-tables/utils';
|
|
11
11
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
12
|
-
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
13
12
|
import { hoverCell, hoverRows, selectRow, selectRows } from '../../pm-plugins/commands';
|
|
14
13
|
import { isTableNested } from '../../pm-plugins/utils/nodes';
|
|
15
14
|
import { TableCssClassName as ClassName } from '../../types';
|
|
16
15
|
import { DragCornerControlsWithSelection } from './CornerControls/DragCornerControls';
|
|
17
16
|
import NumberColumn from './NumberColumn';
|
|
18
17
|
import { DragControlsWithSelection } from './RowControls/DragControls';
|
|
19
|
-
const styles = css({
|
|
20
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-selectors
|
|
21
|
-
'&:has(~ .pm-table-wrapper-no-overflow)': {
|
|
22
|
-
marginTop: 0
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
|
|
26
18
|
// Row controls
|
|
27
19
|
export const TableFloatingControls = ({
|
|
28
20
|
editorView,
|
|
@@ -103,8 +95,7 @@ export const TableFloatingControls = ({
|
|
|
103
95
|
const shouldShowCornerControls = isNested && !fg('platform_editor_nested_dnd_styles_changes');
|
|
104
96
|
return jsx("div", {
|
|
105
97
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
106
|
-
className: wrapperClassName
|
|
107
|
-
css: [expValEquals('platform_editor_table_sticky_header_improvements', 'cohort', 'test_with_overflow') && !fg('platform_editor_table_sticky_header_patch_7') && styles]
|
|
98
|
+
className: wrapperClassName
|
|
108
99
|
}, jsx("div", {
|
|
109
100
|
role: "none",
|
|
110
101
|
onMouseDown: e => !isDragAndDropEnabled && e.preventDefault()
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* SortDecreasingItem.tsx generated by @compiled/babel-plugin v0.
|
|
1
|
+
/* SortDecreasingItem.tsx generated by @compiled/babel-plugin v0.40.0 */
|
|
2
2
|
import _extends from "@babel/runtime/helpers/extends";
|
|
3
3
|
import "./SortDecreasingItem.compiled.css";
|
|
4
4
|
import { ax, ix } from "@compiled/react/runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* SortIncreasingItem.tsx generated by @compiled/babel-plugin v0.
|
|
1
|
+
/* SortIncreasingItem.tsx generated by @compiled/babel-plugin v0.40.0 */
|
|
2
2
|
import _extends from "@babel/runtime/helpers/extends";
|
|
3
3
|
import "./SortIncreasingItem.compiled.css";
|
|
4
4
|
import { ax, ix } from "@compiled/react/runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* BackgroundColorItem.tsx generated by @compiled/babel-plugin v0.
|
|
1
|
+
/* BackgroundColorItem.tsx generated by @compiled/babel-plugin v0.40.0 */
|
|
2
2
|
import "./BackgroundColorItem.compiled.css";
|
|
3
3
|
import { ax, ix } from "@compiled/react/runtime";
|
|
4
4
|
import React, { useCallback, useMemo } from 'react';
|
|
@@ -512,19 +512,19 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
512
512
|
0 6px 4px -4px ${"var(--ds-shadow-overflow-perimeter, #1E1F211f)"};
|
|
513
513
|
}
|
|
514
514
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
515
|
+
th.${ClassName.TABLE_HEADER_CELL}::after {
|
|
516
|
+
height: 100%;
|
|
517
|
+
content: '';
|
|
518
|
+
border-left: 1px solid ${tableBorderColor};
|
|
519
|
+
border-bottom: 1px solid ${tableBorderColor};
|
|
520
|
+
position: absolute;
|
|
521
|
+
right: 0px;
|
|
522
|
+
top: 0px;
|
|
523
|
+
bottom: 0;
|
|
524
|
+
width: 100%;
|
|
525
|
+
display: inline-block;
|
|
526
|
+
pointer-events: none;
|
|
527
|
+
}
|
|
528
528
|
}
|
|
529
529
|
|
|
530
530
|
/** Adds mask above sticky header to prevent table content from bleeding through on scroll */
|
|
@@ -555,11 +555,16 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
555
555
|
z-index: ${aboveNativeStickyHeaderZIndex};
|
|
556
556
|
}
|
|
557
557
|
|
|
558
|
-
${
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
558
|
+
${expValEquals('platform_editor_table_sticky_header_patch_12', 'isEnabled', true) ? `
|
|
559
|
+
.${ClassName.TABLE_CONTAINER}:has(> .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW})
|
|
560
|
+
> .${ClassName.DRAG_ROW_CONTROLS_WRAPPER} {
|
|
561
|
+
margin-top: 0;
|
|
562
|
+
}
|
|
563
|
+
` : `
|
|
564
|
+
.${ClassName.DRAG_ROW_CONTROLS_WRAPPER}:has(~ .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW}) {
|
|
565
|
+
margin-top: 0;
|
|
566
|
+
}
|
|
567
|
+
`}
|
|
563
568
|
|
|
564
569
|
.${ClassName.TABLE_CONTAINER}[data-table-header-is-stuck='true']:has(.${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW})
|
|
565
570
|
> .${ClassName.DRAG_ROW_CONTROLS_WRAPPER}
|
|
@@ -569,7 +574,7 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
569
574
|
}
|
|
570
575
|
|
|
571
576
|
/** Corrects position of numbered column when sticky header top mask is present */
|
|
572
|
-
.${ClassName.TABLE_CONTAINER}:has(.${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW}
|
|
577
|
+
.${ClassName.TABLE_CONTAINER}:has(.${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr.${ClassName.NATIVE_STICKY})
|
|
573
578
|
> .${ClassName.DRAG_ROW_CONTROLS_WRAPPER}
|
|
574
579
|
> div
|
|
575
580
|
> .${ClassName.NUMBERED_COLUMN} {
|
|
@@ -1231,7 +1236,6 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
1231
1236
|
top: ${tableMarginTop}px;
|
|
1232
1237
|
}
|
|
1233
1238
|
|
|
1234
|
-
${fg('platform_editor_table_sticky_header_patch_1') ? `
|
|
1235
1239
|
.${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} > .${ClassName.DRAG_COLUMN_CONTROLS_WRAPPER} {
|
|
1236
1240
|
/* +2px is to overlap the table border on the sides */
|
|
1237
1241
|
width: calc(anchor-size(width) + 2px);
|
|
@@ -1245,19 +1249,7 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
1245
1249
|
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `
|
|
1246
1250
|
/* Leave a 1px gap so the sticky header row's top border stays visible. */
|
|
1247
1251
|
translate: 0 -1px;` : ``}
|
|
1248
|
-
}
|
|
1249
|
-
/* +2px is to overlap the table border on the sides */
|
|
1250
|
-
width: calc(anchor-size(width) + 2px);
|
|
1251
|
-
height: ${tableMarginTop}px;
|
|
1252
|
-
background: ${expValEquals('platform_editor_nest_table_in_panel', 'isEnabled', true) ? `var(${akEditorTableContainerBg}, ${"var(--ds-surface, #FFFFFF)"})` : "var(--ds-surface, #FFFFFF)"};
|
|
1253
|
-
position: fixed;
|
|
1254
|
-
position-area: top center;
|
|
1255
|
-
position-visibility: anchors-visible;
|
|
1256
|
-
z-index: ${nativeStickyHeaderZIndex + 1};
|
|
1257
|
-
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `
|
|
1258
|
-
/* Leave a 1px gap so the sticky header row's top border stays visible. */
|
|
1259
|
-
margin-bottom: 1px;` : ``}
|
|
1260
|
-
}`}
|
|
1252
|
+
}
|
|
1261
1253
|
|
|
1262
1254
|
/** Mask for content to the left of the column controls */
|
|
1263
1255
|
|
|
@@ -1286,63 +1278,53 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
1286
1278
|
// Anchor the mask with an explicit `top` so `vertical-align` (data-valign) on the cell
|
|
1287
1279
|
// doesn't shift it; the calc reproduces the previous top-aligned offset.
|
|
1288
1280
|
`top: calc(${"var(--ds-space-100, 8px)"} - ${stickyRowOffsetTop + 1}px);` : `margin-top: -${stickyRowOffsetTop + 1}px;` : `margin-top: -${stickyRowOffsetTop}px;`}
|
|
1289
|
-
outline: ${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? 'none' :
|
|
1290
|
-
border-left: ${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `1px solid ${tableBorderColor}` :
|
|
1281
|
+
outline: ${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? 'none' : `0.5px solid ${tableBorderColor}`};
|
|
1282
|
+
border-left: ${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `1px solid ${tableBorderColor}` : 'none'};
|
|
1291
1283
|
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `border-bottom: 1px solid ${tableBorderColor};` : ``}
|
|
1292
1284
|
background: ${"var(--ds-background-accent-gray-subtlest, #F0F1F2)"};
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) || getBrowserInfo().gecko && expValEquals('platform_editor_table_sticky_header_patch_9', 'isEnabled', true) ? `border-top: 1px solid ${tableBorderColor};` : `border-top: none;`}
|
|
1285
|
+
border-top: 1px solid ${tableBorderColor};
|
|
1296
1286
|
}
|
|
1297
1287
|
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
}
|
|
1288
|
+
.ak-editor-selected-node .${ClassName.TABLE_CONTAINER}[data-number-column="true"]:not(.${ClassName.TABLE_SELECTED}) .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th:first-of-type {
|
|
1289
|
+
/* Recolour the number-column corner mask to match the selected cells. Keep this identical
|
|
1290
|
+
to the .selectedCell ::before rule below — never set margin-top (the base negative
|
|
1291
|
+
margin aligns the mask) or radius (rounded generically by data-reaches-* rules). */
|
|
1292
|
+
&::before {
|
|
1293
|
+
outline: none;
|
|
1294
|
+
border-left-color: ${tableBorderSelectedColor};
|
|
1295
|
+
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `border-bottom-color: ${tableBorderSelectedColor};` : ''}
|
|
1296
|
+
border-top-color: ${tableBorderSelectedColor};
|
|
1297
|
+
background: ${tableHeaderCellSelectedColor};
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1310
1300
|
|
|
1311
1301
|
.${ClassName.TABLE_CONTAINER}[data-number-column="true"].${ClassName.TABLE_SELECTED} .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th.${ClassName.SELECTED_CELL}:not(.${ClassName.HOVERED_CELL_IN_DANGER}):first-of-type::before, .${ClassName.TABLE_CONTAINER}[data-number-column="true"] .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th.${ClassName.SELECTED_CELL}:not(.${ClassName.HOVERED_CELL_IN_DANGER}, .${ClassName.COLUMN_SELECTED}):first-of-type::before {
|
|
1312
1302
|
outline: none;
|
|
1313
1303
|
border-left-color: ${tableBorderSelectedColor};
|
|
1314
1304
|
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) ? `border-bottom-color: ${tableBorderSelectedColor}` : ''};
|
|
1315
|
-
|
|
1305
|
+
border-top-color: ${tableBorderSelectedColor};
|
|
1316
1306
|
background: ${tableHeaderCellSelectedColor};
|
|
1317
1307
|
}
|
|
1318
1308
|
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1309
|
+
.${ClassName.TABLE_CONTAINER}[data-number-column="true"] .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th.${ClassName.HOVERED_CELL_IN_DANGER}:first-of-type::before, .${ClassName.TABLE_CONTAINER}[data-number-column="true"] .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th.${ClassName.HOVERED_CELL_IN_DANGER}:not(.${ClassName.COLUMN_SELECTED}):first-of-type::before {
|
|
1310
|
+
outline: none;
|
|
1311
|
+
${expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('platform_editor_table_q4_patch_2') ?
|
|
1322
1312
|
// Recolour the corner edges to the delete border and composite the translucent danger
|
|
1323
1313
|
// fill over the mask's gray so it matches the adjacent cells instead of reading as transparent.
|
|
1324
1314
|
`border-left: 1px solid ${tableBorderDeleteColor};
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1315
|
+
border-top: 1px solid ${tableBorderDeleteColor};
|
|
1316
|
+
border-bottom: 1px solid ${tableBorderDeleteColor};
|
|
1317
|
+
background-color: ${"var(--ds-background-accent-gray-subtlest, #F0F1F2)"};
|
|
1318
|
+
background-image: linear-gradient(${tableCellDeleteColor}, ${tableCellDeleteColor});` : `border-left: unset;
|
|
1319
|
+
border-top: unset;
|
|
1320
|
+
background: ${tableCellDeleteColor};`}
|
|
1321
|
+
}
|
|
1322
|
+
.${ClassName.TABLE_CONTAINER}[data-number-column="true"].${ClassName.TABLE_SELECTED}.${ClassName.HOVERED_DELETE_BUTTON} .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th:first-of-type::before, .${ClassName.TABLE_CONTAINER}[data-number-column="true"].${ClassName.HOVERED_DELETE_BUTTON} .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th.${ClassName.SELECTED_CELL}:not(.${ClassName.COLUMN_SELECTED}):first-of-type::before {
|
|
1333
1323
|
outline: none;
|
|
1334
1324
|
border-left-color: ${tableBorderDeleteColor};
|
|
1335
1325
|
border-top-color: ${tableBorderDeleteColor};
|
|
1336
1326
|
background: ${tableCellDeleteColor};
|
|
1337
|
-
|
|
1338
|
-
outline: none;
|
|
1339
|
-
background: ${tableCellDeleteColor};
|
|
1340
|
-
}
|
|
1341
|
-
.${ClassName.TABLE_CONTAINER}[data-number-column="true"].${ClassName.HOVERED_DELETE_BUTTON} .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} tr:first-of-type th.${ClassName.SELECTED_CELL}:not(.${ClassName.COLUMN_SELECTED}):first-of-type::before {
|
|
1342
|
-
outline: none;
|
|
1343
|
-
border-left-color: ${tableBorderDeleteColor};
|
|
1344
|
-
background: ${tableCellDeleteColor};
|
|
1345
|
-
}`}
|
|
1327
|
+
}
|
|
1346
1328
|
|
|
1347
1329
|
.${ClassName.TABLE_CONTAINER}[data-number-column="true"] .${ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW} .${ClassName.NATIVE_STICKY_ACTIVE} th:first-of-type::before {
|
|
1348
1330
|
box-shadow: 0 6px 4px -4px ${"var(--ds-shadow-overflow-perimeter, #1E1F211f)"};
|
|
@@ -1360,7 +1342,7 @@ expValEquals('platform_editor_table_q4_loveability', 'isEnabled', true) && fg('p
|
|
|
1360
1342
|
z-index: ${akEditorTableCellOnStickyHeaderZIndex - 4};
|
|
1361
1343
|
}
|
|
1362
1344
|
|
|
1363
|
-
${expValEquals('platform_editor_table_sticky_header_improvements', 'cohort', 'test_with_overflow')
|
|
1345
|
+
${expValEquals('platform_editor_table_sticky_header_improvements', 'cohort', 'test_with_overflow') ? `.${ClassName.TABLE_CONTAINER}.${ClassName.WITH_CONTROLS}:has(tr.sticky) .${ClassName.NUMBERED_COLUMN} .${ClassName.NUMBERED_COLUMN_BUTTON}:first-of-type {
|
|
1364
1346
|
box-shadow: 0 -5px 0 1px ${tableBorderColor};
|
|
1365
1347
|
}` : ``}
|
|
1366
1348
|
|
|
@@ -142,7 +142,7 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
-
if (_this.isHeaderRow && _this.isStickyHeaderEnabled
|
|
145
|
+
if (_this.isHeaderRow && _this.isStickyHeaderEnabled) {
|
|
146
146
|
var _api$table;
|
|
147
147
|
_this.onEditorContentAreaHeightChange = api === null || api === void 0 || (_api$table = api.table) === null || _api$table === void 0 ? void 0 : _api$table.sharedState.onChange(function (_ref) {
|
|
148
148
|
var nextSharedState = _ref.nextSharedState;
|
|
@@ -271,47 +271,45 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
271
271
|
if (this.editorScrollableElement) {
|
|
272
272
|
this.initObservers();
|
|
273
273
|
this.topPosEditorElement = getTop(this.editorScrollableElement);
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Re-check intersection state now that scrolling has occurred
|
|
286
|
-
var entries = (_this3$overflowObserv = _this3.overflowObserverEntries) !== null && _this3$overflowObserv !== void 0 ? _this3$overflowObserv : _this3.overflowObserver.takeRecords();
|
|
287
|
-
_this3.overflowObserverEntries = undefined;
|
|
274
|
+
this.scrollListener = function () {
|
|
275
|
+
var _this3$overflowObserv;
|
|
276
|
+
if (_this3.hasScrolledSinceLoad) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
_this3.hasScrolledSinceLoad = true;
|
|
280
|
+
if (!_this3.overflowObserver) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
288
283
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
284
|
+
// Re-check intersection state now that scrolling has occurred
|
|
285
|
+
var entries = (_this3$overflowObserv = _this3.overflowObserverEntries) !== null && _this3$overflowObserv !== void 0 ? _this3$overflowObserv : _this3.overflowObserver.takeRecords();
|
|
286
|
+
_this3.overflowObserverEntries = undefined;
|
|
287
|
+
|
|
288
|
+
/** NOTE: This logic is duplicated in the overflowObserver callback
|
|
289
|
+
* to avoid conflicting with a follow up refactor where this will
|
|
290
|
+
* be cleaned up.
|
|
291
|
+
*/
|
|
292
|
+
entries.forEach(function (entry) {
|
|
293
|
+
var tableWrapper = _this3.dom.closest(".".concat(ClassName.TABLE_NODE_WRAPPER));
|
|
294
|
+
if (tableWrapper && tableWrapper instanceof HTMLElement && !areAllRectsZero(entry)) {
|
|
295
|
+
if (entry.isIntersecting) {
|
|
296
|
+
tableWrapper.classList.add(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW);
|
|
297
|
+
_this3.dom.classList.add(ClassName.NATIVE_STICKY);
|
|
298
|
+
_this3.isNativeSticky = true;
|
|
299
|
+
} else {
|
|
300
|
+
tableWrapper.classList.remove(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW);
|
|
301
|
+
_this3.dom.classList.remove(ClassName.NATIVE_STICKY);
|
|
302
|
+
_this3.isNativeSticky = false;
|
|
306
303
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
310
|
-
this.editorScrollableElement.addEventListener('scroll', this.scrollListener, {
|
|
311
|
-
passive: true,
|
|
312
|
-
once: true
|
|
304
|
+
_this3.refreshLegacyStickyState();
|
|
305
|
+
}
|
|
313
306
|
});
|
|
314
|
-
}
|
|
307
|
+
};
|
|
308
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
309
|
+
this.editorScrollableElement.addEventListener('scroll', this.scrollListener, {
|
|
310
|
+
passive: true,
|
|
311
|
+
once: true
|
|
312
|
+
});
|
|
315
313
|
}
|
|
316
314
|
this.eventDispatcher.on('widthPlugin', this.updateStickyHeaderWidth.bind(this));
|
|
317
315
|
|
|
@@ -382,48 +380,36 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
382
380
|
};
|
|
383
381
|
this.overflowObserver = new IntersectionObserver(function (entries, observer) {
|
|
384
382
|
entries.forEach(function (entry) {
|
|
383
|
+
var _this4$api;
|
|
385
384
|
if (!(observer.root instanceof HTMLElement)) {
|
|
386
385
|
return;
|
|
387
386
|
}
|
|
388
387
|
// Only apply classes if page has scrolled since load
|
|
389
|
-
if (!_this4.hasScrolledSinceLoad
|
|
388
|
+
if (!_this4.hasScrolledSinceLoad) {
|
|
390
389
|
_this4.overflowObserverEntries = entries;
|
|
391
390
|
return;
|
|
392
391
|
}
|
|
393
392
|
if (entry.isIntersecting) {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
if (!_this4.disableNativeSticky) {
|
|
397
|
-
_this4.dom.classList.add(ClassName.NATIVE_STICKY);
|
|
398
|
-
}
|
|
399
|
-
} else {
|
|
400
|
-
observer.root.classList.add(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW);
|
|
393
|
+
observer.root.classList.add(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW);
|
|
394
|
+
if (!_this4.disableNativeSticky) {
|
|
401
395
|
_this4.dom.classList.add(ClassName.NATIVE_STICKY);
|
|
402
396
|
}
|
|
403
397
|
_this4.isNativeSticky = true;
|
|
404
398
|
} else {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
_this4.dom.classList.remove(ClassName.NATIVE_STICKY);
|
|
408
|
-
} else {
|
|
409
|
-
observer.root.classList.remove(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW);
|
|
410
|
-
_this4.dom.classList.remove(ClassName.NATIVE_STICKY);
|
|
411
|
-
}
|
|
399
|
+
observer.root.classList.remove(ClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW);
|
|
400
|
+
_this4.dom.classList.remove(ClassName.NATIVE_STICKY);
|
|
412
401
|
_this4.isNativeSticky = false;
|
|
413
402
|
}
|
|
414
403
|
_this4.refreshLegacyStickyState();
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
}
|
|
404
|
+
(_this4$api = _this4.api) === null || _this4$api === void 0 || (_this4$api = _this4$api.analytics) === null || _this4$api === void 0 || (_this4$api = _this4$api.actions) === null || _this4$api === void 0 || _this4$api.fireAnalyticsEvent({
|
|
405
|
+
action: TABLE_ACTION.STICKY_HEADER_METHOD_TOGGLED,
|
|
406
|
+
actionSubject: ACTION_SUBJECT.TABLE,
|
|
407
|
+
actionSubjectId: ACTION_SUBJECT_ID.TABLE_STICKY_HEADER,
|
|
408
|
+
eventType: EVENT_TYPE.UI,
|
|
409
|
+
attributes: {
|
|
410
|
+
nativeStickyHeaderEnabled: entry.isIntersecting
|
|
411
|
+
}
|
|
412
|
+
});
|
|
427
413
|
});
|
|
428
414
|
}, options);
|
|
429
415
|
}
|
|
@@ -449,7 +435,7 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
449
435
|
entries.forEach(function (entry) {
|
|
450
436
|
var _entry$rootBounds;
|
|
451
437
|
var tableContainer = _this5.dom.closest(".".concat(ClassName.TABLE_CONTAINER));
|
|
452
|
-
if (entry.intersectionRect.top === ((_entry$rootBounds = entry.rootBounds) === null || _entry$rootBounds === void 0 ? void 0 : _entry$rootBounds.top) &&
|
|
438
|
+
if (entry.intersectionRect.top === ((_entry$rootBounds = entry.rootBounds) === null || _entry$rootBounds === void 0 ? void 0 : _entry$rootBounds.top) && !_this5.disableNativeSticky) {
|
|
453
439
|
_this5.dom.classList.add(ClassName.NATIVE_STICKY_ACTIVE);
|
|
454
440
|
if (tableContainer && tableContainer instanceof HTMLElement) {
|
|
455
441
|
tableContainer.dataset.tableHeaderIsStuck = 'true';
|
|
@@ -457,11 +443,7 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
457
443
|
} else {
|
|
458
444
|
_this5.dom.classList.remove(ClassName.NATIVE_STICKY_ACTIVE);
|
|
459
445
|
if (tableContainer && tableContainer instanceof HTMLElement) {
|
|
460
|
-
|
|
461
|
-
delete tableContainer.dataset.tableHeaderIsStuck;
|
|
462
|
-
} else {
|
|
463
|
-
tableContainer.dataset.tableHeaderIsStuck = 'false';
|
|
464
|
-
}
|
|
446
|
+
delete tableContainer.dataset.tableHeaderIsStuck;
|
|
465
447
|
}
|
|
466
448
|
}
|
|
467
449
|
});
|
|
@@ -489,17 +471,12 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
489
471
|
this.dom.style.setProperty('anchor-name', (_this$dom$getAttribut = this.dom.getAttribute('data-node-anchor')) !== null && _this$dom$getAttribut !== void 0 ? _this$dom$getAttribut : '');
|
|
490
472
|
}
|
|
491
473
|
this.initOverflowObserver();
|
|
492
|
-
|
|
493
|
-
this.initNodeVisibilityObserver();
|
|
494
|
-
}
|
|
474
|
+
this.initNodeVisibilityObserver();
|
|
495
475
|
var closestTable = this.dom.closest('table');
|
|
496
476
|
if (closestTable) {
|
|
497
|
-
var _this$overflowObserve;
|
|
477
|
+
var _this$overflowObserve, _this$nodeVisibilityO2;
|
|
498
478
|
(_this$overflowObserve = this.overflowObserver) === null || _this$overflowObserve === void 0 || _this$overflowObserve.observe(closestTable);
|
|
499
|
-
|
|
500
|
-
var _this$nodeVisibilityO2;
|
|
501
|
-
(_this$nodeVisibilityO2 = this.nodeVisibilityObserver) === null || _this$nodeVisibilityO2 === void 0 || _this$nodeVisibilityO2.observe(closestTable);
|
|
502
|
-
}
|
|
479
|
+
(_this$nodeVisibilityO2 = this.nodeVisibilityObserver) === null || _this$nodeVisibilityO2 === void 0 || _this$nodeVisibilityO2.observe(closestTable);
|
|
503
480
|
}
|
|
504
481
|
this.initStickyStateObserver();
|
|
505
482
|
(_this$stickyStateObse = this.stickyStateObserver) === null || _this$stickyStateObse === void 0 || _this$stickyStateObse.observe(this.dom);
|
|
@@ -634,6 +611,7 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
634
611
|
if (entry.target.className === ((_this8$editorScrollab = _this8.editorScrollableElement) === null || _this8$editorScrollab === void 0 ? void 0 : _this8$editorScrollab.className)) {
|
|
635
612
|
_this8.updateStickyHeaderWidth();
|
|
636
613
|
} else {
|
|
614
|
+
var _this8$editorContentA;
|
|
637
615
|
var newHeight = entry.contentRect ? entry.contentRect.height :
|
|
638
616
|
// Ignored via go/ees005
|
|
639
617
|
// eslint-disable-next-line @atlaskit/editor/no-as-casting
|
|
@@ -646,11 +624,8 @@ var TableRowNativeStickyWithFallback = /*#__PURE__*/function (_TableNodeView) {
|
|
|
646
624
|
_this8.sentinels.bottom.style.bottom = "".concat(tableScrollbarOffset + stickyRowOffsetTop + newHeight, "px");
|
|
647
625
|
updateTableMargin(table);
|
|
648
626
|
}
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
var viewportHeight = (_this8$editorContentA = _this8.editorContentAreaHeight) !== null && _this8$editorContentA !== void 0 ? _this8$editorContentA : INITIAL_STATIC_VIEWPORT_HEIGHT;
|
|
652
|
-
_this8.toggleDisableNativeSticky(newHeight, viewportHeight);
|
|
653
|
-
}
|
|
627
|
+
var viewportHeight = (_this8$editorContentA = _this8.editorContentAreaHeight) !== null && _this8$editorContentA !== void 0 ? _this8$editorContentA : INITIAL_STATIC_VIEWPORT_HEIGHT;
|
|
628
|
+
_this8.toggleDisableNativeSticky(newHeight, viewportHeight);
|
|
654
629
|
}
|
|
655
630
|
});
|
|
656
631
|
});
|