@odoo/o-spreadsheet 18.4.19 → 18.4.22

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.22
6
+ * @date 2025-12-26T10:19:54.795Z
7
+ * @hash 6ddac00
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.22
5
+ @date 2025-12-26T10:19:54.046Z
6
+ @hash 6ddac00
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,7 +5728,6 @@
5732
5728
  onGridResized.bind="onGridResized"
5733
5729
  onGridMoved.bind="moveCanvas"
5734
5730
  gridOverlayDimensions="gridOverlayDimensions"
5735
- onFigureDeleted.bind="focusDefaultElement"
5736
5731
  getGridSize="props.getGridSize"
5737
5732
  />
5738
5733
  <HeadersOverlay onOpenContextMenu="(type, x, y) => this.toggleContextMenu(type, x, y)"/>
@@ -6010,7 +6005,6 @@
6010
6005
  t-att-style="container.inverseViewportStyle">
6011
6006
  <t t-foreach="container.figures" t-as="figureUI" t-key="figureUI.id">
6012
6007
  <FigureComponent
6013
- onFigureDeleted="this.props.onFigureDeleted"
6014
6008
  figureUI="figureUI"
6015
6009
  style="getFigureStyle(figureUI)"
6016
6010
  onMouseDown="(ev) => this.startDraggingFigure(figureUI, ev)"
@@ -6066,7 +6060,6 @@
6066
6060
  <t
6067
6061
  t-component="figureRegistry.get(props.figureUI.tag).Component"
6068
6062
  t-key="props.figureUI.id"
6069
- onFigureDeleted="props.onFigureDeleted"
6070
6063
  figureUI="props.figureUI"
6071
6064
  />
6072
6065
  <div class="o-figure-menu position-absolute m-2" t-if="!env.isDashboard()">
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.22",
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",