@odoo/o-spreadsheet 19.5.0-alpha.19 → 19.5.0-alpha.20

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.
@@ -1,9 +1,9 @@
1
1
  <!--
2
2
  This file is generated by o-spreadsheet build tools. Do not edit it.
3
3
  @see https://github.com/odoo/o-spreadsheet
4
- @version 19.5.0-alpha.19
5
- @date 2026-09-10T05:38:45.995Z
6
- @hash 2b1e397
4
+ @version 19.5.0-alpha.20
5
+ @date 2026-09-16T08:02:12.495Z
6
+ @hash 4784627
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -5587,7 +5587,7 @@
5587
5587
  </t>
5588
5588
 
5589
5589
  <t t-name="o_spreadsheet.PivotHTMLRenderer">
5590
- <div class="o_pivot_html_renderer">
5590
+ <div class="w-100">
5591
5591
  <Checkbox
5592
5592
  name="'missing_values'"
5593
5593
  label.translate="Display missing cells only"
@@ -7639,7 +7639,9 @@
7639
7639
  gridDims="this.viewStore.viewports.getSheetViewDimensionWithHeaders()"
7640
7640
  onInputContextMenu.bind="this.onInputContextMenu"
7641
7641
  />
7642
- <canvas t-ref="this.canvasRef" class="os-theme-dependant pe-none"/>
7642
+ <div class="os-canvas-background">
7643
+ <canvas t-ref="this.canvasRef" class="os-theme-dependant pe-none"/>
7644
+ </div>
7643
7645
  <t t-set="focused" t-value="this.focusedClients"/>
7644
7646
  <t t-foreach="this.clientsToDisplay" t-as="client" t-key="this.getClientPositionKey(client)">
7645
7647
  <ClientTag
@@ -7701,7 +7703,7 @@
7701
7703
  </button>
7702
7704
  <div class="flex-fill">
7703
7705
  <div
7704
- class="o-fullscreen-figure os-theme-dependant o-figure position-relative border rounded shadow"
7706
+ class="o-fullscreen-figure o-figure-rounded overflow-hidden os-theme-dependant o-figure position-relative border rounded shadow"
7705
7707
  tabindex="1"
7706
7708
  t-ref="this.fullScreenFigureRef"
7707
7709
  t-on-click.stop=""
@@ -8310,10 +8312,12 @@
8310
8312
  </t>
8311
8313
 
8312
8314
  <t t-name="o-spreadsheet-SpreadsheetDashboard">
8313
- <div
8314
- class="o-dashboard-background position-absolute w-100 h-100 z-0 os-theme-dependant"
8315
- t-att-style="this.backgroundStyle"
8316
- />
8315
+ <div class="o-dashboard-background os-canvas-background position-absolute w-100 h-100 z-0">
8316
+ <div
8317
+ class="o-dashboard-sheet-background w-100 h-100 os-theme-dependant"
8318
+ t-att-style="this.backgroundStyle"
8319
+ />
8320
+ </div>
8317
8321
  <div
8318
8322
  class="o-grid o-dashboard-grid o-two-columns o-zoomable z-1"
8319
8323
  tabindex="-1"
@@ -1,6 +1,5 @@
1
1
  import { Model } from "../../model";
2
2
  import { Component } from "../../owl3_compatibility_layer";
3
- import { InformationNotification } from "../../types/env";
4
3
  import { HeaderGroup, Pixel } from "../../types/misc";
5
4
  import { ColorThemeName } from "../../types/rendering";
6
5
  import { SpreadsheetChildEnv } from "../../types/spreadsheet_env";
@@ -23,7 +22,7 @@ export declare class Spreadsheet extends Component<SpreadsheetChildEnv> {
23
22
  static template: string;
24
23
  protected props: import("@odoo/owl").Props<{
25
24
  model: Model;
26
- notifyUser?: ((notification: InformationNotification) => void) | undefined;
25
+ notifyUser?: ((notification: import("../..").InformationNotification) => void) | undefined;
27
26
  raiseError?: ((text: string, callback?: () => void) => void) | undefined;
28
27
  askConfirmation?: ((content: string, confirm: () => void, cancel?: () => void) => void) | undefined;
29
28
  }>;
@@ -94,7 +94,7 @@ export declare const DARK_MODE_FILTER_STRING: string;
94
94
  * stored in the theme so that, after the dark-mode CSS filter is applied, the
95
95
  * desired color is actually shown.
96
96
  *
97
- * This function computes the exact inverse of the DARK_MODE_FILTER chain.
97
+ * This function computes an approximate inverse of the DARK_MODE_FILTER chain.
98
98
  */
99
99
  export declare function adaptForDarkMode(displayedColor: Color): Color;
100
100
  export declare function darkenColor(color: Color, percentage: number): Color;
@@ -1,12 +1,12 @@
1
1
  import { EvaluatedCell } from "../types/cells";
2
2
  import { Getters } from "../types/getters";
3
- import { Zone } from "../types/misc";
3
+ import { CellPosition, UID, Zone } from "../types/misc";
4
4
  export type ExtendedColumnType = "error" | "number" | "percentage" | "date" | "categorical" | "label" | "boolean" | "empty";
5
5
  export interface ColumnAnalysis {
6
6
  zone: Zone;
7
7
  type: ExtendedColumnType;
8
- header?: string;
9
- hasHeader: boolean;
8
+ title?: string;
9
+ headerInZone: boolean;
10
10
  rowCount: number;
11
11
  uniqueCount: number;
12
12
  uniqueRatio: number;
@@ -14,3 +14,4 @@ export interface ColumnAnalysis {
14
14
  nonEmpty: EvaluatedCell[];
15
15
  }
16
16
  export declare function analyzeColumns(zones: Zone[], getters: Getters): ColumnAnalysis[];
17
+ export declare function getColumnTableHeaderPosition(sheetId: UID, zone: Zone, getters: Getters): CellPosition | undefined;
@@ -9,7 +9,6 @@ import { ModelConfig } from "../types/model";
9
9
  import { GridRenderingContext, LayerName } from "../types/rendering";
10
10
  import { SelectionStreamProcessor } from "../types/selection_stream_processor";
11
11
  import { BasePlugin } from "./base_plugin";
12
- export type UIActions = Pick<ModelConfig, "notifyUI" | "raiseBlockingErrorUI">;
13
12
  export interface UIPluginConfig {
14
13
  readonly getters: Getters;
15
14
  readonly stateObserver: StateObserver;
@@ -17,7 +16,6 @@ export interface UIPluginConfig {
17
16
  readonly canDispatch: CommandDispatcher["dispatch"];
18
17
  readonly selection: SelectionStreamProcessor;
19
18
  readonly moveClient: (position: ClientPosition) => void;
20
- readonly uiActions: UIActions;
21
19
  readonly custom: ModelConfig["custom"];
22
20
  readonly session: Session;
23
21
  readonly defaultCurrency?: Partial<Currency>;
@@ -37,10 +35,9 @@ export interface UIPluginConstructor {
37
35
  export declare class UIPlugin<State = any> extends BasePlugin<State, Command> {
38
36
  static layers: Readonly<LayerName[]>;
39
37
  protected getters: Getters;
40
- protected ui: UIActions;
41
38
  protected selection: SelectionStreamProcessor;
42
39
  protected dispatch: CommandDispatcher["dispatch"];
43
40
  protected canDispatch: CommandDispatcher["dispatch"];
44
- constructor({ getters, stateObserver, dispatch, canDispatch, uiActions, selection, }: UIPluginConfig);
41
+ constructor({ getters, stateObserver, dispatch, canDispatch, selection }: UIPluginConfig);
45
42
  drawLayer(ctx: GridRenderingContext, layer: LayerName): void;
46
43
  }
@@ -29,6 +29,7 @@ export interface SingleDateContext {
29
29
  title: string;
30
30
  lastCellXC: string;
31
31
  rowCount: number;
32
+ source: ChartRangeDataSource<string>;
32
33
  }
33
34
  /** Pattern D — Single categorical column */
34
35
  export interface SingleCategoricalContext {
@@ -115,7 +116,7 @@ export interface LabelVsMultipleNumbersContext {
115
116
  yRanges: string[];
116
117
  sizeRange: string;
117
118
  labelRange: string;
118
- hasTitle: boolean;
119
+ headerInZone: boolean;
119
120
  };
120
121
  }
121
122
  /** Pattern R — Categorical + Two Numbers (Population Pyramid or Grouped) */
@@ -2,7 +2,6 @@ import { GeoChartRegion } from "./chart/geo_chart";
2
2
  import { Client, ClientPosition } from "./collaborative/session";
3
3
  import { TransportService } from "./collaborative/transport_service";
4
4
  import { Currency } from "./currency";
5
- import { InformationNotification } from "./env";
6
5
  import { FileStore } from "./files";
7
6
  import { Locale } from "./locale";
8
7
  import { Color } from "./misc";
@@ -28,8 +27,6 @@ export interface ModelConfig {
28
27
  readonly transportService: TransportService;
29
28
  readonly client: Client;
30
29
  readonly snapshotRequested: boolean;
31
- readonly notifyUI: (payload: InformationNotification) => void;
32
- readonly raiseBlockingErrorUI: (text: string) => void;
33
30
  readonly customColors: Color[];
34
31
  readonly colorScheme?: ColorThemeName;
35
32
  }
@@ -89,8 +89,25 @@ export interface SheetDOMScrollInfo {
89
89
  export type ColorThemeName = "light" | "dark";
90
90
  export interface GridRenderingTheme {
91
91
  colorThemeName: ColorThemeName;
92
- backgroundColor: string;
92
+ /**
93
+ * Default background of a chart. Deliberately NOT the background of the grid: the grid canvas is
94
+ * transparent where no cell colour is drawn, and its background comes from the
95
+ * `--os-canvas-background-color` CSS variable so integrators can override it. Painting this on the
96
+ * grid would ignore that override, so no such field exists here.
97
+ */
98
+ chartBackgroundColor: string;
99
+ /**
100
+ * Base colour of the grid lines. Blended with the sheet background at draw time so the lines pick
101
+ * up its tint while staying opaque — they are drawn opaque because adjacent boxes stroke their
102
+ * shared border twice, which a translucent stroke would darken.
103
+ */
93
104
  gridBorderColor: string;
105
+ /**
106
+ * Used instead when the sheet has no background: the canvas is transparent there and the colour
107
+ * behind it lives outside the dark mode filter, so there is nothing to blend against. This is
108
+ * `gridBorderColor` already blended with the default background.
109
+ */
110
+ gridBorderColorOnDefaultBackground: string;
94
111
  headerBackgroundColor: string;
95
112
  headerActiveBackgroundColor: string;
96
113
  headerSelectedBackgroundColor: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "19.5.0-alpha.19",
3
+ "version": "19.5.0-alpha.20",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o_spreadsheet.cjs",