@odoo/o-spreadsheet 18.5.0-alpha.7 → 18.5.0-alpha.9

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.5.0-alpha.7
5
- @date 2025-08-08T11:01:32.306Z
6
- @hash 1019d55
4
+ @version 18.5.0-alpha.9
5
+ @date 2025-08-19T16:55:34.562Z
6
+ @hash 0e0d850
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -215,7 +215,7 @@
215
215
  t-ref="input"
216
216
  class="os-input w-100"
217
217
  type="text"
218
- t-att-class="props.class"
218
+ t-att-class="inputClass"
219
219
  t-att-id="props.id"
220
220
  t-att-placeholder="props.placeholder"
221
221
  t-att-value="props.value"
@@ -981,6 +981,15 @@
981
981
  t-att-style="dragAndDrop.itemsStyle[col.nameWithGranularity]"
982
982
  class="pt-1">
983
983
  <PivotDimension dimension="col" onRemoved.bind="removeDimension">
984
+ <t t-set-slot="upper-right-icons">
985
+ <t t-set="errorMessage" t-value="getHugeDimensionErrorMessage(col)"/>
986
+ <i
987
+ t-if="errorMessage"
988
+ class="text-warning fa fa-exclamation-triangle"
989
+ t-att-title="errorMessage"
990
+ />
991
+ </t>
992
+
984
993
  <PivotDimensionGranularity
985
994
  t-if="isDateOrDatetimeField(col)"
986
995
  dimension="col"
@@ -1013,6 +1022,15 @@
1013
1022
  t-att-style="dragAndDrop.itemsStyle[row.nameWithGranularity]"
1014
1023
  class="pt-1">
1015
1024
  <PivotDimension dimension="row" onRemoved.bind="removeDimension">
1025
+ <t t-set-slot="upper-right-icons">
1026
+ <t t-set="errorMessage" t-value="getHugeDimensionErrorMessage(row)"/>
1027
+ <i
1028
+ t-if="errorMessage"
1029
+ class="text-warning fa fa-exclamation-triangle"
1030
+ t-att-title="errorMessage"
1031
+ />
1032
+ </t>
1033
+
1016
1034
  <PivotDimensionGranularity
1017
1035
  t-if="isDateOrDatetimeField(row)"
1018
1036
  dimension="row"
@@ -2323,6 +2341,30 @@
2323
2341
  </label>
2324
2342
  </t>
2325
2343
 
2344
+ <t t-name="o-spreadsheet-CarouselItemTitleCollapsible">
2345
+ <SidePanelCollapsible
2346
+ class="'o-carousel-item-title'"
2347
+ isInitiallyCollapsed="true"
2348
+ title.translate="Carousel Title">
2349
+ <t t-set-slot="content">
2350
+ <div class="ps-4">
2351
+ <TextInput
2352
+ value="title"
2353
+ onChange.bind="updateTitle"
2354
+ placeholder.translate="Title"
2355
+ alwaysShowBorder="true"
2356
+ />
2357
+ <TextStyler
2358
+ style="style"
2359
+ updateStyle.bind="updateStyle"
2360
+ defaultStyle="defaultStyle"
2361
+ hasHorizontalAlign="false"
2362
+ />
2363
+ </div>
2364
+ </t>
2365
+ </SidePanelCollapsible>
2366
+ </t>
2367
+
2326
2368
  <t t-name="o-spreadsheet.BadgeSelection">
2327
2369
  <div class="d-flex w-100 o-badge-selection">
2328
2370
  <t t-foreach="props.choices" t-as="choice" t-key="choice.value">
@@ -2337,6 +2379,37 @@
2337
2379
  </div>
2338
2380
  </t>
2339
2381
 
2382
+ <t t-name="o-spreadsheet-GenericZoomableChartDesignPanel">
2383
+ <GeneralDesignEditor t-props="props">
2384
+ <t t-set-slot="general-extension">
2385
+ <ChartLegend t-props="props"/>
2386
+ <Section class="'pt-0'" title.translate="Values">
2387
+ <ChartShowValues t-props="props"/>
2388
+ </Section>
2389
+ <Section class="'pt-0'" title.translate="Zoom">
2390
+ <Checkbox
2391
+ name="'zoomable'"
2392
+ label.translate="Show slicer"
2393
+ value="props.definition.zoomable"
2394
+ onChange.bind="onToggleZoom"
2395
+ className="'mb-2'"
2396
+ />
2397
+ </Section>
2398
+ </t>
2399
+ </GeneralDesignEditor>
2400
+ <SeriesWithAxisDesignEditor t-props="props"/>
2401
+ <SidePanelCollapsible isInitiallyCollapsed="true" title.translate="Axes">
2402
+ <t t-set-slot="content">
2403
+ <AxisDesignEditor
2404
+ axesList="axesList"
2405
+ chartId="props.chartId"
2406
+ definition="props.definition"
2407
+ updateChart="props.updateChart"
2408
+ />
2409
+ </t>
2410
+ </SidePanelCollapsible>
2411
+ </t>
2412
+
2340
2413
  <t t-name="o-spreadsheet-WaterfallChartDesignPanel">
2341
2414
  <GeneralDesignEditor t-props="props">
2342
2415
  <t t-set-slot="general-extension">
@@ -2352,6 +2425,18 @@
2352
2425
  <Section class="'pt-0'" title.translate="Values">
2353
2426
  <ChartShowValues t-props="props"/>
2354
2427
  </Section>
2428
+ <Section class="'pt-0'" title.translate="Zoom">
2429
+ <Checkbox
2430
+ name="'zoomable'"
2431
+ label.translate="Show slicer"
2432
+ value="props.definition.zoomable"
2433
+ onChange.bind="onToggleZoom"
2434
+ className="'mb-2'"
2435
+ />
2436
+ </Section>
2437
+ <Section class="'pt-1'" title.translate="Number formatting">
2438
+ <ChartHumanizeNumbers t-props="props"/>
2439
+ </Section>
2355
2440
  </t>
2356
2441
  </GeneralDesignEditor>
2357
2442
  <SidePanelCollapsible isInitiallyCollapsed="true" title.translate="Waterfall design">
@@ -2600,12 +2685,7 @@
2600
2685
  <GeneralDesignEditor t-props="props" defaultChartTitleFontSize="defaultScorecardTitleFontSize">
2601
2686
  <t t-set-slot="general-extension">
2602
2687
  <Section class="'pt-1'" title.translate="Number formatting">
2603
- <Checkbox
2604
- name="'humanizeNumbers'"
2605
- label="humanizeNumbersLabel"
2606
- value="props.definition.humanize"
2607
- onChange.bind="updateHumanizeNumbers"
2608
- />
2688
+ <ChartHumanizeNumbers t-props="props"/>
2609
2689
  </Section>
2610
2690
  </t>
2611
2691
  </GeneralDesignEditor>
@@ -2718,6 +2798,9 @@
2718
2798
  <ChartShowValues t-props="props"/>
2719
2799
  <ChartShowDataMarkers t-props="props"/>
2720
2800
  </Section>
2801
+ <Section class="'pt-1'" title.translate="Number formatting">
2802
+ <ChartHumanizeNumbers t-props="props"/>
2803
+ </Section>
2721
2804
  </t>
2722
2805
  </GeneralDesignEditor>
2723
2806
  <SeriesDesignEditor t-props="props"/>
@@ -2730,6 +2813,9 @@
2730
2813
  <Section class="'pt-0'" title.translate="Values">
2731
2814
  <ChartShowValues t-props="props"/>
2732
2815
  </Section>
2816
+ <Section class="'pt-1'" title.translate="Number formatting">
2817
+ <ChartHumanizeNumbers t-props="props"/>
2818
+ </Section>
2733
2819
  <PieHoleSize
2734
2820
  t-if="props.definition.isDoughnut"
2735
2821
  value="props.definition.pieHolePercentage ?? this.defaultHoleSize"
@@ -2793,6 +2879,18 @@
2793
2879
  <ChartShowValues t-props="props"/>
2794
2880
  <ChartShowDataMarkers t-props="props"/>
2795
2881
  </Section>
2882
+ <Section class="'pt-0'" title.translate="Zoom">
2883
+ <Checkbox
2884
+ name="'zoomable'"
2885
+ label.translate="Show slicer"
2886
+ value="props.definition.zoomable"
2887
+ onChange.bind="onToggleZoom"
2888
+ className="'mb-2'"
2889
+ />
2890
+ </Section>
2891
+ <Section class="'pt-1'" title.translate="Number formatting">
2892
+ <ChartHumanizeNumbers t-props="props"/>
2893
+ </Section>
2796
2894
  </t>
2797
2895
  </GeneralDesignEditor>
2798
2896
  <SeriesWithAxisDesignEditor t-props="props"/>
@@ -2899,6 +2997,9 @@
2899
2997
  <option value="left">Bottom left</option>
2900
2998
  </select>
2901
2999
  </Section>
3000
+ <Section class="'pt-1'" title.translate="Number formatting">
3001
+ <ChartHumanizeNumbers t-props="props"/>
3002
+ </Section>
2902
3003
  </t>
2903
3004
  </GeneralDesignEditor>
2904
3005
 
@@ -2987,7 +3088,13 @@
2987
3088
  </t>
2988
3089
 
2989
3090
  <t t-name="o-spreadsheet-GaugeChartDesignPanel">
2990
- <GeneralDesignEditor t-props="props"/>
3091
+ <GeneralDesignEditor t-props="props">
3092
+ <t t-set-slot="general-extension">
3093
+ <Section class="'pt-1'" title.translate="Number formatting">
3094
+ <ChartHumanizeNumbers t-props="props"/>
3095
+ </Section>
3096
+ </t>
3097
+ </GeneralDesignEditor>
2991
3098
  <SidePanelCollapsible isInitiallyCollapsed="false" title.translate="Gauge Design">
2992
3099
  <t t-set-slot="content">
2993
3100
  <Section class="'pt-0'" title.translate="Range">
@@ -3129,6 +3236,9 @@
3129
3236
  <Section class="'pt-0'" title.translate="Values">
3130
3237
  <ChartShowValues t-props="props"/>
3131
3238
  </Section>
3239
+ <Section class="'pt-1'" title.translate="Number formatting">
3240
+ <ChartHumanizeNumbers t-props="props"/>
3241
+ </Section>
3132
3242
  </t>
3133
3243
  </GeneralDesignEditor>
3134
3244
 
@@ -3157,6 +3267,18 @@
3157
3267
  <ChartShowValues t-props="props"/>
3158
3268
  <ChartShowDataMarkers t-props="props"/>
3159
3269
  </Section>
3270
+ <Section class="'pt-0'" title.translate="Zoom">
3271
+ <Checkbox
3272
+ name="'zoomable'"
3273
+ label.translate="Show slicer"
3274
+ value="props.definition.zoomable"
3275
+ onChange.bind="onToggleZoom"
3276
+ className="'mb-2'"
3277
+ />
3278
+ </Section>
3279
+ <Section class="'pt-1'" title.translate="Number formatting">
3280
+ <ChartHumanizeNumbers t-props="props"/>
3281
+ </Section>
3160
3282
  </t>
3161
3283
  </GeneralDesignEditor>
3162
3284
  <SeriesWithAxisDesignEditor t-props="props">
@@ -3191,6 +3313,9 @@
3191
3313
  <Section class="'pt-0'" title.translate="Values">
3192
3314
  <ChartShowValues t-props="props"/>
3193
3315
  </Section>
3316
+ <Section class="'pt-1'" title.translate="Number formatting">
3317
+ <ChartHumanizeNumbers t-props="props"/>
3318
+ </Section>
3194
3319
  </t>
3195
3320
  </GeneralDesignEditor>
3196
3321
  <SeriesWithAxisDesignEditor t-props="props"/>
@@ -3828,6 +3953,15 @@
3828
3953
  </Section>
3829
3954
  </t>
3830
3955
 
3956
+ <t t-name="o-spreadsheet-ChartHumanizeNumbers">
3957
+ <Checkbox
3958
+ name="'humanizeNumbers'"
3959
+ label.translate="Make numbers human-readable"
3960
+ value="props.definition.humanize ?? true"
3961
+ onChange="(humanize) => props.updateChart(this.props.chartId, { humanize })"
3962
+ />
3963
+ </t>
3964
+
3831
3965
  <t t-name="o-spreadsheet-GenericChartConfigPanel">
3832
3966
  <div>
3833
3967
  <ChartDataSeries
@@ -3992,41 +4126,52 @@
3992
4126
  <t t-name="o-spreadsheet-CarouselPanel">
3993
4127
  <div class="o-carousel-panel h-100 overflow-auto">
3994
4128
  <div class="o-carousel-preview-list overflow-auto" t-ref="previewList">
3995
- <t t-foreach="carouselItems" t-as="item" t-key="getItemId(item)">
4129
+ <div
4130
+ t-foreach="carouselItems"
4131
+ t-as="item"
4132
+ t-key="getItemId(item)"
4133
+ class="o-carousel-preview position-relative d-flex align-items-center border-bottom ps-1 pe-2 pt-3 pb-2 w-100"
4134
+ t-att-class="{ 'o-dragging': dragAndDrop.draggedItemId === getItemId(item) }"
4135
+ t-att-style="getPreviewDivStyle(item)">
3996
4136
  <div
3997
- class="o-carousel-preview border-bottom pe-2 position-relative w-100 d-flex align-items-center"
3998
- t-att-class="{ 'o-dragging': dragAndDrop.draggedItemId === getItemId(item) }"
3999
- t-att-style="getPreviewDivStyle(item)">
4000
- <div
4001
- class="o-drag-handle h-100 position-absolute d-flex align-items-center o-button-icon ps-1 flex-shrink-0"
4002
- t-on-pointerdown.stop.prevent="(ev) => this.onDragHandleMouseDown(item, ev)">
4003
- <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
4004
- </div>
4005
- <div
4006
- class="o-carousel-preview-icon ms-3 flex-shrink-0 d-flex align-items-center justify-content-center">
4007
- <t t-call="{{getItemPreview(item)}}"/>
4008
- </div>
4009
- <div class="o-carousel-preview-title text-truncate ms-2">
4010
- <TextInput
4011
- value="getItemTitle(item)"
4012
- onChange="(newName) => this.renameCarouselItem(item, newName)"
4137
+ class="o-drag-handle position-absolute ps-1 flex-shrink-0"
4138
+ t-on-pointerdown.stop.prevent="(ev) => this.onDragHandleMouseDown(item, ev)">
4139
+ <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
4140
+ </div>
4141
+ <div class="flex-grow-1">
4142
+ <div class="d-flex align-items-center">
4143
+ <div
4144
+ class="o-carousel-preview-icon ms-3 flex-shrink-0 d-flex align-items-center justify-content-center">
4145
+ <t t-call="{{getItemPreview(item)}}"/>
4146
+ </div>
4147
+ <div class="o-carousel-preview-title text-truncate ms-2">
4148
+ <TextInput
4149
+ value="getItemTitle(item)"
4150
+ onChange="(newName) => this.renameCarouselItem(item, newName)"
4151
+ />
4152
+ </div>
4153
+ <div class="ms-auto"/>
4154
+ <div
4155
+ t-if="item.type === 'chart'"
4156
+ class="o-edit-button o-button-icon pe-2 ps-1 flex-shrink-0 fa fa-pencil"
4157
+ t-on-click.stop="(ev) => this.editCarouselItem(item, ev)"
4158
+ title="Edit chart"
4013
4159
  />
4160
+ <div
4161
+ class="o-delete-button o-button-icon pe-2 ps-1 flex-shrink-0"
4162
+ t-on-click.stop="(ev) => this.deleteCarouselItem(item, ev)"
4163
+ title="Remove chart">
4164
+ <t t-call="o-spreadsheet-Icon.TRASH_FILLED"/>
4165
+ </div>
4014
4166
  </div>
4015
- <div class="ms-auto"/>
4016
- <div
4017
- t-if="item.type === 'chart'"
4018
- class="o-edit-button o-button-icon pe-2 ps-1 flex-shrink-0 fa fa-pencil"
4019
- t-on-click.stop="(ev) => this.editCarouselItem(item, ev)"
4020
- title="Edit chart"
4021
- />
4022
- <div
4023
- class="o-delete-button o-button-icon pe-2 ps-1 flex-shrink-0"
4024
- t-on-click.stop="(ev) => this.deleteCarouselItem(item, ev)"
4025
- title="Remove chart">
4026
- <t t-call="o-spreadsheet-Icon.TRASH_FILLED"/>
4167
+ <div class="ms-3">
4168
+ <CarouselItemTitleCollapsible
4169
+ carouselTitle="item.carouselTitle"
4170
+ onUpdateCarouselTitle="(style) => this.onUpdateCarouselTitle(item_index, style)"
4171
+ />
4027
4172
  </div>
4028
4173
  </div>
4029
- </t>
4174
+ </div>
4030
4175
  </div>
4031
4176
  <div
4032
4177
  class="o-button-link o-carousel-add-chart float-end d-flex align-items-center pt-4 pe-4 gap-2"
@@ -6141,30 +6286,36 @@
6141
6286
  </t>
6142
6287
 
6143
6288
  <t t-name="o-spreadsheet-CarouselFigure">
6144
- <div class="o-carousel w-100 h-100" t-on-dblclick="onCarouselDoubleClick">
6289
+ <div class="o-carousel w-100 h-100 d-flex flex-column" t-on-dblclick="onCarouselDoubleClick">
6145
6290
  <t t-set="selectedItem" t-value="selectedCarouselItem"/>
6146
6291
  <div
6147
- class="o-carousel-header position-absolute end-0 top-0 d-flex pe-1 rounded pe-auto"
6292
+ class="o-carousel-header d-flex flex-shrink-0 pe-1 rounded pe-auto"
6148
6293
  t-att-class="{
6149
6294
  'o-carousel-header-floating': !env.isDashboard() and selectedItem?.type === 'carouselDataView',
6150
6295
  }"
6151
- t-att-style="headerStyle"
6152
- t-on-pointerdown.stop="">
6153
- <t t-foreach="carousel.items" t-as="item" t-key="item_index">
6154
- <div
6155
- class="o-carousel-tab text-truncate px-2 mt-1 mb-1 flex-shrink-0"
6156
- t-att-class="{ 'selected': isItemSelected(item) }"
6157
- t-esc="getItemTitle(item)"
6158
- t-on-click.stop="() => this.onCarouselTabClick(item)"
6159
- />
6160
- </t>
6296
+ t-att-style="headerStyle">
6297
+ <div
6298
+ class="o-carousel-title d-flex align-items-center"
6299
+ t-esc="title"
6300
+ t-att-style="titleStyle"
6301
+ />
6302
+ <div class="ms-auto d-flex">
6303
+ <t t-foreach="carousel.items" t-as="item" t-key="item_index">
6304
+ <div
6305
+ class="o-carousel-tab text-truncate px-2 mt-1 mb-1 flex-shrink-0"
6306
+ t-att-class="{ 'selected': isItemSelected(item) }"
6307
+ t-esc="getItemTitle(item)"
6308
+ t-on-click.stop="() => this.onCarouselTabClick(item)"
6309
+ />
6310
+ </t>
6311
+ </div>
6161
6312
  </div>
6162
6313
  <div
6163
6314
  t-if="!selectedItem"
6164
- class="o-carousel-empty w-100 h-100 d-flex align-items-center justify-content-center">
6315
+ class="o-carousel-empty w-100 flex-fill d-flex align-items-center justify-content-center">
6165
6316
  <t t-call="o-spreadsheet-Icon.CAROUSEL"/>
6166
6317
  </div>
6167
- <div t-elif="selectedItem.type === 'chart'" class="o-carousel-content w-100 h-100">
6318
+ <div t-elif="selectedItem.type === 'chart'" class="o-carousel-content w-100 flex-fill">
6168
6319
  <div class="o-chart-container w-100 h-100">
6169
6320
  <t
6170
6321
  t-component="chartComponent"
@@ -6302,6 +6453,24 @@
6302
6453
  <canvas class="o-figure-canvas w-100 h-100" t-att-style="canvasStyle" t-ref="graphContainer"/>
6303
6454
  </t>
6304
6455
 
6456
+ <t t-name="o-spreadsheet-ZoomableChartJsComponent">
6457
+ <div class="w-100 h-100" t-att-style="canvasStyle">
6458
+ <div t-att-style="containerStyle">
6459
+ <canvas class="o-figure-canvas w-100 h-100" t-ref="graphContainer"/>
6460
+ </div>
6461
+ <div t-if="sliceable" class="o-master-chart-container m-0">
6462
+ <canvas
6463
+ class="o-figure-canvas o-master-chart-canvas w-100 h-100"
6464
+ t-ref="masterChartCanvas"
6465
+ t-on-dblclick="onDoubleClickInMasterChart"
6466
+ t-on-pointerdown="onPointerDownInMasterChart"
6467
+ t-on-pointermove="onPointerMoveInMasterChart"
6468
+ t-on-mouseleave="onMouseLeaveMasterChart"
6469
+ />
6470
+ </div>
6471
+ </div>
6472
+ </t>
6473
+
6305
6474
  <t t-name="o-spreadsheet-ErrorToolTip">
6306
6475
  <div class="o-error-tooltip">
6307
6476
  <t t-if="evaluationError">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "18.5.0-alpha.7",
3
+ "version": "18.5.0-alpha.9",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",