@odoo/o-spreadsheet 19.5.0-alpha.12 → 19.5.0-alpha.14

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.
Files changed (39) hide show
  1. package/dist/o_spreadsheet.cjs +625 -563
  2. package/dist/o_spreadsheet.css +38 -22
  3. package/dist/o_spreadsheet.esm.js +625 -563
  4. package/dist/o_spreadsheet.iife.js +625 -563
  5. package/dist/o_spreadsheet.min.iife.js +300 -300
  6. package/dist/o_spreadsheet.xml +80 -67
  7. package/dist/types/components/figures/figure_container/figure_container.d.ts +6 -2
  8. package/dist/types/components/helpers/figure_drag_helper.d.ts +3 -3
  9. package/dist/types/components/helpers/figure_snap_helper.d.ts +8 -3
  10. package/dist/types/components/link/link_editor/link_editor.d.ts +1 -0
  11. package/dist/types/components/side_panel/carousel_panel/carousel_panel.d.ts +1 -1
  12. package/dist/types/components/side_panel/chart/chart_type_picker_popover/chart_type_picker_popover.d.ts +12 -12
  13. package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_config_panel.d.ts +6 -10
  14. package/dist/types/components/side_panel/find_and_replace/find_and_replace.d.ts +1 -0
  15. package/dist/types/components/side_panel/find_and_replace/find_and_replace_store.d.ts +2 -1
  16. package/dist/types/components/side_panel/table_style_editor_panel/table_style_editor_panel.d.ts +2 -0
  17. package/dist/types/constants.d.ts +0 -1
  18. package/dist/types/helpers/color_themes.d.ts +2 -0
  19. package/dist/types/helpers/figures/chart.d.ts +3 -2
  20. package/dist/types/helpers/figures/charts/chart_common.d.ts +2 -2
  21. package/dist/types/helpers/figures/charts/chart_ui_common.d.ts +3 -3
  22. package/dist/types/helpers/figures/charts/runtime/chart_data_extractor.d.ts +11 -10
  23. package/dist/types/helpers/owl3_helpers.d.ts +4 -0
  24. package/dist/types/index.d.ts +0 -1
  25. package/dist/types/owl3_compatibility_layer.d.ts +1 -14
  26. package/dist/types/plugins/ui_core_views/evaluation_chart.d.ts +6 -5
  27. package/dist/types/plugins/ui_feature/chart_ui.d.ts +6 -0
  28. package/dist/types/plugins/ui_feature/color_theme.d.ts +0 -3
  29. package/dist/types/registries/chart_registry.d.ts +2 -2
  30. package/dist/types/registries/figures_registry.d.ts +1 -1
  31. package/dist/types/stores/main_viewport_store.d.ts +3 -0
  32. package/dist/types/stores/viewports_store.d.ts +0 -1
  33. package/dist/types/types/chart/chart.d.ts +3 -1
  34. package/dist/types/types/chart/scorecard_chart.d.ts +3 -4
  35. package/dist/types/types/commands.d.ts +15 -17
  36. package/dist/types/types/getters.d.ts +2 -1
  37. package/dist/types/types/model.d.ts +2 -1
  38. package/dist/types/types/rendering.d.ts +2 -0
  39. package/package.json +4 -3
@@ -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.5.0-alpha.12
5
- @date 2026-08-19T09:47:04.804Z
6
- @hash 68ca68e
4
+ @version 19.5.0-alpha.14
5
+ @date 2026-08-29T09:17:10.223Z
6
+ @hash e8ad6ad
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -16,7 +16,7 @@
16
16
  <t t-else="" t-call="o-spreadsheet-Icon.TRIANGLE_EXCLAMATION"/>
17
17
  </div>
18
18
  <div class="d-flex flex-column overflow-hidden">
19
- <span class="ps-2 text-truncate" t-out="msg"/>
19
+ <span class="ps-2" t-out="msg"/>
20
20
  </div>
21
21
  </div>
22
22
  </div>
@@ -665,7 +665,7 @@
665
665
  <div class="d-flex flex-fill align-items-center bottom-bar-menu border-top border-bottom">
666
666
  <Ripple>
667
667
  <div class="py-1 px-1 mx-2 ribbon-toggler" t-on-click="this.toggleRibbon">
668
- <i class="o-icon oi oi-filled" data-icon="settings"/>
668
+ <i class="o-icon oi oi-filled" data-icon="settings_f"/>
669
669
  </div>
670
670
  </Ripple>
671
671
  <BottomBar onClick="this.props.onClick"/>
@@ -697,7 +697,11 @@
697
697
  <t t-name="o-spreadsheet-TableStyleEditorPanel">
698
698
  <div class="o-table-style-editor-panel">
699
699
  <Section title.translate="Style name">
700
- <input type="text" class="o-input" t-custom-model="this.state.styleName"/>
700
+ <TextInput
701
+ value="this.state.styleName"
702
+ onChange="(value) => this.state.styleName = value"
703
+ alwaysShowBorder="true"
704
+ />
701
705
  </Section>
702
706
  <Section class="'pt-1'" title.translate="Style color">
703
707
  <RoundColorPicker
@@ -925,7 +929,7 @@
925
929
  t-if="this.props.isPinned"
926
930
  class="o-pin-panel o-sidePanelAction ms-auto rounded active"
927
931
  t-on-click="this.props.onTogglePinPanel">
928
- <i class="oi" data-icon="keep"/>
932
+ <i class="oi" data-icon="push_pin"/>
929
933
  </div>
930
934
  <div
931
935
  class="o-sidePanelClose o-sidePanelAction rounded"
@@ -970,7 +974,7 @@
970
974
  t-if="this.props.isPinned"
971
975
  class="o-pin-panel o-sidePanelAction ms-auto rounded active"
972
976
  t-on-click="this.props.onTogglePinPanel">
973
- <i class="oi" data-icon="keep"/>
977
+ <i class="oi" data-icon="push_pin"/>
974
978
  </div>
975
979
  <div
976
980
  class="o-sidePanelClose o-sidePanelAction rounded mb-1"
@@ -1089,17 +1093,17 @@
1089
1093
  <div class="o-pivot-panel d-flex flex-column h-100">
1090
1094
  <div class="o-panel d-flex">
1091
1095
  <div
1092
- class="o-sidePanel-tab o-panel-configuration d-flew flex-grow-1 text-center"
1096
+ class="o-sidePanel-tab o-panel-configuration d-flex flex-grow-1 justify-content-center"
1093
1097
  t-att-class="this.state.panel !== 'configuration' ? 'inactive' : ''"
1094
1098
  t-on-click="this.switchPanel.bind(this, 'configuration')">
1095
- <i class="oi me-1" data-icon="tune"/>
1099
+ <i class="oi me-2" data-icon="tune"/>
1096
1100
  Configuration
1097
1101
  </div>
1098
1102
  <div
1099
- class="o-sidePanel-tab o-panel-design d-flew flex-grow-1 text-center"
1103
+ class="o-sidePanel-tab o-panel-design d-flex flex-grow-1 justify-content-center"
1100
1104
  t-att-class="this.state.panel !== 'design' ? 'inactive' : ''"
1101
1105
  t-on-click="this.switchPanel.bind(this, 'design')">
1102
- <i class="oi me-1" data-icon="design_services"/>
1106
+ <i class="oi me-2" data-icon="design_services"/>
1103
1107
  Design
1104
1108
  </div>
1105
1109
  </div>
@@ -1511,14 +1515,14 @@
1511
1515
  <t t-if="measure.isHidden" t-set="hideTitle">Show</t>
1512
1516
  <t t-else="" t-set="hideTitle">Hide</t>
1513
1517
  <i
1514
- t-att-data-icon="measure.isHidden ? 'visibility_off' : 'visibility'"
1518
+ t-att-data-icon="measure.isHidden ? 'visibility_off_f' : 'visibility_f'"
1515
1519
  t-att-title="hideTitle"
1516
- class="o-button-icon pe-1 ps-2 oi"
1520
+ class="o-button-icon pe-1 ps-1 oi"
1517
1521
  t-on-click="this.toggleMeasureVisibility"
1518
1522
  />
1519
1523
  <i
1520
- class="o-button-icon pe-1 ps-2 oi oi-filled"
1521
- data-icon="settings"
1524
+ class="o-button-icon pe-1 ps-1 oi oi-filled"
1525
+ data-icon="settings_f"
1522
1526
  title="Show values as"
1523
1527
  t-on-click="this.openShowValuesAs"
1524
1528
  />
@@ -1606,8 +1610,8 @@
1606
1610
  <div class="d-flex flex-rows">
1607
1611
  <t t-call-slot="upper-right-icons"/>
1608
1612
  <i
1609
- class="o-button-icon oi oi-filled pe-1 ps-2"
1610
- data-icon="delete"
1613
+ class="o-button-icon oi oi-filled pe-1 ps-1"
1614
+ data-icon="delete_f"
1611
1615
  t-if="this.props.onRemoved"
1612
1616
  t-on-click="() => this.props.onRemoved(this.props.dimension)"
1613
1617
  />
@@ -1722,7 +1726,7 @@
1722
1726
  />
1723
1727
  <i
1724
1728
  class="o-button-icon ps-3 oi oi-filled"
1725
- data-icon="delete"
1729
+ data-icon="delete_f"
1726
1730
  t-on-click="() => this.onDeleteGroup(group_index)"
1727
1731
  />
1728
1732
  </div>
@@ -1757,8 +1761,10 @@
1757
1761
  <div class="d-flex flex-column gap-1">
1758
1762
  <div class="d-flex justify-content-center mb-3">
1759
1763
  <button class="o-button" t-on-click="this.startProfiling">
1760
- <i class="oi me-1" data-icon="refresh"/>
1761
- Re-analyze
1764
+ <div class="d-flex justify-content-center align-content-center">
1765
+ <i class="oi me-1" data-icon="refresh"/>
1766
+ Re-analyze
1767
+ </div>
1762
1768
  </button>
1763
1769
  </div>
1764
1770
  <div class="d-flex justify-content-between">
@@ -2070,7 +2076,8 @@
2070
2076
  type="text"
2071
2077
  class="o-input o-input-without-count o-replace"
2072
2078
  t-on-keydown="this.onKeydownReplace"
2073
- t-custom-model="this.store.toReplace"
2079
+ t-att-value="this.store.toReplace"
2080
+ t-on-input="this.onReplaceInput"
2074
2081
  placeholder="e.g. 'replace me'"
2075
2082
  />
2076
2083
  </div>
@@ -2971,7 +2978,7 @@
2971
2978
  <t t-name="o-spreadsheet-CogWheelMenu">
2972
2979
  <span
2973
2980
  class="oi oi-filled os-cog-wheel-menu-icon o-button-icon"
2974
- data-icon="settings"
2981
+ data-icon="settings_f"
2975
2982
  t-on-click="this.toggleMenu"
2976
2983
  t-ref="this.buttonRef"
2977
2984
  />
@@ -3484,23 +3491,22 @@
3484
3491
  <t t-name="o-spreadsheet-ScorecardChartConfigPanel">
3485
3492
  <div>
3486
3493
  <Section class="'o-data-series'" title.translate="Key value">
3487
- <SelectionInput
3488
- ranges="[this.getKeyValueRange()]"
3489
- isInvalid="this.isKeyValueInvalid"
3490
- hasSingleRange="true"
3491
- required="true"
3492
- onSelectionChanged="(ranges) => this.onKeyValueRangeChanged(ranges)"
3493
- onSelectionConfirmed="() => this.updateKeyValueRange()"
3494
+ <StandaloneComposer
3495
+ placeholder.translate="Formula"
3496
+ title.translate=""
3497
+ composerContent="this.getKeyValue()"
3498
+ defaultRangeSheetId="this.env.model.getters.getActiveSheetId()"
3499
+ onConfirm.bind="this.onConfirmKeyValue"
3494
3500
  />
3495
3501
  </Section>
3496
3502
  <Section class="'o-data-labels'" title.translate="Baseline configuration">
3497
3503
  <div class="o-section-subtitle">Value</div>
3498
- <SelectionInput
3499
- ranges="[this.getBaselineRange()]"
3500
- isInvalid="this.isBaselineInvalid"
3501
- hasSingleRange="true"
3502
- onSelectionChanged="(ranges) => this.onBaselineRangeChanged(ranges)"
3503
- onSelectionConfirmed="() => this.updateBaselineRange()"
3504
+ <StandaloneComposer
3505
+ placeholder.translate="Formula"
3506
+ title.translate=""
3507
+ composerContent="this.getBaseline()"
3508
+ defaultRangeSheetId="this.env.model.getters.getActiveSheetId()"
3509
+ onConfirm.bind="this.onConfirmBaseline"
3504
3510
  />
3505
3511
  <div class="o-section-subtitle">Format</div>
3506
3512
  <Select
@@ -3592,17 +3598,17 @@
3592
3598
  <div class="o-chart d-flex flex-column h-100" t-if="this.chartId">
3593
3599
  <div class="o-panel d-flex">
3594
3600
  <div
3595
- class="o-sidePanel-tab o-panel-configuration d-flew flex-grow-1 text-center"
3601
+ class="o-sidePanel-tab o-panel-configuration d-flex flex-grow-1 justify-content-center"
3596
3602
  t-att-class="this.store.panel !== 'configuration' ? 'inactive' : ''"
3597
3603
  t-on-click="this.switchPanel.bind(this, 'configuration')">
3598
- <i class="oi me-1" data-icon="tune"/>
3604
+ <i class="oi me-2" data-icon="tune"/>
3599
3605
  Configuration
3600
3606
  </div>
3601
3607
  <div
3602
- class="o-sidePanel-tab o-panel-design d-flew flex-grow-1 text-center"
3608
+ class="o-sidePanel-tab o-panel-design d-flex flex-grow-1 justify-content-center"
3603
3609
  t-att-class="this.store.panel !== 'design' ? 'inactive' : ''"
3604
3610
  t-on-click="this.switchPanel.bind(this, 'design')">
3605
- <i class="oi me-1" data-icon="design_services"/>
3611
+ <i class="oi me-2" data-icon="design_services"/>
3606
3612
  Design
3607
3613
  </div>
3608
3614
  </div>
@@ -5843,7 +5849,8 @@
5843
5849
  title="Link label"
5844
5850
  placeholder="e.g. 'Link label'"
5845
5851
  class="o-input"
5846
- t-custom-model="this.state.label"
5852
+ t-att-value="this.state.label"
5853
+ t-on-input="(ev) => this.state.label = ev.target.value"
5847
5854
  />
5848
5855
  </div>
5849
5856
 
@@ -5860,8 +5867,8 @@
5860
5867
  placeholder="e.g. 'http://www.odoo.com'"
5861
5868
  title="Link URL"
5862
5869
  t-ref="this.urlInput"
5863
- t-custom-model="this.state.url"
5864
- t-on-input="this.computeLinks"
5870
+ t-att-value="this.state.url"
5871
+ t-on-input="this.onLinkUrlInput"
5865
5872
  />
5866
5873
  </t>
5867
5874
  <t t-else="">
@@ -6562,7 +6569,7 @@
6562
6569
  </t>
6563
6570
  <t t-name="o-spreadsheet-Icon.FULLSCREEN_IN">
6564
6571
  <div class="o-icon">
6565
- <i class="oi" data-icon="open_in_full"/>
6572
+ <i class="oi" data-icon="expand_content"/>
6566
6573
  </div>
6567
6574
  </t>
6568
6575
  <t t-name="o-spreadsheet-Icon.EDIT">
@@ -6607,7 +6614,7 @@
6607
6614
  </t>
6608
6615
  <t t-name="o-spreadsheet-Icon.TRASH_FILLED">
6609
6616
  <div class="o-icon">
6610
- <i class="oi oi-filled" data-icon="delete"/>
6617
+ <i class="oi oi-filled" data-icon="delete_f"/>
6611
6618
  </div>
6612
6619
  </t>
6613
6620
  <t t-name="o-spreadsheet-Icon.REFRESH">
@@ -6743,7 +6750,7 @@
6743
6750
  </t>
6744
6751
  <t t-name="o-spreadsheet-Icon.FILTER_ICON_ACTIVE">
6745
6752
  <div class="o-icon filter-icon-active">
6746
- <i class="oi oi-filled" data-icon="filter_alt"/>
6753
+ <i class="oi oi-filled" data-icon="filter_alt_f"/>
6747
6754
  </div>
6748
6755
  </t>
6749
6756
  <t t-name="o-spreadsheet-Icon.SEARCH">
@@ -7130,12 +7137,12 @@
7130
7137
  </t>
7131
7138
  <t t-name="o-spreadsheet-Icon.LOCK">
7132
7139
  <div class="o-icon">
7133
- <i class="oi" data-icon="lock"/>
7140
+ <i class="oi" data-icon="lock_f"/>
7134
7141
  </div>
7135
7142
  </t>
7136
7143
  <t t-name="o-spreadsheet-Icon.UNLOCK">
7137
7144
  <div class="o-icon">
7138
- <i class="oi" data-icon="lock_open"/>
7145
+ <i class="oi" data-icon="lock_open_f"/>
7139
7146
  </div>
7140
7147
  </t>
7141
7148
  <t t-name="o-spreadsheet-Icon.PRINT">
@@ -7218,6 +7225,11 @@
7218
7225
  />
7219
7226
  </svg>
7220
7227
  </t>
7228
+ <t t-name="o-spreadsheet-Icon.MORE_MENU">
7229
+ <div class="o-icon">
7230
+ <i class="oi" data-icon="more_vert"/>
7231
+ </div>
7232
+ </t>
7221
7233
 
7222
7234
  <t t-name="o-spreadsheet-IconPicker">
7223
7235
  <div class="o-icon-picker bg-white">
@@ -7919,12 +7931,11 @@
7919
7931
  class="o-figure-menu position-absolute m-2 align-items-center"
7920
7932
  t-if="this.shouldShowMenuButton">
7921
7933
  <div
7922
- class="o-figure-menu-item btn oi rounded p-1"
7923
- data-icon="more_vert"
7924
- t-on-click="this.showMenu"
7934
+ class="o-figure-menu-item d-flex align-items-center justify-content-center rounded p-1"
7925
7935
  t-ref="this.menuButtonRef"
7926
- t-on-contextmenu.prevent.stop="this.showMenu"
7927
- />
7936
+ t-on-click="this.showMenu">
7937
+ <t t-call="o-spreadsheet-Icon.MORE_MENU"/>
7938
+ </div>
7928
7939
  </div>
7929
7940
  </t>
7930
7941
 
@@ -7950,7 +7961,7 @@
7950
7961
  style="this.getFigureStyle(figureUI)"
7951
7962
  class="this.getFigureClass(figureUI)"
7952
7963
  onMouseDown="(ev) => this.startDraggingFigure(figureUI, ev)"
7953
- onClickAnchor="(dirX, dirY, ev) => this.startResize(figureUI, dirX, dirY, ev)"
7964
+ onClickAnchor.bind="this.resizeAllSelectedFigures"
7954
7965
  />
7955
7966
  </t>
7956
7967
  </div>
@@ -8024,7 +8035,9 @@
8024
8035
  t-att-class="{'active': this.menuState.isOpen}"
8025
8036
  t-ref="this.carouselTabsDropdownRef"
8026
8037
  t-on-click="this.toggleMenu">
8027
- <div class="oi" data-icon="keyboard_arrow_down"/>
8038
+ <div class="o-icon">
8039
+ <i class="oi" data-icon="keyboard_arrow_down"/>
8040
+ </div>
8028
8041
  <MenuPopover
8029
8042
  t-if="this.menuState.isOpen"
8030
8043
  menuId="this.menuId"
@@ -8038,14 +8051,14 @@
8038
8051
  t-if="this.env.model.getters.isDashboard()"
8039
8052
  t-att-title="this.fullScreenButtonTitle"
8040
8053
  class="o-carousel-full-screen-button oi o-carousel-button rounded p-1 ms-1"
8041
- t-att-data-icon="this.props.isFullScreen ? 'close_fullscreen' : 'open_in_full'"
8054
+ t-att-data-icon="this.props.isFullScreen ? 'close_fullscreen' : 'expand_content'"
8042
8055
  t-on-click="this.toggleFullScreen"
8043
8056
  />
8044
8057
  <div
8045
8058
  t-if="!this.env.model.getters.isDashboard()"
8046
8059
  class="o-carousel-menu-button o-carousel-button rounded ms-1"
8047
8060
  t-on-click="this.openContextMenu">
8048
- <div class="oi" data-icon="more_vert"/>
8061
+ <t t-call="o-spreadsheet-Icon.MORE_MENU"/>
8049
8062
  </div>
8050
8063
  </div>
8051
8064
  <div
@@ -8210,11 +8223,11 @@
8210
8223
  </div>
8211
8224
  </t>
8212
8225
  <t t-if="this.isMenuAvailable()">
8213
- <button
8214
- class="o-chart-menu-item btn text-muted lh-1 p-1 oi"
8215
- data-icon="more_vert"
8216
- t-on-click="this.openContextMenu"
8217
- />
8226
+ <div
8227
+ class="o-chart-menu-item border-0 lh-1 p-1 d-flex align-items-center justify-content-center rounded"
8228
+ t-on-click="this.openContextMenu">
8229
+ <t t-call="o-spreadsheet-Icon.MORE_MENU"/>
8230
+ </div>
8218
8231
  </t>
8219
8232
  </div>
8220
8233
  <InfoPopover
@@ -8507,8 +8520,8 @@
8507
8520
  t-on-pointerdown.prevent.stop=""
8508
8521
  t-on-pointerup.stop=""
8509
8522
  class="oi-stack position-absolute translate-middle force-open-assistant fs-4">
8510
- <i class="oi oi-filled oi-stack-1x o-composer-assistant-icon-bg" data-icon="circle"/>
8511
- <i class="oi oi-filled oi-stack-1x" data-icon="help"/>
8523
+ <i class="oi oi-filled oi-stack-1x o-composer-assistant-icon-bg" data-icon="circle_f"/>
8524
+ <i class="oi oi-filled oi-stack-1x" data-icon="help_f"/>
8512
8525
  </span>
8513
8526
  <div
8514
8527
  class="o-composer w-100 text-start"
@@ -8550,8 +8563,8 @@
8550
8563
  t-on-click="this.closeAssistant"
8551
8564
  t-on-pointerdown.prevent.stop=""
8552
8565
  class="oi-stack position-absolute top-0 start-100 translate-middle fs-4">
8553
- <i class="oi oi-filled oi-stack-1x o-composer-assistant-icon-bg" data-icon="circle"/>
8554
- <i class="oi oi-filled oi-stack-1x" data-icon="cancel"/>
8566
+ <i class="oi oi-filled oi-stack-1x o-composer-assistant-icon-bg" data-icon="circle_f"/>
8567
+ <i class="oi oi-filled oi-stack-1x" data-icon="cancel_f"/>
8555
8568
  </span>
8556
8569
  <div class="o-composer-assistant overflow-auto" t-att-style="this.assistantStyle">
8557
8570
  <FunctionDescriptionProvider
@@ -8910,7 +8923,7 @@
8910
8923
  t-att-title="this.sheetName"
8911
8924
  t-att-data-id="this.props.sheetId"
8912
8925
  t-att-class="{active: this.isSheetActive}">
8913
- <span t-if="this.isSheetLocked" class="me-1">
8926
+ <span t-if="this.isSheetLocked" class="me-1 lock-icon">
8914
8927
  <t t-call="o-spreadsheet-Icon.LOCK"/>
8915
8928
  </span>
8916
8929
  <span
@@ -100,6 +100,10 @@ export declare class FiguresContainer extends Component<SpreadsheetChildEnv> {
100
100
  private rectToCss;
101
101
  private getContainerRect;
102
102
  get selectedRectStyle(): string;
103
+ get maxDimensions(): {
104
+ maxX: import("../../..").Pixel;
105
+ maxY: import("../../..").Pixel;
106
+ };
103
107
  private getInverseViewportPositionStyle;
104
108
  private getFigureContainer;
105
109
  private getDndFigureRect;
@@ -107,7 +111,7 @@ export declare class FiguresContainer extends Component<SpreadsheetChildEnv> {
107
111
  private isMenuClick;
108
112
  startDraggingFigure(figureUI: FigureUI, ev: MouseEvent): void;
109
113
  /**
110
- * Initialize the resize of a figure with mouse movements
114
+ * Initialize the resize of the selected figures with mouse movements
111
115
  *
112
116
  * @param dirX X direction of the resize. -1 : resize from the left border of the figure, 0 : no resize in X, 1 :
113
117
  * resize from the right border of the figure
@@ -115,7 +119,7 @@ export declare class FiguresContainer extends Component<SpreadsheetChildEnv> {
115
119
  * resize from the bottom border of the figure
116
120
  * @param ev Mouse Event
117
121
  */
118
- startResize(figureUI: FigureUI, dirX: ResizeDirection, dirY: ResizeDirection, ev: MouseEvent): void;
122
+ resizeAllSelectedFigures(dirX: ResizeDirection, dirY: ResizeDirection, ev: MouseEvent): void;
119
123
  private getOtherFigures;
120
124
  getFigureStyle(figureUI: FigureUI): string;
121
125
  getFigureClass(figureUI: FigureUI): string;
@@ -1,11 +1,11 @@
1
1
  import { FigureUI } from "../../types/figure";
2
2
  import { PixelPosition } from "../../types/misc";
3
- import { SheetDOMScrollInfo } from "../../types/rendering";
3
+ import { DOMDimension, Rect, SheetDOMScrollInfo } from "../../types/rendering";
4
4
  export declare function dragFigureForMove({ x: mouseX, y: mouseY }: PixelPosition, { x: mouseInitialX, y: mouseInitialY }: PixelPosition, initialFigures: FigureUI[], { maxX, maxY }: {
5
5
  maxX: number;
6
6
  maxY: number;
7
7
  }, { scrollX: initialScrollX, scrollY: initialScrollY }: SheetDOMScrollInfo, { scrollX, scrollY }: SheetDOMScrollInfo): FigureUI[];
8
- export declare function dragFigureForResize(initialFigure: FigureUI, dirX: -1 | 0 | 1, dirY: -1 | 0 | 1, { x: mouseX, y: mouseY }: PixelPosition, { x: mouseInitialX, y: mouseInitialY }: PixelPosition, keepRatio: boolean, minFigSize: number, { scrollX: initialScrollX, scrollY: initialScrollY }: SheetDOMScrollInfo, { scrollX, scrollY }: SheetDOMScrollInfo, { maxX, maxY }: {
8
+ export declare function dragFigureForResize(initialRect: Rect, dirX: -1 | 0 | 1, dirY: -1 | 0 | 1, { x: mouseX, y: mouseY }: PixelPosition, { x: mouseInitialX, y: mouseInitialY }: PixelPosition, keepRatio: boolean, minFigSize: DOMDimension, { scrollX: initialScrollX, scrollY: initialScrollY }: SheetDOMScrollInfo, { scrollX, scrollY }: SheetDOMScrollInfo, { maxX, maxY }: {
9
9
  maxX: number;
10
10
  maxY: number;
11
- }): FigureUI;
11
+ }): Rect;
@@ -1,5 +1,6 @@
1
1
  import { FigureUI } from "../../types/figure";
2
2
  import { Pixel, UID } from "../../types/misc";
3
+ import { Rect } from "../../types/rendering";
3
4
  import { SpreadsheetChildEnv } from "../../types/spreadsheet_env";
4
5
  export type HFigureAxisType = "top" | "bottom" | "vCenter";
5
6
  export type VFigureAxisType = "right" | "left" | "hCenter";
@@ -9,8 +10,10 @@ export interface SnapLine<T extends HFigureAxisType | VFigureAxisType> {
9
10
  snappedAxisType: T;
10
11
  position: Pixel;
11
12
  }
12
- interface SnapReturn {
13
+ interface SnapMoveReturn extends SnapReturn {
13
14
  snappedFigures: FigureUI[];
15
+ }
16
+ export interface SnapReturn {
14
17
  verticalSnapLine?: SnapLine<VFigureAxisType>;
15
18
  horizontalSnapLine?: SnapLine<HFigureAxisType>;
16
19
  }
@@ -18,10 +21,12 @@ interface SnapReturn {
18
21
  * Try to snap the given figure to other figures when moving the figure, and return the snapped
19
22
  * figure and the possible snap lines, if any were found
20
23
  */
21
- export declare function snapForMove(env: SpreadsheetChildEnv, figuresToSnap: FigureUI[], otherFigures: FigureUI[]): SnapReturn;
24
+ export declare function snapForMove(env: SpreadsheetChildEnv, figuresToSnap: FigureUI[], otherFigures: FigureUI[]): SnapMoveReturn;
22
25
  /**
23
26
  * Try to snap the given figure to the other figures when resizing the figure, and return the snapped
24
27
  * figure and the possible snap lines, if any were found
25
28
  */
26
- export declare function snapForResize(env: SpreadsheetChildEnv, resizeDirX: -1 | 0 | 1, resizeDirY: -1 | 0 | 1, figureToSnap: FigureUI, otherFigures: FigureUI[]): SnapReturn;
29
+ export declare function snapForResize(env: SpreadsheetChildEnv, resizeDirX: -1 | 0 | 1, resizeDirY: -1 | 0 | 1, rect: Rect, otherFigures: FigureUI[]): {
30
+ snappedRect: Rect;
31
+ } & SnapReturn;
27
32
  export {};
@@ -35,6 +35,7 @@ export declare class LinkEditor extends Component<SpreadsheetChildEnv> {
35
35
  private state;
36
36
  private viewStore;
37
37
  setup(): void;
38
+ onLinkUrlInput(ev: InputEvent): void;
38
39
  computeLinks(): void;
39
40
  get linkProposalByCategory(): Record<string, LinkProposal>;
40
41
  get defaultState(): LinkState;
@@ -45,7 +45,7 @@ export declare class CarouselPanel extends Component<SpreadsheetChildEnv> {
45
45
  getPreviewDivStyle(item: CarouselItem): string;
46
46
  getItemId(item: CarouselItem): string;
47
47
  addNewChartToCarousel(ev: MouseEvent): void;
48
- get supportedChartTypes(): Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">;
48
+ get supportedChartTypes(): Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">;
49
49
  closePopover(): void;
50
50
  onSelectChartType(type: string): void;
51
51
  get hasDataView(): boolean;
@@ -12,23 +12,23 @@ export declare class ChartTypePickerPopover extends Component<SpreadsheetChildEn
12
12
  onClose: () => void;
13
13
  onSelectSubType: (type: string) => void;
14
14
  supportedTypes: {
15
- add: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst") => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">;
15
+ add: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst") => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">;
16
16
  clear: () => void;
17
- delete: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst") => boolean;
18
- forEach: (callbackfn: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst", value2: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst", set: Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">) => void, thisArg?: any) => void;
19
- has: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst") => boolean;
17
+ delete: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst") => boolean;
18
+ forEach: (callbackfn: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst", value2: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst", set: Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">) => void, thisArg?: any) => void;
19
+ has: (value: "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst") => boolean;
20
20
  readonly size: number;
21
- entries: () => SetIterator<["line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst", "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst"]>;
22
- keys: () => SetIterator<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">;
23
- values: () => SetIterator<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">;
24
- union: <U>(other: ReadonlySetLike<U>) => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst" | U>;
25
- intersection: <U>(other: ReadonlySetLike<U>) => Set<("line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst") & U>;
26
- difference: <U>(other: ReadonlySetLike<U>) => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">;
27
- symmetricDifference: <U>(other: ReadonlySetLike<U>) => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst" | U>;
21
+ entries: () => SetIterator<["line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst", "line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst"]>;
22
+ keys: () => SetIterator<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">;
23
+ values: () => SetIterator<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">;
24
+ union: <U>(other: ReadonlySetLike<U>) => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst" | U>;
25
+ intersection: <U>(other: ReadonlySetLike<U>) => Set<("line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst") & U>;
26
+ difference: <U>(other: ReadonlySetLike<U>) => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">;
27
+ symmetricDifference: <U>(other: ReadonlySetLike<U>) => Set<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst" | U>;
28
28
  isSubsetOf: (other: ReadonlySetLike<unknown>) => boolean;
29
29
  isSupersetOf: (other: ReadonlySetLike<unknown>) => boolean;
30
30
  isDisjointFrom: (other: ReadonlySetLike<unknown>) => boolean;
31
- [Symbol.iterator]: () => SetIterator<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "geo" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "sunburst">;
31
+ [Symbol.iterator]: () => SetIterator<"line" | "calendar" | "bar" | "scatter" | "bubble" | "pie" | "radar" | "treemap" | "funnel" | "scorecard" | "gauge" | "combo" | "waterfall" | "pyramid" | "geo" | "sunburst">;
32
32
  readonly [Symbol.toStringTag]: string;
33
33
  };
34
34
  popoverProps: {
@@ -2,32 +2,28 @@ import { Component } from "../../../../owl3_compatibility_layer";
2
2
  import { BaselineMode, ScorecardChartDefinition } from "../../../../types/chart/scorecard_chart";
3
3
  import { ValueAndLabel } from "../../../../types/misc";
4
4
  import { SpreadsheetChildEnv } from "../../../../types/spreadsheet_env";
5
+ import { StandaloneComposer } from "../../../composer/standalone_composer/standalone_composer";
5
6
  import { Select } from "../../../select/select";
6
- import { SelectionInput } from "../../../selection_input/selection_input";
7
7
  import { Section } from "../../components/section/section";
8
8
  import { ChartErrorSection } from "../building_blocks/error_section/error_section";
9
9
  import { ChartSidePanelProps } from "../common";
10
10
  export declare class ScorecardChartConfigPanel extends Component<SpreadsheetChildEnv> {
11
11
  static template: string;
12
12
  static components: {
13
- SelectionInput: typeof SelectionInput;
14
13
  ChartErrorSection: typeof ChartErrorSection;
15
14
  Section: typeof Section;
16
15
  Select: typeof Select;
16
+ StandaloneComposer: typeof StandaloneComposer;
17
17
  };
18
18
  protected props: ChartSidePanelProps<ScorecardChartDefinition>;
19
19
  private state;
20
20
  private keyValue;
21
21
  private baseline;
22
22
  get errorMessages(): string[];
23
- get isKeyValueInvalid(): boolean;
24
- get isBaselineInvalid(): boolean;
25
- onKeyValueRangeChanged(ranges: string[]): void;
26
- updateKeyValueRange(): void;
27
- getKeyValueRange(): string;
28
- onBaselineRangeChanged(ranges: string[]): void;
29
- updateBaselineRange(): void;
30
- getBaselineRange(): string;
23
+ onConfirmKeyValue(keyValue: string): void;
24
+ getKeyValue(): string;
25
+ onConfirmBaseline(baseline: string): void;
26
+ getBaseline(): string;
31
27
  updateBaselineMode(baselineMode: BaselineMode): void;
32
28
  get baselineModeOptions(): ValueAndLabel[];
33
29
  }
@@ -34,6 +34,7 @@ export declare class FindAndReplacePanel extends Component<SpreadsheetChildEnv>
34
34
  setup(): void;
35
35
  onFocusSearch(): void;
36
36
  onSearchInput(ev: InputEvent): void;
37
+ onReplaceInput(ev: InputEvent): void;
37
38
  onKeydownPanel(ev: KeyboardEvent): void;
38
39
  onKeydownSearch(ev: KeyboardEvent): void;
39
40
  onKeydownReplace(ev: KeyboardEvent): void;
@@ -5,7 +5,7 @@ import { SpreadsheetStore } from "../../../stores/spreadsheet_store";
5
5
  import { SearchOptions } from "../../../types/find_and_replace";
6
6
  import { Get } from "../../../types/store_engine";
7
7
  export declare class FindAndReplaceStore extends SpreadsheetStore implements HighlightProvider {
8
- mutators: readonly ["updateSearchOptions", "updateSearchContent", "searchFormulas", "selectPreviousMatch", "selectNextMatch", "replace"];
8
+ mutators: readonly ["updateSearchOptions", "updateSearchContent", "updateReplaceContent", "searchFormulas", "selectPreviousMatch", "selectNextMatch", "replace"];
9
9
  private allSheetsMatches;
10
10
  private activeSheetMatches;
11
11
  private specificRangeMatches;
@@ -28,6 +28,7 @@ export declare class FindAndReplaceStore extends SpreadsheetStore implements Hig
28
28
  constructor(get: Get);
29
29
  get searchMatches(): CellPosition[];
30
30
  updateSearchContent(toSearch: string): void;
31
+ updateReplaceContent(toReplace: string): void;
31
32
  updateSearchOptions(searchOptions: Partial<SearchOptions>): void;
32
33
  searchFormulas(showFormula: boolean): void;
33
34
  selectPreviousMatch(): void;
@@ -3,6 +3,7 @@ import { Color } from "../../../types/misc";
3
3
  import { SpreadsheetChildEnv } from "../../../types/spreadsheet_env";
4
4
  import { TableConfig, TableStyle, TableStyleTemplateName } from "../../../types/table";
5
5
  import { TableStylePreview } from "../../tables/table_style_preview/table_style_preview";
6
+ import { TextInput } from "../../text_input/text_input";
6
7
  import { RoundColorPicker } from "../components/round_color_picker/round_color_picker";
7
8
  import { Section } from "../components/section/section";
8
9
  interface State {
@@ -17,6 +18,7 @@ export declare class TableStyleEditorPanel extends Component<SpreadsheetChildEnv
17
18
  Section: typeof Section;
18
19
  RoundColorPicker: typeof RoundColorPicker;
19
20
  TableStylePreview: typeof TableStylePreview;
21
+ TextInput: typeof TextInput;
20
22
  };
21
23
  protected props: import("@odoo/owl").Props<{
22
24
  onCloseSidePanel: () => void;
@@ -113,7 +113,6 @@ export declare const DEFAULT_SCORECARD_HEIGHT = 101;
113
113
  export declare const DEFAULT_SCORECARD_WIDTH = 213;
114
114
  export declare const FIGURE_BORDER_WIDTH = 1;
115
115
  export declare const ACTIVE_BORDER_WIDTH = 2;
116
- export declare const MIN_FIG_SIZE = 80;
117
116
  export declare const MAX_CHAR_LABEL = 20;
118
117
  export declare const FIGURE_ID_SPLITTER = "??";
119
118
  export declare const DEFAULT_GAUGE_LOWER_COLOR = "#EA6175";
@@ -0,0 +1,2 @@
1
+ import { ColorThemeName, GridRenderingTheme } from "../types/rendering";
2
+ export declare const COLOR_THEMES: Record<ColorThemeName, GridRenderingTheme>;