@odoo/o-spreadsheet 19.2.26 → 19.2.28
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.css
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.2.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.28
|
|
6
|
+
* @date 2026-09-04T07:33:57.749Z
|
|
7
|
+
* @hash 102af11
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f9fafb, #1b1d26);
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
--os-black: light-dark(#000000, #ffffff);
|
|
22
22
|
--os-white-bg: light-dark(#ffffff, var(--os-gray-200));
|
|
23
23
|
|
|
24
|
-
--os-default-font: "Roboto", "Arial";
|
|
24
|
+
--os-default-font: "Roboto", "Arial", "Liberation Sans";
|
|
25
25
|
--os-default-font-size: 10px;
|
|
26
26
|
--os-link-color: light-dark(#017e84, #02c7b5);
|
|
27
27
|
--os-link-hover-color: light-dark(#01585c, #4ed8cb);
|
|
@@ -1383,6 +1383,12 @@
|
|
|
1383
1383
|
background-color: var(--os-action-color);
|
|
1384
1384
|
border-color: var(--os-action-color) !important;
|
|
1385
1385
|
}
|
|
1386
|
+
|
|
1387
|
+
&:focus {
|
|
1388
|
+
outline: none;
|
|
1389
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
1390
|
+
border-color: var(--os-action-color);
|
|
1391
|
+
}
|
|
1386
1392
|
}
|
|
1387
1393
|
}
|
|
1388
1394
|
}
|
|
@@ -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.2.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.28
|
|
6
|
+
* @date 2026-09-04T07:33:56.173Z
|
|
7
|
+
* @hash 102af11
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { App, Component, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, whenReady, xml } from "@odoo/owl";
|
|
@@ -8339,16 +8339,16 @@ const chartShowValuesPlugin = {
|
|
|
8339
8339
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8340
8340
|
break;
|
|
8341
8341
|
case "bar":
|
|
8342
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8342
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8343
8343
|
break;
|
|
8344
8344
|
case "pyramid":
|
|
8345
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8345
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
8346
8346
|
break;
|
|
8347
8347
|
case "calendar":
|
|
8348
8348
|
drawBarChartValues(chart, options, ctx);
|
|
8349
8349
|
break;
|
|
8350
8350
|
case "funnel":
|
|
8351
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8351
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
8352
8352
|
break;
|
|
8353
8353
|
}
|
|
8354
8354
|
ctx.restore();
|
|
@@ -8418,7 +8418,7 @@ function drawBarChartValues(chart, options, ctx) {
|
|
|
8418
8418
|
}
|
|
8419
8419
|
}
|
|
8420
8420
|
}
|
|
8421
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
8421
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
8422
8422
|
const textsPositions = {};
|
|
8423
8423
|
for (const dataset of chart._metasets) {
|
|
8424
8424
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -8433,7 +8433,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
8433
8433
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
8434
8434
|
const PADDING = 3;
|
|
8435
8435
|
let xPosition;
|
|
8436
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8436
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8437
8437
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
8438
8438
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
8439
8439
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -9172,6 +9172,7 @@ function getRadarChartDatasets(definition, args) {
|
|
|
9172
9172
|
hidden,
|
|
9173
9173
|
borderColor,
|
|
9174
9174
|
backgroundColor: borderColor,
|
|
9175
|
+
pointBackgroundColor: borderColor,
|
|
9175
9176
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
9176
9177
|
};
|
|
9177
9178
|
if (fill) {
|
|
@@ -32334,9 +32335,10 @@ var Composer = class extends Component {
|
|
|
32334
32335
|
compositionActive = false;
|
|
32335
32336
|
spreadsheetRect = useSpreadsheetRect();
|
|
32336
32337
|
lastHoveredTokenIndex = void 0;
|
|
32337
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
32338
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
32338
32339
|
const selection = this.contentHelper.getCurrentSelection();
|
|
32339
|
-
|
|
32340
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
32341
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
32340
32342
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
32341
32343
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
32342
32344
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -32654,7 +32656,8 @@ var Composer = class extends Component {
|
|
|
32654
32656
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
32655
32657
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
32656
32658
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
32657
|
-
this.
|
|
32659
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
32660
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
32658
32661
|
}
|
|
32659
32662
|
}
|
|
32660
32663
|
/**
|
|
@@ -46227,7 +46230,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
46227
46230
|
}
|
|
46228
46231
|
onSelectionChanged(ranges) {
|
|
46229
46232
|
this.state.rangeHasChanged = true;
|
|
46230
|
-
|
|
46233
|
+
if (ranges.length === 0) {
|
|
46234
|
+
this.state.range = void 0;
|
|
46235
|
+
return;
|
|
46236
|
+
}
|
|
46237
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
46238
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
46239
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
46231
46240
|
}
|
|
46232
46241
|
onSelectionConfirmed() {
|
|
46233
46242
|
if (this.state.range) {
|
|
@@ -55772,6 +55781,7 @@ var CarouselPlugin = class extends CorePlugin {
|
|
|
55772
55781
|
return "Success";
|
|
55773
55782
|
case "UPDATE_CAROUSEL":
|
|
55774
55783
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
55784
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
55775
55785
|
return "Success";
|
|
55776
55786
|
}
|
|
55777
55787
|
return "Success";
|
|
@@ -60984,14 +60994,16 @@ var FormulaDependencyGraph = class {
|
|
|
60984
60994
|
*/
|
|
60985
60995
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
60986
60996
|
visited = visited.copy();
|
|
60997
|
+
let initialRangesToRemove = visited.copy();
|
|
60987
60998
|
const queue = Array.from(ranges).reverse();
|
|
60988
60999
|
while (queue.length > 0) {
|
|
60989
61000
|
const range = queue.pop();
|
|
60990
61001
|
visited.add(range);
|
|
60991
61002
|
const impactedRanges = this.rTree.search(range);
|
|
60992
61003
|
queue.push(...impactedRanges.difference(visited));
|
|
61004
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
60993
61005
|
}
|
|
60994
|
-
for (const range of
|
|
61006
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
60995
61007
|
return visited;
|
|
60996
61008
|
}
|
|
60997
61009
|
};
|
|
@@ -81824,6 +81836,6 @@ const chartHelpers = {
|
|
|
81824
81836
|
//#endregion
|
|
81825
81837
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CompiledFormula, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, canExecuteInReadonly, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isSheetDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
81826
81838
|
|
|
81827
|
-
__info__.version = "19.2.
|
|
81828
|
-
__info__.date = "2026-
|
|
81829
|
-
__info__.hash = "
|
|
81839
|
+
__info__.version = "19.2.28";
|
|
81840
|
+
__info__.date = "2026-09-04T07:33:56.173Z";
|
|
81841
|
+
__info__.hash = "102af11";
|
|
@@ -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.2.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.28
|
|
6
|
+
* @date 2026-09-04T07:33:56.173Z
|
|
7
|
+
* @hash 102af11
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -8341,16 +8341,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8341
8341
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8342
8342
|
break;
|
|
8343
8343
|
case "bar":
|
|
8344
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8344
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8345
8345
|
break;
|
|
8346
8346
|
case "pyramid":
|
|
8347
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8347
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
8348
8348
|
break;
|
|
8349
8349
|
case "calendar":
|
|
8350
8350
|
drawBarChartValues(chart, options, ctx);
|
|
8351
8351
|
break;
|
|
8352
8352
|
case "funnel":
|
|
8353
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8353
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
8354
8354
|
break;
|
|
8355
8355
|
}
|
|
8356
8356
|
ctx.restore();
|
|
@@ -8420,7 +8420,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8420
8420
|
}
|
|
8421
8421
|
}
|
|
8422
8422
|
}
|
|
8423
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
8423
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
8424
8424
|
const textsPositions = {};
|
|
8425
8425
|
for (const dataset of chart._metasets) {
|
|
8426
8426
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -8435,7 +8435,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8435
8435
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
8436
8436
|
const PADDING = 3;
|
|
8437
8437
|
let xPosition;
|
|
8438
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8438
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8439
8439
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
8440
8440
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
8441
8441
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -9174,6 +9174,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
9174
9174
|
hidden,
|
|
9175
9175
|
borderColor,
|
|
9176
9176
|
backgroundColor: borderColor,
|
|
9177
|
+
pointBackgroundColor: borderColor,
|
|
9177
9178
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
9178
9179
|
};
|
|
9179
9180
|
if (fill) {
|
|
@@ -32336,9 +32337,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32336
32337
|
compositionActive = false;
|
|
32337
32338
|
spreadsheetRect = useSpreadsheetRect();
|
|
32338
32339
|
lastHoveredTokenIndex = void 0;
|
|
32339
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
32340
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
32340
32341
|
const selection = this.contentHelper.getCurrentSelection();
|
|
32341
|
-
|
|
32342
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
32343
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
32342
32344
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
32343
32345
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
32344
32346
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -32656,7 +32658,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32656
32658
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
32657
32659
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
32658
32660
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
32659
|
-
this.
|
|
32661
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
32662
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
32660
32663
|
}
|
|
32661
32664
|
}
|
|
32662
32665
|
/**
|
|
@@ -46229,7 +46232,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
46229
46232
|
}
|
|
46230
46233
|
onSelectionChanged(ranges) {
|
|
46231
46234
|
this.state.rangeHasChanged = true;
|
|
46232
|
-
|
|
46235
|
+
if (ranges.length === 0) {
|
|
46236
|
+
this.state.range = void 0;
|
|
46237
|
+
return;
|
|
46238
|
+
}
|
|
46239
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
46240
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
46241
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
46233
46242
|
}
|
|
46234
46243
|
onSelectionConfirmed() {
|
|
46235
46244
|
if (this.state.range) {
|
|
@@ -55774,6 +55783,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
55774
55783
|
return "Success";
|
|
55775
55784
|
case "UPDATE_CAROUSEL":
|
|
55776
55785
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
55786
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
55777
55787
|
return "Success";
|
|
55778
55788
|
}
|
|
55779
55789
|
return "Success";
|
|
@@ -60986,14 +60996,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60986
60996
|
*/
|
|
60987
60997
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
60988
60998
|
visited = visited.copy();
|
|
60999
|
+
let initialRangesToRemove = visited.copy();
|
|
60989
61000
|
const queue = Array.from(ranges).reverse();
|
|
60990
61001
|
while (queue.length > 0) {
|
|
60991
61002
|
const range = queue.pop();
|
|
60992
61003
|
visited.add(range);
|
|
60993
61004
|
const impactedRanges = this.rTree.search(range);
|
|
60994
61005
|
queue.push(...impactedRanges.difference(visited));
|
|
61006
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
60995
61007
|
}
|
|
60996
|
-
for (const range of
|
|
61008
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
60997
61009
|
return visited;
|
|
60998
61010
|
}
|
|
60999
61011
|
};
|
|
@@ -81884,8 +81896,8 @@ exports.stores = stores;
|
|
|
81884
81896
|
exports.tokenColors = tokenColors;
|
|
81885
81897
|
exports.tokenize = tokenize;
|
|
81886
81898
|
|
|
81887
|
-
__info__.version = "19.2.
|
|
81888
|
-
__info__.date = "2026-
|
|
81889
|
-
__info__.hash = "
|
|
81899
|
+
__info__.version = "19.2.28";
|
|
81900
|
+
__info__.date = "2026-09-04T07:33:56.173Z";
|
|
81901
|
+
__info__.hash = "102af11";
|
|
81890
81902
|
|
|
81891
81903
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|