@odoo/o-spreadsheet 19.0.11 → 19.0.15

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.
@@ -0,0 +1,390 @@
1
+
2
+ /*
3
+ * This file is generated by o-spreadsheet build tools. Do not edit it.
4
+ * @see https://github.com/odoo/o-spreadsheet
5
+ * @version 19.0.15
6
+ * @date 2025-12-26T10:20:18.989Z
7
+ * @hash fe625c9
8
+ */
9
+ /* Originates from src/components/top_bar/top_bar.scss */
10
+ @media (max-width: 1200px) {
11
+ .o-spreadsheet .o-topbar-responsive {
12
+ flex-direction: column !important;
13
+ }
14
+ }
15
+ @media (max-width: 768px) {
16
+ .o-spreadsheet .irregularity-map span {
17
+ overflow: auto;
18
+ align-items: normal !important;
19
+ }
20
+ }
21
+ .o-spreadsheet .tool-container {
22
+ display: flex;
23
+ justify-content: center;
24
+ align-items: center;
25
+ }
26
+
27
+ /* Originates from src/components/top_bar/dropdown_action/dropdown_action.scss */
28
+ .o-spreadsheet .o-dropdown {
29
+ position: relative;
30
+ display: flex;
31
+ align-items: center;
32
+ }
33
+ .o-spreadsheet .o-dropdown-content {
34
+ background-color: white;
35
+ }
36
+ .o-spreadsheet .o-dropdown-content .o-dropdown-line {
37
+ display: flex;
38
+ }
39
+ .o-spreadsheet .o-dropdown-content .o-dropdown-line > span {
40
+ padding: 4px;
41
+ }
42
+
43
+ /* Originates from src/components/spreadsheet/spreadsheet.scss */
44
+ .o-spreadsheet {
45
+ color: #374151;
46
+ }
47
+ .o-spreadsheet input {
48
+ background-color: white;
49
+ }
50
+ .o-spreadsheet.o-spreadsheet-mobile .o-spreadsheet-topbar-wrapper,
51
+ .o-spreadsheet .o-spreadsheet-bottombar-wrapper {
52
+ box-shadow: 0 0 3px 1px lightgray;
53
+ }
54
+ .o-spreadsheet .o-spreadsheet-bottombar-wrapper {
55
+ overscroll-behavior: none;
56
+ }
57
+
58
+ /* Originates from src/components/small_bottom_bar/small_bottom_bar.scss */
59
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar {
60
+ background-color: #f5f5f5;
61
+ border-bottom: #f2f2f2;
62
+ }
63
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-selection-button {
64
+ border-radius: 2px;
65
+ background-color: #e7e9ed;
66
+ }
67
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-selection-button .o-icon {
68
+ width: 24px;
69
+ height: 24px;
70
+ color: #6aa84f;
71
+ }
72
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-small-composer {
73
+ background-color: white;
74
+ border: lightgrey solid 1px;
75
+ line-height: 26px;
76
+ display: flex;
77
+ }
78
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .bottom-bar-menu {
79
+ background-color: #f5f5f5;
80
+ border-top: 1px solid lightgrey;
81
+ border-bottom: 1px solid lightgrey;
82
+ }
83
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-spreadsheet-bottom-bar {
84
+ border: none;
85
+ }
86
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-composer {
87
+ overscroll-behavior: contain;
88
+ }
89
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-composer-assistant-container {
90
+ transform: translateY(calc(-26px - 100%));
91
+ }
92
+ .o-spreadsheet .o-spreadsheet-small-bottom-bar .o-spreadsheet-editor-symbol {
93
+ height: 33px;
94
+ cursor: pointer;
95
+ user-select: none;
96
+ }
97
+
98
+ /* Originates from src/components/small_bottom_bar/ribbon_menu/ribbon_menu.scss */
99
+ .o-spreadsheet .o-ribbon-menu {
100
+ height: 250px;
101
+ }
102
+ .o-spreadsheet .o-ribbon-menu .o-ribbon-title {
103
+ background-color: white;
104
+ border-bottom: 2px solid #e0e2e4;
105
+ }
106
+ .o-spreadsheet .o-ribbon-menu .o-previous-button {
107
+ background-color: #f5f5f5;
108
+ }
109
+ .o-spreadsheet .o-ribbon-menu .o-ribbon-menu-wrapper {
110
+ max-height: 100%;
111
+ }
112
+ .o-spreadsheet .o-ribbon-menu .o-ribbon-menu-wrapper.scroll-top::before {
113
+ width: 100%;
114
+ height: 15px;
115
+ content: "";
116
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.2), transparent);
117
+ position: absolute;
118
+ pointer-events: none;
119
+ }
120
+ .o-spreadsheet .o-ribbon-menu .o-ribbon-menu-wrapper.scroll-bottom::after {
121
+ width: 100%;
122
+ height: 15px;
123
+ content: "";
124
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.2), transparent);
125
+ position: absolute;
126
+ pointer-events: none;
127
+ z-index: 1;
128
+ bottom: 0;
129
+ }
130
+ .o-spreadsheet .o-ribbon-menu .o-menu-item {
131
+ height: 40px;
132
+ }
133
+
134
+ /* Originates from src/components/side_panel/pivot/pivot_custom_groups_collapsible/pivot_custom_groups_collapsible.scss */
135
+ .o-spreadsheet .o-pivot-custom-groups .o_side_panel_collapsible_title {
136
+ font-size: 13px !important;
137
+ padding: 4px 0 4px 0 !important;
138
+ }
139
+ .o-spreadsheet .o-pivot-custom-groups .o_side_panel_collapsible_title .collapsor > div {
140
+ padding-left: 2px !important;
141
+ }
142
+ .o-spreadsheet .o-pivot-custom-groups .o_side_panel_collapsible_title .collapsor-arrow {
143
+ transform-origin: 5px 7px;
144
+ }
145
+ .o-spreadsheet .o-pivot-custom-groups .o_side_panel_collapsible_title .collapsor-arrow .o-icon {
146
+ width: 10px;
147
+ height: 14px;
148
+ }
149
+ .o-spreadsheet .o-pivot-custom-groups .os-collapse > div {
150
+ padding: 0 !important;
151
+ }
152
+
153
+ /* Originates from src/components/side_panel/chart/building_blocks/pie_hole_size/pie_hole_size.scss */
154
+ .o-spreadsheet .o-sidePanel .o-pie-hole-size-input {
155
+ width: 40px;
156
+ }
157
+
158
+ /* Originates from src/components/side_panel/carousel_panel/carousel_panel.scss */
159
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview {
160
+ height: 60px;
161
+ background-color: #fff;
162
+ border-left: 5px solid transparent;
163
+ }
164
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview:not(:hover):not(.o-dragging) .o-drag-handle {
165
+ display: none !important;
166
+ }
167
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview.o-selected {
168
+ border-color: #714b67;
169
+ }
170
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview .o-drag-handle {
171
+ cursor: move;
172
+ }
173
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview .o-drag-handle .o-icon {
174
+ width: 6px;
175
+ height: 30px;
176
+ }
177
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview .o-carousel-preview-icon {
178
+ width: 48px;
179
+ height: 48px;
180
+ }
181
+ .o-spreadsheet .o-carousel-panel .o-carousel-preview .o-carousel-preview-icon .o-icon {
182
+ width: 36px;
183
+ height: 36px;
184
+ }
185
+
186
+ /* Originates from src/components/full_screen_figure/full_screen_figure.scss */
187
+ .o-spreadsheet .o-fullscreen-figure-overlay {
188
+ z-index: 34; /* TODO: use css variables once ComponentsImportance is available in the scss. */
189
+ background-color: rgba(0, 0, 0, 0.4);
190
+ padding: 60px;
191
+ }
192
+ .o-spreadsheet .o-fullscreen-figure-overlay .o-figure:not(:hover) .o-dashboard-chart-select {
193
+ display: block !important;
194
+ }
195
+
196
+ /* Originates from src/components/filters/filter_menu_value_list/filter_menu_value_list.scss */
197
+ .o-spreadsheet .o-filter-menu .o-search-icon {
198
+ right: 5px;
199
+ top: 3px;
200
+ opacity: 0.4;
201
+ }
202
+ .o-spreadsheet .o-filter-menu .o-search-icon svg {
203
+ height: 16px;
204
+ width: 16px;
205
+ vertical-align: middle;
206
+ }
207
+ .o-spreadsheet .o-filter-menu .o-filter-menu-actions {
208
+ display: flex;
209
+ flex-direction: row;
210
+ margin-bottom: 4px;
211
+ }
212
+ .o-spreadsheet .o-filter-menu .o-filter-menu-list {
213
+ flex: auto;
214
+ overflow-y: auto;
215
+ border: 1px solid #d8dadd;
216
+ height: 130px;
217
+ }
218
+ .o-spreadsheet .o-filter-menu .o-filter-menu-list .o-filter-menu-no-values {
219
+ color: #949494;
220
+ font-style: italic;
221
+ }
222
+
223
+ /* Originates from src/components/figures/figure_container/figure_container.scss */
224
+ .o-spreadsheet .o-figure.o-add-to-carousel::before {
225
+ content: "";
226
+ position: absolute;
227
+ top: 0;
228
+ left: 0;
229
+ width: 100%;
230
+ height: 100%;
231
+ background: rgba(255, 255, 255, 0.4);
232
+ backdrop-filter: blur(2px);
233
+ z-index: 5;
234
+ pointer-events: none;
235
+ }
236
+ .o-spreadsheet .o-figure.o-add-to-carousel::after {
237
+ content: "+";
238
+ position: absolute;
239
+ top: calc(50% - 15px);
240
+ left: 50%;
241
+ transform: translate(-50%, -50%);
242
+ font-size: 120px;
243
+ color: rgba(0, 0, 0, 0.5);
244
+ text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
245
+ z-index: 10;
246
+ pointer-events: none;
247
+ font-weight: bold;
248
+ }
249
+
250
+ /* Originates from src/components/figures/figure_carousel/figure_carousel.scss */
251
+ .o-spreadsheet .o-carousel-content {
252
+ height: 0; /* To make flex-fill work */
253
+ }
254
+ .o-spreadsheet .o-carousel-empty {
255
+ background-color: #ffffff;
256
+ }
257
+ .o-spreadsheet .o-carousel-empty .o-icon {
258
+ width: 50%;
259
+ height: 50%;
260
+ color: #ced4da;
261
+ }
262
+ .o-spreadsheet .o-carousel-header {
263
+ z-index: 1;
264
+ overflow: hidden;
265
+ padding-left: 4px; /* Align with MIN_CELL_TEXT_MARGIN */
266
+ border: 1px solid transparent;
267
+ }
268
+ .o-spreadsheet .o-carousel-header.o-carousel-header-floating {
269
+ border: 1px solid #c9ccd2;
270
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
271
+ }
272
+ .o-spreadsheet .o-carousel-header .o-carousel-title {
273
+ max-width: 60%;
274
+ }
275
+ .o-spreadsheet .o-carousel-header .o-carousel-tabs {
276
+ width: 0; /* To make flex-fill work */
277
+ }
278
+ .o-spreadsheet .o-carousel-header .o-carousel-button {
279
+ cursor: pointer;
280
+ }
281
+ .o-spreadsheet .o-carousel-header .o-carousel-button.o-carousel-tabs-dropdown {
282
+ font-size: 16px;
283
+ line-height: 16px;
284
+ }
285
+ .o-spreadsheet .o-carousel-header .o-carousel-button.o-carousel-full-screen-button {
286
+ margin: 1px;
287
+ }
288
+ .o-spreadsheet .o-carousel-header .o-carousel-button.o-carousel-menu-button {
289
+ padding: 3px 5px;
290
+ }
291
+ .o-spreadsheet .o-carousel-header .o-carousel-button.active, .o-spreadsheet .o-carousel-header .o-carousel-button:hover {
292
+ background-color: #d8dadd;
293
+ color: #111827;
294
+ }
295
+ .o-spreadsheet .o-carousel-header .o-carousel-tab {
296
+ cursor: pointer;
297
+ max-width: 150px;
298
+ font-size: 14px;
299
+ }
300
+ .o-spreadsheet .o-carousel-header .o-carousel-tab:hover {
301
+ color: #714b67;
302
+ }
303
+ .o-spreadsheet .o-carousel-header .o-carousel-tab.selected {
304
+ color: #714b67;
305
+ font-weight: 600;
306
+ }
307
+
308
+ /* Originates from src/components/figures/chart/chart_dashboard_menu/chart_dashboard_menu.scss */
309
+ .o-spreadsheet .o-figure:not(:hover):not(:focus-within) .o-dashboard-chart-select {
310
+ visibility: hidden;
311
+ }
312
+ .o-spreadsheet .o-figure .o-dashboard-chart-select {
313
+ cursor: default;
314
+ }
315
+ .o-spreadsheet .o-figure .o-dashboard-chart-select > div {
316
+ height: 28px;
317
+ }
318
+ .o-spreadsheet .o-figure .o-dashboard-chart-select .o-chart-dashboard-item.active, .o-spreadsheet .o-figure .o-dashboard-chart-select .o-chart-dashboard-item:hover, .o-spreadsheet .o-figure .o-dashboard-chart-select .o-chart-dashboard-item:target {
319
+ color: #111827 !important;
320
+ background: rgba(0, 0, 0, 0.1);
321
+ }
322
+ .o-spreadsheet .o-figure .o-dashboard-chart-select .o-chart-dashboard-item .o-chart-preview {
323
+ stroke-width: 2px;
324
+ transform: scale(1.1);
325
+ width: 16px;
326
+ height: 16px;
327
+ }
328
+
329
+ .o-spreadsheet.o-spreadsheet-mobile .o-figure .o-dashboard-chart-select {
330
+ display: block !important;
331
+ }
332
+
333
+ /* Originates from src/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.scss */
334
+ .o-spreadsheet .sorting-icon {
335
+ margin: 1px;
336
+ }
337
+ .o-spreadsheet .sorting-icon .fa-sort-desc {
338
+ transform: translateY(-2px);
339
+ }
340
+ .o-spreadsheet .sorting-icon .fa-sort-asc {
341
+ transform: translateY(4px);
342
+ }
343
+ .o-spreadsheet div:not(:hover) > .sorting-icon:has(> .fa-sort) {
344
+ display: none;
345
+ }
346
+
347
+ /* Originates from src/components/composer/formula_assistant/formula_assistant.scss */
348
+ .o-spreadsheet .o-formula-assistant {
349
+ background: #ffffff;
350
+ }
351
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-head {
352
+ background-color: #f2f2f2;
353
+ padding: 10px;
354
+ }
355
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-core {
356
+ border-bottom: 1px solid gray;
357
+ }
358
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-arg-description {
359
+ font-size: 85%;
360
+ }
361
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-focus div:first-child,
362
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-focus span {
363
+ color: #9b359b;
364
+ text-shadow: 0px 0px 1px #9b359b;
365
+ }
366
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-focus div:last-child {
367
+ color: black;
368
+ }
369
+ .o-spreadsheet .o-formula-assistant .o-formula-assistant-gray {
370
+ color: gray;
371
+ }
372
+ .o-spreadsheet .o-formula-assistant .collapsor {
373
+ cursor: pointer;
374
+ }
375
+ .o-spreadsheet .o-formula-assistant .collapsor:hover {
376
+ background-color: #ced4da;
377
+ color: #111827;
378
+ }
379
+ .o-spreadsheet .o-formula-assistant .collapsor .collapsor-arrow {
380
+ transform-origin: 6px 8px;
381
+ transform: rotate(-180deg);
382
+ transition: transform 0.2s ease-in-out;
383
+ }
384
+ .o-spreadsheet .o-formula-assistant .collapsor .collapsor-arrow .o-icon {
385
+ width: 12px;
386
+ height: 16px;
387
+ }
388
+ .o-spreadsheet .o-formula-assistant .collapsor.collapsed .collapsor-arrow {
389
+ transform: rotate(0deg);
390
+ }
@@ -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.0.11
5
- @date 2025-11-24T07:47:37.683Z
6
- @hash f5bdbcc
4
+ @version 19.0.15
5
+ @date 2025-12-26T10:20:18.147Z
6
+ @hash fe625c9
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -1806,47 +1806,44 @@
1806
1806
  <t t-name="o-spreadsheet-ConditionalFormatPreview">
1807
1807
  <t t-set="cf" t-value="props.conditionalFormat"/>
1808
1808
  <div
1809
- class="o-cf-preview w-100"
1809
+ class="o-cf-preview w-100 d-flex align-items-center"
1810
1810
  t-ref="cfPreview"
1811
1811
  t-att-class="props.class"
1812
1812
  t-att-data-id="cf.id"
1813
1813
  t-on-click="props.onPreviewClick"
1814
1814
  t-on-pointerdown="(ev) => this.onMouseDown(ev)">
1815
- <div class="position-relative h-100 w-100 d-flex align-items-center">
1815
+ <div class="o-cf-drag-handle h-100 position-absolute d-flex align-items-center o-button-icon">
1816
+ <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
1817
+ </div>
1818
+ <t t-if="cf.rule.type==='IconSetRule'">
1819
+ <div class="o-cf-preview-icon d-flex justify-content-around align-items-center me-3">
1820
+ <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.upper].template}}"/>
1821
+ <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.middle].template}}"/>
1822
+ <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.lower].template}}"/>
1823
+ </div>
1824
+ </t>
1825
+ <t t-else="">
1816
1826
  <div
1817
- class="o-cf-drag-handle h-100 position-absolute d-flex align-items-center o-button-icon">
1818
- <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
1819
- </div>
1820
- <t t-if="cf.rule.type==='IconSetRule'">
1821
- <div class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2">
1822
- <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.upper].template}}"/>
1823
- <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.middle].template}}"/>
1824
- <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.lower].template}}"/>
1825
- </div>
1826
- </t>
1827
- <t t-else="">
1828
- <div
1829
- t-att-style="getPreviewImageStyle(cf.rule)"
1830
- class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2">
1831
- 123
1832
- </div>
1833
- </t>
1834
- <div class="o-cf-preview-description">
1835
- <div class="o-cf-preview-ruletype">
1836
- <div class="o-cf-preview-description-rule o-fw-bold text-truncate">
1837
- <t t-esc="getDescription(cf)"/>
1838
- </div>
1839
- </div>
1840
- <div class="o-cf-preview-range text-truncate" t-esc="cf.ranges"/>
1827
+ t-att-style="getPreviewImageStyle(cf.rule)"
1828
+ class="o-cf-preview-icon d-flex justify-content-around align-items-center me-3 flex-shrink-0">
1829
+ 123
1841
1830
  </div>
1842
- <div class="o-cf-delete">
1843
- <div
1844
- class="o-cf-delete-button o-button-icon"
1845
- t-on-click.stop="(ev) => this.deleteConditionalFormat(cf, ev)"
1846
- title="Remove rule">
1847
- <t t-call="o-spreadsheet-Icon.TRASH_FILLED"/>
1831
+ </t>
1832
+ <div class="o-cf-preview-description me-3 overflow-auto">
1833
+ <div class="o-cf-preview-ruletype">
1834
+ <div class="o-cf-preview-description-rule o-fw-bold text-truncate">
1835
+ <t t-esc="getDescription(cf)"/>
1848
1836
  </div>
1849
1837
  </div>
1838
+ <div class="o-cf-preview-range text-truncate" t-esc="cf.ranges"/>
1839
+ </div>
1840
+ <div class="o-cf-delete ms-auto">
1841
+ <div
1842
+ class="o-cf-delete-button o-button-icon"
1843
+ t-on-click.stop="(ev) => this.deleteConditionalFormat(cf, ev)"
1844
+ title="Remove rule">
1845
+ <t t-call="o-spreadsheet-Icon.TRASH_FILLED"/>
1846
+ </div>
1850
1847
  </div>
1851
1848
  </div>
1852
1849
  </t>
@@ -4097,6 +4094,40 @@
4097
4094
  />
4098
4095
  </t>
4099
4096
 
4097
+ <t t-name="o-spreadsheet-BarChartDesignPanel">
4098
+ <GeneralDesignEditor t-props="props">
4099
+ <t t-set-slot="general-extension">
4100
+ <ChartLegend t-props="props"/>
4101
+ <Section class="'pt-0'" title.translate="Values">
4102
+ <ChartShowValues t-props="props"/>
4103
+ </Section>
4104
+ <Section t-if="isZoomable" class="'pt-0'" title.translate="Zoom">
4105
+ <Checkbox
4106
+ name="'zoomable'"
4107
+ label.translate="Show slicer"
4108
+ value="props.definition.zoomable"
4109
+ onChange.bind="onToggleZoom"
4110
+ className="'mb-2'"
4111
+ />
4112
+ </Section>
4113
+ <Section class="'pt-0'" title.translate="Number formatting">
4114
+ <ChartHumanizeNumbers t-props="props"/>
4115
+ </Section>
4116
+ </t>
4117
+ </GeneralDesignEditor>
4118
+ <SeriesWithAxisDesignEditor t-props="props"/>
4119
+ <SidePanelCollapsible isInitiallyCollapsed="true" title.translate="Axes">
4120
+ <t t-set-slot="content">
4121
+ <AxisDesignEditor
4122
+ axesList="axesList"
4123
+ chartId="props.chartId"
4124
+ definition="props.definition"
4125
+ updateChart="props.updateChart"
4126
+ />
4127
+ </t>
4128
+ </SidePanelCollapsible>
4129
+ </t>
4130
+
4100
4131
  <t t-name="o-spreadsheet-BarConfigPanel">
4101
4132
  <div>
4102
4133
  <Section class="'pt-0'">
@@ -5941,7 +5972,7 @@
5941
5972
 
5942
5973
  <t t-name="o-spreadsheet-GridOverlay">
5943
5974
  <div class="position-absolute" t-att-style="style">
5944
- <FiguresContainer onFigureDeleted="props.onFigureDeleted"/>
5975
+ <FiguresContainer/>
5945
5976
  </div>
5946
5977
  <div
5947
5978
  t-ref="gridOverlay"
@@ -5956,7 +5987,6 @@
5956
5987
  <GridAddRowsFooter
5957
5988
  t-if="!env.model.getters.isReadonly()"
5958
5989
  t-key="env.model.getters.getActiveSheetId()"
5959
- focusGrid="props.onFigureDeleted"
5960
5990
  />
5961
5991
  <t t-slot="default"/>
5962
5992
  </div>
@@ -5970,7 +6000,8 @@
5970
6000
  <button
5971
6001
  t-on-click="onConfirm"
5972
6002
  t-att-disabled="state.errorFlag"
5973
- class="o-button flex-grow-0 me-2">
6003
+ class="o-button flex-grow-0 me-2"
6004
+ tabindex="-1">
5974
6005
  Add
5975
6006
  </button>
5976
6007
  <input
@@ -5982,6 +6013,7 @@
5982
6013
  t-on-keydown.stop="onKeydown"
5983
6014
  t-on-pointerdown.stop=""
5984
6015
  t-on-input.stop="onInput"
6016
+ tabindex="-1"
5985
6017
  />
5986
6018
  <span>more rows at the bottom</span>
5987
6019
  <ValidationMessages t-if="state.errorFlag" messages="errorMessages" msgType="'error'"/>
@@ -6004,7 +6036,6 @@
6004
6036
  onGridResized.bind="onGridResized"
6005
6037
  onGridMoved.bind="moveCanvas"
6006
6038
  gridOverlayDimensions="gridOverlayDimensions"
6007
- onFigureDeleted.bind="focusDefaultElement"
6008
6039
  getGridSize="props.getGridSize"
6009
6040
  />
6010
6041
  <HeadersOverlay onOpenContextMenu="(type, x, y) => this.toggleContextMenu(type, x, y)"/>
@@ -6081,7 +6112,6 @@
6081
6112
  t-component="figureComponent"
6082
6113
  figureUI="figureUI"
6083
6114
  isFullScreen="true"
6084
- onFigureDeleted="() => {}"
6085
6115
  t-key="figureUI.id"
6086
6116
  />
6087
6117
  </t>
@@ -6096,7 +6126,7 @@
6096
6126
  class=" o-font-size-editor d-flex align-items-center"
6097
6127
  t-att-class="props.class"
6098
6128
  title="Font Size"
6099
- t-on-click="this.toggleFontList">
6129
+ t-on-click.stop="this.toggleFontList">
6100
6130
  <input
6101
6131
  type="number"
6102
6132
  min="1"
@@ -6282,7 +6312,6 @@
6282
6312
  t-att-style="container.inverseViewportStyle">
6283
6313
  <t t-foreach="container.figures" t-as="figureUI" t-key="figureUI.id">
6284
6314
  <FigureComponent
6285
- onFigureDeleted="this.props.onFigureDeleted"
6286
6315
  figureUI="figureUI"
6287
6316
  style="getFigureStyle(figureUI)"
6288
6317
  class="getFigureClass(figureUI)"
@@ -6425,7 +6454,6 @@
6425
6454
  <t
6426
6455
  t-component="figureRegistry.get(props.figureUI.tag).Component"
6427
6456
  t-key="props.figureUI.id"
6428
- onFigureDeleted="props.onFigureDeleted"
6429
6457
  figureUI="props.figureUI"
6430
6458
  editFigureStyle.bind="editWrapperStyle"
6431
6459
  openContextMenu.bind="openContextMenu"
@@ -6558,14 +6586,17 @@
6558
6586
  <div t-att-style="containerStyle">
6559
6587
  <canvas class="o-figure-canvas w-100 h-100" t-ref="graphContainer"/>
6560
6588
  </div>
6561
- <div t-if="sliceable" class="o-master-chart-container m-0">
6589
+ <div
6590
+ t-if="sliceable"
6591
+ class="o-master-chart-container m-0"
6592
+ t-att-style="masterChartContainerStyle">
6562
6593
  <canvas
6563
6594
  class="o-figure-canvas o-master-chart-canvas w-100 h-100"
6564
6595
  t-ref="masterChartCanvas"
6565
- t-on-dblclick="onDoubleClickInMasterChart"
6566
- t-on-pointerdown="onPointerDownInMasterChart"
6567
- t-on-pointermove="onPointerMoveInMasterChart"
6568
- t-on-mouseleave="onMouseLeaveMasterChart"
6596
+ t-on-dblclick="onMasterChartDoubleClick"
6597
+ t-on-pointerdown="onMasterChartPointerDown"
6598
+ t-on-pointermove="onMasterChartPointerMove"
6599
+ t-on-mouseleave="onMasterChartMouseLeave"
6569
6600
  />
6570
6601
  </div>
6571
6602
  </div>
@@ -7133,6 +7164,7 @@
7133
7164
  t-on-click="onClick"
7134
7165
  t-on-contextmenu.prevent="(ev) => this.onContextMenu(ev)"
7135
7166
  t-ref="sheetDiv"
7167
+ t-key="sheetName"
7136
7168
  t-att-style="props.style"
7137
7169
  t-att-title="sheetName"
7138
7170
  t-att-data-id="props.sheetId"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "19.0.11",
3
+ "version": "19.0.15",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",
@@ -10,7 +10,8 @@
10
10
  "files": [
11
11
  "dist/*.js",
12
12
  "dist/*.d.ts",
13
- "dist/*.xml"
13
+ "dist/*.xml",
14
+ "dist/*.css"
14
15
  ],
15
16
  "scripts": {
16
17
  "serve-static": "live-server --open=demo --watch=build/o_spreadsheet.iife.js,build/o_spreadsheet.xml,build/o_spreadsheet.css,main.css,demo",
@@ -160,6 +161,6 @@
160
161
  ]
161
162
  },
162
163
  "publishConfig": {
163
- "tag": "latest"
164
+ "tag": "19-0"
164
165
  }
165
166
  }