@odoo/o-spreadsheet 19.0.37 → 19.0.38

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.0.37
6
- * @date 2026-06-06T06:22:21.404Z
7
- * @hash 41aace0
5
+ * @version 19.0.38
6
+ * @date 2026-06-17T08:50:59.627Z
7
+ * @hash f469250
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -43585,8 +43585,12 @@ var CellComposerStore = class extends AbstractComposerStore {
43585
43585
  }
43586
43586
  stopEdition(direction) {
43587
43587
  if (this.canStopEdition()) {
43588
+ const { col, row } = this.currentEditedCell;
43588
43589
  this._stopEdition();
43589
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
43590
+ if (direction) {
43591
+ this.model.selection.selectCell(col, row);
43592
+ this.model.selection.moveAnchorCell(direction, 1);
43593
+ }
43590
43594
  return;
43591
43595
  }
43592
43596
  const editedCell = this.currentEditedCell;
@@ -51416,9 +51420,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51416
51420
  allSheetsMatches = [];
51417
51421
  activeSheetMatches = [];
51418
51422
  specificRangeMatches = [];
51423
+ selectedMatchPosition = null;
51419
51424
  currentSearchRegex = null;
51420
51425
  initialShowFormulaState;
51421
- preserveSelectedMatchIndex = false;
51422
51426
  irreplaceableMatchCount = 0;
51423
51427
  isSearchDirty = false;
51424
51428
  shouldFinalizeUpdateSelection = false;
@@ -51540,7 +51544,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51540
51544
  */
51541
51545
  _updateSearch(toSearch, searchOptions) {
51542
51546
  this.searchOptions = searchOptions;
51543
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
51547
+ if (toSearch !== this.toSearch) {
51548
+ this.selectedMatchIndex = null;
51549
+ this.selectedMatchPosition = null;
51550
+ }
51544
51551
  this.toSearch = toSearch;
51545
51552
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
51546
51553
  this.refreshSearch({
@@ -51552,8 +51559,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51552
51559
  * refresh the matches according to the current search options
51553
51560
  */
51554
51561
  refreshSearch(options) {
51555
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
51556
51562
  this.findMatches();
51563
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
51564
+ this.selectedMatchIndex = null;
51565
+ this.selectedMatchPosition = null;
51566
+ } else {
51567
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
51568
+ if (index !== -1) this.selectedMatchIndex = index;
51569
+ }
51557
51570
  this.selectNextCell(0, options);
51558
51571
  }
51559
51572
  getSheetsInSearchOrder() {
@@ -51621,6 +51634,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51621
51634
  const matches = this.searchMatches;
51622
51635
  if (!matches.length) {
51623
51636
  this.selectedMatchIndex = null;
51637
+ this.selectedMatchPosition = null;
51624
51638
  return;
51625
51639
  }
51626
51640
  let nextIndex;
@@ -51634,14 +51648,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51634
51648
  } else nextIndex = this.selectedMatchIndex + indexChange;
51635
51649
  nextIndex = (nextIndex + matches.length) % matches.length;
51636
51650
  this.selectedMatchIndex = nextIndex;
51651
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
51637
51652
  const selectedMatch = matches[nextIndex];
51638
51653
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
51639
- this.preserveSelectedMatchIndex = true;
51640
51654
  this.model.dispatch("ACTIVATE_SHEET", {
51641
51655
  sheetIdFrom: this.getters.getActiveSheetId(),
51642
51656
  sheetIdTo: selectedMatch.sheetId
51643
51657
  });
51644
- this.preserveSelectedMatchIndex = false;
51645
51658
  this.isSearchDirty = false;
51646
51659
  }
51647
51660
  this.model.selection.getBackToDefault();
@@ -51652,7 +51665,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51652
51665
  */
51653
51666
  replace() {
51654
51667
  if (this.selectedMatchIndex === null) return;
51655
- this.preserveSelectedMatchIndex = true;
51656
51668
  this.shouldFinalizeUpdateSelection = true;
51657
51669
  this.model.dispatch("REPLACE_SEARCH", {
51658
51670
  searchString: this.toSearch,
@@ -51660,7 +51672,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51660
51672
  matches: [this.searchMatches[this.selectedMatchIndex]],
51661
51673
  searchOptions: this.searchOptions
51662
51674
  });
51663
- this.preserveSelectedMatchIndex = false;
51664
51675
  }
51665
51676
  /**
51666
51677
  * Apply the replace function to all the matches one time.
@@ -63096,7 +63107,7 @@ iconsOnCellRegistry.add("pivot_collapse", (getters, position) => {
63096
63107
  const definition = getters.getPivotCoreDefinition(pivotId);
63097
63108
  const isDashboard = getters.isDashboard();
63098
63109
  const fields = pivotCell.dimension === "COL" ? definition.columns : definition.rows;
63099
- const hasIcon = !isDashboard && pivotCell.domain.length !== fields.length;
63110
+ const hasIcon = !isDashboard && !getters.shouldShowFormulas() && pivotCell.domain.length !== fields.length;
63100
63111
  const isCollapsed = (definition.collapsedDomains?.[pivotCell.dimension] ?? []).some((domain) => deepEquals(domain, pivotCell.domain));
63101
63112
  const indent = pivotCell.dimension === "ROW" ? (pivotCell.domain.length - 1) * 15 : 0;
63102
63113
  return {
@@ -79567,6 +79578,6 @@ exports.stores = stores;
79567
79578
  exports.tokenColors = tokenColors;
79568
79579
  exports.tokenize = tokenize;
79569
79580
 
79570
- __info__.version = "19.0.37";
79571
- __info__.date = "2026-06-06T06:22:21.404Z";
79572
- __info__.hash = "41aace0";
79581
+ __info__.version = "19.0.38";
79582
+ __info__.date = "2026-06-17T08:50:59.627Z";
79583
+ __info__.hash = "f469250";
@@ -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.0.37
6
- * @date 2026-06-06T06:22:23.027Z
7
- * @hash 41aace0
5
+ * @version 19.0.38
6
+ * @date 2026-06-17T08:51:01.002Z
7
+ * @hash f469250
8
8
  */
9
9
  /* Originates from src/components/top_bar/top_bar.scss */
10
10
  @media (max-width: 1200px) {
@@ -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.0.37
6
- * @date 2026-06-06T06:22:21.404Z
7
- * @hash 41aace0
5
+ * @version 19.0.38
6
+ * @date 2026-06-17T08:50:59.627Z
7
+ * @hash f469250
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, xml } from "@odoo/owl";
@@ -43584,8 +43584,12 @@ var CellComposerStore = class extends AbstractComposerStore {
43584
43584
  }
43585
43585
  stopEdition(direction) {
43586
43586
  if (this.canStopEdition()) {
43587
+ const { col, row } = this.currentEditedCell;
43587
43588
  this._stopEdition();
43588
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
43589
+ if (direction) {
43590
+ this.model.selection.selectCell(col, row);
43591
+ this.model.selection.moveAnchorCell(direction, 1);
43592
+ }
43589
43593
  return;
43590
43594
  }
43591
43595
  const editedCell = this.currentEditedCell;
@@ -51415,9 +51419,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51415
51419
  allSheetsMatches = [];
51416
51420
  activeSheetMatches = [];
51417
51421
  specificRangeMatches = [];
51422
+ selectedMatchPosition = null;
51418
51423
  currentSearchRegex = null;
51419
51424
  initialShowFormulaState;
51420
- preserveSelectedMatchIndex = false;
51421
51425
  irreplaceableMatchCount = 0;
51422
51426
  isSearchDirty = false;
51423
51427
  shouldFinalizeUpdateSelection = false;
@@ -51539,7 +51543,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51539
51543
  */
51540
51544
  _updateSearch(toSearch, searchOptions) {
51541
51545
  this.searchOptions = searchOptions;
51542
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
51546
+ if (toSearch !== this.toSearch) {
51547
+ this.selectedMatchIndex = null;
51548
+ this.selectedMatchPosition = null;
51549
+ }
51543
51550
  this.toSearch = toSearch;
51544
51551
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
51545
51552
  this.refreshSearch({
@@ -51551,8 +51558,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51551
51558
  * refresh the matches according to the current search options
51552
51559
  */
51553
51560
  refreshSearch(options) {
51554
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
51555
51561
  this.findMatches();
51562
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
51563
+ this.selectedMatchIndex = null;
51564
+ this.selectedMatchPosition = null;
51565
+ } else {
51566
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
51567
+ if (index !== -1) this.selectedMatchIndex = index;
51568
+ }
51556
51569
  this.selectNextCell(0, options);
51557
51570
  }
51558
51571
  getSheetsInSearchOrder() {
@@ -51620,6 +51633,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51620
51633
  const matches = this.searchMatches;
51621
51634
  if (!matches.length) {
51622
51635
  this.selectedMatchIndex = null;
51636
+ this.selectedMatchPosition = null;
51623
51637
  return;
51624
51638
  }
51625
51639
  let nextIndex;
@@ -51633,14 +51647,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51633
51647
  } else nextIndex = this.selectedMatchIndex + indexChange;
51634
51648
  nextIndex = (nextIndex + matches.length) % matches.length;
51635
51649
  this.selectedMatchIndex = nextIndex;
51650
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
51636
51651
  const selectedMatch = matches[nextIndex];
51637
51652
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
51638
- this.preserveSelectedMatchIndex = true;
51639
51653
  this.model.dispatch("ACTIVATE_SHEET", {
51640
51654
  sheetIdFrom: this.getters.getActiveSheetId(),
51641
51655
  sheetIdTo: selectedMatch.sheetId
51642
51656
  });
51643
- this.preserveSelectedMatchIndex = false;
51644
51657
  this.isSearchDirty = false;
51645
51658
  }
51646
51659
  this.model.selection.getBackToDefault();
@@ -51651,7 +51664,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51651
51664
  */
51652
51665
  replace() {
51653
51666
  if (this.selectedMatchIndex === null) return;
51654
- this.preserveSelectedMatchIndex = true;
51655
51667
  this.shouldFinalizeUpdateSelection = true;
51656
51668
  this.model.dispatch("REPLACE_SEARCH", {
51657
51669
  searchString: this.toSearch,
@@ -51659,7 +51671,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
51659
51671
  matches: [this.searchMatches[this.selectedMatchIndex]],
51660
51672
  searchOptions: this.searchOptions
51661
51673
  });
51662
- this.preserveSelectedMatchIndex = false;
51663
51674
  }
51664
51675
  /**
51665
51676
  * Apply the replace function to all the matches one time.
@@ -62911,7 +62922,7 @@ iconsOnCellRegistry.add("pivot_collapse", (getters, position) => {
62911
62922
  const definition = getters.getPivotCoreDefinition(pivotId);
62912
62923
  const isDashboard = getters.isDashboard();
62913
62924
  const fields = pivotCell.dimension === "COL" ? definition.columns : definition.rows;
62914
- const hasIcon = !isDashboard && pivotCell.domain.length !== fields.length;
62925
+ const hasIcon = !isDashboard && !getters.shouldShowFormulas() && pivotCell.domain.length !== fields.length;
62915
62926
  const isCollapsed = (definition.collapsedDomains?.[pivotCell.dimension] ?? []).some((domain) => deepEquals(domain, pivotCell.domain));
62916
62927
  const indent = pivotCell.dimension === "ROW" ? (pivotCell.domain.length - 1) * 15 : 0;
62917
62928
  return {
@@ -79331,6 +79342,6 @@ const chartHelpers = {
79331
79342
  //#endregion
79332
79343
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
79333
79344
 
79334
- __info__.version = "19.0.37";
79335
- __info__.date = "2026-06-06T06:22:21.404Z";
79336
- __info__.hash = "41aace0";
79345
+ __info__.version = "19.0.38";
79346
+ __info__.date = "2026-06-17T08:50:59.627Z";
79347
+ __info__.hash = "f469250";
@@ -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.0.37
6
- * @date 2026-06-06T06:22:21.404Z
7
- * @hash 41aace0
5
+ * @version 19.0.38
6
+ * @date 2026-06-17T08:50:59.627Z
7
+ * @hash f469250
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -43586,8 +43586,12 @@ stores.inject(MyMetaStore, storeInstance);
43586
43586
  }
43587
43587
  stopEdition(direction) {
43588
43588
  if (this.canStopEdition()) {
43589
+ const { col, row } = this.currentEditedCell;
43589
43590
  this._stopEdition();
43590
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
43591
+ if (direction) {
43592
+ this.model.selection.selectCell(col, row);
43593
+ this.model.selection.moveAnchorCell(direction, 1);
43594
+ }
43591
43595
  return;
43592
43596
  }
43593
43597
  const editedCell = this.currentEditedCell;
@@ -51417,9 +51421,9 @@ stores.inject(MyMetaStore, storeInstance);
51417
51421
  allSheetsMatches = [];
51418
51422
  activeSheetMatches = [];
51419
51423
  specificRangeMatches = [];
51424
+ selectedMatchPosition = null;
51420
51425
  currentSearchRegex = null;
51421
51426
  initialShowFormulaState;
51422
- preserveSelectedMatchIndex = false;
51423
51427
  irreplaceableMatchCount = 0;
51424
51428
  isSearchDirty = false;
51425
51429
  shouldFinalizeUpdateSelection = false;
@@ -51541,7 +51545,10 @@ stores.inject(MyMetaStore, storeInstance);
51541
51545
  */
51542
51546
  _updateSearch(toSearch, searchOptions) {
51543
51547
  this.searchOptions = searchOptions;
51544
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
51548
+ if (toSearch !== this.toSearch) {
51549
+ this.selectedMatchIndex = null;
51550
+ this.selectedMatchPosition = null;
51551
+ }
51545
51552
  this.toSearch = toSearch;
51546
51553
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
51547
51554
  this.refreshSearch({
@@ -51553,8 +51560,14 @@ stores.inject(MyMetaStore, storeInstance);
51553
51560
  * refresh the matches according to the current search options
51554
51561
  */
51555
51562
  refreshSearch(options) {
51556
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
51557
51563
  this.findMatches();
51564
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
51565
+ this.selectedMatchIndex = null;
51566
+ this.selectedMatchPosition = null;
51567
+ } else {
51568
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
51569
+ if (index !== -1) this.selectedMatchIndex = index;
51570
+ }
51558
51571
  this.selectNextCell(0, options);
51559
51572
  }
51560
51573
  getSheetsInSearchOrder() {
@@ -51622,6 +51635,7 @@ stores.inject(MyMetaStore, storeInstance);
51622
51635
  const matches = this.searchMatches;
51623
51636
  if (!matches.length) {
51624
51637
  this.selectedMatchIndex = null;
51638
+ this.selectedMatchPosition = null;
51625
51639
  return;
51626
51640
  }
51627
51641
  let nextIndex;
@@ -51635,14 +51649,13 @@ stores.inject(MyMetaStore, storeInstance);
51635
51649
  } else nextIndex = this.selectedMatchIndex + indexChange;
51636
51650
  nextIndex = (nextIndex + matches.length) % matches.length;
51637
51651
  this.selectedMatchIndex = nextIndex;
51652
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
51638
51653
  const selectedMatch = matches[nextIndex];
51639
51654
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
51640
- this.preserveSelectedMatchIndex = true;
51641
51655
  this.model.dispatch("ACTIVATE_SHEET", {
51642
51656
  sheetIdFrom: this.getters.getActiveSheetId(),
51643
51657
  sheetIdTo: selectedMatch.sheetId
51644
51658
  });
51645
- this.preserveSelectedMatchIndex = false;
51646
51659
  this.isSearchDirty = false;
51647
51660
  }
51648
51661
  this.model.selection.getBackToDefault();
@@ -51653,7 +51666,6 @@ stores.inject(MyMetaStore, storeInstance);
51653
51666
  */
51654
51667
  replace() {
51655
51668
  if (this.selectedMatchIndex === null) return;
51656
- this.preserveSelectedMatchIndex = true;
51657
51669
  this.shouldFinalizeUpdateSelection = true;
51658
51670
  this.model.dispatch("REPLACE_SEARCH", {
51659
51671
  searchString: this.toSearch,
@@ -51661,7 +51673,6 @@ stores.inject(MyMetaStore, storeInstance);
51661
51673
  matches: [this.searchMatches[this.selectedMatchIndex]],
51662
51674
  searchOptions: this.searchOptions
51663
51675
  });
51664
- this.preserveSelectedMatchIndex = false;
51665
51676
  }
51666
51677
  /**
51667
51678
  * Apply the replace function to all the matches one time.
@@ -62913,7 +62924,7 @@ stores.inject(MyMetaStore, storeInstance);
62913
62924
  const definition = getters.getPivotCoreDefinition(pivotId);
62914
62925
  const isDashboard = getters.isDashboard();
62915
62926
  const fields = pivotCell.dimension === "COL" ? definition.columns : definition.rows;
62916
- const hasIcon = !isDashboard && pivotCell.domain.length !== fields.length;
62927
+ const hasIcon = !isDashboard && !getters.shouldShowFormulas() && pivotCell.domain.length !== fields.length;
62917
62928
  const isCollapsed = (definition.collapsedDomains?.[pivotCell.dimension] ?? []).some((domain) => deepEquals(domain, pivotCell.domain));
62918
62929
  const indent = pivotCell.dimension === "ROW" ? (pivotCell.domain.length - 1) * 15 : 0;
62919
62930
  return {
@@ -79384,8 +79395,8 @@ exports.stores = stores;
79384
79395
  exports.tokenColors = tokenColors;
79385
79396
  exports.tokenize = tokenize;
79386
79397
 
79387
- __info__.version = "19.0.37";
79388
- __info__.date = "2026-06-06T06:22:21.404Z";
79389
- __info__.hash = "41aace0";
79398
+ __info__.version = "19.0.38";
79399
+ __info__.date = "2026-06-17T08:50:59.627Z";
79400
+ __info__.hash = "f469250";
79390
79401
 
79391
79402
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);