@odoo/o-spreadsheet 18.1.0-alpha.1 → 18.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.
@@ -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 18.1.0-alpha.1
5
- @date 2024-10-14T07:54:16.437Z
6
- @hash e9ce3aa
4
+ @version 18.1.0-alpha.2
5
+ @date 2024-10-24T08:54:19.283Z
6
+ @hash 2a01250
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ActionButton">
@@ -2697,8 +2697,7 @@
2697
2697
  </t>
2698
2698
 
2699
2699
  <t t-name="o-spreadsheet.ChartDataSeries">
2700
- <Section class="'o-data-series'">
2701
- <t t-set-slot="title" t-esc="title"/>
2700
+ <Section class="'o-data-series'" title="title">
2702
2701
  <SelectionInput
2703
2702
  ranges="ranges"
2704
2703
  required="true"
@@ -2718,11 +2717,9 @@
2718
2717
 
2719
2718
  <t t-name="o-spreadsheet-GeneralDesignEditor">
2720
2719
  <t t-set="chart_title">Chart title</t>
2721
- <SidePanelCollapsible collapsedAtInit="false">
2722
- <t t-set-slot="title">General</t>
2720
+ <SidePanelCollapsible collapsedAtInit="false" title.translate="General">
2723
2721
  <t t-set-slot="content">
2724
- <Section class="'o-chart-background-color pt-0 pb-0'">
2725
- <t t-set-slot="title">Background color</t>
2722
+ <Section class="'o-chart-background-color pt-0 pb-0'" title.translate="Background color">
2726
2723
  <RoundColorPicker
2727
2724
  currentColor="props.definition.background"
2728
2725
  onColorPicked.bind="updateBackgroundColor"
@@ -2763,8 +2760,7 @@
2763
2760
  </t>
2764
2761
 
2765
2762
  <t t-name="o-spreadsheet.ChartLabelRange">
2766
- <Section class="'o-data-labels'">
2767
- <t t-set-slot="title" t-esc="props.title"/>
2763
+ <Section class="'o-data-labels'" title="props.title">
2768
2764
  <SelectionInput
2769
2765
  ranges="[props.range]"
2770
2766
  isInvalid="props.isInvalid"
@@ -2784,13 +2780,140 @@
2784
2780
  </Section>
2785
2781
  </t>
2786
2782
 
2783
+ <t t-name="o-spreadsheet-SeriesDesignEditor">
2784
+ <SidePanelCollapsible collapsedAtInit="true" title.translate="Data Series">
2785
+ <t t-set-slot="content">
2786
+ <Section class="'pt-0 pb-0'">
2787
+ <select
2788
+ class="o-input data-series-selector"
2789
+ t-model="state.label"
2790
+ t-on-change="(ev) => this.updateSerieEditor(ev)">
2791
+ <t t-foreach="getDataSeries()" t-as="serie" t-key="serie_index">
2792
+ <option
2793
+ t-att-value="serie"
2794
+ t-att-selected="state.index === serie_index"
2795
+ t-esc="serie"
2796
+ />
2797
+ </t>
2798
+ </select>
2799
+ <Section class="'px-0'">
2800
+ <div class="d-flex align-items-center">
2801
+ <span class="o-section-title mb-0 pe-2">Series color</span>
2802
+ <RoundColorPicker
2803
+ currentColor="getDataSerieColor()"
2804
+ onColorPicked.bind="updateDataSeriesColor"
2805
+ />
2806
+ </div>
2807
+ </Section>
2808
+ <Section class="'pt-0 px-0'" title.translate="Series name">
2809
+ <input
2810
+ class="o-input o-serie-label-editor"
2811
+ type="text"
2812
+ t-att-value="getDataSerieLabel()"
2813
+ t-on-change="(ev) => this.updateDataSeriesLabel(ev)"
2814
+ />
2815
+ </Section>
2816
+ </Section>
2817
+ <t t-slot="data-series-extension" index="state.index"/>
2818
+ </t>
2819
+ </SidePanelCollapsible>
2820
+ </t>
2821
+
2822
+ <t t-name="o-spreadsheet-SeriesWithAxisDesignEditor">
2823
+ <SeriesDesignEditor t-props="props">
2824
+ <t t-set-slot="data-series-extension" t-slot-scope="scope">
2825
+ <t t-set="index" t-value="scope.index"/>
2826
+ <t t-slot="general-extension" index="index"/>
2827
+ <Section class="'pt-0 pb-0'">
2828
+ <Section
2829
+ class="'pt-0 px-0 o-vertical-axis-selection'"
2830
+ t-if="canHaveTwoVerticalAxis"
2831
+ title.translate="Vertical axis">
2832
+ <RadioSelection
2833
+ choices="axisChoices"
2834
+ selectedValue="getDataSerieAxis(index)"
2835
+ name="'axis'"
2836
+ onChange="(value) => this.updateDataSeriesAxis(index, value)"
2837
+ />
2838
+ </Section>
2839
+ <Section
2840
+ class="'pt-0 px-0 o-show-trend-line'"
2841
+ t-if="!props.definition.horizontal"
2842
+ title.translate="Trend line">
2843
+ <t t-set="showTrendLineLabel">Show trend line</t>
2844
+ <t t-set="trend" t-value="getTrendLineConfiguration(index)"/>
2845
+ <t t-set="trendType" t-value="getTrendType(trend)"/>
2846
+ <Checkbox
2847
+ name="'showTrendLine'"
2848
+ label="showTrendLineLabel"
2849
+ value="trend !== undefined and trend.display"
2850
+ onChange="(display) => this.toggleDataTrend(index, display)"
2851
+ />
2852
+ <div t-if="trend !== undefined and trend.display">
2853
+ <div class="d-flex py-2">
2854
+ <div class="w-100">
2855
+ <span class="o-section-subtitle">Type</span>
2856
+ <select
2857
+ class="o-input trend-type-selector"
2858
+ t-on-change="(ev) => this.onChangeTrendType(index, ev)">
2859
+ <option value="linear" t-att-selected="trendType === 'linear'">Linear</option>
2860
+ <option value="exponential" t-att-selected="trendType === 'exponential'">
2861
+ Exponential
2862
+ </option>
2863
+ <option value="polynomial" t-att-selected="trendType === 'polynomial'">
2864
+ Polynomial
2865
+ </option>
2866
+ <option value="logarithmic" t-att-selected="trendType === 'logarithmic'">
2867
+ Logarithmic
2868
+ </option>
2869
+ <option
2870
+ value="trailingMovingAverage"
2871
+ t-att-selected="trendType === 'trailingMovingAverage'">
2872
+ Trailing moving average
2873
+ </option>
2874
+ </select>
2875
+ </div>
2876
+ <div class="w-50 ms-3" t-if="trendType === 'trailingMovingAverage'">
2877
+ <span class="o-section-subtitle">Window</span>
2878
+ <input
2879
+ t-att-value="trend.window || this.defaultWindowSize"
2880
+ type="number"
2881
+ class="w-100 o-input trend-window-input"
2882
+ t-on-change="(ev) => this.onChangeMovingAverageWindow(index, ev)"
2883
+ />
2884
+ </div>
2885
+ <div class="w-50 ms-3" t-if="trendType === 'polynomial'">
2886
+ <span class="o-section-subtitle">Degree</span>
2887
+ <input
2888
+ t-att-value="trend.order"
2889
+ type="number"
2890
+ class="w-100 o-input trend-order-input"
2891
+ t-on-change="(ev) => this.onChangePolynomialDegree(index, ev)"
2892
+ min="1"
2893
+ />
2894
+ </div>
2895
+ </div>
2896
+ <div class="d-flex align-items-center">
2897
+ <span class="o-section-subtitle my-0 pe-2">Trend line color</span>
2898
+ <RoundColorPicker
2899
+ currentColor="getTrendLineColor(index)"
2900
+ onColorPicked="(ev) => this.updateTrendLineColor(index, ev)"
2901
+ />
2902
+ </div>
2903
+ </div>
2904
+ </Section>
2905
+ </Section>
2906
+ </t>
2907
+ </SeriesDesignEditor>
2908
+ </t>
2909
+
2787
2910
  <t t-name="o-spreadsheet.ChartTitle">
2788
2911
  <t t-set="placeholder">Add a title</t>
2789
- <Section class="'o-chart-title'">
2790
- <t t-set-slot="title">
2791
- <t t-if="props.name" t-esc="props.name"/>
2792
- <t t-else="">Title</t>
2793
- </t>
2912
+ <t t-set="title">
2913
+ <t t-if="props.name" t-esc="props.name"/>
2914
+ <t t-else="">Title</t>
2915
+ </t>
2916
+ <Section class="'o-chart-title'" title="title.toString()">
2794
2917
  <input
2795
2918
  type="text"
2796
2919
  class="o-input"
@@ -3086,11 +3209,36 @@
3086
3209
  <path fill="#444" d="M23,2 v43 h1 v-43 M2,45 h44 v1 h-44"/>
3087
3210
  </svg>
3088
3211
  </t>
3212
+ <t t-name="o-spreadsheet-ChartPreview.RADAR_CHART">
3213
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3214
+ <path fill="none" stroke="#0074d9" d="m24 16 14.27 3.36-1.93 21.63-18.22-8.9-3.63-11.18Z"/>
3215
+ <path fill="none" stroke="#eb6d00" d="m24 4 7.61 17.53-4.67 6.52-12.34 8.89-7.72-18.5Z"/>
3216
+ <path
3217
+ fill="none"
3218
+ stroke="#444"
3219
+ d="M24 2v22l20.92-6.8L24 24l12.93 17.8L24 24 11.07 41.8 24 24 3.08 17.2"
3220
+ />
3221
+ </svg>
3222
+ </t>
3223
+ <t t-name="o-spreadsheet-ChartPreview.FILLED_RADAR_CHART">
3224
+ <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3225
+ <path
3226
+ fill="#0074d944"
3227
+ stroke="#0074d9"
3228
+ d="m24 16 14.27 3.36-1.93 21.63-18.22-8.9-3.63-11.18Z"
3229
+ />
3230
+ <path fill="#eb6d0044" stroke="#eb6d00" d="m24 4 7.61 17.53-4.67 6.52-12.34 8.89-7.72-18.5Z"/>
3231
+ <path
3232
+ fill="none"
3233
+ stroke="#444"
3234
+ d="M24 2v22l20.92-6.8L24 24l12.93 17.8L24 24 11.07 41.8 24 24 3.08 17.2"
3235
+ />
3236
+ </svg>
3237
+ </t>
3089
3238
 
3090
3239
  <t t-name="o-spreadsheet-ChartTypePicker">
3091
3240
  <t t-set="selectedChartProperties" t-value="getSelectedChartSubtypeProperties()"/>
3092
- <Section>
3093
- <t t-set-slot="title">Chart type</t>
3241
+ <Section title.translate="Chart type">
3094
3242
  <div class="position-relative">
3095
3243
  <select
3096
3244
  class="o-input o-type-selector"
@@ -3141,8 +3289,7 @@
3141
3289
  definition="props.definition"
3142
3290
  updateChart="props.updateChart">
3143
3291
  <t t-set-slot="general-extension">
3144
- <Section class="'pt-0'">
3145
- <t t-set-slot="title">Legend position</t>
3292
+ <Section class="'pt-0'" title.translate="Legend position">
3146
3293
  <select
3147
3294
  t-att-value="props.definition.legendPosition ?? 'top'"
3148
3295
  class="o-input"
@@ -3154,8 +3301,7 @@
3154
3301
  <option value="right">Right</option>
3155
3302
  </select>
3156
3303
  </Section>
3157
- <Section class="'pt-0'">
3158
- <t t-set-slot="title">Values</t>
3304
+ <Section class="'pt-0'" title.translate="Values">
3159
3305
  <Checkbox
3160
3306
  name="'showValues'"
3161
3307
  label.translate="Show values"
@@ -3165,102 +3311,8 @@
3165
3311
  </Section>
3166
3312
  </t>
3167
3313
  </GeneralDesignEditor>
3168
- <SidePanelCollapsible collapsedAtInit="true">
3169
- <t t-set-slot="title">Data series</t>
3170
- <t t-set-slot="content">
3171
- <Section class="'pt-0 pb-0'">
3172
- <select
3173
- class="o-input data-series-selector"
3174
- t-model="state.label"
3175
- t-on-change="(ev) => this.updateSerieEditor(ev)">
3176
- <t t-foreach="getDataSeries()" t-as="serie" t-key="serie_index">
3177
- <option
3178
- t-att-value="serie"
3179
- t-att-selected="state.index === serie_index"
3180
- t-esc="serie"
3181
- />
3182
- </t>
3183
- </select>
3184
- <Section class="'px-0'">
3185
- <div class="d-flex align-items-center">
3186
- <t t-set-slot="title">Series color</t>
3187
- <RoundColorPicker
3188
- currentColor="getDataSerieColor()"
3189
- onColorPicked.bind="updateDataSeriesColor"
3190
- />
3191
- </div>
3192
- </Section>
3193
- <Section class="'pt-0 px-0 o-vertical-axis-selection'" t-if="canHaveTwoVerticalAxis">
3194
- <t t-set-slot="title">Vertical axis</t>
3195
- <RadioSelection
3196
- choices="axisChoices"
3197
- selectedValue="getDataSerieAxis()"
3198
- name="'axis'"
3199
- onChange.bind="updateDataSeriesAxis"
3200
- />
3201
- </Section>
3202
- <Section class="'pt-0 px-0'">
3203
- <t t-set-slot="title">Series name</t>
3204
- <input
3205
- class="o-input o-serie-label-editor"
3206
- type="text"
3207
- t-att-value="getDataSerieLabel()"
3208
- t-on-change="(ev) => this.updateDataSeriesLabel(ev)"
3209
- />
3210
- </Section>
3211
- <Section class="'pt-0 px-0 o-show-trend-line'" t-if="!props.definition.horizontal">
3212
- <t t-set-slot="title">Trend line</t>
3213
- <t t-set="showTrendLineLabel">Show trend line</t>
3214
- <t t-set="trend" t-value="getTrendLineConfiguration()"/>
3215
- <t t-set="trendType" t-value="getTrendType(trend)"/>
3216
- <Checkbox
3217
- name="'showTrendLine'"
3218
- label="showTrendLineLabel"
3219
- value="trend !== undefined and trend.display"
3220
- onChange.bind="toggleDataTrend"
3221
- />
3222
- <div t-if="trend !== undefined and trend.display">
3223
- <div class="d-flex py-2">
3224
- <div class="w-100">
3225
- <span class="o-section-subtitle">Type</span>
3226
- <select class="o-input trend-type-selector" t-on-change="this.onChangeTrendType">
3227
- <option value="linear" t-att-selected="trendType === 'linear'">Linear</option>
3228
- <option value="exponential" t-att-selected="trendType === 'exponential'">
3229
- Exponential
3230
- </option>
3231
- <option value="polynomial" t-att-selected="trendType === 'polynomial'">
3232
- Polynomial
3233
- </option>
3234
- <option value="logarithmic" t-att-selected="trendType === 'logarithmic'">
3235
- Logarithmic
3236
- </option>
3237
- </select>
3238
- </div>
3239
- <div class="w-50 ms-3" t-if="trendType === 'polynomial'">
3240
- <span class="o-section-subtitle">Degree</span>
3241
- <input
3242
- t-att-value="trend.order"
3243
- type="number"
3244
- class="w-100 o-input trend-order-input"
3245
- t-on-change="this.onChangePolynomialDegree"
3246
- min="1"
3247
- />
3248
- </div>
3249
- </div>
3250
- <div class="d-flex align-items-center">
3251
- <span class="o-section-subtitle my-0 pe-2">Trend line color</span>
3252
- <RoundColorPicker
3253
- currentColor="getTrendLineColor()"
3254
- onColorPicked.bind="updateTrendLineColor"
3255
- />
3256
- </div>
3257
- </div>
3258
- </Section>
3259
- </Section>
3260
- </t>
3261
- </SidePanelCollapsible>
3262
- <SidePanelCollapsible collapsedAtInit="true">
3263
- <t t-set-slot="title">Axes</t>
3314
+ <SeriesWithAxisDesignEditor t-props="props"/>
3315
+ <SidePanelCollapsible collapsedAtInit="true" title.translate="Axes">
3264
3316
  <t t-set-slot="content">
3265
3317
  <AxisDesignEditor
3266
3318
  axesList="axesList"
@@ -3297,8 +3349,7 @@
3297
3349
  definition="props.definition"
3298
3350
  updateChart="props.updateChart">
3299
3351
  <t t-set-slot="general-extension">
3300
- <Section class="'pt-0'">
3301
- <t t-set-slot="title">Legend position</t>
3352
+ <Section class="'pt-0'" title.translate="Legend position">
3302
3353
  <select
3303
3354
  t-att-value="props.definition.legendPosition ?? 'top'"
3304
3355
  class="o-input"
@@ -3310,8 +3361,7 @@
3310
3361
  <option value="right">Right</option>
3311
3362
  </select>
3312
3363
  </Section>
3313
- <Section class="'pt-0'">
3314
- <t t-set-slot="title">Values</t>
3364
+ <Section class="'pt-0'" title.translate="Values">
3315
3365
  <Checkbox
3316
3366
  name="'showValues'"
3317
3367
  label="showValuesLabel"
@@ -3321,111 +3371,20 @@
3321
3371
  </Section>
3322
3372
  </t>
3323
3373
  </GeneralDesignEditor>
3324
- <SidePanelCollapsible collapsedAtInit="true">
3325
- <t t-set-slot="title">Data series</t>
3326
- <t t-set-slot="content">
3327
- <Section class="'pt-0 pb-0'">
3328
- <select
3329
- class="o-input data-series-selector"
3330
- t-model="state.label"
3331
- t-on-change="(ev) => this.updateSerieEditor(ev)">
3332
- <t t-foreach="getDataSeries()" t-as="serie" t-key="serie_index">
3333
- <option
3334
- t-att-value="serie"
3335
- t-att-selected="state.index === serie_index"
3336
- t-esc="serie"
3337
- />
3338
- </t>
3339
- </select>
3340
- <Section class="'px-0'">
3341
- <div class="d-flex align-items-center">
3342
- <t t-set-slot="title">Series color</t>
3343
- <RoundColorPicker
3344
- currentColor="getDataSerieColor()"
3345
- onColorPicked.bind="updateDataSeriesColor"
3346
- />
3347
- </div>
3348
- </Section>
3349
- <Section class="'pt-0 px-0 o-vertical-axis-selection'" t-if="canHaveTwoVerticalAxis">
3350
- <t t-set-slot="title">Vertical axis</t>
3351
- <RadioSelection
3352
- choices="axisChoices"
3353
- selectedValue="getDataSerieAxis()"
3354
- name="'axis'"
3355
- onChange.bind="updateDataSeriesAxis"
3356
- />
3357
- </Section>
3358
- <Section class="'pt-0 px-0 o-series-type-selection'">
3359
- <t t-set-slot="title">Serie type</t>
3360
- <RadioSelection
3361
- choices="seriesTypeChoices"
3362
- selectedValue="getDataSeriesType()"
3363
- name="'seriesType'"
3364
- onChange.bind="updateDataSeriesType"
3365
- />
3366
- </Section>
3367
- <Section class="'pt-0 px-0'">
3368
- <t t-set-slot="title">Series name</t>
3369
- <input
3370
- class="o-input o-serie-label-editor"
3371
- type="text"
3372
- t-att-value="getDataSerieLabel()"
3373
- t-on-change="(ev) => this.updateDataSeriesLabel(ev)"
3374
- />
3375
- </Section>
3376
- <Section class="'pt-0 px-0 o-show-trend-line'" t-if="!props.definition.horizontal">
3377
- <t t-set-slot="title">Trend line</t>
3378
- <t t-set="showTrendLineLabel">Show trend line</t>
3379
- <t t-set="trend" t-value="getTrendLineConfiguration()"/>
3380
- <t t-set="trendType" t-value="getTrendType(trend)"/>
3381
- <Checkbox
3382
- name="'showTrendLine'"
3383
- label="showTrendLineLabel"
3384
- value="trend !== undefined and trend.display"
3385
- onChange.bind="toggleDataTrend"
3386
- />
3387
- <div t-if="trend !== undefined and trend.display">
3388
- <div class="d-flex py-2">
3389
- <div class="w-100">
3390
- <span class="o-section-subtitle">Type</span>
3391
- <select class="o-input trend-type-selector" t-on-change="this.onChangeTrendType">
3392
- <option value="linear" t-att-selected="trendType === 'linear'">Linear</option>
3393
- <option value="exponential" t-att-selected="trendType === 'exponential'">
3394
- Exponential
3395
- </option>
3396
- <option value="polynomial" t-att-selected="trendType === 'polynomial'">
3397
- Polynomial
3398
- </option>
3399
- <option value="logarithmic" t-att-selected="trendType === 'logarithmic'">
3400
- Logarithmic
3401
- </option>
3402
- </select>
3403
- </div>
3404
- <div class="w-50 ms-3" t-if="trendType === 'polynomial'">
3405
- <span class="o-section-subtitle">Degree</span>
3406
- <input
3407
- t-att-value="trend.order"
3408
- type="number"
3409
- class="w-100 o-input trend-order-input"
3410
- t-on-change="this.onChangePolynomialDegree"
3411
- min="1"
3412
- />
3413
- </div>
3414
- </div>
3415
- <div class="d-flex align-items-center">
3416
- <span class="o-section-subtitle my-0 pe-2">Trend line color</span>
3417
- <RoundColorPicker
3418
- currentColor="getTrendLineColor()"
3419
- onColorPicked.bind="updateTrendLineColor"
3420
- />
3421
- </div>
3422
- </div>
3423
- </Section>
3374
+ <SeriesWithAxisDesignEditor t-props="props">
3375
+ <t t-set-slot="general-extension" t-slot-scope="scope">
3376
+ <t t-set="index" t-value="scope.index"/>
3377
+ <Section class="'pt-0 o-series-type-selection'" title.translate="Serie type">
3378
+ <RadioSelection
3379
+ choices="seriesTypeChoices"
3380
+ selectedValue="getDataSeriesType(index)"
3381
+ name="'seriesType'"
3382
+ onChange="(type) => this.updateDataSeriesType(index, type)"
3383
+ />
3424
3384
  </Section>
3425
3385
  </t>
3426
- </SidePanelCollapsible>
3427
- <SidePanelCollapsible collapsedAtInit="true">
3428
- <t t-set-slot="title">Axes</t>
3386
+ </SeriesWithAxisDesignEditor>
3387
+ <SidePanelCollapsible collapsedAtInit="true" title.translate="Axes">
3429
3388
  <t t-set-slot="content">
3430
3389
  <AxisDesignEditor
3431
3390
  axesList="axesList"
@@ -3459,11 +3418,9 @@
3459
3418
  definition="props.definition"
3460
3419
  updateChart="props.updateChart"
3461
3420
  />
3462
- <SidePanelCollapsible collapsedAtInit="false">
3463
- <t t-set-slot="title">Gauge Design</t>
3421
+ <SidePanelCollapsible collapsedAtInit="false" title.translate="Gauge Design">
3464
3422
  <t t-set-slot="content">
3465
- <Section class="'pt-0'">
3466
- <t t-set-slot="title">Range</t>
3423
+ <Section class="'pt-0'" title.translate="Range">
3467
3424
  <div class="o-subsection-left">
3468
3425
  <input
3469
3426
  type="text"
@@ -3486,8 +3443,7 @@
3486
3443
  </div>
3487
3444
  </Section>
3488
3445
 
3489
- <Section>
3490
- <t t-set-slot="title">Thresholds</t>
3446
+ <Section title.translate="Thresholds">
3491
3447
  <t t-call="o-spreadsheet-GaugeChartColorSectionTemplate">
3492
3448
  <t t-set="sectionRule" t-value="state.sectionRule"/>
3493
3449
  </t>
@@ -3671,8 +3627,7 @@
3671
3627
  definition="props.definition"
3672
3628
  updateChart="props.updateChart">
3673
3629
  <t t-set-slot="general-extension">
3674
- <Section class="'pt-0'">
3675
- <t t-set-slot="title">Legend position</t>
3630
+ <Section class="'pt-0'" title.translate="Legend position">
3676
3631
  <select
3677
3632
  t-att-value="props.definition.legendPosition ?? 'top'"
3678
3633
  class="o-input"
@@ -3684,8 +3639,7 @@
3684
3639
  <option value="right">Right</option>
3685
3640
  </select>
3686
3641
  </Section>
3687
- <Section>
3688
- <t t-set-slot="title">Values</t>
3642
+ <Section title.translate="Values">
3689
3643
  <Checkbox
3690
3644
  name="'showValues'"
3691
3645
  label.translate="Show values"
@@ -3697,6 +3651,29 @@
3697
3651
  </GeneralDesignEditor>
3698
3652
  </t>
3699
3653
 
3654
+ <t t-name="o-spreadsheet-RadarChartDesignPanel">
3655
+ <GeneralDesignEditor
3656
+ figureId="props.figureId"
3657
+ definition="props.definition"
3658
+ updateChart="props.updateChart">
3659
+ <t t-set-slot="general-extension">
3660
+ <Section class="'pt-0'" title.translate="Legend Position">
3661
+ <select
3662
+ t-att-value="props.definition.legendPosition ?? 'top'"
3663
+ class="o-input"
3664
+ t-on-change="this.updateLegendPosition">
3665
+ <option value="none">None</option>
3666
+ <option value="top">Top</option>
3667
+ <option value="bottom">Bottom</option>
3668
+ <option value="left">Left</option>
3669
+ <option value="right">Right</option>
3670
+ </select>
3671
+ </Section>
3672
+ </t>
3673
+ </GeneralDesignEditor>
3674
+ <SeriesDesignEditor t-props="props"/>
3675
+ </t>
3676
+
3700
3677
  <t t-name="o-spreadsheet-ScatterConfigPanel">
3701
3678
  <div>
3702
3679
  <ChartDataSeries
@@ -3718,8 +3695,7 @@
3718
3695
 
3719
3696
  <t t-name="o-spreadsheet-ScorecardChartConfigPanel">
3720
3697
  <div>
3721
- <Section class="'o-data-series'">
3722
- <t t-set-slot="title">Key value</t>
3698
+ <Section class="'o-data-series'" title.translate="Key value">
3723
3699
  <SelectionInput
3724
3700
  ranges="[this.getKeyValueRange()]"
3725
3701
  isInvalid="isKeyValueInvalid"
@@ -3729,8 +3705,7 @@
3729
3705
  onSelectionConfirmed="() => this.updateKeyValueRange()"
3730
3706
  />
3731
3707
  </Section>
3732
- <Section class="'o-data-labels'">
3733
- <t t-set-slot="title">Baseline configuration</t>
3708
+ <Section class="'o-data-labels'" title.translate="Baseline configuration">
3734
3709
  <div class="o-section-subtitle">Value</div>
3735
3710
  <SelectionInput
3736
3711
  ranges="[this.getBaselineRange()]"
@@ -3763,8 +3738,7 @@
3763
3738
  definition="props.definition"
3764
3739
  updateChart="props.updateChart">
3765
3740
  <t t-set-slot="general-extension">
3766
- <Section class="'pt-1'">
3767
- <t t-set-slot="title">Number formatting</t>
3741
+ <Section class="'pt-1'" title.translate="Number formatting">
3768
3742
  <Checkbox
3769
3743
  name="'humanizeNumbers'"
3770
3744
  label="humanizeNumbersLabel"
@@ -3774,11 +3748,9 @@
3774
3748
  </Section>
3775
3749
  </t>
3776
3750
  </GeneralDesignEditor>
3777
- <SidePanelCollapsible collapsedAtInit="false">
3778
- <t t-set-slot="title">Baseline</t>
3751
+ <SidePanelCollapsible collapsedAtInit="false" title.translate="Baseline">
3779
3752
  <t t-set-slot="content">
3780
- <Section class="'pt-0'">
3781
- <t t-set-slot="title">Baseline description</t>
3753
+ <Section class="'pt-0'" title.translate="Baseline description">
3782
3754
  <input
3783
3755
  type="text"
3784
3756
  t-att-value="translate(props.definition.baselineDescr)"
@@ -3787,8 +3759,7 @@
3787
3759
  placeholder="Baseline description"
3788
3760
  />
3789
3761
  </Section>
3790
- <Section class="'o-chart-baseline-color'">
3791
- <t t-set-slot="title" t-esc="colorsSectionTitle"/>
3762
+ <Section class="'o-chart-baseline-color'" title="colorsSectionTitle">
3792
3763
  <div class="d-flex align-items-center mb-2">
3793
3764
  <RoundColorPicker
3794
3765
  currentColor="props.definition.baselineColorUp"
@@ -3816,8 +3787,7 @@
3816
3787
  definition="props.definition"
3817
3788
  updateChart="props.updateChart">
3818
3789
  <t t-set-slot="general-extension">
3819
- <Section class="'o-vertical-axis-selection'">
3820
- <t t-set-slot="title">Vertical axis position</t>
3790
+ <Section class="'o-vertical-axis-selection'" title.translate="Vertical axis position">
3821
3791
  <RadioSelection
3822
3792
  choices="axisChoices"
3823
3793
  selectedValue="props.definition.verticalAxisPosition"
@@ -3825,8 +3795,7 @@
3825
3795
  onChange.bind="updateVerticalAxisPosition"
3826
3796
  />
3827
3797
  </Section>
3828
- <Section>
3829
- <t t-set-slot="title">Legend position</t>
3798
+ <Section title.translate="Legend position">
3830
3799
  <select
3831
3800
  t-att-value="props.definition.legendPosition"
3832
3801
  class="o-input o-chart-legend-position"
@@ -3838,8 +3807,7 @@
3838
3807
  <option value="right">Right</option>
3839
3808
  </select>
3840
3809
  </Section>
3841
- <Section>
3842
- <t t-set-slot="title">Values</t>
3810
+ <Section title.translate="Values">
3843
3811
  <Checkbox
3844
3812
  name="'showValues'"
3845
3813
  label.translate="Show values"
@@ -3849,11 +3817,9 @@
3849
3817
  </Section>
3850
3818
  </t>
3851
3819
  </GeneralDesignEditor>
3852
- <SidePanelCollapsible collapsedAtInit="true">
3853
- <t t-set-slot="title">Waterfall design</t>
3820
+ <SidePanelCollapsible collapsedAtInit="true" title.translate="Waterfall design">
3854
3821
  <t t-set-slot="content">
3855
- <Section class="'pt-0'">
3856
- <t t-set-slot="title">Options</t>
3822
+ <Section class="'pt-0'" title.translate="Options">
3857
3823
  <t t-set="firstValueAsSubtotal">Use first value as subtotal</t>
3858
3824
  <Checkbox
3859
3825
  className="'mb-2'"
@@ -3878,8 +3844,7 @@
3878
3844
  onChange.bind="onUpdateShowConnectorLines"
3879
3845
  />
3880
3846
  </Section>
3881
- <Section>
3882
- <t t-set-slot="title">Colors</t>
3847
+ <Section title.translate="Colors">
3883
3848
  <div class="o-waterfall-positive-color d-flex align-items-center mb-2">
3884
3849
  <RoundColorPicker
3885
3850
  currentColor="positiveValuesColor"
@@ -3904,8 +3869,7 @@
3904
3869
  </Section>
3905
3870
  </t>
3906
3871
  </SidePanelCollapsible>
3907
- <SidePanelCollapsible collapsedAtInit="true">
3908
- <t t-set-slot="title">Axes</t>
3872
+ <SidePanelCollapsible collapsedAtInit="true" title.translate="Axes">
3909
3873
  <t t-set-slot="content">
3910
3874
  <AxisDesignEditor
3911
3875
  axesList="axesList"
@@ -3967,7 +3931,7 @@
3967
3931
 
3968
3932
  <t t-name="o-spreadsheet-SidePanelCollapsible">
3969
3933
  <div class="" t-att-class="props.class">
3970
- <div class="o_side_panel_collapsible_title d-flex align-items-center">
3934
+ <div class="o_side_panel_collapsible_title o-fw-bold d-flex align-items-center">
3971
3935
  <div
3972
3936
  t-att-id="'btn-collapse-'+currentId"
3973
3937
  t-att-class="{ 'collapsed': props.collapsedAtInit }"
@@ -3977,9 +3941,7 @@
3977
3941
  <span class="collapsor-arrow">
3978
3942
  <t t-call="o-spreadsheet-Icon.ANGLE_DOWN"/>
3979
3943
  </span>
3980
- <div class="ps-2">
3981
- <t t-slot="title"/>
3982
- </div>
3944
+ <div class="ps-2" t-esc="props.title"/>
3983
3945
  </div>
3984
3946
  </div>
3985
3947
  <div
@@ -4035,8 +3997,9 @@
4035
3997
 
4036
3998
  <t t-name="o_spreadsheet.Section">
4037
3999
  <div class="o-section" t-att-class="props.class">
4038
- <t t-if="props.slots.title">
4000
+ <t t-if="props.slots.title or props.title">
4039
4001
  <div class="o-section-title">
4002
+ <t t-esc="props.title"/>
4040
4003
  <t t-slot="title"/>
4041
4004
  </div>
4042
4005
  </t>
@@ -4136,8 +4099,7 @@
4136
4099
 
4137
4100
  <t t-name="o-spreadsheet-ConditionalFormattingEditor">
4138
4101
  <div class="o-cf-ruleEditor">
4139
- <Section class="'o-cf-range pb-0'">
4140
- <t t-set-slot="title">Apply to range</t>
4102
+ <Section class="'o-cf-range pb-0'" title.translate="Apply to range">
4141
4103
  <div class="o-selection-cf">
4142
4104
  <SelectionInput
4143
4105
  ranges="state.currentCF.ranges"
@@ -4148,8 +4110,7 @@
4148
4110
  />
4149
4111
  </div>
4150
4112
  </Section>
4151
- <Section class="'pb-0'">
4152
- <t t-set-slot="title">Format rules</t>
4113
+ <Section class="'pb-0'" title.translate="Format rules">
4153
4114
  <div class="o-cf-type-selector">
4154
4115
  <BadgeSelection
4155
4116
  choices="cfTypesValues"
@@ -4442,7 +4403,7 @@
4442
4403
  </t>
4443
4404
  <div class="o-cf-preview-description">
4444
4405
  <div class="o-cf-preview-ruletype">
4445
- <div class="o-cf-preview-description-rule text-truncate">
4406
+ <div class="o-cf-preview-description-rule o-fw-bold text-truncate">
4446
4407
  <t t-esc="getDescription(cf)"/>
4447
4408
  </div>
4448
4409
  </div>
@@ -4499,8 +4460,7 @@
4499
4460
 
4500
4461
  <t t-name="o-spreadsheet-CustomCurrencyPanel">
4501
4462
  <div class="o-custom-currency">
4502
- <Section t-if="availableCurrencies.length > 1">
4503
- <t t-set-slot="title">Currency</t>
4463
+ <Section t-if="availableCurrencies.length > 1" title.translate="Currency">
4504
4464
  <select
4505
4465
  class="o-input o-available-currencies"
4506
4466
  t-on-change="(ev) => this.updateSelectCurrency(ev)">
@@ -4535,8 +4495,7 @@
4535
4495
  />
4536
4496
  </div>
4537
4497
  </Section>
4538
- <Section>
4539
- <t t-set-slot="title">Format</t>
4498
+ <Section title.translate="Format">
4540
4499
  <select
4541
4500
  class="o-input o-format-proposals mb-1"
4542
4501
  t-on-change="(ev) => this.updateSelectFormat(ev)"
@@ -4560,7 +4519,7 @@
4560
4519
  <table>
4561
4520
  <t t-foreach="getFormatExamples()" t-as="example" t-key="example_index">
4562
4521
  <tr>
4563
- <td class="pe-3 fw-bolder" t-esc="example.label"/>
4522
+ <td class="pe-3 o-fw-bold" t-esc="example.label"/>
4564
4523
  <td t-esc="example.value"/>
4565
4524
  </tr>
4566
4525
  </t>
@@ -4720,8 +4679,7 @@
4720
4679
 
4721
4680
  <t t-name="o-spreadsheet-DataValidationEditor">
4722
4681
  <div class="o-dv-form w-100 h-100">
4723
- <Section class="'o-dv-range'">
4724
- <t t-set-slot="title">Apply to range</t>
4682
+ <Section class="'o-dv-range'" title.translate="Apply to range">
4725
4683
  <SelectionInput
4726
4684
  ranges="state.rule.ranges"
4727
4685
  onSelectionChanged="(ranges) => this.onRangesChanged(ranges)"
@@ -4747,8 +4705,7 @@
4747
4705
  </div>
4748
4706
  </Section>
4749
4707
 
4750
- <Section class="'o-dv-invalid-option pt-0'">
4751
- <t t-set-slot="title">If the data is invalid</t>
4708
+ <Section class="'o-dv-invalid-option pt-0'" title.translate="If the data is invalid">
4752
4709
  <select class="o-dv-reject-input o-input" t-on-change="changeRuleIsBlocking">
4753
4710
  <option t-att-selected="!state.rule.isBlocking" value="false">Show a warning</option>
4754
4711
  <option t-att-selected="state.rule.isBlocking" value="true">Reject the input</option>
@@ -4773,7 +4730,7 @@
4773
4730
  <div class="o-dv-preview p-3" t-on-click="props.onClick" t-ref="dvPreview">
4774
4731
  <div class="d-flex justify-content-between">
4775
4732
  <div class="o-dv-container d-flex flex-column">
4776
- <div class="o-dv-preview-description fw-bold text-truncate" t-esc="descriptionString"/>
4733
+ <div class="o-dv-preview-description o-fw-bold text-truncate" t-esc="descriptionString"/>
4777
4734
  <div class="o-dv-preview-ranges text-truncate" t-esc="rangesString"/>
4778
4735
  </div>
4779
4736
  <div
@@ -4787,8 +4744,7 @@
4787
4744
 
4788
4745
  <t t-name="o-spreadsheet-FindAndReplacePanel">
4789
4746
  <div class="o-find-and-replace">
4790
- <Section>
4791
- <t t-set-slot="title">Search</t>
4747
+ <Section title.translate="Search">
4792
4748
  <div class="o-input-search-container">
4793
4749
  <input
4794
4750
  type="text"
@@ -4863,8 +4819,7 @@
4863
4819
  <ValidationMessages msgType="'info'" messages="searchInfo" singleBox="true"/>
4864
4820
  </div>
4865
4821
  </Section>
4866
- <Section class="'pt-0'" t-if="!env.model.getters.isReadonly()">
4867
- <t t-set-slot="title">Replace</t>
4822
+ <Section class="'pt-0'" t-if="!env.model.getters.isReadonly()" title.translate="Replace">
4868
4823
  <div class="o-input-search-container">
4869
4824
  <input
4870
4825
  type="text"
@@ -4911,22 +4866,6 @@
4911
4866
  </div>
4912
4867
  </t>
4913
4868
 
4914
- <t t-name="o-spreadsheet-EditableName">
4915
- <t t-if="state.isEditing">
4916
- <div>
4917
- <input type="text" class="o-input o_sp_en_name" t-model="state.name"/>
4918
- </div>
4919
- <div class="o-button-link o_sp_en_save" t-on-click="save">Save</div>
4920
- </t>
4921
- <t t-else="">
4922
- <div class="o_sp_en_display_name" t-esc="props.displayName"/>
4923
- <div class="o-button-link o_sp_en_rename" t-on-click="rename">
4924
- <i class="fa fa-pencil me-1"/>
4925
- Rename
4926
- </div>
4927
- </t>
4928
- </t>
4929
-
4930
4869
  <t t-name="o-spreadsheet-PivotDeferUpdate">
4931
4870
  <Section
4932
4871
  class="'align-items-center border-top d-flex flex-row justify-content-between py-1 pivot-defer-update'">
@@ -4990,9 +4929,9 @@
4990
4929
  t-if="props.onNameUpdated"
4991
4930
  value="props.dimension.displayName"
4992
4931
  onChange.bind="updateName"
4993
- class="'fw-bold'"
4932
+ class="'o-fw-bold'"
4994
4933
  />
4995
- <span t-else="1" class="fw-bold" t-esc="props.dimension.displayName"/>
4934
+ <span t-else="1" class="o-fw-bold" t-esc="props.dimension.displayName"/>
4996
4935
  </div>
4997
4936
  <div class="d-flex flex-rows">
4998
4937
  <t t-slot="upper-right-icons"/>
@@ -5050,9 +4989,9 @@
5050
4989
  </t>
5051
4990
 
5052
4991
  <t t-name="o-spreadsheet-PivotLayoutConfigurator">
5053
- <div class="o_side_panel_section pivot-dimensions o-section" t-ref="pivot-dimensions">
4992
+ <div class="pivot-dimensions o-section" t-ref="pivot-dimensions">
5054
4993
  <div
5055
- class="fw-bold py-1 d-flex flex-row justify-content-between align-items-center o-section-title">
4994
+ class="o-fw-bold py-1 d-flex flex-row justify-content-between align-items-center o-section-title">
5056
4995
  Columns
5057
4996
  <AddDimensionButton
5058
4997
  onFieldPicked.bind="addColumnDimension"
@@ -5077,7 +5016,7 @@
5077
5016
  </div>
5078
5017
  </t>
5079
5018
  <div
5080
- class="fw-bold pt-4 pb-1 d-flex flex-row justify-content-between align-items-center o-section-title"
5019
+ class="o-fw-bold pt-4 pb-1 d-flex flex-row justify-content-between align-items-center o-section-title"
5081
5020
  t-att-style="dragAndDrop.itemsStyle['__rows_title__']">
5082
5021
  Rows
5083
5022
  <AddDimensionButton
@@ -5103,7 +5042,7 @@
5103
5042
  </div>
5104
5043
  </t>
5105
5044
  <div
5106
- class="fw-bold pt-4 pb-1 d-flex flex-row justify-content-between align-items-center o-section-title o-pivot-measure">
5045
+ class="o-fw-bold pt-4 pb-1 d-flex flex-row justify-content-between align-items-center o-section-title o-pivot-measure">
5107
5046
  Measures
5108
5047
  <AddDimensionButton onFieldPicked.bind="addMeasureDimension" fields="props.measureFields">
5109
5048
  <div
@@ -5185,8 +5124,7 @@
5185
5124
  </t>
5186
5125
 
5187
5126
  <t t-name="o-spreadsheet-PivotMeasureDisplayPanel">
5188
- <Section>
5189
- <t t-set-slot="title">Show measure as:</t>
5127
+ <Section title.translate="Show measure as:">
5190
5128
  <select
5191
5129
  class="o-pivot-measure-display-type o-input"
5192
5130
  t-on-change="(ev) => this.store.updateMeasureDisplayType(ev.target.value)">
@@ -5204,8 +5142,7 @@
5204
5142
  />
5205
5143
  </Section>
5206
5144
 
5207
- <Section t-if="store.doesDisplayNeedsField">
5208
- <t t-set-slot="title">Base field:</t>
5145
+ <Section t-if="store.doesDisplayNeedsField" title.translate="Base field:">
5209
5146
  <div class="o-pivot-measure-display-field w-100 py-1 px-3">
5210
5147
  <t t-if="store.fields.length">
5211
5148
  <RadioSelection
@@ -5223,8 +5160,7 @@
5223
5160
  </Section>
5224
5161
 
5225
5162
  <t t-set="values" t-value="store.values"/>
5226
- <Section t-if="store.doesDisplayNeedsValue and values.length">
5227
- <t t-set-slot="title">Base item:</t>
5163
+ <Section t-if="store.doesDisplayNeedsValue and values.length" title.translate="Base item:">
5228
5164
  <div class="o-pivot-measure-display-value w-100 py-1 px-3">
5229
5165
  <RadioSelection
5230
5166
  choices="values"
@@ -5252,8 +5188,7 @@
5252
5188
  <div class="d-flex flex-column h-100 justify-content-between overflow-hidden">
5253
5189
  <div class="h-100 position-relative overflow-x-hidden overflow-y-auto">
5254
5190
  <PivotTitleSection pivotId="props.pivotId" flipAxis.bind="flipAxis"/>
5255
- <Section>
5256
- <t t-set-slot="title">Range</t>
5191
+ <Section title.translate="Range">
5257
5192
  <SelectionInput
5258
5193
  ranges="ranges"
5259
5194
  required="true"
@@ -5318,8 +5253,7 @@
5318
5253
  />
5319
5254
  </Section>
5320
5255
 
5321
- <Section class="'pt-0'">
5322
- <t t-set-slot="title">Columns to analyze</t>
5256
+ <Section class="'pt-0'" title.translate="Columns to analyze">
5323
5257
  <div class="o-checkbox-selection overflow-auto">
5324
5258
  <t t-set="selectAllLabel">Select all</t>
5325
5259
  <Checkbox
@@ -5373,8 +5307,7 @@
5373
5307
 
5374
5308
  <t t-name="o-spreadsheet-SettingsPanel">
5375
5309
  <div class="o-settings-panel">
5376
- <Section>
5377
- <t t-set-slot="title">Locale</t>
5310
+ <Section title.translate="Locale">
5378
5311
  <select class="o-input" t-on-change="(ev) => this.onLocaleChange(ev.target.value)">
5379
5312
  <option
5380
5313
  t-foreach="supportedLocales"
@@ -5387,19 +5320,19 @@
5387
5320
  </select>
5388
5321
  <div class="o-locale-preview mt-4 p-3 rounded">
5389
5322
  <div>
5390
- <span class="fw-bold me-1">Number:</span>
5323
+ <span class="o-fw-bold me-1">Number:</span>
5391
5324
  <span t-esc="numberFormatPreview"/>
5392
5325
  </div>
5393
5326
  <div>
5394
- <span class="fw-bold me-1">Date:</span>
5327
+ <span class="o-fw-bold me-1">Date:</span>
5395
5328
  <span t-esc="dateFormatPreview"/>
5396
5329
  </div>
5397
5330
  <div>
5398
- <span class="fw-bold me-1">Date time:</span>
5331
+ <span class="o-fw-bold me-1">Date time:</span>
5399
5332
  <span t-esc="dateTimeFormatPreview"/>
5400
5333
  </div>
5401
5334
  <div>
5402
- <span class="fw-bold me-1">First day of week:</span>
5335
+ <span class="o-fw-bold me-1">First day of week:</span>
5403
5336
  <span t-esc="firstDayOfWeek"/>
5404
5337
  </div>
5405
5338
  </div>
@@ -5414,7 +5347,7 @@
5414
5347
  <t t-name="o-spreadsheet-SidePanel">
5415
5348
  <div class="o-sidePanel" t-if="sidePanelStore.isOpen">
5416
5349
  <div class="o-sidePanelHeader">
5417
- <div class="o-sidePanelTitle o-heading-3" t-esc="getTitle()"/>
5350
+ <div class="o-sidePanelTitle o-fw-bold" t-esc="getTitle()"/>
5418
5351
  <div class="o-sidePanelClose" t-on-click="close">✕</div>
5419
5352
  </div>
5420
5353
  <div class="o-sidePanelBody-container d-flex flex-grow-1 ">
@@ -5447,8 +5380,7 @@
5447
5380
 
5448
5381
  <t t-name="o-spreadsheet-SplitIntoColumnsPanel">
5449
5382
  <div class="o-split-to-cols-panel">
5450
- <Section>
5451
- <t t-set-slot="title">Separator</t>
5383
+ <Section title.translate="Separator">
5452
5384
  <select class="o-input mb-3" t-on-change="(ev) => this.onSeparatorChange(ev.target.value)">
5453
5385
  <option
5454
5386
  t-foreach="separators"
@@ -5495,8 +5427,7 @@
5495
5427
 
5496
5428
  <t t-name="o-spreadsheet-TablePanel">
5497
5429
  <div class="o-table-panel">
5498
- <Section>
5499
- <t t-set-slot="title">Style options</t>
5430
+ <Section title.translate="Style options">
5500
5431
  <div class="d-flex flex-row">
5501
5432
  <div class="w-50">
5502
5433
  <div class="d-flex align-items-center">
@@ -5560,8 +5491,7 @@
5560
5491
  <Section>
5561
5492
  <TableStylePicker table="props.table"/>
5562
5493
  </Section>
5563
- <Section>
5564
- <t t-set-slot="title">Data range</t>
5494
+ <Section title.translate="Data range">
5565
5495
  <SelectionInput
5566
5496
  t-key="props.table.type"
5567
5497
  ranges="[this.state.tableXc]"
@@ -5609,16 +5539,13 @@
5609
5539
 
5610
5540
  <t t-name="o-spreadsheet-TableStyleEditorPanel">
5611
5541
  <div class="o-table-style-editor-panel">
5612
- <Section>
5613
- <t t-set-slot="title">Style name</t>
5542
+ <Section title.translate="Style name">
5614
5543
  <input type="text" class="o-input" t-model="state.styleName"/>
5615
5544
  </Section>
5616
- <Section class="'pt-1'">
5617
- <t t-set-slot="title">Style color</t>
5545
+ <Section class="'pt-1'" title.translate="Style color">
5618
5546
  <RoundColorPicker currentColor="state.primaryColor" onColorPicked.bind="onColorPicked"/>
5619
5547
  </Section>
5620
- <Section class="'pt-1'">
5621
- <t t-set-slot="title">Style template</t>
5548
+ <Section class="'pt-1'" title.translate="Style template">
5622
5549
  <div class="d-flex flex-wrap">
5623
5550
  <t t-foreach="tableTemplates" t-as="templateName" t-key="templateName">
5624
5551
  <TableStylePreview
@@ -5647,11 +5574,7 @@
5647
5574
  </t>
5648
5575
 
5649
5576
  <t t-name="o-spreadsheet-Spreadsheet">
5650
- <div
5651
- class="o-spreadsheet"
5652
- t-on-keydown="(ev) => !env.isDashboard() and this.onKeydown(ev)"
5653
- t-ref="spreadsheet"
5654
- t-att-style="getStyle()">
5577
+ <div class="o-spreadsheet" t-ref="spreadsheet" t-att-style="getStyle()">
5655
5578
  <t t-if="env.isDashboard()">
5656
5579
  <SpreadsheetDashboard/>
5657
5580
  </t>