@odoo/o-spreadsheet 19.3.6 → 19.3.10
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 +187 -148
- package/dist/o_spreadsheet.css +19 -11
- package/dist/o_spreadsheet.esm.js +187 -148
- package/dist/o_spreadsheet.iife.js +187 -148
- package/dist/o_spreadsheet.min.iife.js +27 -29
- package/dist/o_spreadsheet.xml +6 -5
- package/dist/types/components/bottom_bar/bottom_bar_sheet/bottom_bar_sheet.d.ts +1 -0
- package/dist/types/components/side_panel/find_and_replace/find_and_replace_store.d.ts +1 -1
- package/dist/types/components/tables/table_dropdown_button/table_dropdown_button.d.ts +1 -1
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/helpers/pivot/pivot_helpers.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/plugins/ui_core_views/custom_colors.d.ts +2 -0
- package/dist/types/registries/chart_data_source_registry.d.ts +3 -1
- package/dist/types/registries/chart_registry.d.ts +2 -4
- package/package.json +9 -6
package/dist/o_spreadsheet.cjs
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 19.3.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.10
|
|
6
|
+
* @date 2026-07-01T05:04:42.999Z
|
|
7
|
+
* @hash 040ae04
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
@@ -235,7 +235,7 @@ const GRAY_400 = "#ced4da";
|
|
|
235
235
|
const GRAY_300 = "#D8DADD";
|
|
236
236
|
const GRAY_200 = "#E7E9ED";
|
|
237
237
|
const TEXT_BODY = "#374151";
|
|
238
|
-
const TEXT_BODY_MUTED =
|
|
238
|
+
const TEXT_BODY_MUTED = "#374151C2";
|
|
239
239
|
const ACTION_COLOR = HIGHLIGHT_COLOR;
|
|
240
240
|
const CHART_TITLE_FONT_SIZE = 16;
|
|
241
241
|
const DEFAULT_CHART_COLOR_SCALE = {
|
|
@@ -328,9 +328,6 @@ const COLOR_PICKER_DEFAULTS = [
|
|
|
328
328
|
];
|
|
329
329
|
const DEFAULT_CELL_HEIGHT = 23;
|
|
330
330
|
const FOOTER_HEIGHT = 2 * 23;
|
|
331
|
-
const MENU_SEPARATOR_BORDER_WIDTH = 1;
|
|
332
|
-
const MENU_SEPARATOR_PADDING = 5;
|
|
333
|
-
const MENU_SEPARATOR_HEIGHT = 1 + 2 * 5;
|
|
334
331
|
const ZOOM_VALUES = [
|
|
335
332
|
50,
|
|
336
333
|
75,
|
|
@@ -361,7 +358,7 @@ const DEFAULT_NUMBER_STYLE = {
|
|
|
361
358
|
const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
|
|
362
359
|
const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
|
|
363
360
|
const DEFAULT_FONT_SIZE = DEFAULT_STYLE.fontSize;
|
|
364
|
-
const DEFAULT_FONT = "'Roboto', arial";
|
|
361
|
+
const DEFAULT_FONT = "'Roboto', arial, 'Liberation Sans'";
|
|
365
362
|
const DEFAULT_BORDER_DESC = {
|
|
366
363
|
style: "thin",
|
|
367
364
|
color: "#000000"
|
|
@@ -1233,7 +1230,7 @@ function toXC(col, row, rangePart = {
|
|
|
1233
1230
|
function recomputeZones(zones, zonesToRemove = []) {
|
|
1234
1231
|
if (zones.length <= 1 && zonesToRemove.length === 0) return zones;
|
|
1235
1232
|
const profilesStartingPosition = [0];
|
|
1236
|
-
const profiles = new Map([[0, []]]);
|
|
1233
|
+
const profiles = /* @__PURE__ */ new Map([[0, []]]);
|
|
1237
1234
|
modifyProfiles(profilesStartingPosition, profiles, zones, false);
|
|
1238
1235
|
modifyProfiles(profilesStartingPosition, profiles, zonesToRemove, true);
|
|
1239
1236
|
return constructZonesFromProfiles(profilesStartingPosition, profiles);
|
|
@@ -3945,12 +3942,10 @@ const getNumberRegex = memoize(function getNumberRegex(locale) {
|
|
|
3945
3942
|
const pIntegerAndDecimals = `(?:\\d+(?:${escapeRegExp(locale.thousandsSeparator || "")}\\d{3,})*(?:${decimalSeparator}\\d*)?)`;
|
|
3946
3943
|
const pOnlyDecimals = `(?:${decimalSeparator}\\d+)`;
|
|
3947
3944
|
const pNumber = "(?:\\s*" + pIntegerAndDecimals + "|" + pOnlyDecimals + ")(?:(e|E)(?:\\+|-)?(?:[0-9]|[0-9][0-9]|[12][0-9]{2}|30[0-7]))?(?:\\s*%)?";
|
|
3948
|
-
const pMinus = "(?:\\s*-)?";
|
|
3949
|
-
const pCurrencyFormat = "(?:\\s*[\\$€])?";
|
|
3950
3945
|
const pNumberExp = "^(?:(?:" + [
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
|
|
3946
|
+
"(?:\\s*-)?(?:\\s*[\\$€])?" + pNumber,
|
|
3947
|
+
"(?:\\s*-)?" + pNumber + "(?:\\s*[\\$€])?",
|
|
3948
|
+
"(?:\\s*[\\$€])?(?:\\s*-)?" + pNumber
|
|
3954
3949
|
].join(")|(?:") + "))$";
|
|
3955
3950
|
return new RegExp(pNumberExp, "i");
|
|
3956
3951
|
});
|
|
@@ -7552,7 +7547,7 @@ function isPositionDependent(cmd) {
|
|
|
7552
7547
|
function isZoneDependent(cmd) {
|
|
7553
7548
|
return "sheetId" in cmd && "zone" in cmd;
|
|
7554
7549
|
}
|
|
7555
|
-
const invalidateEvaluationCommands = new Set([
|
|
7550
|
+
const invalidateEvaluationCommands = /* @__PURE__ */ new Set([
|
|
7556
7551
|
"RENAME_SHEET",
|
|
7557
7552
|
"DELETE_SHEET",
|
|
7558
7553
|
"CREATE_SHEET",
|
|
@@ -7574,7 +7569,7 @@ const invalidateEvaluationCommands = new Set([
|
|
|
7574
7569
|
"UPDATE_NAMED_RANGE",
|
|
7575
7570
|
"DELETE_NAMED_RANGE"
|
|
7576
7571
|
]);
|
|
7577
|
-
const invalidateChartEvaluationCommands = new Set([
|
|
7572
|
+
const invalidateChartEvaluationCommands = /* @__PURE__ */ new Set([
|
|
7578
7573
|
"EVALUATE_CELLS",
|
|
7579
7574
|
"EVALUATE_CHARTS",
|
|
7580
7575
|
"UPDATE_CELL",
|
|
@@ -7593,20 +7588,20 @@ const invalidateChartEvaluationCommands = new Set([
|
|
|
7593
7588
|
"UNDO",
|
|
7594
7589
|
"REDO"
|
|
7595
7590
|
]);
|
|
7596
|
-
const invalidateDependenciesCommands = new Set(["MOVE_RANGES"]);
|
|
7597
|
-
const invalidateCFEvaluationCommands = new Set([
|
|
7591
|
+
const invalidateDependenciesCommands = /* @__PURE__ */ new Set(["MOVE_RANGES"]);
|
|
7592
|
+
const invalidateCFEvaluationCommands = /* @__PURE__ */ new Set([
|
|
7598
7593
|
"EVALUATE_CELLS",
|
|
7599
7594
|
"ADD_CONDITIONAL_FORMAT",
|
|
7600
7595
|
"REMOVE_CONDITIONAL_FORMAT",
|
|
7601
7596
|
"CHANGE_CONDITIONAL_FORMAT_PRIORITY"
|
|
7602
7597
|
]);
|
|
7603
|
-
const invalidateBordersCommands = new Set([
|
|
7598
|
+
const invalidateBordersCommands = /* @__PURE__ */ new Set([
|
|
7604
7599
|
"AUTOFILL_CELL",
|
|
7605
7600
|
"SET_BORDER",
|
|
7606
7601
|
"SET_ZONE_BORDERS",
|
|
7607
7602
|
"SET_BORDERS_ON_TARGET"
|
|
7608
7603
|
]);
|
|
7609
|
-
const invalidSubtotalFormulasCommands = new Set([
|
|
7604
|
+
const invalidSubtotalFormulasCommands = /* @__PURE__ */ new Set([
|
|
7610
7605
|
"UNHIDE_COLUMNS_ROWS",
|
|
7611
7606
|
"HIDE_COLUMNS_ROWS",
|
|
7612
7607
|
"GROUP_HEADERS",
|
|
@@ -7620,7 +7615,7 @@ const invalidSubtotalFormulasCommands = new Set([
|
|
|
7620
7615
|
"UPDATE_TABLE",
|
|
7621
7616
|
"UPDATE_FILTER"
|
|
7622
7617
|
]);
|
|
7623
|
-
const readonlyAllowedCommands = new Set([
|
|
7618
|
+
const readonlyAllowedCommands = /* @__PURE__ */ new Set([
|
|
7624
7619
|
"START",
|
|
7625
7620
|
"ACTIVATE_SHEET",
|
|
7626
7621
|
"COPY",
|
|
@@ -7636,7 +7631,7 @@ const readonlyAllowedCommands = new Set([
|
|
|
7636
7631
|
"UPDATE_CAROUSEL_ACTIVE_ITEM",
|
|
7637
7632
|
"UPDATE_PIVOT"
|
|
7638
7633
|
]);
|
|
7639
|
-
const lockedSheetAllowedCommands = new Set([
|
|
7634
|
+
const lockedSheetAllowedCommands = /* @__PURE__ */ new Set([
|
|
7640
7635
|
"LOCK_SHEET",
|
|
7641
7636
|
"UNLOCK_SHEET",
|
|
7642
7637
|
"MOVE_SHEET",
|
|
@@ -7667,7 +7662,7 @@ const lockedSheetAllowedCommands = new Set([
|
|
|
7667
7662
|
"SHIFT_VIEWPORT_DOWN",
|
|
7668
7663
|
"SHIFT_VIEWPORT_UP"
|
|
7669
7664
|
]);
|
|
7670
|
-
const coreTypes = new Set([
|
|
7665
|
+
const coreTypes = /* @__PURE__ */ new Set([
|
|
7671
7666
|
"UPDATE_CELL",
|
|
7672
7667
|
"UPDATE_CELL_POSITION",
|
|
7673
7668
|
"CLEAR_CELL",
|
|
@@ -8301,7 +8296,6 @@ function getCanonicalRepresentation(item) {
|
|
|
8301
8296
|
//#region src/helpers/edge_scrolling.ts
|
|
8302
8297
|
const MAX_DELAY = 140;
|
|
8303
8298
|
const MIN_DELAY = 20;
|
|
8304
|
-
const ACCELERATION = .035;
|
|
8305
8299
|
/**
|
|
8306
8300
|
* Decreasing exponential function used to determine the "speed" of edge-scrolling
|
|
8307
8301
|
* as the timeout delay.
|
|
@@ -8309,7 +8303,7 @@ const ACCELERATION = .035;
|
|
|
8309
8303
|
* Returns a timeout delay in milliseconds.
|
|
8310
8304
|
*/
|
|
8311
8305
|
function scrollDelay(value) {
|
|
8312
|
-
return 20 + (140 - 20) * Math.exp(
|
|
8306
|
+
return 20 + (140 - 20) * Math.exp(-.035 * (value - 1));
|
|
8313
8307
|
}
|
|
8314
8308
|
|
|
8315
8309
|
//#endregion
|
|
@@ -8712,7 +8706,7 @@ var UuidGenerator = class {
|
|
|
8712
8706
|
const cryptoObj = this.getCrypto();
|
|
8713
8707
|
if (cryptoObj) return "10000000-1000".replace(/[01]/g, (c) => {
|
|
8714
8708
|
const n = Number(c);
|
|
8715
|
-
return (n ^ cryptoObj.getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
|
|
8709
|
+
return (n ^ cryptoObj.getRandomValues(/* @__PURE__ */ new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
|
|
8716
8710
|
});
|
|
8717
8711
|
else return "xxxxxxxx-xxxx".replace(/[xy]/g, function(c) {
|
|
8718
8712
|
const r = Math.random() * 16 | 0;
|
|
@@ -8727,7 +8721,7 @@ var UuidGenerator = class {
|
|
|
8727
8721
|
const cryptoObj = this.getCrypto();
|
|
8728
8722
|
if (cryptoObj) return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c) => {
|
|
8729
8723
|
const n = Number(c);
|
|
8730
|
-
return (n ^ cryptoObj.getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
|
|
8724
|
+
return (n ^ cryptoObj.getRandomValues(/* @__PURE__ */ new Uint8Array(1))[0] & 15 >> n / 4).toString(16);
|
|
8731
8725
|
});
|
|
8732
8726
|
else return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
|
8733
8727
|
const r = Math.random() * 16 | 0;
|
|
@@ -12749,7 +12743,7 @@ const availableConditionalFormatOperators = new Set(cfOperators);
|
|
|
12749
12743
|
|
|
12750
12744
|
//#endregion
|
|
12751
12745
|
//#region src/types/data_validation.ts
|
|
12752
|
-
const availableDataValidationOperators = new Set([
|
|
12746
|
+
const availableDataValidationOperators = /* @__PURE__ */ new Set([
|
|
12753
12747
|
"containsText",
|
|
12754
12748
|
"notContainsText",
|
|
12755
12749
|
"isEqualText",
|
|
@@ -13343,10 +13337,10 @@ function toNormalizedPivotValue(dimension, groupValue) {
|
|
|
13343
13337
|
type: dimension.type
|
|
13344
13338
|
}));
|
|
13345
13339
|
if (groupValueString.toLowerCase() === "false") return false;
|
|
13346
|
-
return pivotNormalizationValueRegistry.get(dimension.type)(groupValueString, dimension
|
|
13340
|
+
return pivotNormalizationValueRegistry.get(dimension.type)(groupValueString, dimension);
|
|
13347
13341
|
}
|
|
13348
|
-
function normalizeDateTime(value,
|
|
13349
|
-
return pivotTimeAdapter(granularity ?? "month").normalizeFunctionValue(value);
|
|
13342
|
+
function normalizeDateTime(value, dimension) {
|
|
13343
|
+
return pivotTimeAdapter(dimension.granularity ?? "month").normalizeFunctionValue(value);
|
|
13350
13344
|
}
|
|
13351
13345
|
function toFunctionPivotValue(value, dimension) {
|
|
13352
13346
|
if (value === null) return `"null"`;
|
|
@@ -15945,6 +15939,59 @@ function getCarouselItemTitle(getters, item) {
|
|
|
15945
15939
|
return (chartSubtypeRegistry.getAll().find((c) => c.matcher?.(definition)) || chartSubtypeRegistry.get(definition.type)).displayName;
|
|
15946
15940
|
}
|
|
15947
15941
|
|
|
15942
|
+
//#endregion
|
|
15943
|
+
//#region src/components/helpers/css.ts
|
|
15944
|
+
function getTextDecoration({ strikethrough, underline }) {
|
|
15945
|
+
if (!strikethrough && !underline) return "none";
|
|
15946
|
+
return `${strikethrough ? "line-through" : ""} ${underline ? "underline" : ""}`;
|
|
15947
|
+
}
|
|
15948
|
+
/**
|
|
15949
|
+
* Convert the cell style to CSS properties.
|
|
15950
|
+
*/
|
|
15951
|
+
function cellStyleToCss(style) {
|
|
15952
|
+
const attributes = cellTextStyleToCss(style);
|
|
15953
|
+
if (!style) return attributes;
|
|
15954
|
+
if (style.fillColor) attributes["background"] = style.fillColor;
|
|
15955
|
+
return attributes;
|
|
15956
|
+
}
|
|
15957
|
+
/**
|
|
15958
|
+
* Convert the cell text style to CSS properties.
|
|
15959
|
+
*/
|
|
15960
|
+
function cellTextStyleToCss(style) {
|
|
15961
|
+
const attributes = {};
|
|
15962
|
+
if (!style) return attributes;
|
|
15963
|
+
if (style.bold) attributes["font-weight"] = "bold";
|
|
15964
|
+
if (style.italic) attributes["font-style"] = "italic";
|
|
15965
|
+
if (style.fontSize) attributes["font-size"] = `${style.fontSize}px`;
|
|
15966
|
+
if (style.strikethrough || style.underline) {
|
|
15967
|
+
let decoration = style.strikethrough ? "line-through" : "";
|
|
15968
|
+
decoration = style.underline ? decoration + " underline" : decoration;
|
|
15969
|
+
attributes["text-decoration"] = decoration;
|
|
15970
|
+
}
|
|
15971
|
+
if (style.textColor) attributes["color"] = style.textColor;
|
|
15972
|
+
return attributes;
|
|
15973
|
+
}
|
|
15974
|
+
/**
|
|
15975
|
+
* Transform CSS properties into a CSS string.
|
|
15976
|
+
*/
|
|
15977
|
+
function cssPropertiesToCss(attributes) {
|
|
15978
|
+
let styleStr = "";
|
|
15979
|
+
for (const attName in attributes) {
|
|
15980
|
+
if (!attributes[attName]) continue;
|
|
15981
|
+
styleStr += `${attName}:${attributes[attName]}; `;
|
|
15982
|
+
}
|
|
15983
|
+
return styleStr;
|
|
15984
|
+
}
|
|
15985
|
+
function getElementMargins(el) {
|
|
15986
|
+
const style = window.getComputedStyle(el);
|
|
15987
|
+
return {
|
|
15988
|
+
top: parseInt(style.marginTop, 10) || 0,
|
|
15989
|
+
bottom: parseInt(style.marginBottom, 10) || 0,
|
|
15990
|
+
left: parseInt(style.marginLeft, 10) || 0,
|
|
15991
|
+
right: parseInt(style.marginRight, 10) || 0
|
|
15992
|
+
};
|
|
15993
|
+
}
|
|
15994
|
+
|
|
15948
15995
|
//#endregion
|
|
15949
15996
|
//#region src/components/figures/chart/chartJs/zoomable_chart/zoomable_chart_store.ts
|
|
15950
15997
|
const TREND_LINE_AXES_IDS = ["x1", MOVING_AVERAGE_TREND_LINE_XAXIS_ID];
|
|
@@ -16063,9 +16110,7 @@ var ZoomableChartJsComponent = class extends ChartJsComponent {
|
|
|
16063
16110
|
this.removeEventListeners();
|
|
16064
16111
|
}
|
|
16065
16112
|
get containerStyle() {
|
|
16066
|
-
return `
|
|
16067
|
-
height:${this.sliceable ? `calc(100% - ${60}px)` : "100%"};
|
|
16068
|
-
`;
|
|
16113
|
+
return cssPropertiesToCss({ height: this.sliceable ? `calc(100% - ${60}px)` : "100%" });
|
|
16069
16114
|
}
|
|
16070
16115
|
get masterChartContainerStyle() {
|
|
16071
16116
|
const runtime = this.env.model.getters.getChartRuntime(this.props.chartId);
|
|
@@ -16929,59 +16974,6 @@ var FullScreenFigureStore = class extends SpreadsheetStore {
|
|
|
16929
16974
|
}
|
|
16930
16975
|
};
|
|
16931
16976
|
|
|
16932
|
-
//#endregion
|
|
16933
|
-
//#region src/components/helpers/css.ts
|
|
16934
|
-
function getTextDecoration({ strikethrough, underline }) {
|
|
16935
|
-
if (!strikethrough && !underline) return "none";
|
|
16936
|
-
return `${strikethrough ? "line-through" : ""} ${underline ? "underline" : ""}`;
|
|
16937
|
-
}
|
|
16938
|
-
/**
|
|
16939
|
-
* Convert the cell style to CSS properties.
|
|
16940
|
-
*/
|
|
16941
|
-
function cellStyleToCss(style) {
|
|
16942
|
-
const attributes = cellTextStyleToCss(style);
|
|
16943
|
-
if (!style) return attributes;
|
|
16944
|
-
if (style.fillColor) attributes["background"] = style.fillColor;
|
|
16945
|
-
return attributes;
|
|
16946
|
-
}
|
|
16947
|
-
/**
|
|
16948
|
-
* Convert the cell text style to CSS properties.
|
|
16949
|
-
*/
|
|
16950
|
-
function cellTextStyleToCss(style) {
|
|
16951
|
-
const attributes = {};
|
|
16952
|
-
if (!style) return attributes;
|
|
16953
|
-
if (style.bold) attributes["font-weight"] = "bold";
|
|
16954
|
-
if (style.italic) attributes["font-style"] = "italic";
|
|
16955
|
-
if (style.fontSize) attributes["font-size"] = `${style.fontSize}px`;
|
|
16956
|
-
if (style.strikethrough || style.underline) {
|
|
16957
|
-
let decoration = style.strikethrough ? "line-through" : "";
|
|
16958
|
-
decoration = style.underline ? decoration + " underline" : decoration;
|
|
16959
|
-
attributes["text-decoration"] = decoration;
|
|
16960
|
-
}
|
|
16961
|
-
if (style.textColor) attributes["color"] = style.textColor;
|
|
16962
|
-
return attributes;
|
|
16963
|
-
}
|
|
16964
|
-
/**
|
|
16965
|
-
* Transform CSS properties into a CSS string.
|
|
16966
|
-
*/
|
|
16967
|
-
function cssPropertiesToCss(attributes) {
|
|
16968
|
-
let styleStr = "";
|
|
16969
|
-
for (const attName in attributes) {
|
|
16970
|
-
if (!attributes[attName]) continue;
|
|
16971
|
-
styleStr += `${attName}:${attributes[attName]}; `;
|
|
16972
|
-
}
|
|
16973
|
-
return styleStr;
|
|
16974
|
-
}
|
|
16975
|
-
function getElementMargins(el) {
|
|
16976
|
-
const style = window.getComputedStyle(el);
|
|
16977
|
-
return {
|
|
16978
|
-
top: parseInt(style.marginTop, 10) || 0,
|
|
16979
|
-
bottom: parseInt(style.marginBottom, 10) || 0,
|
|
16980
|
-
left: parseInt(style.marginLeft, 10) || 0,
|
|
16981
|
-
right: parseInt(style.marginRight, 10) || 0
|
|
16982
|
-
};
|
|
16983
|
-
}
|
|
16984
|
-
|
|
16985
16977
|
//#endregion
|
|
16986
16978
|
//#region src/stores/DOM_focus_store.ts
|
|
16987
16979
|
var DOMFocusableElementStore = class {
|
|
@@ -18229,11 +18221,11 @@ var FigureComponent = class extends _odoo_owl.Component {
|
|
|
18229
18221
|
getResizerPosition(resizer) {
|
|
18230
18222
|
const anchorCenteringOffset = (ANCHOR_SIZE - ACTIVE_BORDER_WIDTH) / 2;
|
|
18231
18223
|
const style = {};
|
|
18232
|
-
if (resizer.includes("top")) style.top =
|
|
18233
|
-
else if (resizer.includes("bottom")) style.bottom =
|
|
18224
|
+
if (resizer.includes("top")) style.top = `-3px`;
|
|
18225
|
+
else if (resizer.includes("bottom")) style.bottom = `-3px`;
|
|
18234
18226
|
else style.bottom = `calc(50% - ${anchorCenteringOffset}px)`;
|
|
18235
|
-
if (resizer.includes("left")) style.left =
|
|
18236
|
-
else if (resizer.includes("right")) style.right =
|
|
18227
|
+
if (resizer.includes("left")) style.left = `-3px`;
|
|
18228
|
+
else if (resizer.includes("right")) style.right = `-3px`;
|
|
18237
18229
|
else style.right = `calc(50% - ${anchorCenteringOffset}px)`;
|
|
18238
18230
|
return cssPropertiesToCss(style);
|
|
18239
18231
|
}
|
|
@@ -25831,6 +25823,7 @@ function mapParenthesisCode(tokens) {
|
|
|
25831
25823
|
function mapParentFunction(tokens) {
|
|
25832
25824
|
const stack = [];
|
|
25833
25825
|
let functionStarted = "";
|
|
25826
|
+
let braceDepth = 0;
|
|
25834
25827
|
function pushTokenToFunctionContext(token) {
|
|
25835
25828
|
if (stack.length === 0) return;
|
|
25836
25829
|
const functionContext = stack.at(-1);
|
|
@@ -25843,7 +25836,7 @@ function mapParentFunction(tokens) {
|
|
|
25843
25836
|
});
|
|
25844
25837
|
}
|
|
25845
25838
|
}
|
|
25846
|
-
return tokens.map((token
|
|
25839
|
+
return tokens.map((token) => {
|
|
25847
25840
|
if (!["SPACE", "LEFT_PAREN"].includes(token.type)) functionStarted = "";
|
|
25848
25841
|
switch (token.type) {
|
|
25849
25842
|
case "SYMBOL":
|
|
@@ -25864,8 +25857,16 @@ function mapParentFunction(tokens) {
|
|
|
25864
25857
|
stack.pop()?.argsTokens?.flat().forEach(pushTokenToFunctionContext);
|
|
25865
25858
|
pushTokenToFunctionContext(token);
|
|
25866
25859
|
break;
|
|
25860
|
+
case "LEFT_BRACE":
|
|
25861
|
+
braceDepth++;
|
|
25862
|
+
pushTokenToFunctionContext(token);
|
|
25863
|
+
break;
|
|
25864
|
+
case "RIGHT_BRACE":
|
|
25865
|
+
braceDepth--;
|
|
25866
|
+
pushTokenToFunctionContext(token);
|
|
25867
|
+
break;
|
|
25867
25868
|
case "ARG_SEPARATOR":
|
|
25868
|
-
if (stack.length) stack[stack.length - 1].argPosition++;
|
|
25869
|
+
if (stack.length && braceDepth === 0) stack[stack.length - 1].argPosition++;
|
|
25869
25870
|
pushTokenToFunctionContext(token);
|
|
25870
25871
|
break;
|
|
25871
25872
|
default:
|
|
@@ -27217,10 +27218,7 @@ function startDnd(onPointerMove, onPointerUp) {
|
|
|
27217
27218
|
//#endregion
|
|
27218
27219
|
//#region src/components/color_picker/color_picker.ts
|
|
27219
27220
|
const ITEM_BORDER_WIDTH = 1;
|
|
27220
|
-
const
|
|
27221
|
-
const ITEMS_PER_LINE = 10;
|
|
27222
|
-
const MAGNIFIER_EDGE = 16;
|
|
27223
|
-
const CONTENT_WIDTH = ITEMS_PER_LINE * (ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH) + (ITEMS_PER_LINE - 1) * 2;
|
|
27221
|
+
const CONTENT_WIDTH = 218;
|
|
27224
27222
|
const INNER_GRADIENT_WIDTH = CONTENT_WIDTH - 2 * ITEM_BORDER_WIDTH;
|
|
27225
27223
|
const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
|
|
27226
27224
|
var ColorPicker = class extends _odoo_owl.Component {
|
|
@@ -27284,8 +27282,8 @@ var ColorPicker = class extends _odoo_owl.Component {
|
|
|
27284
27282
|
const left = Math.round(INNER_GRADIENT_WIDTH * clip(s / 100, 0, 1));
|
|
27285
27283
|
const top = Math.round(INNER_GRADIENT_HEIGHT * clip(1 - 2 * l / (200 - s), 0, 1));
|
|
27286
27284
|
return cssPropertiesToCss({
|
|
27287
|
-
left: `${-
|
|
27288
|
-
top: `${-
|
|
27285
|
+
left: `${-16 / 2 + left}px`,
|
|
27286
|
+
top: `${-16 / 2 + top}px`,
|
|
27289
27287
|
background: hslaToHex(this.state.currentHslaColor)
|
|
27290
27288
|
});
|
|
27291
27289
|
}
|
|
@@ -32825,9 +32823,12 @@ var SpreadsheetChart = class SpreadsheetChart {
|
|
|
32825
32823
|
labelValues: []
|
|
32826
32824
|
})
|
|
32827
32825
|
};
|
|
32828
|
-
return this.chartTypeBuilder.getRuntime(getters, this.definition, dataExtractors, this.sheetId, {
|
|
32829
|
-
|
|
32830
|
-
|
|
32826
|
+
return this.chartTypeBuilder.getRuntime(getters, this.definition, dataExtractors, this.sheetId, {
|
|
32827
|
+
onClick: (event, items, chartJsChart) => {
|
|
32828
|
+
return this.dataSourceBuilder.onDataSetClick?.(this.definition.type, chartId, event, items, chartJsChart, getters);
|
|
32829
|
+
},
|
|
32830
|
+
onHover: (event, items, chartJsChart) => this.dataSourceBuilder.onDataSetHover?.(this.definition.type, chartId, event, items, chartJsChart)
|
|
32831
|
+
});
|
|
32831
32832
|
}
|
|
32832
32833
|
static deleteInvalidKeys(definition) {
|
|
32833
32834
|
definition = { ...definition };
|
|
@@ -33034,7 +33035,7 @@ function getChartDatasetValues(getters, dataSets) {
|
|
|
33034
33035
|
if (cell) label = cell.formattedValue;
|
|
33035
33036
|
}
|
|
33036
33037
|
let data = ds.dataRange ? getData(getters, ds) : [];
|
|
33037
|
-
if (data.every((cell) => !cell.value || isTextResult(cell)) && data.filter(isTextResult).length > 1) data = data.map((cell) => cell.value && isErrorResult(cell) ? ONE : EMPTY);
|
|
33038
|
+
if (data.every((cell) => !cell.value || isTextResult(cell)) && data.filter(isTextResult).length > 1) data = data.map((cell) => cell.value && !isErrorResult(cell) ? ONE : EMPTY);
|
|
33038
33039
|
else if (data.every((cell) => !isNumberResult(cell))) hidden = true;
|
|
33039
33040
|
datasetValues.push({
|
|
33040
33041
|
data,
|
|
@@ -36024,9 +36025,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36024
36025
|
allSheetsMatches = [];
|
|
36025
36026
|
activeSheetMatches = [];
|
|
36026
36027
|
specificRangeMatches = [];
|
|
36028
|
+
selectedMatchPosition = null;
|
|
36027
36029
|
currentSearchRegex = null;
|
|
36028
36030
|
initialShowFormulaState;
|
|
36029
|
-
preserveSelectedMatchIndex = false;
|
|
36030
36031
|
irreplaceableMatchCount = 0;
|
|
36031
36032
|
isSearchDirty = false;
|
|
36032
36033
|
shouldFinalizeUpdateSelection = false;
|
|
@@ -36148,7 +36149,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36148
36149
|
*/
|
|
36149
36150
|
_updateSearch(toSearch, searchOptions) {
|
|
36150
36151
|
this.searchOptions = searchOptions;
|
|
36151
|
-
if (toSearch !== this.toSearch)
|
|
36152
|
+
if (toSearch !== this.toSearch) {
|
|
36153
|
+
this.selectedMatchIndex = null;
|
|
36154
|
+
this.selectedMatchPosition = null;
|
|
36155
|
+
}
|
|
36152
36156
|
this.toSearch = toSearch;
|
|
36153
36157
|
this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
|
|
36154
36158
|
this.refreshSearch({
|
|
@@ -36160,8 +36164,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36160
36164
|
* refresh the matches according to the current search options
|
|
36161
36165
|
*/
|
|
36162
36166
|
refreshSearch(options) {
|
|
36163
|
-
if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
|
|
36164
36167
|
this.findMatches();
|
|
36168
|
+
if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
|
|
36169
|
+
this.selectedMatchIndex = null;
|
|
36170
|
+
this.selectedMatchPosition = null;
|
|
36171
|
+
} else {
|
|
36172
|
+
const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
|
|
36173
|
+
if (index !== -1) this.selectedMatchIndex = index;
|
|
36174
|
+
}
|
|
36165
36175
|
this.selectNextCell(0, options);
|
|
36166
36176
|
}
|
|
36167
36177
|
getSheetsInSearchOrder() {
|
|
@@ -36229,6 +36239,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36229
36239
|
const matches = this.searchMatches;
|
|
36230
36240
|
if (!matches.length) {
|
|
36231
36241
|
this.selectedMatchIndex = null;
|
|
36242
|
+
this.selectedMatchPosition = null;
|
|
36232
36243
|
return;
|
|
36233
36244
|
}
|
|
36234
36245
|
let nextIndex;
|
|
@@ -36242,14 +36253,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36242
36253
|
} else nextIndex = this.selectedMatchIndex + indexChange;
|
|
36243
36254
|
nextIndex = (nextIndex + matches.length) % matches.length;
|
|
36244
36255
|
this.selectedMatchIndex = nextIndex;
|
|
36256
|
+
this.selectedMatchPosition = matches[this.selectedMatchIndex];
|
|
36245
36257
|
const selectedMatch = matches[nextIndex];
|
|
36246
36258
|
if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
|
|
36247
|
-
this.preserveSelectedMatchIndex = true;
|
|
36248
36259
|
this.model.dispatch("ACTIVATE_SHEET", {
|
|
36249
36260
|
sheetIdFrom: this.getters.getActiveSheetId(),
|
|
36250
36261
|
sheetIdTo: selectedMatch.sheetId
|
|
36251
36262
|
});
|
|
36252
|
-
this.preserveSelectedMatchIndex = false;
|
|
36253
36263
|
this.isSearchDirty = false;
|
|
36254
36264
|
}
|
|
36255
36265
|
this.model.selection.getBackToDefault();
|
|
@@ -36260,7 +36270,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36260
36270
|
*/
|
|
36261
36271
|
replace() {
|
|
36262
36272
|
if (this.selectedMatchIndex === null) return;
|
|
36263
|
-
this.preserveSelectedMatchIndex = true;
|
|
36264
36273
|
this.shouldFinalizeUpdateSelection = true;
|
|
36265
36274
|
this.model.dispatch("REPLACE_SEARCH", {
|
|
36266
36275
|
searchString: this.toSearch,
|
|
@@ -36268,7 +36277,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
|
|
|
36268
36277
|
matches: [this.searchMatches[this.selectedMatchIndex]],
|
|
36269
36278
|
searchOptions: this.searchOptions
|
|
36270
36279
|
});
|
|
36271
|
-
this.preserveSelectedMatchIndex = false;
|
|
36272
36280
|
}
|
|
36273
36281
|
/**
|
|
36274
36282
|
* Apply the replace function to all the matches one time.
|
|
@@ -41204,7 +41212,7 @@ var TableStylePreview = class extends _odoo_owl.Component {
|
|
|
41204
41212
|
mode: "pivot",
|
|
41205
41213
|
numberOfCols: 5,
|
|
41206
41214
|
numberOfRows: 8,
|
|
41207
|
-
mainSubHeaderRows: new Set([props.tableConfig.numberOfHeaders, props.tableConfig.numberOfHeaders + 3])
|
|
41215
|
+
mainSubHeaderRows: /* @__PURE__ */ new Set([props.tableConfig.numberOfHeaders, props.tableConfig.numberOfHeaders + 3])
|
|
41208
41216
|
};
|
|
41209
41217
|
drawPreviewTable(ctx, getComputedTableStyle(props.tableConfig, props.tableStyle, tableMetaData), {
|
|
41210
41218
|
...tableMetaData,
|
|
@@ -44530,9 +44538,12 @@ var CellComposerStore = class extends AbstractComposerStore {
|
|
|
44530
44538
|
}
|
|
44531
44539
|
stopEdition(direction) {
|
|
44532
44540
|
if (this.canStopEdition()) {
|
|
44541
|
+
const { col, row } = this.currentEditedCell;
|
|
44533
44542
|
this._stopEdition();
|
|
44534
|
-
if (direction) if (this.getters.isSingleCellOrMerge(this.sheetId, this.getters.getSelectedZone()))
|
|
44535
|
-
|
|
44543
|
+
if (direction) if (this.getters.isSingleCellOrMerge(this.sheetId, this.getters.getSelectedZone())) {
|
|
44544
|
+
this.model.selection.selectCell(col, row);
|
|
44545
|
+
this.model.selection.moveAnchorCell(direction, 1);
|
|
44546
|
+
} else moveAnchorWithinSelection(this.getters, this.model.selection, direction);
|
|
44536
44547
|
return;
|
|
44537
44548
|
}
|
|
44538
44549
|
const editedCell = this.currentEditedCell;
|
|
@@ -48542,7 +48553,7 @@ var Grid = class extends _odoo_owl.Component {
|
|
|
48542
48553
|
ev.preventDefault();
|
|
48543
48554
|
const clipboardData = ev.clipboardData;
|
|
48544
48555
|
if (!clipboardData) return;
|
|
48545
|
-
const image = [...clipboardData.files]
|
|
48556
|
+
const image = [...clipboardData.files].find((file) => AllowedImageMimeTypes.includes(file.type));
|
|
48546
48557
|
const osClipboard = { content: {
|
|
48547
48558
|
["text/plain"]: clipboardData?.getData("text/plain"),
|
|
48548
48559
|
["text/html"]: clipboardData?.getData("text/html")
|
|
@@ -54608,7 +54619,7 @@ function compareIntervals(a, b) {
|
|
|
54608
54619
|
//#region src/plugins/ui_core_views/cell_evaluation/zone_set.ts
|
|
54609
54620
|
var ZoneSet = class ZoneSet {
|
|
54610
54621
|
profilesStartingPosition = [0];
|
|
54611
|
-
profiles = new Map([[0, []]]);
|
|
54622
|
+
profiles = /* @__PURE__ */ new Map([[0, []]]);
|
|
54612
54623
|
constructor(zones = []) {
|
|
54613
54624
|
for (const zone of zones) this.add(zone);
|
|
54614
54625
|
}
|
|
@@ -56220,7 +56231,7 @@ iconsOnCellRegistry.add("pivot_collapse", (getters, position) => {
|
|
|
56220
56231
|
if (!(definition.style?.tabularForm ?? DEFAULT_PIVOT_STYLE.tabularForm) && pivotCell.type === "HEADER" && pivotId && pivotCell.domain.length) {
|
|
56221
56232
|
const isDashboard = getters.isDashboard();
|
|
56222
56233
|
const fields = pivotCell.dimension === "COL" ? definition.columns : definition.rows;
|
|
56223
|
-
const hasIcon = !isDashboard && pivotCell.domain.length !== fields.length;
|
|
56234
|
+
const hasIcon = !isDashboard && !getters.shouldShowFormulas() && pivotCell.domain.length !== fields.length;
|
|
56224
56235
|
const isCollapsed = (definition.collapsedDomains?.[pivotCell.dimension] ?? []).some((domain) => deepEquals(domain, pivotCell.domain));
|
|
56225
56236
|
const indent = pivotCell.dimension === "ROW" ? (pivotCell.domain.length - 1) * 15 : 0;
|
|
56226
56237
|
return {
|
|
@@ -56409,12 +56420,22 @@ var CustomColorsPlugin = class extends CoreViewPlugin {
|
|
|
56409
56420
|
handle(cmd) {
|
|
56410
56421
|
switch (cmd.type) {
|
|
56411
56422
|
case "START":
|
|
56412
|
-
for (const sheetId of this.getters.getSheetIds())
|
|
56423
|
+
for (const sheetId of this.getters.getSheetIds()) {
|
|
56424
|
+
for (const chartId of this.getters.getChartIds(sheetId)) this.tryToAddColors(this.getChartColors(chartId));
|
|
56425
|
+
for (const figureId of this.getters.getFigures(sheetId)) this.tryToAddColors(this.getCarouselColors(sheetId, figureId.id));
|
|
56426
|
+
}
|
|
56413
56427
|
break;
|
|
56414
56428
|
case "UPDATE_CHART":
|
|
56415
56429
|
case "CREATE_CHART":
|
|
56416
56430
|
this.tryToAddColors(this.getChartColors(cmd.chartId));
|
|
56417
56431
|
break;
|
|
56432
|
+
case "CREATE_CAROUSEL":
|
|
56433
|
+
case "UPDATE_CAROUSEL":
|
|
56434
|
+
this.tryToAddColors(this.getCarouselColors(cmd.sheetId, cmd.figureId));
|
|
56435
|
+
break;
|
|
56436
|
+
case "COLOR_SHEET":
|
|
56437
|
+
if (cmd.color) this.tryToAddColors([cmd.color]);
|
|
56438
|
+
break;
|
|
56418
56439
|
case "UPDATE_CELL":
|
|
56419
56440
|
case "ADD_CONDITIONAL_FORMAT":
|
|
56420
56441
|
case "SET_BORDER":
|
|
@@ -56437,8 +56458,12 @@ var CustomColorsPlugin = class extends CoreViewPlugin {
|
|
|
56437
56458
|
}
|
|
56438
56459
|
computeCustomColors() {
|
|
56439
56460
|
let usedColors = [];
|
|
56440
|
-
for (const sheetId of this.getters.getSheetIds()) usedColors = usedColors.concat(this.getColorsFromCells(sheetId), this.getFormattingColors(sheetId), this.getTableColors(sheetId));
|
|
56441
|
-
return [
|
|
56461
|
+
for (const sheetId of this.getters.getSheetIds()) usedColors = usedColors.concat(this.getSheetColors(sheetId), this.getColorsFromCells(sheetId), this.getFormattingColors(sheetId), this.getTableColors(sheetId));
|
|
56462
|
+
return [.../* @__PURE__ */ new Set([...usedColors])];
|
|
56463
|
+
}
|
|
56464
|
+
getSheetColors(sheetId) {
|
|
56465
|
+
const sheet = this.getters.getSheet(sheetId);
|
|
56466
|
+
return sheet.color ? [sheet.color] : [];
|
|
56442
56467
|
}
|
|
56443
56468
|
getColorsFromCells(sheetId) {
|
|
56444
56469
|
const cells = Object.values(this.getters.getCells(sheetId));
|
|
@@ -56471,6 +56496,11 @@ var CustomColorsPlugin = class extends CoreViewPlugin {
|
|
|
56471
56496
|
if (chart === void 0) return [];
|
|
56472
56497
|
return [...JSON.stringify(chart.getRangeDefinition()).matchAll(chartColorRegex)].map((color) => color[1]);
|
|
56473
56498
|
}
|
|
56499
|
+
getCarouselColors(sheetId, figureId) {
|
|
56500
|
+
if (this.getters.getFigure(sheetId, figureId)?.tag !== "carousel") return [];
|
|
56501
|
+
const titleColor = this.getters.getCarousel(figureId).title?.color;
|
|
56502
|
+
return titleColor ? [titleColor] : [];
|
|
56503
|
+
}
|
|
56474
56504
|
getTableColors(sheetId) {
|
|
56475
56505
|
return this.getters.getTables(sheetId).flatMap((table) => {
|
|
56476
56506
|
const config = table.config;
|
|
@@ -59974,7 +60004,7 @@ var TableComputedStylePlugin = class extends UIPlugin {
|
|
|
59974
60004
|
};
|
|
59975
60005
|
}
|
|
59976
60006
|
};
|
|
59977
|
-
const invalidateTableStyleCommandsSet = new Set([
|
|
60007
|
+
const invalidateTableStyleCommandsSet = /* @__PURE__ */ new Set([
|
|
59978
60008
|
"HIDE_COLUMNS_ROWS",
|
|
59979
60009
|
"UNHIDE_COLUMNS_ROWS",
|
|
59980
60010
|
"UNFOLD_HEADER_GROUP",
|
|
@@ -64544,14 +64574,14 @@ var InternalViewport = class {
|
|
|
64544
64574
|
adjustPositionX(targetCol) {
|
|
64545
64575
|
const sheetId = this.sheetId;
|
|
64546
64576
|
const { start, end } = this.getters.getColDimensions(sheetId, targetCol);
|
|
64547
|
-
if (this.offsetX + this.viewportWidth + this.offsetCorrectionX < end) this.offsetX = end - this.viewportWidth;
|
|
64577
|
+
if (this.offsetX + this.viewportWidth + this.offsetCorrectionX < end) this.offsetX = end - this.viewportWidth - this.offsetCorrectionX;
|
|
64548
64578
|
else if (this.offsetX + this.offsetCorrectionX > start) this.offsetX = start - this.offsetCorrectionX;
|
|
64549
64579
|
this.adjustViewportZoneX();
|
|
64550
64580
|
}
|
|
64551
64581
|
adjustPositionY(targetRow) {
|
|
64552
64582
|
const sheetId = this.sheetId;
|
|
64553
64583
|
const { start, end } = this.getters.getRowDimensions(sheetId, targetRow);
|
|
64554
|
-
if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) this.offsetY = end - this.viewportHeight;
|
|
64584
|
+
if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) this.offsetY = end - this.viewportHeight - this.offsetCorrectionY;
|
|
64555
64585
|
else if (this.offsetY + this.offsetCorrectionY > start) this.offsetY = start - this.offsetCorrectionY;
|
|
64556
64586
|
this.adjustViewportZoneY();
|
|
64557
64587
|
}
|
|
@@ -67501,7 +67531,7 @@ var BottomBarSheet = class extends _odoo_owl.Component {
|
|
|
67501
67531
|
}
|
|
67502
67532
|
});
|
|
67503
67533
|
this.DOMFocusableElementStore = useStore(DOMFocusableElementStore);
|
|
67504
|
-
(0, _odoo_owl.useExternalListener)(window, "click", ()
|
|
67534
|
+
(0, _odoo_owl.useExternalListener)(window, "click", this.onExternalClick.bind(this), { capture: true });
|
|
67505
67535
|
(0, _odoo_owl.useEffect)((sheetId) => {
|
|
67506
67536
|
if (this.props.sheetId === sheetId) this.scrollToSheet();
|
|
67507
67537
|
}, () => [this.env.model.getters.getActiveSheetId()]);
|
|
@@ -67520,6 +67550,9 @@ var BottomBarSheet = class extends _odoo_owl.Component {
|
|
|
67520
67550
|
this.env.model.off("command-rejected", this);
|
|
67521
67551
|
});
|
|
67522
67552
|
}
|
|
67553
|
+
onExternalClick(ev) {
|
|
67554
|
+
if (!ev.target.closest(".o-color-picker")) this.state.pickerOpened = false;
|
|
67555
|
+
}
|
|
67523
67556
|
focusInputAndSelectContent() {
|
|
67524
67557
|
if (!this.state.isEditing || !this.sheetNameRef.el) return;
|
|
67525
67558
|
this.sheetNameRef.el.focus();
|
|
@@ -67623,6 +67656,8 @@ var BottomBarSheet = class extends _odoo_owl.Component {
|
|
|
67623
67656
|
},
|
|
67624
67657
|
openSheetColorPickerCallback: () => {
|
|
67625
67658
|
this.state.pickerOpened = true;
|
|
67659
|
+
const sheet = this.env.model.getters.getSheet(this.props.sheetId);
|
|
67660
|
+
this.state.currentPickerColor = sheet.color;
|
|
67626
67661
|
}
|
|
67627
67662
|
});
|
|
67628
67663
|
}
|
|
@@ -69658,7 +69693,7 @@ var TableDropdownButton = class extends _odoo_owl.Component {
|
|
|
69658
69693
|
this.closePopover();
|
|
69659
69694
|
return;
|
|
69660
69695
|
}
|
|
69661
|
-
const pivotId = this.
|
|
69696
|
+
const pivotId = this.dynamicPivotIdInSelection;
|
|
69662
69697
|
if (pivotId) {
|
|
69663
69698
|
this.env.openSidePanel("PivotSidePanel", {
|
|
69664
69699
|
pivotId,
|
|
@@ -69688,7 +69723,7 @@ var TableDropdownButton = class extends _odoo_owl.Component {
|
|
|
69688
69723
|
this.state.popoverProps = void 0;
|
|
69689
69724
|
}
|
|
69690
69725
|
get action() {
|
|
69691
|
-
if (this.
|
|
69726
|
+
if (this.dynamicPivotIdInSelection) return {
|
|
69692
69727
|
name: _t("Edit pivot style"),
|
|
69693
69728
|
icon: "o-spreadsheet-Icon.EDIT_TABLE"
|
|
69694
69729
|
};
|
|
@@ -69707,15 +69742,19 @@ var TableDropdownButton = class extends _odoo_owl.Component {
|
|
|
69707
69742
|
get tableStyles() {
|
|
69708
69743
|
return this.env.model.getters.getTableStyles();
|
|
69709
69744
|
}
|
|
69710
|
-
get
|
|
69745
|
+
get dynamicPivotIdInSelection() {
|
|
69711
69746
|
const selection = this.env.model.getters.getSelectedZones();
|
|
69712
|
-
|
|
69713
|
-
|
|
69714
|
-
|
|
69715
|
-
|
|
69716
|
-
|
|
69717
|
-
|
|
69718
|
-
|
|
69747
|
+
const pivotCellIds = new Set(this.env.model.getters.getCellsWithTrackedFormula("PIVOT"));
|
|
69748
|
+
if (pivotCellIds.size === 0) return;
|
|
69749
|
+
const activeSheetId = this.env.model.getters.getActiveSheetId();
|
|
69750
|
+
for (const zone of selection) for (const position of cellPositions(activeSheetId, zone)) {
|
|
69751
|
+
const mainPosition = this.env.model.getters.getArrayFormulaSpreadingOn(position);
|
|
69752
|
+
if (!mainPosition) continue;
|
|
69753
|
+
const cellId = this.env.model.getters.getCell(mainPosition)?.id;
|
|
69754
|
+
if (cellId && pivotCellIds.has(cellId)) {
|
|
69755
|
+
const pivotId = this.env.model.getters.getPivotIdFromPosition(mainPosition);
|
|
69756
|
+
if (pivotId) return pivotId;
|
|
69757
|
+
}
|
|
69719
69758
|
}
|
|
69720
69759
|
}
|
|
69721
69760
|
get class() {
|
|
@@ -72647,11 +72686,11 @@ function addBarChart(chart) {
|
|
|
72647
72686
|
<!-- each data marker in the series does not have a different color -->
|
|
72648
72687
|
<c:varyColors val="0"/>
|
|
72649
72688
|
${joinXmlNodes(rightDataSetsNodes)}
|
|
72650
|
-
<c:axId val="${
|
|
72651
|
-
<c:axId val="${
|
|
72689
|
+
<c:axId val="${17781238}" />
|
|
72690
|
+
<c:axId val="${88853994}" />
|
|
72652
72691
|
</c:barChart>
|
|
72653
|
-
${addAx("b", "c:catAx",
|
|
72654
|
-
${addAx("r", "c:valAx",
|
|
72692
|
+
${addAx("b", "c:catAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
|
|
72693
|
+
${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
|
|
72655
72694
|
` : ""}`;
|
|
72656
72695
|
}
|
|
72657
72696
|
function addComboChart(chart) {
|
|
@@ -72903,11 +72942,11 @@ function addLineChart(chart) {
|
|
|
72903
72942
|
<c:varyColors val="0"/>
|
|
72904
72943
|
${joinXmlNodes(rightDataSetsNodes)}
|
|
72905
72944
|
${insertDataLabels({ showValues: chart.showValues })}
|
|
72906
|
-
<c:axId val="${
|
|
72907
|
-
<c:axId val="${
|
|
72945
|
+
<c:axId val="${17781238}" />
|
|
72946
|
+
<c:axId val="${88853994}" />
|
|
72908
72947
|
</c:lineChart>
|
|
72909
|
-
${addAx("b", "c:catAx",
|
|
72910
|
-
${addAx("r", "c:valAx",
|
|
72948
|
+
${addAx("b", "c:catAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
|
|
72949
|
+
${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
|
|
72911
72950
|
` : ""}
|
|
72912
72951
|
`;
|
|
72913
72952
|
}
|
|
@@ -72973,11 +73012,11 @@ function addScatterChart(chart) {
|
|
|
72973
73012
|
<c:scatterStyle val="lineMarker"/>
|
|
72974
73013
|
${joinXmlNodes(rightDataSetsNodes)}
|
|
72975
73014
|
${insertDataLabels({ showValues: chart.showValues })}
|
|
72976
|
-
<c:axId val="${
|
|
72977
|
-
<c:axId val="${
|
|
73015
|
+
<c:axId val="${17781238}" />
|
|
73016
|
+
<c:axId val="${88853994}" />
|
|
72978
73017
|
</c:scatterChart>
|
|
72979
|
-
${addAx("b", "c:valAx",
|
|
72980
|
-
${addAx("r", "c:valAx",
|
|
73018
|
+
${addAx("b", "c:valAx", 17781238, 88853994, chart.axesDesign?.x?.title, chart.fontColor, leftDataSetsNodes.length ? 1 : 0)}
|
|
73019
|
+
${addAx("r", "c:valAx", 88853994, 17781238, chart.axesDesign?.y1?.title, chart.fontColor)}
|
|
72981
73020
|
` : ""}`;
|
|
72982
73021
|
}
|
|
72983
73022
|
function addRadarChart(chart) {
|
|
@@ -84713,6 +84752,6 @@ exports.stores = stores;
|
|
|
84713
84752
|
exports.tokenColors = tokenColors;
|
|
84714
84753
|
exports.tokenize = tokenize;
|
|
84715
84754
|
|
|
84716
|
-
__info__.version = "19.3.
|
|
84717
|
-
__info__.date = "2026-
|
|
84718
|
-
__info__.hash = "
|
|
84755
|
+
__info__.version = "19.3.10";
|
|
84756
|
+
__info__.date = "2026-07-01T05:04:42.999Z";
|
|
84757
|
+
__info__.hash = "040ae04";
|