@odoo/o-spreadsheet 17.2.0-alpha.2 → 17.2.0-alpha.5

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.2
5
- @date 2024-01-29T13:56:33.355Z
6
- @hash 03c1335
4
+ @version 17.2.0-alpha.5
5
+ @date 2024-02-16T14:28:32.318Z
6
+ @hash 0c69dd8
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ActionButton">
@@ -421,9 +421,9 @@
421
421
 
422
422
  <t t-name="o-spreadsheet-TextValueProvider">
423
423
  <div
424
+ t-ref="autoCompleteList"
424
425
  t-att-class="{
425
- 'o-autocomplete-dropdown':props.values.length,
426
- 'shadow':props.values.length}">
426
+ 'o-autocomplete-dropdown':props.values.length }">
427
427
  <t t-foreach="props.values" t-as="v" t-key="v.text">
428
428
  <div
429
429
  class="d-flex flex-column text-start"
@@ -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"
@@ -475,8 +475,9 @@
475
475
 
476
476
  <div
477
477
  t-if="props.focus !== 'inactive' and (autoCompleteState.showProvider or functionDescriptionState.showDescription)"
478
- class="o-composer-assistant"
478
+ class="o-composer-assistant shadow"
479
479
  t-att-style="assistantStyle"
480
+ t-on-wheel.stop=""
480
481
  t-on-mousedown.prevent.stop=""
481
482
  t-on-click.prevent.stop=""
482
483
  t-on-mouseup.prevent.stop="">
@@ -565,14 +566,7 @@
565
566
  t-esc="cellReference"
566
567
  />
567
568
  <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
- />
569
+ <Composer t-props="composerProps"/>
576
570
  </div>
577
571
  </t>
578
572
 
@@ -581,11 +575,7 @@
581
575
  class="o-topbar-composer bg-white user-select-text"
582
576
  t-on-click.stop=""
583
577
  t-att-style="containerStyle">
584
- <Composer
585
- focus="props.focus"
586
- inputStyle="composerStyle"
587
- onComposerContentFocused="props.onComposerContentFocused"
588
- />
578
+ <Composer focus="focus" inputStyle="composerStyle" onComposerContentFocused.bind="onFocus"/>
589
579
  </div>
590
580
  </t>
591
581
 
@@ -604,7 +594,6 @@
604
594
  />
605
595
  <canvas t-ref="canvas"/>
606
596
  <GridPopover
607
- hoveredCell="hoveredCell"
608
597
  gridRect="getGridRect()"
609
598
  onMouseWheel.bind="onMouseWheel"
610
599
  onClosePopover.bind="onClosePopover"
@@ -953,9 +942,10 @@
953
942
  <div
954
943
  class="o-grid w-100 h-100"
955
944
  tabindex="-1"
956
- t-on-click="focus"
945
+ t-on-click="focusDefaultElement"
957
946
  t-on-keydown="onKeydown"
958
947
  t-on-wheel="onMouseWheel"
948
+ t-on-contextmenu="onInputContextMenu"
959
949
  t-ref="grid">
960
950
  <GridOverlay
961
951
  onCellClicked.bind="onCellClicked"
@@ -965,27 +955,10 @@
965
955
  onGridResized.bind="onGridResized"
966
956
  onGridMoved.bind="moveCanvas"
967
957
  gridOverlayDimensions="gridOverlayDimensions"
968
- onFigureDeleted.bind="focus"
958
+ onFigureDeleted.bind="focusDefaultElement"
969
959
  />
970
960
  <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>
961
+ <GridComposer gridDims="env.model.getters.getSheetViewDimensionWithHeaders()"/>
989
962
  <canvas t-ref="canvas"/>
990
963
  <t
991
964
  t-foreach="env.model.getters.getClientsToDisplay()"
@@ -1001,7 +974,6 @@
1001
974
  </t>
1002
975
  <GridPopover
1003
976
  t-if="!menuState.isOpen"
1004
- hoveredCell="hoveredCell"
1005
977
  gridRect="getGridRect()"
1006
978
  onMouseWheel.bind="onMouseWheel"
1007
979
  onClosePopover.bind="onClosePopover"
@@ -1009,8 +981,9 @@
1009
981
  <t t-if="env.model.getters.isGridSelectionActive()">
1010
982
  <Autofill position="getAutofillPosition()" isVisible="isAutofillVisible"/>
1011
983
  </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()">
984
+ <t t-foreach="highlights" t-as="highlight" t-key="highlight_index">
985
+ <t
986
+ t-if="highlight.interactive and highlight.sheetId === env.model.getters.getActiveSheetId()">
1014
987
  <Highlight zone="highlight.zone" color="highlight.color"/>
1015
988
  </t>
1016
989
  </t>
@@ -1065,7 +1038,7 @@
1065
1038
  t-att-style="style"
1066
1039
  t-on-mousedown="onMouseDown"
1067
1040
  t-on-dblclick.self="onDoubleClick"
1068
- t-on-contextmenu="onContextMenu">
1041
+ t-on-contextmenu.stop.prevent="onContextMenu">
1069
1042
  <FiguresContainer onFigureDeleted="props.onFigureDeleted"/>
1070
1043
  <DataValidationOverlay/>
1071
1044
  <GridAddRowsFooter
@@ -1516,15 +1489,15 @@
1516
1489
  />
1517
1490
  </svg>
1518
1491
  </t>
1519
- <t t-name="o-spreadsheet-Icon.SHOW_HIDE_GRID">
1520
- <svg class="o-icon">
1521
- <path
1522
- fill="currentColor"
1523
- d="M.5 2A1.5 1.5 0 0 1 2 .5h14A1.5 1.5 0 0 1 17.5 2v7H11V7H7v4s-.5 0-1.5 1h-1v5h-3a1.5 1.5 0 0 1-1-1M6 6V2H2v4m9 0V2H7v4m9 0V2h-4v4m-6 5V7H2v4m14-2V7h-4v2m-7.5 6.5V12H2v3.5 M14 10.5c1 0 1 .5 1 1-1.5 2.5-3.5 4.5-5 6.5-.5 0-1-.5-1-1-1-.5-1.5-1-2.5-2 0 0-.5-.5 0-1 1.5-2 4-3 7-3m-1 1.5C13.5 12 4 14 10 16c0 0-1.5-2 2.5-3.5m5 1.5c.5.5.5 1 .5 1-1.5 2-3.5 3-6 2.5.5-.5.5-1 1-1s5.5-1 2-3.5l1-1"
1524
- />
1492
+ <t t-name="o-spreadsheet-Icon.SHOW">
1493
+ <svg class="o-icon" viewBox="0 0 24 24" fill="none" stroke="currentcolor">
1494
+ <path stroke-width="1.35" d="M1,12 S11.5,0 23,12 M1,12 S11.5,24 23,12"/>
1495
+ <path d="M1.26,11.7 A .4 .3 1 0 0 1.2,12.3"/>
1496
+ <path d="M22.8,11.7 A .4 .3 1 0 1 22.75,12.3"/>
1497
+ <circle stroke-width="1.35" stroke="currentcolor" cx="12" cy="12" r="3"/>
1525
1498
  </svg>
1526
1499
  </t>
1527
- <t t-name="o-spreadsheet-Icon.SHOW_HIDE_FORMULA">
1500
+ <t t-name="o-spreadsheet-Icon.FORMULA">
1528
1501
  <svg class="o-icon">
1529
1502
  <path
1530
1503
  fill="currentColor"
@@ -2450,8 +2423,9 @@ https://fontawesome.com/license -->
2450
2423
  <div
2451
2424
  t-att-title="getName(menuItem)"
2452
2425
  t-att-data-name="menuItem.id"
2453
- t-on-click="(ev) => this.onClickMenu(menuItem, menuItem_index, ev)"
2454
- t-on-mouseover="(ev) => this.onMouseOver(menuItem, menuItem_index, ev)"
2426
+ t-on-click="(ev) => this.onClickMenu(menuItem, ev)"
2427
+ t-on-mouseenter="(ev) => this.onMouseEnter(menuItem, ev)"
2428
+ t-on-mouseleave="(ev) => this.onMouseLeave(menuItem)"
2455
2429
  class="o-menu-item d-flex align-items-center"
2456
2430
  t-att-class="{ 'o-menu-root': isMenuRoot, 'disabled': !isMenuEnabled, 'o-menu-item-active': isParentMenu(subMenu, menuItem)}"
2457
2431
  t-att-style="getColor(menuItem)">
@@ -2604,12 +2578,12 @@ https://fontawesome.com/license -->
2604
2578
  />
2605
2579
  </Section>
2606
2580
  <ChartDataSeries
2607
- ranges="() => this.getDataSeriesRanges()"
2581
+ ranges="this.getDataSeriesRanges()"
2608
2582
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
2609
2583
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
2610
2584
  />
2611
2585
  <ChartLabelRange
2612
- range="() => this.getLabelRange()"
2586
+ range="this.getLabelRange()"
2613
2587
  isInvalid="isLabelInvalid"
2614
2588
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
2615
2589
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -2683,7 +2657,7 @@ https://fontawesome.com/license -->
2683
2657
  <Section class="'o-data-series'">
2684
2658
  <t t-set-slot="title" t-esc="title"/>
2685
2659
  <SelectionInput
2686
- ranges="() => props.ranges()"
2660
+ ranges="props.ranges"
2687
2661
  required="true"
2688
2662
  hasSingleRange="props.hasSingleRange"
2689
2663
  onSelectionChanged="(ranges) => props.onSelectionChanged(ranges)"
@@ -2702,7 +2676,7 @@ https://fontawesome.com/license -->
2702
2676
  <Section class="'o-data-labels'">
2703
2677
  <t t-set-slot="title" t-esc="props.title"/>
2704
2678
  <SelectionInput
2705
- ranges="() => [props.range()]"
2679
+ ranges="[props.range]"
2706
2680
  isInvalid="props.isInvalid"
2707
2681
  hasSingleRange="true"
2708
2682
  required="props.required"
@@ -2737,7 +2711,7 @@ https://fontawesome.com/license -->
2737
2711
  <t t-name="o-spreadsheet-GaugeChartConfigPanel">
2738
2712
  <div>
2739
2713
  <ChartDataSeries
2740
- ranges="() => [this.getDataRange()]"
2714
+ ranges="[this.getDataRange()]"
2741
2715
  onSelectionChanged="(ranges) => this.onDataRangeChanged(ranges)"
2742
2716
  onSelectionConfirmed="() => this.updateDataRange()"
2743
2717
  hasSingleRange="true"
@@ -2876,12 +2850,12 @@ https://fontawesome.com/license -->
2876
2850
  <t t-name="o-spreadsheet-LineBarPieConfigPanel">
2877
2851
  <div>
2878
2852
  <ChartDataSeries
2879
- ranges="() => this.getDataSeriesRanges()"
2853
+ ranges="this.getDataSeriesRanges()"
2880
2854
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
2881
2855
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
2882
2856
  />
2883
2857
  <ChartLabelRange
2884
- range="() => this.getLabelRange()"
2858
+ range="this.getLabelRange()"
2885
2859
  isInvalid="isLabelInvalid"
2886
2860
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
2887
2861
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -2940,12 +2914,12 @@ https://fontawesome.com/license -->
2940
2914
  />
2941
2915
  </Section>
2942
2916
  <ChartDataSeries
2943
- ranges="() => this.getDataSeriesRanges()"
2917
+ ranges="this.getDataSeriesRanges()"
2944
2918
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
2945
2919
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
2946
2920
  />
2947
2921
  <ChartLabelRange
2948
- range="() => this.getLabelRange()"
2922
+ range="this.getLabelRange()"
2949
2923
  isInvalid="isLabelInvalid"
2950
2924
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
2951
2925
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -2998,26 +2972,26 @@ https://fontawesome.com/license -->
2998
2972
  </t>
2999
2973
 
3000
2974
  <t t-name="o-spreadsheet-ChartPanel">
3001
- <div class="o-chart">
2975
+ <div class="o-chart" t-if="figureId">
3002
2976
  <div class="o-panel">
3003
2977
  <div
3004
2978
  class="o-panel-element o-panel-configuration"
3005
- t-att-class="state.panel !== 'configuration' ? 'inactive' : ''"
3006
- t-on-click="() => this.activatePanel('configuration')">
2979
+ t-att-class="store.panel !== 'configuration' ? 'inactive' : ''"
2980
+ t-on-click="() => this.store.activatePanel('configuration')">
3007
2981
  <i class="fa fa-sliders"/>
3008
2982
  Configuration
3009
2983
  </div>
3010
2984
  <div
3011
2985
  class="o-panel-element o-panel-design"
3012
- t-att-class="state.panel !== 'design' ? 'inactive' : ''"
3013
- t-on-click="() => this.activatePanel('design')">
2986
+ t-att-class="store.panel !== 'design' ? 'inactive' : ''"
2987
+ t-on-click="() => this.store.activatePanel('design')">
3014
2988
  <i class="fa fa-paint-brush"/>
3015
2989
  Design
3016
2990
  </div>
3017
2991
  </div>
3018
2992
 
3019
- <t t-set="definition" t-value="getChartDefinition()"/>
3020
- <t t-if="state.panel === 'configuration'">
2993
+ <t t-set="definition" t-value="getChartDefinition(this.figureId)"/>
2994
+ <t t-if="store.panel === 'configuration'">
3021
2995
  <Section>
3022
2996
  <t t-set-slot="title">Chart type</t>
3023
2997
  <t t-set="types" t-value="chartTypes"/>
@@ -3059,12 +3033,12 @@ https://fontawesome.com/license -->
3059
3033
  <t t-name="o-spreadsheet-ScatterConfigPanel">
3060
3034
  <div>
3061
3035
  <ChartDataSeries
3062
- ranges="() => this.getDataSeriesRanges()"
3036
+ ranges="this.getDataSeriesRanges()"
3063
3037
  onSelectionChanged="(ranges) => this.onDataSeriesRangesChanged(ranges)"
3064
3038
  onSelectionConfirmed="() => this.onDataSeriesConfirmed()"
3065
3039
  />
3066
3040
  <ChartLabelRange
3067
- range="() => this.getLabelRange()"
3041
+ range="this.getLabelRange()"
3068
3042
  isInvalid="isLabelInvalid"
3069
3043
  onSelectionChanged="(ranges) => this.onLabelRangeChanged(ranges)"
3070
3044
  onSelectionConfirmed="() => this.onLabelRangeConfirmed()"
@@ -3089,7 +3063,7 @@ https://fontawesome.com/license -->
3089
3063
  <Section class="'o-data-series'">
3090
3064
  <t t-set-slot="title">Key value</t>
3091
3065
  <SelectionInput
3092
- ranges="() => [this.getKeyValueRange()]"
3066
+ ranges="[this.getKeyValueRange()]"
3093
3067
  isInvalid="isKeyValueInvalid"
3094
3068
  hasSingleRange="true"
3095
3069
  required="true"
@@ -3101,7 +3075,7 @@ https://fontawesome.com/license -->
3101
3075
  <t t-set-slot="title">Baseline configuration</t>
3102
3076
  <div class="o-section-subtitle">Baseline value</div>
3103
3077
  <SelectionInput
3104
- ranges="() => [this.getBaselineRange()]"
3078
+ ranges="[this.getBaselineRange()]"
3105
3079
  isInvalid="isBaselineInvalid"
3106
3080
  hasSingleRange="true"
3107
3081
  onSelectionChanged="(ranges) => this.onBaselineRangeChanged(ranges)"
@@ -3169,7 +3143,7 @@ https://fontawesome.com/license -->
3169
3143
  </t>
3170
3144
 
3171
3145
  <t t-name="o-spreadsheet.Checkbox">
3172
- <label class="o-checkbox">
3146
+ <label class="o-checkbox" t-att-title="props.title">
3173
3147
  <input
3174
3148
  type="checkbox"
3175
3149
  t-att-name="props.name"
@@ -3299,7 +3273,7 @@ https://fontawesome.com/license -->
3299
3273
  <t t-set-slot="title">Apply to range</t>
3300
3274
  <div class="o-selection-cf">
3301
3275
  <SelectionInput
3302
- ranges="() => state.currentCF.ranges"
3276
+ ranges="state.currentCF.ranges"
3303
3277
  class="'o-range'"
3304
3278
  isInvalid="isRangeValid"
3305
3279
  onSelectionChanged="(ranges) => this.onRangesChanged(ranges)"
@@ -3571,27 +3545,15 @@ https://fontawesome.com/license -->
3571
3545
  </div>
3572
3546
  </t>
3573
3547
 
3574
- <t t-name="o-spreadsheet-ConditionalFormatPreviewList">
3575
- <div class="o-cf-preview-list h-100 overflow-auto" t-ref="cfList">
3576
- <t t-foreach="props.conditionalFormats" t-as="cf" t-key="cf.id">
3577
- <t t-call="o-spreadsheet-ConditionalFormattingPanelPreview"/>
3578
- </t>
3579
- <div
3580
- class="btn btn-link o-sidePanel-btn-link o-cf-add float-end"
3581
- t-on-click.prevent.stop="props.onAddConditionalFormat">
3582
- + Add another rule
3583
- </div>
3584
- </div>
3585
- </t>
3586
-
3587
- <t t-name="o-spreadsheet-ConditionalFormattingPanelPreview">
3548
+ <t t-name="o-spreadsheet-ConditionalFormatPreview">
3549
+ <t t-set="cf" t-value="props.conditionalFormat"/>
3588
3550
  <div
3589
- class="o-cf-preview d-flex position-relative"
3590
- t-att-class="{ 'o-cf-dragging': dragAndDrop.draggedItemId === cf.id }"
3591
- t-att-style="getPreviewDivStyle(cf)"
3551
+ class="o-cf-preview w-100"
3552
+ t-ref="cfPreview"
3553
+ t-att-class="props.class"
3592
3554
  t-att-data-id="cf.id"
3593
- t-on-click="(ev) => props.onPreviewClick(cf)"
3594
- t-on-mousedown="(ev) => this.onMouseDown(cf, ev)">
3555
+ t-on-click="props.onPreviewClick"
3556
+ t-on-mousedown="(ev) => this.onMouseDown(ev)">
3595
3557
  <div class="position-relative h-100 w-100 d-flex align-items-center">
3596
3558
  <div class="o-cf-drag-handle h-100 position-absolute d-flex align-items-center text-muted">
3597
3559
  <t t-call="o-spreadsheet-Icon.THIN_DRAG_HANDLE"/>
@@ -3630,6 +3592,28 @@ https://fontawesome.com/license -->
3630
3592
  </div>
3631
3593
  </t>
3632
3594
 
3595
+ <t t-name="o-spreadsheet-ConditionalFormatPreviewList">
3596
+ <div class="o-cf-preview-list h-100 overflow-auto" t-ref="cfList">
3597
+ <t t-foreach="props.conditionalFormats" t-as="cf" t-key="cf.id">
3598
+ <div
3599
+ class="o-cf-preview-container d-flex position-relative"
3600
+ t-att-style="getPreviewDivStyle(cf)">
3601
+ <ConditionalFormatPreview
3602
+ conditionalFormat="cf"
3603
+ class="dragAndDrop.draggedItemId === cf.id ? 'o-cf-dragging' : ''"
3604
+ onMouseDown="(ev) => this.onPreviewMouseDown(cf, ev)"
3605
+ onPreviewClick="() => props.onPreviewClick(cf)"
3606
+ />
3607
+ </div>
3608
+ </t>
3609
+ <div
3610
+ class="btn btn-link o-sidePanel-btn-link o-cf-add float-end"
3611
+ t-on-click.prevent.stop="props.onAddConditionalFormat">
3612
+ + Add another rule
3613
+ </div>
3614
+ </div>
3615
+ </t>
3616
+
3633
3617
  <t t-name="o-spreadsheet-ConditionalFormattingPanel">
3634
3618
  <div class="o-cf h-100">
3635
3619
  <t t-if="state.mode === 'list'">
@@ -3832,7 +3816,7 @@ https://fontawesome.com/license -->
3832
3816
 
3833
3817
  <t t-name="o-spreadsheet-DataValidationValueInRangeCriterionForm">
3834
3818
  <SelectionInput
3835
- ranges="() => [props.criterion.values[0] || '']"
3819
+ ranges="[props.criterion.values[0] || '']"
3836
3820
  onSelectionChanged="(ranges) => this.onRangeChanged(ranges[0])"
3837
3821
  required="true"
3838
3822
  hasSingleRange="true"
@@ -3852,7 +3836,7 @@ https://fontawesome.com/license -->
3852
3836
  <Section class="'o-dv-range'">
3853
3837
  <t t-set-slot="title">Apply to range</t>
3854
3838
  <SelectionInput
3855
- ranges="() => state.rule.ranges"
3839
+ ranges="state.rule.ranges"
3856
3840
  onSelectionChanged="(ranges) => this.onRangesChanged(ranges)"
3857
3841
  required="true"
3858
3842
  />
@@ -3896,7 +3880,7 @@ https://fontawesome.com/license -->
3896
3880
  </t>
3897
3881
 
3898
3882
  <t t-name="o-spreadsheet-DataValidationPreview">
3899
- <div class="o-dv-preview p-3" t-on-click="props.onClick">
3883
+ <div class="o-dv-preview p-3" t-on-click="props.onClick" t-ref="dvPreview">
3900
3884
  <div class="d-flex justify-content-between">
3901
3885
  <div class="o-dv-container d-flex flex-column">
3902
3886
  <div class="o-dv-preview-description fw-bold text-truncate" t-esc="descriptionString"/>
@@ -3920,16 +3904,18 @@ https://fontawesome.com/license -->
3920
3904
  type="text"
3921
3905
  t-ref="searchInput"
3922
3906
  class="o-input o-input-with-count"
3923
- t-on-input="onInput"
3907
+ t-on-input="onSearchInput"
3924
3908
  t-on-focus="onFocusSearch"
3925
3909
  t-on-keydown="onKeydownSearch"
3926
3910
  />
3927
3911
  <div class="o-input-count" t-if="hasSearchResult">
3928
- <t t-esc="env.model.getters.getCurrentSelectedMatchIndex()+1"/>
3912
+ <t t-esc="store.selectedMatchIndex+1"/>
3929
3913
  /
3930
- <t t-esc="env.model.getters.getSearchMatches().length"/>
3914
+ <t t-esc="store.searchMatches.length"/>
3915
+ </div>
3916
+ <div t-elif="!store.pendingSearch and store.toSearch !== ''" class="o-input-count">
3917
+ 0 / 0
3931
3918
  </div>
3932
- <div t-elif="!pendingSearch and toSearch !== ''" class="o-input-count">0 / 0</div>
3933
3919
  </div>
3934
3920
  <select
3935
3921
  class="o-input o-type-selector o-type-range-selector mt-3 mb-3"
@@ -3940,7 +3926,7 @@ https://fontawesome.com/license -->
3940
3926
  </select>
3941
3927
  <div t-if="searchOptions.searchScope === 'specificRange'">
3942
3928
  <SelectionInput
3943
- ranges="() => [this.dataRange]"
3929
+ ranges="[this.dataRange]"
3944
3930
  onSelectionChanged="(ranges) => this.onSearchRangeChanged(ranges)"
3945
3931
  onSelectionConfirmed.bind="updateDataRange"
3946
3932
  hasSingleRange="true"
@@ -3968,7 +3954,7 @@ https://fontawesome.com/license -->
3968
3954
  onChange.bind="searchFormulas"
3969
3955
  />
3970
3956
  </div>
3971
- <div class="o-matches-count mt-4" t-if="toSearch !== ''">
3957
+ <div class="o-matches-count mt-4" t-if="store.toSearch !== ''">
3972
3958
  <div t-if="searchOptions.searchScope === 'specificRange' and dataRange != ''">
3973
3959
  <t t-esc="specificRangeMatchesCount"/>
3974
3960
  </div>
@@ -3983,11 +3969,14 @@ https://fontawesome.com/license -->
3983
3969
  <div class="o-sidePanelButtons">
3984
3970
  <button
3985
3971
  t-att-disabled="!hasSearchResult"
3986
- t-on-click="onSelectPreviousCell"
3972
+ t-on-click="() => store.selectPreviousMatch()"
3987
3973
  class="o-button">
3988
3974
  Previous
3989
3975
  </button>
3990
- <button t-att-disabled="!hasSearchResult" t-on-click="onSelectNextCell" class="o-button">
3976
+ <button
3977
+ t-att-disabled="!hasSearchResult"
3978
+ t-on-click="() => store.selectNextMatch()"
3979
+ class="o-button">
3991
3980
  Next
3992
3981
  </button>
3993
3982
  </div>
@@ -3997,22 +3986,22 @@ https://fontawesome.com/license -->
3997
3986
  <input
3998
3987
  type="text"
3999
3988
  class="o-input o-input-without-count"
4000
- t-ref="replaceInput"
4001
3989
  t-on-keydown="onKeydownReplace"
3990
+ t-model="store.toReplace"
4002
3991
  />
4003
3992
  </div>
4004
3993
  </Section>
4005
3994
 
4006
3995
  <div class="o-sidePanelButtons" t-if="!env.model.getters.isReadonly()">
4007
3996
  <button
4008
- t-att-disabled="env.model.getters.getCurrentSelectedMatchIndex() === null"
4009
- t-on-click="replace"
3997
+ t-att-disabled="store.selectedMatchIndex === null"
3998
+ t-on-click="() => store.replace()"
4010
3999
  class="o-button">
4011
4000
  Replace
4012
4001
  </button>
4013
4002
  <button
4014
- t-att-disabled="env.model.getters.getCurrentSelectedMatchIndex() === null"
4015
- t-on-click="replaceAll"
4003
+ t-att-disabled="store.selectedMatchIndex === null"
4004
+ t-on-click="() => store.replaceAll()"
4016
4005
  class="o-button">
4017
4006
  Replace all
4018
4007
  </button>
@@ -4133,24 +4122,24 @@ https://fontawesome.com/license -->
4133
4122
  </t>
4134
4123
 
4135
4124
  <t t-name="o-spreadsheet-SidePanel">
4136
- <div class="o-sidePanel">
4125
+ <div class="o-sidePanel" t-if="sidePanelStore.isOpen">
4137
4126
  <div class="o-sidePanelHeader">
4138
4127
  <div class="o-sidePanelTitle" t-esc="getTitle()"/>
4139
- <div class="o-sidePanelClose" t-on-click="() => this.props.onCloseSidePanel()">✕</div>
4128
+ <div class="o-sidePanelClose" t-on-click="close">✕</div>
4140
4129
  </div>
4141
4130
  <div class="o-sidePanelBody">
4142
4131
  <t
4143
- t-component="state.panel.Body"
4144
- t-props="props.panelProps"
4145
- onCloseSidePanel="props.onCloseSidePanel"
4146
- t-key="'Body_' + props.component"
4132
+ t-component="panel.Body"
4133
+ t-props="sidePanelStore.panelProps"
4134
+ onCloseSidePanel.bind="close"
4135
+ t-key="'Body_' + sidePanelStore.componentTag"
4147
4136
  />
4148
4137
  </div>
4149
- <div class="o-sidePanelFooter" t-if="state.panel.Footer">
4138
+ <div class="o-sidePanelFooter" t-if="panel?.Footer">
4150
4139
  <t
4151
- t-component="state.panel.Footer"
4152
- t-props="props.panelProps"
4153
- t-key="'Footer_' + props.component"
4140
+ t-component="panel.Footer"
4141
+ t-props="sidePanelStore.panelProps"
4142
+ t-key="'Footer_' + sidePanelStore.componentTag"
4154
4143
  />
4155
4144
  </div>
4156
4145
  </div>
@@ -4212,12 +4201,7 @@ https://fontawesome.com/license -->
4212
4201
  <SpreadsheetDashboard/>
4213
4202
  </t>
4214
4203
  <t t-else="">
4215
- <TopBar
4216
- onClick="() => this.focusGrid()"
4217
- onComposerContentFocused="(selection) => this.onTopBarComposerFocused(selection)"
4218
- focusComposer="focusTopBarComposer"
4219
- dropdownMaxHeight="gridHeight"
4220
- />
4204
+ <TopBar onClick="() => this.focusGrid()" dropdownMaxHeight="gridHeight"/>
4221
4205
  <div
4222
4206
  class="o-grid-container"
4223
4207
  t-att-class="{'o-two-columns': !sidePanel.isOpen}"
@@ -4231,21 +4215,10 @@ https://fontawesome.com/license -->
4231
4215
  <HeaderGroupContainer layers="rowLayers" dimension="'ROW'"/>
4232
4216
  </div>
4233
4217
  <div class="o-group-grid overflow-hidden">
4234
- <Grid
4235
- sidePanelIsOpen="sidePanel.isOpen"
4236
- focusComposer="focusGridComposer"
4237
- exposeFocus="(focus) => this._focusGrid = focus"
4238
- onComposerContentFocused="() => this.onGridComposerContentFocused()"
4239
- onGridComposerCellFocused="(content, selection) => this.onGridComposerCellFocused(content, selection)"
4240
- />
4218
+ <Grid exposeFocus="(focus) => this._focusGrid = focus"/>
4241
4219
  </div>
4242
4220
  </div>
4243
- <SidePanel
4244
- t-if="sidePanel.isOpen"
4245
- onCloseSidePanel="() => this.closeSidePanel()"
4246
- component="sidePanel.component"
4247
- panelProps="sidePanel.panelProps"
4248
- />
4221
+ <SidePanel t-if="sidePanel.isOpen"/>
4249
4222
  <BottomBar onClick="() => this.focusGrid()"/>
4250
4223
  </t>
4251
4224
  </div>
@@ -4419,10 +4392,7 @@ https://fontawesome.com/license -->
4419
4392
  <ActionButton action="VIEW.createRemoveFilter" class="'o-hoverable-button'"/>
4420
4393
  </div>
4421
4394
  </div>
4422
- <TopBarComposer
4423
- focus="props.focusComposer"
4424
- onComposerContentFocused="props.onComposerContentFocused"
4425
- />
4395
+ <TopBarComposer/>
4426
4396
  </div>
4427
4397
  </div>
4428
4398
  <Menu
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "17.2.0-alpha.2",
3
+ "version": "17.2.0-alpha.5",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",