@odoo/o-spreadsheet 19.1.32 → 19.1.34
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.1.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.1.34
|
|
6
|
+
* @date 2026-09-04T07:25:45.601Z
|
|
7
|
+
* @hash b709c26
|
|
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);
|
|
@@ -1340,6 +1340,12 @@
|
|
|
1340
1340
|
background-color: var(--os-action-color);
|
|
1341
1341
|
border-color: var(--os-action-color) !important;
|
|
1342
1342
|
}
|
|
1343
|
+
|
|
1344
|
+
&:focus {
|
|
1345
|
+
outline: none;
|
|
1346
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
1347
|
+
border-color: var(--os-action-color);
|
|
1348
|
+
}
|
|
1343
1349
|
}
|
|
1344
1350
|
}
|
|
1345
1351
|
}
|
|
@@ -2576,6 +2582,9 @@
|
|
|
2576
2582
|
position: absolute;
|
|
2577
2583
|
cursor: pointer;
|
|
2578
2584
|
}
|
|
2585
|
+
.o-grid.o-dashboard-grid {
|
|
2586
|
+
background: #ffffff;
|
|
2587
|
+
}
|
|
2579
2588
|
}
|
|
2580
2589
|
|
|
2581
2590
|
/* Originates from src/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.css */
|
|
@@ -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.1.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.1.34
|
|
6
|
+
* @date 2026-09-04T07:25:44.071Z
|
|
7
|
+
* @hash b709c26
|
|
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";
|
|
@@ -8263,16 +8263,16 @@ const chartShowValuesPlugin = {
|
|
|
8263
8263
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8264
8264
|
break;
|
|
8265
8265
|
case "bar":
|
|
8266
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8266
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8267
8267
|
break;
|
|
8268
8268
|
case "pyramid":
|
|
8269
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8269
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
8270
8270
|
break;
|
|
8271
8271
|
case "calendar":
|
|
8272
8272
|
drawBarChartValues(chart, options, ctx);
|
|
8273
8273
|
break;
|
|
8274
8274
|
case "funnel":
|
|
8275
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8275
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
8276
8276
|
break;
|
|
8277
8277
|
}
|
|
8278
8278
|
ctx.restore();
|
|
@@ -8342,7 +8342,7 @@ function drawBarChartValues(chart, options, ctx) {
|
|
|
8342
8342
|
}
|
|
8343
8343
|
}
|
|
8344
8344
|
}
|
|
8345
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
8345
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
8346
8346
|
const textsPositions = {};
|
|
8347
8347
|
for (const dataset of chart._metasets) {
|
|
8348
8348
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -8357,7 +8357,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
8357
8357
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
8358
8358
|
const PADDING = 3;
|
|
8359
8359
|
let xPosition;
|
|
8360
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8360
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8361
8361
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
8362
8362
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
8363
8363
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -9096,6 +9096,7 @@ function getRadarChartDatasets(definition, args) {
|
|
|
9096
9096
|
hidden,
|
|
9097
9097
|
borderColor,
|
|
9098
9098
|
backgroundColor: borderColor,
|
|
9099
|
+
pointBackgroundColor: borderColor,
|
|
9099
9100
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
9100
9101
|
};
|
|
9101
9102
|
if (fill) {
|
|
@@ -26873,9 +26874,10 @@ var Composer = class extends Component {
|
|
|
26873
26874
|
compositionActive = false;
|
|
26874
26875
|
spreadsheetRect = useSpreadsheetRect();
|
|
26875
26876
|
lastHoveredTokenIndex = void 0;
|
|
26876
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
26877
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
26877
26878
|
const selection = this.contentHelper.getCurrentSelection();
|
|
26878
|
-
|
|
26879
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
26880
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
26879
26881
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
26880
26882
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
26881
26883
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -27193,7 +27195,8 @@ var Composer = class extends Component {
|
|
|
27193
27195
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
27194
27196
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
27195
27197
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
27196
|
-
this.
|
|
27198
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
27199
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
27197
27200
|
}
|
|
27198
27201
|
}
|
|
27199
27202
|
/**
|
|
@@ -50993,7 +50996,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
50993
50996
|
}
|
|
50994
50997
|
onSelectionChanged(ranges) {
|
|
50995
50998
|
this.state.rangeHasChanged = true;
|
|
50996
|
-
|
|
50999
|
+
if (ranges.length === 0) {
|
|
51000
|
+
this.state.range = void 0;
|
|
51001
|
+
return;
|
|
51002
|
+
}
|
|
51003
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
51004
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
51005
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
50997
51006
|
}
|
|
50998
51007
|
onSelectionConfirmed() {
|
|
50999
51008
|
if (this.state.range) {
|
|
@@ -53665,6 +53674,7 @@ var CarouselPlugin = class extends CorePlugin {
|
|
|
53665
53674
|
return "Success";
|
|
53666
53675
|
case "UPDATE_CAROUSEL":
|
|
53667
53676
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
53677
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
53668
53678
|
return "Success";
|
|
53669
53679
|
}
|
|
53670
53680
|
return "Success";
|
|
@@ -58755,14 +58765,16 @@ var FormulaDependencyGraph = class {
|
|
|
58755
58765
|
*/
|
|
58756
58766
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
58757
58767
|
visited = visited.copy();
|
|
58768
|
+
let initialRangesToRemove = visited.copy();
|
|
58758
58769
|
const queue = Array.from(ranges).reverse();
|
|
58759
58770
|
while (queue.length > 0) {
|
|
58760
58771
|
const range = queue.pop();
|
|
58761
58772
|
visited.add(range);
|
|
58762
58773
|
const impactedRanges = this.rTree.search(range);
|
|
58763
58774
|
queue.push(...impactedRanges.difference(visited));
|
|
58775
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
58764
58776
|
}
|
|
58765
|
-
for (const range of
|
|
58777
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
58766
58778
|
return visited;
|
|
58767
58779
|
}
|
|
58768
58780
|
};
|
|
@@ -79195,6 +79207,6 @@ const chartHelpers = {
|
|
|
79195
79207
|
//#endregion
|
|
79196
79208
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
79197
79209
|
|
|
79198
|
-
__info__.version = "19.1.
|
|
79199
|
-
__info__.date = "2026-
|
|
79200
|
-
__info__.hash = "
|
|
79210
|
+
__info__.version = "19.1.34";
|
|
79211
|
+
__info__.date = "2026-09-04T07:25:44.071Z";
|
|
79212
|
+
__info__.hash = "b709c26";
|
|
@@ -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.1.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.1.34
|
|
6
|
+
* @date 2026-09-04T07:25:44.071Z
|
|
7
|
+
* @hash b709c26
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -8265,16 +8265,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8265
8265
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8266
8266
|
break;
|
|
8267
8267
|
case "bar":
|
|
8268
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8268
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8269
8269
|
break;
|
|
8270
8270
|
case "pyramid":
|
|
8271
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8271
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
8272
8272
|
break;
|
|
8273
8273
|
case "calendar":
|
|
8274
8274
|
drawBarChartValues(chart, options, ctx);
|
|
8275
8275
|
break;
|
|
8276
8276
|
case "funnel":
|
|
8277
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8277
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
8278
8278
|
break;
|
|
8279
8279
|
}
|
|
8280
8280
|
ctx.restore();
|
|
@@ -8344,7 +8344,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8344
8344
|
}
|
|
8345
8345
|
}
|
|
8346
8346
|
}
|
|
8347
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
8347
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
8348
8348
|
const textsPositions = {};
|
|
8349
8349
|
for (const dataset of chart._metasets) {
|
|
8350
8350
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -8359,7 +8359,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8359
8359
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
8360
8360
|
const PADDING = 3;
|
|
8361
8361
|
let xPosition;
|
|
8362
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8362
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8363
8363
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
8364
8364
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
8365
8365
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -9098,6 +9098,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
9098
9098
|
hidden,
|
|
9099
9099
|
borderColor,
|
|
9100
9100
|
backgroundColor: borderColor,
|
|
9101
|
+
pointBackgroundColor: borderColor,
|
|
9101
9102
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
9102
9103
|
};
|
|
9103
9104
|
if (fill) {
|
|
@@ -26875,9 +26876,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
26875
26876
|
compositionActive = false;
|
|
26876
26877
|
spreadsheetRect = useSpreadsheetRect();
|
|
26877
26878
|
lastHoveredTokenIndex = void 0;
|
|
26878
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
26879
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
26879
26880
|
const selection = this.contentHelper.getCurrentSelection();
|
|
26880
|
-
|
|
26881
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
26882
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
26881
26883
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
26882
26884
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
26883
26885
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -27195,7 +27197,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27195
27197
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
27196
27198
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
27197
27199
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
27198
|
-
this.
|
|
27200
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
27201
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
27199
27202
|
}
|
|
27200
27203
|
}
|
|
27201
27204
|
/**
|
|
@@ -50995,7 +50998,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
50995
50998
|
}
|
|
50996
50999
|
onSelectionChanged(ranges) {
|
|
50997
51000
|
this.state.rangeHasChanged = true;
|
|
50998
|
-
|
|
51001
|
+
if (ranges.length === 0) {
|
|
51002
|
+
this.state.range = void 0;
|
|
51003
|
+
return;
|
|
51004
|
+
}
|
|
51005
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
51006
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
51007
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
50999
51008
|
}
|
|
51000
51009
|
onSelectionConfirmed() {
|
|
51001
51010
|
if (this.state.range) {
|
|
@@ -53667,6 +53676,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
53667
53676
|
return "Success";
|
|
53668
53677
|
case "UPDATE_CAROUSEL":
|
|
53669
53678
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
53679
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
53670
53680
|
return "Success";
|
|
53671
53681
|
}
|
|
53672
53682
|
return "Success";
|
|
@@ -58757,14 +58767,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58757
58767
|
*/
|
|
58758
58768
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
58759
58769
|
visited = visited.copy();
|
|
58770
|
+
let initialRangesToRemove = visited.copy();
|
|
58760
58771
|
const queue = Array.from(ranges).reverse();
|
|
58761
58772
|
while (queue.length > 0) {
|
|
58762
58773
|
const range = queue.pop();
|
|
58763
58774
|
visited.add(range);
|
|
58764
58775
|
const impactedRanges = this.rTree.search(range);
|
|
58765
58776
|
queue.push(...impactedRanges.difference(visited));
|
|
58777
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
58766
58778
|
}
|
|
58767
|
-
for (const range of
|
|
58779
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
58768
58780
|
return visited;
|
|
58769
58781
|
}
|
|
58770
58782
|
};
|
|
@@ -79250,8 +79262,8 @@ exports.stores = stores;
|
|
|
79250
79262
|
exports.tokenColors = tokenColors;
|
|
79251
79263
|
exports.tokenize = tokenize;
|
|
79252
79264
|
|
|
79253
|
-
__info__.version = "19.1.
|
|
79254
|
-
__info__.date = "2026-
|
|
79255
|
-
__info__.hash = "
|
|
79265
|
+
__info__.version = "19.1.34";
|
|
79266
|
+
__info__.date = "2026-09-04T07:25:44.071Z";
|
|
79267
|
+
__info__.hash = "b709c26";
|
|
79256
79268
|
|
|
79257
79269
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|