@atlaskit/editor-plugin-table 7.11.2 → 7.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +1731 -699
  2. package/dist/cjs/commands/column-resize.js +5 -1
  3. package/dist/cjs/nodeviews/TableComponent.js +31 -6
  4. package/dist/cjs/nodeviews/table.js +31 -14
  5. package/dist/cjs/plugin.js +8 -9
  6. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +6 -1
  7. package/dist/cjs/pm-plugins/table-resizing/event-handlers.js +16 -10
  8. package/dist/cjs/pm-plugins/table-resizing/plugin.js +2 -2
  9. package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +7 -2
  10. package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +16 -11
  11. package/dist/cjs/pm-plugins/table-width.js +1 -5
  12. package/dist/cjs/pm-plugins/view-mode-sort/utils.js +37 -20
  13. package/dist/cjs/toolbar.js +12 -21
  14. package/dist/cjs/transforms/column-width.js +3 -0
  15. package/dist/cjs/ui/FloatingDragMenu/index.js +2 -5
  16. package/dist/cjs/ui/common-styles.js +8 -16
  17. package/dist/cjs/ui/ui-styles.js +18 -36
  18. package/dist/es2019/commands/column-resize.js +6 -2
  19. package/dist/es2019/nodeviews/TableComponent.js +33 -7
  20. package/dist/es2019/nodeviews/table.js +32 -15
  21. package/dist/es2019/plugin.js +8 -9
  22. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +6 -1
  23. package/dist/es2019/pm-plugins/table-resizing/event-handlers.js +13 -7
  24. package/dist/es2019/pm-plugins/table-resizing/plugin.js +2 -2
  25. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +7 -2
  26. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +16 -11
  27. package/dist/es2019/pm-plugins/table-width.js +1 -5
  28. package/dist/es2019/pm-plugins/view-mode-sort/utils.js +36 -21
  29. package/dist/es2019/toolbar.js +7 -16
  30. package/dist/es2019/transforms/column-width.js +4 -1
  31. package/dist/es2019/ui/FloatingDragMenu/index.js +2 -5
  32. package/dist/es2019/ui/common-styles.js +18 -30
  33. package/dist/es2019/ui/ui-styles.js +88 -174
  34. package/dist/esm/commands/column-resize.js +5 -1
  35. package/dist/esm/nodeviews/TableComponent.js +31 -6
  36. package/dist/esm/nodeviews/table.js +31 -14
  37. package/dist/esm/plugin.js +8 -9
  38. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +6 -1
  39. package/dist/esm/pm-plugins/table-resizing/event-handlers.js +16 -10
  40. package/dist/esm/pm-plugins/table-resizing/plugin.js +2 -2
  41. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +7 -2
  42. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +16 -11
  43. package/dist/esm/pm-plugins/table-width.js +1 -5
  44. package/dist/esm/pm-plugins/view-mode-sort/utils.js +37 -20
  45. package/dist/esm/toolbar.js +12 -21
  46. package/dist/esm/transforms/column-width.js +3 -0
  47. package/dist/esm/ui/FloatingDragMenu/index.js +2 -5
  48. package/dist/esm/ui/common-styles.js +8 -16
  49. package/dist/esm/ui/ui-styles.js +18 -36
  50. package/dist/types/pm-plugins/table-resizing/event-handlers.d.ts +1 -1
  51. package/dist/types/pm-plugins/table-resizing/plugin.d.ts +1 -1
  52. package/dist/types/pm-plugins/table-resizing/utils/scale-table.d.ts +3 -3
  53. package/dist/types/pm-plugins/table-width.d.ts +1 -1
  54. package/dist/types/pm-plugins/view-mode-sort/utils.d.ts +3 -1
  55. package/dist/types/ui/FloatingDragMenu/index.d.ts +2 -1
  56. package/dist/types-ts4.5/pm-plugins/table-resizing/event-handlers.d.ts +1 -1
  57. package/dist/types-ts4.5/pm-plugins/table-resizing/plugin.d.ts +1 -1
  58. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/scale-table.d.ts +3 -3
  59. package/dist/types-ts4.5/pm-plugins/table-width.d.ts +1 -1
  60. package/dist/types-ts4.5/pm-plugins/view-mode-sort/utils.d.ts +3 -1
  61. package/dist/types-ts4.5/ui/FloatingDragMenu/index.d.ts +2 -1
  62. package/package.json +3 -6
  63. package/src/commands/column-resize.ts +11 -2
  64. package/src/nodeviews/TableComponent.tsx +79 -9
  65. package/src/nodeviews/table.tsx +49 -26
  66. package/src/plugin.tsx +10 -4
  67. package/src/pm-plugins/drag-and-drop/plugin.ts +14 -1
  68. package/src/pm-plugins/table-resizing/event-handlers.ts +26 -4
  69. package/src/pm-plugins/table-resizing/plugin.ts +2 -0
  70. package/src/pm-plugins/table-resizing/utils/resize-state.ts +13 -2
  71. package/src/pm-plugins/table-resizing/utils/scale-table.ts +24 -10
  72. package/src/pm-plugins/table-width.ts +1 -3
  73. package/src/pm-plugins/view-mode-sort/utils.ts +49 -23
  74. package/src/toolbar.tsx +7 -11
  75. package/src/transforms/column-width.ts +8 -1
  76. package/src/ui/FloatingDragMenu/index.tsx +2 -3
  77. package/src/ui/common-styles.ts +18 -30
  78. package/src/ui/ui-styles.ts +92 -183
@@ -107,7 +107,10 @@ export const rescaleColumns = (isTableScalingEnabled = false) => (table, view) =
107
107
  isResized
108
108
  };
109
109
  const tableDepth = view.state.doc.resolve(table.pos).depth;
110
- const shouldScale = isTableScalingEnabled && tableDepth === 0;
110
+ let shouldScale = isTableScalingEnabled && tableDepth === 0;
111
+ if (shouldScale && getBooleanFF('platform.editor.table.preserve-widths-with-lock-button')) {
112
+ shouldScale = newTable.attrs.displayMode !== 'fixed';
113
+ }
111
114
  if (shouldScale) {
112
115
  previousTableInfo = {
113
116
  width: getTableElementWidth(table.node),
@@ -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 { getPluginState } from '../../pm-plugins/plugin-factory';
6
5
  import { dragMenuDropdownWidth, tablePopupMenuFitHeight } from '../consts';
7
6
  import DragMenu from './DragMenu';
8
7
  const FloatingDragMenu = ({
@@ -18,7 +17,8 @@ const FloatingDragMenu = ({
18
17
  getEditorContainerWidth,
19
18
  editorAnalyticsAPI,
20
19
  stickyHeaders,
21
- pluginConfig
20
+ pluginConfig,
21
+ isTableScalingEnabled
22
22
  }) => {
23
23
  if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
24
24
  return null;
@@ -29,9 +29,6 @@ const FloatingDragMenu = ({
29
29
  if (!targetHandleRef || !(editorView.state.selection instanceof CellSelection)) {
30
30
  return null;
31
31
  }
32
- const {
33
- isTableScalingEnabled = false
34
- } = getPluginState(editorView.state);
35
32
  return /*#__PURE__*/React.createElement(Popup, {
36
33
  alignX: direction === 'row' ? 'right' : undefined,
37
34
  alignY: direction === 'row' ? 'start' : undefined,
@@ -158,44 +158,32 @@ const viewModeSortStyles = () => {
158
158
  }
159
159
  };
160
160
  const tableBorderStyles = () => {
161
- if (getBooleanFF('platform.editor.table.column-controls-styles-updated')) {
162
- return `border-color: ${tableBorderDeleteColor}`;
163
- } else {
164
- return `border: 1px solid ${tableBorderDeleteColor}`;
165
- }
161
+ return `border-color: ${tableBorderDeleteColor}`;
166
162
  };
167
163
 
168
164
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview
169
165
  const tableStickyHeaderColumnControlsDecorationsStyle = () => {
170
- if (getBooleanFF('platform.editor.table.column-controls-styles-updated')) {
171
- return css`
172
- .${ClassName.TABLE_STICKY} .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
173
- z-index: 0;
174
- left: -1px;
175
- }
166
+ return css`
167
+ .${ClassName.TABLE_STICKY} .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
168
+ z-index: 0;
169
+ left: -1px;
170
+ }
176
171
 
177
- .${ClassName.TABLE_STICKY}
178
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
179
- border-left: 1px solid ${tableBorderColor};
180
- }
172
+ .${ClassName.TABLE_STICKY}
173
+ .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
174
+ border-left: 1px solid ${tableBorderColor};
175
+ }
181
176
 
182
- .${ClassName.TABLE_STICKY}
183
- tr:first-of-type
184
- th.${ClassName.TABLE_HEADER_CELL} {
185
- &.${ClassName.COLUMN_SELECTED}, &.${ClassName.HOVERED_COLUMN} {
186
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
187
- left: 0;
188
- }
177
+ .${ClassName.TABLE_STICKY}
178
+ tr:first-of-type
179
+ th.${ClassName.TABLE_HEADER_CELL} {
180
+ &.${ClassName.COLUMN_SELECTED}, &.${ClassName.HOVERED_COLUMN} {
181
+ .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
182
+ left: 0;
189
183
  }
190
184
  }
191
- `;
192
- } else {
193
- return css`
194
- .${ClassName.TABLE_STICKY} .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
195
- z-index: 0;
196
- }
197
- `;
198
- }
185
+ }
186
+ `;
199
187
  };
200
188
  const tableStickyHeaderFirefoxFixStyle = () => {
201
189
  /*
@@ -2,7 +2,6 @@
2
2
  import { css } from '@emotion/react';
3
3
  import { tableCellBorderWidth, tableMarginTop, tableMarginTopWithControl } from '@atlaskit/editor-common/styles';
4
4
  import { akEditorShadowZIndex, akEditorTableBorder, akEditorTableNumberColumnWidth, akEditorUnitZIndex } from '@atlaskit/editor-shared-styles';
5
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
6
5
  import { B300, N0, N300, N40A, N60A, Y200, Y50 } from '@atlaskit/theme/colors';
7
6
  import { TableCssClassName as ClassName } from '../types';
8
7
  import { columnControlsDecorationHeight, columnControlsSelectedZIndex, columnControlsZIndex, dragTableInsertColumnButtonSize, insertLineWidth, lineMarkerSize, resizeHandlerAreaWidth, resizeHandlerZIndex, resizeLineWidth, tableBorderColor, tableBorderDeleteColor, tableBorderSelectedColor, tableCellDeleteColor, tableCellHoverDeleteIconBackground, tableCellHoverDeleteIconColor, tableCellSelectedDeleteIconBackground, tableCellSelectedDeleteIconColor, tableDeleteButtonSize, tableHeaderCellBackgroundColor, tableInsertColumnButtonSize, tableOverflowShadowWidthWide, tableToolbarDeleteColor, tableToolbarSelectedColor, tableToolbarSize } from './consts';
@@ -317,28 +316,15 @@ const overflowShadowWidhoutDnD = isDragAndDropEnabled => {
317
316
  }
318
317
  };
319
318
  const columnHeaderButton = cssString => {
320
- if (getBooleanFF('platform.editor.table.column-controls-styles-updated')) {
321
- return css({
322
- background: tableHeaderCellBackgroundColor,
323
- display: 'block',
324
- boxSizing: 'border-box',
325
- padding: 0,
326
- ':focus': {
327
- outline: 'none'
328
- }
329
- }, cssString);
330
- } else {
331
- return css({
332
- background: tableHeaderCellBackgroundColor,
333
- border: `1px solid ${tableBorderColor}`,
334
- display: 'block',
335
- boxSizing: 'border-box',
336
- padding: 0,
337
- ':focus': {
338
- outline: 'none'
339
- }
340
- }, cssString);
341
- }
319
+ return css({
320
+ background: tableHeaderCellBackgroundColor,
321
+ display: 'block',
322
+ boxSizing: 'border-box',
323
+ padding: 0,
324
+ ':focus': {
325
+ outline: 'none'
326
+ }
327
+ }, cssString);
342
328
  };
343
329
  const columnHeaderButtonSelected = () => css({
344
330
  color: `var(--ds-text-inverse, ${N0})`,
@@ -410,33 +396,32 @@ export const rowControlsWrapperDotStyle = () => {
410
396
  `;
411
397
  };
412
398
  export const columnControlsDecoration = () => {
413
- if (getBooleanFF('platform.editor.table.column-controls-styles-updated')) {
414
- return css`
415
- .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
416
- display: none;
417
- cursor: pointer;
399
+ return css`
400
+ .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
401
+ display: none;
402
+ cursor: pointer;
403
+ position: absolute;
404
+ width: 100%;
405
+ left: 0;
406
+ top: -${columnControlsDecorationHeight + tableCellBorderWidth}px;
407
+ height: ${columnControlsDecorationHeight}px;
408
+ // floating dot for adding column button
409
+ &::before {
410
+ content: ' ';
411
+ background-color: ${tableBorderColor};
418
412
  position: absolute;
419
- width: 100%;
420
- left: 0;
421
- top: -${columnControlsDecorationHeight + tableCellBorderWidth}px;
422
- height: ${columnControlsDecorationHeight}px;
423
- // floating dot for adding column button
424
- &::before {
425
- content: ' ';
426
- background-color: ${tableBorderColor};
427
- position: absolute;
428
- height: ${lineMarkerSize}px;
429
- width: ${lineMarkerSize}px;
430
- border-radius: 50%;
431
- pointer-events: none;
432
- top: 2px;
433
- right: -1px;
434
- }
413
+ height: ${lineMarkerSize}px;
414
+ width: ${lineMarkerSize}px;
415
+ border-radius: 50%;
416
+ pointer-events: none;
417
+ top: 2px;
418
+ right: ${"var(--ds-space-negative-025, -2px)"};
419
+ }
435
420
 
436
- &::after {
437
- content: ' ';
421
+ &::after {
422
+ content: ' ';
438
423
 
439
- ${columnHeaderButton(`
424
+ ${columnHeaderButton(`
440
425
  border-right: ${tableCellBorderWidth}px solid ${tableBorderColor};
441
426
  border-top: ${tableCellBorderWidth}px solid ${tableBorderColor};
442
427
  border-bottom: ${tableCellBorderWidth}px solid ${tableBorderColor};
@@ -448,156 +433,85 @@ export const columnControlsDecoration = () => {
448
433
  left: 0px;
449
434
  z-index: ${columnControlsZIndex};
450
435
  `)}
451
- }
452
436
  }
437
+ }
453
438
 
454
- // floating dot for adding column button - overriding style on last column to avoid scroll
455
- ${getFloatingDotOverrides()}
456
-
457
- .${ClassName.WITH_CONTROLS} .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
458
- display: block;
459
- }
439
+ // floating dot for adding column button - overriding style on last column to avoid scroll
440
+ ${getFloatingDotOverrides()}
460
441
 
461
- table tr:first-of-type th.${ClassName.TABLE_HEADER_CELL} {
462
- &.${ClassName.COLUMN_SELECTED}, &.${ClassName.HOVERED_TABLE} {
463
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
464
- ${columnHeaderButtonSelected()};
465
- }
466
-
467
- &.${ClassName.HOVERED_CELL_IN_DANGER}
468
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
469
- background-color: ${tableToolbarDeleteColor};
470
- border-color: ${tableBorderDeleteColor};
471
- z-index: ${akEditorUnitZIndex * 100};
472
- }
473
- }
474
- }
442
+ .${ClassName.WITH_CONTROLS} .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
443
+ display: block;
444
+ }
475
445
 
476
- table tr:first-of-type th.${ClassName.TABLE_HEADER_CELL} {
477
- &.${ClassName.COLUMN_SELECTED}, &.${ClassName.HOVERED_COLUMN} {
478
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
479
- ${columnHeaderButtonSelected()};
480
- border-left: ${tableCellBorderWidth}px solid
481
- ${tableBorderSelectedColor};
482
- left: -${tableCellBorderWidth}px;
483
- }
446
+ table
447
+ tr:first-of-type
448
+ td.${ClassName.TABLE_CELL},table
449
+ tr:first-of-type
450
+ th.${ClassName.TABLE_HEADER_CELL} {
451
+ &.${ClassName.COLUMN_SELECTED}, &.${ClassName.HOVERED_TABLE} {
452
+ .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
453
+ ${columnHeaderButtonSelected()};
484
454
  }
485
- }
486
455
 
487
- table tr:first-of-type th.${ClassName.TABLE_HEADER_CELL} {
488
- &.${ClassName.HOVERED_COLUMN} {
456
+ &.${ClassName.HOVERED_CELL_IN_DANGER}
489
457
  .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
490
- ${columnHeaderButtonSelected()};
491
- }
492
-
493
- &.${ClassName.HOVERED_CELL_IN_DANGER}
494
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
495
- background-color: ${tableToolbarDeleteColor};
496
- border-color: ${tableBorderDeleteColor};
497
- border-left: ${tableCellBorderWidth}px solid
498
- ${tableBorderDeleteColor};
499
- left: -${tableCellBorderWidth}px;
500
- z-index: ${akEditorUnitZIndex * 100};
501
- }
458
+ background-color: ${tableToolbarDeleteColor};
459
+ border-color: ${tableBorderDeleteColor};
460
+ z-index: ${akEditorUnitZIndex * 100};
502
461
  }
503
462
  }
463
+ }
504
464
 
505
- .${ClassName.TABLE_SELECTED}
506
- table
507
- tr:first-of-type
508
- td.${ClassName.TABLE_CELL},
509
- .${ClassName.TABLE_SELECTED}
510
- table
511
- tr:first-of-type
512
- th.${ClassName.TABLE_HEADER_CELL} {
465
+ table
466
+ tr:first-of-type
467
+ td.${ClassName.TABLE_CELL},table
468
+ tr:first-of-type
469
+ th.${ClassName.TABLE_HEADER_CELL} {
470
+ &.${ClassName.COLUMN_SELECTED}, &.${ClassName.HOVERED_COLUMN} {
513
471
  .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
514
472
  ${columnHeaderButtonSelected()};
473
+ border-left: ${tableCellBorderWidth}px solid
474
+ ${tableBorderSelectedColor};
475
+ left: -${tableCellBorderWidth}px;
515
476
  }
516
477
  }
517
- `;
518
- } else {
519
- return css`
520
- .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
521
- display: none;
522
- cursor: pointer;
523
- position: absolute;
524
- width: calc(100% + ${tableCellBorderWidth * 2}px);
525
- left: -1px;
526
- top: -${columnControlsDecorationHeight + tableCellBorderWidth}px;
527
- height: ${columnControlsDecorationHeight}px;
528
- // floating dot for adding column button
529
- &::before {
530
- content: ' ';
531
- background-color: ${tableBorderColor};
532
- position: absolute;
533
- height: ${lineMarkerSize}px;
534
- width: ${lineMarkerSize}px;
535
- border-radius: 50%;
536
- pointer-events: none;
537
- top: 2px;
538
- right: -1px;
539
- }
540
-
541
- &::after {
542
- content: ' ';
478
+ }
543
479
 
544
- ${columnHeaderButton(`
545
- border-right: ${tableCellBorderWidth}px solid ${tableBorderColor};
546
- border-bottom: none;
547
- height: ${tableToolbarSize}px;
548
- width: 100%;
549
- position: absolute;
550
- top: ${columnControlsDecorationHeight - tableToolbarSize}px;
551
- left: 0px;
552
- z-index: ${columnControlsZIndex};
553
- `)}
480
+ table
481
+ tr:first-of-type
482
+ td.${ClassName.TABLE_CELL},
483
+ table
484
+ tr:first-of-type
485
+ th.${ClassName.TABLE_HEADER_CELL} {
486
+ &.${ClassName.HOVERED_COLUMN} {
487
+ .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
488
+ ${columnHeaderButtonSelected()};
554
489
  }
555
- }
556
-
557
- // floating dot for adding column button - overriding style on last column to avoid scroll
558
- ${getFloatingDotOverrides()}
559
490
 
560
- .${ClassName.WITH_CONTROLS} .${ClassName.COLUMN_CONTROLS_DECORATIONS} {
561
- display: block;
562
- }
563
-
564
- table
565
- tr:first-of-type
566
- td.${ClassName.TABLE_CELL},
567
- table
568
- tr:first-of-type
569
- th.${ClassName.TABLE_HEADER_CELL} {
570
- &.${ClassName.COLUMN_SELECTED},
571
- &.${ClassName.HOVERED_COLUMN},
572
- &.${ClassName.HOVERED_TABLE} {
491
+ &.${ClassName.HOVERED_CELL_IN_DANGER}
573
492
  .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
574
- ${columnHeaderButtonSelected()};
575
- }
576
-
577
- &.${ClassName.HOVERED_CELL_IN_DANGER}
578
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
579
- background-color: ${tableToolbarDeleteColor};
580
- border: 1px solid ${tableBorderDeleteColor};
581
- border-bottom: none;
582
- z-index: ${akEditorUnitZIndex * 100};
583
- }
493
+ background-color: ${tableToolbarDeleteColor};
494
+ border-color: ${tableBorderDeleteColor};
495
+ border-left: ${tableCellBorderWidth}px solid ${tableBorderDeleteColor};
496
+ left: -${tableCellBorderWidth}px;
497
+ z-index: ${akEditorUnitZIndex * 100};
584
498
  }
585
499
  }
500
+ }
586
501
 
502
+ .${ClassName.TABLE_SELECTED}
503
+ table
504
+ tr:first-of-type
505
+ td.${ClassName.TABLE_CELL},
587
506
  .${ClassName.TABLE_SELECTED}
588
- table
589
- tr:first-of-type
590
- td.${ClassName.TABLE_CELL},
591
- .${ClassName.TABLE_SELECTED}
592
- table
593
- tr:first-of-type
594
- th.${ClassName.TABLE_HEADER_CELL} {
595
- .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
596
- ${columnHeaderButtonSelected()};
597
- }
507
+ table
508
+ tr:first-of-type
509
+ th.${ClassName.TABLE_HEADER_CELL} {
510
+ .${ClassName.COLUMN_CONTROLS_DECORATIONS}::after {
511
+ ${columnHeaderButtonSelected()};
598
512
  }
599
- `;
600
- }
513
+ }
514
+ `;
601
515
  };
602
516
  export const hoveredDeleteButton = () => css`
603
517
  .${ClassName.TABLE_CONTAINER}.${ClassName.HOVERED_DELETE_BUTTON} {
@@ -204,6 +204,10 @@ export var changeColumnWidthByStep = function changeColumnWidthByStep(_ref4) {
204
204
  layout: originalTable.attrs.layout,
205
205
  getEditorContainerWidth: getEditorContainerWidth
206
206
  });
207
+ var isTableScalingEnabledOnCurrentTable = isTableScalingEnabled;
208
+ if (isTableScalingEnabled && getBooleanFF('platform.editor.table.preserve-widths-with-lock-button')) {
209
+ isTableScalingEnabledOnCurrentTable = originalTable.attrs.displayMode !== 'fixed';
210
+ }
207
211
  var initialResizeState = getResizeState({
208
212
  minWidth: tableCellMinWidth,
209
213
  maxSize: maxSize,
@@ -211,7 +215,7 @@ export var changeColumnWidthByStep = function changeColumnWidthByStep(_ref4) {
211
215
  tableRef: dom,
212
216
  start: tableStartPosition,
213
217
  domAtPos: domAtPos,
214
- isTableScalingEnabled: isTableScalingEnabled
218
+ isTableScalingEnabled: isTableScalingEnabledOnCurrentTable
215
219
  });
216
220
  updateControls()(state);
217
221
  var selectionRect = getSelectionRect(state.selection);
@@ -348,7 +348,10 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
348
348
  this === null || this === void 0 || (_this$table = this.table) === null || _this$table === void 0 || _this$table.addEventListener('mouseenter', this.handleMouseEnter);
349
349
  }
350
350
  }
351
- if (isTableScalingEnabled) {
351
+ if (isTableScalingEnabled && !getBooleanFF('platform.editor.table.preserve-widths-with-lock-button')) {
352
+ this.handleColgroupUpdates(true);
353
+ }
354
+ if (isTableScalingEnabled && getBooleanFF('platform.editor.table.preserve-widths-with-lock-button') && getNode().attrs.displayMode !== 'fixed') {
352
355
  this.handleColgroupUpdates(true);
353
356
  }
354
357
  if (allowColumnResizing && this.wrapper && !isIE11) {
@@ -472,8 +475,10 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
472
475
  var wasTableResized = hasTableBeenResized(this.node);
473
476
  var isTableResized = hasTableBeenResized(tableNode);
474
477
  var isColumnsDistributed = wasTableResized && !isTableResized;
475
- var shouldScale = isWidthChanged || isColumnsDistributed || isTableResizedFullWidth || isTableWidthChanged;
476
- if (force || !isResizing && shouldScale) {
478
+ var isTableDisplayModeChanged = this.node.attrs.displayMode !== tableNode.attrs.displayMode;
479
+ var shouldUpdateColgroup = isWidthChanged || isColumnsDistributed || isTableResizedFullWidth || isTableWidthChanged || isTableDisplayModeChanged;
480
+ if (force || !isResizing && shouldUpdateColgroup) {
481
+ var _this$props$options, _this$props$options2;
477
482
  var resizeState = getResizeState({
478
483
  minWidth: COLUMN_MIN_WIDTH,
479
484
  maxSize: tableRenderWidth,
@@ -483,10 +488,17 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
483
488
  domAtPos: view.domAtPos,
484
489
  isTableScalingEnabled: true
485
490
  });
491
+ var shouldScaleOnColgroupUpdate = false;
492
+ if ((_this$props$options = this.props.options) !== null && _this$props$options !== void 0 && _this$props$options.isTableScalingEnabled && !getBooleanFF('platform.editor.table.preserve-widths-with-lock-button')) {
493
+ shouldScaleOnColgroupUpdate = true;
494
+ }
495
+ if ((_this$props$options2 = this.props.options) !== null && _this$props$options2 !== void 0 && _this$props$options2.isTableScalingEnabled && getBooleanFF('platform.editor.table.preserve-widths-with-lock-button') && tableNode.attrs.displayMode !== 'fixed') {
496
+ shouldScaleOnColgroupUpdate = true;
497
+ }
486
498
 
487
499
  // Request animation frame required for Firefox
488
500
  requestAnimationFrame(function () {
489
- updateColgroup(resizeState, _this2.table, tableNode, true);
501
+ updateColgroup(resizeState, _this2.table, tableNode, shouldScaleOnColgroupUpdate);
490
502
  });
491
503
  }
492
504
  }
@@ -514,7 +526,20 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
514
526
  var pluginState = getPluginState(view.state);
515
527
  isInDanger = pluginState.isInDanger;
516
528
  }
517
- if (isTableScalingEnabled) {
529
+ var shouldScale = false;
530
+ var shouldHandleColgroupUpdates = false;
531
+ if (isTableScalingEnabled && !getBooleanFF('platform.editor.table.preserve-widths-with-lock-button')) {
532
+ shouldScale = true;
533
+ shouldHandleColgroupUpdates = true;
534
+ }
535
+ if (isTableScalingEnabled && getBooleanFF('platform.editor.table.preserve-widths-with-lock-button') && getNode().attrs.displayMode !== 'fixed') {
536
+ shouldScale = true;
537
+ shouldHandleColgroupUpdates = true;
538
+ }
539
+ if (isTableScalingEnabled && getBooleanFF('platform.editor.table.preserve-widths-with-lock-button') && getNode().attrs.displayMode !== this.node.attrs.displayMode) {
540
+ shouldHandleColgroupUpdates = true;
541
+ }
542
+ if (shouldHandleColgroupUpdates) {
518
543
  this.handleColgroupUpdates();
519
544
  }
520
545
  if (isInDanger && !table) {
@@ -561,7 +586,7 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
561
586
  if (shouldRecreateResizeCols) {
562
587
  var start = getPos() || 0;
563
588
  var depth = _view.state.doc.resolve(start).depth;
564
- var shouldScale = depth === 0 && isTableScalingEnabled;
589
+ shouldScale = depth === 0 && shouldScale;
565
590
  insertColgroupFromNode(this.table, currentTable, shouldScale);
566
591
  }
567
592
  updateControls()(_view.state);
@@ -83,13 +83,24 @@ var TableView = /*#__PURE__*/function (_ReactNodeView) {
83
83
  value: function getContentDOM() {
84
84
  var rendered = DOMSerializer.renderSpec(document, toDOM(this.node, this.reactComponentProps));
85
85
  if (rendered.dom) {
86
- var _this$options;
87
86
  this.table = rendered.dom;
88
- // Preserve Table Width cannot have inline width set on the table
89
- if (!((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.isTableScalingEnabled)) {
90
- var tableInlineWidth = getInlineWidth(this.node, this.reactComponentProps.options, this.reactComponentProps.view.state, this.reactComponentProps.getPos());
91
- if (tableInlineWidth) {
92
- handleInlineTableWidth(this.table, tableInlineWidth);
87
+ if (!getBooleanFF('platform.editor.table.preserve-widths-with-lock-button')) {
88
+ var _this$options;
89
+ if (!((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.isTableScalingEnabled)) {
90
+ // Preserve Table Width cannot have inline width set on the table
91
+ var tableInlineWidth = getInlineWidth(this.node, this.reactComponentProps.options, this.reactComponentProps.view.state, this.reactComponentProps.getPos());
92
+ if (tableInlineWidth) {
93
+ handleInlineTableWidth(this.table, tableInlineWidth);
94
+ }
95
+ }
96
+ } else {
97
+ var _this$options2;
98
+ if (!((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.isTableScalingEnabled) || this.node.attrs.displayMode === 'fixed') {
99
+ // Preserve Table Width cannot have inline width set on the table
100
+ var _tableInlineWidth = getInlineWidth(this.node, this.reactComponentProps.options, this.reactComponentProps.view.state, this.reactComponentProps.getPos());
101
+ if (_tableInlineWidth) {
102
+ handleInlineTableWidth(this.table, _tableInlineWidth);
103
+ }
93
104
  }
94
105
  }
95
106
  }
@@ -99,7 +110,7 @@ var TableView = /*#__PURE__*/function (_ReactNodeView) {
99
110
  key: "setDomAttrs",
100
111
  value: function setDomAttrs(node) {
101
112
  var _this2 = this,
102
- _tableWidthPluginKey$;
113
+ _this$options3;
103
114
  if (!this.table) {
104
115
  return;
105
116
  }
@@ -108,11 +119,15 @@ var TableView = /*#__PURE__*/function (_ReactNodeView) {
108
119
  _this2.table.setAttribute(attr, attrs[attr]);
109
120
  });
110
121
 
111
- // handle inline style when table been resized
112
- var tableInlineWidth = getInlineWidth(node, this.reactComponentProps.options, this.view.state, this.getPos());
113
- var isTableResizing = (_tableWidthPluginKey$ = tableWidthPluginKey.getState(this.view.state)) === null || _tableWidthPluginKey$ === void 0 ? void 0 : _tableWidthPluginKey$.resizing;
114
- if (!isTableResizing && tableInlineWidth) {
115
- handleInlineTableWidth(this.table, tableInlineWidth);
122
+ // Preserve Table Width cannot have inline width set on the table
123
+ if (!((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.isTableScalingEnabled)) {
124
+ var _tableWidthPluginKey$;
125
+ // handle inline style when table been resized
126
+ var tableInlineWidth = getInlineWidth(node, this.reactComponentProps.options, this.view.state, this.getPos());
127
+ var isTableResizing = (_tableWidthPluginKey$ = tableWidthPluginKey.getState(this.view.state)) === null || _tableWidthPluginKey$ === void 0 ? void 0 : _tableWidthPluginKey$.resizing;
128
+ if (!isTableResizing && tableInlineWidth) {
129
+ handleInlineTableWidth(this.table, tableInlineWidth);
130
+ }
116
131
  }
117
132
  }
118
133
  }, {
@@ -165,6 +180,7 @@ var TableView = /*#__PURE__*/function (_ReactNodeView) {
165
180
  },
166
181
  editorView: props.view,
167
182
  render: function render(pluginStates) {
183
+ var _props$options;
168
184
  var tableResizingPluginState = pluginStates.tableResizingPluginState,
169
185
  tableWidthPluginState = pluginStates.tableWidthPluginState,
170
186
  pluginState = pluginStates.pluginState,
@@ -196,7 +212,8 @@ var TableView = /*#__PURE__*/function (_ReactNodeView) {
196
212
  isHeaderRowEnabled: pluginState.isHeaderRowEnabled,
197
213
  isHeaderColumnEnabled: pluginState.isHeaderColumnEnabled,
198
214
  isDragAndDropEnabled: pluginState.isDragAndDropEnabled,
199
- isTableScalingEnabled: pluginState.isTableScalingEnabled,
215
+ isTableScalingEnabled: (_props$options = props.options) === null || _props$options === void 0 ? void 0 : _props$options.isTableScalingEnabled // this.options?.isTableScalingEnabled sams as TableOptions.isTableScalingEnabled same as pluginState.isTableScalingEnabled
216
+ ,
200
217
  tableActive: tableActive,
201
218
  ordering: pluginState.ordering,
202
219
  isResizing: isResizing,
@@ -296,7 +313,7 @@ export var createTableView = function createTableView(node, view, getPos, portal
296
313
  wasFullWidthModeEnabled: wasFullWidthModeEnabled,
297
314
  isTableResizingEnabled: isTableResizingEnabled,
298
315
  isDragAndDropEnabled: isDragAndDropEnabled,
299
- isTableScalingEnabled: isTableScalingEnabled
316
+ isTableScalingEnabled: isTableScalingEnabled // same as options.isTableScalingEnabled
300
317
  },
301
318
  getEditorContainerWidth: getEditorContainerWidth,
302
319
  getEditorFeatureFlags: getEditorFeatureFlags,
@@ -151,12 +151,13 @@ var tablesPlugin = function tablesPlugin(_ref) {
151
151
  var _ref5 = options || {},
152
152
  fullWidthEnabled = _ref5.fullWidthEnabled,
153
153
  tableOptions = _ref5.tableOptions,
154
- getEditorFeatureFlags = _ref5.getEditorFeatureFlags;
154
+ getEditorFeatureFlags = _ref5.getEditorFeatureFlags,
155
+ isTableScalingEnabled = _ref5.isTableScalingEnabled;
155
156
  var _pluginConfig = pluginConfig(tableOptions),
156
157
  allowColumnResizing = _pluginConfig.allowColumnResizing;
157
158
  return allowColumnResizing ? createFlexiResizingPlugin(dispatch, {
158
159
  lastColumnResizable: !fullWidthEnabled
159
- }, defaultGetEditorContainerWidth, getEditorFeatureFlags || defaultGetEditorFeatureFlags, editorAnalyticsAPI) : undefined;
160
+ }, defaultGetEditorContainerWidth, getEditorFeatureFlags || defaultGetEditorFeatureFlags, editorAnalyticsAPI, isTableScalingEnabled || false) : undefined;
160
161
  }
161
162
  }, {
162
163
  name: 'tableEditing',
@@ -234,10 +235,10 @@ var tablesPlugin = function tablesPlugin(_ref) {
234
235
  }, {
235
236
  name: 'tableWidth',
236
237
  plugin: function plugin(_ref13) {
237
- var _options$fullWidthEna;
238
+ var _options$fullWidthEna, _options$isTableScali;
238
239
  var dispatchAnalyticsEvent = _ref13.dispatchAnalyticsEvent,
239
240
  dispatch = _ref13.dispatch;
240
- return options !== null && options !== void 0 && options.tableResizingEnabled ? createTableWidthPlugin(dispatch, dispatchAnalyticsEvent, (_options$fullWidthEna = options === null || options === void 0 ? void 0 : options.fullWidthEnabled) !== null && _options$fullWidthEna !== void 0 ? _options$fullWidthEna : false) : undefined;
241
+ return options !== null && options !== void 0 && options.tableResizingEnabled ? createTableWidthPlugin(dispatch, dispatchAnalyticsEvent, (_options$fullWidthEna = options === null || options === void 0 ? void 0 : options.fullWidthEnabled) !== null && _options$fullWidthEna !== void 0 ? _options$fullWidthEna : false, (_options$isTableScali = options === null || options === void 0 ? void 0 : options.isTableScalingEnabled) !== null && _options$isTableScali !== void 0 ? _options$isTableScali : false) : undefined;
241
242
  }
242
243
  },
243
244
  // TODO: should be deprecated and eventually replaced with 'tableAnalyticsPlugin'
@@ -377,7 +378,8 @@ var tablesPlugin = function tablesPlugin(_ref) {
377
378
  getEditorContainerWidth: defaultGetEditorContainerWidth,
378
379
  editorAnalyticsAPI: editorAnalyticsAPI,
379
380
  stickyHeaders: stickyHeader,
380
- pluginConfig: pluginConfig
381
+ pluginConfig: pluginConfig,
382
+ isTableScalingEnabled: options === null || options === void 0 ? void 0 : options.isTableScalingEnabled
381
383
  }), allowControls && !isDragAndDropEnabled && !isResizing && /*#__PURE__*/React.createElement(FloatingDeleteButton, {
382
384
  editorView: editorView,
383
385
  selection: editorView.state.selection,
@@ -409,10 +411,7 @@ var tablesPlugin = function tablesPlugin(_ref) {
409
411
  var _api$table;
410
412
  // see comment on tablesPlugin.getSharedState on usage
411
413
  var tableState = api === null || api === void 0 || (_api$table = api.table) === null || _api$table === void 0 ? void 0 : _api$table.sharedState.currentState();
412
- var _getPluginState = getPluginState(state),
413
- _getPluginState$isTab = _getPluginState.isTableScalingEnabled,
414
- isTableScalingEnabled = _getPluginState$isTab === void 0 ? false : _getPluginState$isTab;
415
- var tr = insert(createTableWithWidth(isTableScalingEnabled, tableState === null || tableState === void 0 ? void 0 : tableState.isFullWidthModeEnabled)(state.schema));
414
+ var tr = insert(createTableWithWidth(options === null || options === void 0 ? void 0 : options.isTableScalingEnabled, tableState === null || tableState === void 0 ? void 0 : tableState.isFullWidthModeEnabled)(state.schema));
416
415
  editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent({
417
416
  action: ACTION.INSERTED,
418
417
  actionSubject: ACTION_SUBJECT.DOCUMENT,