@odoo/o-spreadsheet 17.2.0-alpha.1 → 17.2.0-alpha.4

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 17.2.0-alpha.1
5
- @date 2024-01-17T10:28:01.208Z
6
- @hash 296f467
4
+ @version 17.2.0-alpha.4
5
+ @date 2024-02-09T13:11:01.066Z
6
+ @hash 1b33cf4
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ActionButton">
@@ -276,7 +276,7 @@
276
276
  t-on-dblclick="() => this.onDblClick()"
277
277
  t-on-focusout="() => this.onFocusOut()"
278
278
  t-on-keydown="(ev) => this.onKeyDown(ev)"
279
- t-att-contenteditable="state.isEditing.toString()"
279
+ t-att-contenteditable="state.isEditing ? 'plaintext-only': 'false'"
280
280
  />
281
281
  <span class="o-sheet-icon ms-1" t-on-click.stop="(ev) => this.onIconClick(ev)">
282
282
  <t t-call="o-spreadsheet-Icon.TRIANGLE_DOWN"/>
@@ -467,7 +467,7 @@
467
467
  t-on-mousedown="onMousedown"
468
468
  t-on-click="onClick"
469
469
  t-on-keyup="onKeyup"
470
- t-on-paste.stop=""
470
+ t-on-paste="onPaste"
471
471
  t-on-compositionstart="onCompositionStart"
472
472
  t-on-compositionend="onCompositionEnd"
473
473
  t-on-dblclick="onDblClick"
@@ -565,14 +565,7 @@
565
565
  t-esc="cellReference"
566
566
  />
567
567
  <div class="o-grid-composer" t-att-style="containerStyle" t-ref="gridComposer">
568
- <Composer
569
- focus="props.focus"
570
- inputStyle="composerStyle"
571
- rect="composerState.rect"
572
- delimitation="composerState.delimitation"
573
- onComposerUnmounted="props.onComposerUnmounted"
574
- onComposerContentFocused="props.onComposerContentFocused"
575
- />
568
+ <Composer t-props="composerProps"/>
576
569
  </div>
577
570
  </t>
578
571
 
@@ -581,11 +574,7 @@
581
574
  class="o-topbar-composer bg-white user-select-text"
582
575
  t-on-click.stop=""
583
576
  t-att-style="containerStyle">
584
- <Composer
585
- focus="props.focus"
586
- inputStyle="composerStyle"
587
- onComposerContentFocused="props.onComposerContentFocused"
588
- />
577
+ <Composer focus="focus" inputStyle="composerStyle" onComposerContentFocused.bind="onFocus"/>
589
578
  </div>
590
579
  </t>
591
580
 
@@ -604,7 +593,6 @@
604
593
  />
605
594
  <canvas t-ref="canvas"/>
606
595
  <GridPopover
607
- hoveredCell="hoveredCell"
608
596
  gridRect="getGridRect()"
609
597
  onMouseWheel.bind="onMouseWheel"
610
598
  onClosePopover.bind="onClosePopover"
@@ -953,9 +941,10 @@
953
941
  <div
954
942
  class="o-grid w-100 h-100"
955
943
  tabindex="-1"
956
- t-on-click="focus"
944
+ t-on-click="focusDefaultElement"
957
945
  t-on-keydown="onKeydown"
958
946
  t-on-wheel="onMouseWheel"
947
+ t-on-contextmenu="onInputContextMenu"
959
948
  t-ref="grid">
960
949
  <GridOverlay
961
950
  onCellClicked.bind="onCellClicked"
@@ -965,27 +954,10 @@
965
954
  onGridResized.bind="onGridResized"
966
955
  onGridMoved.bind="moveCanvas"
967
956
  gridOverlayDimensions="gridOverlayDimensions"
968
- onFigureDeleted.bind="focus"
957
+ onFigureDeleted.bind="focusDefaultElement"
969
958
  />
970
959
  <HeadersOverlay onOpenContextMenu="(type, x, y) => this.toggleContextMenu(type, x, y)"/>
971
-
972
- <t t-if="env.model.getters.getEditionMode() !== 'inactive'">
973
- <GridComposer
974
- onComposerUnmounted="() => this.focus()"
975
- onComposerContentFocused="props.onComposerContentFocused"
976
- focus="props.focusComposer"
977
- gridDims="env.model.getters.getSheetViewDimensionWithHeaders()"
978
- />
979
- </t>
980
- <t else="1">
981
- <input
982
- class="position-absolute"
983
- style="z-index:-1000;"
984
- t-on-input="onInput"
985
- t-on-contextmenu="onInputContextMenu"
986
- t-ref="hiddenInput"
987
- />
988
- </t>
960
+ <GridComposer gridDims="env.model.getters.getSheetViewDimensionWithHeaders()"/>
989
961
  <canvas t-ref="canvas"/>
990
962
  <t
991
963
  t-foreach="env.model.getters.getClientsToDisplay()"
@@ -1001,7 +973,6 @@
1001
973
  </t>
1002
974
  <GridPopover
1003
975
  t-if="!menuState.isOpen"
1004
- hoveredCell="hoveredCell"
1005
976
  gridRect="getGridRect()"
1006
977
  onMouseWheel.bind="onMouseWheel"
1007
978
  onClosePopover.bind="onClosePopover"
@@ -1009,8 +980,9 @@
1009
980
  <t t-if="env.model.getters.isGridSelectionActive()">
1010
981
  <Autofill position="getAutofillPosition()" isVisible="isAutofillVisible"/>
1011
982
  </t>
1012
- <t t-foreach="env.model.getters.getHighlights()" t-as="highlight" t-key="highlight_index">
1013
- <t t-if="highlight.sheetId === env.model.getters.getActiveSheetId()">
983
+ <t t-foreach="highlights" t-as="highlight" t-key="highlight_index">
984
+ <t
985
+ t-if="highlight.interactive and highlight.sheetId === env.model.getters.getActiveSheetId()">
1014
986
  <Highlight zone="highlight.zone" color="highlight.color"/>
1015
987
  </t>
1016
988
  </t>
@@ -1065,7 +1037,7 @@
1065
1037
  t-att-style="style"
1066
1038
  t-on-mousedown="onMouseDown"
1067
1039
  t-on-dblclick.self="onDoubleClick"
1068
- t-on-contextmenu="onContextMenu">
1040
+ t-on-contextmenu.stop.prevent="onContextMenu">
1069
1041
  <FiguresContainer onFigureDeleted="props.onFigureDeleted"/>
1070
1042
  <DataValidationOverlay/>
1071
1043
  <GridAddRowsFooter
@@ -1544,7 +1516,7 @@
1544
1516
  <svg class="o-icon">
1545
1517
  <path
1546
1518
  fill="currentColor"
1547
- d="M16 .5A1.5 1.5 0 0 1 17.5 2v14a1.5 1.5 0 0 1-1.5 1.5H2A1.5 1.5 0 0 1 .5 16V2A1.5 1.5 0 0 1 2 .5h14V2h-3.5v14H16V2H7v14h4V2H2v14h3.5V2M6 1l5 4v2L6 3m0 2 5 4v2L6 7m0 2 5 4v2l-5-4m0 2 5 4H"
1519
+ d="M16 .5A1.5 1.5 0 0 1 17.5 2v14a1.5 1.5 0 0 1-1.5 1.5H2A1.5 1.5 0 0 1 .5 16V2A1.5 1.5 0 0 1 2 .5h14V2h-3.5v14H16V2H7v14h4V2H2v14h3.5V2M6 1l5 4v2L6 3m0 2 5 4v2L6 7m0 2 5 4v2l-5-4"
1548
1520
  />
1549
1521
  </svg>
1550
1522
  </t>
@@ -1658,6 +1630,22 @@
1658
1630
  />
1659
1631
  </svg>
1660
1632
  </t>
1633
+ <t t-name="o-spreadsheet-Icon.INSERT_CHECKBOX">
1634
+ <svg class="o-icon">
1635
+ <path
1636
+ fill="currentColor"
1637
+ d="M.5 2A1.5 1.5 0 0 1 2 .5h14A1.5 1.5 0 0 1 17.5 2v14a1.5 1.5 0 0 1-1.5 1.5H2A1.5 1.5 0 0 1 .5 16V2H2v14h14V2H2m13 4-1.4-1.4L7 11.2 4.4 8.6 3 10l4 4z"
1638
+ />
1639
+ </svg>
1640
+ </t>
1641
+ <t t-name="o-spreadsheet-Icon.INSERT_DROPDOWN">
1642
+ <svg class="o-icon">
1643
+ <path
1644
+ fill="currentColor"
1645
+ d="M6 3.5a5 5.5 0 0 0 0 11h6a5 5.5 0 0 0 0-11H6V5h6a3.5 4 0 0 1 0 8H6a3.5 4 0 0 1 0-8m5 6 3-3H8"
1646
+ />
1647
+ </svg>
1648
+ </t>
1661
1649
  <t t-name="o-spreadsheet-Icon.INSERT_SHEET">
1662
1650
  <svg class="o-icon" fill="currentColor">
1663
1651
  <path
@@ -2434,8 +2422,9 @@ https://fontawesome.com/license -->
2434
2422
  <div
2435
2423
  t-att-title="getName(menuItem)"
2436
2424
  t-att-data-name="menuItem.id"
2437
- t-on-click="(ev) => this.onClickMenu(menuItem, menuItem_index, ev)"
2438
- t-on-mouseover="(ev) => this.onMouseOver(menuItem, menuItem_index, ev)"
2425
+ t-on-click="(ev) => this.onClickMenu(menuItem, ev)"
2426
+ t-on-mouseenter="(ev) => this.onMouseEnter(menuItem, ev)"
2427
+ t-on-mouseleave="(ev) => this.onMouseLeave(menuItem)"
2439
2428
  class="o-menu-item d-flex align-items-center"
2440
2429
  t-att-class="{ 'o-menu-root': isMenuRoot, 'disabled': !isMenuEnabled, 'o-menu-item-active': isParentMenu(subMenu, menuItem)}"
2441
2430
  t-att-style="getColor(menuItem)">
@@ -2588,12 +2577,12 @@ https://fontawesome.com/license -->
2588
2577
  />
2589
2578
  </Section>
2590
2579
  <ChartDataSeries
2591
- ranges="() => this.getDataSeriesRanges()"
2580
+ ranges="this.getDataSeriesRanges()"
2592
2581
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
2593
2582
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
2594
2583
  />
2595
2584
  <ChartLabelRange
2596
- range="() => this.getLabelRange()"
2585
+ range="this.getLabelRange()"
2597
2586
  isInvalid="isLabelInvalid"
2598
2587
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
2599
2588
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -2667,7 +2656,7 @@ https://fontawesome.com/license -->
2667
2656
  <Section class="'o-data-series'">
2668
2657
  <t t-set-slot="title" t-esc="title"/>
2669
2658
  <SelectionInput
2670
- ranges="() => props.ranges()"
2659
+ ranges="props.ranges"
2671
2660
  required="true"
2672
2661
  hasSingleRange="props.hasSingleRange"
2673
2662
  onSelectionChanged="(ranges) => props.onSelectionChanged(ranges)"
@@ -2686,7 +2675,7 @@ https://fontawesome.com/license -->
2686
2675
  <Section class="'o-data-labels'">
2687
2676
  <t t-set-slot="title" t-esc="props.title"/>
2688
2677
  <SelectionInput
2689
- ranges="() => [props.range()]"
2678
+ ranges="[props.range]"
2690
2679
  isInvalid="props.isInvalid"
2691
2680
  hasSingleRange="true"
2692
2681
  required="props.required"
@@ -2721,7 +2710,7 @@ https://fontawesome.com/license -->
2721
2710
  <t t-name="o-spreadsheet-GaugeChartConfigPanel">
2722
2711
  <div>
2723
2712
  <ChartDataSeries
2724
- ranges="() => [this.getDataRange()]"
2713
+ ranges="[this.getDataRange()]"
2725
2714
  onSelectionChanged="(ranges) => this.onDataRangeChanged(ranges)"
2726
2715
  onSelectionConfirmed="() => this.updateDataRange()"
2727
2716
  hasSingleRange="true"
@@ -2860,12 +2849,12 @@ https://fontawesome.com/license -->
2860
2849
  <t t-name="o-spreadsheet-LineBarPieConfigPanel">
2861
2850
  <div>
2862
2851
  <ChartDataSeries
2863
- ranges="() => this.getDataSeriesRanges()"
2852
+ ranges="this.getDataSeriesRanges()"
2864
2853
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
2865
2854
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
2866
2855
  />
2867
2856
  <ChartLabelRange
2868
- range="() => this.getLabelRange()"
2857
+ range="this.getLabelRange()"
2869
2858
  isInvalid="isLabelInvalid"
2870
2859
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
2871
2860
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -2924,12 +2913,12 @@ https://fontawesome.com/license -->
2924
2913
  />
2925
2914
  </Section>
2926
2915
  <ChartDataSeries
2927
- ranges="() => this.getDataSeriesRanges()"
2916
+ ranges="this.getDataSeriesRanges()"
2928
2917
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
2929
2918
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
2930
2919
  />
2931
2920
  <ChartLabelRange
2932
- range="() => this.getLabelRange()"
2921
+ range="this.getLabelRange()"
2933
2922
  isInvalid="isLabelInvalid"
2934
2923
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
2935
2924
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -3040,12 +3029,40 @@ https://fontawesome.com/license -->
3040
3029
  </div>
3041
3030
  </t>
3042
3031
 
3032
+ <t t-name="o-spreadsheet-ScatterConfigPanel">
3033
+ <div>
3034
+ <ChartDataSeries
3035
+ ranges="() => this.getDataSeriesRanges()"
3036
+ onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
3037
+ onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
3038
+ />
3039
+ <ChartLabelRange
3040
+ range="() => this.getLabelRange()"
3041
+ isInvalid="isLabelInvalid"
3042
+ onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
3043
+ onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
3044
+ options="this.getLabelRangeOptions()"
3045
+ />
3046
+
3047
+ <Section class="'o-use-row-as-headers'" t-if="calculateHeaderPosition()">
3048
+ <Checkbox
3049
+ name="'dataSetsHaveTitle'"
3050
+ label="dataSetsHaveTitleLabel"
3051
+ value="props.definition.dataSetsHaveTitle"
3052
+ onChange.bind="onUpdateDataSetsHaveTitle"
3053
+ />
3054
+ </Section>
3055
+
3056
+ <ChartErrorSection t-if="errorMessages.length" messages="errorMessages"/>
3057
+ </div>
3058
+ </t>
3059
+
3043
3060
  <t t-name="o-spreadsheet-ScorecardChartConfigPanel">
3044
3061
  <div>
3045
3062
  <Section class="'o-data-series'">
3046
3063
  <t t-set-slot="title">Key value</t>
3047
3064
  <SelectionInput
3048
- ranges="() => [this.getKeyValueRange()]"
3065
+ ranges="[this.getKeyValueRange()]"
3049
3066
  isInvalid="isKeyValueInvalid"
3050
3067
  hasSingleRange="true"
3051
3068
  required="true"
@@ -3057,7 +3074,7 @@ https://fontawesome.com/license -->
3057
3074
  <t t-set-slot="title">Baseline configuration</t>
3058
3075
  <div class="o-section-subtitle">Baseline value</div>
3059
3076
  <SelectionInput
3060
- ranges="() => [this.getBaselineRange()]"
3077
+ ranges="[this.getBaselineRange()]"
3061
3078
  isInvalid="isBaselineInvalid"
3062
3079
  hasSingleRange="true"
3063
3080
  onSelectionChanged="(ranges) => this.onBaselineRangeChanged(ranges)"
@@ -3255,7 +3272,7 @@ https://fontawesome.com/license -->
3255
3272
  <t t-set-slot="title">Apply to range</t>
3256
3273
  <div class="o-selection-cf">
3257
3274
  <SelectionInput
3258
- ranges="() => state.currentCF.ranges"
3275
+ ranges="state.currentCF.ranges"
3259
3276
  class="'o-range'"
3260
3277
  isInvalid="isRangeValid"
3261
3278
  onSelectionChanged="(ranges) => this.onRangesChanged(ranges)"
@@ -3527,27 +3544,15 @@ https://fontawesome.com/license -->
3527
3544
  </div>
3528
3545
  </t>
3529
3546
 
3530
- <t t-name="o-spreadsheet-ConditionalFormatPreviewList">
3531
- <div class="o-cf-preview-list h-100 overflow-auto" t-ref="cfList">
3532
- <t t-foreach="props.conditionalFormats" t-as="cf" t-key="cf.id">
3533
- <t t-call="o-spreadsheet-ConditionalFormattingPanelPreview"/>
3534
- </t>
3535
- <div
3536
- class="btn btn-link o-sidePanel-btn-link o-cf-add float-end"
3537
- t-on-click.prevent.stop="props.onAddConditionalFormat">
3538
- + Add another rule
3539
- </div>
3540
- </div>
3541
- </t>
3542
-
3543
- <t t-name="o-spreadsheet-ConditionalFormattingPanelPreview">
3547
+ <t t-name="o-spreadsheet-ConditionalFormatPreview">
3548
+ <t t-set="cf" t-value="props.conditionalFormat"/>
3544
3549
  <div
3545
- class="o-cf-preview d-flex position-relative"
3546
- t-att-class="{ 'o-cf-dragging': dragAndDrop.draggedItemId === cf.id }"
3547
- t-att-style="getPreviewDivStyle(cf)"
3550
+ class="o-cf-preview w-100"
3551
+ t-ref="cfPreview"
3552
+ t-att-class="props.class"
3548
3553
  t-att-data-id="cf.id"
3549
- t-on-click="(ev) => props.onPreviewClick(cf)"
3550
- t-on-mousedown="(ev) => this.onMouseDown(cf, ev)">
3554
+ t-on-click="props.onPreviewClick"
3555
+ t-on-mousedown="(ev) => this.onMouseDown(ev)">
3551
3556
  <div class="position-relative h-100 w-100 d-flex align-items-center">
3552
3557
  <div class="o-cf-drag-handle h-100 position-absolute d-flex align-items-center text-muted">
3553
3558
  <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
@@ -3586,6 +3591,28 @@ https://fontawesome.com/license -->
3586
3591
  </div>
3587
3592
  </t>
3588
3593
 
3594
+ <t t-name="o-spreadsheet-ConditionalFormatPreviewList">
3595
+ <div class="o-cf-preview-list h-100 overflow-auto" t-ref="cfList">
3596
+ <t t-foreach="props.conditionalFormats" t-as="cf" t-key="cf.id">
3597
+ <div
3598
+ class="o-cf-preview-container d-flex position-relative"
3599
+ t-att-style="getPreviewDivStyle(cf)">
3600
+ <ConditionalFormatPreview
3601
+ conditionalFormat="cf"
3602
+ class="dragAndDrop.draggedItemId === cf.id ? 'o-cf-dragging' : ''"
3603
+ onMouseDown="(ev) => this.onPreviewMouseDown(cf, ev)"
3604
+ onPreviewClick="() => props.onPreviewClick(cf)"
3605
+ />
3606
+ </div>
3607
+ </t>
3608
+ <div
3609
+ class="btn btn-link o-sidePanel-btn-link o-cf-add float-end"
3610
+ t-on-click.prevent.stop="props.onAddConditionalFormat">
3611
+ + Add another rule
3612
+ </div>
3613
+ </div>
3614
+ </t>
3615
+
3589
3616
  <t t-name="o-spreadsheet-ConditionalFormattingPanel">
3590
3617
  <div class="o-cf h-100">
3591
3618
  <t t-if="state.mode === 'list'">
@@ -3788,7 +3815,7 @@ https://fontawesome.com/license -->
3788
3815
 
3789
3816
  <t t-name="o-spreadsheet-DataValidationValueInRangeCriterionForm">
3790
3817
  <SelectionInput
3791
- ranges="() => [props.criterion.values[0] || '']"
3818
+ ranges="[props.criterion.values[0] || '']"
3792
3819
  onSelectionChanged="(ranges) => this.onRangeChanged(ranges[0])"
3793
3820
  required="true"
3794
3821
  hasSingleRange="true"
@@ -3808,7 +3835,7 @@ https://fontawesome.com/license -->
3808
3835
  <Section class="'o-dv-range'">
3809
3836
  <t t-set-slot="title">Apply to range</t>
3810
3837
  <SelectionInput
3811
- ranges="() => state.rule.ranges"
3838
+ ranges="state.rule.ranges"
3812
3839
  onSelectionChanged="(ranges) => this.onRangesChanged(ranges)"
3813
3840
  required="true"
3814
3841
  />
@@ -3852,7 +3879,7 @@ https://fontawesome.com/license -->
3852
3879
  </t>
3853
3880
 
3854
3881
  <t t-name="o-spreadsheet-DataValidationPreview">
3855
- <div class="o-dv-preview p-3" t-on-click="props.onClick">
3882
+ <div class="o-dv-preview p-3" t-on-click="props.onClick" t-ref="dvPreview">
3856
3883
  <div class="d-flex justify-content-between">
3857
3884
  <div class="o-dv-container d-flex flex-column">
3858
3885
  <div class="o-dv-preview-description fw-bold text-truncate" t-esc="descriptionString"/>
@@ -3876,16 +3903,18 @@ https://fontawesome.com/license -->
3876
3903
  type="text"
3877
3904
  t-ref="searchInput"
3878
3905
  class="o-input o-input-with-count"
3879
- t-on-input="onInput"
3906
+ t-on-input="onSearchInput"
3880
3907
  t-on-focus="onFocusSearch"
3881
3908
  t-on-keydown="onKeydownSearch"
3882
3909
  />
3883
3910
  <div class="o-input-count" t-if="hasSearchResult">
3884
- <t t-esc="env.model.getters.getCurrentSelectedMatchIndex()+1"/>
3911
+ <t t-esc="store.selectedMatchIndex+1"/>
3885
3912
  /
3886
- <t t-esc="env.model.getters.getSearchMatches().length"/>
3913
+ <t t-esc="store.searchMatches.length"/>
3914
+ </div>
3915
+ <div t-elif="!store.pendingSearch and store.toSearch !== ''" class="o-input-count">
3916
+ 0 / 0
3887
3917
  </div>
3888
- <div t-elif="!pendingSearch and toSearch !== ''" class="o-input-count">0 / 0</div>
3889
3918
  </div>
3890
3919
  <select
3891
3920
  class="o-input o-type-selector o-type-range-selector mt-3 mb-3"
@@ -3896,7 +3925,7 @@ https://fontawesome.com/license -->
3896
3925
  </select>
3897
3926
  <div t-if="searchOptions.searchScope === 'specificRange'">
3898
3927
  <SelectionInput
3899
- ranges="() => [this.dataRange]"
3928
+ ranges="[this.dataRange]"
3900
3929
  onSelectionChanged="(ranges) => this.onSearchRangeChanged(ranges)"
3901
3930
  onSelectionConfirmed.bind="updateDataRange"
3902
3931
  hasSingleRange="true"
@@ -3924,7 +3953,7 @@ https://fontawesome.com/license -->
3924
3953
  onChange.bind="searchFormulas"
3925
3954
  />
3926
3955
  </div>
3927
- <div class="o-matches-count mt-4" t-if="toSearch !== ''">
3956
+ <div class="o-matches-count mt-4" t-if="store.toSearch !== ''">
3928
3957
  <div t-if="searchOptions.searchScope === 'specificRange' and dataRange != ''">
3929
3958
  <t t-esc="specificRangeMatchesCount"/>
3930
3959
  </div>
@@ -3939,11 +3968,14 @@ https://fontawesome.com/license -->
3939
3968
  <div class="o-sidePanelButtons">
3940
3969
  <button
3941
3970
  t-att-disabled="!hasSearchResult"
3942
- t-on-click="onSelectPreviousCell"
3971
+ t-on-click="() => store.selectPreviousMatch()"
3943
3972
  class="o-button">
3944
3973
  Previous
3945
3974
  </button>
3946
- <button t-att-disabled="!hasSearchResult" t-on-click="onSelectNextCell" class="o-button">
3975
+ <button
3976
+ t-att-disabled="!hasSearchResult"
3977
+ t-on-click="() => store.selectNextMatch()"
3978
+ class="o-button">
3947
3979
  Next
3948
3980
  </button>
3949
3981
  </div>
@@ -3953,22 +3985,22 @@ https://fontawesome.com/license -->
3953
3985
  <input
3954
3986
  type="text"
3955
3987
  class="o-input o-input-without-count"
3956
- t-ref="replaceInput"
3957
3988
  t-on-keydown="onKeydownReplace"
3989
+ t-model="store.toReplace"
3958
3990
  />
3959
3991
  </div>
3960
3992
  </Section>
3961
3993
 
3962
3994
  <div class="o-sidePanelButtons" t-if="!env.model.getters.isReadonly()">
3963
3995
  <button
3964
- t-att-disabled="env.model.getters.getCurrentSelectedMatchIndex() === null"
3965
- t-on-click="replace"
3996
+ t-att-disabled="store.selectedMatchIndex === null"
3997
+ t-on-click="() => store.replace()"
3966
3998
  class="o-button">
3967
3999
  Replace
3968
4000
  </button>
3969
4001
  <button
3970
- t-att-disabled="env.model.getters.getCurrentSelectedMatchIndex() === null"
3971
- t-on-click="replaceAll"
4002
+ t-att-disabled="store.selectedMatchIndex === null"
4003
+ t-on-click="() => store.replaceAll()"
3972
4004
  class="o-button">
3973
4005
  Replace all
3974
4006
  </button>
@@ -4168,12 +4200,7 @@ https://fontawesome.com/license -->
4168
4200
  <SpreadsheetDashboard/>
4169
4201
  </t>
4170
4202
  <t t-else="">
4171
- <TopBar
4172
- onClick="() => this.focusGrid()"
4173
- onComposerContentFocused="(selection) => this.onTopBarComposerFocused(selection)"
4174
- focusComposer="focusTopBarComposer"
4175
- dropdownMaxHeight="gridHeight"
4176
- />
4203
+ <TopBar onClick="() => this.focusGrid()" dropdownMaxHeight="gridHeight"/>
4177
4204
  <div
4178
4205
  class="o-grid-container"
4179
4206
  t-att-class="{'o-two-columns': !sidePanel.isOpen}"
@@ -4189,10 +4216,7 @@ https://fontawesome.com/license -->
4189
4216
  <div class="o-group-grid overflow-hidden">
4190
4217
  <Grid
4191
4218
  sidePanelIsOpen="sidePanel.isOpen"
4192
- focusComposer="focusGridComposer"
4193
4219
  exposeFocus="(focus) => this._focusGrid = focus"
4194
- onComposerContentFocused="() => this.onGridComposerContentFocused()"
4195
- onGridComposerCellFocused="(content, selection) => this.onGridComposerCellFocused(content, selection)"
4196
4220
  />
4197
4221
  </div>
4198
4222
  </div>
@@ -4375,10 +4399,7 @@ https://fontawesome.com/license -->
4375
4399
  <ActionButton action="VIEW.createRemoveFilter" class="'o-hoverable-button'"/>
4376
4400
  </div>
4377
4401
  </div>
4378
- <TopBarComposer
4379
- focus="props.focusComposer"
4380
- onComposerContentFocused="props.onComposerContentFocused"
4381
- />
4402
+ <TopBarComposer/>
4382
4403
  </div>
4383
4404
  </div>
4384
4405
  <Menu
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "17.2.0-alpha.1",
3
+ "version": "17.2.0-alpha.4",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",