diff --git a/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.ts b/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.ts index 4a3fd9af06..56746b4378 100644 --- a/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.ts +++ b/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.ts @@ -3,6 +3,7 @@ import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadshee import { Component } from "@odoo/owl"; import { Store, useLocalStore } from "../../../../../store_engine"; import { PivotStyle, UID } from "../../../../../types"; +import { NumberInput } from "../../../../number_input/number_input"; import { Checkbox } from "../../../components/checkbox/checkbox"; import { Section } from "../../../components/section/section"; import { PivotSidePanelStore } from "../pivot_side_panel_store"; @@ -14,7 +15,7 @@ interface Props { export class PivotDesignPanel extends Component { static template = "o-spreadsheet-PivotDesignPanel"; static props = { pivotId: String }; - static components = { Section, Checkbox }; + static components = { Section, Checkbox, NumberInput }; store!: Store; @@ -22,6 +23,11 @@ export class PivotDesignPanel extends Component { this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId, "neverDefer"); } + updatePivotStyleNumberProperty(valueStr: string, key: keyof PivotStyle) { + const value = parseInt(valueStr); + this.store.update({ style: { ...this.pivotStyle, [key]: isNaN(value) ? undefined : value } }); + } + updatePivotStyleProperty(key: keyof PivotStyle, value: PivotStyle[keyof PivotStyle]) { this.store.update({ style: { ...this.pivotStyle, [key]: value } }); } diff --git a/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.xml b/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.xml index 63c24d0bd7..05da1bbb66 100644 --- a/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.xml +++ b/src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.xml @@ -6,24 +6,22 @@
Max rows:
-
Max columns:
-
diff --git a/tests/pivots/pivot_design_side_panel.test.ts b/tests/pivots/pivot_design_side_panel.test.ts index 5e475ecc14..6a81df61a4 100644 --- a/tests/pivots/pivot_design_side_panel.test.ts +++ b/tests/pivots/pivot_design_side_panel.test.ts @@ -94,4 +94,20 @@ describe("Spreadsheet pivot side panel", () => { await setInputValueAndTrigger("input.o-pivot-n-of-rows", "12"); expect(model.getters.getPivotCoreDefinition("1").style?.numberOfRows).toBe(12); }); + + test("Editing a number input with a non-number value make the property undefined and not NaN", async () => { + updatePivot(model, "1", { style: { numberOfRows: 5, numberOfColumns: 10 } }); + await nextTick(); + + jest.useFakeTimers(); + setInputValueAndTrigger("input.o-pivot-n-of-rows", "olĂ "); + setInputValueAndTrigger("input.o-pivot-n-of-columns", ""); + jest.advanceTimersByTime(1000); + + expect(model.getters.getPivotCoreDefinition("1").style).toEqual({ + numberOfRows: undefined, + numberOfColumns: undefined, + }); + jest.useRealTimers(); + }); });