@odoo/o-spreadsheet 19.1.0-alpha.11 → 19.1.0-alpha.13

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 19.1.0-alpha.11
5
- @date 2025-11-03T12:35:22.290Z
6
- @hash d9230f3
4
+ @version 19.1.0-alpha.13
5
+ @date 2025-11-24T07:54:06.099Z
6
+ @hash e232982
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -29,9 +29,9 @@
29
29
 
30
30
  <t t-name="o-spreadsheet-TopBar">
31
31
  <div
32
- class="o-spreadsheet-topbar d-flex flex-column user-select-none"
32
+ class="o-spreadsheet-topbar d-flex flex-column user-select-none bg-white"
33
33
  t-on-click="props.onClick">
34
- <div t-if="!env.isSmall" class="o-topbar-top d-flex justify-content-between">
34
+ <div t-if="!env.isSmall" class="o-topbar-top d-flex justify-content-between border-bottom">
35
35
  <!-- Menus -->
36
36
  <div class="o-topbar-topleft d-flex">
37
37
  <t t-foreach="menus" t-as="menu" t-key="menu_index">
@@ -82,7 +82,7 @@
82
82
  t-key="toolbarAction_index">
83
83
  <t t-component="toolbarAction.component" t-props="toolbarAction.props"/>
84
84
  </t>
85
- <div t-if="showDivider(category_index)" class="o-topbar-divider"/>
85
+ <div t-if="showDivider(category_index)" class="o-topbar-divider border-end"/>
86
86
  </div>
87
87
  <div
88
88
  t-ref="moreToolsContainer"
@@ -100,7 +100,7 @@
100
100
  </div>
101
101
  <div
102
102
  t-if="this.fingerprints.isEnabled"
103
- class="irregularity-map d-flex align-items-center justify-content-between">
103
+ class="topbar-banner irregularity-map d-flex align-items-center justify-content-between border-top">
104
104
  <div
105
105
  t-on-click="() => this.fingerprints.disable()"
106
106
  role="button"
@@ -132,7 +132,7 @@
132
132
  popoverPositioning="'bottom-left'"
133
133
  />
134
134
  <Popover t-if="state.toolsPopoverState.isOpen" t-props="toolsPopoverProps">
135
- <div class="d-flex px-2 py-1 flex-wrap align-items-center" style="background-color:white;">
135
+ <div class="d-flex px-2 py-1 flex-wrap align-items-center bg-white">
136
136
  <t
137
137
  t-foreach="state.invisibleToolsCategories"
138
138
  t-as="category"
@@ -146,7 +146,7 @@
146
146
  </t>
147
147
  <div
148
148
  t-if="category_index &lt; state.invisibleToolsCategories.length-1"
149
- class="o-topbar-divider"
149
+ class="o-topbar-divider border-end"
150
150
  />
151
151
  </t>
152
152
  </div>
@@ -206,7 +206,7 @@
206
206
  class="props.class"
207
207
  />
208
208
  <Popover t-if="isActive" t-props="popoverProps">
209
- <div class="o-dropdown-content p-1" t-if="isActive" t-on-click.stop="">
209
+ <div class="o-dropdown-content p-1 bg-white" t-if="isActive" t-on-click.stop="">
210
210
  <div class="o-dropdown-line">
211
211
  <t t-foreach="props.childActions" t-as="action" t-key="action_index">
212
212
  <ActionButton action="action" class="props.childClass"/>
@@ -231,24 +231,32 @@
231
231
  </t>
232
232
 
233
233
  <t t-name="o-spreadsheet-TextInput">
234
- <input
235
- type="text"
236
- t-ref="{{refName}}"
237
- t-att-class="inputClass"
238
- t-att-id="props.id"
239
- t-att-placeholder="props.placeholder"
240
- t-on-change="save"
241
- t-on-blur="save"
242
- t-on-pointerdown="onMouseDown"
243
- t-on-pointerup="onMouseUp"
244
- t-on-keydown="onKeyDown"
245
- />
234
+ <div class="position-relative">
235
+ <input
236
+ type="text"
237
+ t-ref="{{refName}}"
238
+ t-att-class="inputClass"
239
+ t-att-id="props.id"
240
+ t-att-placeholder="props.placeholder"
241
+ t-on-change="save"
242
+ t-on-blur="save"
243
+ t-on-pointerdown="onMouseDown"
244
+ t-on-pointerup="onMouseUp"
245
+ t-on-keydown="onKeyDown"
246
+ />
247
+ <span
248
+ t-if="props.errorMessage"
249
+ class="os-input-error-icon text-danger position-absolute d-flex align-items-center"
250
+ t-att-title="props.errorMessage">
251
+ <t t-call="o-spreadsheet-Icon.ERROR"/>
252
+ </span>
253
+ </div>
246
254
  </t>
247
255
 
248
256
  <t t-name="o-spreadsheet-TableStylesPopover">
249
257
  <Popover t-if="props.popoverProps" t-props="props.popoverProps">
250
258
  <div
251
- class="o-table-style-popover d-flex flex-column py-3"
259
+ class="o-table-style-popover d-flex flex-column py-3 bg-white"
252
260
  t-ref="tableStyleList"
253
261
  t-on-contextmenu.prevent="">
254
262
  <div class="d-flex o-notebook ps-4 mb-3">
@@ -256,7 +264,7 @@
256
264
  t-foreach="Object.keys(categories)"
257
265
  t-as="category"
258
266
  t-key="category"
259
- class="o-notebook-tab d-flex align-items-center"
267
+ class="o-notebook-tab d-flex align-items-center border"
260
268
  t-att-class="{ 'selected': state.selectedCategory === category }"
261
269
  t-on-click="() => state.selectedCategory = category"
262
270
  t-att-data-id="category"
@@ -297,7 +305,7 @@
297
305
  <canvas t-ref="canvas" class="w-100 h-100"/>
298
306
  </div>
299
307
  <div
300
- class="o-table-style-edit-button position-absolute d-none"
308
+ class="o-table-style-edit-button position-absolute d-none bg-white border"
301
309
  t-if="isStyleEditable"
302
310
  t-on-click="this.editTableStyle"
303
311
  title="Edit custom table style">
@@ -313,7 +321,7 @@
313
321
  </t>
314
322
 
315
323
  <t t-name="o-spreadsheet-TableStylePicker">
316
- <div class="o-table-style-picker d-flex flew-row justify-content-between ps-1">
324
+ <div class="o-table-style-picker d-flex flew-row justify-content-between ps-1 border rounded">
317
325
  <div class="d-flex flex-row overflow-hidden ps-2">
318
326
  <t t-foreach="getDisplayedTableStyles()" t-as="styleId" t-key="styleId">
319
327
  <TableStylePreview
@@ -327,7 +335,7 @@
327
335
  </t>
328
336
  </div>
329
337
  <div
330
- class="o-table-style-picker-arrow d-flex align-items-center px-1"
338
+ class="o-table-style-picker-arrow d-flex align-items-center px-1 border-start"
331
339
  t-on-click.stop="onArrowButtonClick">
332
340
  <t t-call="o-spreadsheet-Icon.CARET_DOWN"/>
333
341
  </div>
@@ -369,7 +377,7 @@
369
377
  <t t-name="o-spreadsheet-Spreadsheet">
370
378
  <div
371
379
  class="o-spreadsheet h-100 w-100"
372
- t-att-class="{'o-spreadsheet-mobile': env.isSmall}"
380
+ t-att-class="getSpreadSheetClasses()"
373
381
  t-ref="spreadsheet"
374
382
  t-att-style="getStyle()">
375
383
  <t t-if="env.isDashboard()">
@@ -411,7 +419,7 @@
411
419
  <RibbonMenu onClose="() => this.menuState.isOpen=false"/>
412
420
  </t>
413
421
  <t t-else="">
414
- <div class="o-small-composer px-2 py-2 position-relative">
422
+ <div class="o-small-composer px-2 py-2 position-relative bg-white border">
415
423
  <div class="w-100" t-ref="bottombarComposer">
416
424
  <Composer t-props="composerProps"/>
417
425
  <span
@@ -443,7 +451,7 @@
443
451
  composerFocusableElement="true"
444
452
  />
445
453
  </div>
446
- <div class="d-flex flex-fill align-items-center bottom-bar-menu">
454
+ <div class="d-flex flex-fill align-items-center bottom-bar-menu border-top border-bottom">
447
455
  <Ripple>
448
456
  <div class="py-1 px-1 mx-2 ribbon-toggler" t-on-click="toggleRibbon">
449
457
  <i class="o-icon fa fa-cog"/>
@@ -690,8 +698,9 @@
690
698
  </t>
691
699
 
692
700
  <t t-name="o-spreadsheet-SidePanelExtended">
693
- <div class="o-sidePanel h-100">
694
- <div class="o-sidePanelHeader d-flex align-items-center justify-content-between">
701
+ <div class="o-sidePanel h-100 bg-white border-top border-start">
702
+ <div
703
+ class="o-sidePanelHeader d-flex align-items-center justify-content-between border-bottom">
695
704
  <div
696
705
  t-if="props.onToggleCollapsePanel"
697
706
  class="o-collapse-panel o-sidePanelAction rounded"
@@ -735,7 +744,9 @@
735
744
  </t>
736
745
 
737
746
  <t t-name="o-spreadsheet-SidePanelCollapsed">
738
- <div class="o-sidePanel collapsed w-100 h-100" t-on-click="props.onToggleCollapsePanel">
747
+ <div
748
+ class="o-sidePanel collapsed w-100 h-100 bg-white"
749
+ t-on-click="props.onToggleCollapsePanel">
739
750
  <div class="d-flex flex-column align-items-center">
740
751
  <div
741
752
  t-if="props.onToggleCollapsePanel"
@@ -774,7 +785,7 @@
774
785
  t-att-selected="currentLocale.code === locale.code"
775
786
  />
776
787
  </select>
777
- <div class="o-locale-preview mt-4 p-3 rounded">
788
+ <div class="o-locale-preview mt-4 p-3 rounded border">
778
789
  <div>
779
790
  <span class="o-fw-bold me-1">Number:</span>
780
791
  <span t-esc="numberFormatPreview"/>
@@ -972,24 +983,22 @@
972
983
  <div class="row mb-2 align-items-center">
973
984
  <div class="col-6">Max rows:</div>
974
985
  <div class="col-6 d-flex align-items-center">
975
- <input
976
- t-att-value="pivotStyle.numberOfRows ?? ''"
977
- type="number"
978
- class="o-pivot-n-of-rows o-input"
979
- placeholder="e.g. 10"
980
- t-on-change="(ev) => this.updatePivotStyleProperty('numberOfRows', ev.target.valueAsNumber)"
986
+ <NumberInput
987
+ value="pivotStyle.numberOfRows ?? ''"
988
+ class="'o-pivot-n-of-rows'"
989
+ placeholder.translate="e.g. 10"
990
+ onChange="(value) => this.updatePivotStyleNumberProperty(value, 'numberOfRows')"
981
991
  />
982
992
  </div>
983
993
  </div>
984
994
  <div class="row mb-2 align-items-center">
985
995
  <div class="col-6">Max columns:</div>
986
996
  <div class="col-6 d-flex align-items-center">
987
- <input
988
- t-att-value="pivotStyle.numberOfColumns ?? ''"
989
- type="number"
990
- class="o-pivot-n-of-columns o-input"
991
- placeholder="e.g. 5"
992
- t-on-change="(ev) => this.updatePivotStyleProperty('numberOfColumns', ev.target.valueAsNumber)"
997
+ <NumberInput
998
+ value="pivotStyle.numberOfColumns ?? ''"
999
+ class="'o-pivot-n-of-columns'"
1000
+ placeholder.translate="e.g. 5"
1001
+ onChange="(value) => this.updatePivotStyleNumberProperty(value, 'numberOfColumns')"
993
1002
  />
994
1003
  </div>
995
1004
  </div>
@@ -1042,13 +1051,13 @@
1042
1051
  </t>
1043
1052
  </select>
1044
1053
  <div
1045
- class="o-pivot-measure-display-description mt-3 ps-3"
1054
+ class="o-pivot-measure-display-description mt-3 ps-3 border-start"
1046
1055
  t-esc="measureDisplayDescription[store.measureDisplay.type]"
1047
1056
  />
1048
1057
  </Section>
1049
1058
 
1050
1059
  <Section t-if="store.doesDisplayNeedsField" title.translate="Base field:">
1051
- <div class="o-pivot-measure-display-field w-100 py-1 px-3">
1060
+ <div class="o-pivot-measure-display-field w-100 py-1 px-3 border">
1052
1061
  <t t-if="store.fields.length">
1053
1062
  <RadioSelection
1054
1063
  choices="fieldChoices"
@@ -1066,7 +1075,7 @@
1066
1075
 
1067
1076
  <t t-set="values" t-value="store.values"/>
1068
1077
  <Section t-if="store.doesDisplayNeedsValue and values.length" title.translate="Base item:">
1069
- <div class="o-pivot-measure-display-value w-100 py-1 px-3">
1078
+ <div class="o-pivot-measure-display-value w-100 py-1 px-3 border">
1070
1079
  <RadioSelection
1071
1080
  choices="values"
1072
1081
  selectedValue="store.measureDisplay.value"
@@ -1209,7 +1218,7 @@
1209
1218
  <div t-esc="sortDescription" class="pb-2"/>
1210
1219
  <div class="d-flex flex-column gap-2">
1211
1220
  <t t-foreach="sortValuesAndFields" t-as="valueAndField" t-key="valueAndField_index">
1212
- <div class="o-sort-card d-flex gap-1 px-2">
1221
+ <div class="o-sort-card d-flex gap-1 px-2 border">
1213
1222
  <t t-if="valueAndField.field">
1214
1223
  <span class="fw-bolder" t-esc="valueAndField.field"/>
1215
1224
  =
@@ -1321,7 +1330,7 @@
1321
1330
 
1322
1331
  <t t-name="o-spreadsheet-PivotDimension">
1323
1332
  <div
1324
- class="py-1 px-2 d-flex flex-column shadow-sm pivot-dimension"
1333
+ class="py-1 px-2 d-flex flex-column shadow-sm pivot-dimension border rounded"
1325
1334
  t-att-class="{'pivot-dimension-invalid': !props.dimension.isValid}">
1326
1335
  <div class="d-flex flex-row justify-content-between align-items-center">
1327
1336
  <div class="d-flex align-items-center overflow-hidden text-nowrap">
@@ -1354,7 +1363,7 @@
1354
1363
  <button class="add-dimension o-button" t-on-click="togglePopover" t-ref="button">Add</button>
1355
1364
  <Popover t-if="popover.isOpen" t-props="popoverProps">
1356
1365
  <div
1357
- class="p-2 bg-white border-bottom d-flex sticky-top align-items-baseline pivot-dimension-search">
1366
+ class="p-2 bg-white border-bottom d-flex sticky-top align-items-baseline pivot-dimension-search bg-white">
1358
1367
  <i class="pe-1 pivot-dimension-search-field-icon text-muted">
1359
1368
  <t t-call="o-spreadsheet-Icon.SEARCH"/>
1360
1369
  </i>
@@ -1439,21 +1448,97 @@
1439
1448
 
1440
1449
  <t t-name="o-spreadsheet-MoreFormatsPanel">
1441
1450
  <div class="o-more-formats-panel">
1442
- <div
1443
- t-foreach="dateFormatsActions"
1444
- t-as="action"
1445
- t-key="action.name(env)"
1446
- t-att-data-name="action.name(env)"
1447
- t-on-click="() => action.execute(env)"
1448
- class="w-100 d-flex align-items-center border-bottom format-preview">
1449
- <span class="ms-3 check-icon">
1450
- <t t-if="action.isActive(env)" t-call="o-spreadsheet-Icon.CHECK"/>
1451
- </span>
1452
- <span t-out="action.description(env)"/>
1453
- </div>
1451
+ <Section title.translate="Format type">
1452
+ <BadgeSelection
1453
+ choices="store.categories"
1454
+ onChange.bind="(category) => store.changeCategory(category)"
1455
+ selectedValue="store.category"
1456
+ />
1457
+ </Section>
1458
+ <t t-if="store.category === 'currency'" t-call="o-spreadsheet-CustomCurrencySection"/>
1459
+ <t t-set="proposals" t-value="store.formatProposals"/>
1460
+ <Section title.translate="Type" t-if="proposals.length">
1461
+ <div class="o-format-proposals overflow-auto border">
1462
+ <div
1463
+ t-foreach="proposals"
1464
+ t-as="proposal"
1465
+ t-key="proposal.format"
1466
+ t-att-data-name="proposal.format"
1467
+ t-on-click="() => this.store.updateFormat(proposal.format)"
1468
+ class="w-100 d-flex align-items-center format-preview px-2 py-1"
1469
+ t-att-class="{'active': (proposal.format || '') === (store.currentFormat || '')}">
1470
+ <span t-out="proposal.label"/>
1471
+ </div>
1472
+ </div>
1473
+ </Section>
1474
+
1475
+ <Section title.translate="Format" class="'o-custom-format-section'">
1476
+ <TextInput
1477
+ value="store.currentFormat || ''"
1478
+ onChange="(format) => this.store.updateFormat(format)"
1479
+ placeholder.translate="Format code"
1480
+ alwaysShowBorder="true"
1481
+ errorMessage="store.invalidFormatMessage"
1482
+ />
1483
+ <t t-set="examples" t-value="store.formatExamples"/>
1484
+ <div class="o-format-examples mt-4 p-2 rounded border" t-if="examples.length">
1485
+ <table class="w-100">
1486
+ <t t-foreach="examples" t-as="example" t-key="example_index">
1487
+ <tr>
1488
+ <td class="w-25 pe-3 o-fw-bold" t-esc="example.label"/>
1489
+ <td class="w-75 text-truncate" t-esc="example.value"/>
1490
+ </tr>
1491
+ </t>
1492
+ </table>
1493
+ </div>
1494
+ </Section>
1454
1495
  </div>
1455
1496
  </t>
1456
1497
 
1498
+ <t t-name="o-spreadsheet-CustomCurrencySection">
1499
+ <t t-set="availableCurrencies" t-value="store.availableCurrencies"/>
1500
+ <Section t-if="availableCurrencies.length > 1" title.translate="Currency">
1501
+ <select
1502
+ class="o-input o-available-currencies"
1503
+ t-on-change="(ev) => this.updateSelectCurrency(ev)">
1504
+ <t t-foreach="availableCurrencies" t-as="currency" t-key="currency_index">
1505
+ <option
1506
+ t-att-value="currency_index"
1507
+ t-esc="currencyDisplayName(currency)"
1508
+ t-att-selected="currency_index === store.selectedCurrencyIndex"
1509
+ />
1510
+ </t>
1511
+ </select>
1512
+ </Section>
1513
+ <Section>
1514
+ <div class="o-subsection-left">
1515
+ <div class="o-section-title">Code</div>
1516
+ <TextInput
1517
+ value="store.currencyCode"
1518
+ placeholder.translate="code"
1519
+ onChange="(code) => this.store.changeCurrencyCode(code)"
1520
+ alwaysShowBorder="true"
1521
+ />
1522
+ </div>
1523
+ <div class="o-subsection-right">
1524
+ <div class="o-section-title">Symbol</div>
1525
+ <TextInput
1526
+ value="store.currencySymbol"
1527
+ placeholder.translate="symbol"
1528
+ onChange="(symbol) => this.store.changeCurrencySymbol(symbol)"
1529
+ alwaysShowBorder="true"
1530
+ />
1531
+ </div>
1532
+ <Checkbox
1533
+ name="'accountingFormat'"
1534
+ className="'pt-2'"
1535
+ label.translate="Accounting format"
1536
+ value="store.isAccountingFormat"
1537
+ onChange="() => store.toggleAccountingFormat()"
1538
+ />
1539
+ </Section>
1540
+ </t>
1541
+
1457
1542
  <t t-name="o-spreadsheet-FindAndReplacePanel">
1458
1543
  <div class="o-find-and-replace">
1459
1544
  <Section title.translate="Search">
@@ -1583,7 +1668,7 @@
1583
1668
  </t>
1584
1669
 
1585
1670
  <t t-name="o-spreadsheet-DataValidationPreview">
1586
- <div class="o-dv-preview p-3" t-on-click="props.onClick" t-ref="dvPreview">
1671
+ <div class="o-dv-preview p-3 border-bottom" t-on-click="props.onClick" t-ref="dvPreview">
1587
1672
  <div class="d-flex justify-content-between">
1588
1673
  <div class="o-dv-container d-flex flex-column">
1589
1674
  <div class="o-dv-preview-description o-fw-bold text-truncate" t-esc="descriptionString"/>
@@ -1646,87 +1731,6 @@
1646
1731
  </div>
1647
1732
  </t>
1648
1733
 
1649
- <t t-name="o-spreadsheet-CustomCurrencyPanel">
1650
- <div class="o-custom-currency">
1651
- <Section t-if="availableCurrencies.length > 1" title.translate="Currency">
1652
- <select
1653
- class="o-input o-available-currencies"
1654
- t-on-change="(ev) => this.updateSelectCurrency(ev)">
1655
- <t t-foreach="availableCurrencies" t-as="currency" t-key="currency_index">
1656
- <option
1657
- t-att-value="currency_index"
1658
- t-esc="currencyDisplayName(currency)"
1659
- t-att-selected="currency_index === state.selectedCurrencyIndex"
1660
- />
1661
- </t>
1662
- </select>
1663
- </Section>
1664
- <Section>
1665
- <div class="o-subsection-left">
1666
- <div class="o-section-title">Code</div>
1667
- <input
1668
- type="text"
1669
- class="o-input"
1670
- t-model="state.currencyCode"
1671
- placeholder="code"
1672
- t-on-input="(ev) => this.updateCode(ev)"
1673
- />
1674
- </div>
1675
- <div class="o-subsection-right">
1676
- <div class="o-section-title">Symbol</div>
1677
- <input
1678
- type="text"
1679
- class="o-input"
1680
- placeholder="symbol"
1681
- t-model="state.currencySymbol"
1682
- t-on-input="(ev) => this.updateSymbol(ev)"
1683
- />
1684
- </div>
1685
- </Section>
1686
- <Section title.translate="Format">
1687
- <select
1688
- class="o-input o-format-proposals mb-1"
1689
- t-on-change="(ev) => this.updateSelectFormat(ev)"
1690
- t-att-disabled="!formatProposals.length">
1691
- <t t-foreach="formatProposals" t-as="proposal" t-key="proposal_index">
1692
- <option
1693
- t-att-value="proposal_index"
1694
- t-esc="proposal.example"
1695
- t-att-selected="proposal_index === state.selectedFormatIndex"
1696
- />
1697
- </t>
1698
- </select>
1699
- <t t-set="accounting_format_label">Accounting format</t>
1700
- <Checkbox
1701
- name="'accountingFormat'"
1702
- label="accounting_format_label"
1703
- value="state.isAccountingFormat"
1704
- onChange.bind="toggleAccountingFormat"
1705
- />
1706
- <div class="o-format-examples mt-4" t-if="selectedFormat">
1707
- <table class="w-100">
1708
- <t t-foreach="getFormatExamples()" t-as="example" t-key="example_index">
1709
- <tr>
1710
- <td class="w-25 pe-3 o-fw-bold" t-esc="example.label"/>
1711
- <td class="w-75 text-truncate" t-esc="example.value"/>
1712
- </tr>
1713
- </t>
1714
- </table>
1715
- </div>
1716
- </Section>
1717
- <Section>
1718
- <div class="o-sidePanelButtons">
1719
- <button
1720
- class="o-button primary"
1721
- t-on-click="() => this.apply()"
1722
- t-att-disabled="!formatProposals.length || isSameFormat">
1723
- Apply
1724
- </button>
1725
- </div>
1726
- </Section>
1727
- </div>
1728
- </t>
1729
-
1730
1734
  <t t-name="o-spreadsheet-ValueInRangeCriterionForm">
1731
1735
  <SelectionInput
1732
1736
  ranges="[props.criterion.values[0] || '']"
@@ -1920,7 +1924,7 @@
1920
1924
  <t t-name="o-spreadsheet-ConditionalFormatPreview">
1921
1925
  <t t-set="cf" t-value="props.conditionalFormat"/>
1922
1926
  <div
1923
- class="o-cf-preview w-100"
1927
+ class="o-cf-preview w-100 border-bottom"
1924
1928
  t-ref="cfPreview"
1925
1929
  t-att-class="props.class"
1926
1930
  t-att-data-id="cf.id"
@@ -1932,7 +1936,8 @@
1932
1936
  <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
1933
1937
  </div>
1934
1938
  <t t-if="cf.rule.type==='IconSetRule'">
1935
- <div class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2">
1939
+ <div
1940
+ class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2 bg-white border">
1936
1941
  <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.upper].template}}"/>
1937
1942
  <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.middle].template}}"/>
1938
1943
  <t t-call="o-spreadsheet-Icon.{{icons[cf.rule.icons.lower].template}}"/>
@@ -1941,7 +1946,7 @@
1941
1946
  <t t-else="">
1942
1947
  <div
1943
1948
  t-att-style="getPreviewImageStyle(cf.rule)"
1944
- class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2">
1949
+ class="o-cf-preview-icon d-flex justify-content-around align-items-center me-2 bg-white border">
1945
1950
  123
1946
1951
  </div>
1947
1952
  </t>
@@ -1970,7 +1975,7 @@
1970
1975
  <div class="o-section-subtitle">Icons</div>
1971
1976
  <div class="o-cf-iconsets d-flex flex-row">
1972
1977
  <div
1973
- class="o-cf-iconset o-cf-clickable-icon d-flex flex-row justify-content-between"
1978
+ class="o-cf-iconset o-cf-clickable-icon d-flex flex-row justify-content-between border rounded"
1974
1979
  t-foreach="['arrows', 'smiley', 'dots']"
1975
1980
  t-as="iconSet"
1976
1981
  t-key="iconSet"
@@ -1993,7 +1998,7 @@
1993
1998
  <tr>
1994
1999
  <td>
1995
2000
  <div t-on-click.stop="(ev) => this.toggleMenu('iconSet-'+icon+'Icon', ev)">
1996
- <div class="o-cf-icon-button o-cf-clickable-icon me-3">
2001
+ <div class="o-cf-icon-button o-cf-clickable-icon me-3 border rounded">
1997
2002
  <t t-call="o-spreadsheet-Icon.{{icons[iconValue].template}}"/>
1998
2003
  </div>
1999
2004
  </div>
@@ -2076,7 +2081,7 @@
2076
2081
  <tr>
2077
2082
  <td>
2078
2083
  <div t-on-click.stop="(ev) => this.toggleMenu('iconSet-lowerIcon', ev)">
2079
- <div class="o-cf-icon-button o-cf-clickable-icon me-3">
2084
+ <div class="o-cf-icon-button o-cf-clickable-icon me-3 border rounded">
2080
2085
  <t t-call="o-spreadsheet-Icon.{{icons[rule.icons.lower].template}}"/>
2081
2086
  </div>
2082
2087
  </div>
@@ -2191,7 +2196,7 @@
2191
2196
  <t t-name="o-spreadsheet-ColorScaleRuleEditor">
2192
2197
  <div class="o-cf-color-scale-editor">
2193
2198
  <div class="o-section-subtitle">Preview</div>
2194
- <div class="o-cf-preview-display mb-4" t-attf-style="{{getPreviewGradient()}}">
2199
+ <div class="o-cf-preview-display mb-4" t-attf-style="{{getColorScalePreviewStyle()}}">
2195
2200
  Preview text
2196
2201
  </div>
2197
2202
  <div class="o-section-subtitle">Minpoint</div>
@@ -2270,7 +2275,7 @@
2270
2275
 
2271
2276
  <t t-name="o-spreadsheet-CellIsRuleEditorPreview">
2272
2277
  <div
2273
- class="o-cf-preview-display"
2278
+ class="o-cf-preview-display border"
2274
2279
  t-attf-style="font-weight:{{currentStyle.bold ?'bold':'normal'}};
2275
2280
  text-decoration:{{getTextDecoration(currentStyle)}};
2276
2281
  font-style:{{currentStyle.italic?'italic':'normal'}};
@@ -2344,7 +2349,7 @@
2344
2349
  icon="'o-spreadsheet-Icon.TEXT_COLOR'"
2345
2350
  class="'o-hoverable-button o-menu-item-button'"
2346
2351
  />
2347
- <div class="o-divider"/>
2352
+ <div class="o-divider border-end"/>
2348
2353
  <ColorPickerWidget
2349
2354
  currentColor="rule.style.fillColor"
2350
2355
  toggleColorPicker="(ev) => this.toggleMenu('cellIsRule-fillColor', ev)"
@@ -2372,7 +2377,7 @@
2372
2377
 
2373
2378
  <t t-name="o-spreadsheet.RoundColorPicker">
2374
2379
  <div
2375
- class="o-round-color-picker-button rounded-circle"
2380
+ class="o-round-color-picker-button rounded-circle border"
2376
2381
  t-ref="colorPickerButton"
2377
2382
  t-on-click.stop="togglePicker"
2378
2383
  t-att-title="props.title"
@@ -2396,6 +2401,7 @@
2396
2401
  <t t-foreach="props.choices" t-as="choice" t-key="choice.value">
2397
2402
  <label class="o-radio d-flex align-items-center me-4">
2398
2403
  <input
2404
+ class="border rounded-circle"
2399
2405
  t-att-class="{
2400
2406
  'me-1': props.direction === 'horizontal',
2401
2407
  'me-2': props.direction === 'vertical'}"
@@ -2463,7 +2469,7 @@
2463
2469
  t-att-class="{'text-muted': props.disabled }"
2464
2470
  t-attf-class="{{props.className}}">
2465
2471
  <input
2466
- class="me-2"
2472
+ class="me-2 flex-shrink-0 border"
2467
2473
  type="checkbox"
2468
2474
  t-att-disabled="props.disabled"
2469
2475
  t-att-name="props.name"
@@ -2471,7 +2477,7 @@
2471
2477
  t-on-change="onChange"
2472
2478
  t-on-click.stop=""
2473
2479
  />
2474
- <t t-if="props.label" t-esc="props.label"/>
2480
+ <span class="text-truncate" t-if="props.label" t-esc="props.label"/>
2475
2481
  </label>
2476
2482
  </t>
2477
2483
 
@@ -2964,7 +2970,7 @@
2964
2970
  </div>
2965
2971
 
2966
2972
  <t t-set="definition" t-value="getChartDefinition(this.chartId)"/>
2967
- <div class="o-panel-content overflow-y-auto" t-ref="panelContent">
2973
+ <div class="o-panel-content" t-ref="panelContent">
2968
2974
  <div t-att-class="store.panel !== 'configuration' ? 'd-none' : ''">
2969
2975
  <ChartTypePicker chartId="chartId" chartPanelStore="store"/>
2970
2976
  <t
@@ -3124,45 +3130,10 @@
3124
3130
 
3125
3131
  <SidePanelCollapsible isInitiallyCollapsed="false" title.translate="Geo chart options">
3126
3132
  <t t-set-slot="content">
3127
- <Section class="'pt-0 o-color-scale'" title.translate="Color Scale">
3128
- <select class="o-input" t-on-change="this.updateColorScaleType">
3129
- <option value="custom">Custom</option>
3130
- <hr/>
3131
- <t t-foreach="colorScalesChoices" t-as="colorScale" t-key="colorScale">
3132
- <option
3133
- t-att-value="colorScale"
3134
- t-esc="colorScale_value"
3135
- t-att-selected="colorScale === selectedColorScale"
3136
- />
3137
- </t>
3138
- </select>
3139
-
3140
- <t t-if="customColorScale">
3141
- <div class="o-min-color d-flex align-items-center mb-2 mt-4">
3142
- <RoundColorPicker
3143
- currentColor="getCustomColorScaleColor('minColor')"
3144
- onColorPicked="(color) => this.setCustomColorScaleColor('minColor', color)"
3145
- disableNoColor="true"
3146
- />
3147
- <span class="ps-2">Color of minimum values</span>
3148
- </div>
3149
- <div class="o-mid-color d-flex align-items-center mb-2">
3150
- <RoundColorPicker
3151
- currentColor="getCustomColorScaleColor('midColor')"
3152
- onColorPicked="(color) => this.setCustomColorScaleColor('midColor', color)"
3153
- />
3154
- <span class="ps-2">Color of middle values</span>
3155
- </div>
3156
- <div class="o-max-color d-flex align-items-center">
3157
- <RoundColorPicker
3158
- currentColor="getCustomColorScaleColor('maxColor')"
3159
- onColorPicked="(color) => this.setCustomColorScaleColor('maxColor', color)"
3160
- disableNoColor="true"
3161
- />
3162
- <span class="ps-2">Color of maximum values</span>
3163
- </div>
3164
- </t>
3165
- </Section>
3133
+ <ColorScalePicker
3134
+ definition="props.definition"
3135
+ onUpdateColorScale.bind="this.updateColorScale"
3136
+ />
3166
3137
 
3167
3138
  <Section class="'pt-0 o-missing-value'" title.translate="Countries without value">
3168
3139
  <RoundColorPicker
@@ -3471,7 +3442,7 @@
3471
3442
  <Popover t-if="state.popoverProps" t-props="state.popoverProps">
3472
3443
  <div
3473
3444
  t-ref="popoverRef"
3474
- class="o-chart-select-popover px-3 pb-4"
3445
+ class="o-chart-select-popover px-3 pb-4 bg-white"
3475
3446
  t-att-style="state.popoverStyle">
3476
3447
  <t t-foreach="categories" t-as="category" t-key="category">
3477
3448
  <t t-if="chartTypeByCategories[category]">
@@ -3499,148 +3470,192 @@
3499
3470
 
3500
3471
  <t t-name="o-spreadsheet-ChartPreview.LINE_CHART">
3501
3472
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3502
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3503
- <path stroke="#eb6d00" style="fill:none" d="M6,40 l12,-12 l6,6 l18,-18"/>
3504
- <path stroke="#0074d9" style="fill:none" d="M6,25 l12,-12 l18,18 l6,-6"/>
3473
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3474
+ <path
3475
+ stroke="var(--os-chart-preview-orange-line)"
3476
+ style="fill:none"
3477
+ d="M6,40 l12,-12 l6,6 l18,-18"
3478
+ />
3479
+ <path
3480
+ stroke="var(--os-chart-preview-blue-line)"
3481
+ style="fill:none"
3482
+ d="M6,25 l12,-12 l18,18 l6,-6"
3483
+ />
3505
3484
  </svg>
3506
3485
  </t>
3507
3486
  <t t-name="o-spreadsheet-ChartPreview.STACKED_LINE_CHART">
3508
3487
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3509
- <path stroke="#0074d9" style="fill:none" d="M3,30 l12,-12 l6,6 l18,-18"/>
3510
- <path stroke="#eb6d00" style="fill:none" d="M3,40 l12,-12 l6,6 l18,-12"/>
3511
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3488
+ <path
3489
+ stroke="var(--os-chart-preview-blue-line)"
3490
+ style="fill:none"
3491
+ d="M3,30 l12,-12 l6,6 l18,-18"
3492
+ />
3493
+ <path
3494
+ stroke="var(--os-chart-preview-orange-line)"
3495
+ style="fill:none"
3496
+ d="M3,40 l12,-12 l6,6 l18,-12"
3497
+ />
3498
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3512
3499
  </svg>
3513
3500
  </t>
3514
3501
  <t t-name="o-spreadsheet-ChartPreview.AREA_CHART">
3515
3502
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3516
- <path fill="#c4e4ff" d="M3,45 V25 l12,-12 l18,18 l6,-6 V45"/>
3517
- <path fill="#ffe1c8" d="M3,45 V40 l12,-12 l6,6 l18,-18 V45"/>
3518
- <path stroke="#eb6d00" style="fill:none" d="M3,40 l12,-12 l6,6 l18,-18"/>
3519
- <path stroke="#0074d9" style="fill:none" d="M3,25 l12,-12 l18,18 l6,-6"/>
3520
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3503
+ <path fill="var(--os-chart-preview-blue-fill)" d="M3,45 V25 l12,-12 l18,18 l6,-6 V45"/>
3504
+ <path fill="var(--os-chart-preview-orange-fill)" d="M3,45 V40 l12,-12 l6,6 l18,-18 V45"/>
3505
+ <path
3506
+ stroke="var(--os-chart-preview-orange-line)"
3507
+ style="fill:none"
3508
+ d="M3,40 l12,-12 l6,6 l18,-18"
3509
+ />
3510
+ <path
3511
+ stroke="var(--os-chart-preview-blue-line)"
3512
+ style="fill:none"
3513
+ d="M3,25 l12,-12 l18,18 l6,-6"
3514
+ />
3515
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3521
3516
  </svg>
3522
3517
  </t>
3523
3518
  <t t-name="o-spreadsheet-ChartPreview.STACKED_AREA_CHART">
3524
3519
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3525
- <path fill="#c4e4ff" d="M3,45 h36 v-39 l-18,18 l-6,-6 l-12,12"/>
3526
- <path stroke="#0074d9" style="fill:none" d="M3,30 l12,-12 l6,6 l18,-18"/>
3527
- <path fill="#ffe1c8" d="M3,45 h36 v-23 l-18,12 l-6,-6 l-12,12"/>
3528
- <path stroke="#eb6d00" style="fill:none" d="M3,40 l12,-12 l6,6 l18,-12"/>
3529
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3520
+ <path fill="var(--os-chart-preview-blue-fill)" d="M3,45 h36 v-39 l-18,18 l-6,-6 l-12,12"/>
3521
+ <path
3522
+ stroke="var(--os-chart-preview-blue-line)"
3523
+ style="fill:none"
3524
+ d="M3,30 l12,-12 l6,6 l18,-18"
3525
+ />
3526
+ <path fill="var(--os-chart-preview-orange-fill)" d="M3,45 h36 v-23 l-18,12 l-6,-6 l-12,12"/>
3527
+ <path
3528
+ stroke="var(--os-chart-preview-orange-line)"
3529
+ style="fill:none"
3530
+ d="M3,40 l12,-12 l6,6 l18,-12"
3531
+ />
3532
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3530
3533
  </svg>
3531
3534
  </t>
3532
3535
  <t t-name="o-spreadsheet-ChartPreview.COLUMN_CHART">
3533
3536
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3534
- <path fill="#0074d9" d="M7,45 v-28 h6 v28"/>
3535
- <path fill="#c4e4ff" d="M8,45 v-27 h4 v27"/>
3536
- <path fill="#eb6d00" d="M14,45 v-14 h6 v14"/>
3537
- <path fill="#ffe1c8" d="M15,45 v-13 h4 v13"/>
3538
- <path fill="#0074d9" d="M26,45 v-22 h6 v22"/>
3539
- <path fill="#c4e4ff" d="M27,45 v-21 h4 v21"/>
3540
- <path fill="#eb6d00" d="M33,45 v-32 h6 v32"/>
3541
- <path fill="#ffe1c8" d="M34,45 v-31 h4 v31"/>
3542
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3537
+ <path fill="var(--os-chart-preview-blue-line)" d="M7,45 v-28 h6 v28"/>
3538
+ <path fill="var(--os-chart-preview-blue-fill)" d="M8,45 v-27 h4 v27"/>
3539
+ <path fill="var(--os-chart-preview-orange-line)" d="M14,45 v-14 h6 v14"/>
3540
+ <path fill="var(--os-chart-preview-orange-fill)" d="M15,45 v-13 h4 v13"/>
3541
+ <path fill="var(--os-chart-preview-blue-line)" d="M26,45 v-22 h6 v22"/>
3542
+ <path fill="var(--os-chart-preview-blue-fill)" d="M27,45 v-21 h4 v21"/>
3543
+ <path fill="var(--os-chart-preview-orange-line)" d="M33,45 v-32 h6 v32"/>
3544
+ <path fill="var(--os-chart-preview-orange-fill)" d="M34,45 v-31 h4 v31"/>
3545
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3543
3546
  </svg>
3544
3547
  </t>
3545
3548
  <t t-name="o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART">
3546
3549
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3547
- <path fill="#0074d9" d="M7,45 v-12 h8 v12"/>
3548
- <path fill="#c4e4ff" d="M8,45 v-11 h6 v11"/>
3549
- <path fill="#eb6d00" d="M7,33 v-14 h8 v14"/>
3550
- <path fill="#ffe1c8" d="M8,33 v-13 h6 v13"/>
3550
+ <path fill="var(--os-chart-preview-blue-line)" d="M7,45 v-12 h8 v12"/>
3551
+ <path fill="var(--os-chart-preview-blue-fill)" d="M8,45 v-11 h6 v11"/>
3552
+ <path fill="var(--os-chart-preview-orange-line)" d="M7,33 v-14 h8 v14"/>
3553
+ <path fill="var(--os-chart-preview-orange-fill)" d="M8,33 v-13 h6 v13"/>
3551
3554
 
3552
- <path fill="#0074d9" d="M20,45 v-8 h8 v8"/>
3553
- <path fill="#c4e4ff" d="M21,45 v-7 h6 v7"/>
3554
- <path fill="#eb6d00" d="M20,37 v-9 h8 v9"/>
3555
- <path fill="#ffe1c8" d="M21,37 v-8 h6 v8"/>
3555
+ <path fill="var(--os-chart-preview-blue-line)" d="M20,45 v-8 h8 v8"/>
3556
+ <path fill="var(--os-chart-preview-blue-fill)" d="M21,45 v-7 h6 v7"/>
3557
+ <path fill="var(--os-chart-preview-orange-line)" d="M20,37 v-9 h8 v9"/>
3558
+ <path fill="var(--os-chart-preview-orange-fill)" d="M21,37 v-8 h6 v8"/>
3556
3559
 
3557
- <path fill="#0074d9" d="M33,45 v-18 h8 v18"/>
3558
- <path fill="#c4e4ff" d="M34,45 v-17 h6 v17"/>
3559
- <path fill="#eb6d00" d="M33,27 v-16 h8 v16"/>
3560
- <path fill="#ffe1c8" d="M34,27 v-15 h6 v15"/>
3560
+ <path fill="var(--os-chart-preview-blue-line)" d="M33,45 v-18 h8 v18"/>
3561
+ <path fill="var(--os-chart-preview-blue-fill)" d="M34,45 v-17 h6 v17"/>
3562
+ <path fill="var(--os-chart-preview-orange-line)" d="M33,27 v-16 h8 v16"/>
3563
+ <path fill="var(--os-chart-preview-orange-fill)" d="M34,27 v-15 h6 v15"/>
3561
3564
 
3562
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3565
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3563
3566
  </svg>
3564
3567
  </t>
3565
3568
  <t t-name="o-spreadsheet-ChartPreview.BAR_CHART">
3566
3569
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3567
3570
  <g transform="matrix(0 1 -1 0 48 3)">
3568
- <path fill="#0074d9" d="M7,45 v-28 h6 v28"/>
3569
- <path fill="#c4e4ff" d="M8,45 v-27 h4 v27"/>
3570
- <path fill="#eb6d00" d="M14,45 v-14 h6 v14"/>
3571
- <path fill="#ffe1c8" d="M15,45 v-13 h4 v13"/>
3572
- <path fill="#0074d9" d="M26,45 v-22 h6 v22"/>
3573
- <path fill="#c4e4ff" d="M27,45 v-21 h4 v21"/>
3574
- <path fill="#eb6d00" d="M33,45 v-32 h6 v32"/>
3575
- <path fill="#ffe1c8" d="M34,45 v-31 h4 v31"/>
3571
+ <path fill="var(--os-chart-preview-blue-line)" d="M7,45 v-28 h6 v28"/>
3572
+ <path fill="var(--os-chart-preview-blue-fill)" d="M8,45 v-27 h4 v27"/>
3573
+ <path fill="var(--os-chart-preview-orange-line)" d="M14,45 v-14 h6 v14"/>
3574
+ <path fill="var(--os-chart-preview-orange-fill)" d="M15,45 v-13 h4 v13"/>
3575
+ <path fill="var(--os-chart-preview-blue-line)" d="M26,45 v-22 h6 v22"/>
3576
+ <path fill="var(--os-chart-preview-blue-fill)" d="M27,45 v-21 h4 v21"/>
3577
+ <path fill="var(--os-chart-preview-orange-line)" d="M33,45 v-32 h6 v32"/>
3578
+ <path fill="var(--os-chart-preview-orange-fill)" d="M34,45 v-31 h4 v31"/>
3576
3579
  </g>
3577
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3580
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3578
3581
  </svg>
3579
3582
  </t>
3580
3583
  <t t-name="o-spreadsheet-ChartPreview.STACKED_BAR_CHART">
3581
3584
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3582
3585
  <g transform="matrix(0 1 -1 0 48 1)">
3583
- <path fill="#0074d9" d="M7,45 v-12 h8 v12"/>
3584
- <path fill="#c4e4ff" d="M8,45 v-11 h6 v11"/>
3585
- <path fill="#eb6d00" d="M7,33 v-14 h8 v14"/>
3586
- <path fill="#ffe1c8" d="M8,33 v-13 h6 v13"/>
3587
- <path fill="#0074d9" d="M20,45 v-8 h8 v8"/>
3588
- <path fill="#c4e4ff" d="M21,45 v-7 h6 v7"/>
3589
- <path fill="#eb6d00" d="M20,37 v-9 h8 v9"/>
3590
- <path fill="#ffe1c8" d="M21,37 v-8 h6 v8"/>
3591
- <path fill="#0074d9" d="M33,45 v-18 h8 v18"/>
3592
- <path fill="#c4e4ff" d="M34,45 v-17 h6 v17"/>
3593
- <path fill="#eb6d00" d="M33,27 v-16 h8 v16"/>
3594
- <path fill="#ffe1c8" d="M34,27 v-15 h6 v15"/>
3586
+ <path fill="var(--os-chart-preview-blue-line)" d="M7,45 v-12 h8 v12"/>
3587
+ <path fill="var(--os-chart-preview-blue-fill)" d="M8,45 v-11 h6 v11"/>
3588
+ <path fill="var(--os-chart-preview-orange-line)" d="M7,33 v-14 h8 v14"/>
3589
+ <path fill="var(--os-chart-preview-orange-fill)" d="M8,33 v-13 h6 v13"/>
3590
+ <path fill="var(--os-chart-preview-blue-line)" d="M20,45 v-8 h8 v8"/>
3591
+ <path fill="var(--os-chart-preview-blue-fill)" d="M21,45 v-7 h6 v7"/>
3592
+ <path fill="var(--os-chart-preview-orange-line)" d="M20,37 v-9 h8 v9"/>
3593
+ <path fill="var(--os-chart-preview-orange-fill)" d="M21,37 v-8 h6 v8"/>
3594
+ <path fill="var(--os-chart-preview-blue-line)" d="M33,45 v-18 h8 v18"/>
3595
+ <path fill="var(--os-chart-preview-blue-fill)" d="M34,45 v-17 h6 v17"/>
3596
+ <path fill="var(--os-chart-preview-orange-line)" d="M33,27 v-16 h8 v16"/>
3597
+ <path fill="var(--os-chart-preview-orange-fill)" d="M34,27 v-15 h6 v15"/>
3595
3598
  </g>
3596
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3599
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3597
3600
  </svg>
3598
3601
  </t>
3599
3602
  <t t-name="o-spreadsheet-ChartPreview.COMBO_CHART">
3600
3603
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3601
- <path fill="#0074d9" d="M7,45 v-14 h6 v14"/>
3602
- <path fill="#c4e4ff" d="M8,45 v-13 h4 v13"/>
3603
- <path fill="#eb6d00" d="M14,45 v-28 h6 v28"/>
3604
- <path fill="#ffe1c8" d="M15,45 v-27 h4 v27"/>
3605
- <path fill="#0074d9" d="M26,45 v-22 h6 v22"/>
3606
- <path fill="#c4e4ff" d="M27,45 v-21 h4 v21"/>
3607
- <path fill="#eb6d00" d="M33,45 v-32 h6 v32"/>
3608
- <path fill="#ffe1c8" d="M34,45 v-31 h4 v31"/>
3609
- <path stroke="#888" style="fill:none;stroke-width:1.5;" d="M4,40 l14,-12 l6,6 l20,-18"/>
3610
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3604
+ <path fill="var(--os-chart-preview-blue-line)" d="M7,45 v-14 h6 v14"/>
3605
+ <path fill="var(--os-chart-preview-blue-fill)" d="M8,45 v-13 h4 v13"/>
3606
+ <path fill="var(--os-chart-preview-orange-line)" d="M14,45 v-28 h6 v28"/>
3607
+ <path fill="var(--os-chart-preview-orange-fill)" d="M15,45 v-27 h4 v27"/>
3608
+ <path fill="var(--os-chart-preview-blue-line)" d="M26,45 v-22 h6 v22"/>
3609
+ <path fill="var(--os-chart-preview-blue-fill)" d="M27,45 v-21 h4 v21"/>
3610
+ <path fill="var(--os-chart-preview-orange-line)" d="M33,45 v-32 h6 v32"/>
3611
+ <path fill="var(--os-chart-preview-orange-fill)" d="M34,45 v-31 h4 v31"/>
3612
+ <path
3613
+ stroke="var(--os-gray-500)"
3614
+ style="fill:none;stroke-width:1.5;"
3615
+ d="M4,40 l14,-12 l6,6 l20,-18"
3616
+ />
3617
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3611
3618
  </svg>
3612
3619
  </t>
3613
3620
  <t t-name="o-spreadsheet-ChartPreview.PIE_CHART">
3614
3621
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3615
- <path fill="#ffe1c8" stroke="#eb6d00" d="M41.32, 34 A20 20, 0, 1, 1, 24, 4 v20"/>
3616
- <path fill="#c4e4ff" stroke="#0074d9" d="M24,24 v-20 A20 20, 0, 0, 1, 41.32, 34 L24,24"/>
3622
+ <path
3623
+ fill="var(--os-chart-preview-orange-fill)"
3624
+ stroke="var(--os-chart-preview-orange-line)"
3625
+ d="M41.32, 34 A20 20, 0, 1, 1, 24, 4 v20"
3626
+ />
3627
+ <path
3628
+ fill="var(--os-chart-preview-blue-fill)"
3629
+ stroke="var(--os-chart-preview-blue-line)"
3630
+ d="M24,24 v-20 A20 20, 0, 0, 1, 41.32, 34 L24,24"
3631
+ />
3617
3632
  </svg>
3618
3633
  </t>
3619
3634
  <t t-name="o-spreadsheet-ChartPreview.DOUGHNUT_CHART">
3620
3635
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3621
3636
  <path
3622
- fill="#ffe1c8"
3623
- stroke="#eb6d00"
3637
+ fill="var(--os-chart-preview-orange-fill)"
3638
+ stroke="var(--os-chart-preview-orange-line)"
3624
3639
  d="M41.32, 34 A20 20, 0, 1, 1, 24, 4 v8 A12,12,0,1,0,34.4,30"
3625
3640
  />
3626
3641
  <path
3627
- fill="#c4e4ff"
3628
- stroke="#0074d9"
3642
+ fill="var(--os-chart-preview-blue-fill)"
3643
+ stroke="var(--os-chart-preview-blue-line)"
3629
3644
  d="M24,12 v-8 A20 20, 0, 0, 1, 41.32, 34 L34.4,30 A12,12,0,0,0,24,12"
3630
3645
  />
3631
3646
  </svg>
3632
3647
  </t>
3633
3648
  <t t-name="o-spreadsheet-ChartPreview.SCATTER_CHART">
3634
3649
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3635
- <circle fill="#0074d9" cx="10" cy="10" r="2"/>
3636
- <circle fill="#0074d9" cx="15" cy="30" r="2"/>
3637
- <circle fill="#0074d9" cx="25" cy="36" r="2"/>
3638
- <circle fill="#0074d9" cx="32" cy="15" r="2"/>
3639
- <circle fill="#eb6d00" cx="10" cy="40" r="2"/>
3640
- <circle fill="#eb6d00" cx="18" cy="20" r="2"/>
3641
- <circle fill="#eb6d00" cx="30" cy="25" r="2"/>
3642
- <circle fill="#eb6d00" cx="40" cy="33" r="2"/>
3643
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3650
+ <circle fill="var(--os-chart-preview-blue-line)" cx="10" cy="10" r="2"/>
3651
+ <circle fill="var(--os-chart-preview-blue-line)" cx="15" cy="30" r="2"/>
3652
+ <circle fill="var(--os-chart-preview-blue-line)" cx="25" cy="36" r="2"/>
3653
+ <circle fill="var(--os-chart-preview-blue-line)" cx="32" cy="15" r="2"/>
3654
+ <circle fill="var(--os-chart-preview-orange-line)" cx="10" cy="40" r="2"/>
3655
+ <circle fill="var(--os-chart-preview-orange-line)" cx="18" cy="20" r="2"/>
3656
+ <circle fill="var(--os-chart-preview-orange-line)" cx="30" cy="25" r="2"/>
3657
+ <circle fill="var(--os-chart-preview-orange-line)" cx="40" cy="33" r="2"/>
3658
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3644
3659
  </svg>
3645
3660
  </t>
3646
3661
  <t t-name="o-spreadsheet-ChartPreview.GAUGE_CHART">
@@ -3648,9 +3663,9 @@
3648
3663
  viewBox="0 0 48 48"
3649
3664
  class="o-chart-preview user-select-none"
3650
3665
  xmlns="http://www.w3.org/2000/svg">
3651
- <path fill="#ccc" d="M2,32 A22,22,0,0,1,46,32 h-6 A16,16,0,0,0,8,32"/>
3666
+ <path fill="var(--os-gray-400)" d="M2,32 A22,22,0,0,1,46,32 h-6 A16,16,0,0,0,8,32"/>
3652
3667
  <path fill="#6aa84f" d="M2,32 A22,22,0,0,1,35,13 L32,18.2 A16,16,0,0,0,8,32"/>
3653
- <text x="17" y="32" style="font-size:12px;">62</text>
3668
+ <text fill="currentColor" x="17" y="32" style="font-size:12px;">62</text>
3654
3669
  </svg>
3655
3670
  </t>
3656
3671
  <t t-name="o-spreadsheet-ChartPreview.SCORECARD_CHART">
@@ -3658,61 +3673,72 @@
3658
3673
  viewBox="0 0 48 48"
3659
3674
  class="o-chart-preview user-select-none"
3660
3675
  xmlns="http://www.w3.org/2000/svg">
3661
- <path fill="#ddd" d="M1,8 h46 v32 h-46"/>
3662
- <path fill="#eee" d="M2,9 h44 v30 h-44"/>
3663
- <text x="9" y="32" style="font-size:18px;">123</text>
3676
+ <path fill="var(--os-gray-300)" d="M1,8 h46 v32 h-46"/>
3677
+ <path fill="var(--os-gray-200)" d="M2,9 h44 v30 h-44"/>
3678
+ <text fill="currentColor" x="9" y="32" style="font-size:18px;">123</text>
3664
3679
  </svg>
3665
3680
  </t>
3666
3681
  <t t-name="o-spreadsheet-ChartPreview.WATERFALL_CHART">
3667
3682
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3668
- <path fill="#444" d="M5,45 v-26 h6 v26"/>
3669
- <path fill="#fff" d="M6,45 v-25 h4 v25"/>
3670
- <path fill="#eb6d00" d="M13,19 v7 h6 v-7"/>
3671
- <path fill="#ffe1c8" d="M14,20 v5 h4 v-5"/>
3672
- <path fill="#eb6d00" d="M21,25 v10 h6 v-10"/>
3673
- <path fill="#ffe1c8" d="M22,26 v8 h4 v-8"/>
3674
- <path fill="#0074d9" d="M29,35 v-24 h6 v24"/>
3675
- <path fill="#c4e4ff" d="M30,34 v-22 h4 v22"/>
3676
- <path fill="#444" d="M37,45 v-34 h6 v34"/>
3677
- <path fill="#fff" d="M38,45 v-33 h4 v33"/>
3678
- <path fill="#444" d="M11,20 v-1 h2 v1 M19,26 v-1 h2 v1 M27,35 v-1 h2 v1 M35,12 v-1 h2 v1"/>
3679
- <path fill="#444" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3683
+ <path fill="var(--os-gray-600)" d="M5,45 v-26 h6 v26"/>
3684
+ <path fill="var(--os-white-bg)" d="M6,45 v-25 h4 v25"/>
3685
+ <path fill="var(--os-chart-preview-orange-line)" d="M13,19 v7 h6 v-7"/>
3686
+ <path fill="var(--os-chart-preview-orange-fill)" d="M14,20 v5 h4 v-5"/>
3687
+ <path fill="var(--os-chart-preview-orange-line)" d="M21,25 v10 h6 v-10"/>
3688
+ <path fill="var(--os-chart-preview-orange-fill)" d="M22,26 v8 h4 v-8"/>
3689
+ <path fill="var(--os-chart-preview-blue-line)" d="M29,35 v-24 h6 v24"/>
3690
+ <path fill="var(--os-chart-preview-blue-fill)" d="M30,34 v-22 h4 v22"/>
3691
+ <path fill="var(--os-gray-600)" d="M37,45 v-34 h6 v34"/>
3692
+ <path fill="var(--os-white-bg)" d="M38,45 v-33 h4 v33"/>
3693
+ <path
3694
+ fill="var(--os-gray-600)"
3695
+ d="M11,20 v-1 h2 v1 M19,26 v-1 h2 v1 M27,35 v-1 h2 v1 M35,12 v-1 h2 v1"
3696
+ />
3697
+ <path fill="var(--os-gray-600)" d="M2,2 v44 h1 v-44 M3,45 h42 v1 h-42"/>
3680
3698
  </svg>
3681
3699
  </t>
3682
3700
  <t t-name="o-spreadsheet-ChartPreview.POPULATION_PYRAMID_CHART">
3683
3701
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3684
- <path fill="#eb6d00" d="M23,43 v-6 h22 v6"/>
3685
- <path fill="#ffe1c8" d="M23,42 v-4 h21 v4"/>
3686
- <path fill="#eb6d00" d="M23,36 v-6 h18 v6"/>
3687
- <path fill="#ffe1c8" d="M23,35 v-4 h17 v4"/>
3688
- <path fill="#eb6d00" d="M23,29 v-6 h12 v6"/>
3689
- <path fill="#ffe1c8" d="M23,28 v-4 h11 v4"/>
3690
- <path fill="#eb6d00" d="M23,22 v-6 h8 v6"/>
3691
- <path fill="#ffe1c8" d="M23,21 v-4 h7 v4"/>
3692
- <path fill="#eb6d00" d="M23,15 v-6 h4 v6"/>
3693
- <path fill="#ffe1c8" d="M23,14 v-4 h3 v4"/>
3694
-
3695
- <path fill="#0074d9" d="M24,43 v-6 h-20 v6"/>
3696
- <path fill="#c4e4ff" d="M24,42 v-4 h-19 v4"/>
3697
- <path fill="#0074d9" d="M24,36 v-6 h-18 v6"/>
3698
- <path fill="#c4e4ff" d="M24,35 v-4 h-17 v4"/>
3699
- <path fill="#0074d9" d="M24,29 v-6 h-12 v6"/>
3700
- <path fill="#c4e4ff" d="M24,28 v-4 h-11 v4"/>
3701
- <path fill="#0074d9" d="M24,22 v-6 h-6 v6"/>
3702
- <path fill="#c4e4ff" d="M24,21 v-4 h-5 v4"/>
3703
- <path fill="#0074d9" d="M24,15 v-6 h-4 v6"/>
3704
- <path fill="#c4e4ff" d="M24,14 v-4 h-3 v4"/>
3705
-
3706
- <path fill="#444" d="M23,2 v43 h1 v-43 M2,45 h44 v1 h-44"/>
3702
+ <path fill="var(--os-chart-preview-orange-line)" d="M23,43 v-6 h22 v6"/>
3703
+ <path fill="var(--os-chart-preview-orange-fill)" d="M23,42 v-4 h21 v4"/>
3704
+ <path fill="var(--os-chart-preview-orange-line)" d="M23,36 v-6 h18 v6"/>
3705
+ <path fill="var(--os-chart-preview-orange-fill)" d="M23,35 v-4 h17 v4"/>
3706
+ <path fill="var(--os-chart-preview-orange-line)" d="M23,29 v-6 h12 v6"/>
3707
+ <path fill="var(--os-chart-preview-orange-fill)" d="M23,28 v-4 h11 v4"/>
3708
+ <path fill="var(--os-chart-preview-orange-line)" d="M23,22 v-6 h8 v6"/>
3709
+ <path fill="var(--os-chart-preview-orange-fill)" d="M23,21 v-4 h7 v4"/>
3710
+ <path fill="var(--os-chart-preview-orange-line)" d="M23,15 v-6 h4 v6"/>
3711
+ <path fill="var(--os-chart-preview-orange-fill)" d="M23,14 v-4 h3 v4"/>
3712
+
3713
+ <path fill="var(--os-chart-preview-blue-line)" d="M24,43 v-6 h-20 v6"/>
3714
+ <path fill="var(--os-chart-preview-blue-fill)" d="M24,42 v-4 h-19 v4"/>
3715
+ <path fill="var(--os-chart-preview-blue-line)" d="M24,36 v-6 h-18 v6"/>
3716
+ <path fill="var(--os-chart-preview-blue-fill)" d="M24,35 v-4 h-17 v4"/>
3717
+ <path fill="var(--os-chart-preview-blue-line)" d="M24,29 v-6 h-12 v6"/>
3718
+ <path fill="var(--os-chart-preview-blue-fill)" d="M24,28 v-4 h-11 v4"/>
3719
+ <path fill="var(--os-chart-preview-blue-line)" d="M24,22 v-6 h-6 v6"/>
3720
+ <path fill="var(--os-chart-preview-blue-fill)" d="M24,21 v-4 h-5 v4"/>
3721
+ <path fill="var(--os-chart-preview-blue-line)" d="M24,15 v-6 h-4 v6"/>
3722
+ <path fill="var(--os-chart-preview-blue-fill)" d="M24,14 v-4 h-3 v4"/>
3723
+
3724
+ <path fill="var(--os-gray-600)" d="M23,2 v43 h1 v-43 M2,45 h44 v1 h-44"/>
3707
3725
  </svg>
3708
3726
  </t>
3709
3727
  <t t-name="o-spreadsheet-ChartPreview.RADAR_CHART">
3710
3728
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3711
- <path fill="none" stroke="#0074d9" d="m24 16 14.27 3.36-1.93 21.63-18.22-8.9-3.63-11.18Z"/>
3712
- <path fill="none" stroke="#eb6d00" d="m24 4 7.61 17.53-4.67 6.52-12.34 8.89-7.72-18.5Z"/>
3713
3729
  <path
3714
3730
  fill="none"
3715
- stroke="#444"
3731
+ stroke="var(--os-chart-preview-blue-line)"
3732
+ d="m24 16 14.27 3.36-1.93 21.63-18.22-8.9-3.63-11.18Z"
3733
+ />
3734
+ <path
3735
+ fill="none"
3736
+ stroke="var(--os-chart-preview-orange-line)"
3737
+ d="m24 4 7.61 17.53-4.67 6.52-12.34 8.89-7.72-18.5Z"
3738
+ />
3739
+ <path
3740
+ fill="none"
3741
+ stroke="var(--os-gray-600)"
3716
3742
  d="M24 2v22l20.92-6.8L24 24l12.93 17.8L24 24 11.07 41.8 24 24 3.08 17.2"
3717
3743
  />
3718
3744
  </svg>
@@ -3720,14 +3746,20 @@
3720
3746
  <t t-name="o-spreadsheet-ChartPreview.FILLED_RADAR_CHART">
3721
3747
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3722
3748
  <path
3723
- fill="#0074d944"
3724
- stroke="#0074d9"
3749
+ fill="var(--os-chart-preview-blue-line)"
3750
+ fill-opacity="0.25"
3751
+ stroke="var(--os-chart-preview-blue-line)"
3725
3752
  d="m24 16 14.27 3.36-1.93 21.63-18.22-8.9-3.63-11.18Z"
3726
3753
  />
3727
- <path fill="#eb6d0044" stroke="#eb6d00" d="m24 4 7.61 17.53-4.67 6.52-12.34 8.89-7.72-18.5Z"/>
3754
+ <path
3755
+ fill="var(--os-chart-preview-orange-line)"
3756
+ fill-opacity="0.25"
3757
+ stroke="var(--os-chart-preview-orange-line)"
3758
+ d="m24 4 7.61 17.53-4.67 6.52-12.34 8.89-7.72-18.5Z"
3759
+ />
3728
3760
  <path
3729
3761
  fill="none"
3730
- stroke="#444"
3762
+ stroke="var(--os-gray-600)"
3731
3763
  d="M24 2v22l20.92-6.8L24 24l12.93 17.8L24 24 11.07 41.8 24 24 3.08 17.2"
3732
3764
  />
3733
3765
  </svg>
@@ -3740,70 +3772,203 @@
3740
3772
  fill="none"
3741
3773
  stroke-width="0.5"
3742
3774
  stroke-linejoin="round">
3743
- <circle cx="16" cy="16" r="13" fill="#c4e4ff"/>
3775
+ <circle cx="16" cy="16" r="13" fill="var(--os-chart-preview-blue-fill)"/>
3744
3776
  <path
3745
- stroke="#eb6d00"
3746
- fill="#ffe1c8"
3777
+ stroke="var(--os-chart-preview-orange-line)"
3778
+ fill="var(--os-chart-preview-orange-fill)"
3747
3779
  d="M12.225 16.293c0 6.8 4 9 5 9 3.5 0 2-5.293 3.5-6.793s5-.707 5-4.207-2-5-5-5c-5 0-8.5 1.5-8.5 7z"
3748
3780
  />
3749
3781
  <path
3750
- fill="#ffe1c8"
3782
+ fill="var(--os-chart-preview-orange-fill)"
3751
3783
  d="M21.5 4.4c0 1.167-1.735 1.5-3 1.5-5.217 0-10.705 3.48-11.421 8.004C6.992 14.549 6.552 15 6 15H3.07 A 13 13 0 0 1 21.5 4.2
3752
3784
  M3.8 20.5c.785.262 2.126 1.285 3.44 1.517.57.101 1.153.464 1.299 1.023.303 1.16.548 1.992-.239 3.58 A 13 13 0 0 1 3.8 20.5"
3753
3785
  />
3754
3786
  <path
3755
- stroke="#eb6d00"
3787
+ stroke="var(--os-chart-preview-orange-line)"
3756
3788
  d="M21.5 4.4c0 1.167-1.735 1.5-3 1.5-5.217 0-10.705 3.48-11.421 8.004C6.992 14.549 6.552 15 6 15H3.07
3757
3789
  M3.8 20.5c.785.262 2.126 1.285 3.44 1.517.57.101 1.153.464 1.299 1.023.303 1.16.548 1.992-.239 3.58"
3758
3790
  />
3759
- <circle cx="16" cy="16" r="13" stroke="#444"/>
3791
+ <circle cx="16" cy="16" r="13" stroke="var(--os-gray-600)"/>
3760
3792
  </svg>
3761
3793
  </t>
3762
3794
  <t t-name="o-spreadsheet-ChartPreview.FUNNEL_CHART">
3763
3795
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3764
- <path stroke="#0074d9" fill="#c4e4ff" d="M2.5,6.5 h44 l-5,7 h-34 l-5,-7 h1"/>
3765
- <path stroke="#eb6d00" fill="#ffe1c8" d="M9.5,16.5 h30 l-3,7 h-25 l-3,-7 h1"/>
3766
- <path stroke="#0074d9" fill="#c4e4ff" d="M12.5,26.5 h23 l-8,7 h-7 l-8,-7 h1"/>
3767
- <path stroke="#eb6d00" fill="#ffe1c8" d="M21.5,35.5 h5 l-2.5,7 l-2.5,-7 h1"/>
3796
+ <path
3797
+ stroke="var(--os-chart-preview-blue-line)"
3798
+ fill="var(--os-chart-preview-blue-fill)"
3799
+ d="M2.5,6.5 h44 l-5,7 h-34 l-5,-7 h1"
3800
+ />
3801
+ <path
3802
+ stroke="var(--os-chart-preview-orange-line)"
3803
+ fill="var(--os-chart-preview-orange-fill)"
3804
+ d="M9.5,16.5 h30 l-3,7 h-25 l-3,-7 h1"
3805
+ />
3806
+ <path
3807
+ stroke="var(--os-chart-preview-blue-line)"
3808
+ fill="var(--os-chart-preview-blue-fill)"
3809
+ d="M12.5,26.5 h23 l-8,7 h-7 l-8,-7 h1"
3810
+ />
3811
+ <path
3812
+ stroke="var(--os-chart-preview-orange-line)"
3813
+ fill="var(--os-chart-preview-orange-fill)"
3814
+ d="M21.5,35.5 h5 l-2.5,7 l-2.5,-7 h1"
3815
+ />
3768
3816
  </svg>
3769
3817
  </t>
3770
3818
  <t t-name="o-spreadsheet-ChartPreview.SUNBURST_CHART">
3771
3819
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3772
3820
  <path
3773
- fill="#ffe1c8"
3774
- stroke="#eb6d00"
3821
+ fill="var(--os-chart-preview-orange-fill)"
3822
+ stroke="var(--os-chart-preview-orange-line)"
3775
3823
  d="M24,12 v8A4,4,0,1,0,27.46,26 L41.32, 34 A20,20,0,0,1,8.679,36.856 L14.807,31.713 A12,12,0,0,1,24,12 M34.4,30 A12,12,0,0,1,14.807,31.713"
3776
3824
  />
3777
3825
  <path
3778
- fill="#c4e4ff"
3779
- stroke="#0074d9"
3826
+ fill="var(--os-chart-preview-blue-fill)"
3827
+ stroke="var(--os-chart-preview-blue-line)"
3780
3828
  d="M24,20 v-16 A20 20, 0, 0, 1, 41.32, 34 L27.46,26 A4,4,0,0,0,24,20 M24,12 A12,12,0,0,1,34.4,30 M33.193,16.287 L39.321,11.144 M36,24 L44,24"
3781
3829
  />
3782
3830
  </svg>
3783
3831
  </t>
3784
3832
  <t t-name="o-spreadsheet-ChartPreview.TREE_MAP_CHART">
3785
3833
  <svg viewBox="0 0 48 48" class="o-chart-preview" xmlns="http://www.w3.org/2000/svg">
3786
- <path fill="#444" d="M2,4 h44 v5 h-44"/>
3787
- <path fill="#444" d="M2,10 h28 v5 h-28"/>
3788
- <path fill="#444" d="M31,10 h15 v5 h-15"/>
3789
- <path fill="#0074d9" d="M2,16 h28 v14 h-28"/>
3790
- <path fill="#c4e4ff" d="M3,17 h26 v12 h-26"/>
3791
- <path fill="#0074d9" d="M2,31 h15 v12 h-15"/>
3792
- <path fill="#c4e4ff" d="M3,32 h13 v10 h-13"/>
3793
- <path fill="#0074d9" d="M18,31 h12 v12 h-12"/>
3794
- <path fill="#c4e4ff" d="M19,32 h10 v10 h-10"/>
3795
- <path fill="#eb6d00" d="M31,16 h15 v27 h-15"/>
3796
- <path fill="#ffe1c8" d="M32,17 h13 v25 h-13"/>
3834
+ <path fill="var(--os-gray-600)" d="M2,4 h44 v5 h-44"/>
3835
+ <path fill="var(--os-gray-600)" d="M2,10 h28 v5 h-28"/>
3836
+ <path fill="var(--os-gray-600)" d="M31,10 h15 v5 h-15"/>
3837
+ <path fill="var(--os-chart-preview-blue-line)" d="M2,16 h28 v14 h-28"/>
3838
+ <path fill="var(--os-chart-preview-blue-fill)" d="M3,17 h26 v12 h-26"/>
3839
+ <path fill="var(--os-chart-preview-blue-line)" d="M2,31 h15 v12 h-15"/>
3840
+ <path fill="var(--os-chart-preview-blue-fill)" d="M3,32 h13 v10 h-13"/>
3841
+ <path fill="var(--os-chart-preview-blue-line)" d="M18,31 h12 v12 h-12"/>
3842
+ <path fill="var(--os-chart-preview-blue-fill)" d="M19,32 h10 v10 h-10"/>
3843
+ <path fill="var(--os-chart-preview-orange-line)" d="M31,16 h15 v27 h-15"/>
3844
+ <path fill="var(--os-chart-preview-orange-fill)" d="M32,17 h13 v25 h-13"/>
3845
+ </svg>
3846
+ </t>
3847
+ <t t-name="o-spreadsheet-ChartPreview.CALENDAR_CHART">
3848
+ <svg class="o-chart-preview" viewBox="0 0 48 48">
3849
+ <path fill="#444" d="M3 3h42v42H3zh1v41h40V4H4"/>
3850
+ <path
3851
+ fill="#eb6d00"
3852
+ d="M7 7h7v7H7m0 2h7v7H7m0 2h7v7H7m0 2h7v7H7m9-34h7v7h-7m0 2h7v7h-7m0 2h7v7h-7m0 2h7v7h-7m9-34h7v7h-7m0 11h7v7h-7m0 2h7v7h-7m9-34h7v7h-7m0 2h7v7h-7m0 2h7v7h-7m0 2h7v7h-7"
3853
+ />
3854
+ <path fill="#ffe1c8" d="M8 8h5v5H8m0 13h5v5H8m9 4h5v5h-5m18-5h5v5h-5"/>
3855
+ <path
3856
+ fill="#FFA85C"
3857
+ d="M8 17h5v5H8m9-14h5v5h-5m0 13h5v5h-5m9 4h5v5h-5m9-32h5v5h-5m0 13h5v5h-5"
3858
+ />
3859
+ <path fill="#fff" d="M8 35h5v5H8"/>
3860
+ <path fill="#A34C00" d="M25 16h7v7h-7"/>
3797
3861
  </svg>
3798
3862
  </t>
3799
3863
 
3864
+ <t t-name="o-spreadsheet-CalendarChartDesignPanel">
3865
+ <GeneralDesignEditor t-props="props">
3866
+ <t t-set-slot="general-extension">
3867
+ <Section class="'pt-0'" title.translate="Legend position">
3868
+ <select
3869
+ t-att-value="props.definition.legendPosition ?? 'bottom-left'"
3870
+ class="o-input o-chart-legend-position"
3871
+ t-on-change="this.updateLegendPosition">
3872
+ <option value="none">None</option>
3873
+ <option value="right">Right</option>
3874
+ <option value="left">Left</option>
3875
+ </select>
3876
+ </Section>
3877
+ <Section class="'pt-0'" title.translate="Values">
3878
+ <ChartShowValues t-props="props"/>
3879
+ </Section>
3880
+ </t>
3881
+ </GeneralDesignEditor>
3882
+ <SidePanelCollapsible isInitiallyCollapsed="false" title.translate="Calendar chart options">
3883
+ <t t-set-slot="content">
3884
+ <ColorScalePicker definition="props.definition" onUpdateColorScale.bind="onColormapChange"/>
3885
+ <Section class="'pt-0 o-missing-value'" title.translate="Missing value color">
3886
+ <RoundColorPicker
3887
+ currentColor="selectedMissingValueColor"
3888
+ onColorPicked.bind="updateMissingValueColor"
3889
+ />
3890
+ </Section>
3891
+ </t>
3892
+ </SidePanelCollapsible>
3893
+ <SidePanelCollapsible isInitiallyCollapsed="true" title.translate="Axes">
3894
+ <t t-set-slot="content">
3895
+ <AxisDesignEditor
3896
+ axesList="axesList"
3897
+ chartId="props.chartId"
3898
+ definition="props.definition"
3899
+ updateChart="props.updateChart"
3900
+ />
3901
+ </t>
3902
+ </SidePanelCollapsible>
3903
+ </t>
3904
+
3905
+ <t t-name="o-spreadsheet-CalendarChartConfigPanel">
3906
+ <div>
3907
+ <ChartDataSeries
3908
+ ranges="this.getDataSeriesRanges()"
3909
+ onSelectionChanged.bind="onDataSeriesRangesChanged"
3910
+ onSelectionConfirmed.bind="onDataSeriesConfirmed"
3911
+ onSelectionReordered.bind="onDataSeriesReordered"
3912
+ onSelectionRemoved.bind="onDataSeriesRemoved"
3913
+ maxNumberOfUsedRanges="1"
3914
+ canChangeDatasetOrientation="false"
3915
+ />
3916
+ <ChartLabelRange
3917
+ range="this.getLabelRange()"
3918
+ isInvalid="isLabelInvalid"
3919
+ onSelectionChanged.bind="onLabelRangeChanged"
3920
+ onSelectionConfirmed.bind="onLabelRangeConfirmed"
3921
+ options="this.getLabelRangeOptions()"
3922
+ title.translate="Date range"
3923
+ />
3924
+
3925
+ <Section title.translate="Fields to group by">
3926
+ <div class="d-flex">
3927
+ <span class="w-100">Horizontal axis</span>
3928
+ <select
3929
+ t-att-value="getGroupByType('horizontal')"
3930
+ class="o-input o-horizontal-group-by"
3931
+ t-on-change="ev => this.updateGroupBy('horizontal', ev.target.value)">
3932
+ <t t-foreach="getGroupByOptions()" t-as="groupBy" t-key="groupBy.value">
3933
+ <option
3934
+ t-att-selected="getGroupByType('horizontal') === groupBy.value"
3935
+ t-att-value="groupBy.value">
3936
+ <t t-esc="groupBy.label"/>
3937
+ </option>
3938
+ </t>
3939
+ </select>
3940
+ </div>
3941
+ <div class="d-flex">
3942
+ <span class="w-100">Vertical axis</span>
3943
+ <select
3944
+ t-att-value="getGroupByType('vertical')"
3945
+ class="o-input o-vertical-group-by"
3946
+ t-on-change="ev => this.updateGroupBy('vertical', ev.target.value)">
3947
+ <t t-foreach="getGroupByOptions()" t-as="groupBy" t-key="groupBy.value">
3948
+ <option
3949
+ t-att-selected="getGroupByType('vertical') === groupBy.value"
3950
+ t-att-value="groupBy.value">
3951
+ <t t-esc="groupBy.label"/>
3952
+ </option>
3953
+ </t>
3954
+ </select>
3955
+ </div>
3956
+ </Section>
3957
+
3958
+ <ChartErrorSection t-if="errorMessages.length" messages="errorMessages"/>
3959
+ </div>
3960
+ </t>
3961
+
3800
3962
  <t t-name="o-spreadsheet.TextStyler">
3801
3963
  <div
3802
3964
  class="o-chart-title-designer position-relative d-flex align-items-center"
3803
3965
  t-att-class="props.class">
3804
3966
  <ActionButton action="boldButtonAction" class="'o-hoverable-button'"/>
3805
3967
  <ActionButton action="italicButtonAction" class="'o-hoverable-button'"/>
3806
- <div class="o-divider" t-if="props.hasHorizontalAlign || props.hasVerticalAlign"/>
3968
+ <div
3969
+ class="o-divider border-start"
3970
+ t-if="props.hasHorizontalAlign || props.hasVerticalAlign"
3971
+ />
3807
3972
  <div class="o-dropdown position-relative" t-if="props.hasHorizontalAlign">
3808
3973
  <ActionButton
3809
3974
  action="horizontalAlignButtonAction"
@@ -3842,13 +4007,13 @@
3842
4007
  </div>
3843
4008
  </div>
3844
4009
  </div>
3845
- <div class="o-divider"/>
4010
+ <div class="o-divider border-start"/>
3846
4011
  <FontSizeEditor
3847
4012
  currentFontSize="currentFontSize"
3848
4013
  onFontSizeChanged.bind="this.updateFontSize"
3849
4014
  class="'o-hoverable-button'"
3850
4015
  />
3851
- <div class="o-divider"/>
4016
+ <div class="o-divider border-start"/>
3852
4017
  <ColorPickerWidget
3853
4018
  currentColor="props.style.color ?? props.defaultStyle?.color"
3854
4019
  toggleColorPicker="(ev) => this.toggleDropdownTool('fillChartColorTool', ev)"
@@ -4173,6 +4338,85 @@
4173
4338
  </Section>
4174
4339
  </t>
4175
4340
 
4341
+ <t t-name="o-spreadsheet-ColorScalePicker">
4342
+ <Section class="'pt-0 o-color-scale'" title.translate="Color Scale">
4343
+ <div class="w-100" style="position:relative">
4344
+ <div
4345
+ class="color-scale-container d-flex justify-content-end"
4346
+ t-on-click.stop="onPointerDown">
4347
+ <span class="color-scale-label">
4348
+ <t t-esc="currentColorScaleLabel"/>
4349
+ </span>
4350
+ <div
4351
+ class="color-scale-preview w-100"
4352
+ t-att-data-test-colorscale="selectedColorScale"
4353
+ t-att-style="currentColorScaleStyle"
4354
+ />
4355
+ <span class="ms-1">
4356
+ <t t-call="o-spreadsheet-Icon.CARET_DOWN"/>
4357
+ </span>
4358
+ </div>
4359
+ <Popover t-if="state.popoverProps" t-props="state.popoverProps">
4360
+ <table t-ref="popoverRef" class="bg-white" t-att-style="state.popoverStyle">
4361
+ <tr
4362
+ class="color-scale-container custom-color-scale-container"
4363
+ t-on-click="() => this.onColorScaleChange('custom')">
4364
+ <td class="p-1 text-end">Custom</td>
4365
+ <td class="w-100 p-1">
4366
+ <div
4367
+ class="color-scale-preview o-checkers-background"
4368
+ data-test-id="custom-color-scale"
4369
+ />
4370
+ </td>
4371
+ </tr>
4372
+ <t t-foreach="colorScales" t-as="colorScale" t-key="colorScale.value">
4373
+ <tr
4374
+ class="color-scale-container"
4375
+ t-on-click="() => this.onColorScaleChange(colorScale.value)"
4376
+ t-att-title="colorScale.label">
4377
+ <td class="p-1 text-end">
4378
+ <t t-esc="colorScale.label"/>
4379
+ </td>
4380
+ <td class="w-100 p-1">
4381
+ <div
4382
+ class="color-scale-preview"
4383
+ t-att-data-test-id="colorScale.className"
4384
+ t-att-style="colorScalePreviewStyle(colorScale.value)"
4385
+ />
4386
+ </td>
4387
+ </tr>
4388
+ </t>
4389
+ </table>
4390
+ </Popover>
4391
+ </div>
4392
+ <div class="ps-3 mt-2">
4393
+ <div class="o-min-color d-flex align-items-center mb-2">
4394
+ <RoundColorPicker
4395
+ currentColor="currentColorScale.minColor"
4396
+ onColorPicked="(color) => this.setCustomColorScaleColor('minColor', color)"
4397
+ disableNoColor="true"
4398
+ />
4399
+ <span class="ps-2">Color of minimum values</span>
4400
+ </div>
4401
+ <div class="o-mid-color d-flex align-items-center mb-2">
4402
+ <RoundColorPicker
4403
+ currentColor="currentColorScale.midColor"
4404
+ onColorPicked="(color) => this.setCustomColorScaleColor('midColor', color)"
4405
+ />
4406
+ <span class="ps-2">Color of middle values</span>
4407
+ </div>
4408
+ <div class="o-max-color d-flex align-items-center">
4409
+ <RoundColorPicker
4410
+ currentColor="currentColorScale.maxColor"
4411
+ onColorPicked="(color) => this.setCustomColorScaleColor('maxColor', color)"
4412
+ disableNoColor="true"
4413
+ />
4414
+ <span class="ps-2">Color of maximum values</span>
4415
+ </div>
4416
+ </div>
4417
+ </Section>
4418
+ </t>
4419
+
4176
4420
  <t t-name="o-spreadsheet.ChartTitle">
4177
4421
  <Section class="'o-chart-title'" title="props.name">
4178
4422
  <TextInput
@@ -4205,6 +4449,7 @@
4205
4449
  updateStyle.bind="updateAxisTitleStyle"
4206
4450
  name="editor_label"
4207
4451
  style="axisTitleStyle"
4452
+ placeholder.translate="Add a Title"
4208
4453
  defaultStyle="{align: 'center', color: '', fontSize: defaultFontSize}"
4209
4454
  />
4210
4455
  </t>
@@ -4261,7 +4506,7 @@
4261
4506
  <div class="o-section pb-1 pt-0">
4262
4507
  <div class="o-section-title">Carousel Sections</div>
4263
4508
  </div>
4264
- <div class="o-carousel-preview-list overflow-auto" t-ref="previewList">
4509
+ <div class="o-carousel-preview-list overflow-auto bg-white" t-ref="previewList">
4265
4510
  <t t-foreach="carouselItems" t-as="item" t-key="getItemId(item)">
4266
4511
  <div
4267
4512
  class="o-carousel-preview border-bottom pe-2 position-relative w-100 d-flex align-items-center"
@@ -4528,7 +4773,10 @@
4528
4773
 
4529
4774
  <t t-name="o-spreadsheet-Menu-Popover">
4530
4775
  <Popover t-if="props.menuItems" t-props="popoverProps">
4531
- <div t-ref="menu" class="o-menu-wrapper" t-on-mouseover="() => this.onMouseOverMainMenu()">
4776
+ <div
4777
+ t-ref="menu"
4778
+ class="o-menu-wrapper bg-white"
4779
+ t-on-mouseover="() => this.onMouseOverMainMenu()">
4532
4780
  <Menu t-props="menuProps"/>
4533
4781
  </div>
4534
4782
  <MenuPopover
@@ -4550,7 +4798,7 @@
4550
4798
  <t t-name="o-spreadsheet-Menu">
4551
4799
  <div
4552
4800
  t-ref="menu"
4553
- class="o-menu"
4801
+ class="o-menu bg-white"
4554
4802
  t-att-style="menuStyle"
4555
4803
  t-on-scroll="props.onScroll"
4556
4804
  t-on-wheel.stop=""
@@ -4558,7 +4806,7 @@
4558
4806
  t-on-click.stop=""
4559
4807
  t-on-contextmenu.prevent="">
4560
4808
  <t t-foreach="menuItemsAndSeparators" t-as="menuItem" t-key="menuItem_index">
4561
- <div t-if="menuItem === 'separator'" class="o-separator"/>
4809
+ <div t-if="menuItem === 'separator'" class="o-separator border-bottom"/>
4562
4810
  <t t-else="">
4563
4811
  <t t-set="isMenuRoot" t-value="isRoot(menuItem)"/>
4564
4812
  <t t-set="isMenuEnabled" t-value="isEnabled(menuItem)"/>
@@ -4607,7 +4855,7 @@
4607
4855
 
4608
4856
  <t t-name="o-spreadsheet-LinkEditor">
4609
4857
  <div
4610
- class="o-link-editor"
4858
+ class="o-link-editor bg-white rounded"
4611
4859
  t-on-click.stop="() => this.menu.isOpen=false"
4612
4860
  t-on-keydown="onKeyDown">
4613
4861
  <div class="o-section">
@@ -4649,7 +4897,7 @@
4649
4897
  <button
4650
4898
  t-if="!link.url"
4651
4899
  t-on-click.stop="openMenu"
4652
- class="o-special-link o-button-icon"
4900
+ class="o-special-link o-button-icon bg-white"
4653
4901
  t-ref="linkEditorMenuButton">
4654
4902
  <t t-call="o-spreadsheet-Icon.LIST"/>
4655
4903
  </button>
@@ -4672,7 +4920,7 @@
4672
4920
  </t>
4673
4921
 
4674
4922
  <t t-name="o-spreadsheet-LinkDisplay">
4675
- <div class="o-link-tool d-flex align-items-center">
4923
+ <div class="o-link-tool d-flex align-items-center bg-white rounded">
4676
4924
  <!-- t-key to prevent owl from re-using the previous img element when the link changes.
4677
4925
  The wrong/previous image would be displayed while the new one loads -->
4678
4926
  <img
@@ -5665,6 +5913,7 @@
5665
5913
  <div class="o-icon">
5666
5914
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 224 256">
5667
5915
  <path
5916
+ fill="currentColor"
5668
5917
  d="M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"
5669
5918
  transform="translate(0, 9) scale(0.5,0.5)"
5670
5919
  />
@@ -5768,9 +6017,54 @@
5768
6017
  />
5769
6018
  </svg>
5770
6019
  </t>
6020
+ <t t-name="o-spreadsheet-Icon.DARK_MODE">
6021
+ <div class="o-icon">
6022
+ <i class="fa fa-moon-o"/>
6023
+ </div>
6024
+ </t>
6025
+ <t t-name="o-spreadsheet-Icon.ROTATION-0">
6026
+ <svg
6027
+ width="18"
6028
+ height="18"
6029
+ viewBox="0 0 18 18"
6030
+ transform="rotate(270)"
6031
+ xmlns="http://www.w3.org/2000/svg">
6032
+ <path
6033
+ d="M5 2h1v12h1.5l-2 2-2-2H5m6-5h1v5h1.5l-2 2-2-2H11M8 2l7 2.8V6L8 8.8l-.43-1.12 1.9-.7V3.8l-1.9-.7L8 1.98m2.7 2.25v2.3l2.8-1.1z"
6034
+ />
6035
+ </svg>
6036
+ </t>
6037
+ <t t-name="o-spreadsheet-Icon.ROTATION-45">
6038
+ <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
6039
+ <path
6040
+ d="m1.95 6.879.707-.707 8.485 8.485 1.06-1.06v2.828H9.375l1.061-1.061m.706-7.778.707-.707 3.536 3.535 1.06-1.06v2.828h-2.828l1.06-1.06M4.071 4.757l6.93-2.97.848.849-2.97 6.93-1.096-.488.849-1.839-2.249-2.248-1.838.848-.488-1.096m3.5-.318 1.626 1.626 1.203-2.757z"
6041
+ />
6042
+ </svg>
6043
+ </t>
6044
+ <t t-name="o-spreadsheet-Icon.ROTATION-90">
6045
+ <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
6046
+ <path
6047
+ d="M5 2h1v12h1.5l-2 2-2-2H5m6-5h1v5h1.5l-2 2-2-2H11M8 2l7 2.8V6L8 8.8l-.43-1.12 1.9-.7V3.8l-1.9-.7L8 1.98m2.7 2.25v2.3l2.8-1.1z"
6048
+ />
6049
+ </svg>
6050
+ </t>
6051
+ <t t-name="o-spreadsheet-Icon.ROTATION-270">
6052
+ <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
6053
+ <path
6054
+ d="M13 16h-1V4h-1.5l2-2 2 2H13M7 9H6V4H4.5l2-2 2 2H7m3 12-7-2.8V12l7-2.8.43 1.12-1.9.7v3.18l1.9.7-.43 1.12m-2.7-2.25v-2.3l-2.8 1.1z"
6055
+ />
6056
+ </svg>
6057
+ </t>
6058
+ <t t-name="o-spreadsheet-Icon.ROTATION-315">
6059
+ <svg width="18" height="18" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
6060
+ <path
6061
+ d="m6.879 16.55-.707-.707 8.485-8.485-1.06-1.06h2.828v2.828l-1.061-1.061m-7.778-.707-.707-.707 3.535-3.536-1.06-1.06h2.828v2.828l-1.06-1.06M4.757 14.429l-2.97-6.93.849-.848 6.93 2.97-.488 1.096-1.839-.849-2.248 2.249.848 1.838-1.096.488m-.318-3.5 1.626-1.626-2.757-1.203z"
6062
+ />
6063
+ </svg>
6064
+ </t>
5771
6065
 
5772
6066
  <t t-name="o-spreadsheet-IconPicker">
5773
- <div class="o-icon-picker">
6067
+ <div class="o-icon-picker bg-white">
5774
6068
  <t t-foreach="iconSets" t-as="iconSet" t-key="iconSet">
5775
6069
  <div class="o-cf-icon-line">
5776
6070
  <div
@@ -6241,7 +6535,7 @@
6241
6535
  </t>
6242
6536
  <VerticalScrollBar topOffset="HEADER_HEIGHT"/>
6243
6537
  <HorizontalScrollBar leftOffset="HEADER_WIDTH"/>
6244
- <div class="o-scrollbar corner"/>
6538
+ <div class="o-scrollbar corner border-top border-start"/>
6245
6539
  </div>
6246
6540
  </t>
6247
6541
 
@@ -6311,7 +6605,7 @@
6311
6605
  </i>
6312
6606
  </div>
6313
6607
  <div
6314
- class="o-filter-menu-list d-flex flex-column"
6608
+ class="o-filter-menu-list d-flex flex-column border"
6315
6609
  t-ref="filterValueList"
6316
6610
  t-on-click="this.clearScrolledToValue"
6317
6611
  t-on-scroll="this.clearScrolledToValue">
@@ -6354,8 +6648,9 @@
6354
6648
  name="value.toString()"
6355
6649
  value="this.props.isChecked"
6356
6650
  onChange="this.props.onClick"
6357
- className="'p-2 w-100 pe-auto text-truncate'"
6651
+ className="'p-2 w-100 pe-auto'"
6358
6652
  label="value.toString()"
6653
+ title="value.toString()"
6359
6654
  />
6360
6655
  </div>
6361
6656
  </t>
@@ -6395,7 +6690,7 @@
6395
6690
  </div>
6396
6691
  </t>
6397
6692
  <div class="o-filter-menu-content">
6398
- <div class="o-separator"/>
6693
+ <div class="o-separator border-bottom"/>
6399
6694
  <SidePanelCollapsible
6400
6695
  isInitiallyCollapsed="filterValueType !== 'criterion'"
6401
6696
  title.translate="Filter by criterion">
@@ -6744,7 +7039,7 @@
6744
7039
  </t>
6745
7040
 
6746
7041
  <t t-name="o-spreadsheet-ErrorToolTip">
6747
- <div class="o-error-tooltip">
7042
+ <div class="o-error-tooltip bg-white">
6748
7043
  <t t-if="evaluationError">
6749
7044
  <div class="o-error-tooltip-title fw-bold text-danger">Error</div>
6750
7045
  <div class="o-error-tooltip-message">
@@ -6821,7 +7116,7 @@
6821
7116
  <t t-name="o-spreadsheet-TopBarComposer">
6822
7117
  <div class="o-topbar-composer-container w-100">
6823
7118
  <div
6824
- class="o-topbar-composer position-relative bg-white user-select-text d-flex"
7119
+ class="o-topbar-composer position-relative bg-white user-select-text d-flex border"
6825
7120
  t-att-class="{
6826
7121
  'o-topbar-composer-readonly': env.model.getters.isReadonly(),
6827
7122
  'o-topbar-composer-active': focus !== 'inactive',
@@ -6844,7 +7139,7 @@
6844
7139
 
6845
7140
  <t t-name="o-spreadsheet-StandaloneComposer">
6846
7141
  <div
6847
- class="o-standalone-composer"
7142
+ class="o-standalone-composer border-bottom"
6848
7143
  t-on-click.stop=""
6849
7144
  t-att-class="containerClass"
6850
7145
  t-att-title="props.title">
@@ -6861,7 +7156,7 @@
6861
7156
 
6862
7157
  <t t-name="o-spreadsheet-SpeechBubble">
6863
7158
  <t t-portal="'.o-spreadsheet'">
6864
- <div class="o-speech-bubble position-absolute px-3" t-ref="bubble">
7159
+ <div class="o-speech-bubble position-absolute px-3 border" t-ref="bubble">
6865
7160
  <div class="o-speech-content text-truncate pb-1" t-esc="props.content"/>
6866
7161
  </div>
6867
7162
  </t>
@@ -6869,7 +7164,7 @@
6869
7164
 
6870
7165
  <t t-name="o-spreadsheet-GridComposer">
6871
7166
  <div
6872
- class="o-cell-reference"
7167
+ class="o-cell-reference rounded"
6873
7168
  t-if="shouldDisplayCellReference"
6874
7169
  t-att-style="cellReferenceStyle"
6875
7170
  t-esc="cellReference"
@@ -6882,7 +7177,7 @@
6882
7177
  <t t-name="o-spreadsheet-FunctionDescriptionProvider">
6883
7178
  <div class="o-formula-assistant-container user-select-none shadow">
6884
7179
  <t t-set="context" t-value="getContext()"/>
6885
- <div class="o-formula-assistant" t-if="context.functionDescription.name">
7180
+ <div class="o-formula-assistant bg-white" t-if="context.functionDescription.name">
6886
7181
  <div class="o-formula-assistant-head d-flex flex-row justify-content-between">
6887
7182
  <div>
6888
7183
  <t t-foreach="formulaHeaderContent" t-as="part" t-key="part_index">
@@ -6903,7 +7198,7 @@
6903
7198
  </div>
6904
7199
 
6905
7200
  <Collapse isCollapsed="state.isCollapsed">
6906
- <div class="o-formula-assistant-core pb-3 m-3">
7201
+ <div class="o-formula-assistant-core pb-3 m-3 border-bottom">
6907
7202
  <div class="o-formula-assistant-gray">ABOUT</div>
6908
7203
  <div t-esc="context.functionDescription.description"/>
6909
7204
  </div>
@@ -7001,7 +7296,7 @@
7001
7296
  t-on-click="closeAssistant"
7002
7297
  class="fa-stack position-absolute top-0 start-100 translate-middle fs-4">
7003
7298
  <i class="fa fa-circle fa-stack-1x fa-inverse"/>
7004
- <i class="fa fa-times-circle fa-stack-1x text-muted"/>
7299
+ <i class="fa fa-times-circle fa-stack-1x"/>
7005
7300
  </span>
7006
7301
  <div class="o-composer-assistant overflow-auto" t-att-style="assistantStyle">
7007
7302
  <FunctionDescriptionProvider
@@ -7035,7 +7330,7 @@
7035
7330
  <div
7036
7331
  t-ref="autoCompleteList"
7037
7332
  t-att-class="{
7038
- 'o-autocomplete-dropdown': props.proposals.length}">
7333
+ 'o-autocomplete-dropdown bg-white': props.proposals.length}">
7039
7334
  <t t-foreach="props.proposals" t-as="proposal" t-key="proposal.text + proposal_index">
7040
7335
  <div
7041
7336
  class="d-flex flex-column text-start"
@@ -7088,7 +7383,7 @@
7088
7383
 
7089
7384
  <t t-name="o-spreadsheet-ColorPicker">
7090
7385
  <Popover t-props="popoverProps">
7091
- <div class="o-color-picker" t-on-click.stop="" t-att-style="colorPickerStyle">
7386
+ <div class="o-color-picker bg-white" t-on-click.stop="" t-att-style="colorPickerStyle">
7092
7387
  <div class="o-color-picker-section-name">Standard</div>
7093
7388
  <div class="colors-grid">
7094
7389
  <div
@@ -7107,14 +7402,14 @@
7107
7402
  </div>
7108
7403
  </div>
7109
7404
  </div>
7110
- <div class="o-separator"/>
7405
+ <div class="o-separator border-bottom"/>
7111
7406
  <div
7112
7407
  class="o-color-picker-section-name o-color-picker-toggler"
7113
7408
  t-on-click="toggleColorPicker">
7114
7409
  <span>Custom</span>
7115
7410
  </div>
7116
7411
  <div class="colors-grid o-color-picker-toggler" t-on-click.stop="toggleColorPicker">
7117
- <div class="o-color-picker-line-item o-color-picker-toggler-button">
7412
+ <div class="o-color-picker-line-item bg-white o-color-picker-toggler-button">
7118
7413
  <div class="o-color-picker-toggler-sign">
7119
7414
  <t t-call="o-spreadsheet-Icon.PLUS"/>
7120
7415
  </div>
@@ -7146,7 +7441,7 @@
7146
7441
  <div class="magnifier pe-none" t-att-style="pointerStyle"/>
7147
7442
  </div>
7148
7443
  <div class="o-hue-container" t-on-pointerdown="dragHuePointer">
7149
- <div class="o-hue-picker" t-on-click.stop=""/>
7444
+ <div class="o-hue-picker border rounded" t-on-click.stop=""/>
7150
7445
  <div class="o-hue-slider pe-none" t-att-style="sliderStyle">
7151
7446
  <t t-call="o-spreadsheet-Icon.CARET_UP"/>
7152
7447
  </div>
@@ -7154,16 +7449,17 @@
7154
7449
  <div class="o-custom-input-preview">
7155
7450
  <input
7156
7451
  type="text"
7452
+ class="border rounded"
7157
7453
  t-att-class="{'o-wrong-color': !isHexColorInputValid }"
7158
7454
  t-on-click.stop=""
7159
7455
  t-att-value="state.customHexColor"
7160
7456
  t-on-input="setHexColor"
7161
7457
  />
7162
- <div class="o-color-preview" t-att-style="colorPreviewStyle"/>
7458
+ <div class="o-color-preview border rounded" t-att-style="colorPreviewStyle"/>
7163
7459
  </div>
7164
7460
  <div class="o-custom-input-buttons">
7165
7461
  <button
7166
- class="o-add-button"
7462
+ class="o-add-button border rounded"
7167
7463
  t-att-class="{'o-disabled': !state.customHexColor or !isHexColorInputValid}"
7168
7464
  t-on-click.stop="addCustomColor">
7169
7465
  Add
@@ -7171,9 +7467,9 @@
7171
7467
  </div>
7172
7468
  </div>
7173
7469
  <t t-if="!props.disableNoColor">
7174
- <div class="o-separator"/>
7470
+ <div class="o-separator border-bottom"/>
7175
7471
  <div class="o-buttons">
7176
- <button t-on-click="resetColor" class="o-cancel">No Color</button>
7472
+ <button t-on-click="resetColor" class="o-cancel border rounded">No Color</button>
7177
7473
  </div>
7178
7474
  </t>
7179
7475
  </div>
@@ -7186,7 +7482,7 @@
7186
7482
 
7187
7483
  <t t-name="o-spreadsheet-BottomBar">
7188
7484
  <div
7189
- class="o-spreadsheet-bottom-bar o-two-columns d-flex flex-fill align-items-center overflow-hidden"
7485
+ class="o-spreadsheet-bottom-bar o-two-columns d-flex flex-fill align-items-center overflow-hidden border-top"
7190
7486
  t-on-click="props.onClick"
7191
7487
  t-ref="bottomBar"
7192
7488
  t-on-contextmenu.prevent="">
@@ -7298,7 +7594,7 @@
7298
7594
  <t t-name="o-spreadsheet-BottomBarSheet">
7299
7595
  <Ripple>
7300
7596
  <div
7301
- class="o-sheet d-flex align-items-center user-select-none text-nowrap "
7597
+ class="o-sheet d-flex align-items-center user-select-none text-nowrap border-start border-end"
7302
7598
  tabindex="-1"
7303
7599
  composerFocusableElement="true"
7304
7600
  t-on-pointerdown="(ev) => this.onMouseDown(ev)"
@@ -7371,7 +7667,7 @@
7371
7667
  <t t-set="border_color">Border Color</t>
7372
7668
  <Popover t-props="popoverProps">
7373
7669
  <div
7374
- class="d-flex o-border-selector"
7670
+ class="d-flex o-border-selector bg-white"
7375
7671
  t-on-click.stop=""
7376
7672
  t-att-class="props.class ? props.class : ''">
7377
7673
  <div class="o-border-selector-section">
@@ -7392,7 +7688,7 @@
7392
7688
  </span>
7393
7689
  </div>
7394
7690
  </div>
7395
- <div class="o-divider"/>
7691
+ <div class="o-divider border-end"/>
7396
7692
  <div class="o-border-selector-section">
7397
7693
  <div
7398
7694
  class="m-0 p-0 d-flex align-items-center justify-content-center o-with-color o-hoverable-button"
@@ -7420,7 +7716,7 @@
7420
7716
  <Popover
7421
7717
  t-props="lineStylePickerPopoverProps"
7422
7718
  t-if="state.activeTool === 'borderTypeTool'">
7423
- <div class="o-border-style-dropdown">
7719
+ <div class="o-border-style-dropdown bg-white">
7424
7720
  <t t-foreach="borderStyles" t-as="borderStyle" t-key="borderStyle">
7425
7721
  <div
7426
7722
  t-att-title="borderStyle"