@odoo/o-spreadsheet 18.4.19 → 18.4.23

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,192 @@
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 18.4.23
6
+ * @date 2026-01-07T16:22:01.801Z
7
+ * @hash a0135e8
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/chart/building_blocks/pie_hole_size/pie_hole_size.scss */
135
+ .o-spreadsheet .o-sidePanel .o-pie-hole-size-input {
136
+ width: 40px;
137
+ }
138
+
139
+ /* Originates from src/components/full_screen_chart/full_screen_chart.scss */
140
+ .o-spreadsheet .o-fullscreen-chart-overlay {
141
+ z-index: 34; /* TODO: use css variables once ComponentsImportance is available in the scss. */
142
+ background-color: rgba(0, 0, 0, 0.4);
143
+ padding: 60px;
144
+ }
145
+ .o-spreadsheet .o-fullscreen-chart-overlay .o-figure:not(:hover) .o-dashboard-chart-select {
146
+ display: block !important;
147
+ }
148
+
149
+ /* Originates from src/components/filters/filter_menu_value_list/filter_menu_value_list.scss */
150
+ .o-spreadsheet .o-filter-menu .o-search-icon {
151
+ right: 5px;
152
+ top: 3px;
153
+ opacity: 0.4;
154
+ }
155
+ .o-spreadsheet .o-filter-menu .o-search-icon svg {
156
+ height: 16px;
157
+ width: 16px;
158
+ vertical-align: middle;
159
+ }
160
+ .o-spreadsheet .o-filter-menu .o-filter-menu-actions {
161
+ display: flex;
162
+ flex-direction: row;
163
+ margin-bottom: 4px;
164
+ }
165
+ .o-spreadsheet .o-filter-menu .o-filter-menu-list {
166
+ flex: auto;
167
+ overflow-y: auto;
168
+ border: 1px solid #d8dadd;
169
+ height: 130px;
170
+ }
171
+ .o-spreadsheet .o-filter-menu .o-filter-menu-list .o-filter-menu-no-values {
172
+ color: #949494;
173
+ font-style: italic;
174
+ }
175
+
176
+ /* Originates from src/components/figures/chart/chart_dashboard_menu/chart_dashboard_menu.scss */
177
+ .o-spreadsheet .o-figure:not(:hover) .o-dashboard-chart-select {
178
+ display: none !important;
179
+ }
180
+ .o-spreadsheet .o-figure .o-dashboard-chart-select {
181
+ cursor: default;
182
+ }
183
+ .o-spreadsheet .o-figure .o-dashboard-chart-select .o-chart-dashboard-item {
184
+ opacity: 0.3;
185
+ }
186
+ .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 {
187
+ background: #e6f2f3;
188
+ }
189
+
190
+ .o-spreadsheet.o-spreadsheet-mobile .o-figure .o-dashboard-chart-select {
191
+ display: block !important;
192
+ }
@@ -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.4.19
5
- @date 2025-12-02T05:34:51.934Z
6
- @hash 95b1252
4
+ @version 18.4.23
5
+ @date 2026-01-07T16:22:00.962Z
6
+ @hash a0135e8
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -1740,46 +1740,43 @@
1740
1740
  <t t-name="o-spreadsheet-ConditionalFormatPreview">
1741
1741
  <t t-set="cf" t-value="props.conditionalFormat"/>
1742
1742
  <div
1743
- class="o-cf-preview w-100"
1743
+ class="o-cf-preview w-100 d-flex align-items-center"
1744
1744
  t-ref="cfPreview"
1745
1745
  t-att-class="props.class"
1746
1746
  t-att-data-id="cf.id"
1747
1747
  t-on-click="props.onPreviewClick"
1748
1748
  t-on-pointerdown="(ev) => this.onMouseDown(ev)">
1749
- <div class="position-relative h-100 w-100 d-flex align-items-center">
1749
+ <div class="o-cf-drag-handle h-100 position-absolute d-flex align-items-center o-button-icon">
1750
+ <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
1751
+ </div>
1752
+ <t t-if="cf.rule.type==='IconSetRule'">
1753
+ <div class="o-cf-preview-icon d-flex justify-content-around align-items-center me-3">
1754
+ <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.upper].template}}"/>
1755
+ <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.middle].template}}"/>
1756
+ <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.lower].template}}"/>
1757
+ </div>
1758
+ </t>
1759
+ <t t-else="">
1750
1760
  <div
1751
- class="o-cf-drag-handle h-100 position-absolute d-flex align-items-center o-button-icon">
1752
- <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
1761
+ t-att-style="getPreviewImageStyle(cf.rule)"
1762
+ class="o-cf-preview-icon d-flex justify-content-around align-items-center me-3 flex-shrink-0">
1763
+ 123
1753
1764
  </div>
1754
- <t t-if="cf.rule.type==='IconSetRule'">
1755
- <div class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2">
1756
- <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.upper].template}}"/>
1757
- <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.middle].template}}"/>
1758
- <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.lower].template}}"/>
1759
- </div>
1760
- </t>
1761
- <t t-else="">
1762
- <div
1763
- t-att-style="getPreviewImageStyle(cf.rule)"
1764
- class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2">
1765
- 123
1766
- </div>
1767
- </t>
1768
- <div class="o-cf-preview-description">
1769
- <div class="o-cf-preview-ruletype">
1770
- <div class="o-cf-preview-description-rule o-fw-bold text-truncate">
1771
- <t t-esc="getDescription(cf)"/>
1772
- </div>
1765
+ </t>
1766
+ <div class="o-cf-preview-description me-3 overflow-auto">
1767
+ <div class="o-cf-preview-ruletype">
1768
+ <div class="o-cf-preview-description-rule o-fw-bold text-truncate">
1769
+ <t t-esc="getDescription(cf)"/>
1773
1770
  </div>
1774
- <div class="o-cf-preview-range text-truncate" t-esc="cf.ranges"/>
1775
1771
  </div>
1776
- <div class="o-cf-delete">
1777
- <div
1778
- class="o-cf-delete-button o-button-icon"
1779
- t-on-click.stop="(ev) => this.deleteConditionalFormat(cf, ev)"
1780
- title="Remove rule">
1781
- <t t-call="o-spreadsheet-Icon.TRASH_FILLED"/>
1782
- </div>
1772
+ <div class="o-cf-preview-range text-truncate" t-esc="cf.ranges"/>
1773
+ </div>
1774
+ <div class="o-cf-delete ms-auto">
1775
+ <div
1776
+ class="o-cf-delete-button o-button-icon"
1777
+ t-on-click.stop="(ev) => this.deleteConditionalFormat(cf, ev)"
1778
+ title="Remove rule">
1779
+ <t t-call="o-spreadsheet-Icon.TRASH_FILLED"/>
1783
1780
  </div>
1784
1781
  </div>
1785
1782
  </div>
@@ -5669,7 +5666,7 @@
5669
5666
 
5670
5667
  <t t-name="o-spreadsheet-GridOverlay">
5671
5668
  <div class="position-absolute" t-att-style="style">
5672
- <FiguresContainer onFigureDeleted="props.onFigureDeleted"/>
5669
+ <FiguresContainer/>
5673
5670
  </div>
5674
5671
  <div
5675
5672
  t-ref="gridOverlay"
@@ -5684,7 +5681,6 @@
5684
5681
  <GridAddRowsFooter
5685
5682
  t-if="!env.model.getters.isReadonly()"
5686
5683
  t-key="env.model.getters.getActiveSheetId()"
5687
- focusGrid="props.onFigureDeleted"
5688
5684
  />
5689
5685
  <t t-slot="default"/>
5690
5686
  </div>
@@ -5732,8 +5728,6 @@
5732
5728
  onGridResized.bind="onGridResized"
5733
5729
  onGridMoved.bind="moveCanvas"
5734
5730
  gridOverlayDimensions="gridOverlayDimensions"
5735
- onFigureDeleted.bind="focusDefaultElement"
5736
- getGridSize="props.getGridSize"
5737
5731
  />
5738
5732
  <HeadersOverlay onOpenContextMenu="(type, x, y) => this.toggleContextMenu(type, x, y)"/>
5739
5733
  <GridComposer
@@ -6010,7 +6004,6 @@
6010
6004
  t-att-style="container.inverseViewportStyle">
6011
6005
  <t t-foreach="container.figures" t-as="figureUI" t-key="figureUI.id">
6012
6006
  <FigureComponent
6013
- onFigureDeleted="this.props.onFigureDeleted"
6014
6007
  figureUI="figureUI"
6015
6008
  style="getFigureStyle(figureUI)"
6016
6009
  onMouseDown="(ev) => this.startDraggingFigure(figureUI, ev)"
@@ -6066,7 +6059,6 @@
6066
6059
  <t
6067
6060
  t-component="figureRegistry.get(props.figureUI.tag).Component"
6068
6061
  t-key="props.figureUI.id"
6069
- onFigureDeleted="props.onFigureDeleted"
6070
6062
  figureUI="props.figureUI"
6071
6063
  />
6072
6064
  <div class="o-figure-menu position-absolute m-2" t-if="!env.isDashboard()">
@@ -6206,8 +6198,7 @@
6206
6198
  <GridOverlay
6207
6199
  onGridResized.bind="onGridResized"
6208
6200
  onGridMoved.bind="moveCanvas"
6209
- gridOverlayDimensions="gridOverlayDimensions"
6210
- getGridSize="props.getGridSize">
6201
+ gridOverlayDimensions="gridOverlayDimensions">
6211
6202
  <div
6212
6203
  t-foreach="getClickableCells()"
6213
6204
  t-as="clickableCell"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "18.4.19",
3
+ "version": "18.4.23",
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",