@odoo/o-spreadsheet 16.3.0-alpha.3 → 16.3.0-alpha.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.
- package/dist/o-spreadsheet.cjs.js +1607 -1027
- package/dist/o-spreadsheet.d.ts +481 -176
- package/dist/o-spreadsheet.esm.js +1607 -1028
- package/dist/o-spreadsheet.iife.js +1607 -1027
- package/dist/o-spreadsheet.iife.min.js +351 -364
- package/package.json +1 -1
|
@@ -117,6 +117,7 @@ const FILTERS_COLOR = "#188038";
|
|
|
117
117
|
const BACKGROUND_HEADER_FILTER_COLOR = "#E6F4EA";
|
|
118
118
|
const BACKGROUND_HEADER_SELECTED_FILTER_COLOR = "#CEEAD6";
|
|
119
119
|
const SEPARATOR_COLOR = "#E0E2E4";
|
|
120
|
+
const ICONS_COLOR = "#4A4F59";
|
|
120
121
|
// Color picker defaults as upper case HEX to match `toHex`helper
|
|
121
122
|
const COLOR_PICKER_DEFAULTS = [
|
|
122
123
|
"#000000",
|
|
@@ -223,8 +224,10 @@ const FILTER_ICON_MARGIN = 2;
|
|
|
223
224
|
const FILTER_ICON_EDGE_LENGTH = 17;
|
|
224
225
|
// Menus
|
|
225
226
|
const MENU_WIDTH = 250;
|
|
226
|
-
const MENU_VERTICAL_PADDING =
|
|
227
|
-
const MENU_ITEM_HEIGHT =
|
|
227
|
+
const MENU_VERTICAL_PADDING = 6;
|
|
228
|
+
const MENU_ITEM_HEIGHT = 26;
|
|
229
|
+
const MENU_ITEM_PADDING_HORIZONTAL = 13;
|
|
230
|
+
const MENU_ITEM_PADDING_VERTICAL = 4;
|
|
228
231
|
const MENU_SEPARATOR_BORDER_WIDTH = 1;
|
|
229
232
|
const MENU_SEPARATOR_PADDING = 5;
|
|
230
233
|
// Fonts
|
|
@@ -232,6 +235,7 @@ const DEFAULT_FONT_WEIGHT = "400";
|
|
|
232
235
|
const DEFAULT_FONT_SIZE = 10;
|
|
233
236
|
const HEADER_FONT_SIZE = 11;
|
|
234
237
|
const DEFAULT_FONT = "'Roboto', arial";
|
|
238
|
+
const DEFAULT_VERTICAL_ALIGN = "middle";
|
|
235
239
|
// Borders
|
|
236
240
|
const DEFAULT_BORDER_DESC = ["thin", "#000"];
|
|
237
241
|
const DEFAULT_FILTER_BORDER_DESC = ["thin", FILTERS_COLOR];
|
|
@@ -274,15 +278,22 @@ var ComponentsImportance;
|
|
|
274
278
|
ComponentsImportance[ComponentsImportance["Highlight"] = 5] = "Highlight";
|
|
275
279
|
ComponentsImportance[ComponentsImportance["Figure"] = 10] = "Figure";
|
|
276
280
|
ComponentsImportance[ComponentsImportance["ScrollBar"] = 15] = "ScrollBar";
|
|
277
|
-
ComponentsImportance[ComponentsImportance["
|
|
281
|
+
ComponentsImportance[ComponentsImportance["GridPopover"] = 19] = "GridPopover";
|
|
278
282
|
ComponentsImportance[ComponentsImportance["GridComposer"] = 20] = "GridComposer";
|
|
279
|
-
ComponentsImportance[ComponentsImportance["
|
|
283
|
+
ComponentsImportance[ComponentsImportance["Dropdown"] = 21] = "Dropdown";
|
|
280
284
|
ComponentsImportance[ComponentsImportance["IconPicker"] = 25] = "IconPicker";
|
|
281
|
-
ComponentsImportance[ComponentsImportance["
|
|
285
|
+
ComponentsImportance[ComponentsImportance["TopBarComposer"] = 30] = "TopBarComposer";
|
|
286
|
+
ComponentsImportance[ComponentsImportance["Popover"] = 35] = "Popover";
|
|
282
287
|
ComponentsImportance[ComponentsImportance["FigureAnchor"] = 1000] = "FigureAnchor";
|
|
283
288
|
ComponentsImportance[ComponentsImportance["FigureSnapLine"] = 1001] = "FigureSnapLine";
|
|
284
289
|
})(ComponentsImportance || (ComponentsImportance = {}));
|
|
285
|
-
|
|
290
|
+
let DEFAULT_SHEETVIEW_SIZE = 0;
|
|
291
|
+
function getDefaultSheetViewSize() {
|
|
292
|
+
return DEFAULT_SHEETVIEW_SIZE;
|
|
293
|
+
}
|
|
294
|
+
function setDefaultSheetViewSize(size) {
|
|
295
|
+
DEFAULT_SHEETVIEW_SIZE = size;
|
|
296
|
+
}
|
|
286
297
|
const MAXIMAL_FREEZABLE_RATIO = 0.85;
|
|
287
298
|
const NEWLINE = "\n";
|
|
288
299
|
const FONT_SIZES = [6, 7, 8, 9, 10, 11, 12, 14, 18, 24, 36];
|
|
@@ -5185,6 +5196,11 @@ class Popover extends owl.Component {
|
|
|
5185
5196
|
this.currentPosition = newPosition;
|
|
5186
5197
|
});
|
|
5187
5198
|
}
|
|
5199
|
+
get popoverStyle() {
|
|
5200
|
+
return cssPropertiesToCss({
|
|
5201
|
+
"z-index": `${this.props.zIndex}`,
|
|
5202
|
+
});
|
|
5203
|
+
}
|
|
5188
5204
|
}
|
|
5189
5205
|
Popover.template = "o-spreadsheet-Popover";
|
|
5190
5206
|
Popover.defaultProps = {
|
|
@@ -5193,6 +5209,7 @@ Popover.defaultProps = {
|
|
|
5193
5209
|
onMouseWheel: () => { },
|
|
5194
5210
|
onPopoverMoved: () => { },
|
|
5195
5211
|
onPopoverHidden: () => { },
|
|
5212
|
+
zIndex: ComponentsImportance.Popover,
|
|
5196
5213
|
};
|
|
5197
5214
|
Popover.props = {
|
|
5198
5215
|
anchorRect: Object,
|
|
@@ -5204,6 +5221,7 @@ Popover.props = {
|
|
|
5204
5221
|
onMouseWheel: { type: Function, optional: true },
|
|
5205
5222
|
onPopoverHidden: { type: Function, optional: true },
|
|
5206
5223
|
onPopoverMoved: { type: Function, optional: true },
|
|
5224
|
+
zIndex: { type: Number, optional: true },
|
|
5207
5225
|
slots: Object,
|
|
5208
5226
|
};
|
|
5209
5227
|
class PopoverPositionContext {
|
|
@@ -5347,7 +5365,7 @@ css /* scss */ `
|
|
|
5347
5365
|
align-items: center;
|
|
5348
5366
|
box-sizing: border-box;
|
|
5349
5367
|
height: ${MENU_ITEM_HEIGHT}px;
|
|
5350
|
-
padding:
|
|
5368
|
+
padding: ${MENU_ITEM_PADDING_VERTICAL}px ${MENU_ITEM_PADDING_HORIZONTAL}px;
|
|
5351
5369
|
cursor: pointer;
|
|
5352
5370
|
user-select: none;
|
|
5353
5371
|
|
|
@@ -5361,11 +5379,18 @@ css /* scss */ `
|
|
|
5361
5379
|
display: flex;
|
|
5362
5380
|
justify-content: space-between;
|
|
5363
5381
|
}
|
|
5382
|
+
|
|
5364
5383
|
.o-menu-item-icon {
|
|
5365
|
-
|
|
5366
|
-
margin-
|
|
5384
|
+
display: inline-block;
|
|
5385
|
+
margin-right: calc(${MENU_ITEM_PADDING_HORIZONTAL}px * 3 / 5);
|
|
5386
|
+
width: ${MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
|
|
5387
|
+
line-height: ${MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
|
|
5388
|
+
|
|
5389
|
+
.o-icon {
|
|
5390
|
+
color: ${ICONS_COLOR};
|
|
5391
|
+
}
|
|
5367
5392
|
}
|
|
5368
|
-
.o-
|
|
5393
|
+
.o-menu-item-root {
|
|
5369
5394
|
width: 10px;
|
|
5370
5395
|
}
|
|
5371
5396
|
|
|
@@ -5445,12 +5470,22 @@ class Menu extends owl.Component {
|
|
|
5445
5470
|
onPopoverMoved: () => this.closeSubMenu(),
|
|
5446
5471
|
};
|
|
5447
5472
|
}
|
|
5473
|
+
get childrenHaveIcon() {
|
|
5474
|
+
return this.props.menuItems.some((menuItem) => !menuItem.icon && !!menuItem.isActive);
|
|
5475
|
+
}
|
|
5476
|
+
getIconName(menu) {
|
|
5477
|
+
var _a;
|
|
5478
|
+
if ((_a = menu.isActive) === null || _a === void 0 ? void 0 : _a.call(menu, this.env)) {
|
|
5479
|
+
return "o-spreadsheet-Icon.CHECK";
|
|
5480
|
+
}
|
|
5481
|
+
return "";
|
|
5482
|
+
}
|
|
5448
5483
|
getColor(menu) {
|
|
5449
5484
|
return menu.textColor ? `color: ${menu.textColor}` : undefined;
|
|
5450
5485
|
}
|
|
5451
5486
|
async activateMenu(menu) {
|
|
5452
5487
|
var _a, _b, _c;
|
|
5453
|
-
const result = await ((_a = menu.
|
|
5488
|
+
const result = await ((_a = menu.execute) === null || _a === void 0 ? void 0 : _a.call(menu, this.env));
|
|
5454
5489
|
this.close();
|
|
5455
5490
|
(_c = (_b = this.props).onMenuClicked) === null || _c === void 0 ? void 0 : _c.call(_b, { detail: result });
|
|
5456
5491
|
}
|
|
@@ -5471,7 +5506,7 @@ class Menu extends owl.Component {
|
|
|
5471
5506
|
return menu.name(this.env);
|
|
5472
5507
|
}
|
|
5473
5508
|
isRoot(menu) {
|
|
5474
|
-
return !menu.
|
|
5509
|
+
return !menu.execute;
|
|
5475
5510
|
}
|
|
5476
5511
|
isEnabled(menu) {
|
|
5477
5512
|
if (menu.isEnabled(this.env)) {
|
|
@@ -5518,7 +5553,7 @@ class Menu extends owl.Component {
|
|
|
5518
5553
|
}
|
|
5519
5554
|
}
|
|
5520
5555
|
onMouseOver(menu, position, ev) {
|
|
5521
|
-
if (
|
|
5556
|
+
if (this.isEnabled(menu)) {
|
|
5522
5557
|
if (this.isRoot(menu)) {
|
|
5523
5558
|
this.openSubMenu(menu, position, ev);
|
|
5524
5559
|
}
|
|
@@ -5655,11 +5690,82 @@ LinkDisplay.props = {
|
|
|
5655
5690
|
onClosed: { type: Function, optional: true },
|
|
5656
5691
|
};
|
|
5657
5692
|
|
|
5658
|
-
|
|
5659
|
-
|
|
5693
|
+
const linkSheet = {
|
|
5694
|
+
name: _lt("Link sheet"),
|
|
5695
|
+
children: [
|
|
5696
|
+
(env) => {
|
|
5697
|
+
const sheets = env.model.getters
|
|
5698
|
+
.getSheetIds()
|
|
5699
|
+
.map((sheetId) => env.model.getters.getSheet(sheetId));
|
|
5700
|
+
return sheets.map((sheet) => ({
|
|
5701
|
+
id: sheet.id,
|
|
5702
|
+
name: sheet.name,
|
|
5703
|
+
execute: () => markdownLink(sheet.name, buildSheetLink(sheet.id)),
|
|
5704
|
+
}));
|
|
5705
|
+
},
|
|
5706
|
+
],
|
|
5707
|
+
};
|
|
5708
|
+
const deleteSheet = {
|
|
5709
|
+
name: _lt("Delete"),
|
|
5710
|
+
isVisible: (env) => {
|
|
5711
|
+
return env.model.getters.getSheetIds().length > 1;
|
|
5712
|
+
},
|
|
5713
|
+
execute: (env) => env.askConfirmation(_lt("Are you sure you want to delete this sheet ?"), () => {
|
|
5714
|
+
env.model.dispatch("DELETE_SHEET", { sheetId: env.model.getters.getActiveSheetId() });
|
|
5715
|
+
}),
|
|
5716
|
+
};
|
|
5717
|
+
const duplicateSheet = {
|
|
5718
|
+
name: _lt("Duplicate"),
|
|
5719
|
+
execute: (env) => {
|
|
5720
|
+
const sheetIdFrom = env.model.getters.getActiveSheetId();
|
|
5721
|
+
const sheetIdTo = env.model.uuidGenerator.uuidv4();
|
|
5722
|
+
env.model.dispatch("DUPLICATE_SHEET", {
|
|
5723
|
+
sheetId: sheetIdFrom,
|
|
5724
|
+
sheetIdTo,
|
|
5725
|
+
});
|
|
5726
|
+
env.model.dispatch("ACTIVATE_SHEET", { sheetIdFrom, sheetIdTo });
|
|
5727
|
+
},
|
|
5728
|
+
};
|
|
5729
|
+
const renameSheet = (args) => {
|
|
5730
|
+
return {
|
|
5731
|
+
name: _lt("Rename"),
|
|
5732
|
+
execute: args.renameSheetCallback,
|
|
5733
|
+
};
|
|
5734
|
+
};
|
|
5735
|
+
const sheetMoveRight = {
|
|
5736
|
+
name: _lt("Move right"),
|
|
5737
|
+
isVisible: (env) => {
|
|
5738
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
5739
|
+
const sheetIds = env.model.getters.getVisibleSheetIds();
|
|
5740
|
+
return sheetIds.indexOf(sheetId) !== sheetIds.length - 1;
|
|
5741
|
+
},
|
|
5742
|
+
execute: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
5743
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
5744
|
+
delta: 1,
|
|
5745
|
+
}),
|
|
5746
|
+
};
|
|
5747
|
+
const sheetMoveLeft = {
|
|
5748
|
+
name: _lt("Move left"),
|
|
5749
|
+
isVisible: (env) => {
|
|
5750
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
5751
|
+
return env.model.getters.getVisibleSheetIds()[0] !== sheetId;
|
|
5752
|
+
},
|
|
5753
|
+
execute: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
5754
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
5755
|
+
delta: -1,
|
|
5756
|
+
}),
|
|
5757
|
+
};
|
|
5758
|
+
const hideSheet = {
|
|
5759
|
+
name: _lt("Hide sheet"),
|
|
5760
|
+
isVisible: (env) => env.model.getters.getVisibleSheetIds().length !== 1,
|
|
5761
|
+
execute: (env) => env.model.dispatch("HIDE_SHEET", { sheetId: env.model.getters.getActiveSheetId() }),
|
|
5762
|
+
};
|
|
5763
|
+
|
|
5764
|
+
function createActions(menuItems) {
|
|
5765
|
+
return menuItems.map(createAction).sort((a, b) => a.sequence - b.sequence);
|
|
5660
5766
|
}
|
|
5661
5767
|
const uuidGenerator$1 = new UuidGenerator();
|
|
5662
|
-
function
|
|
5768
|
+
function createAction(item) {
|
|
5663
5769
|
const name = item.name;
|
|
5664
5770
|
const children = item.children;
|
|
5665
5771
|
return {
|
|
@@ -5667,23 +5773,25 @@ function createMenuItem(item) {
|
|
|
5667
5773
|
name: typeof name === "function" ? name : () => name,
|
|
5668
5774
|
isVisible: item.isVisible ? item.isVisible : () => true,
|
|
5669
5775
|
isEnabled: item.isEnabled ? item.isEnabled : () => true,
|
|
5670
|
-
|
|
5776
|
+
isActive: item.isActive,
|
|
5777
|
+
execute: item.execute,
|
|
5671
5778
|
children: children
|
|
5672
5779
|
? (env) => {
|
|
5673
5780
|
return children
|
|
5674
5781
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
5675
5782
|
.flat()
|
|
5676
|
-
.map(
|
|
5783
|
+
.map(createAction);
|
|
5677
5784
|
}
|
|
5678
5785
|
: () => [],
|
|
5679
5786
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
5680
5787
|
separator: item.separator || false,
|
|
5681
|
-
icon: item.icon,
|
|
5788
|
+
icon: item.icon || "",
|
|
5682
5789
|
description: item.description || "",
|
|
5683
5790
|
textColor: item.textColor,
|
|
5684
5791
|
sequence: item.sequence || 0,
|
|
5685
5792
|
};
|
|
5686
|
-
}
|
|
5793
|
+
}
|
|
5794
|
+
|
|
5687
5795
|
/**
|
|
5688
5796
|
* The class Registry is extended in order to add the function addChild
|
|
5689
5797
|
*
|
|
@@ -5730,7 +5838,7 @@ class MenuItemRegistry extends Registry {
|
|
|
5730
5838
|
return this;
|
|
5731
5839
|
}
|
|
5732
5840
|
getMenuItems() {
|
|
5733
|
-
return
|
|
5841
|
+
return createActions(this.getAll());
|
|
5734
5842
|
}
|
|
5735
5843
|
}
|
|
5736
5844
|
|
|
@@ -5738,20 +5846,9 @@ class MenuItemRegistry extends Registry {
|
|
|
5738
5846
|
// Link Menu Registry
|
|
5739
5847
|
//------------------------------------------------------------------------------
|
|
5740
5848
|
const linkMenuRegistry = new MenuItemRegistry();
|
|
5741
|
-
linkMenuRegistry
|
|
5742
|
-
|
|
5743
|
-
name: _lt("Link sheet"),
|
|
5849
|
+
linkMenuRegistry.add("sheet", {
|
|
5850
|
+
...linkSheet,
|
|
5744
5851
|
sequence: 10,
|
|
5745
|
-
})
|
|
5746
|
-
.addChild("sheet_list", ["sheet"], (env) => {
|
|
5747
|
-
const sheets = env.model.getters
|
|
5748
|
-
.getSheetIds()
|
|
5749
|
-
.map((sheetId) => env.model.getters.getSheet(sheetId));
|
|
5750
|
-
return sheets.map((sheet) => ({
|
|
5751
|
-
id: sheet.id,
|
|
5752
|
-
name: sheet.name,
|
|
5753
|
-
action: () => markdownLink(sheet.name, buildSheetLink(sheet.id)),
|
|
5754
|
-
}));
|
|
5755
5852
|
});
|
|
5756
5853
|
|
|
5757
5854
|
const MENU_OFFSET_X = 320;
|
|
@@ -6415,18 +6512,6 @@ const ChartTerms = {
|
|
|
6415
6512
|
[43 /* CommandResult.GaugeUpperInflectionPointNaN */]: _lt("The upper inflection point value must be a number"),
|
|
6416
6513
|
},
|
|
6417
6514
|
};
|
|
6418
|
-
const NumberFormatTerms = {
|
|
6419
|
-
Automatic: _lt("Automatic"),
|
|
6420
|
-
Number: _lt("Number"),
|
|
6421
|
-
Percent: _lt("Percent"),
|
|
6422
|
-
Currency: _lt("Currency"),
|
|
6423
|
-
CurrencyRounded: _lt("Currency rounded"),
|
|
6424
|
-
Date: _lt("Date"),
|
|
6425
|
-
Time: _lt("Time"),
|
|
6426
|
-
DateTime: _lt("Date time"),
|
|
6427
|
-
Duration: _lt("Duration"),
|
|
6428
|
-
CustomCurrency: _lt("Custom currency"),
|
|
6429
|
-
};
|
|
6430
6515
|
const CustomCurrencyTerms = {
|
|
6431
6516
|
Custom: _lt("Custom"),
|
|
6432
6517
|
};
|
|
@@ -7970,7 +8055,7 @@ function getChartMenu(figureId, onFigureDeleted, env) {
|
|
|
7970
8055
|
id: "edit",
|
|
7971
8056
|
name: _lt("Edit"),
|
|
7972
8057
|
sequence: 1,
|
|
7973
|
-
|
|
8058
|
+
execute: () => {
|
|
7974
8059
|
env.model.dispatch("SELECT_FIGURE", { id: figureId });
|
|
7975
8060
|
env.openSidePanel("ChartPanel");
|
|
7976
8061
|
},
|
|
@@ -7979,7 +8064,7 @@ function getChartMenu(figureId, onFigureDeleted, env) {
|
|
|
7979
8064
|
getCutMenuItem(figureId, env),
|
|
7980
8065
|
getDeleteMenuItem(figureId, onFigureDeleted, env),
|
|
7981
8066
|
];
|
|
7982
|
-
return
|
|
8067
|
+
return createActions(menuItemSpecs);
|
|
7983
8068
|
}
|
|
7984
8069
|
function getImageMenuRegistry(figureId, onFigureDeleted, env) {
|
|
7985
8070
|
const menuItemSpecs = [
|
|
@@ -7989,7 +8074,7 @@ function getImageMenuRegistry(figureId, onFigureDeleted, env) {
|
|
|
7989
8074
|
id: "reset_size",
|
|
7990
8075
|
name: _lt("Reset size"),
|
|
7991
8076
|
sequence: 4,
|
|
7992
|
-
|
|
8077
|
+
execute: () => {
|
|
7993
8078
|
const size = env.model.getters.getImageSize(figureId);
|
|
7994
8079
|
const { height, width } = getMaxFigureSize(env.model.getters, size);
|
|
7995
8080
|
env.model.dispatch("UPDATE_FIGURE", {
|
|
@@ -8002,7 +8087,7 @@ function getImageMenuRegistry(figureId, onFigureDeleted, env) {
|
|
|
8002
8087
|
},
|
|
8003
8088
|
getDeleteMenuItem(figureId, onFigureDeleted, env),
|
|
8004
8089
|
];
|
|
8005
|
-
return
|
|
8090
|
+
return createActions(menuItemSpecs);
|
|
8006
8091
|
}
|
|
8007
8092
|
function getCopyMenuItem(figureId, env) {
|
|
8008
8093
|
return {
|
|
@@ -8010,7 +8095,7 @@ function getCopyMenuItem(figureId, env) {
|
|
|
8010
8095
|
name: _lt("Copy"),
|
|
8011
8096
|
sequence: 2,
|
|
8012
8097
|
description: "Ctrl+C",
|
|
8013
|
-
|
|
8098
|
+
execute: async () => {
|
|
8014
8099
|
env.model.dispatch("SELECT_FIGURE", { id: figureId });
|
|
8015
8100
|
env.model.dispatch("COPY");
|
|
8016
8101
|
await env.clipboard.write(env.model.getters.getClipboardContent());
|
|
@@ -8023,7 +8108,7 @@ function getCutMenuItem(figureId, env) {
|
|
|
8023
8108
|
name: _lt("Cut"),
|
|
8024
8109
|
sequence: 3,
|
|
8025
8110
|
description: "Ctrl+X",
|
|
8026
|
-
|
|
8111
|
+
execute: async () => {
|
|
8027
8112
|
env.model.dispatch("SELECT_FIGURE", { id: figureId });
|
|
8028
8113
|
env.model.dispatch("CUT");
|
|
8029
8114
|
await env.clipboard.write(env.model.getters.getClipboardContent());
|
|
@@ -8035,7 +8120,7 @@ function getDeleteMenuItem(figureId, onFigureDeleted, env) {
|
|
|
8035
8120
|
id: "delete",
|
|
8036
8121
|
name: _lt("Delete"),
|
|
8037
8122
|
sequence: 10,
|
|
8038
|
-
|
|
8123
|
+
execute: () => {
|
|
8039
8124
|
env.model.dispatch("DELETE_FIGURE", {
|
|
8040
8125
|
sheetId: env.model.getters.getActiveSheetId(),
|
|
8041
8126
|
id: figureId,
|
|
@@ -8142,6 +8227,22 @@ function inverseUnhideColumnsRows(cmd) {
|
|
|
8142
8227
|
];
|
|
8143
8228
|
}
|
|
8144
8229
|
|
|
8230
|
+
const AddMergeInteractiveContent = {
|
|
8231
|
+
MergeIsDestructive: _lt("Merging these cells will only preserve the top-leftmost value. Merge anyway?"),
|
|
8232
|
+
MergeInFilter: _lt("You can't merge cells inside of an existing filter."),
|
|
8233
|
+
};
|
|
8234
|
+
function interactiveAddMerge(env, sheetId, target) {
|
|
8235
|
+
const result = env.model.dispatch("ADD_MERGE", { sheetId, target });
|
|
8236
|
+
if (result.isCancelledBecause(80 /* CommandResult.MergeInFilter */)) {
|
|
8237
|
+
env.raiseError(AddMergeInteractiveContent.MergeInFilter);
|
|
8238
|
+
}
|
|
8239
|
+
else if (result.isCancelledBecause(3 /* CommandResult.MergeIsDestructive */)) {
|
|
8240
|
+
env.askConfirmation(AddMergeInteractiveContent.MergeIsDestructive, () => {
|
|
8241
|
+
env.model.dispatch("ADD_MERGE", { sheetId, target, force: true });
|
|
8242
|
+
});
|
|
8243
|
+
}
|
|
8244
|
+
}
|
|
8245
|
+
|
|
8145
8246
|
/**
|
|
8146
8247
|
* Create a function used to create a Chart based on the definition
|
|
8147
8248
|
*/
|
|
@@ -8497,9 +8598,9 @@ const CUT_ACTION = async (env) => {
|
|
|
8497
8598
|
interactiveCut(env);
|
|
8498
8599
|
await env.clipboard.write(env.model.getters.getClipboardContent());
|
|
8499
8600
|
};
|
|
8500
|
-
const PASTE_ACTION = async (env) => paste(env);
|
|
8501
|
-
const PASTE_VALUE_ACTION = async (env) => paste(env, "onlyValue");
|
|
8502
|
-
async function paste(env, pasteOption) {
|
|
8601
|
+
const PASTE_ACTION = async (env) => paste$1(env);
|
|
8602
|
+
const PASTE_VALUE_ACTION = async (env) => paste$1(env, "onlyValue");
|
|
8603
|
+
async function paste$1(env, pasteOption) {
|
|
8503
8604
|
const spreadsheetClipboard = env.model.getters.getClipboardTextContent();
|
|
8504
8605
|
const osClipboard = await env.clipboard.readText();
|
|
8505
8606
|
switch (osClipboard.status) {
|
|
@@ -9053,365 +9154,159 @@ const IS_ONLY_ONE_RANGE = (env) => {
|
|
|
9053
9154
|
return env.model.getters.getSelectedZones().length === 1;
|
|
9054
9155
|
};
|
|
9055
9156
|
|
|
9056
|
-
|
|
9057
|
-
|
|
9058
|
-
|
|
9059
|
-
|
|
9060
|
-
|
|
9061
|
-
.
|
|
9062
|
-
|
|
9063
|
-
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
.
|
|
9157
|
+
const undo = {
|
|
9158
|
+
name: _lt("Undo"),
|
|
9159
|
+
description: "Ctrl+Z",
|
|
9160
|
+
execute: UNDO_ACTION,
|
|
9161
|
+
isEnabled: (env) => env.model.getters.canUndo(),
|
|
9162
|
+
icon: "o-spreadsheet-Icon.UNDO",
|
|
9163
|
+
};
|
|
9164
|
+
const redo = {
|
|
9165
|
+
name: _lt("Redo"),
|
|
9166
|
+
description: "Ctrl+Y",
|
|
9167
|
+
execute: REDO_ACTION,
|
|
9168
|
+
isEnabled: (env) => env.model.getters.canRedo(),
|
|
9169
|
+
icon: "o-spreadsheet-Icon.REDO",
|
|
9170
|
+
};
|
|
9171
|
+
const copy = {
|
|
9068
9172
|
name: _lt("Copy"),
|
|
9069
9173
|
description: "Ctrl+C",
|
|
9070
|
-
sequence: 20,
|
|
9071
9174
|
isReadonlyAllowed: true,
|
|
9072
|
-
|
|
9073
|
-
}
|
|
9074
|
-
|
|
9075
|
-
name: _lt("Paste"),
|
|
9076
|
-
description: "Ctrl+V",
|
|
9077
|
-
sequence: 30,
|
|
9078
|
-
action: PASTE_ACTION,
|
|
9079
|
-
})
|
|
9080
|
-
.add("paste_special", {
|
|
9081
|
-
name: _lt("Paste special"),
|
|
9082
|
-
sequence: 40,
|
|
9083
|
-
separator: true,
|
|
9084
|
-
isVisible: IS_NOT_CUT_OPERATION,
|
|
9085
|
-
})
|
|
9086
|
-
.addChild("paste_value_only", ["paste_special"], {
|
|
9087
|
-
name: _lt("Paste values only"),
|
|
9088
|
-
sequence: 10,
|
|
9089
|
-
action: PASTE_VALUE_ACTION,
|
|
9090
|
-
})
|
|
9091
|
-
.addChild("paste_format_only", ["paste_special"], {
|
|
9092
|
-
name: _lt("Paste format only"),
|
|
9093
|
-
sequence: 20,
|
|
9094
|
-
action: PASTE_FORMAT_ACTION,
|
|
9095
|
-
})
|
|
9096
|
-
.add("add_row_before", {
|
|
9097
|
-
name: CELL_INSERT_ROWS_BEFORE_NAME,
|
|
9098
|
-
sequence: 70,
|
|
9099
|
-
action: INSERT_ROWS_BEFORE_ACTION,
|
|
9100
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9101
|
-
})
|
|
9102
|
-
.add("add_column_before", {
|
|
9103
|
-
name: CELL_INSERT_COLUMNS_BEFORE_NAME,
|
|
9104
|
-
sequence: 90,
|
|
9105
|
-
action: INSERT_COLUMNS_BEFORE_ACTION,
|
|
9106
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9107
|
-
})
|
|
9108
|
-
.add("insert_cell", {
|
|
9109
|
-
name: _lt("Insert cells"),
|
|
9110
|
-
sequence: 100,
|
|
9111
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9112
|
-
separator: true,
|
|
9113
|
-
})
|
|
9114
|
-
.addChild("insert_cell_down", ["insert_cell"], {
|
|
9115
|
-
name: _lt("Shift down"),
|
|
9116
|
-
sequence: 10,
|
|
9117
|
-
action: INSERT_CELL_SHIFT_DOWN,
|
|
9118
|
-
})
|
|
9119
|
-
.addChild("insert_cell_right", ["insert_cell"], {
|
|
9120
|
-
name: _lt("Shift right"),
|
|
9121
|
-
sequence: 20,
|
|
9122
|
-
action: INSERT_CELL_SHIFT_RIGHT,
|
|
9123
|
-
})
|
|
9124
|
-
.add("delete_row", {
|
|
9125
|
-
name: REMOVE_ROWS_NAME,
|
|
9126
|
-
sequence: 110,
|
|
9127
|
-
action: REMOVE_ROWS_ACTION,
|
|
9128
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9129
|
-
})
|
|
9130
|
-
.add("delete_column", {
|
|
9131
|
-
name: REMOVE_COLUMNS_NAME,
|
|
9132
|
-
sequence: 120,
|
|
9133
|
-
action: REMOVE_COLUMNS_ACTION,
|
|
9134
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9135
|
-
})
|
|
9136
|
-
.add("delete_cell", {
|
|
9137
|
-
name: _lt("Delete cells"),
|
|
9138
|
-
sequence: 130,
|
|
9139
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9140
|
-
})
|
|
9141
|
-
.addChild("delete_cell_up", ["delete_cell"], {
|
|
9142
|
-
name: _lt("Shift up"),
|
|
9143
|
-
sequence: 10,
|
|
9144
|
-
action: DELETE_CELL_SHIFT_UP,
|
|
9145
|
-
})
|
|
9146
|
-
.addChild("delete_cell_down", ["delete_cell"], {
|
|
9147
|
-
name: _lt("Shift left"),
|
|
9148
|
-
sequence: 20,
|
|
9149
|
-
action: DELETE_CELL_SHIFT_LEFT,
|
|
9150
|
-
})
|
|
9151
|
-
.add("insert_link", {
|
|
9152
|
-
name: _lt("Insert link"),
|
|
9153
|
-
separator: true,
|
|
9154
|
-
sequence: 150,
|
|
9155
|
-
action: INSERT_LINK,
|
|
9156
|
-
});
|
|
9157
|
-
|
|
9158
|
-
const colMenuRegistry = new MenuItemRegistry();
|
|
9159
|
-
colMenuRegistry
|
|
9160
|
-
.add("cut", {
|
|
9175
|
+
execute: COPY_ACTION,
|
|
9176
|
+
};
|
|
9177
|
+
const cut = {
|
|
9161
9178
|
name: _lt("Cut"),
|
|
9162
9179
|
description: "Ctrl+X",
|
|
9163
|
-
|
|
9164
|
-
|
|
9165
|
-
|
|
9166
|
-
.add("copy", {
|
|
9167
|
-
name: _lt("Copy"),
|
|
9168
|
-
description: "Ctrl+C",
|
|
9169
|
-
sequence: 20,
|
|
9170
|
-
isReadonlyAllowed: true,
|
|
9171
|
-
action: COPY_ACTION,
|
|
9172
|
-
})
|
|
9173
|
-
.add("paste", {
|
|
9180
|
+
execute: CUT_ACTION,
|
|
9181
|
+
};
|
|
9182
|
+
const paste = {
|
|
9174
9183
|
name: _lt("Paste"),
|
|
9175
9184
|
description: "Ctrl+V",
|
|
9176
|
-
|
|
9177
|
-
|
|
9178
|
-
|
|
9179
|
-
.add("paste_special", {
|
|
9185
|
+
execute: PASTE_ACTION,
|
|
9186
|
+
};
|
|
9187
|
+
const pasteSpecial = {
|
|
9180
9188
|
name: _lt("Paste special"),
|
|
9181
|
-
sequence: 40,
|
|
9182
|
-
separator: true,
|
|
9183
9189
|
isVisible: IS_NOT_CUT_OPERATION,
|
|
9184
|
-
}
|
|
9185
|
-
|
|
9190
|
+
};
|
|
9191
|
+
const pasteSpecialValue = {
|
|
9186
9192
|
name: _lt("Paste value only"),
|
|
9187
|
-
|
|
9188
|
-
|
|
9189
|
-
|
|
9190
|
-
.addChild("paste_format_only", ["paste_special"], {
|
|
9193
|
+
execute: PASTE_VALUE_ACTION,
|
|
9194
|
+
};
|
|
9195
|
+
const pasteSpecialFormat = {
|
|
9191
9196
|
name: _lt("Paste format only"),
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
|
|
9196
|
-
|
|
9197
|
-
|
|
9197
|
+
execute: PASTE_FORMAT_ACTION,
|
|
9198
|
+
};
|
|
9199
|
+
const findAndReplace = {
|
|
9200
|
+
name: _lt("Find and replace"),
|
|
9201
|
+
description: "Ctrl+H",
|
|
9202
|
+
isReadonlyAllowed: true,
|
|
9203
|
+
execute: OPEN_FAR_SIDEPANEL_ACTION,
|
|
9204
|
+
};
|
|
9205
|
+
const deleteValues = {
|
|
9206
|
+
name: _lt("Delete values"),
|
|
9207
|
+
execute: DELETE_CONTENT_ACTION,
|
|
9208
|
+
};
|
|
9209
|
+
const deleteRows = {
|
|
9210
|
+
name: REMOVE_ROWS_NAME,
|
|
9211
|
+
execute: REMOVE_ROWS_ACTION,
|
|
9212
|
+
};
|
|
9213
|
+
const deleteRow = {
|
|
9214
|
+
...deleteRows,
|
|
9198
9215
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
9199
|
-
|
|
9200
|
-
|
|
9201
|
-
|
|
9202
|
-
|
|
9203
|
-
|
|
9204
|
-
|
|
9205
|
-
})
|
|
9206
|
-
.addChild("sort_descending", ["sort_columns"], {
|
|
9207
|
-
name: _lt("Descending (Z ⟶ A)"),
|
|
9208
|
-
sequence: 20,
|
|
9209
|
-
action: SORT_CELLS_DESCENDING,
|
|
9210
|
-
})
|
|
9211
|
-
.add("add_column_before", {
|
|
9212
|
-
name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
|
|
9213
|
-
sequence: 70,
|
|
9214
|
-
action: INSERT_COLUMNS_BEFORE_ACTION,
|
|
9215
|
-
})
|
|
9216
|
-
.add("add_column_after", {
|
|
9217
|
-
name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
|
|
9218
|
-
sequence: 80,
|
|
9219
|
-
action: INSERT_COLUMNS_AFTER_ACTION,
|
|
9220
|
-
})
|
|
9221
|
-
.add("delete_column", {
|
|
9216
|
+
};
|
|
9217
|
+
const clearRows = {
|
|
9218
|
+
name: DELETE_CONTENT_ROWS_NAME,
|
|
9219
|
+
execute: DELETE_CONTENT_ROWS_ACTION,
|
|
9220
|
+
};
|
|
9221
|
+
const deleteCols = {
|
|
9222
9222
|
name: REMOVE_COLUMNS_NAME,
|
|
9223
|
-
|
|
9224
|
-
|
|
9225
|
-
|
|
9226
|
-
|
|
9223
|
+
execute: REMOVE_COLUMNS_ACTION,
|
|
9224
|
+
};
|
|
9225
|
+
const deleteCol = {
|
|
9226
|
+
...deleteCols,
|
|
9227
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
9228
|
+
};
|
|
9229
|
+
const clearCols = {
|
|
9227
9230
|
name: DELETE_CONTENT_COLUMNS_NAME,
|
|
9228
|
-
|
|
9229
|
-
|
|
9230
|
-
|
|
9231
|
-
|
|
9232
|
-
|
|
9233
|
-
|
|
9234
|
-
|
|
9235
|
-
|
|
9236
|
-
|
|
9237
|
-
|
|
9238
|
-
|
|
9239
|
-
|
|
9240
|
-
|
|
9241
|
-
|
|
9242
|
-
|
|
9243
|
-
|
|
9244
|
-
|
|
9245
|
-
|
|
9246
|
-
|
|
9247
|
-
|
|
9248
|
-
|
|
9249
|
-
|
|
9250
|
-
|
|
9251
|
-
|
|
9252
|
-
|
|
9253
|
-
}
|
|
9254
|
-
|
|
9255
|
-
|
|
9256
|
-
|
|
9257
|
-
|
|
9258
|
-
|
|
9259
|
-
|
|
9260
|
-
|
|
9231
|
+
execute: DELETE_CONTENT_COLUMNS_ACTION,
|
|
9232
|
+
};
|
|
9233
|
+
const deleteCells = {
|
|
9234
|
+
name: _lt("Delete cells"),
|
|
9235
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
9236
|
+
};
|
|
9237
|
+
const deleteCellShiftUp = {
|
|
9238
|
+
name: _lt("Delete cell and shift up"),
|
|
9239
|
+
execute: DELETE_CELL_SHIFT_UP,
|
|
9240
|
+
};
|
|
9241
|
+
const deleteCellShiftLeft = {
|
|
9242
|
+
name: _lt("Delete cell and shift left"),
|
|
9243
|
+
execute: DELETE_CELL_SHIFT_LEFT,
|
|
9244
|
+
};
|
|
9245
|
+
const mergeCells = {
|
|
9246
|
+
name: _lt("Merge cells"),
|
|
9247
|
+
isEnabled: (env) => !cannotMerge(env),
|
|
9248
|
+
isActive: (env) => isInMerge(env),
|
|
9249
|
+
execute: (env) => toggleMerge(env),
|
|
9250
|
+
icon: "o-spreadsheet-Icon.MERGE_CELL",
|
|
9251
|
+
};
|
|
9252
|
+
function cannotMerge(env) {
|
|
9253
|
+
const zones = env.model.getters.getSelectedZones();
|
|
9254
|
+
const { top, left, right, bottom } = env.model.getters.getSelectedZone();
|
|
9255
|
+
const { sheetId } = env.model.getters.getActivePosition();
|
|
9256
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(sheetId);
|
|
9257
|
+
return (zones.length > 1 ||
|
|
9258
|
+
(top === bottom && left === right) ||
|
|
9259
|
+
(left < xSplit && xSplit <= right) ||
|
|
9260
|
+
(top < ySplit && ySplit <= bottom));
|
|
9261
|
+
}
|
|
9262
|
+
function isInMerge(env) {
|
|
9263
|
+
if (!cannotMerge(env)) {
|
|
9264
|
+
const zones = env.model.getters.getSelectedZones();
|
|
9265
|
+
const { col, row, sheetId } = env.model.getters.getActivePosition();
|
|
9266
|
+
const zone = env.model.getters.expandZone(sheetId, positionToZone({ col, row }));
|
|
9267
|
+
return isEqual(zones[0], zone);
|
|
9268
|
+
}
|
|
9269
|
+
return false;
|
|
9270
|
+
}
|
|
9271
|
+
function toggleMerge(env) {
|
|
9272
|
+
if (cannotMerge(env)) {
|
|
9273
|
+
return;
|
|
9274
|
+
}
|
|
9275
|
+
const zones = env.model.getters.getSelectedZones();
|
|
9276
|
+
const target = [zones[zones.length - 1]];
|
|
9277
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
9278
|
+
if (isInMerge(env)) {
|
|
9279
|
+
env.model.dispatch("REMOVE_MERGE", { sheetId, target });
|
|
9280
|
+
}
|
|
9281
|
+
else {
|
|
9282
|
+
interactiveAddMerge(env, sheetId, target);
|
|
9283
|
+
}
|
|
9284
|
+
}
|
|
9261
9285
|
|
|
9262
|
-
|
|
9263
|
-
|
|
9264
|
-
|
|
9265
|
-
|
|
9266
|
-
|
|
9267
|
-
|
|
9268
|
-
|
|
9269
|
-
|
|
9270
|
-
|
|
9271
|
-
|
|
9272
|
-
|
|
9273
|
-
|
|
9274
|
-
|
|
9275
|
-
|
|
9276
|
-
|
|
9277
|
-
|
|
9278
|
-
|
|
9279
|
-
|
|
9280
|
-
|
|
9281
|
-
|
|
9282
|
-
|
|
9283
|
-
|
|
9284
|
-
name: _lt("Paste special"),
|
|
9285
|
-
sequence: 40,
|
|
9286
|
-
separator: true,
|
|
9287
|
-
isVisible: IS_NOT_CUT_OPERATION,
|
|
9288
|
-
})
|
|
9289
|
-
.addChild("paste_value_only", ["paste_special"], {
|
|
9290
|
-
name: _lt("Paste value only"),
|
|
9291
|
-
sequence: 10,
|
|
9292
|
-
action: PASTE_VALUE_ACTION,
|
|
9293
|
-
})
|
|
9294
|
-
.addChild("paste_format_only", ["paste_special"], {
|
|
9295
|
-
name: _lt("Paste format only"),
|
|
9296
|
-
sequence: 20,
|
|
9297
|
-
action: PASTE_FORMAT_ACTION,
|
|
9298
|
-
})
|
|
9299
|
-
.add("add_row_before", {
|
|
9300
|
-
name: ROW_INSERT_ROWS_BEFORE_NAME,
|
|
9301
|
-
sequence: 50,
|
|
9302
|
-
action: INSERT_ROWS_BEFORE_ACTION,
|
|
9303
|
-
})
|
|
9304
|
-
.add("add_row_after", {
|
|
9305
|
-
name: ROW_INSERT_ROWS_AFTER_NAME,
|
|
9306
|
-
sequence: 60,
|
|
9307
|
-
action: INSERT_ROWS_AFTER_ACTION,
|
|
9308
|
-
})
|
|
9309
|
-
.add("delete_row", {
|
|
9310
|
-
name: REMOVE_ROWS_NAME,
|
|
9311
|
-
sequence: 70,
|
|
9312
|
-
action: REMOVE_ROWS_ACTION,
|
|
9313
|
-
})
|
|
9314
|
-
.add("clear_row", {
|
|
9315
|
-
name: DELETE_CONTENT_ROWS_NAME,
|
|
9316
|
-
sequence: 80,
|
|
9317
|
-
action: DELETE_CONTENT_ROWS_ACTION,
|
|
9318
|
-
})
|
|
9319
|
-
.add("hide_rows", {
|
|
9320
|
-
name: HIDE_ROWS_NAME,
|
|
9321
|
-
sequence: 85,
|
|
9322
|
-
action: HIDE_ROWS_ACTION,
|
|
9323
|
-
isVisible: (env) => {
|
|
9324
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9325
|
-
const hiddenRows = env.model.getters.getHiddenRowsGroups(sheetId).flat();
|
|
9326
|
-
return (env.model.getters.getNumberRows(sheetId) >
|
|
9327
|
-
hiddenRows.length + env.model.getters.getElementsFromSelection("ROW").length);
|
|
9328
|
-
},
|
|
9329
|
-
separator: true,
|
|
9330
|
-
})
|
|
9331
|
-
.add("unhide_rows", {
|
|
9332
|
-
name: _lt("Unhide rows"),
|
|
9333
|
-
sequence: 86,
|
|
9334
|
-
action: UNHIDE_ROWS_ACTION,
|
|
9335
|
-
isVisible: (env) => {
|
|
9336
|
-
const hiddenRows = env.model.getters
|
|
9337
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
9338
|
-
.flat();
|
|
9339
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
9340
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
9341
|
-
},
|
|
9342
|
-
separator: true,
|
|
9343
|
-
})
|
|
9344
|
-
.add("conditional_formatting", {
|
|
9345
|
-
name: _lt("Conditional formatting"),
|
|
9346
|
-
sequence: 90,
|
|
9347
|
-
action: OPEN_CF_SIDEPANEL_ACTION,
|
|
9286
|
+
var ACTION_EDIT = /*#__PURE__*/Object.freeze({
|
|
9287
|
+
__proto__: null,
|
|
9288
|
+
undo: undo,
|
|
9289
|
+
redo: redo,
|
|
9290
|
+
copy: copy,
|
|
9291
|
+
cut: cut,
|
|
9292
|
+
paste: paste,
|
|
9293
|
+
pasteSpecial: pasteSpecial,
|
|
9294
|
+
pasteSpecialValue: pasteSpecialValue,
|
|
9295
|
+
pasteSpecialFormat: pasteSpecialFormat,
|
|
9296
|
+
findAndReplace: findAndReplace,
|
|
9297
|
+
deleteValues: deleteValues,
|
|
9298
|
+
deleteRows: deleteRows,
|
|
9299
|
+
deleteRow: deleteRow,
|
|
9300
|
+
clearRows: clearRows,
|
|
9301
|
+
deleteCols: deleteCols,
|
|
9302
|
+
deleteCol: deleteCol,
|
|
9303
|
+
clearCols: clearCols,
|
|
9304
|
+
deleteCells: deleteCells,
|
|
9305
|
+
deleteCellShiftUp: deleteCellShiftUp,
|
|
9306
|
+
deleteCellShiftLeft: deleteCellShiftLeft,
|
|
9307
|
+
mergeCells: mergeCells
|
|
9348
9308
|
});
|
|
9349
9309
|
|
|
9350
|
-
function getSheetMenuRegistry(args) {
|
|
9351
|
-
const sheetMenuRegistry = new MenuItemRegistry();
|
|
9352
|
-
sheetMenuRegistry
|
|
9353
|
-
.add("delete", {
|
|
9354
|
-
name: _lt("Delete"),
|
|
9355
|
-
sequence: 10,
|
|
9356
|
-
isVisible: (env) => {
|
|
9357
|
-
return env.model.getters.getSheetIds().length > 1;
|
|
9358
|
-
},
|
|
9359
|
-
action: (env) => env.askConfirmation(_lt("Are you sure you want to delete this sheet ?"), () => {
|
|
9360
|
-
env.model.dispatch("DELETE_SHEET", { sheetId: env.model.getters.getActiveSheetId() });
|
|
9361
|
-
}),
|
|
9362
|
-
})
|
|
9363
|
-
.add("duplicate", {
|
|
9364
|
-
name: _lt("Duplicate"),
|
|
9365
|
-
sequence: 20,
|
|
9366
|
-
action: (env) => {
|
|
9367
|
-
const sheetIdFrom = env.model.getters.getActiveSheetId();
|
|
9368
|
-
const sheetIdTo = env.model.uuidGenerator.uuidv4();
|
|
9369
|
-
env.model.dispatch("DUPLICATE_SHEET", {
|
|
9370
|
-
sheetId: sheetIdFrom,
|
|
9371
|
-
sheetIdTo,
|
|
9372
|
-
});
|
|
9373
|
-
env.model.dispatch("ACTIVATE_SHEET", { sheetIdFrom, sheetIdTo });
|
|
9374
|
-
},
|
|
9375
|
-
})
|
|
9376
|
-
.add("rename", {
|
|
9377
|
-
name: _lt("Rename"),
|
|
9378
|
-
sequence: 30,
|
|
9379
|
-
action: () => args.renameSheetCallback(),
|
|
9380
|
-
})
|
|
9381
|
-
.add("move_right", {
|
|
9382
|
-
name: _lt("Move right"),
|
|
9383
|
-
sequence: 40,
|
|
9384
|
-
isVisible: (env) => {
|
|
9385
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9386
|
-
const sheetIds = env.model.getters.getVisibleSheetIds();
|
|
9387
|
-
return sheetIds.indexOf(sheetId) !== sheetIds.length - 1;
|
|
9388
|
-
},
|
|
9389
|
-
action: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
9390
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
9391
|
-
delta: 1,
|
|
9392
|
-
}),
|
|
9393
|
-
})
|
|
9394
|
-
.add("move_left", {
|
|
9395
|
-
name: _lt("Move left"),
|
|
9396
|
-
sequence: 50,
|
|
9397
|
-
isVisible: (env) => {
|
|
9398
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9399
|
-
return env.model.getters.getVisibleSheetIds()[0] !== sheetId;
|
|
9400
|
-
},
|
|
9401
|
-
action: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
9402
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
9403
|
-
delta: -1,
|
|
9404
|
-
}),
|
|
9405
|
-
})
|
|
9406
|
-
.add("hide_sheet", {
|
|
9407
|
-
name: _lt("Hide sheet"),
|
|
9408
|
-
sequence: 60,
|
|
9409
|
-
isVisible: (env) => env.model.getters.getVisibleSheetIds().length !== 1,
|
|
9410
|
-
action: (env) => env.model.dispatch("HIDE_SHEET", { sheetId: env.model.getters.getActiveSheetId() }),
|
|
9411
|
-
});
|
|
9412
|
-
return sheetMenuRegistry;
|
|
9413
|
-
}
|
|
9414
|
-
|
|
9415
9310
|
//------------------------------------------------------------------------------
|
|
9416
9311
|
// Arg description DSL
|
|
9417
9312
|
//------------------------------------------------------------------------------
|
|
@@ -16172,6 +16067,593 @@ for (let category of categories) {
|
|
|
16172
16067
|
}
|
|
16173
16068
|
}
|
|
16174
16069
|
|
|
16070
|
+
const rowInsertRowBefore = {
|
|
16071
|
+
name: ROW_INSERT_ROWS_BEFORE_NAME,
|
|
16072
|
+
execute: INSERT_ROWS_BEFORE_ACTION,
|
|
16073
|
+
};
|
|
16074
|
+
const topBarInsertRowsBefore = {
|
|
16075
|
+
...rowInsertRowBefore,
|
|
16076
|
+
name: MENU_INSERT_ROWS_BEFORE_NAME,
|
|
16077
|
+
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16078
|
+
};
|
|
16079
|
+
const cellInsertRowsBefore = {
|
|
16080
|
+
...rowInsertRowBefore,
|
|
16081
|
+
name: CELL_INSERT_ROWS_BEFORE_NAME,
|
|
16082
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16083
|
+
};
|
|
16084
|
+
const rowInsertRowsAfter = {
|
|
16085
|
+
execute: INSERT_ROWS_AFTER_ACTION,
|
|
16086
|
+
name: ROW_INSERT_ROWS_AFTER_NAME,
|
|
16087
|
+
};
|
|
16088
|
+
const topBarInsertRowsAfter = {
|
|
16089
|
+
...rowInsertRowsAfter,
|
|
16090
|
+
name: MENU_INSERT_ROWS_AFTER_NAME,
|
|
16091
|
+
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16092
|
+
};
|
|
16093
|
+
const colInsertColsBefore = {
|
|
16094
|
+
name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
|
|
16095
|
+
execute: INSERT_COLUMNS_BEFORE_ACTION,
|
|
16096
|
+
};
|
|
16097
|
+
const topBarInsertColsBefore = {
|
|
16098
|
+
...colInsertColsBefore,
|
|
16099
|
+
name: MENU_INSERT_COLUMNS_BEFORE_NAME,
|
|
16100
|
+
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16101
|
+
};
|
|
16102
|
+
const cellInsertColsBefore = {
|
|
16103
|
+
...colInsertColsBefore,
|
|
16104
|
+
name: CELL_INSERT_COLUMNS_BEFORE_NAME,
|
|
16105
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16106
|
+
};
|
|
16107
|
+
const colInsertColsAfter = {
|
|
16108
|
+
name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
|
|
16109
|
+
execute: INSERT_COLUMNS_AFTER_ACTION,
|
|
16110
|
+
};
|
|
16111
|
+
const topBarInsertColsAfter = {
|
|
16112
|
+
...colInsertColsAfter,
|
|
16113
|
+
name: MENU_INSERT_COLUMNS_AFTER_NAME,
|
|
16114
|
+
execute: INSERT_COLUMNS_AFTER_ACTION,
|
|
16115
|
+
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16116
|
+
};
|
|
16117
|
+
const insertCell = {
|
|
16118
|
+
name: _lt("Insert cells"),
|
|
16119
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16120
|
+
};
|
|
16121
|
+
const insertCellShiftDown = {
|
|
16122
|
+
name: _lt("Insert cells and shift down"),
|
|
16123
|
+
execute: INSERT_CELL_SHIFT_DOWN,
|
|
16124
|
+
};
|
|
16125
|
+
const insertCellShiftRight = {
|
|
16126
|
+
name: _lt("Insert cells and shift right"),
|
|
16127
|
+
execute: INSERT_CELL_SHIFT_RIGHT,
|
|
16128
|
+
};
|
|
16129
|
+
const insertChart = {
|
|
16130
|
+
name: _lt("Chart"),
|
|
16131
|
+
execute: CREATE_CHART,
|
|
16132
|
+
};
|
|
16133
|
+
const insertImage = {
|
|
16134
|
+
name: _lt("Image"),
|
|
16135
|
+
execute: CREATE_IMAGE,
|
|
16136
|
+
isVisible: (env) => env.imageProvider !== undefined,
|
|
16137
|
+
};
|
|
16138
|
+
const insertFunction = {
|
|
16139
|
+
name: _lt("Function"),
|
|
16140
|
+
};
|
|
16141
|
+
const insertFunctionSum = {
|
|
16142
|
+
name: _lt("SUM"),
|
|
16143
|
+
execute: (env) => env.startCellEdition(`=SUM(`),
|
|
16144
|
+
};
|
|
16145
|
+
const insertFunctionAverage = {
|
|
16146
|
+
name: _lt("AVERAGE"),
|
|
16147
|
+
execute: (env) => env.startCellEdition(`=AVERAGE(`),
|
|
16148
|
+
};
|
|
16149
|
+
const insertFunctionCount = {
|
|
16150
|
+
name: _lt("COUNT"),
|
|
16151
|
+
execute: (env) => env.startCellEdition(`=COUNT(`),
|
|
16152
|
+
};
|
|
16153
|
+
const insertFunctionMax = {
|
|
16154
|
+
name: _lt("MAX"),
|
|
16155
|
+
execute: (env) => env.startCellEdition(`=MAX(`),
|
|
16156
|
+
};
|
|
16157
|
+
const insertFunctionMin = {
|
|
16158
|
+
name: _lt("MIN"),
|
|
16159
|
+
execute: (env) => env.startCellEdition(`=MIN(`),
|
|
16160
|
+
};
|
|
16161
|
+
const categorieFunctionAll = {
|
|
16162
|
+
name: _lt("All"),
|
|
16163
|
+
children: allFunctionListMenuBuilder(),
|
|
16164
|
+
};
|
|
16165
|
+
function allFunctionListMenuBuilder() {
|
|
16166
|
+
const fnNames = functionRegistry.getKeys();
|
|
16167
|
+
return createFormulaFunctions(fnNames);
|
|
16168
|
+
}
|
|
16169
|
+
const categoriesFunctionListMenuBuilder = () => {
|
|
16170
|
+
const functions = functionRegistry.content;
|
|
16171
|
+
const categories = [...new Set(functionRegistry.getAll().map((fn) => fn.category))].filter(isDefined$1);
|
|
16172
|
+
return categories.sort().map((category, i) => {
|
|
16173
|
+
const functionsInCategory = Object.keys(functions).filter((key) => functions[key].category === category);
|
|
16174
|
+
return {
|
|
16175
|
+
name: category,
|
|
16176
|
+
children: createFormulaFunctions(functionsInCategory),
|
|
16177
|
+
};
|
|
16178
|
+
});
|
|
16179
|
+
};
|
|
16180
|
+
const insertLink = {
|
|
16181
|
+
name: _lt("Link"),
|
|
16182
|
+
execute: INSERT_LINK,
|
|
16183
|
+
};
|
|
16184
|
+
const insertSheet = {
|
|
16185
|
+
name: _lt("New sheet"),
|
|
16186
|
+
execute: CREATE_SHEET_ACTION,
|
|
16187
|
+
};
|
|
16188
|
+
function createFormulaFunctions(fnNames) {
|
|
16189
|
+
return fnNames.sort().map((fnName, i) => {
|
|
16190
|
+
return {
|
|
16191
|
+
name: fnName,
|
|
16192
|
+
sequence: i * 10,
|
|
16193
|
+
execute: (env) => env.startCellEdition(`=${fnName}(`),
|
|
16194
|
+
};
|
|
16195
|
+
});
|
|
16196
|
+
}
|
|
16197
|
+
|
|
16198
|
+
//------------------------------------------------------------------------------
|
|
16199
|
+
// Context Menu Registry
|
|
16200
|
+
//------------------------------------------------------------------------------
|
|
16201
|
+
const cellMenuRegistry = new MenuItemRegistry();
|
|
16202
|
+
cellMenuRegistry
|
|
16203
|
+
.add("cut", {
|
|
16204
|
+
...cut,
|
|
16205
|
+
sequence: 10,
|
|
16206
|
+
})
|
|
16207
|
+
.add("copy", {
|
|
16208
|
+
...copy,
|
|
16209
|
+
sequence: 20,
|
|
16210
|
+
})
|
|
16211
|
+
.add("paste", {
|
|
16212
|
+
...paste,
|
|
16213
|
+
sequence: 30,
|
|
16214
|
+
})
|
|
16215
|
+
.add("paste_special", {
|
|
16216
|
+
...pasteSpecial,
|
|
16217
|
+
sequence: 40,
|
|
16218
|
+
separator: true,
|
|
16219
|
+
})
|
|
16220
|
+
.addChild("paste_value_only", ["paste_special"], {
|
|
16221
|
+
...pasteSpecialValue,
|
|
16222
|
+
sequence: 10,
|
|
16223
|
+
})
|
|
16224
|
+
.addChild("paste_format_only", ["paste_special"], {
|
|
16225
|
+
...pasteSpecialFormat,
|
|
16226
|
+
sequence: 20,
|
|
16227
|
+
})
|
|
16228
|
+
.add("add_row_before", {
|
|
16229
|
+
...cellInsertRowsBefore,
|
|
16230
|
+
sequence: 70,
|
|
16231
|
+
})
|
|
16232
|
+
.add("add_column_before", {
|
|
16233
|
+
...cellInsertColsBefore,
|
|
16234
|
+
sequence: 90,
|
|
16235
|
+
})
|
|
16236
|
+
.add("insert_cell", {
|
|
16237
|
+
...insertCell,
|
|
16238
|
+
sequence: 100,
|
|
16239
|
+
separator: true,
|
|
16240
|
+
})
|
|
16241
|
+
.addChild("insert_cell_down", ["insert_cell"], {
|
|
16242
|
+
...insertCellShiftDown,
|
|
16243
|
+
name: _lt("Shift down"),
|
|
16244
|
+
sequence: 10,
|
|
16245
|
+
})
|
|
16246
|
+
.addChild("insert_cell_right", ["insert_cell"], {
|
|
16247
|
+
...insertCellShiftRight,
|
|
16248
|
+
name: _lt("Shift right"),
|
|
16249
|
+
sequence: 20,
|
|
16250
|
+
})
|
|
16251
|
+
.add("delete_row", {
|
|
16252
|
+
...deleteRow,
|
|
16253
|
+
sequence: 110,
|
|
16254
|
+
})
|
|
16255
|
+
.add("delete_column", {
|
|
16256
|
+
...deleteCol,
|
|
16257
|
+
sequence: 120,
|
|
16258
|
+
})
|
|
16259
|
+
.add("delete_cell", {
|
|
16260
|
+
...deleteCells,
|
|
16261
|
+
sequence: 130,
|
|
16262
|
+
})
|
|
16263
|
+
.addChild("delete_cell_up", ["delete_cell"], {
|
|
16264
|
+
...deleteCellShiftUp,
|
|
16265
|
+
name: _lt("Shift up"),
|
|
16266
|
+
sequence: 10,
|
|
16267
|
+
})
|
|
16268
|
+
.addChild("delete_cell_left", ["delete_cell"], {
|
|
16269
|
+
...deleteCellShiftLeft,
|
|
16270
|
+
name: _lt("Shift left"),
|
|
16271
|
+
sequence: 20,
|
|
16272
|
+
})
|
|
16273
|
+
.add("insert_link", {
|
|
16274
|
+
...insertLink,
|
|
16275
|
+
name: _lt("Insert link"),
|
|
16276
|
+
sequence: 150,
|
|
16277
|
+
separator: true,
|
|
16278
|
+
});
|
|
16279
|
+
|
|
16280
|
+
const sortRange = {
|
|
16281
|
+
name: _lt("Sort range"),
|
|
16282
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16283
|
+
};
|
|
16284
|
+
const sortAscending = {
|
|
16285
|
+
name: _lt("Ascending (A ⟶ Z)"),
|
|
16286
|
+
execute: SORT_CELLS_ASCENDING,
|
|
16287
|
+
};
|
|
16288
|
+
const sortDescending = {
|
|
16289
|
+
name: _lt("Descending (Z ⟶ A)"),
|
|
16290
|
+
execute: SORT_CELLS_DESCENDING,
|
|
16291
|
+
};
|
|
16292
|
+
const addDataFilter = {
|
|
16293
|
+
name: _lt("Create filter"),
|
|
16294
|
+
execute: FILTERS_CREATE_FILTER_TABLE,
|
|
16295
|
+
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
16296
|
+
isEnabled: (env) => SELECTION_IS_CONTINUOUS(env),
|
|
16297
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
16298
|
+
};
|
|
16299
|
+
const removeDataFilter = {
|
|
16300
|
+
name: _lt("Remove filter"),
|
|
16301
|
+
execute: FILTERS_REMOVE_FILTER_TABLE,
|
|
16302
|
+
isVisible: SELECTION_CONTAINS_FILTER,
|
|
16303
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
16304
|
+
};
|
|
16305
|
+
|
|
16306
|
+
const formatNumberAutomatic = {
|
|
16307
|
+
name: _lt("Automatic"),
|
|
16308
|
+
execute: FORMAT_AUTOMATIC_ACTION,
|
|
16309
|
+
isActive: (env) => isAutomaticFormatSelected(env),
|
|
16310
|
+
};
|
|
16311
|
+
const formatNumberNumber = {
|
|
16312
|
+
name: _lt("Number"),
|
|
16313
|
+
description: "1,000.12",
|
|
16314
|
+
execute: FORMAT_NUMBER_ACTION,
|
|
16315
|
+
isActive: (env) => isFormatSelected(env, "#,##0.00"),
|
|
16316
|
+
};
|
|
16317
|
+
const formatPercent = {
|
|
16318
|
+
name: _lt("Format as percent"),
|
|
16319
|
+
execute: FORMAT_PERCENT_ACTION,
|
|
16320
|
+
icon: "o-spreadsheet-Icon.PERCENT",
|
|
16321
|
+
};
|
|
16322
|
+
const formatNumberPercent = {
|
|
16323
|
+
name: _lt("Percent"),
|
|
16324
|
+
description: "10.12%",
|
|
16325
|
+
execute: FORMAT_PERCENT_ACTION,
|
|
16326
|
+
isActive: (env) => isFormatSelected(env, "0.00%"),
|
|
16327
|
+
};
|
|
16328
|
+
const formatNumberCurrency = {
|
|
16329
|
+
name: _lt("Currency"),
|
|
16330
|
+
description: "$1,000.12",
|
|
16331
|
+
execute: FORMAT_CURRENCY_ACTION,
|
|
16332
|
+
isActive: (env) => isFormatSelected(env, "[$$]#,##0.00"),
|
|
16333
|
+
};
|
|
16334
|
+
const formatNumberCurrencyRounded = {
|
|
16335
|
+
name: _lt("Currency rounded"),
|
|
16336
|
+
description: "$1,000",
|
|
16337
|
+
execute: FORMAT_CURRENCY_ROUNDED_ACTION,
|
|
16338
|
+
isActive: (env) => isFormatSelected(env, "[$$]#,##0"),
|
|
16339
|
+
};
|
|
16340
|
+
const formatCustomCurrency = {
|
|
16341
|
+
name: _lt("Custom currency"),
|
|
16342
|
+
isVisible: (env) => env.loadCurrencies !== undefined,
|
|
16343
|
+
execute: OPEN_CUSTOM_CURRENCY_SIDEPANEL_ACTION,
|
|
16344
|
+
};
|
|
16345
|
+
const formatNumberDate = {
|
|
16346
|
+
name: _lt("Date"),
|
|
16347
|
+
description: "9/26/2008",
|
|
16348
|
+
execute: FORMAT_DATE_ACTION,
|
|
16349
|
+
isActive: (env) => isFormatSelected(env, "m/d/yyyy"),
|
|
16350
|
+
};
|
|
16351
|
+
const formatNumberTime = {
|
|
16352
|
+
name: _lt("Time"),
|
|
16353
|
+
description: "10:43:00 PM",
|
|
16354
|
+
execute: FORMAT_TIME_ACTION,
|
|
16355
|
+
isActive: (env) => isFormatSelected(env, "hh:mm:ss a"),
|
|
16356
|
+
};
|
|
16357
|
+
const formatNumberDateTime = {
|
|
16358
|
+
name: _lt("Date time"),
|
|
16359
|
+
description: "9/26/2008 22:43:00",
|
|
16360
|
+
execute: FORMAT_DATE_TIME_ACTION,
|
|
16361
|
+
isActive: (env) => isFormatSelected(env, "m/d/yyyy hh:mm:ss"),
|
|
16362
|
+
};
|
|
16363
|
+
const formatNumberDuration = {
|
|
16364
|
+
name: _lt("Duration"),
|
|
16365
|
+
description: "27:51:38",
|
|
16366
|
+
execute: FORMAT_DURATION_ACTION,
|
|
16367
|
+
isActive: (env) => isFormatSelected(env, "hhhh:mm:ss"),
|
|
16368
|
+
};
|
|
16369
|
+
const incraseDecimalPlaces = {
|
|
16370
|
+
name: _lt("Increase decimal places"),
|
|
16371
|
+
icon: "o-spreadsheet-Icon.INCREASE_DECIMAL",
|
|
16372
|
+
execute: (env) => env.model.dispatch("SET_DECIMAL", {
|
|
16373
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16374
|
+
target: env.model.getters.getSelectedZones(),
|
|
16375
|
+
step: 1,
|
|
16376
|
+
}),
|
|
16377
|
+
};
|
|
16378
|
+
const decraseDecimalPlaces = {
|
|
16379
|
+
name: _lt("Decrease decimal places"),
|
|
16380
|
+
icon: "o-spreadsheet-Icon.DECRASE_DECIMAL",
|
|
16381
|
+
execute: (env) => env.model.dispatch("SET_DECIMAL", {
|
|
16382
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16383
|
+
target: env.model.getters.getSelectedZones(),
|
|
16384
|
+
step: -1,
|
|
16385
|
+
}),
|
|
16386
|
+
};
|
|
16387
|
+
const formatBold = {
|
|
16388
|
+
name: _lt("Bold"),
|
|
16389
|
+
description: "Ctrl+B",
|
|
16390
|
+
execute: FORMAT_BOLD_ACTION,
|
|
16391
|
+
icon: "o-spreadsheet-Icon.BOLD",
|
|
16392
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().bold,
|
|
16393
|
+
};
|
|
16394
|
+
const formatItalic = {
|
|
16395
|
+
name: _lt("Italic"),
|
|
16396
|
+
description: "Ctrl+I",
|
|
16397
|
+
execute: FORMAT_ITALIC_ACTION,
|
|
16398
|
+
icon: "o-spreadsheet-Icon.ITALIC",
|
|
16399
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().italic,
|
|
16400
|
+
};
|
|
16401
|
+
const formatUnderline = {
|
|
16402
|
+
name: _lt("Underline"),
|
|
16403
|
+
description: "Ctrl+U",
|
|
16404
|
+
execute: FORMAT_UNDERLINE_ACTION,
|
|
16405
|
+
icon: "o-spreadsheet-Icon.UNDERLINE",
|
|
16406
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().underline,
|
|
16407
|
+
};
|
|
16408
|
+
const formatStrikethrough = {
|
|
16409
|
+
name: _lt("Strikethrough"),
|
|
16410
|
+
execute: FORMAT_STRIKETHROUGH_ACTION,
|
|
16411
|
+
icon: "o-spreadsheet-Icon.STRIKE",
|
|
16412
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().strikethrough,
|
|
16413
|
+
};
|
|
16414
|
+
const formatFontSize = {
|
|
16415
|
+
name: _lt("Font size"),
|
|
16416
|
+
children: fontSizeMenuBuilder(),
|
|
16417
|
+
};
|
|
16418
|
+
const formatAlignment = {
|
|
16419
|
+
name: _lt("Alignment"),
|
|
16420
|
+
icon: "o-spreadsheet-Icon.ALIGN_LEFT",
|
|
16421
|
+
};
|
|
16422
|
+
const formatAlignmentHorizontal = {
|
|
16423
|
+
name: _lt("Horizontal align"),
|
|
16424
|
+
icon: "o-spreadsheet-Icon.ALIGN_LEFT",
|
|
16425
|
+
};
|
|
16426
|
+
const formatAlignmentLeft = {
|
|
16427
|
+
name: _lt("Left"),
|
|
16428
|
+
execute: (env) => setStyle(env, { align: "left" }),
|
|
16429
|
+
isActive: (env) => getHorizontalAlign(env) === "left",
|
|
16430
|
+
icon: "o-spreadsheet-Icon.ALIGN_LEFT",
|
|
16431
|
+
};
|
|
16432
|
+
const formatAlignmentCenter = {
|
|
16433
|
+
name: _lt("Center"),
|
|
16434
|
+
execute: (env) => setStyle(env, { align: "center" }),
|
|
16435
|
+
isActive: (env) => getHorizontalAlign(env) === "center",
|
|
16436
|
+
icon: "o-spreadsheet-Icon.ALIGN_CENTER",
|
|
16437
|
+
};
|
|
16438
|
+
const formatAlignmentRight = {
|
|
16439
|
+
name: _lt("Right"),
|
|
16440
|
+
execute: (env) => setStyle(env, { align: "right" }),
|
|
16441
|
+
isActive: (env) => getHorizontalAlign(env) === "right",
|
|
16442
|
+
icon: "o-spreadsheet-Icon.ALIGN_RIGHT",
|
|
16443
|
+
};
|
|
16444
|
+
const formatAlignmentVertical = {
|
|
16445
|
+
name: _lt("Vertical align"),
|
|
16446
|
+
icon: "o-spreadsheet-Icon.ALIGN_MIDDLE",
|
|
16447
|
+
};
|
|
16448
|
+
const formatAlignmentTop = {
|
|
16449
|
+
name: _lt("Top"),
|
|
16450
|
+
execute: (env) => setStyle(env, { verticalAlign: "top" }),
|
|
16451
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().verticalAlign || DEFAULT_VERTICAL_ALIGN) === "top",
|
|
16452
|
+
icon: "o-spreadsheet-Icon.ALIGN_TOP",
|
|
16453
|
+
};
|
|
16454
|
+
const formatAlignmentMiddle = {
|
|
16455
|
+
name: _lt("Middle"),
|
|
16456
|
+
execute: (env) => setStyle(env, { verticalAlign: "middle" }),
|
|
16457
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().verticalAlign || DEFAULT_VERTICAL_ALIGN) === "middle",
|
|
16458
|
+
icon: "o-spreadsheet-Icon.ALIGN_MIDDLE",
|
|
16459
|
+
};
|
|
16460
|
+
const formatAlignmentBottom = {
|
|
16461
|
+
name: _lt("Bottom"),
|
|
16462
|
+
execute: (env) => setStyle(env, { verticalAlign: "bottom" }),
|
|
16463
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().verticalAlign || DEFAULT_VERTICAL_ALIGN) === "bottom",
|
|
16464
|
+
icon: "o-spreadsheet-Icon.ALIGN_BOTTOM",
|
|
16465
|
+
};
|
|
16466
|
+
const formatWrapping = {
|
|
16467
|
+
name: _lt("Wrapping"),
|
|
16468
|
+
icon: "o-spreadsheet-Icon.WRAPPING_OVERFLOW",
|
|
16469
|
+
};
|
|
16470
|
+
const formatWrappingOverflow = {
|
|
16471
|
+
name: _lt("Overflow"),
|
|
16472
|
+
execute: (env) => setStyle(env, { wrapping: "overflow" }),
|
|
16473
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().wrapping || "overflow") === "overflow",
|
|
16474
|
+
icon: "o-spreadsheet-Icon.WRAPPING_OVERFLOW",
|
|
16475
|
+
};
|
|
16476
|
+
const formatWrappingWrap = {
|
|
16477
|
+
name: _lt("Wrap"),
|
|
16478
|
+
execute: (env) => setStyle(env, { wrapping: "wrap" }),
|
|
16479
|
+
isActive: (env) => env.model.getters.getCurrentStyle().wrapping === "wrap",
|
|
16480
|
+
icon: "o-spreadsheet-Icon.WRAPPING_WRAP",
|
|
16481
|
+
};
|
|
16482
|
+
const formatWrappingClip = {
|
|
16483
|
+
name: _lt("Clip"),
|
|
16484
|
+
execute: (env) => setStyle(env, { wrapping: "clip" }),
|
|
16485
|
+
isActive: (env) => env.model.getters.getCurrentStyle().wrapping === "clip",
|
|
16486
|
+
icon: "o-spreadsheet-Icon.WRAPPING_CLIP",
|
|
16487
|
+
};
|
|
16488
|
+
const textColor = {
|
|
16489
|
+
name: _lt("Text Color"),
|
|
16490
|
+
icon: "o-spreadsheet-Icon.TEXT_COLOR",
|
|
16491
|
+
};
|
|
16492
|
+
const fillColor = {
|
|
16493
|
+
name: _lt("Fill Color"),
|
|
16494
|
+
icon: "o-spreadsheet-Icon.FILL_COLOR",
|
|
16495
|
+
};
|
|
16496
|
+
const formatCF = {
|
|
16497
|
+
name: _lt("Conditional formatting"),
|
|
16498
|
+
execute: OPEN_CF_SIDEPANEL_ACTION,
|
|
16499
|
+
};
|
|
16500
|
+
const paintFormat = {
|
|
16501
|
+
name: _lt("Paint Format"),
|
|
16502
|
+
execute: (env) => env.model.dispatch("ACTIVATE_PAINT_FORMAT", {
|
|
16503
|
+
target: env.model.getters.getSelectedZones(),
|
|
16504
|
+
}),
|
|
16505
|
+
icon: "o-spreadsheet-Icon.PAINT_FORMAT",
|
|
16506
|
+
isActive: (env) => env.model.getters.isPaintingFormat(),
|
|
16507
|
+
};
|
|
16508
|
+
const clearFormat = {
|
|
16509
|
+
name: _lt("Clear formatting"),
|
|
16510
|
+
execute: FORMAT_CLEARFORMAT_ACTION,
|
|
16511
|
+
icon: "o-spreadsheet-Icon.CLEAR_FORMAT",
|
|
16512
|
+
};
|
|
16513
|
+
const borders = {
|
|
16514
|
+
name: _lt("Borders"),
|
|
16515
|
+
icon: "o-spreadsheet-Icon.BORDERS",
|
|
16516
|
+
};
|
|
16517
|
+
const bordersAll = {
|
|
16518
|
+
name: _lt("All borders"),
|
|
16519
|
+
execute: (env) => setBorder(env, "all"),
|
|
16520
|
+
icon: "o-spreadsheet-Icon.BORDERS",
|
|
16521
|
+
};
|
|
16522
|
+
const bordersInner = {
|
|
16523
|
+
name: _lt("Inner borders"),
|
|
16524
|
+
execute: (env) => setBorder(env, "hv"),
|
|
16525
|
+
icon: "o-spreadsheet-Icon.BORDER_HV",
|
|
16526
|
+
};
|
|
16527
|
+
const bordersHorizontal = {
|
|
16528
|
+
name: _lt("Horizontal borders"),
|
|
16529
|
+
execute: (env) => setBorder(env, "h"),
|
|
16530
|
+
icon: "o-spreadsheet-Icon.BORDER_H",
|
|
16531
|
+
};
|
|
16532
|
+
const bordersVertical = {
|
|
16533
|
+
name: _lt("Vertical borders"),
|
|
16534
|
+
execute: (env) => setBorder(env, "v"),
|
|
16535
|
+
icon: "o-spreadsheet-Icon.BORDER_V",
|
|
16536
|
+
};
|
|
16537
|
+
const bordersExternal = {
|
|
16538
|
+
name: _lt("External borders"),
|
|
16539
|
+
execute: (env) => setBorder(env, "external"),
|
|
16540
|
+
icon: "o-spreadsheet-Icon.BORDER_EXTERNAL",
|
|
16541
|
+
};
|
|
16542
|
+
const bordersLeft = {
|
|
16543
|
+
name: _lt("Left borders"),
|
|
16544
|
+
execute: (env) => setBorder(env, "left"),
|
|
16545
|
+
icon: "o-spreadsheet-Icon.BORDER_LEFT",
|
|
16546
|
+
};
|
|
16547
|
+
const bordersTop = {
|
|
16548
|
+
name: _lt("Top borders"),
|
|
16549
|
+
execute: (env) => setBorder(env, "top"),
|
|
16550
|
+
icon: "o-spreadsheet-Icon.BORDER_TOP",
|
|
16551
|
+
};
|
|
16552
|
+
const bordersRight = {
|
|
16553
|
+
name: _lt("Right borders"),
|
|
16554
|
+
execute: (env) => setBorder(env, "right"),
|
|
16555
|
+
icon: "o-spreadsheet-Icon.BORDER_RIGHT",
|
|
16556
|
+
};
|
|
16557
|
+
const bordersBottom = {
|
|
16558
|
+
name: _lt("Bottom borders"),
|
|
16559
|
+
execute: (env) => setBorder(env, "bottom"),
|
|
16560
|
+
icon: "o-spreadsheet-Icon.BORDER_BOTTOM",
|
|
16561
|
+
};
|
|
16562
|
+
const bordersClear = {
|
|
16563
|
+
name: _lt("Clear borders"),
|
|
16564
|
+
execute: (env) => setBorder(env, "clear"),
|
|
16565
|
+
icon: "o-spreadsheet-Icon.BORDER_CLEAR",
|
|
16566
|
+
};
|
|
16567
|
+
function fontSizeMenuBuilder() {
|
|
16568
|
+
return FONT_SIZES.map((fs) => {
|
|
16569
|
+
return {
|
|
16570
|
+
name: fs.toString(),
|
|
16571
|
+
sequence: fs,
|
|
16572
|
+
id: `font_size_${fs}`,
|
|
16573
|
+
execute: (env) => setStyle(env, { fontSize: fs }),
|
|
16574
|
+
isActive: (env) => isFontSizeSelected(env, fs),
|
|
16575
|
+
};
|
|
16576
|
+
});
|
|
16577
|
+
}
|
|
16578
|
+
function isAutomaticFormatSelected(env) {
|
|
16579
|
+
const activeCell = env.model.getters.getActiveCell();
|
|
16580
|
+
return !activeCell || !activeCell.format;
|
|
16581
|
+
}
|
|
16582
|
+
function isFormatSelected(env, format) {
|
|
16583
|
+
const activeCell = env.model.getters.getActiveCell();
|
|
16584
|
+
return activeCell && activeCell.format === format;
|
|
16585
|
+
}
|
|
16586
|
+
function isFontSizeSelected(env, fontSize) {
|
|
16587
|
+
const currentFontSize = env.model.getters.getCurrentStyle().fontSize || DEFAULT_FONT_SIZE;
|
|
16588
|
+
return currentFontSize === fontSize;
|
|
16589
|
+
}
|
|
16590
|
+
function setBorder(env, command) {
|
|
16591
|
+
env.model.dispatch("SET_FORMATTING", {
|
|
16592
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16593
|
+
target: env.model.getters.getSelectedZones(),
|
|
16594
|
+
border: command,
|
|
16595
|
+
});
|
|
16596
|
+
}
|
|
16597
|
+
function getHorizontalAlign(env) {
|
|
16598
|
+
const style = env.model.getters.getCurrentStyle();
|
|
16599
|
+
if (style.align) {
|
|
16600
|
+
return style.align;
|
|
16601
|
+
}
|
|
16602
|
+
const cell = env.model.getters.getActiveCell();
|
|
16603
|
+
return cell.defaultAlign;
|
|
16604
|
+
}
|
|
16605
|
+
|
|
16606
|
+
var ACTION_FORMAT = /*#__PURE__*/Object.freeze({
|
|
16607
|
+
__proto__: null,
|
|
16608
|
+
formatNumberAutomatic: formatNumberAutomatic,
|
|
16609
|
+
formatNumberNumber: formatNumberNumber,
|
|
16610
|
+
formatPercent: formatPercent,
|
|
16611
|
+
formatNumberPercent: formatNumberPercent,
|
|
16612
|
+
formatNumberCurrency: formatNumberCurrency,
|
|
16613
|
+
formatNumberCurrencyRounded: formatNumberCurrencyRounded,
|
|
16614
|
+
formatCustomCurrency: formatCustomCurrency,
|
|
16615
|
+
formatNumberDate: formatNumberDate,
|
|
16616
|
+
formatNumberTime: formatNumberTime,
|
|
16617
|
+
formatNumberDateTime: formatNumberDateTime,
|
|
16618
|
+
formatNumberDuration: formatNumberDuration,
|
|
16619
|
+
incraseDecimalPlaces: incraseDecimalPlaces,
|
|
16620
|
+
decraseDecimalPlaces: decraseDecimalPlaces,
|
|
16621
|
+
formatBold: formatBold,
|
|
16622
|
+
formatItalic: formatItalic,
|
|
16623
|
+
formatUnderline: formatUnderline,
|
|
16624
|
+
formatStrikethrough: formatStrikethrough,
|
|
16625
|
+
formatFontSize: formatFontSize,
|
|
16626
|
+
formatAlignment: formatAlignment,
|
|
16627
|
+
formatAlignmentHorizontal: formatAlignmentHorizontal,
|
|
16628
|
+
formatAlignmentLeft: formatAlignmentLeft,
|
|
16629
|
+
formatAlignmentCenter: formatAlignmentCenter,
|
|
16630
|
+
formatAlignmentRight: formatAlignmentRight,
|
|
16631
|
+
formatAlignmentVertical: formatAlignmentVertical,
|
|
16632
|
+
formatAlignmentTop: formatAlignmentTop,
|
|
16633
|
+
formatAlignmentMiddle: formatAlignmentMiddle,
|
|
16634
|
+
formatAlignmentBottom: formatAlignmentBottom,
|
|
16635
|
+
formatWrapping: formatWrapping,
|
|
16636
|
+
formatWrappingOverflow: formatWrappingOverflow,
|
|
16637
|
+
formatWrappingWrap: formatWrappingWrap,
|
|
16638
|
+
formatWrappingClip: formatWrappingClip,
|
|
16639
|
+
textColor: textColor,
|
|
16640
|
+
fillColor: fillColor,
|
|
16641
|
+
formatCF: formatCF,
|
|
16642
|
+
paintFormat: paintFormat,
|
|
16643
|
+
clearFormat: clearFormat,
|
|
16644
|
+
borders: borders,
|
|
16645
|
+
bordersAll: bordersAll,
|
|
16646
|
+
bordersInner: bordersInner,
|
|
16647
|
+
bordersHorizontal: bordersHorizontal,
|
|
16648
|
+
bordersVertical: bordersVertical,
|
|
16649
|
+
bordersExternal: bordersExternal,
|
|
16650
|
+
bordersLeft: bordersLeft,
|
|
16651
|
+
bordersTop: bordersTop,
|
|
16652
|
+
bordersRight: bordersRight,
|
|
16653
|
+
bordersBottom: bordersBottom,
|
|
16654
|
+
bordersClear: bordersClear
|
|
16655
|
+
});
|
|
16656
|
+
|
|
16175
16657
|
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
16176
16658
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
16177
16659
|
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
@@ -16181,524 +16663,740 @@ function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
|
16181
16663
|
}
|
|
16182
16664
|
}
|
|
16183
16665
|
|
|
16184
|
-
const
|
|
16185
|
-
|
|
16186
|
-
|
|
16187
|
-
|
|
16188
|
-
|
|
16189
|
-
|
|
16190
|
-
|
|
16191
|
-
|
|
16192
|
-
|
|
16193
|
-
|
|
16194
|
-
|
|
16195
|
-
|
|
16196
|
-
|
|
16197
|
-
|
|
16198
|
-
|
|
16199
|
-
|
|
16200
|
-
|
|
16666
|
+
const hideCols = {
|
|
16667
|
+
name: HIDE_COLUMNS_NAME,
|
|
16668
|
+
execute: HIDE_COLUMNS_ACTION,
|
|
16669
|
+
isVisible: (env) => {
|
|
16670
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16671
|
+
const hiddenCols = env.model.getters.getHiddenColsGroups(sheetId).flat();
|
|
16672
|
+
return (env.model.getters.getNumberCols(sheetId) >
|
|
16673
|
+
hiddenCols.length + env.model.getters.getElementsFromSelection("COL").length);
|
|
16674
|
+
},
|
|
16675
|
+
};
|
|
16676
|
+
const unhideCols = {
|
|
16677
|
+
name: _lt("Unhide columns"),
|
|
16678
|
+
execute: UNHIDE_COLUMNS_ACTION,
|
|
16679
|
+
isVisible: (env) => {
|
|
16680
|
+
const hiddenCols = env.model.getters
|
|
16681
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
16682
|
+
.flat();
|
|
16683
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
16684
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
16685
|
+
},
|
|
16686
|
+
};
|
|
16687
|
+
const unhideAllCols = {
|
|
16688
|
+
name: _lt("Unhide all columns"),
|
|
16689
|
+
execute: UNHIDE_ALL_COLUMNS_ACTION,
|
|
16690
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
16691
|
+
};
|
|
16692
|
+
const hideRows = {
|
|
16693
|
+
name: HIDE_ROWS_NAME,
|
|
16694
|
+
execute: HIDE_ROWS_ACTION,
|
|
16695
|
+
isVisible: (env) => {
|
|
16696
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16697
|
+
const hiddenRows = env.model.getters.getHiddenRowsGroups(sheetId).flat();
|
|
16698
|
+
return (env.model.getters.getNumberRows(sheetId) >
|
|
16699
|
+
hiddenRows.length + env.model.getters.getElementsFromSelection("ROW").length);
|
|
16700
|
+
},
|
|
16701
|
+
};
|
|
16702
|
+
const unhideRows = {
|
|
16703
|
+
name: _lt("Unhide rows"),
|
|
16704
|
+
execute: UNHIDE_ROWS_ACTION,
|
|
16705
|
+
isVisible: (env) => {
|
|
16706
|
+
const hiddenRows = env.model.getters
|
|
16707
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
16708
|
+
.flat();
|
|
16709
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
16710
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
16711
|
+
},
|
|
16712
|
+
};
|
|
16713
|
+
const unhideAllRows = {
|
|
16714
|
+
name: _lt("Unhide all rows"),
|
|
16715
|
+
execute: UNHIDE_ALL_ROWS_ACTION,
|
|
16716
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
16717
|
+
};
|
|
16718
|
+
const unFreezePane = {
|
|
16719
|
+
name: _lt("Unfreeze"),
|
|
16720
|
+
isVisible: (env) => {
|
|
16721
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
16722
|
+
return xSplit + ySplit > 0;
|
|
16723
|
+
},
|
|
16724
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
16725
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16726
|
+
}),
|
|
16727
|
+
};
|
|
16728
|
+
const freezePane = {
|
|
16729
|
+
name: _lt("Freeze"),
|
|
16730
|
+
};
|
|
16731
|
+
const unFreezeRows = {
|
|
16732
|
+
name: _lt("No rows"),
|
|
16733
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
16734
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16735
|
+
}),
|
|
16736
|
+
isReadonlyAllowed: true,
|
|
16737
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
16738
|
+
};
|
|
16739
|
+
const freezeFirstRow = {
|
|
16740
|
+
name: _lt("1 row"),
|
|
16741
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
16742
|
+
isReadonlyAllowed: true,
|
|
16743
|
+
};
|
|
16744
|
+
const freezeSecondRow = {
|
|
16745
|
+
name: _lt("2 rows"),
|
|
16746
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
16747
|
+
isReadonlyAllowed: true,
|
|
16748
|
+
};
|
|
16749
|
+
const freezeCurrentRow = {
|
|
16750
|
+
name: _lt("Up to current row"),
|
|
16751
|
+
execute: (env) => {
|
|
16752
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
16753
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
16754
|
+
},
|
|
16755
|
+
isReadonlyAllowed: true,
|
|
16756
|
+
};
|
|
16757
|
+
const unFreezeCols = {
|
|
16758
|
+
name: _lt("No columns"),
|
|
16759
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
16760
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16761
|
+
}),
|
|
16762
|
+
isReadonlyAllowed: true,
|
|
16763
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
16764
|
+
};
|
|
16765
|
+
const freezeFirstCol = {
|
|
16766
|
+
name: _lt("1 column"),
|
|
16767
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
16768
|
+
isReadonlyAllowed: true,
|
|
16769
|
+
};
|
|
16770
|
+
const freezeSecondCol = {
|
|
16771
|
+
name: _lt("2 columns"),
|
|
16772
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
16773
|
+
isReadonlyAllowed: true,
|
|
16774
|
+
};
|
|
16775
|
+
const freezeCurrentCol = {
|
|
16776
|
+
name: _lt("Up to current column"),
|
|
16777
|
+
execute: (env) => {
|
|
16778
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
16779
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
16780
|
+
},
|
|
16781
|
+
isReadonlyAllowed: true,
|
|
16782
|
+
};
|
|
16783
|
+
const viewGridlines = {
|
|
16784
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
16785
|
+
? _lt("Hide gridlines")
|
|
16786
|
+
: _lt("Show gridlines"),
|
|
16787
|
+
execute: SET_GRID_LINES_VISIBILITY_ACTION,
|
|
16788
|
+
};
|
|
16789
|
+
const viewFormulas = {
|
|
16790
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? _lt("Hide formulas") : _lt("Show formulas"),
|
|
16791
|
+
execute: SET_FORMULA_VISIBILITY_ACTION,
|
|
16792
|
+
isReadonlyAllowed: true,
|
|
16793
|
+
};
|
|
16794
|
+
const createRemoveFilter = {
|
|
16795
|
+
name: (env) => selectionContainsFilter(env) ? _lt("Remove selected filters") : _lt("Create filter"),
|
|
16796
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
16797
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
16798
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
16799
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
16800
|
+
};
|
|
16801
|
+
function selectionContainsFilter(env) {
|
|
16802
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16803
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
16804
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
16805
|
+
}
|
|
16806
|
+
function cannotCreateFilter(env) {
|
|
16807
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
16808
|
+
}
|
|
16809
|
+
function createRemoveFilterAction(env) {
|
|
16810
|
+
if (selectionContainsFilter(env)) {
|
|
16811
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
16812
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16813
|
+
target: env.model.getters.getSelectedZones(),
|
|
16814
|
+
});
|
|
16815
|
+
return;
|
|
16816
|
+
}
|
|
16817
|
+
if (cannotCreateFilter(env)) {
|
|
16818
|
+
return;
|
|
16819
|
+
}
|
|
16820
|
+
env.model.selection.selectTableAroundSelection();
|
|
16821
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16822
|
+
const selection = env.model.getters.getSelectedZones();
|
|
16823
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
16824
|
+
}
|
|
16825
|
+
|
|
16826
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
16827
|
+
__proto__: null,
|
|
16828
|
+
hideCols: hideCols,
|
|
16829
|
+
unhideCols: unhideCols,
|
|
16830
|
+
unhideAllCols: unhideAllCols,
|
|
16831
|
+
hideRows: hideRows,
|
|
16832
|
+
unhideRows: unhideRows,
|
|
16833
|
+
unhideAllRows: unhideAllRows,
|
|
16834
|
+
unFreezePane: unFreezePane,
|
|
16835
|
+
freezePane: freezePane,
|
|
16836
|
+
unFreezeRows: unFreezeRows,
|
|
16837
|
+
freezeFirstRow: freezeFirstRow,
|
|
16838
|
+
freezeSecondRow: freezeSecondRow,
|
|
16839
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
16840
|
+
unFreezeCols: unFreezeCols,
|
|
16841
|
+
freezeFirstCol: freezeFirstCol,
|
|
16842
|
+
freezeSecondCol: freezeSecondCol,
|
|
16843
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
16844
|
+
viewGridlines: viewGridlines,
|
|
16845
|
+
viewFormulas: viewFormulas,
|
|
16846
|
+
createRemoveFilter: createRemoveFilter
|
|
16847
|
+
});
|
|
16848
|
+
|
|
16849
|
+
const colMenuRegistry = new MenuItemRegistry();
|
|
16850
|
+
colMenuRegistry
|
|
16851
|
+
.add("cut", {
|
|
16852
|
+
...cut,
|
|
16201
16853
|
sequence: 10,
|
|
16202
|
-
action: UNDO_ACTION,
|
|
16203
16854
|
})
|
|
16204
|
-
.
|
|
16205
|
-
|
|
16206
|
-
description: "Ctrl+Y",
|
|
16855
|
+
.add("copy", {
|
|
16856
|
+
...copy,
|
|
16207
16857
|
sequence: 20,
|
|
16208
|
-
action: REDO_ACTION,
|
|
16209
|
-
separator: true,
|
|
16210
16858
|
})
|
|
16211
|
-
.
|
|
16212
|
-
|
|
16213
|
-
description: "Ctrl+C",
|
|
16859
|
+
.add("paste", {
|
|
16860
|
+
...paste,
|
|
16214
16861
|
sequence: 30,
|
|
16215
|
-
isReadonlyAllowed: true,
|
|
16216
|
-
action: COPY_ACTION,
|
|
16217
16862
|
})
|
|
16218
|
-
.
|
|
16219
|
-
|
|
16220
|
-
description: "Ctrl+X",
|
|
16863
|
+
.add("paste_special", {
|
|
16864
|
+
...pasteSpecial,
|
|
16221
16865
|
sequence: 40,
|
|
16222
|
-
|
|
16866
|
+
separator: true,
|
|
16223
16867
|
})
|
|
16224
|
-
.addChild("
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
sequence: 50,
|
|
16228
|
-
action: PASTE_ACTION,
|
|
16868
|
+
.addChild("paste_value_only", ["paste_special"], {
|
|
16869
|
+
...pasteSpecialValue,
|
|
16870
|
+
sequence: 10,
|
|
16229
16871
|
})
|
|
16230
|
-
.addChild("
|
|
16231
|
-
|
|
16232
|
-
sequence:
|
|
16872
|
+
.addChild("paste_format_only", ["paste_special"], {
|
|
16873
|
+
...pasteSpecialFormat,
|
|
16874
|
+
sequence: 20,
|
|
16875
|
+
})
|
|
16876
|
+
.add("sort_columns", {
|
|
16877
|
+
...sortRange,
|
|
16878
|
+
name: (env) => env.model.getters.getActiveCols().size > 1 ? _lt("Sort columns") : _lt("Sort column"),
|
|
16879
|
+
sequence: 50,
|
|
16233
16880
|
separator: true,
|
|
16234
|
-
isVisible: IS_NOT_CUT_OPERATION,
|
|
16235
16881
|
})
|
|
16236
|
-
.addChild("
|
|
16237
|
-
|
|
16882
|
+
.addChild("sort_ascending", ["sort_columns"], {
|
|
16883
|
+
...sortAscending,
|
|
16238
16884
|
sequence: 10,
|
|
16239
|
-
action: PASTE_VALUE_ACTION,
|
|
16240
16885
|
})
|
|
16241
|
-
.addChild("
|
|
16242
|
-
|
|
16886
|
+
.addChild("sort_descending", ["sort_columns"], {
|
|
16887
|
+
...sortDescending,
|
|
16243
16888
|
sequence: 20,
|
|
16244
|
-
action: PASTE_FORMAT_ACTION,
|
|
16245
16889
|
})
|
|
16246
|
-
.
|
|
16247
|
-
|
|
16248
|
-
sequence:
|
|
16249
|
-
|
|
16890
|
+
.add("add_column_before", {
|
|
16891
|
+
...colInsertColsBefore,
|
|
16892
|
+
sequence: 70,
|
|
16893
|
+
})
|
|
16894
|
+
.add("add_column_after", {
|
|
16895
|
+
...colInsertColsAfter,
|
|
16896
|
+
sequence: 80,
|
|
16897
|
+
})
|
|
16898
|
+
.add("delete_column", {
|
|
16899
|
+
...deleteCols,
|
|
16900
|
+
sequence: 90,
|
|
16901
|
+
})
|
|
16902
|
+
.add("clear_column", {
|
|
16903
|
+
...clearCols,
|
|
16904
|
+
sequence: 100,
|
|
16905
|
+
})
|
|
16906
|
+
.add("hide_columns", {
|
|
16907
|
+
...hideCols,
|
|
16908
|
+
sequence: 85,
|
|
16250
16909
|
separator: true,
|
|
16251
16910
|
})
|
|
16252
|
-
.
|
|
16253
|
-
|
|
16911
|
+
.add("unhide_columns", {
|
|
16912
|
+
...unhideCols,
|
|
16913
|
+
sequence: 86,
|
|
16914
|
+
separator: true,
|
|
16915
|
+
})
|
|
16916
|
+
.add("conditional_formatting", {
|
|
16917
|
+
...formatCF,
|
|
16918
|
+
sequence: 110,
|
|
16919
|
+
});
|
|
16920
|
+
|
|
16921
|
+
const numberFormatMenuRegistry = new MenuItemRegistry();
|
|
16922
|
+
numberFormatMenuRegistry
|
|
16923
|
+
.add("format_number_automatic", {
|
|
16924
|
+
...formatNumberAutomatic,
|
|
16254
16925
|
sequence: 10,
|
|
16255
|
-
|
|
16926
|
+
separator: true,
|
|
16256
16927
|
})
|
|
16257
|
-
.
|
|
16258
|
-
|
|
16928
|
+
.add("format_number_number", {
|
|
16929
|
+
...formatNumberNumber,
|
|
16259
16930
|
sequence: 20,
|
|
16260
|
-
action: SORT_CELLS_DESCENDING,
|
|
16261
16931
|
})
|
|
16262
|
-
.
|
|
16263
|
-
|
|
16264
|
-
|
|
16265
|
-
sequence: 65,
|
|
16266
|
-
isReadonlyAllowed: true,
|
|
16267
|
-
action: OPEN_FAR_SIDEPANEL_ACTION,
|
|
16932
|
+
.add("format_number_percent", {
|
|
16933
|
+
...formatNumberPercent,
|
|
16934
|
+
sequence: 30,
|
|
16268
16935
|
separator: true,
|
|
16269
16936
|
})
|
|
16270
|
-
.
|
|
16271
|
-
|
|
16272
|
-
sequence:
|
|
16273
|
-
action: DELETE_CONTENT_ACTION,
|
|
16937
|
+
.add("format_number_currency", {
|
|
16938
|
+
...formatNumberCurrency,
|
|
16939
|
+
sequence: 40,
|
|
16274
16940
|
})
|
|
16275
|
-
.
|
|
16276
|
-
|
|
16277
|
-
sequence:
|
|
16278
|
-
action: REMOVE_ROWS_ACTION,
|
|
16941
|
+
.add("format_number_currency_rounded", {
|
|
16942
|
+
...formatNumberCurrencyRounded,
|
|
16943
|
+
sequence: 50,
|
|
16279
16944
|
})
|
|
16280
|
-
.
|
|
16281
|
-
|
|
16282
|
-
sequence:
|
|
16283
|
-
|
|
16945
|
+
.add("format_custom_currency", {
|
|
16946
|
+
...formatCustomCurrency,
|
|
16947
|
+
sequence: 60,
|
|
16948
|
+
separator: true,
|
|
16284
16949
|
})
|
|
16285
|
-
.
|
|
16286
|
-
|
|
16287
|
-
sequence:
|
|
16288
|
-
action: DELETE_CELL_SHIFT_UP,
|
|
16950
|
+
.add("format_number_date", {
|
|
16951
|
+
...formatNumberDate,
|
|
16952
|
+
sequence: 70,
|
|
16289
16953
|
})
|
|
16290
|
-
.
|
|
16291
|
-
|
|
16292
|
-
sequence:
|
|
16293
|
-
action: DELETE_CELL_SHIFT_LEFT,
|
|
16954
|
+
.add("format_number_time", {
|
|
16955
|
+
...formatNumberTime,
|
|
16956
|
+
sequence: 80,
|
|
16294
16957
|
})
|
|
16295
|
-
.
|
|
16296
|
-
|
|
16297
|
-
sequence:
|
|
16298
|
-
action: UNHIDE_ALL_COLUMNS_ACTION,
|
|
16299
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
16958
|
+
.add("format_number_date_time", {
|
|
16959
|
+
...formatNumberDateTime,
|
|
16960
|
+
sequence: 90,
|
|
16300
16961
|
})
|
|
16301
|
-
.
|
|
16302
|
-
|
|
16962
|
+
.add("format_number_duration", {
|
|
16963
|
+
...formatNumberDuration,
|
|
16303
16964
|
sequence: 100,
|
|
16304
|
-
|
|
16305
|
-
|
|
16306
|
-
|
|
16307
|
-
|
|
16308
|
-
|
|
16965
|
+
separator: true,
|
|
16966
|
+
});
|
|
16967
|
+
const formatNumberMenuItemSpec = {
|
|
16968
|
+
name: _lt("More formats"),
|
|
16969
|
+
icon: "o-spreadsheet-Icon.NUMBER_FORMATS",
|
|
16970
|
+
children: [() => numberFormatMenuRegistry.getAll()],
|
|
16971
|
+
};
|
|
16972
|
+
|
|
16973
|
+
const rowMenuRegistry = new MenuItemRegistry();
|
|
16974
|
+
rowMenuRegistry
|
|
16975
|
+
.add("cut", {
|
|
16976
|
+
...cut,
|
|
16309
16977
|
sequence: 10,
|
|
16310
|
-
action: INSERT_ROWS_BEFORE_ACTION,
|
|
16311
|
-
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16312
16978
|
})
|
|
16313
|
-
.
|
|
16314
|
-
|
|
16979
|
+
.add("copy", {
|
|
16980
|
+
...copy,
|
|
16315
16981
|
sequence: 20,
|
|
16316
|
-
action: INSERT_ROWS_AFTER_ACTION,
|
|
16317
|
-
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16318
|
-
separator: true,
|
|
16319
16982
|
})
|
|
16320
|
-
.
|
|
16321
|
-
|
|
16983
|
+
.add("paste", {
|
|
16984
|
+
...paste,
|
|
16322
16985
|
sequence: 30,
|
|
16323
|
-
action: INSERT_COLUMNS_BEFORE_ACTION,
|
|
16324
|
-
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16325
16986
|
})
|
|
16326
|
-
.
|
|
16327
|
-
|
|
16987
|
+
.add("paste_special", {
|
|
16988
|
+
...pasteSpecial,
|
|
16328
16989
|
sequence: 40,
|
|
16329
|
-
action: INSERT_COLUMNS_AFTER_ACTION,
|
|
16330
|
-
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16331
16990
|
separator: true,
|
|
16332
16991
|
})
|
|
16333
|
-
.addChild("
|
|
16334
|
-
|
|
16335
|
-
sequence:
|
|
16336
|
-
action: INSERT_CELL_SHIFT_DOWN,
|
|
16992
|
+
.addChild("paste_value_only", ["paste_special"], {
|
|
16993
|
+
...pasteSpecialValue,
|
|
16994
|
+
sequence: 10,
|
|
16337
16995
|
})
|
|
16338
|
-
.addChild("
|
|
16339
|
-
|
|
16340
|
-
sequence:
|
|
16341
|
-
action: INSERT_CELL_SHIFT_RIGHT,
|
|
16342
|
-
separator: true,
|
|
16996
|
+
.addChild("paste_format_only", ["paste_special"], {
|
|
16997
|
+
...pasteSpecialFormat,
|
|
16998
|
+
sequence: 20,
|
|
16343
16999
|
})
|
|
16344
|
-
.
|
|
16345
|
-
|
|
17000
|
+
.add("add_row_before", {
|
|
17001
|
+
...rowInsertRowBefore,
|
|
16346
17002
|
sequence: 50,
|
|
16347
|
-
action: CREATE_CHART,
|
|
16348
|
-
})
|
|
16349
|
-
.addChild("insert_image", ["insert"], {
|
|
16350
|
-
name: _lt("Image"),
|
|
16351
|
-
sequence: 55,
|
|
16352
|
-
action: CREATE_IMAGE,
|
|
16353
|
-
isVisible: (env) => env.imageProvider !== undefined,
|
|
16354
17003
|
})
|
|
16355
|
-
.
|
|
16356
|
-
|
|
17004
|
+
.add("add_row_after", {
|
|
17005
|
+
...rowInsertRowsAfter,
|
|
16357
17006
|
sequence: 60,
|
|
16358
17007
|
})
|
|
16359
|
-
.
|
|
16360
|
-
|
|
16361
|
-
|
|
16362
|
-
sequence: 0,
|
|
17008
|
+
.add("delete_row", {
|
|
17009
|
+
...deleteRows,
|
|
17010
|
+
sequence: 70,
|
|
16363
17011
|
})
|
|
16364
|
-
.
|
|
16365
|
-
|
|
16366
|
-
|
|
17012
|
+
.add("clear_row", {
|
|
17013
|
+
...clearRows,
|
|
17014
|
+
sequence: 80,
|
|
17015
|
+
})
|
|
17016
|
+
.add("hide_rows", {
|
|
17017
|
+
...hideRows,
|
|
17018
|
+
sequence: 85,
|
|
17019
|
+
separator: true,
|
|
17020
|
+
})
|
|
17021
|
+
.add("unhide_rows", {
|
|
17022
|
+
...unhideRows,
|
|
17023
|
+
sequence: 86,
|
|
17024
|
+
separator: true,
|
|
17025
|
+
})
|
|
17026
|
+
.add("conditional_formatting", {
|
|
17027
|
+
...formatCF,
|
|
17028
|
+
sequence: 90,
|
|
17029
|
+
});
|
|
17030
|
+
|
|
17031
|
+
function getSheetMenuRegistry(args) {
|
|
17032
|
+
const sheetMenuRegistry = new MenuItemRegistry();
|
|
17033
|
+
sheetMenuRegistry
|
|
17034
|
+
.add("delete", {
|
|
17035
|
+
...deleteSheet,
|
|
17036
|
+
sequence: 10,
|
|
17037
|
+
})
|
|
17038
|
+
.add("duplicate", {
|
|
17039
|
+
...duplicateSheet,
|
|
17040
|
+
sequence: 20,
|
|
17041
|
+
})
|
|
17042
|
+
.add("rename", {
|
|
17043
|
+
...renameSheet(args),
|
|
17044
|
+
sequence: 30,
|
|
17045
|
+
})
|
|
17046
|
+
.add("move_right", {
|
|
17047
|
+
...sheetMoveRight,
|
|
17048
|
+
sequence: 40,
|
|
17049
|
+
})
|
|
17050
|
+
.add("move_left", {
|
|
17051
|
+
...sheetMoveLeft,
|
|
17052
|
+
sequence: 50,
|
|
17053
|
+
})
|
|
17054
|
+
.add("hide_sheet", {
|
|
17055
|
+
...hideSheet,
|
|
17056
|
+
sequence: 60,
|
|
17057
|
+
});
|
|
17058
|
+
return sheetMenuRegistry;
|
|
17059
|
+
}
|
|
17060
|
+
|
|
17061
|
+
const topbarMenuRegistry = new MenuItemRegistry();
|
|
17062
|
+
topbarMenuRegistry
|
|
17063
|
+
// ---------------------------------------------------------------------
|
|
17064
|
+
// FILE MENU ITEMS
|
|
17065
|
+
// ---------------------------------------------------------------------
|
|
17066
|
+
.add("file", {
|
|
17067
|
+
name: _lt("File"),
|
|
16367
17068
|
sequence: 10,
|
|
16368
17069
|
})
|
|
16369
|
-
|
|
16370
|
-
|
|
16371
|
-
|
|
17070
|
+
// ---------------------------------------------------------------------
|
|
17071
|
+
// EDIT MENU ITEMS
|
|
17072
|
+
// ---------------------------------------------------------------------
|
|
17073
|
+
.add("edit", {
|
|
17074
|
+
name: _lt("Edit"),
|
|
16372
17075
|
sequence: 20,
|
|
16373
17076
|
})
|
|
16374
|
-
.addChild("
|
|
16375
|
-
|
|
16376
|
-
|
|
17077
|
+
.addChild("undo", ["edit"], {
|
|
17078
|
+
...undo,
|
|
17079
|
+
sequence: 10,
|
|
17080
|
+
})
|
|
17081
|
+
.addChild("redo", ["edit"], {
|
|
17082
|
+
...redo,
|
|
17083
|
+
sequence: 20,
|
|
17084
|
+
separator: true,
|
|
17085
|
+
})
|
|
17086
|
+
.addChild("copy", ["edit"], {
|
|
17087
|
+
...copy,
|
|
16377
17088
|
sequence: 30,
|
|
16378
17089
|
})
|
|
16379
|
-
.addChild("
|
|
16380
|
-
|
|
16381
|
-
action: (env) => env.startCellEdition(`=MIN(`),
|
|
17090
|
+
.addChild("cut", ["edit"], {
|
|
17091
|
+
...cut,
|
|
16382
17092
|
sequence: 40,
|
|
16383
|
-
separator: true,
|
|
16384
17093
|
})
|
|
16385
|
-
.addChild("
|
|
16386
|
-
|
|
17094
|
+
.addChild("paste", ["edit"], {
|
|
17095
|
+
...paste,
|
|
16387
17096
|
sequence: 50,
|
|
16388
17097
|
})
|
|
16389
|
-
.addChild("
|
|
16390
|
-
|
|
16391
|
-
|
|
17098
|
+
.addChild("paste_special", ["edit"], {
|
|
17099
|
+
...pasteSpecial,
|
|
17100
|
+
sequence: 60,
|
|
17101
|
+
separator: true,
|
|
16392
17102
|
})
|
|
16393
|
-
.addChild("
|
|
16394
|
-
|
|
16395
|
-
|
|
16396
|
-
return categories.sort().map((category, i) => {
|
|
16397
|
-
const functionsInCategory = Object.keys(functions).filter((key) => functions[key].category === category);
|
|
16398
|
-
return {
|
|
16399
|
-
name: category,
|
|
16400
|
-
sequence: 60 + i * 10,
|
|
16401
|
-
children: createFormulaFunctionMenuItems(functionsInCategory),
|
|
16402
|
-
};
|
|
16403
|
-
});
|
|
17103
|
+
.addChild("paste_special_value", ["edit", "paste_special"], {
|
|
17104
|
+
...pasteSpecialValue,
|
|
17105
|
+
sequence: 10,
|
|
16404
17106
|
})
|
|
16405
|
-
.addChild("
|
|
16406
|
-
|
|
17107
|
+
.addChild("paste_special_format", ["edit", "paste_special"], {
|
|
17108
|
+
...pasteSpecialFormat,
|
|
17109
|
+
sequence: 20,
|
|
17110
|
+
})
|
|
17111
|
+
.addChild("find_and_replace", ["edit"], {
|
|
17112
|
+
...findAndReplace,
|
|
17113
|
+
sequence: 65,
|
|
16407
17114
|
separator: true,
|
|
17115
|
+
})
|
|
17116
|
+
.addChild("edit_delete_cell_values", ["edit"], {
|
|
17117
|
+
...deleteValues,
|
|
16408
17118
|
sequence: 70,
|
|
16409
|
-
action: INSERT_LINK,
|
|
16410
17119
|
})
|
|
16411
|
-
.addChild("
|
|
16412
|
-
|
|
17120
|
+
.addChild("edit_delete_row", ["edit"], {
|
|
17121
|
+
...deleteRows,
|
|
16413
17122
|
sequence: 80,
|
|
16414
|
-
|
|
16415
|
-
|
|
17123
|
+
})
|
|
17124
|
+
.addChild("edit_delete_column", ["edit"], {
|
|
17125
|
+
...deleteCols,
|
|
17126
|
+
sequence: 90,
|
|
17127
|
+
})
|
|
17128
|
+
.addChild("edit_delete_cell_shift_up", ["edit"], {
|
|
17129
|
+
...deleteCellShiftUp,
|
|
17130
|
+
sequence: 93,
|
|
17131
|
+
})
|
|
17132
|
+
.addChild("edit_delete_cell_shift_left", ["edit"], {
|
|
17133
|
+
...deleteCellShiftLeft,
|
|
17134
|
+
sequence: 97,
|
|
17135
|
+
})
|
|
17136
|
+
.addChild("edit_unhide_columns", ["edit"], {
|
|
17137
|
+
...unhideAllCols,
|
|
17138
|
+
sequence: 100,
|
|
17139
|
+
})
|
|
17140
|
+
.addChild("edit_unhide_rows", ["edit"], {
|
|
17141
|
+
...unhideAllRows,
|
|
17142
|
+
sequence: 100,
|
|
17143
|
+
})
|
|
17144
|
+
// ---------------------------------------------------------------------
|
|
17145
|
+
// VIEW MENU ITEMS
|
|
17146
|
+
// ---------------------------------------------------------------------
|
|
17147
|
+
.add("view", {
|
|
17148
|
+
name: _lt("View"),
|
|
17149
|
+
sequence: 30,
|
|
16416
17150
|
})
|
|
16417
17151
|
.addChild("unfreeze_panes", ["view"], {
|
|
16418
|
-
|
|
17152
|
+
...unFreezePane,
|
|
16419
17153
|
sequence: 4,
|
|
16420
|
-
isVisible: (env) => {
|
|
16421
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
16422
|
-
return xSplit + ySplit > 0;
|
|
16423
|
-
},
|
|
16424
|
-
action: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
16425
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
16426
|
-
}),
|
|
16427
17154
|
})
|
|
16428
17155
|
.addChild("freeze_panes", ["view"], {
|
|
16429
|
-
|
|
17156
|
+
...freezePane,
|
|
16430
17157
|
sequence: 5,
|
|
16431
17158
|
separator: true,
|
|
16432
17159
|
})
|
|
16433
17160
|
.addChild("unfreeze_rows", ["view", "freeze_panes"], {
|
|
16434
|
-
|
|
16435
|
-
action: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
16436
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
16437
|
-
}),
|
|
16438
|
-
isReadonlyAllowed: true,
|
|
17161
|
+
...unFreezeRows,
|
|
16439
17162
|
sequence: 5,
|
|
16440
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
16441
17163
|
})
|
|
16442
17164
|
.addChild("freeze_first_row", ["view", "freeze_panes"], {
|
|
16443
|
-
|
|
16444
|
-
action: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
16445
|
-
isReadonlyAllowed: true,
|
|
17165
|
+
...freezeFirstRow,
|
|
16446
17166
|
sequence: 10,
|
|
16447
17167
|
})
|
|
16448
17168
|
.addChild("freeze_second_row", ["view", "freeze_panes"], {
|
|
16449
|
-
|
|
16450
|
-
action: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
16451
|
-
isReadonlyAllowed: true,
|
|
17169
|
+
...freezeSecondRow,
|
|
16452
17170
|
sequence: 15,
|
|
16453
17171
|
})
|
|
16454
17172
|
.addChild("freeze_current_row", ["view", "freeze_panes"], {
|
|
16455
|
-
|
|
16456
|
-
action: (env) => {
|
|
16457
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
16458
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
16459
|
-
},
|
|
16460
|
-
isReadonlyAllowed: true,
|
|
17173
|
+
...freezeCurrentRow,
|
|
16461
17174
|
sequence: 20,
|
|
16462
17175
|
separator: true,
|
|
16463
17176
|
})
|
|
16464
17177
|
.addChild("unfreeze_columns", ["view", "freeze_panes"], {
|
|
16465
|
-
|
|
16466
|
-
action: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
16467
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
16468
|
-
}),
|
|
16469
|
-
isReadonlyAllowed: true,
|
|
17178
|
+
...unFreezeCols,
|
|
16470
17179
|
sequence: 25,
|
|
16471
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
16472
17180
|
})
|
|
16473
17181
|
.addChild("freeze_first_col", ["view", "freeze_panes"], {
|
|
16474
|
-
|
|
16475
|
-
action: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
16476
|
-
isReadonlyAllowed: true,
|
|
17182
|
+
...freezeFirstCol,
|
|
16477
17183
|
sequence: 30,
|
|
16478
17184
|
})
|
|
16479
17185
|
.addChild("freeze_second_col", ["view", "freeze_panes"], {
|
|
16480
|
-
|
|
16481
|
-
action: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
16482
|
-
isReadonlyAllowed: true,
|
|
17186
|
+
...freezeSecondCol,
|
|
16483
17187
|
sequence: 35,
|
|
16484
17188
|
})
|
|
16485
17189
|
.addChild("freeze_current_col", ["view", "freeze_panes"], {
|
|
16486
|
-
|
|
16487
|
-
action: (env) => {
|
|
16488
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
16489
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
16490
|
-
},
|
|
16491
|
-
isReadonlyAllowed: true,
|
|
17190
|
+
...freezeCurrentCol,
|
|
16492
17191
|
sequence: 40,
|
|
16493
17192
|
})
|
|
16494
17193
|
.addChild("view_gridlines", ["view"], {
|
|
16495
|
-
|
|
16496
|
-
? _lt("Hide gridlines")
|
|
16497
|
-
: _lt("Show gridlines"),
|
|
16498
|
-
action: SET_GRID_LINES_VISIBILITY_ACTION,
|
|
17194
|
+
...viewGridlines,
|
|
16499
17195
|
sequence: 10,
|
|
16500
17196
|
})
|
|
16501
17197
|
.addChild("view_formulas", ["view"], {
|
|
16502
|
-
|
|
16503
|
-
action: SET_FORMULA_VISIBILITY_ACTION,
|
|
16504
|
-
isReadonlyAllowed: true,
|
|
17198
|
+
...viewFormulas,
|
|
16505
17199
|
sequence: 15,
|
|
16506
17200
|
})
|
|
16507
|
-
|
|
16508
|
-
|
|
16509
|
-
|
|
16510
|
-
|
|
17201
|
+
// ---------------------------------------------------------------------
|
|
17202
|
+
// INSERT MENU ITEMS
|
|
17203
|
+
// ---------------------------------------------------------------------
|
|
17204
|
+
.add("insert", {
|
|
17205
|
+
name: _lt("Insert"),
|
|
17206
|
+
sequence: 40,
|
|
16511
17207
|
})
|
|
16512
|
-
.addChild("
|
|
16513
|
-
|
|
17208
|
+
.addChild("insert_row_before", ["insert"], {
|
|
17209
|
+
...topBarInsertRowsBefore,
|
|
16514
17210
|
sequence: 10,
|
|
16515
|
-
separator: true,
|
|
16516
|
-
action: FORMAT_AUTOMATIC_ACTION,
|
|
16517
17211
|
})
|
|
16518
|
-
.addChild("
|
|
16519
|
-
|
|
16520
|
-
description: "1,000.12",
|
|
17212
|
+
.addChild("insert_row_after", ["insert"], {
|
|
17213
|
+
...topBarInsertRowsAfter,
|
|
16521
17214
|
sequence: 20,
|
|
16522
|
-
|
|
17215
|
+
separator: true,
|
|
16523
17216
|
})
|
|
16524
|
-
.addChild("
|
|
16525
|
-
|
|
16526
|
-
description: "10.12%",
|
|
17217
|
+
.addChild("insert_column_before", ["insert"], {
|
|
17218
|
+
...topBarInsertColsBefore,
|
|
16527
17219
|
sequence: 30,
|
|
16528
|
-
separator: true,
|
|
16529
|
-
action: FORMAT_PERCENT_ACTION,
|
|
16530
17220
|
})
|
|
16531
|
-
.addChild("
|
|
16532
|
-
|
|
16533
|
-
|
|
16534
|
-
|
|
16535
|
-
action: FORMAT_CURRENCY_ACTION,
|
|
17221
|
+
.addChild("insert_column_after", ["insert"], {
|
|
17222
|
+
...topBarInsertColsAfter,
|
|
17223
|
+
sequence: 40,
|
|
17224
|
+
separator: true,
|
|
16536
17225
|
})
|
|
16537
|
-
.addChild("
|
|
16538
|
-
|
|
16539
|
-
|
|
16540
|
-
sequence: 38,
|
|
16541
|
-
action: FORMAT_CURRENCY_ROUNDED_ACTION,
|
|
17226
|
+
.addChild("insert_insert_cell_shift_down", ["insert"], {
|
|
17227
|
+
...insertCellShiftDown,
|
|
17228
|
+
sequence: 43,
|
|
16542
17229
|
})
|
|
16543
|
-
.addChild("
|
|
16544
|
-
|
|
16545
|
-
sequence:
|
|
17230
|
+
.addChild("insert_insert_cell_shift_right", ["insert"], {
|
|
17231
|
+
...insertCellShiftRight,
|
|
17232
|
+
sequence: 47,
|
|
16546
17233
|
separator: true,
|
|
16547
|
-
isVisible: (env) => env.loadCurrencies !== undefined,
|
|
16548
|
-
action: OPEN_CUSTOM_CURRENCY_SIDEPANEL_ACTION,
|
|
16549
|
-
})
|
|
16550
|
-
.addChild("format_number_date", ["format", "format_number"], {
|
|
16551
|
-
name: NumberFormatTerms.Date,
|
|
16552
|
-
description: "9/26/2008",
|
|
16553
|
-
sequence: 40,
|
|
16554
|
-
action: FORMAT_DATE_ACTION,
|
|
16555
17234
|
})
|
|
16556
|
-
.addChild("
|
|
16557
|
-
|
|
16558
|
-
description: "10:43:00 PM",
|
|
17235
|
+
.addChild("insert_chart", ["insert"], {
|
|
17236
|
+
...insertChart,
|
|
16559
17237
|
sequence: 50,
|
|
16560
|
-
action: FORMAT_TIME_ACTION,
|
|
16561
17238
|
})
|
|
16562
|
-
.addChild("
|
|
16563
|
-
|
|
16564
|
-
|
|
17239
|
+
.addChild("insert_image", ["insert"], {
|
|
17240
|
+
...insertImage,
|
|
17241
|
+
sequence: 55,
|
|
17242
|
+
})
|
|
17243
|
+
.addChild("insert_function", ["insert"], {
|
|
17244
|
+
...insertFunction,
|
|
16565
17245
|
sequence: 60,
|
|
16566
|
-
action: FORMAT_DATE_TIME_ACTION,
|
|
16567
17246
|
})
|
|
16568
|
-
.addChild("
|
|
16569
|
-
|
|
16570
|
-
|
|
17247
|
+
.addChild("insert_function_sum", ["insert", "insert_function"], {
|
|
17248
|
+
...insertFunctionSum,
|
|
17249
|
+
sequence: 0,
|
|
17250
|
+
})
|
|
17251
|
+
.addChild("insert_function_average", ["insert", "insert_function"], {
|
|
17252
|
+
...insertFunctionAverage,
|
|
17253
|
+
sequence: 10,
|
|
17254
|
+
})
|
|
17255
|
+
.addChild("insert_function_count", ["insert", "insert_function"], {
|
|
17256
|
+
...insertFunctionCount,
|
|
17257
|
+
sequence: 20,
|
|
17258
|
+
})
|
|
17259
|
+
.addChild("insert_function_max", ["insert", "insert_function"], {
|
|
17260
|
+
...insertFunctionMax,
|
|
17261
|
+
sequence: 30,
|
|
17262
|
+
})
|
|
17263
|
+
.addChild("insert_function_min", ["insert", "insert_function"], {
|
|
17264
|
+
...insertFunctionMin,
|
|
17265
|
+
sequence: 40,
|
|
17266
|
+
separator: true,
|
|
17267
|
+
})
|
|
17268
|
+
.addChild("categorie_function_all", ["insert", "insert_function"], {
|
|
17269
|
+
...categorieFunctionAll,
|
|
17270
|
+
sequence: 50,
|
|
17271
|
+
})
|
|
17272
|
+
.addChild("categories_function_list", ["insert", "insert_function"], categoriesFunctionListMenuBuilder)
|
|
17273
|
+
.addChild("insert_link", ["insert"], {
|
|
17274
|
+
...insertLink,
|
|
17275
|
+
separator: true,
|
|
16571
17276
|
sequence: 70,
|
|
17277
|
+
})
|
|
17278
|
+
.addChild("insert_sheet", ["insert"], {
|
|
17279
|
+
...insertSheet,
|
|
17280
|
+
sequence: 80,
|
|
17281
|
+
separator: true,
|
|
17282
|
+
})
|
|
17283
|
+
// ---------------------------------------------------------------------
|
|
17284
|
+
// FORMAT MENU ITEMS
|
|
17285
|
+
// ---------------------------------------------------------------------
|
|
17286
|
+
.add("format", { name: _lt("Format"), sequence: 50 })
|
|
17287
|
+
.addChild("format_number", ["format"], {
|
|
17288
|
+
...formatNumberMenuItemSpec,
|
|
17289
|
+
name: _lt("Number"),
|
|
17290
|
+
sequence: 10,
|
|
16572
17291
|
separator: true,
|
|
16573
|
-
action: FORMAT_DURATION_ACTION,
|
|
16574
17292
|
})
|
|
16575
17293
|
.addChild("format_bold", ["format"], {
|
|
16576
|
-
|
|
17294
|
+
...formatBold,
|
|
16577
17295
|
sequence: 20,
|
|
16578
|
-
description: "Ctrl+B",
|
|
16579
|
-
action: FORMAT_BOLD_ACTION,
|
|
16580
17296
|
})
|
|
16581
17297
|
.addChild("format_italic", ["format"], {
|
|
16582
|
-
|
|
17298
|
+
...formatItalic,
|
|
16583
17299
|
sequence: 30,
|
|
16584
|
-
description: "Ctrl+I",
|
|
16585
|
-
action: FORMAT_ITALIC_ACTION,
|
|
16586
17300
|
})
|
|
16587
17301
|
.addChild("format_underline", ["format"], {
|
|
16588
|
-
|
|
16589
|
-
description: "Ctrl+U",
|
|
17302
|
+
...formatUnderline,
|
|
16590
17303
|
sequence: 40,
|
|
16591
|
-
action: FORMAT_UNDERLINE_ACTION,
|
|
16592
17304
|
})
|
|
16593
17305
|
.addChild("format_strikethrough", ["format"], {
|
|
16594
|
-
|
|
17306
|
+
...formatStrikethrough,
|
|
16595
17307
|
sequence: 50,
|
|
16596
|
-
action: FORMAT_STRIKETHROUGH_ACTION,
|
|
16597
17308
|
separator: true,
|
|
16598
17309
|
})
|
|
16599
17310
|
.addChild("format_font_size", ["format"], {
|
|
16600
|
-
|
|
17311
|
+
...formatFontSize,
|
|
16601
17312
|
sequence: 60,
|
|
16602
17313
|
separator: true,
|
|
16603
17314
|
})
|
|
16604
17315
|
.addChild("format_alignment", ["format"], {
|
|
16605
|
-
|
|
17316
|
+
...formatAlignment,
|
|
16606
17317
|
sequence: 70,
|
|
16607
17318
|
})
|
|
16608
17319
|
.addChild("format_alignment_left", ["format", "format_alignment"], {
|
|
16609
|
-
|
|
17320
|
+
...formatAlignmentLeft,
|
|
16610
17321
|
sequence: 10,
|
|
16611
|
-
action: (env) => setStyle(env, { align: "left" }),
|
|
16612
17322
|
})
|
|
16613
17323
|
.addChild("format_alignment_center", ["format", "format_alignment"], {
|
|
16614
|
-
|
|
17324
|
+
...formatAlignmentCenter,
|
|
16615
17325
|
sequence: 20,
|
|
16616
|
-
action: (env) => setStyle(env, { align: "center" }),
|
|
16617
17326
|
})
|
|
16618
17327
|
.addChild("format_alignment_right", ["format", "format_alignment"], {
|
|
16619
|
-
|
|
17328
|
+
...formatAlignmentRight,
|
|
16620
17329
|
sequence: 30,
|
|
16621
|
-
action: (env) => setStyle(env, { align: "right" }),
|
|
16622
17330
|
separator: true,
|
|
16623
17331
|
})
|
|
16624
17332
|
.addChild("format_alignment_top", ["format", "format_alignment"], {
|
|
16625
|
-
|
|
17333
|
+
...formatAlignmentTop,
|
|
16626
17334
|
sequence: 40,
|
|
16627
|
-
action: (env) => setStyle(env, { verticalAlign: "top" }),
|
|
16628
17335
|
})
|
|
16629
17336
|
.addChild("format_alignment_middle", ["format", "format_alignment"], {
|
|
16630
|
-
|
|
17337
|
+
...formatAlignmentMiddle,
|
|
16631
17338
|
sequence: 50,
|
|
16632
|
-
action: (env) => setStyle(env, { verticalAlign: "middle" }),
|
|
16633
17339
|
})
|
|
16634
17340
|
.addChild("format_alignment_bottom", ["format", "format_alignment"], {
|
|
16635
|
-
|
|
17341
|
+
...formatAlignmentBottom,
|
|
16636
17342
|
sequence: 60,
|
|
16637
|
-
action: (env) => setStyle(env, { verticalAlign: "bottom" }),
|
|
16638
17343
|
separator: true,
|
|
16639
17344
|
})
|
|
16640
17345
|
.addChild("format_wrapping", ["format"], {
|
|
16641
|
-
|
|
17346
|
+
...formatWrapping,
|
|
16642
17347
|
sequence: 80,
|
|
16643
17348
|
separator: true,
|
|
16644
17349
|
})
|
|
16645
17350
|
.addChild("format_wrapping_overflow", ["format", "format_wrapping"], {
|
|
16646
|
-
|
|
17351
|
+
...formatWrappingOverflow,
|
|
16647
17352
|
sequence: 10,
|
|
16648
|
-
action: (env) => setStyle(env, { wrapping: "overflow" }),
|
|
16649
17353
|
})
|
|
16650
17354
|
.addChild("format_wrapping_wrap", ["format", "format_wrapping"], {
|
|
16651
|
-
|
|
17355
|
+
...formatWrappingWrap,
|
|
16652
17356
|
sequence: 20,
|
|
16653
|
-
action: (env) => setStyle(env, { wrapping: "wrap" }),
|
|
16654
17357
|
})
|
|
16655
17358
|
.addChild("format_wrapping_clip", ["format", "format_wrapping"], {
|
|
16656
|
-
|
|
17359
|
+
...formatWrappingClip,
|
|
16657
17360
|
sequence: 30,
|
|
16658
|
-
action: (env) => setStyle(env, { wrapping: "clip" }),
|
|
16659
17361
|
})
|
|
16660
17362
|
.addChild("format_cf", ["format"], {
|
|
16661
|
-
|
|
17363
|
+
...formatCF,
|
|
16662
17364
|
sequence: 90,
|
|
16663
|
-
action: OPEN_CF_SIDEPANEL_ACTION,
|
|
16664
17365
|
separator: true,
|
|
16665
17366
|
})
|
|
16666
17367
|
.addChild("format_clearFormat", ["format"], {
|
|
16667
|
-
|
|
17368
|
+
...clearFormat,
|
|
16668
17369
|
sequence: 100,
|
|
16669
|
-
action: FORMAT_CLEARFORMAT_ACTION,
|
|
16670
17370
|
separator: true,
|
|
17371
|
+
})
|
|
17372
|
+
// ---------------------------------------------------------------------
|
|
17373
|
+
// DATA MENU ITEMS
|
|
17374
|
+
// ---------------------------------------------------------------------
|
|
17375
|
+
.add("data", {
|
|
17376
|
+
name: _lt("Data"),
|
|
17377
|
+
sequence: 60,
|
|
17378
|
+
})
|
|
17379
|
+
.addChild("sort_range", ["data"], {
|
|
17380
|
+
...sortRange,
|
|
17381
|
+
sequence: 20,
|
|
17382
|
+
separator: true,
|
|
17383
|
+
})
|
|
17384
|
+
.addChild("sort_ascending", ["data", "sort_range"], {
|
|
17385
|
+
...sortAscending,
|
|
17386
|
+
sequence: 10,
|
|
17387
|
+
})
|
|
17388
|
+
.addChild("sort_descending", ["data", "sort_range"], {
|
|
17389
|
+
...sortDescending,
|
|
17390
|
+
sequence: 20,
|
|
16671
17391
|
})
|
|
16672
17392
|
.addChild("add_data_filter", ["data"], {
|
|
16673
|
-
|
|
17393
|
+
...addDataFilter,
|
|
16674
17394
|
sequence: 10,
|
|
16675
|
-
action: FILTERS_CREATE_FILTER_TABLE,
|
|
16676
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
16677
|
-
isEnabled: (env) => SELECTION_IS_CONTINUOUS(env),
|
|
16678
17395
|
})
|
|
16679
17396
|
.addChild("remove_data_filter", ["data"], {
|
|
16680
|
-
|
|
17397
|
+
...removeDataFilter,
|
|
16681
17398
|
sequence: 10,
|
|
16682
|
-
|
|
16683
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
16684
|
-
});
|
|
16685
|
-
// Font-sizes
|
|
16686
|
-
for (let fs of FONT_SIZES) {
|
|
16687
|
-
topbarMenuRegistry.addChild(`format_font_size_${fs}`, ["format", "format_font_size"], {
|
|
16688
|
-
name: fs.toString(),
|
|
16689
|
-
sequence: fs,
|
|
16690
|
-
action: (env) => setStyle(env, { fontSize: fs }),
|
|
16691
|
-
});
|
|
16692
|
-
}
|
|
16693
|
-
function createFormulaFunctionMenuItems(fnNames) {
|
|
16694
|
-
return fnNames.sort().map((fnName, i) => {
|
|
16695
|
-
return {
|
|
16696
|
-
name: fnName,
|
|
16697
|
-
sequence: i * 10,
|
|
16698
|
-
action: (env) => env.startCellEdition(`=${fnName}(`),
|
|
16699
|
-
};
|
|
16700
|
-
});
|
|
16701
|
-
}
|
|
17399
|
+
});
|
|
16702
17400
|
|
|
16703
17401
|
class OTRegistry extends Registry {
|
|
16704
17402
|
/**
|
|
@@ -17281,8 +17979,9 @@ ColorPicker.props = {
|
|
|
17281
17979
|
|
|
17282
17980
|
css /* scss */ `
|
|
17283
17981
|
.o-color-picker-widget {
|
|
17284
|
-
display:
|
|
17982
|
+
display: flex;
|
|
17285
17983
|
position: relative;
|
|
17984
|
+
align-items: center;
|
|
17286
17985
|
|
|
17287
17986
|
.o-color-picker-button-style {
|
|
17288
17987
|
display: flex;
|
|
@@ -17298,6 +17997,7 @@ css /* scss */ `
|
|
|
17298
17997
|
}
|
|
17299
17998
|
|
|
17300
17999
|
.o-color-picker-button {
|
|
18000
|
+
height: 30px;
|
|
17301
18001
|
> span {
|
|
17302
18002
|
border-bottom: 4px solid;
|
|
17303
18003
|
height: 16px;
|
|
@@ -21316,6 +22016,10 @@ GridOverlay.props = {
|
|
|
21316
22016
|
};
|
|
21317
22017
|
|
|
21318
22018
|
class GridPopover extends owl.Component {
|
|
22019
|
+
constructor() {
|
|
22020
|
+
super(...arguments);
|
|
22021
|
+
this.zIndex = ComponentsImportance.GridPopover;
|
|
22022
|
+
}
|
|
21319
22023
|
get cellPopover() {
|
|
21320
22024
|
const popover = this.env.model.getters.getCellPopover(this.props.hoveredCell);
|
|
21321
22025
|
if (!popover.isOpen) {
|
|
@@ -33178,48 +33882,66 @@ class InternalViewport {
|
|
|
33178
33882
|
this.adjustPositionY(row);
|
|
33179
33883
|
}
|
|
33180
33884
|
}
|
|
33181
|
-
adjustPositionX(
|
|
33885
|
+
adjustPositionX(targetCol) {
|
|
33182
33886
|
const sheetId = this.sheetId;
|
|
33183
|
-
const {
|
|
33184
|
-
|
|
33185
|
-
|
|
33186
|
-
|
|
33187
|
-
|
|
33188
|
-
this.adjustViewportZoneX();
|
|
33189
|
-
}
|
|
33190
|
-
while (col < this.left) {
|
|
33191
|
-
let leftCol;
|
|
33192
|
-
for (leftCol = this.left; leftCol >= 0; leftCol--) {
|
|
33193
|
-
if (!this.getters.isColHidden(sheetId, leftCol)) {
|
|
33887
|
+
const { end } = this.getters.getColDimensions(sheetId, targetCol);
|
|
33888
|
+
const maxCol = this.getters.getNumberCols(sheetId);
|
|
33889
|
+
if (this.offsetX + this.offsetCorrectionX + this.viewportWidth < end) {
|
|
33890
|
+
for (let col = this.left; this.offsetX + this.offsetCorrectionX + this.viewportWidth < end; col++) {
|
|
33891
|
+
if (col > maxCol) {
|
|
33194
33892
|
break;
|
|
33195
33893
|
}
|
|
33894
|
+
if (this.getters.isColHidden(sheetId, col)) {
|
|
33895
|
+
continue;
|
|
33896
|
+
}
|
|
33897
|
+
this.offsetX = this.getters.getColDimensions(sheetId, col).end - this.offsetCorrectionX;
|
|
33898
|
+
this.offsetScrollbarX = this.offsetX;
|
|
33899
|
+
this.adjustViewportZoneX();
|
|
33900
|
+
}
|
|
33901
|
+
}
|
|
33902
|
+
else if (this.left > targetCol) {
|
|
33903
|
+
for (let col = this.left; col >= targetCol; col--) {
|
|
33904
|
+
if (col < 0) {
|
|
33905
|
+
break;
|
|
33906
|
+
}
|
|
33907
|
+
if (this.getters.isColHidden(sheetId, col)) {
|
|
33908
|
+
continue;
|
|
33909
|
+
}
|
|
33910
|
+
this.offsetX = this.getters.getColDimensions(sheetId, col).start - this.offsetCorrectionX;
|
|
33911
|
+
this.offsetScrollbarX = this.offsetX;
|
|
33912
|
+
this.adjustViewportZoneX();
|
|
33196
33913
|
}
|
|
33197
|
-
this.offsetX =
|
|
33198
|
-
this.getters.getColDimensions(sheetId, leftCol - 1).start - this.offsetCorrectionX;
|
|
33199
|
-
this.offsetScrollbarX = this.offsetX;
|
|
33200
|
-
this.adjustViewportZoneX();
|
|
33201
33914
|
}
|
|
33202
33915
|
}
|
|
33203
|
-
adjustPositionY(
|
|
33916
|
+
adjustPositionY(targetRow) {
|
|
33204
33917
|
const sheetId = this.sheetId;
|
|
33205
|
-
|
|
33206
|
-
|
|
33207
|
-
|
|
33208
|
-
|
|
33209
|
-
|
|
33210
|
-
|
|
33211
|
-
|
|
33212
|
-
|
|
33213
|
-
|
|
33214
|
-
|
|
33215
|
-
|
|
33918
|
+
const { end } = this.getters.getRowDimensions(sheetId, targetRow);
|
|
33919
|
+
const maxRow = this.getters.getNumberRows(sheetId);
|
|
33920
|
+
if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) {
|
|
33921
|
+
for (let row = this.top; this.offsetY + this.viewportHeight + this.offsetCorrectionY < end; row++) {
|
|
33922
|
+
if (row > maxRow) {
|
|
33923
|
+
break;
|
|
33924
|
+
}
|
|
33925
|
+
if (this.getters.isRowHidden(sheetId, row)) {
|
|
33926
|
+
continue;
|
|
33927
|
+
}
|
|
33928
|
+
this.offsetY = this.getters.getRowDimensions(sheetId, row).end - this.offsetCorrectionY;
|
|
33929
|
+
this.offsetScrollbarY = this.offsetY;
|
|
33930
|
+
this.adjustViewportZoneY();
|
|
33931
|
+
}
|
|
33932
|
+
}
|
|
33933
|
+
else if (this.top > targetRow) {
|
|
33934
|
+
for (let row = this.top; row >= targetRow; row--) {
|
|
33935
|
+
if (row < 0) {
|
|
33216
33936
|
break;
|
|
33217
33937
|
}
|
|
33938
|
+
if (this.getters.isRowHidden(sheetId, row)) {
|
|
33939
|
+
continue;
|
|
33940
|
+
}
|
|
33941
|
+
this.offsetY = this.getters.getRowDimensions(sheetId, row).start - this.offsetCorrectionY;
|
|
33942
|
+
this.offsetScrollbarY = this.offsetY;
|
|
33943
|
+
this.adjustViewportZoneY();
|
|
33218
33944
|
}
|
|
33219
|
-
this.offsetY =
|
|
33220
|
-
this.getters.getRowDimensions(sheetId, topRow - 1).start - this.offsetCorrectionY;
|
|
33221
|
-
this.offsetScrollbarY = this.offsetY;
|
|
33222
|
-
this.adjustViewportZoneY();
|
|
33223
33945
|
}
|
|
33224
33946
|
}
|
|
33225
33947
|
setViewportOffset(offsetX, offsetY) {
|
|
@@ -33412,8 +34134,8 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
33412
34134
|
* In the absence of a component (standalone model), is it mandatory to set reasonable default values
|
|
33413
34135
|
* to ensure the correct operation of this plugin.
|
|
33414
34136
|
*/
|
|
33415
|
-
this.sheetViewWidth =
|
|
33416
|
-
this.sheetViewHeight =
|
|
34137
|
+
this.sheetViewWidth = getDefaultSheetViewSize();
|
|
34138
|
+
this.sheetViewHeight = getDefaultSheetViewSize();
|
|
33417
34139
|
this.gridOffsetX = 0;
|
|
33418
34140
|
this.gridOffsetY = 0;
|
|
33419
34141
|
this.sheetsWithDirtyViewports = new Set();
|
|
@@ -39844,7 +40566,7 @@ const coreViewsPluginRegistry = new Registry()
|
|
|
39844
40566
|
const clickableCellRegistry = new Registry();
|
|
39845
40567
|
clickableCellRegistry.add("link", {
|
|
39846
40568
|
condition: (position, env) => !!env.model.getters.getEvaluatedCell(position).link,
|
|
39847
|
-
|
|
40569
|
+
execute: (position, env) => openLink(env.model.getters.getEvaluatedCell(position).link, env),
|
|
39848
40570
|
sequence: 5,
|
|
39849
40571
|
});
|
|
39850
40572
|
|
|
@@ -40301,7 +41023,7 @@ class BottomBarStatistic extends owl.Component {
|
|
|
40301
41023
|
name: this.getComposedFnName(fnName, fnValue),
|
|
40302
41024
|
sequence: i,
|
|
40303
41025
|
isReadonlyAllowed: true,
|
|
40304
|
-
|
|
41026
|
+
execute: () => {
|
|
40305
41027
|
this.selectedStatisticFn = fnName;
|
|
40306
41028
|
},
|
|
40307
41029
|
});
|
|
@@ -40469,10 +41191,6 @@ css /* scss */ `
|
|
|
40469
41191
|
font-size: 15px;
|
|
40470
41192
|
border-top: 1px solid lightgrey;
|
|
40471
41193
|
|
|
40472
|
-
.o-add-sheet.disabled {
|
|
40473
|
-
cursor: not-allowed;
|
|
40474
|
-
}
|
|
40475
|
-
|
|
40476
41194
|
.o-sheet-item {
|
|
40477
41195
|
cursor: pointer;
|
|
40478
41196
|
&:hover {
|
|
@@ -40578,7 +41296,7 @@ class BottomBar extends owl.Component {
|
|
|
40578
41296
|
sequence: i,
|
|
40579
41297
|
isReadonlyAllowed: true,
|
|
40580
41298
|
textColor: sheet.isVisible ? undefined : "grey",
|
|
40581
|
-
|
|
41299
|
+
execute: (env) => {
|
|
40582
41300
|
env.model.dispatch("ACTIVATE_SHEET", { sheetIdFrom: from, sheetIdTo: sheetId });
|
|
40583
41301
|
},
|
|
40584
41302
|
});
|
|
@@ -40835,7 +41553,7 @@ class SpreadsheetDashboard extends owl.Component {
|
|
|
40835
41553
|
getClickableAction(position) {
|
|
40836
41554
|
for (const items of clickableCellRegistry.getAll().sort((a, b) => a.sequence - b.sequence)) {
|
|
40837
41555
|
if (items.condition(position, this.env)) {
|
|
40838
|
-
return items.
|
|
41556
|
+
return items.execute;
|
|
40839
41557
|
}
|
|
40840
41558
|
}
|
|
40841
41559
|
return false;
|
|
@@ -41063,21 +41781,66 @@ SidePanel.props = {
|
|
|
41063
41781
|
onCloseSidePanel: Function,
|
|
41064
41782
|
};
|
|
41065
41783
|
|
|
41066
|
-
|
|
41067
|
-
|
|
41068
|
-
|
|
41069
|
-
|
|
41070
|
-
|
|
41071
|
-
|
|
41072
|
-
|
|
41073
|
-
|
|
41784
|
+
css /* scss */ `
|
|
41785
|
+
.o-menu-item-button {
|
|
41786
|
+
display: flex;
|
|
41787
|
+
justify-content: center;
|
|
41788
|
+
align-items: center;
|
|
41789
|
+
margin: 2px;
|
|
41790
|
+
padding: 0px 3px;
|
|
41791
|
+
border-radius: 2px;
|
|
41792
|
+
min-width: 20px;
|
|
41793
|
+
}
|
|
41794
|
+
.o-disabled {
|
|
41795
|
+
opacity: 0.6;
|
|
41796
|
+
cursor: default;
|
|
41797
|
+
}
|
|
41798
|
+
`;
|
|
41799
|
+
class ActionButton extends owl.Component {
|
|
41800
|
+
constructor() {
|
|
41801
|
+
super(...arguments);
|
|
41802
|
+
this.actionButton = createAction(this.props.action);
|
|
41074
41803
|
}
|
|
41075
|
-
|
|
41076
|
-
|
|
41077
|
-
env.model.dispatch("ADD_MERGE", { sheetId, target, force: true });
|
|
41078
|
-
});
|
|
41804
|
+
setup() {
|
|
41805
|
+
owl.onWillUpdateProps(() => (this.actionButton = createAction(this.props.action)));
|
|
41079
41806
|
}
|
|
41080
|
-
|
|
41807
|
+
get isVisible() {
|
|
41808
|
+
return this.actionButton.isVisible(this.env);
|
|
41809
|
+
}
|
|
41810
|
+
get isEnabled() {
|
|
41811
|
+
return this.actionButton.isEnabled(this.env);
|
|
41812
|
+
}
|
|
41813
|
+
get isActive() {
|
|
41814
|
+
var _a, _b;
|
|
41815
|
+
return (_b = (_a = this.actionButton).isActive) === null || _b === void 0 ? void 0 : _b.call(_a, this.env);
|
|
41816
|
+
}
|
|
41817
|
+
get title() {
|
|
41818
|
+
const name = this.actionButton.name(this.env);
|
|
41819
|
+
const description = this.actionButton.description;
|
|
41820
|
+
return name + (description ? ` (${description})` : "");
|
|
41821
|
+
}
|
|
41822
|
+
get iconTitle() {
|
|
41823
|
+
return this.actionButton.icon;
|
|
41824
|
+
}
|
|
41825
|
+
onClick(ev) {
|
|
41826
|
+
var _a, _b, _c, _d;
|
|
41827
|
+
if (this.isEnabled) {
|
|
41828
|
+
(_b = (_a = this.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, ev);
|
|
41829
|
+
(_d = (_c = this.actionButton).execute) === null || _d === void 0 ? void 0 : _d.call(_c, this.env);
|
|
41830
|
+
}
|
|
41831
|
+
}
|
|
41832
|
+
get buttonStyle() {
|
|
41833
|
+
if (this.props.selectedColor) {
|
|
41834
|
+
return cssPropertiesToCss({
|
|
41835
|
+
"border-bottom": `4px solid ${this.props.selectedColor}`,
|
|
41836
|
+
height: "16px",
|
|
41837
|
+
"margin-top": "2px",
|
|
41838
|
+
});
|
|
41839
|
+
}
|
|
41840
|
+
return "";
|
|
41841
|
+
}
|
|
41842
|
+
}
|
|
41843
|
+
ActionButton.template = "o-spreadsheet-ActionButton";
|
|
41081
41844
|
|
|
41082
41845
|
const COMPOSER_MAX_HEIGHT = 100;
|
|
41083
41846
|
css /* scss */ `
|
|
@@ -41139,6 +41902,14 @@ css /* scss */ `
|
|
|
41139
41902
|
input::-webkit-inner-spin-button {
|
|
41140
41903
|
-webkit-appearance: none;
|
|
41141
41904
|
}
|
|
41905
|
+
|
|
41906
|
+
.o-text-options > div {
|
|
41907
|
+
line-height: 26px;
|
|
41908
|
+
padding: 3px 12px;
|
|
41909
|
+
&:hover {
|
|
41910
|
+
background-color: rgba(0, 0, 0, 0.08);
|
|
41911
|
+
}
|
|
41912
|
+
}
|
|
41142
41913
|
}
|
|
41143
41914
|
`;
|
|
41144
41915
|
class FontSizeEditor extends owl.Component {
|
|
@@ -41207,41 +41978,6 @@ FontSizeEditor.props = {
|
|
|
41207
41978
|
dropdownStyle: String,
|
|
41208
41979
|
};
|
|
41209
41980
|
|
|
41210
|
-
const FORMATS = [
|
|
41211
|
-
{ name: "automatic", text: NumberFormatTerms.Automatic },
|
|
41212
|
-
{ name: "number", text: NumberFormatTerms.Number, description: "1,000.12", value: "#,##0.00" },
|
|
41213
|
-
{ name: "percent", text: NumberFormatTerms.Percent, description: "10.12%", value: "0.00%" },
|
|
41214
|
-
{
|
|
41215
|
-
name: "currency",
|
|
41216
|
-
text: NumberFormatTerms.Currency,
|
|
41217
|
-
description: "$1,000.12",
|
|
41218
|
-
value: "[$$]#,##0.00",
|
|
41219
|
-
},
|
|
41220
|
-
{
|
|
41221
|
-
name: "currency_rounded",
|
|
41222
|
-
text: NumberFormatTerms.CurrencyRounded,
|
|
41223
|
-
description: "$1,000",
|
|
41224
|
-
value: "[$$]#,##0",
|
|
41225
|
-
},
|
|
41226
|
-
{ name: "date", text: NumberFormatTerms.Date, description: "9/26/2008", value: "m/d/yyyy" },
|
|
41227
|
-
{ name: "time", text: NumberFormatTerms.Time, description: "10:43:00 PM", value: "hh:mm:ss a" },
|
|
41228
|
-
{
|
|
41229
|
-
name: "datetime",
|
|
41230
|
-
text: NumberFormatTerms.DateTime,
|
|
41231
|
-
description: "9/26/2008 22:43:00",
|
|
41232
|
-
value: "m/d/yyyy hh:mm:ss",
|
|
41233
|
-
},
|
|
41234
|
-
{
|
|
41235
|
-
name: "duration",
|
|
41236
|
-
text: NumberFormatTerms.Duration,
|
|
41237
|
-
description: "27:51:38",
|
|
41238
|
-
value: "hhhh:mm:ss",
|
|
41239
|
-
},
|
|
41240
|
-
];
|
|
41241
|
-
const CUSTOM_FORMATS = [
|
|
41242
|
-
{ name: "custom_currency", text: NumberFormatTerms.CustomCurrency, sidePanel: "CustomCurrency" },
|
|
41243
|
-
];
|
|
41244
|
-
const ICONS_COLOR = "#4A4F59";
|
|
41245
41981
|
// If we ever change these colors, make sure the filter tool stays green to match the icon in the grid
|
|
41246
41982
|
const ACTIVE_BG_COLOR = BACKGROUND_HEADER_FILTER_COLOR;
|
|
41247
41983
|
const ACTIVE_FONT_COLOR = FILTERS_COLOR;
|
|
@@ -41306,23 +42042,10 @@ css /* scss */ `
|
|
|
41306
42042
|
|
|
41307
42043
|
/* Toolbar */
|
|
41308
42044
|
.o-toolbar-tools {
|
|
41309
|
-
|
|
41310
|
-
|
|
41311
|
-
|
|
41312
|
-
|
|
41313
|
-
margin: 2px;
|
|
41314
|
-
padding: 0px 3px;
|
|
41315
|
-
border-radius: 2px;
|
|
41316
|
-
min-width: 20px;
|
|
41317
|
-
}
|
|
41318
|
-
|
|
41319
|
-
.o-filter-tool {
|
|
41320
|
-
margin-right: 8px;
|
|
41321
|
-
}
|
|
41322
|
-
|
|
41323
|
-
.o-border-dropdown {
|
|
41324
|
-
padding: 4px;
|
|
41325
|
-
}
|
|
42045
|
+
display: flex;
|
|
42046
|
+
flex-shrink: 0;
|
|
42047
|
+
margin: 0px 6px 0px 16px;
|
|
42048
|
+
cursor: default;
|
|
41326
42049
|
|
|
41327
42050
|
.o-divider {
|
|
41328
42051
|
display: inline-block;
|
|
@@ -41336,59 +42059,28 @@ css /* scss */ `
|
|
|
41336
42059
|
display: flex;
|
|
41337
42060
|
align-items: center;
|
|
41338
42061
|
|
|
41339
|
-
|
|
42062
|
+
> span {
|
|
41340
42063
|
height: 30px;
|
|
41341
42064
|
}
|
|
41342
42065
|
|
|
41343
|
-
.o-text-options > div {
|
|
41344
|
-
line-height: 26px;
|
|
41345
|
-
padding: 3px 12px;
|
|
41346
|
-
&:hover {
|
|
41347
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
41348
|
-
}
|
|
41349
|
-
}
|
|
41350
|
-
|
|
41351
42066
|
.o-dropdown-content {
|
|
41352
42067
|
position: absolute;
|
|
41353
42068
|
top: 100%;
|
|
41354
42069
|
left: 0;
|
|
41355
42070
|
overflow-y: auto;
|
|
41356
42071
|
overflow-x: hidden;
|
|
42072
|
+
padding: 2px;
|
|
41357
42073
|
z-index: ${ComponentsImportance.Dropdown};
|
|
41358
42074
|
box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
|
|
41359
42075
|
background-color: white;
|
|
41360
42076
|
|
|
41361
42077
|
.o-dropdown-line {
|
|
41362
42078
|
display: flex;
|
|
41363
|
-
margin: 1px;
|
|
41364
42079
|
|
|
41365
|
-
|
|
42080
|
+
> span {
|
|
41366
42081
|
padding: 4px;
|
|
41367
|
-
width: 18px;
|
|
41368
|
-
height: 18px;
|
|
41369
|
-
}
|
|
41370
|
-
}
|
|
41371
|
-
|
|
41372
|
-
&.o-format-tool {
|
|
41373
|
-
padding: 5px 0;
|
|
41374
|
-
width: 250px;
|
|
41375
|
-
font-size: 12px;
|
|
41376
|
-
> div {
|
|
41377
|
-
padding: 0 20px;
|
|
41378
|
-
white-space: nowrap;
|
|
41379
|
-
|
|
41380
|
-
&.o-dropdown-active:before {
|
|
41381
|
-
content: "✓";
|
|
41382
|
-
font-weight: bold;
|
|
41383
|
-
position: absolute;
|
|
41384
|
-
left: 5px;
|
|
41385
|
-
}
|
|
41386
42082
|
}
|
|
41387
42083
|
}
|
|
41388
|
-
|
|
41389
|
-
.o-dropdown-align-item {
|
|
41390
|
-
padding: 7px 10px;
|
|
41391
|
-
}
|
|
41392
42084
|
}
|
|
41393
42085
|
}
|
|
41394
42086
|
}
|
|
@@ -41398,24 +42090,20 @@ css /* scss */ `
|
|
|
41398
42090
|
class TopBar extends owl.Component {
|
|
41399
42091
|
constructor() {
|
|
41400
42092
|
super(...arguments);
|
|
41401
|
-
this.commonFormats = FORMATS;
|
|
41402
|
-
this.customFormats = CUSTOM_FORMATS;
|
|
41403
|
-
this.currentFormatName = "automatic";
|
|
41404
|
-
this.style = {};
|
|
41405
42093
|
this.state = owl.useState({
|
|
41406
42094
|
menuState: { isOpen: false, position: null, menuItems: [] },
|
|
41407
42095
|
activeTool: "",
|
|
42096
|
+
fillColor: "#ffffff",
|
|
42097
|
+
textColor: "#000000",
|
|
41408
42098
|
});
|
|
41409
42099
|
this.isSelectingMenu = false;
|
|
41410
42100
|
this.openedEl = null;
|
|
41411
|
-
this.inMerge = false;
|
|
41412
|
-
this.cannotMerge = false;
|
|
41413
|
-
this.undoTool = false;
|
|
41414
|
-
this.redoTool = false;
|
|
41415
|
-
this.paintFormatTool = false;
|
|
41416
|
-
this.fillColor = "#ffffff";
|
|
41417
|
-
this.textColor = "#000000";
|
|
41418
42101
|
this.menus = [];
|
|
42102
|
+
this.EDIT = ACTION_EDIT;
|
|
42103
|
+
this.FORMAT = ACTION_FORMAT;
|
|
42104
|
+
this.VIEW = ACTION_VIEW;
|
|
42105
|
+
this.formatNumberMenuItemSpec = formatNumberMenuItemSpec;
|
|
42106
|
+
this.isntToolbarMenu = false;
|
|
41419
42107
|
}
|
|
41420
42108
|
get dropdownStyle() {
|
|
41421
42109
|
return `max-height:${this.props.dropdownMaxHeight}px`;
|
|
@@ -41445,28 +42133,8 @@ class TopBar extends owl.Component {
|
|
|
41445
42133
|
this.props.onClick();
|
|
41446
42134
|
this.closeMenus();
|
|
41447
42135
|
}
|
|
41448
|
-
toggleStyle(style) {
|
|
41449
|
-
setStyle(this.env, { [style]: !this.style[style] });
|
|
41450
|
-
}
|
|
41451
|
-
toggleFormat(formatName) {
|
|
41452
|
-
const formatter = FORMATS.find((f) => f.name === formatName);
|
|
41453
|
-
const value = (formatter && formatter.value) || "";
|
|
41454
|
-
setFormatter(this.env, value);
|
|
41455
|
-
}
|
|
41456
|
-
toggleHorizontalAlign(align) {
|
|
41457
|
-
setStyle(this.env, { align });
|
|
41458
|
-
this.onClick();
|
|
41459
|
-
}
|
|
41460
|
-
toggleVerticalAlign(verticalAlign) {
|
|
41461
|
-
setStyle(this.env, { verticalAlign });
|
|
41462
|
-
this.onClick();
|
|
41463
|
-
}
|
|
41464
|
-
toggleTextWrapping(wrapping) {
|
|
41465
|
-
setStyle(this.env, { wrapping });
|
|
41466
|
-
this.onClick();
|
|
41467
|
-
}
|
|
41468
42136
|
onMenuMouseOver(menu, ev) {
|
|
41469
|
-
if (this.isSelectingMenu) {
|
|
42137
|
+
if (this.isSelectingMenu && this.isntToolbarMenu) {
|
|
41470
42138
|
this.openMenu(menu, ev);
|
|
41471
42139
|
}
|
|
41472
42140
|
}
|
|
@@ -41477,15 +42145,27 @@ class TopBar extends owl.Component {
|
|
|
41477
42145
|
this.openedEl = isOpen ? null : ev.target;
|
|
41478
42146
|
}
|
|
41479
42147
|
toggleContextMenu(menu, ev) {
|
|
41480
|
-
if (this.state.menuState.isOpen) {
|
|
42148
|
+
if (this.state.menuState.isOpen && this.isntToolbarMenu) {
|
|
41481
42149
|
this.closeMenus();
|
|
41482
42150
|
}
|
|
41483
42151
|
else {
|
|
41484
42152
|
this.openMenu(menu, ev);
|
|
42153
|
+
this.isntToolbarMenu = true;
|
|
42154
|
+
}
|
|
42155
|
+
}
|
|
42156
|
+
toggleToolbarContextMenu(menuSpec, ev) {
|
|
42157
|
+
if (this.state.menuState.isOpen && !this.isntToolbarMenu) {
|
|
42158
|
+
this.closeMenus();
|
|
42159
|
+
}
|
|
42160
|
+
else {
|
|
42161
|
+
const menu = createAction(menuSpec);
|
|
42162
|
+
this.openMenu(menu, ev);
|
|
42163
|
+
this.isntToolbarMenu = false;
|
|
41485
42164
|
}
|
|
41486
42165
|
}
|
|
41487
42166
|
openMenu(menu, ev) {
|
|
41488
|
-
const { left, top, height } = ev.
|
|
42167
|
+
const { left, top, height } = ev.currentTarget.getBoundingClientRect();
|
|
42168
|
+
this.state.activeTool = "";
|
|
41489
42169
|
this.state.menuState.isOpen = true;
|
|
41490
42170
|
this.state.menuState.position = { x: left, y: top + height };
|
|
41491
42171
|
this.state.menuState.menuItems = menu.children(this.env);
|
|
@@ -41502,134 +42182,28 @@ class TopBar extends owl.Component {
|
|
|
41502
42182
|
this.openedEl = null;
|
|
41503
42183
|
}
|
|
41504
42184
|
updateCellState() {
|
|
41505
|
-
const
|
|
41506
|
-
|
|
41507
|
-
this.
|
|
41508
|
-
const { top, left, right, bottom } = this.env.model.getters.getSelectedZone();
|
|
41509
|
-
const { xSplit, ySplit } = this.env.model.getters.getPaneDivisions(sheetId);
|
|
41510
|
-
this.cannotMerge =
|
|
41511
|
-
zones.length > 1 ||
|
|
41512
|
-
(top === bottom && left === right) ||
|
|
41513
|
-
(left < xSplit && xSplit <= right) ||
|
|
41514
|
-
(top < ySplit && ySplit <= bottom);
|
|
41515
|
-
if (!this.cannotMerge) {
|
|
41516
|
-
const zone = this.env.model.getters.expandZone(sheetId, positionToZone({ col, row }));
|
|
41517
|
-
this.inMerge = isEqual(zones[0], zone);
|
|
41518
|
-
}
|
|
41519
|
-
this.undoTool = this.env.model.getters.canUndo();
|
|
41520
|
-
this.redoTool = this.env.model.getters.canRedo();
|
|
41521
|
-
this.paintFormatTool = this.env.model.getters.isPaintingFormat();
|
|
41522
|
-
const cell = this.env.model.getters.getActiveCell();
|
|
41523
|
-
if (cell.format) {
|
|
41524
|
-
const currentFormat = this.commonFormats.find((f) => f.value === cell.format);
|
|
41525
|
-
this.currentFormatName = currentFormat ? currentFormat.name : "";
|
|
41526
|
-
}
|
|
41527
|
-
else {
|
|
41528
|
-
this.currentFormatName = "automatic";
|
|
41529
|
-
}
|
|
41530
|
-
this.style = { ...this.env.model.getters.getCurrentStyle() };
|
|
41531
|
-
this.style.align = this.style.align || cell.defaultAlign;
|
|
41532
|
-
this.fillColor = this.style.fillColor || "#ffffff";
|
|
41533
|
-
this.textColor = this.style.textColor || "#000000";
|
|
42185
|
+
const style = this.env.model.getters.getCurrentStyle();
|
|
42186
|
+
this.state.fillColor = style.fillColor || "#ffffff";
|
|
42187
|
+
this.state.textColor = style.textColor || "#000000";
|
|
41534
42188
|
this.menus = topbarMenuRegistry.getMenuItems();
|
|
41535
42189
|
}
|
|
41536
42190
|
getMenuName(menu) {
|
|
41537
42191
|
return menu.name(this.env);
|
|
41538
42192
|
}
|
|
41539
|
-
toggleMerge() {
|
|
41540
|
-
if (this.cannotMerge) {
|
|
41541
|
-
return;
|
|
41542
|
-
}
|
|
41543
|
-
const zones = this.env.model.getters.getSelectedZones();
|
|
41544
|
-
const target = [zones[zones.length - 1]];
|
|
41545
|
-
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
41546
|
-
if (this.inMerge) {
|
|
41547
|
-
this.env.model.dispatch("REMOVE_MERGE", { sheetId, target });
|
|
41548
|
-
}
|
|
41549
|
-
else {
|
|
41550
|
-
interactiveAddMerge(this.env, sheetId, target);
|
|
41551
|
-
}
|
|
41552
|
-
}
|
|
41553
42193
|
setColor(target, color) {
|
|
41554
42194
|
setStyle(this.env, { [target]: color });
|
|
41555
42195
|
this.onClick();
|
|
41556
42196
|
}
|
|
41557
|
-
setBorder(command) {
|
|
41558
|
-
this.env.model.dispatch("SET_FORMATTING", {
|
|
41559
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41560
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41561
|
-
border: command,
|
|
41562
|
-
});
|
|
41563
|
-
this.onClick();
|
|
41564
|
-
}
|
|
41565
|
-
setFormat(format, custom) {
|
|
41566
|
-
if (!custom) {
|
|
41567
|
-
this.toggleFormat(format);
|
|
41568
|
-
}
|
|
41569
|
-
else {
|
|
41570
|
-
this.openCustomFormatSidePanel(format);
|
|
41571
|
-
}
|
|
41572
|
-
this.onClick();
|
|
41573
|
-
}
|
|
41574
|
-
openCustomFormatSidePanel(custom) {
|
|
41575
|
-
const customFormatter = CUSTOM_FORMATS.find((c) => c.name === custom);
|
|
41576
|
-
const sidePanel = (customFormatter && customFormatter.sidePanel) || "";
|
|
41577
|
-
this.env.openSidePanel(sidePanel);
|
|
41578
|
-
}
|
|
41579
|
-
setDecimal(step) {
|
|
41580
|
-
this.env.model.dispatch("SET_DECIMAL", {
|
|
41581
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41582
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41583
|
-
step: step,
|
|
41584
|
-
});
|
|
41585
|
-
}
|
|
41586
|
-
paintFormat() {
|
|
41587
|
-
this.env.model.dispatch("ACTIVATE_PAINT_FORMAT", {
|
|
41588
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41589
|
-
});
|
|
41590
|
-
}
|
|
41591
|
-
clearFormatting() {
|
|
41592
|
-
this.env.model.dispatch("CLEAR_FORMATTING", {
|
|
41593
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41594
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41595
|
-
});
|
|
41596
|
-
}
|
|
41597
|
-
doAction(action) {
|
|
41598
|
-
action(this.env);
|
|
41599
|
-
this.closeMenus();
|
|
41600
|
-
}
|
|
41601
|
-
undo() {
|
|
41602
|
-
this.env.model.dispatch("REQUEST_UNDO");
|
|
41603
|
-
}
|
|
41604
|
-
redo() {
|
|
41605
|
-
this.env.model.dispatch("REQUEST_REDO");
|
|
41606
|
-
}
|
|
41607
|
-
get selectionContainsFilter() {
|
|
41608
|
-
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
41609
|
-
const selectedZones = this.env.model.getters.getSelectedZones();
|
|
41610
|
-
return this.env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
41611
|
-
}
|
|
41612
|
-
get cannotCreateFilter() {
|
|
41613
|
-
return !areZonesContinuous(...this.env.model.getters.getSelectedZones());
|
|
41614
|
-
}
|
|
41615
|
-
createFilter() {
|
|
41616
|
-
if (this.cannotCreateFilter) {
|
|
41617
|
-
return;
|
|
41618
|
-
}
|
|
41619
|
-
this.env.model.selection.selectTableAroundSelection();
|
|
41620
|
-
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
41621
|
-
const selection = this.env.model.getters.getSelectedZones();
|
|
41622
|
-
interactiveAddFilter(this.env, sheetId, selection);
|
|
41623
|
-
}
|
|
41624
|
-
removeFilter() {
|
|
41625
|
-
this.env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
41626
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41627
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41628
|
-
});
|
|
41629
|
-
}
|
|
41630
42197
|
}
|
|
41631
42198
|
TopBar.template = "o-spreadsheet-TopBar";
|
|
41632
|
-
TopBar.components = {
|
|
42199
|
+
TopBar.components = {
|
|
42200
|
+
ColorPickerWidget,
|
|
42201
|
+
ColorPicker,
|
|
42202
|
+
Menu,
|
|
42203
|
+
TopBarComposer,
|
|
42204
|
+
FontSizeEditor,
|
|
42205
|
+
ActionButton,
|
|
42206
|
+
};
|
|
41633
42207
|
TopBar.props = {
|
|
41634
42208
|
onClick: Function,
|
|
41635
42209
|
focusComposer: String,
|
|
@@ -41739,6 +42313,10 @@ css /* scss */ `
|
|
|
41739
42313
|
height: ${CF_ICON_EDGE_LENGTH}px;
|
|
41740
42314
|
vertical-align: sub;
|
|
41741
42315
|
}
|
|
42316
|
+
|
|
42317
|
+
.o-text-icon {
|
|
42318
|
+
vertical-align: middle;
|
|
42319
|
+
}
|
|
41742
42320
|
`;
|
|
41743
42321
|
// -----------------------------------------------------------------------------
|
|
41744
42322
|
// GRID STYLE
|
|
@@ -45510,6 +46088,7 @@ const registries = {
|
|
|
45510
46088
|
inverseCommandRegistry,
|
|
45511
46089
|
urlRegistry,
|
|
45512
46090
|
cellPopoverRegistry,
|
|
46091
|
+
numberFormatMenuRegistry,
|
|
45513
46092
|
};
|
|
45514
46093
|
const helpers = {
|
|
45515
46094
|
arg,
|
|
@@ -45594,10 +46173,11 @@ exports.load = load;
|
|
|
45594
46173
|
exports.parse = parse;
|
|
45595
46174
|
exports.readonlyAllowedCommands = readonlyAllowedCommands;
|
|
45596
46175
|
exports.registries = registries;
|
|
46176
|
+
exports.setDefaultSheetViewSize = setDefaultSheetViewSize;
|
|
45597
46177
|
exports.setTranslationMethod = setTranslationMethod;
|
|
45598
46178
|
exports.tokenize = tokenize;
|
|
45599
46179
|
|
|
45600
46180
|
|
|
45601
|
-
__info__.version = '16.3.0-alpha.
|
|
45602
|
-
__info__.date = '2023-04-
|
|
45603
|
-
__info__.hash = '
|
|
46181
|
+
__info__.version = '16.3.0-alpha.4';
|
|
46182
|
+
__info__.date = '2023-04-14T12:49:16.671Z';
|
|
46183
|
+
__info__.hash = '6824b8a';
|