@odoo/o-spreadsheet 20.1.0-alpha.0 → 20.1.0-alpha.2

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.
Files changed (39) hide show
  1. package/dist/o_spreadsheet.cjs +36872 -36621
  2. package/dist/o_spreadsheet.css +3 -3
  3. package/dist/o_spreadsheet.esm.js +36727 -36476
  4. package/dist/o_spreadsheet.iife.js +36723 -36472
  5. package/dist/o_spreadsheet.min.iife.js +309 -309
  6. package/dist/o_spreadsheet.xml +40 -6
  7. package/dist/types/actions/format_actions.d.ts +0 -1
  8. package/dist/types/components/figures/figure_carousel/figure_carousel.d.ts +1 -0
  9. package/dist/types/components/figures/figure_chart/figure_chart.d.ts +3 -1
  10. package/dist/types/components/grid/grid.d.ts +4 -0
  11. package/dist/types/components/grid_overlay/grid_overlay.d.ts +0 -1
  12. package/dist/types/components/header_resize_editor/header_resize_editor.d.ts +40 -0
  13. package/dist/types/components/named_range_selector/named_range_selector.d.ts +1 -0
  14. package/dist/types/components/number_editor/number_editor.d.ts +5 -0
  15. package/dist/types/components/side_panel/carousel_panel/carousel_panel.d.ts +1 -0
  16. package/dist/types/components/side_panel/conditional_formatting/cf_editor/cf_editor.d.ts +1 -0
  17. package/dist/types/components/side_panel/conditional_formatting/cf_preview/cf_preview.d.ts +1 -0
  18. package/dist/types/components/side_panel/conditional_formatting/cf_preview_list/cf_preview_list.d.ts +2 -0
  19. package/dist/types/components/side_panel/data_validation/data_validation_panel.d.ts +2 -0
  20. package/dist/types/components/side_panel/data_validation/dv_editor/dv_editor.d.ts +1 -0
  21. package/dist/types/components/side_panel/data_validation/dv_preview/dv_preview.d.ts +1 -0
  22. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_measure/pivot_measure.d.ts +2 -0
  23. package/dist/types/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel.d.ts +1 -0
  24. package/dist/types/components/side_panel/pivot/pivot_title_section/pivot_title_section.d.ts +2 -0
  25. package/dist/types/components/side_panel/side_panel/side_panel.d.ts +1 -1
  26. package/dist/types/components/side_panel/side_panel/side_panel_store.d.ts +1 -1
  27. package/dist/types/components/side_panel/side_panels/side_panels.d.ts +2 -2
  28. package/dist/types/components/tables/table_dropdown_button/table_dropdown_button.d.ts +1 -0
  29. package/dist/types/components/tables/table_style_preview/table_style_preview.d.ts +1 -0
  30. package/dist/types/components/tables/table_styles_popover/table_styles_popover.d.ts +1 -0
  31. package/dist/types/components/top_bar/zoom_editor/zoom_editor.d.ts +4 -2
  32. package/dist/types/constants.d.ts +1 -0
  33. package/dist/types/helpers/format/format.d.ts +2 -0
  34. package/dist/types/index.d.ts +3 -2
  35. package/dist/types/registries/side_panel_registry.d.ts +2 -15
  36. package/dist/types/registries/side_panel_registry_definition.d.ts +21 -0
  37. package/dist/types/stores/viewports_store.d.ts +2 -0
  38. package/dist/types/types/spreadsheet_env.d.ts +0 -3
  39. package/package.json +1 -1
@@ -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 20.1.0-alpha.0
5
- @date 2026-09-17T09:32:17.774Z
6
- @hash 4020a44
4
+ @version 20.1.0-alpha.2
5
+ @date 2026-09-21T06:31:53.568Z
6
+ @hash 63c49a8
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -202,14 +202,14 @@
202
202
 
203
203
  <div t-name="o-spreadsheet-TopBarZoom" t-on-click.stop="">
204
204
  <NumberEditor
205
- currentValue="this.currentFontSize"
205
+ currentValue="this.getZoomLevel()"
206
206
  onValueChange.bind="this.setZoom"
207
207
  class="this.props.class"
208
208
  onToggle.bind="this.toggle"
209
209
  onFocusInput.bind="this.onFocusInput"
210
210
  valueIcon="'%'"
211
- min="25"
212
- max="300"
211
+ min="this.minZoom"
212
+ max="this.maxZoom"
213
213
  valueList="this.valueList"
214
214
  title.translate="Zoom"
215
215
  />
@@ -6204,6 +6204,16 @@
6204
6204
  />
6205
6205
  </svg>
6206
6206
  </t>
6207
+ <t t-name="o-spreadsheet-Icon.RESIZE_HORIZONTAL">
6208
+ <div class="o-icon">
6209
+ <i class="oi" data-icon="width"/>
6210
+ </div>
6211
+ </t>
6212
+ <t t-name="o-spreadsheet-Icon.RESIZE_VERTICAL">
6213
+ <div class="o-icon">
6214
+ <i class="oi" data-icon="height"/>
6215
+ </div>
6216
+ </t>
6207
6217
  <t t-name="o-spreadsheet-Icon.INSERT_CELL">
6208
6218
  <svg class="o-icon" viewBox="0 0 18 18">
6209
6219
  <path
@@ -7459,6 +7469,29 @@
7459
7469
  </div>
7460
7470
  </t>
7461
7471
 
7472
+ <t t-name="o-spreadsheet-HeaderResizeEditor">
7473
+ <Popover t-if="this.props.target()" t-props="this.popoverProps">
7474
+ <div class="p-3" t-ref="this.editorRef">
7475
+ <div class="d-flex align-items-center gap-3">
7476
+ <input
7477
+ type="number"
7478
+ class="o-input"
7479
+ t-on-input="this.onInput"
7480
+ t-on-keydown="this.onKeydown"
7481
+ t-ref="this.inputRef"
7482
+ />
7483
+ <button type="button" class="o-button primary" t-on-click="this.apply">Apply</button>
7484
+ </div>
7485
+ <small t-if="this.isInputEmpty()" class="text-muted" t-out="this.emptyInputHint"/>
7486
+ <div
7487
+ t-if="this.errorMessage()"
7488
+ class="o-validation o-validation-error mt-2 px-2 py-1"
7489
+ t-out="this.errorMessage()"
7490
+ />
7491
+ </div>
7492
+ </Popover>
7493
+ </t>
7494
+
7462
7495
  <t t-name="o-spreadsheet-HeaderGroupContainer">
7463
7496
  <div
7464
7497
  class="o-header-group-container d-flex w-100 h-100 overflow-hidden"
@@ -7674,6 +7707,7 @@
7674
7707
  anchorRect="this.menuState.anchorRect"
7675
7708
  onClose="() => this.closeMenu()"
7676
7709
  />
7710
+ <HeaderResizeEditor target="this.headerResizeEditorTarget" gridRect="this.getGridRect()"/>
7677
7711
  <t
7678
7712
  t-if="this.displayTableResizer"
7679
7713
  t-foreach="this.staticTables"
@@ -23,7 +23,6 @@ export declare const formatNumberScientific: NumberFormatActionSpec;
23
23
  export declare const formatNumberCurrency: NumberFormatActionSpec;
24
24
  export declare const formatNumberCurrencyRounded: NumberFormatActionSpec;
25
25
  export declare const formatNumberAccounting: NumberFormatActionSpec;
26
- export declare const EXAMPLE_DATE: CellValue;
27
26
  export declare const formatCustomCurrency: ActionSpec;
28
27
  export declare const formatNumberDate: NumberFormatActionSpec;
29
28
  export declare const formatNumberTime: NumberFormatActionSpec;
@@ -28,6 +28,7 @@ export declare class CarouselFigure extends Component<SpreadsheetChildEnv> {
28
28
  private hiddenItems;
29
29
  protected animationStore: Store<ChartAnimationStore> | undefined;
30
30
  private fullScreenFigureStore;
31
+ private sidePanelStore;
31
32
  setup(): void;
32
33
  get carousel(): Carousel;
33
34
  get selectedCarouselItem(): CarouselItem | undefined;
@@ -1,19 +1,21 @@
1
+ import { Component } from "../../../owl3_compatibility_layer";
1
2
  import { ChartType } from "../../../types/chart/chart";
2
3
  import { UID } from "../../../types/misc";
3
4
  import { Rect } from "../../../types/rendering";
4
5
  import { SpreadsheetChildEnv } from "../../../types/spreadsheet_env";
5
6
  import { ChartMenu } from "../chart/chart_menu/chart_menu";
6
- import { Component } from "../../../owl3_compatibility_layer";
7
7
  export declare class ChartFigure extends Component<SpreadsheetChildEnv> {
8
8
  static template: string;
9
9
  static components: {
10
10
  ChartMenu: typeof ChartMenu;
11
11
  };
12
+ private sidePanelStore;
12
13
  protected props: import("@odoo/owl").Props<{
13
14
  figureUI: import("../../..").FigureUI;
14
15
  isFullScreen?: boolean | undefined;
15
16
  openContextMenu?: ((anchorRect: Rect, onClose?: () => void) => void) | undefined;
16
17
  }>;
18
+ setup(): void;
17
19
  onDoubleClick(): void;
18
20
  get chartType(): ChartType;
19
21
  get chartId(): UID;
@@ -13,6 +13,7 @@ import { GridComposer } from "../composer/grid_composer/grid_composer";
13
13
  import { FiguresContainer } from "../figures/figure_container/figure_container";
14
14
  import { GridOverlay } from "../grid_overlay/grid_overlay";
15
15
  import { GridPopover } from "../grid_popover/grid_popover";
16
+ import { HeaderResizeEditor } from "../header_resize_editor/header_resize_editor";
16
17
  import { HeadersOverlay } from "../headers_overlay/headers_overlay";
17
18
  import { ZoomedMouseEvent } from "../helpers/zoom";
18
19
  import { Highlight } from "../highlight/highlight/highlight";
@@ -41,6 +42,7 @@ export declare class Grid extends Component<SpreadsheetChildEnv> {
41
42
  GridComposer: typeof GridComposer;
42
43
  GridOverlay: typeof GridOverlay;
43
44
  GridPopover: typeof GridPopover;
45
+ HeaderResizeEditor: typeof HeaderResizeEditor;
44
46
  HeadersOverlay: typeof HeadersOverlay;
45
47
  MenuPopover: typeof MenuPopover;
46
48
  Autofill: typeof Autofill;
@@ -60,6 +62,7 @@ export declare class Grid extends Component<SpreadsheetChildEnv> {
60
62
  readonly HEADER_HEIGHT = 26;
61
63
  readonly HEADER_WIDTH = 48;
62
64
  private menuState;
65
+ private headerResizeEditorTarget;
63
66
  private gridRef;
64
67
  private canvasRef;
65
68
  private highlightStore;
@@ -111,6 +114,7 @@ export declare class Grid extends Component<SpreadsheetChildEnv> {
111
114
  onKeydown(ev: KeyboardEvent): void;
112
115
  onInputContextMenu(ev: MouseEvent): void;
113
116
  onCellRightClicked(col: HeaderIndex, row: HeaderIndex, { x, y }: DOMCoordinates): void;
117
+ private getMenuItems;
114
118
  /**
115
119
  * expects x and y coordinates in true pixels (not zoomed)
116
120
  */
@@ -35,7 +35,6 @@ export declare class GridOverlay extends Component<SpreadsheetChildEnv> {
35
35
  onCellClicked(zoomedMouseEvent: ZoomedMouseEvent<MouseEvent | PointerEvent>): void;
36
36
  onDoubleClick(ev: MouseEvent): void;
37
37
  onContextMenu(ev: MouseEvent): void;
38
- private getCartesianCoordinates;
39
38
  private getInteractiveIconAtEvent;
40
39
  get isFooterVisible(): boolean;
41
40
  }
@@ -0,0 +1,40 @@
1
+ import { Component } from "../../owl3_compatibility_layer";
2
+ import { Dimension, HeaderIndex } from "../../types/misc";
3
+ import { PropsOf } from "../../types/props_of";
4
+ import { Rect } from "../../types/rendering";
5
+ import { SpreadsheetChildEnv } from "../../types/spreadsheet_env";
6
+ import { Popover } from "../popover/popover";
7
+ export interface HeaderResizeEditorTarget {
8
+ dimension: Dimension;
9
+ index: HeaderIndex;
10
+ }
11
+ export declare class HeaderResizeEditor extends Component<SpreadsheetChildEnv> {
12
+ static template: string;
13
+ static components: {
14
+ Popover: typeof Popover;
15
+ };
16
+ protected props: import("@odoo/owl").Props<{
17
+ target: import("@odoo/owl").ReactiveValue<HeaderResizeEditorTarget | null, HeaderResizeEditorTarget | null>;
18
+ gridRect: Rect;
19
+ }>;
20
+ errorMessage: import("@odoo/owl").Signal<string>;
21
+ isInputEmpty: import("@odoo/owl").Signal<boolean>;
22
+ private inputRef;
23
+ private editorRef;
24
+ private viewStore;
25
+ private zoomStore;
26
+ private DOMFocusableElementStore;
27
+ setup(): void;
28
+ private get target();
29
+ get popoverProps(): PropsOf<Popover>;
30
+ private get anchorRect();
31
+ get minSize(): number;
32
+ get currentSize(): number;
33
+ onExternalClick(ev: MouseEvent): void;
34
+ private close;
35
+ onInput(ev: InputEvent): void;
36
+ get emptyInputHint(): string;
37
+ onKeydown(ev: KeyboardEvent): void;
38
+ apply(): void;
39
+ private validateAndParseSize;
40
+ }
@@ -14,6 +14,7 @@ export declare class NamedRangeSelector extends Component<SpreadsheetChildEnv> {
14
14
  MenuPopover: typeof MenuPopover;
15
15
  };
16
16
  private DOMFocusableElementStore;
17
+ private sidePanelStore;
17
18
  topBarToolStore: ToolBarDropdownStore;
18
19
  menuState: State;
19
20
  private namedRangeSelectorRef;
@@ -26,6 +26,11 @@ export declare class NumberEditor extends Component<SpreadsheetChildEnv> {
26
26
  private inputRef;
27
27
  private rootEditorRef;
28
28
  private valueListRef;
29
+ /**
30
+ * Skips the change event triggered when moving focus out of the input.
31
+ * The value has already been committed by `onInputKeydown`.
32
+ */
33
+ private skipNextInputChange;
29
34
  private DOMFocusableElementStore;
30
35
  setup(): void;
31
36
  get popoverProps(): PropsOf<Popover>;
@@ -37,6 +37,7 @@ export declare class CarouselPanel extends Component<SpreadsheetChildEnv> {
37
37
  private dragAndDrop;
38
38
  private previewListRef;
39
39
  addChartButton: import("@odoo/owl").Signal<HTMLButtonElement | null>;
40
+ private sidePanelStore;
40
41
  state: CarouselPanelState;
41
42
  setup(): void;
42
43
  get carouselItems(): CarouselItem[];
@@ -27,6 +27,7 @@ export declare class ConditionalFormattingEditor extends Component<SpreadsheetCh
27
27
  }>;
28
28
  private activeSheetId;
29
29
  private store;
30
+ private sidePanelStore;
30
31
  setup(): void;
31
32
  get isEditedCfRemoved(): boolean;
32
33
  get cfTypesValues(): {
@@ -13,6 +13,7 @@ export declare class ConditionalFormatPreview extends Component<SpreadsheetChild
13
13
  svg: import("../../../../types/image").ImageSVG;
14
14
  }>;
15
15
  private cfPreviewRef;
16
+ private sidePanelStore;
16
17
  setup(): void;
17
18
  get previewImageStyle(): string;
18
19
  get description(): string;
@@ -12,6 +12,8 @@ export declare class ConditionalFormatPreviewList extends Component<SpreadsheetC
12
12
  }>;
13
13
  private dragAndDrop;
14
14
  private cfListRef;
15
+ private sidePanelStore;
16
+ setup(): void;
15
17
  get conditionalFormats(): ConditionalFormat[];
16
18
  getPreviewDivStyle(cf: ConditionalFormat): string;
17
19
  onPreviewMouseDown(cf: ConditionalFormat, event: MouseEvent): void;
@@ -9,6 +9,8 @@ export declare class DataValidationPanel extends Component<SpreadsheetChildEnv>
9
9
  protected props: import("@odoo/owl").Props<{
10
10
  onCloseSidePanel: () => void;
11
11
  }>;
12
+ private sidePanelStore;
13
+ setup(): void;
12
14
  addDataValidationRule(): void;
13
15
  get validationRules(): import("../../..").DataValidationRule[];
14
16
  }
@@ -28,6 +28,7 @@ export declare class DataValidationEditor extends Component<SpreadsheetChildEnv>
28
28
  }>;
29
29
  state: State;
30
30
  private editingSheetId;
31
+ private sidePanelStore;
31
32
  setup(): void;
32
33
  onCriterionTypeChanged(type: DataValidationCriterionType): void;
33
34
  onRangesChanged(ranges: string[]): void;
@@ -7,6 +7,7 @@ export declare class DataValidationPreview extends Component<SpreadsheetChildEnv
7
7
  rule: import("../../../..").DataValidationRule;
8
8
  }>;
9
9
  private dvPreviewRef;
10
+ private sidePanelStore;
10
11
  setup(): void;
11
12
  onPreviewClick(): void;
12
13
  deleteDataValidation(): void;
@@ -22,6 +22,8 @@ export declare class PivotMeasureEditor extends Component<SpreadsheetChildEnv> {
22
22
  generateMeasureId: (fieldName: string, aggregator?: string) => string;
23
23
  aggregators: {};
24
24
  }>;
25
+ private sidePanelStore;
26
+ setup(): void;
25
27
  getMeasureAutocomplete(): import("../../../../../registries/auto_completes/auto_complete_registry").AutoCompleteProviderDefinition;
26
28
  updateMeasureFormula(formula: string): void;
27
29
  updateAggregator(aggregator: string): void;
@@ -55,6 +55,7 @@ export declare class PivotMeasureDisplayPanel extends Component<SpreadsheetChild
55
55
  index: string;
56
56
  };
57
57
  store: Store<PivotMeasureDisplayPanelStore>;
58
+ private sidePanelStore;
58
59
  setup(): void;
59
60
  onSave(): void;
60
61
  onCancel(): void;
@@ -15,6 +15,8 @@ export declare class PivotTitleSection extends Component<SpreadsheetChildEnv> {
15
15
  pivotId: import("../../../..").UID;
16
16
  flipAxis: () => void;
17
17
  }>;
18
+ private sidePanelStore;
19
+ setup(): void;
18
20
  get cogWheelMenuItems(): ActionSpec[];
19
21
  get name(): string;
20
22
  get displayName(): string;
@@ -3,7 +3,7 @@ import { Component } from "../../../owl3_compatibility_layer";
3
3
  export declare class SidePanel extends Component<SpreadsheetChildEnv> {
4
4
  static template: string;
5
5
  protected props: import("@odoo/owl").Props<{
6
- panelContent: import("../../../registries/side_panel_registry").SidePanelContent;
6
+ panelContent: import("../../../registries/side_panel_registry_definition").SidePanelContent;
7
7
  panelProps: import("./side_panel_store").SidePanelComponentProps;
8
8
  onCloseSidePanel: () => void;
9
9
  onStartHandleDrag: (ev: MouseEvent) => void;
@@ -43,7 +43,7 @@ export declare class SidePanelStore extends SpreadsheetStore {
43
43
  open(componentTag: string, currentPanelProps?: SidePanelComponentProps): void;
44
44
  replace(componentTag: string, currentPanelKey: string, currentPanelProps?: SidePanelComponentProps): void;
45
45
  private _openPanel;
46
- toggle(componentTag: string, panelProps: SidePanelComponentProps): void;
46
+ toggle(componentTag: string, panelProps?: SidePanelComponentProps): void;
47
47
  close(): void;
48
48
  closeMainPanel(): void;
49
49
  changePanelSize(panel: "mainPanel" | "secondaryPanel", size: number): void;
@@ -18,7 +18,7 @@ export declare class SidePanels extends Component<SpreadsheetChildEnv> {
18
18
  get panelList(): {
19
19
  key: string | undefined;
20
20
  props: (Omit<import("@odoo/owl").Props<{
21
- panelContent: import("../../../registries/side_panel_registry").SidePanelContent;
21
+ panelContent: import("../../../registries/side_panel_registry_definition").SidePanelContent;
22
22
  panelProps: import("../side_panel/side_panel_store").SidePanelComponentProps;
23
23
  onCloseSidePanel: () => void;
24
24
  onStartHandleDrag: (ev: MouseEvent) => void;
@@ -28,7 +28,7 @@ export declare class SidePanels extends Component<SpreadsheetChildEnv> {
28
28
  onToggleCollapsePanel?: (() => void) | undefined;
29
29
  isCollapsed?: boolean | undefined;
30
30
  }>, typeof import("@odoo/owl").isProps> & Partial<Pick<import("@odoo/owl").Props<{
31
- panelContent: import("../../../registries/side_panel_registry").SidePanelContent;
31
+ panelContent: import("../../../registries/side_panel_registry_definition").SidePanelContent;
32
32
  panelProps: import("../side_panel/side_panel_store").SidePanelComponentProps;
33
33
  onCloseSidePanel: () => void;
34
34
  onStartHandleDrag: (ev: MouseEvent) => void;
@@ -21,6 +21,7 @@ export declare class TableDropdownButton extends Component<SpreadsheetChildEnv>
21
21
  class?: string | undefined;
22
22
  }>;
23
23
  topBarToolStore: ToolBarDropdownStore;
24
+ private sidePanelStore;
24
25
  state: State;
25
26
  setup(): void;
26
27
  onStylePicked(styleId: string): void;
@@ -14,6 +14,7 @@ export declare class TableStylePreview extends Component<SpreadsheetChildEnv> {
14
14
  selected?: boolean | undefined;
15
15
  onClick?: (() => void) | undefined;
16
16
  }>;
17
+ private sidePanelStore;
17
18
  private canvasRef;
18
19
  menu: MenuState;
19
20
  setup(): void;
@@ -45,6 +45,7 @@ export declare class TableStylesPopover extends Component<SpreadsheetChildEnv> {
45
45
  selectedStyleId?: string | undefined;
46
46
  }>;
47
47
  private tableStyleListRef;
48
+ private sidePanelStore;
48
49
  state: State;
49
50
  setup(): void;
50
51
  onExternalClick(ev: CustomTablePopoverMouseEvent): void;
@@ -13,9 +13,11 @@ export declare class ToolBarZoom extends Component<SpreadsheetChildEnv> {
13
13
  topBarToolStore: ToolBarDropdownStore;
14
14
  private zoomStore;
15
15
  valueList: number[];
16
+ minZoom: number;
17
+ maxZoom: number;
16
18
  setup(): void;
17
- get currentFontSize(): number;
18
- setZoom(fontSize: number): void;
19
+ getZoomLevel(): number;
20
+ setZoom(zoomPercentage: number): void;
19
21
  toggle(): void;
20
22
  onFocusInput(): void;
21
23
  }
@@ -39,6 +39,7 @@ export declare const PIVOT_TOKEN_COLOR = "#F28C28";
39
39
  export declare const COLOR_PICKER_DEFAULTS: Color[];
40
40
  export declare const MIN_ROW_HEIGHT = 10;
41
41
  export declare const MIN_COL_WIDTH = 5;
42
+ export declare const MAX_HEADER_SIZE = 2000;
42
43
  export declare const HEADER_HEIGHT = 26;
43
44
  export declare const HEADER_WIDTH = 48;
44
45
  export declare const DESKTOP_TOPBAR_TOOLBAR_HEIGHT = 34;
@@ -5,6 +5,8 @@ import { Locale } from "../../types/locale";
5
5
  import { FunctionResultObject, Maybe } from "../../types/misc";
6
6
  export declare const MONTHS: Readonly<Record<number, string>>;
7
7
  export declare const DAYS: Readonly<Record<number, string>>;
8
+ /** Date used to preview date formats in the UI */
9
+ export declare const EXAMPLE_DATE: number;
8
10
  interface FormatWidth {
9
11
  availableWidth: number;
10
12
  measureText: (text: string) => number;
@@ -92,7 +92,7 @@ import { periodYearToComparable, pivotTimeAdapter } from "./helpers/pivot/pivot_
92
92
  import { createEmptyExcelSheet, createEmptySheet, createEmptyWorkbookData } from "./migrations/data";
93
93
  import { genericRepeat } from "./registries/repeat_commands_registry";
94
94
  import { DependencyContainer } from "./store_engine/dependency_container";
95
- import { useLocalStore, useStore, useStoreProvider } from "./store_engine/store_hooks";
95
+ import { proxifyStoreMutation, useLocalStore, useStore, useStoreProvider } from "./store_engine/store_hooks";
96
96
  import { ClientFocusStore } from "./stores/client_focus_store";
97
97
  import { GridRenderer } from "./stores/grid_renderer_store";
98
98
  import { HighlightStore } from "./stores/highlight_store";
@@ -158,7 +158,7 @@ export declare const registries: {
158
158
  evaluationPluginRegistry: import("./plugins/plugin_registries").PluginRegistry<import("./plugins/evaluation_plugin").EvaluationPluginConstructor>;
159
159
  corePluginRegistry: import("./plugins/plugin_registries").PluginRegistry<import("./plugins/core_plugin").CorePluginConstructor>;
160
160
  rowMenuRegistry: import("./registries/menu_items_registry").MenuItemRegistry;
161
- sidePanelRegistry: import(".").Registry<import("./registries/side_panel_registry").SidePanelContent>;
161
+ sidePanelRegistry: import(".").Registry<import("./registries/side_panel_registry_definition").SidePanelContent>;
162
162
  figureRegistry: import(".").Registry<import("./registries/figures_registry").FigureContent>;
163
163
  chartSidePanelComponentRegistry: import(".").Registry<import("./components/side_panel/chart/chart_side_panel_registry").ChartSidePanel>;
164
164
  chartDataSourceSidePanelComponentRegistry: import(".").Registry<import("@odoo/owl").ComponentConstructor>;
@@ -422,6 +422,7 @@ export declare const compatibility: {
422
422
  };
423
423
  export declare const stores: {
424
424
  useStoreProvider: typeof useStoreProvider;
425
+ proxifyStoreMutation: typeof proxifyStoreMutation;
425
426
  DependencyContainer: typeof DependencyContainer;
426
427
  CellPopoverStore: typeof CellPopoverStore;
427
428
  ComposerFocusStore: typeof ComposerFocusStore;
@@ -1,15 +1,2 @@
1
- import { SidePanelState } from "../components/side_panel/side_panel/side_panel_store";
2
- import { Getters } from "../types/getters";
3
- import { SpreadsheetChildEnv } from "../types/spreadsheet_env";
4
- import { Registry } from "./registry";
5
- export interface SidePanelContent {
6
- title: string | ((env: SpreadsheetChildEnv, props: object) => string);
7
- Body: any;
8
- Footer?: any;
9
- /**
10
- * A callback used to validate the props or generate new props
11
- * based on the current state of the spreadsheet model, using the getters.
12
- */
13
- computeState?: (getters: Getters, initialProps: object) => SidePanelState;
14
- }
15
- export declare const sidePanelRegistry: Registry<SidePanelContent>;
1
+ export { sidePanelRegistry } from "./side_panel_registry_definition";
2
+ export type { SidePanelContent } from "./side_panel_registry_definition";
@@ -0,0 +1,21 @@
1
+ import type { SidePanelState } from "../components/side_panel/side_panel/side_panel_store";
2
+ import { Getters } from "../types/getters";
3
+ import { SpreadsheetChildEnv } from "../types/spreadsheet_env";
4
+ import { Registry } from "./registry";
5
+ /**
6
+ * The registry is defined in its own module, without any reference to the side
7
+ * panel components, to avoid a circular dependency between the side panel store
8
+ * (which reads the registry) and the panel components (which use the store).
9
+ * The registry content is declared in `side_panel_registry.ts`.
10
+ */
11
+ export interface SidePanelContent {
12
+ title: string | ((env: SpreadsheetChildEnv, props: object) => string);
13
+ Body: any;
14
+ Footer?: any;
15
+ /**
16
+ * A callback used to validate the props or generate new props
17
+ * based on the current state of the spreadsheet model, using the getters.
18
+ */
19
+ computeState?: (getters: Getters, initialProps: object) => SidePanelState;
20
+ }
21
+ export declare const sidePanelRegistry: Registry<SidePanelContent>;
@@ -13,6 +13,7 @@ type getHeaderDimensionsCallback = (sheetId: UID, dimension: "COL" | "ROW", inde
13
13
  */
14
14
  export declare class ViewportsStore extends SpreadsheetStore {
15
15
  mutators: readonly ["setViewportOffset", "resizeSheetView", "shiftViewportDown", "shiftViewportUp", "scrollToCell", "setDisplayedSheetId", "setViewportArgs", "rebuildViewports"];
16
+ storeGetters: readonly ["getCartesianCoordinates"];
16
17
  private zoomStore;
17
18
  private getHeaderDimensionsCallback;
18
19
  private getFooterSizeCallback;
@@ -38,6 +39,7 @@ export declare class ViewportsStore extends SpreadsheetStore {
38
39
  get sheetViewDimensionWithHeaders(): DOMDimension;
39
40
  get sheetViewDimension(): DOMDimension;
40
41
  get gridOffset(): DOMCoordinates;
42
+ getCartesianCoordinates(x: Pixel, y: Pixel): [HeaderIndex, HeaderIndex];
41
43
  /** type as pane, not viewport but basically pane extends viewport */
42
44
  get activeMainViewport(): Viewport;
43
45
  /**
@@ -8,9 +8,6 @@ import { NotificationStoreMethods } from "./stores/notification_store_methods";
8
8
  export interface SpreadsheetChildEnv extends NotificationStoreMethods {
9
9
  model: Model;
10
10
  imageProvider?: ImageProviderInterface;
11
- openSidePanel: (panel: string, panelProps?: any) => void;
12
- replaceSidePanel: (panel: string, currentPanel: string, panelProps?: any) => void;
13
- toggleSidePanel: (panel: string, panelProps?: any) => void;
14
11
  clipboard: ClipboardInterface;
15
12
  startCellEdition: (content?: string) => void;
16
13
  loadCurrencies?: () => Promise<Currency[]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "20.1.0-alpha.0",
3
+ "version": "20.1.0-alpha.2",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o_spreadsheet.cjs",