@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.
@@ -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.32
6
- * @date 2026-08-21T15:29:31.737Z
7
- * @hash d34d0e7
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.32
6
- * @date 2026-08-21T15:29:30.638Z
7
- * @hash d34d0e7
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
- if (selection.start !== selection.end) return;
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.debouncedHover(tokenIndex, hoveredRect);
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
- this.state.range = ranges[0];
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 ranges) visited.delete(range);
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.32";
79199
- __info__.date = "2026-08-21T15:29:30.638Z";
79200
- __info__.hash = "d34d0e7";
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.32
6
- * @date 2026-08-21T15:29:30.638Z
7
- * @hash d34d0e7
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
- if (selection.start !== selection.end) return;
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.debouncedHover(tokenIndex, hoveredRect);
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
- this.state.range = ranges[0];
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 ranges) visited.delete(range);
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.32";
79254
- __info__.date = "2026-08-21T15:29:30.638Z";
79255
- __info__.hash = "d34d0e7";
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);