@odoo/o-spreadsheet 19.1.0-alpha.1 → 19.1.0-alpha.2

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.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.1.0-alpha.1
6
- * @date 2025-09-12T13:33:41.605Z
7
- * @hash d3e4e7b
5
+ * @version 19.1.0-alpha.2
6
+ * @date 2025-09-19T07:26:49.306Z
7
+ * @hash 8cc543d
8
8
  */
9
9
 
10
10
  'use strict';
@@ -589,7 +589,6 @@ var DIRECTION;
589
589
  const CANVAS_SHIFT = 0.5;
590
590
  // Colors
591
591
  const HIGHLIGHT_COLOR = "#017E84";
592
- const BACKGROUND_GRAY_COLOR = "#f5f5f5";
593
592
  const BACKGROUND_HEADER_COLOR = "#F8F9FA";
594
593
  const BACKGROUND_HEADER_SELECTED_COLOR = "#E8EAED";
595
594
  const BACKGROUND_HEADER_ACTIVE_COLOR = "#595959";
@@ -599,15 +598,10 @@ const SELECTION_BORDER_COLOR = "#3266ca";
599
598
  const HEADER_BORDER_COLOR = "#C0C0C0";
600
599
  const CELL_BORDER_COLOR = "#E2E3E3";
601
600
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
602
- const DISABLED_TEXT_COLOR = "#CACACA";
603
601
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
604
602
  const LINK_COLOR = HIGHLIGHT_COLOR;
605
603
  const FILTERS_COLOR = "#188038";
606
- const SEPARATOR_COLOR = "#E0E2E4";
607
- const ICONS_COLOR = "#4A4F59";
608
- const HEADER_GROUPING_BACKGROUND_COLOR = "#F5F5F5";
609
604
  const HEADER_GROUPING_BORDER_COLOR = "#999";
610
- const GRID_BORDER_COLOR = "#E2E3E3";
611
605
  const FROZEN_PANE_HEADER_BORDER_COLOR = "#BCBCBC";
612
606
  const FROZEN_PANE_BORDER_COLOR = "#DADFE8";
613
607
  const COMPOSER_ASSISTANT_COLOR = "#9B359B";
@@ -619,30 +613,9 @@ const CHART_WATERFALL_SUBTOTAL_COLOR = "#AAAAAA";
619
613
  const GRAY_900 = "#111827";
620
614
  const GRAY_300 = "#D8DADD";
621
615
  const GRAY_200 = "#E7E9ED";
622
- const GRAY_100 = "#F9FAFB";
623
616
  const TEXT_BODY = "#374151";
624
617
  const TEXT_BODY_MUTED = TEXT_BODY + "C2";
625
- const TEXT_HEADING = "#111827";
626
- const PRIMARY_BUTTON_BG = "#714B67";
627
- const PRIMARY_BUTTON_HOVER_BG = "#624159";
628
- const PRIMARY_BUTTON_ACTIVE_BG = "#f1edf0";
629
- const BUTTON_BG = GRAY_200;
630
- const BUTTON_HOVER_BG = GRAY_300;
631
- const BUTTON_HOVER_TEXT_COLOR = "#111827";
632
- const BUTTON_ACTIVE_BG = "#e6f2f3";
633
- const BUTTON_ACTIVE_TEXT_COLOR = "#111827";
634
618
  const ACTION_COLOR = HIGHLIGHT_COLOR;
635
- const ACTION_COLOR_HOVER = "#01585c";
636
- const ALERT_WARNING_BG = "#FBEBCC";
637
- const ALERT_WARNING_BORDER = "#F8E2B3";
638
- const ALERT_WARNING_TEXT_COLOR = "#946D23";
639
- const ALERT_DANGER_BG = "#D44C591A";
640
- const ALERT_DANGER_BORDER = "#C34A41";
641
- const ALERT_DANGER_TEXT_COLOR = "#C34A41";
642
- const ALERT_INFO_BG = "#CDEDF1";
643
- const ALERT_INFO_BORDER = "#98DBE2";
644
- const ALERT_INFO_TEXT_COLOR = "#09414A";
645
- const BADGE_SELECTED_COLOR = "#E6F2F3";
646
619
  const CHART_PADDING = 20;
647
620
  const CHART_PADDING_BOTTOM = 10;
648
621
  const CHART_PADDING_TOP = 15;
@@ -740,9 +713,7 @@ const MIN_COL_WIDTH = 5;
740
713
  const HEADER_HEIGHT = 26;
741
714
  const HEADER_WIDTH = 48;
742
715
  const DESKTOP_TOPBAR_TOOLBAR_HEIGHT = 34;
743
- const MOBILE_TOPBAR_TOOLBAR_HEIGHT = 44;
744
716
  const DESKTOP_BOTTOMBAR_HEIGHT = 36;
745
- const MOBILE_BOTTOMBAR_HEIGHT = 44;
746
717
  const DEFAULT_CELL_WIDTH = 96;
747
718
  const DEFAULT_CELL_HEIGHT = 23;
748
719
  const SCROLLBAR_WIDTH = 15;
@@ -750,7 +721,6 @@ const AUTOFILL_EDGE_LENGTH = 8;
750
721
  const ICON_EDGE_LENGTH = 18;
751
722
  const MIN_CF_ICON_MARGIN = 4;
752
723
  const MIN_CELL_TEXT_MARGIN = 4;
753
- const CF_ICON_EDGE_LENGTH = 15;
754
724
  const PADDING_AUTORESIZE_VERTICAL = 3;
755
725
  const PADDING_AUTORESIZE_HORIZONTAL = MIN_CELL_TEXT_MARGIN;
756
726
  const GROUP_LAYER_WIDTH = 21;
@@ -765,11 +735,6 @@ const MOBILE_WIDTH_BREAKPOINT = 768;
765
735
  const MENU_WIDTH = 250;
766
736
  const MENU_VERTICAL_PADDING = 6;
767
737
  const DESKTOP_MENU_ITEM_HEIGHT = 26;
768
- const MOBILE_MENU_ITEM_HEIGHT = 35;
769
- const MENU_ITEM_PADDING_HORIZONTAL = 11;
770
- const MENU_ITEM_PADDING_VERTICAL = 4;
771
- const MENU_SEPARATOR_BORDER_WIDTH = 1;
772
- const MENU_SEPARATOR_PADDING = 5;
773
738
  // Style
774
739
  const DEFAULT_STYLE = {
775
740
  align: "left",
@@ -823,23 +788,6 @@ const FORBIDDEN_SHEETNAME_CHARS = ["'", "*", "?", "/", "\\", "[", "]"];
823
788
  const FORBIDDEN_SHEETNAME_CHARS_IN_EXCEL_REGEX = /'|\*|\?|\/|\\|\[|\]/;
824
789
  // Cells
825
790
  const FORMULA_REF_IDENTIFIER = "|";
826
- // Components
827
- var ComponentsImportance;
828
- (function (ComponentsImportance) {
829
- ComponentsImportance[ComponentsImportance["Grid"] = 0] = "Grid";
830
- ComponentsImportance[ComponentsImportance["Highlight"] = 5] = "Highlight";
831
- ComponentsImportance[ComponentsImportance["HeaderGroupingButton"] = 6] = "HeaderGroupingButton";
832
- ComponentsImportance[ComponentsImportance["Figure"] = 10] = "Figure";
833
- ComponentsImportance[ComponentsImportance["ScrollBar"] = 15] = "ScrollBar";
834
- ComponentsImportance[ComponentsImportance["GridPopover"] = 19] = "GridPopover";
835
- ComponentsImportance[ComponentsImportance["GridComposer"] = 20] = "GridComposer";
836
- ComponentsImportance[ComponentsImportance["IconPicker"] = 25] = "IconPicker";
837
- ComponentsImportance[ComponentsImportance["TopBarComposer"] = 30] = "TopBarComposer";
838
- ComponentsImportance[ComponentsImportance["Popover"] = 35] = "Popover";
839
- ComponentsImportance[ComponentsImportance["FigureAnchor"] = 1000] = "FigureAnchor";
840
- ComponentsImportance[ComponentsImportance["FigureSnapLine"] = 1001] = "FigureSnapLine";
841
- ComponentsImportance[ComponentsImportance["FigureTooltip"] = 1002] = "FigureTooltip";
842
- })(ComponentsImportance || (ComponentsImportance = {}));
843
791
  let DEFAULT_SHEETVIEW_SIZE = 0;
844
792
  function getDefaultSheetViewSize() {
845
793
  return DEFAULT_SHEETVIEW_SIZE;
@@ -1369,8 +1317,19 @@ function memoize(func) {
1369
1317
  },
1370
1318
  }[funcName];
1371
1319
  }
1320
+ /**
1321
+ * Removes the specified indexes from the array.
1322
+ * Sparse (empty) elements are transformed to undefined (unless their index is explicitly removed).
1323
+ */
1372
1324
  function removeIndexesFromArray(array, indexes) {
1373
- return array.filter((_, index) => !indexes.includes(index));
1325
+ const toRemove = new Set(indexes);
1326
+ const newArray = [];
1327
+ for (let i = 0; i < array.length; i++) {
1328
+ if (!toRemove.has(i)) {
1329
+ newArray.push(array[i]);
1330
+ }
1331
+ }
1332
+ return newArray;
1374
1333
  }
1375
1334
  function insertItemsAtIndex(array, items, index) {
1376
1335
  const newArray = [...array];
@@ -10666,153 +10625,6 @@ class ComposerFocusStore extends SpreadsheetStore {
10666
10625
  }
10667
10626
  }
10668
10627
 
10669
- /**
10670
- * This file is largely inspired by owl 1.
10671
- * `css` tag has been removed from owl 2 without workaround to manage css.
10672
- * So, the solution was to import the behavior of owl 1 directly in our
10673
- * codebase, with one difference: the css is added to the sheet as soon as the
10674
- * css tag is executed. In owl 1, the css was added as soon as a Component was
10675
- * created for the first time.
10676
- */
10677
- const STYLESHEETS = {};
10678
- let nextId = 0;
10679
- /**
10680
- * CSS tag helper for defining inline stylesheets. With this, one can simply define
10681
- * an inline stylesheet with just the following code:
10682
- * ```js
10683
- * css`.component-a { color: red; }`;
10684
- * ```
10685
- */
10686
- function css(strings, ...args) {
10687
- const name = `__sheet__${nextId++}`;
10688
- const value = String.raw(strings, ...args);
10689
- registerSheet(name, value);
10690
- activateSheet(name);
10691
- return name;
10692
- }
10693
- function processSheet(str) {
10694
- const tokens = str.split(/(\{|\}|;)/).map((s) => s.trim());
10695
- const selectorStack = [];
10696
- const parts = [];
10697
- let rules = [];
10698
- function generateSelector(stackIndex, parentSelector) {
10699
- const parts = [];
10700
- for (const selector of selectorStack[stackIndex]) {
10701
- let part = (parentSelector && parentSelector + " " + selector) || selector;
10702
- if (part.includes("&")) {
10703
- part = selector.replace(/&/g, parentSelector || "");
10704
- }
10705
- if (stackIndex < selectorStack.length - 1) {
10706
- part = generateSelector(stackIndex + 1, part);
10707
- }
10708
- parts.push(part);
10709
- }
10710
- return parts.join(", ");
10711
- }
10712
- function generateRules() {
10713
- if (rules.length) {
10714
- parts.push(generateSelector(0) + " {");
10715
- parts.push(...rules);
10716
- parts.push("}");
10717
- rules = [];
10718
- }
10719
- }
10720
- while (tokens.length) {
10721
- const token = tokens.shift();
10722
- if (token === "}") {
10723
- generateRules();
10724
- selectorStack.pop();
10725
- }
10726
- else {
10727
- if (tokens[0] === "{") {
10728
- generateRules();
10729
- selectorStack.push(token.split(/\s*,\s*/));
10730
- tokens.shift();
10731
- }
10732
- if (tokens[0] === ";") {
10733
- rules.push(" " + token + ";");
10734
- }
10735
- }
10736
- }
10737
- return parts.join("\n");
10738
- }
10739
- function registerSheet(id, css) {
10740
- const sheet = document.createElement("style");
10741
- sheet.textContent = processSheet(css);
10742
- STYLESHEETS[id] = sheet;
10743
- }
10744
- function activateSheet(id) {
10745
- const sheet = STYLESHEETS[id];
10746
- sheet.setAttribute("component", id);
10747
- document.head.appendChild(sheet);
10748
- }
10749
- function getTextDecoration({ strikethrough, underline, }) {
10750
- if (!strikethrough && !underline) {
10751
- return "none";
10752
- }
10753
- return `${strikethrough ? "line-through" : ""} ${underline ? "underline" : ""}`;
10754
- }
10755
- /**
10756
- * Convert the cell style to CSS properties.
10757
- */
10758
- function cellStyleToCss(style) {
10759
- const attributes = cellTextStyleToCss(style);
10760
- if (!style)
10761
- return attributes;
10762
- if (style.fillColor) {
10763
- attributes["background"] = style.fillColor;
10764
- }
10765
- return attributes;
10766
- }
10767
- /**
10768
- * Convert the cell text style to CSS properties.
10769
- */
10770
- function cellTextStyleToCss(style) {
10771
- const attributes = {};
10772
- if (!style)
10773
- return attributes;
10774
- if (style.bold) {
10775
- attributes["font-weight"] = "bold";
10776
- }
10777
- if (style.italic) {
10778
- attributes["font-style"] = "italic";
10779
- }
10780
- if (style.fontSize) {
10781
- attributes["font-size"] = `${style.fontSize}px`;
10782
- }
10783
- if (style.strikethrough || style.underline) {
10784
- let decoration = style.strikethrough ? "line-through" : "";
10785
- decoration = style.underline ? decoration + " underline" : decoration;
10786
- attributes["text-decoration"] = decoration;
10787
- }
10788
- if (style.textColor) {
10789
- attributes["color"] = style.textColor;
10790
- }
10791
- return attributes;
10792
- }
10793
- /**
10794
- * Transform CSS properties into a CSS string.
10795
- */
10796
- function cssPropertiesToCss(attributes) {
10797
- let styleStr = "";
10798
- for (const attName in attributes) {
10799
- if (!attributes[attName]) {
10800
- continue;
10801
- }
10802
- styleStr += `${attName}:${attributes[attName]}; `;
10803
- }
10804
- return styleStr;
10805
- }
10806
- function getElementMargins(el) {
10807
- const style = window.getComputedStyle(el);
10808
- return {
10809
- top: parseInt(style.marginTop, 10) || 0,
10810
- bottom: parseInt(style.marginBottom, 10) || 0,
10811
- left: parseInt(style.marginLeft, 10) || 0,
10812
- right: parseInt(style.marginRight, 10) || 0,
10813
- };
10814
- }
10815
-
10816
10628
  const chartJsExtensionRegistry = new Registry();
10817
10629
  function areChartJSExtensionsLoaded() {
10818
10630
  return !!window.Chart.registry.plugins.get("chartShowValuesPlugin");
@@ -16085,8 +15897,9 @@ function interactiveSort(env, sheetId, anchor, zone, sortDirection, sortOptions)
16085
15897
  }
16086
15898
 
16087
15899
  function sortMatrix(matrix, locale, ...criteria) {
16088
- for (const [i, value] of criteria.entries()) {
16089
- assert(value !== undefined, _t("Value for parameter %d is missing, while the function [[FUNCTION_NAME]] expect a number or a range.", i + 1));
15900
+ for (let i = 0; i < criteria.length; i++) {
15901
+ const param = i % 2 === 0 ? "sort_column" : "is_ascending";
15902
+ assert(criteria[i] !== undefined, _t("Value for parameter %s is missing in [[FUNCTION_NAME]].", param));
16090
15903
  }
16091
15904
  const sortingOrders = [];
16092
15905
  const sortColumns = [];
@@ -24034,15 +23847,6 @@ function getNextNonEmptyBar(bars, startIndex) {
24034
23847
  return bars.find((bar, i) => i > startIndex && bar.height !== 0);
24035
23848
  }
24036
23849
 
24037
- css /* scss */ `
24038
- .o-spreadsheet {
24039
- .o-chart-custom-tooltip {
24040
- font-size: 12px;
24041
- background-color: #fff;
24042
- z-index: ${ComponentsImportance.FigureTooltip};
24043
- }
24044
- }
24045
- `;
24046
23850
  chartJsExtensionRegistry.add("chartShowValuesPlugin", {
24047
23851
  register: (Chart) => Chart.register(chartShowValuesPlugin),
24048
23852
  unregister: (Chart) => Chart.unregister(chartShowValuesPlugin),
@@ -27782,13 +27586,6 @@ const zoomWindowPlugin = {
27782
27586
  },
27783
27587
  };
27784
27588
 
27785
- css /* scss */ `
27786
- .o-spreadsheet {
27787
- .o-master-chart-container {
27788
- height: ${MASTER_CHART_HEIGHT}px;
27789
- }
27790
- }
27791
- `;
27792
27589
  chartJsExtensionRegistry.add("zoomWindowPlugin", {
27793
27590
  register: (Chart) => Chart.register(zoomWindowPlugin),
27794
27591
  unregister: (Chart) => Chart.unregister(zoomWindowPlugin),
@@ -31599,6 +31396,81 @@ function getCarouselItemTitle(getters, item) {
31599
31396
  return matchedChart.displayName;
31600
31397
  }
31601
31398
 
31399
+ /**
31400
+ * This file is largely inspired by owl 1.
31401
+ * `css` tag has been removed from owl 2 without workaround to manage css.
31402
+ * So, the solution was to import the behavior of owl 1 directly in our
31403
+ * codebase, with one difference: the css is added to the sheet as soon as the
31404
+ * css tag is executed. In owl 1, the css was added as soon as a Component was
31405
+ * created for the first time.
31406
+ */
31407
+ function getTextDecoration({ strikethrough, underline, }) {
31408
+ if (!strikethrough && !underline) {
31409
+ return "none";
31410
+ }
31411
+ return `${strikethrough ? "line-through" : ""} ${underline ? "underline" : ""}`;
31412
+ }
31413
+ /**
31414
+ * Convert the cell style to CSS properties.
31415
+ */
31416
+ function cellStyleToCss(style) {
31417
+ const attributes = cellTextStyleToCss(style);
31418
+ if (!style)
31419
+ return attributes;
31420
+ if (style.fillColor) {
31421
+ attributes["background"] = style.fillColor;
31422
+ }
31423
+ return attributes;
31424
+ }
31425
+ /**
31426
+ * Convert the cell text style to CSS properties.
31427
+ */
31428
+ function cellTextStyleToCss(style) {
31429
+ const attributes = {};
31430
+ if (!style)
31431
+ return attributes;
31432
+ if (style.bold) {
31433
+ attributes["font-weight"] = "bold";
31434
+ }
31435
+ if (style.italic) {
31436
+ attributes["font-style"] = "italic";
31437
+ }
31438
+ if (style.fontSize) {
31439
+ attributes["font-size"] = `${style.fontSize}px`;
31440
+ }
31441
+ if (style.strikethrough || style.underline) {
31442
+ let decoration = style.strikethrough ? "line-through" : "";
31443
+ decoration = style.underline ? decoration + " underline" : decoration;
31444
+ attributes["text-decoration"] = decoration;
31445
+ }
31446
+ if (style.textColor) {
31447
+ attributes["color"] = style.textColor;
31448
+ }
31449
+ return attributes;
31450
+ }
31451
+ /**
31452
+ * Transform CSS properties into a CSS string.
31453
+ */
31454
+ function cssPropertiesToCss(attributes) {
31455
+ let styleStr = "";
31456
+ for (const attName in attributes) {
31457
+ if (!attributes[attName]) {
31458
+ continue;
31459
+ }
31460
+ styleStr += `${attName}:${attributes[attName]}; `;
31461
+ }
31462
+ return styleStr;
31463
+ }
31464
+ function getElementMargins(el) {
31465
+ const style = window.getComputedStyle(el);
31466
+ return {
31467
+ top: parseInt(style.marginTop, 10) || 0,
31468
+ bottom: parseInt(style.marginBottom, 10) || 0,
31469
+ left: parseInt(style.marginLeft, 10) || 0,
31470
+ right: parseInt(style.marginRight, 10) || 0,
31471
+ };
31472
+ }
31473
+
31602
31474
  /**
31603
31475
  * Repeatedly calls a callback function with a time delay between calls.
31604
31476
  */
@@ -31653,59 +31525,6 @@ function useTimeOut() {
31653
31525
  };
31654
31526
  }
31655
31527
 
31656
- //------------------------------------------------------------------------------
31657
- // Context Menu Component
31658
- //------------------------------------------------------------------------------
31659
- css /* scss */ `
31660
- .o-menu {
31661
- background-color: white;
31662
- user-select: none;
31663
-
31664
- .o-menu-item {
31665
- height: ${DESKTOP_MENU_ITEM_HEIGHT}px;
31666
- padding: ${MENU_ITEM_PADDING_VERTICAL}px ${MENU_ITEM_PADDING_HORIZONTAL}px;
31667
- cursor: pointer;
31668
- user-select: none;
31669
-
31670
- .o-menu-item-name {
31671
- min-width: 40%;
31672
- }
31673
-
31674
- .o-menu-item-icon {
31675
- display: inline-block;
31676
- margin: 0px 8px 0px 0px;
31677
- width: ${DESKTOP_MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
31678
- line-height: ${DESKTOP_MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
31679
- }
31680
-
31681
- &:not(.disabled) {
31682
- &:hover,
31683
- &.o-menu-item-active {
31684
- background-color: ${BUTTON_ACTIVE_BG};
31685
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
31686
- }
31687
- .o-menu-item-description {
31688
- color: grey;
31689
- }
31690
- .o-menu-item-icon {
31691
- .o-icon {
31692
- color: ${ICONS_COLOR};
31693
- }
31694
- }
31695
- }
31696
- &.disabled {
31697
- color: ${DISABLED_TEXT_COLOR};
31698
- cursor: not-allowed;
31699
- }
31700
- }
31701
- }
31702
-
31703
- .o-spreadsheet-mobile {
31704
- .o-menu-item {
31705
- height: ${MOBILE_MENU_ITEM_HEIGHT}px;
31706
- }
31707
- }
31708
- `;
31709
31528
  class Menu extends owl.Component {
31710
31529
  static template = "o-spreadsheet-Menu";
31711
31530
  static props = {
@@ -31882,16 +31701,6 @@ function usePopoverContainer() {
31882
31701
  return container;
31883
31702
  }
31884
31703
 
31885
- css /* scss */ `
31886
- .o-popover {
31887
- position: absolute;
31888
- z-index: ${ComponentsImportance.Popover};
31889
- overflow: auto;
31890
- box-shadow: 1px 2px 5px 2px rgb(51 51 51 / 15%);
31891
- width: fit-content;
31892
- height: fit-content;
31893
- }
31894
- `;
31895
31704
  class Popover extends owl.Component {
31896
31705
  static template = "o-spreadsheet-Popover";
31897
31706
  static props = {
@@ -31914,7 +31723,6 @@ class Popover extends owl.Component {
31914
31723
  onMouseWheel: () => { },
31915
31724
  onPopoverMoved: () => { },
31916
31725
  onPopoverHidden: () => { },
31917
- zIndex: ComponentsImportance.Popover,
31918
31726
  };
31919
31727
  popoverRef = owl.useRef("popover");
31920
31728
  popoverContentRef = owl.useRef("popoverContent");
@@ -31935,11 +31743,6 @@ class Popover extends owl.Component {
31935
31743
  // the element in rendered, so we can still set its position
31936
31744
  owl.useEffect(this.computePopoverPosition.bind(this));
31937
31745
  }
31938
- get popoverStyle() {
31939
- return cssPropertiesToCss({
31940
- "z-index": `${this.props.zIndex}`,
31941
- });
31942
- }
31943
31746
  computePopoverPosition() {
31944
31747
  if (!this.containerRect)
31945
31748
  throw new Error("Popover container is not defined");
@@ -32130,12 +31933,6 @@ class TopRightPopoverContext extends PopoverPositionContext {
32130
31933
  //------------------------------------------------------------------------------
32131
31934
  // Context MenuPopover Component
32132
31935
  //------------------------------------------------------------------------------
32133
- css /* scss */ `
32134
- .o-menu-wrapper {
32135
- padding: ${MENU_VERTICAL_PADDING}px 0px;
32136
- background-color: white;
32137
- }
32138
- `;
32139
31936
  const TIMEOUT_DELAY = 250;
32140
31937
  class MenuPopover extends owl.Component {
32141
31938
  static template = "o-spreadsheet-Menu-Popover";
@@ -32576,79 +32373,6 @@ figureRegistry.add("carousel", {
32576
32373
  const ANCHOR_SIZE = 8;
32577
32374
  const BORDER_WIDTH = 1;
32578
32375
  const ACTIVE_BORDER_WIDTH = 2;
32579
- css /*SCSS*/ `
32580
- div.o-figure {
32581
- position: absolute;
32582
- width: 100%;
32583
- height: 100%;
32584
- user-select: none;
32585
-
32586
- &:focus {
32587
- outline: none;
32588
- }
32589
- }
32590
-
32591
- div.o-figure-border {
32592
- z-index: 1;
32593
- }
32594
-
32595
- .o-figure-wrapper {
32596
- position: absolute;
32597
- box-sizing: content-box;
32598
- pointer-events: auto;
32599
-
32600
- .o-fig-anchor {
32601
- z-index: ${ComponentsImportance.FigureAnchor};
32602
- position: absolute;
32603
- width: ${ANCHOR_SIZE}px;
32604
- height: ${ANCHOR_SIZE}px;
32605
- background-color: #1a73e8;
32606
- outline: ${BORDER_WIDTH}px solid white;
32607
-
32608
- &.o-top {
32609
- cursor: n-resize;
32610
- }
32611
- &.o-topRight {
32612
- cursor: ne-resize;
32613
- }
32614
- &.o-right {
32615
- cursor: e-resize;
32616
- }
32617
- &.o-bottomRight {
32618
- cursor: se-resize;
32619
- }
32620
- &.o-bottom {
32621
- cursor: s-resize;
32622
- }
32623
- &.o-bottomLeft {
32624
- cursor: sw-resize;
32625
- }
32626
- &.o-left {
32627
- cursor: w-resize;
32628
- }
32629
- &.o-topLeft {
32630
- cursor: nw-resize;
32631
- }
32632
- }
32633
-
32634
- .o-figure-menu {
32635
- right: 0px;
32636
- top: 0px;
32637
- display: none;
32638
- }
32639
-
32640
- .o-figure-menu-item {
32641
- cursor: pointer;
32642
- }
32643
-
32644
- .o-figure.active:focus,
32645
- .o-figure:hover {
32646
- .o-figure-menu {
32647
- display: flex;
32648
- }
32649
- }
32650
- }
32651
- `;
32652
32376
  class FigureComponent extends owl.Component {
32653
32377
  static template = "o-spreadsheet-FigureComponent";
32654
32378
  static props = {
@@ -32693,7 +32417,6 @@ class FigureComponent extends owl.Component {
32693
32417
  top: `${y}px`,
32694
32418
  width: `${width}px`,
32695
32419
  height: `${height}px`,
32696
- "z-index": String(ComponentsImportance.Figure + (this.isSelected ? 1 : 0)),
32697
32420
  });
32698
32421
  }
32699
32422
  getResizerPosition(resizer) {
@@ -32972,21 +32695,6 @@ class CellPopoverStore extends SpreadsheetStore {
32972
32695
  }
32973
32696
 
32974
32697
  const ERROR_TOOLTIP_MAX_HEIGHT = 80;
32975
- const ERROR_TOOLTIP_WIDTH = 180;
32976
- css /* scss */ `
32977
- .o-error-tooltip {
32978
- font-size: 13px;
32979
- background-color: white;
32980
- border-left: 3px solid red;
32981
- padding: 10px;
32982
- width: ${ERROR_TOOLTIP_WIDTH}px;
32983
- overflow-wrap: break-word;
32984
-
32985
- .o-error-tooltip-message {
32986
- overflow: hidden;
32987
- }
32988
- }
32989
- `;
32990
32698
  class ErrorToolTip extends owl.Component {
32991
32699
  static maxSize = { maxHeight: ERROR_TOOLTIP_MAX_HEIGHT };
32992
32700
  static template = "o-spreadsheet-ErrorToolTip";
@@ -33087,34 +32795,6 @@ class Collapse extends owl.Component {
33087
32795
  }
33088
32796
  }
33089
32797
 
33090
- css /* scss */ `
33091
- .o_side_panel_collapsible_title {
33092
- font-size: 16px;
33093
- cursor: pointer;
33094
- padding: 6px 0px 6px 6px !important;
33095
-
33096
- .collapsor-arrow {
33097
- transform: rotate(-90deg);
33098
- display: inline-block;
33099
- transform-origin: 8px 11px;
33100
- transition: transform 0.2s ease-in-out;
33101
-
33102
- .o-icon {
33103
- width: 16px;
33104
- height: 22px;
33105
- }
33106
- }
33107
- .collapsor:not(.collapsed) .collapsor-arrow {
33108
- transform: rotate(0);
33109
- }
33110
-
33111
- .collapsor {
33112
- width: 100%;
33113
- transition-delay: 0.35s;
33114
- transition-property: all;
33115
- }
33116
- }
33117
- `;
33118
32798
  class SidePanelCollapsible extends owl.Component {
33119
32799
  static template = "o-spreadsheet-SidePanelCollapsible";
33120
32800
  static props = {
@@ -33751,27 +33431,6 @@ function updateSelectionWithArrowKeys(ev, selection) {
33751
33431
  }
33752
33432
  }
33753
33433
 
33754
- css /* scss */ `
33755
- .o-autocomplete-dropdown {
33756
- pointer-events: auto;
33757
- cursor: pointer;
33758
- background-color: #fff;
33759
- max-width: 400px;
33760
- z-index: 1;
33761
-
33762
- .o-autocomplete-value-focus {
33763
- background-color: #f2f2f2;
33764
- }
33765
-
33766
- & > div {
33767
- padding: 1px 5px 5px 5px;
33768
- .o-autocomplete-description {
33769
- padding-left: 5px;
33770
- font-size: 11px;
33771
- }
33772
- }
33773
- }
33774
- `;
33775
33434
  class TextValueProvider extends owl.Component {
33776
33435
  static template = "o-spreadsheet-TextValueProvider";
33777
33436
  static props = {
@@ -34073,36 +33732,6 @@ class FunctionDescriptionProvider extends owl.Component {
34073
33732
  }
34074
33733
 
34075
33734
  const BUBBLE_ARROW_SIZE = 7;
34076
- css /* scss */ `
34077
- .o-spreadsheet {
34078
- .o-speech-bubble {
34079
- background-color: white;
34080
- box-sizing: border-box;
34081
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
34082
- border: 1px solid #ccc;
34083
- z-index: ${ComponentsImportance.Popover};
34084
-
34085
- &::after {
34086
- content: "";
34087
- position: absolute;
34088
- top: 100%;
34089
- left: 50%;
34090
- background-color: white;
34091
- height: ${BUBBLE_ARROW_SIZE}px;
34092
- width: ${BUBBLE_ARROW_SIZE}px;
34093
- transform-origin: top left;
34094
- transform: translate(0, -67%) rotate(45deg);
34095
- border-right: 1px solid #ccc;
34096
- border-bottom: 1px solid #ccc;
34097
- box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
34098
- }
34099
- }
34100
-
34101
- .o-speech-content {
34102
- max-width: 300px;
34103
- }
34104
- }
34105
- `;
34106
33735
  class SpeechBubble extends owl.Component {
34107
33736
  static template = "o-spreadsheet-SpeechBubble";
34108
33737
  static props = { content: String, anchorRect: Object };
@@ -34131,85 +33760,6 @@ const CLOSE_ICON_RADIUS = 9;
34131
33760
  const selectionIndicatorClass = "selector-flag";
34132
33761
  const highlightParenthesisClass = "highlight-parenthesis-flag";
34133
33762
  const highlightClass = "highlight-flag";
34134
- const selectionIndicatorColor = "#a9a9a9";
34135
- const selectionIndicator = "␣";
34136
- css /* scss */ `
34137
- .o-composer-container {
34138
- .o-composer {
34139
- overflow-y: auto;
34140
- overflow-x: hidden;
34141
- word-break: break-all;
34142
- padding-right: 2px;
34143
-
34144
- caret-color: black;
34145
- padding-left: 3px;
34146
- padding-right: 3px;
34147
- outline: none;
34148
-
34149
- tab-size: 4;
34150
-
34151
- p {
34152
- margin-bottom: 0px;
34153
-
34154
- span {
34155
- white-space: pre-wrap;
34156
- /* On some browsers (chromium ?) it is somehow possible to hover two of the composer's spans at the same time, leading to
34157
- * flickering with a succession of onmouseenter/onmouseleave events. A small invisible padding seems to prevent the issue.*/
34158
- padding-left: 0.01px;
34159
-
34160
- &.${selectionIndicatorClass}:after {
34161
- content: "${selectionIndicator}";
34162
- color: ${selectionIndicatorColor};
34163
- }
34164
-
34165
- &.${highlightParenthesisClass}:not(.${highlightClass}) {
34166
- border-radius: 5px;
34167
- background-color: lightgray;
34168
- padding: 1.5px 0px 1.5px 0px;
34169
- }
34170
-
34171
- &.${highlightClass} {
34172
- background-color: #e6edf3;
34173
- }
34174
- }
34175
- }
34176
- }
34177
- .o-composer[placeholder]:empty:not(:focus):not(.active)::before {
34178
- content: attr(placeholder);
34179
- color: #bdbdbd;
34180
- position: relative;
34181
- top: 0%;
34182
- pointer-events: none;
34183
- }
34184
-
34185
- .fa-stack {
34186
- /* reset stack size which is doubled by default */
34187
- width: ${CLOSE_ICON_RADIUS * 2}px;
34188
- height: ${CLOSE_ICON_RADIUS * 2}px;
34189
- line-height: ${CLOSE_ICON_RADIUS * 2}px;
34190
- }
34191
-
34192
- .force-open-assistant {
34193
- left: -1px;
34194
- top: -1px;
34195
-
34196
- .fa-question-circle {
34197
- color: ${PRIMARY_BUTTON_BG};
34198
- }
34199
- }
34200
-
34201
- .o-composer-assistant {
34202
- margin-top: 1px;
34203
-
34204
- .o-semi-bold {
34205
- /* FIXME: to remove in favor of Bootstrap
34206
- * 'fw-semibold' when we upgrade to Bootstrap 5.2
34207
- */
34208
- font-weight: 600 !important;
34209
- }
34210
- }
34211
- }
34212
- `;
34213
33763
  class Composer extends owl.Component {
34214
33764
  static template = "o-spreadsheet-Composer";
34215
33765
  static props = {
@@ -35882,30 +35432,6 @@ class StandaloneComposerStore extends AbstractComposerStore {
35882
35432
  }
35883
35433
  }
35884
35434
 
35885
- css /* scss */ `
35886
- .o-spreadsheet {
35887
- .o-standalone-composer {
35888
- min-height: 24px;
35889
-
35890
- border-bottom: 1px solid;
35891
- border-color: ${GRAY_300};
35892
-
35893
- &.active {
35894
- border-color: ${ACTION_COLOR};
35895
- }
35896
-
35897
- &.o-invalid {
35898
- border-bottom: 2px solid red;
35899
- }
35900
-
35901
- /* As the standalone composer is potentially very small (eg. in a side panel), we remove the scrollbar display */
35902
- scrollbar-width: none; /* Firefox */
35903
- &::-webkit-scrollbar {
35904
- display: none;
35905
- }
35906
- }
35907
- }
35908
- `;
35909
35435
  class StandaloneComposer extends owl.Component {
35910
35436
  static template = "o-spreadsheet-StandaloneComposer";
35911
35437
  static props = {
@@ -35973,17 +35499,6 @@ class StandaloneComposer extends owl.Component {
35973
35499
  }
35974
35500
  }
35975
35501
 
35976
- css /* scss */ `
35977
- .o-dv-input {
35978
- &.o-invalid {
35979
- background-color: #ffdddd;
35980
- }
35981
- .error-icon {
35982
- right: 7px;
35983
- top: 7px;
35984
- }
35985
- }
35986
- `;
35987
35502
  class CriterionInput extends owl.Component {
35988
35503
  static template = "o-spreadsheet-CriterionInput";
35989
35504
  static props = {
@@ -36151,8 +35666,6 @@ function startDnd(onPointerMove, onPointerUp) {
36151
35666
  return removeListeners;
36152
35667
  }
36153
35668
 
36154
- const LINE_VERTICAL_PADDING = 1;
36155
- const PICKER_PADDING = 8;
36156
35669
  const ITEM_BORDER_WIDTH = 1;
36157
35670
  const ITEM_EDGE_LENGTH = 18;
36158
35671
  const ITEMS_PER_LINE = 10;
@@ -36161,170 +35674,6 @@ const ITEM_GAP = 2;
36161
35674
  const CONTENT_WIDTH = ITEMS_PER_LINE * (ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH) + (ITEMS_PER_LINE - 1) * ITEM_GAP;
36162
35675
  const INNER_GRADIENT_WIDTH = CONTENT_WIDTH - 2 * ITEM_BORDER_WIDTH;
36163
35676
  const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
36164
- const CONTAINER_WIDTH = CONTENT_WIDTH + 2 * PICKER_PADDING;
36165
- css /* scss */ `
36166
- .o-color-picker {
36167
- padding: ${PICKER_PADDING}px 0;
36168
- /* FIXME: this is useless, overiden by the popover container */
36169
- box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
36170
- background-color: white;
36171
- line-height: 1.2;
36172
- overflow-y: auto;
36173
- overflow-x: hidden;
36174
- width: ${CONTAINER_WIDTH}px;
36175
-
36176
- .o-color-picker-section-name {
36177
- margin: 0px ${ITEM_BORDER_WIDTH}px;
36178
- padding: 4px ${PICKER_PADDING}px;
36179
- }
36180
- .colors-grid {
36181
- display: grid;
36182
- padding: ${LINE_VERTICAL_PADDING}px ${PICKER_PADDING}px;
36183
- grid-template-columns: repeat(${ITEMS_PER_LINE}, 1fr);
36184
- grid-gap: ${ITEM_GAP}px;
36185
- }
36186
- .o-color-picker-toggler-button {
36187
- display: flex;
36188
- .o-color-picker-toggler-sign {
36189
- display: flex;
36190
- margin: auto auto;
36191
- width: 55%;
36192
- height: 55%;
36193
- .o-icon {
36194
- width: 100%;
36195
- height: 100%;
36196
- }
36197
- }
36198
- }
36199
- .o-color-picker-line-item {
36200
- width: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
36201
- height: ${ITEM_EDGE_LENGTH + 2 * ITEM_BORDER_WIDTH}px;
36202
- margin: 0px;
36203
- border-radius: 50px;
36204
- border: ${ITEM_BORDER_WIDTH}px solid #666666;
36205
- padding: 0px;
36206
- font-size: 16px;
36207
- background: white;
36208
- &:hover {
36209
- background-color: rgba(0, 0, 0, 0.08);
36210
- outline: 1px solid gray;
36211
- cursor: pointer;
36212
- }
36213
- }
36214
- .o-buttons {
36215
- padding: ${PICKER_PADDING}px;
36216
- display: flex;
36217
- .o-cancel {
36218
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36219
- width: 100%;
36220
- padding: 5px;
36221
- font-size: 14px;
36222
- background: white;
36223
- border-radius: 4px;
36224
- &:hover:enabled {
36225
- background-color: rgba(0, 0, 0, 0.08);
36226
- }
36227
- }
36228
- }
36229
- .o-add-button {
36230
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36231
- padding: 4px;
36232
- background: white;
36233
- border-radius: 4px;
36234
- &:hover:enabled {
36235
- background-color: rgba(0, 0, 0, 0.08);
36236
- }
36237
- }
36238
- .o-separator {
36239
- border-bottom: ${MENU_SEPARATOR_BORDER_WIDTH}px solid ${SEPARATOR_COLOR};
36240
- margin-top: ${MENU_SEPARATOR_PADDING}px;
36241
- margin-bottom: ${MENU_SEPARATOR_PADDING}px;
36242
- }
36243
-
36244
- .o-custom-selector {
36245
- padding: ${PICKER_PADDING + 2}px ${PICKER_PADDING}px;
36246
- position: relative;
36247
- .o-gradient {
36248
- margin-bottom: ${MAGNIFIER_EDGE / 2}px;
36249
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36250
- width: ${INNER_GRADIENT_WIDTH + 2 * ITEM_BORDER_WIDTH}px;
36251
- height: ${INNER_GRADIENT_HEIGHT + 2 * ITEM_BORDER_WIDTH}px;
36252
- position: relative;
36253
- }
36254
-
36255
- .magnifier {
36256
- height: ${MAGNIFIER_EDGE}px;
36257
- width: ${MAGNIFIER_EDGE}px;
36258
- border-radius: 50%;
36259
- border: 2px solid #fff;
36260
- box-shadow: 0px 0px 3px #c0c0c0;
36261
- position: absolute;
36262
- z-index: 2;
36263
- }
36264
- .saturation {
36265
- background: linear-gradient(to right, #fff 0%, transparent 100%);
36266
- }
36267
- .lightness {
36268
- background: linear-gradient(to top, #000 0%, transparent 100%);
36269
- }
36270
- .o-hue-picker {
36271
- border: ${ITEM_BORDER_WIDTH}px solid #c0c0c0;
36272
- width: 100%;
36273
- height: 12px;
36274
- border-radius: 4px;
36275
- background: linear-gradient(
36276
- to right,
36277
- hsl(0 100% 50%) 0%,
36278
- hsl(0.2turn 100% 50%) 20%,
36279
- hsl(0.3turn 100% 50%) 30%,
36280
- hsl(0.4turn 100% 50%) 40%,
36281
- hsl(0.5turn 100% 50%) 50%,
36282
- hsl(0.6turn 100% 50%) 60%,
36283
- hsl(0.7turn 100% 50%) 70%,
36284
- hsl(0.8turn 100% 50%) 80%,
36285
- hsl(0.9turn 100% 50%) 90%,
36286
- hsl(1turn 100% 50%) 100%
36287
- );
36288
- position: relative;
36289
- cursor: crosshair;
36290
- }
36291
- .o-hue-slider {
36292
- margin-top: -3px;
36293
- }
36294
- .o-custom-input-preview {
36295
- padding: 2px 0px;
36296
- display: flex;
36297
- input {
36298
- width: 50%;
36299
- border-radius: 4px;
36300
- padding: 4px 23px 4px 10px;
36301
- height: 24px;
36302
- border: 1px solid #c0c0c0;
36303
- margin-right: 2px;
36304
- }
36305
- .o-wrong-color {
36306
- /* FIXME bootstrap class instead? */
36307
- outline-color: red;
36308
- border-color: red;
36309
- &:focus {
36310
- outline-style: solid;
36311
- outline-width: 1px;
36312
- }
36313
- }
36314
- }
36315
- .o-custom-input-buttons {
36316
- padding: 2px 0px;
36317
- display: flex;
36318
- justify-content: end;
36319
- }
36320
- .o-color-preview {
36321
- border: 1px solid #c0c0c0;
36322
- border-radius: 4px;
36323
- width: 50%;
36324
- }
36325
- }
36326
- }
36327
- `;
36328
35677
  class ColorPicker extends owl.Component {
36329
35678
  static template = "o-spreadsheet-ColorPicker";
36330
35679
  static props = {
@@ -36479,21 +35828,12 @@ class Section extends owl.Component {
36479
35828
  };
36480
35829
  }
36481
35830
 
36482
- const TRANSPARENT_BACKGROUND_SVG = /*xml*/ `
36483
- <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
36484
- <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
36485
- </svg>
36486
- `;
36487
- css /* scss */ `
36488
- .o-round-color-picker-button {
36489
- width: 20px;
36490
- height: 20px;
36491
- cursor: pointer;
36492
- border: 1px solid ${GRAY_300};
36493
- background-position: 1px 1px;
36494
- background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
36495
- }
36496
- `;
35831
+ // FIXME Encoding version used in css
35832
+ // const TRANSPARENT_BACKGROUND_SVG = /*xml*/ `
35833
+ // <svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
35834
+ // <path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
35835
+ // </svg>
35836
+ // `;
36497
35837
  class RoundColorPicker extends owl.Component {
36498
35838
  static template = "o-spreadsheet.RoundColorPicker";
36499
35839
  static components = { Section, ColorPicker };
@@ -36530,12 +35870,6 @@ class RoundColorPicker extends owl.Component {
36530
35870
  }
36531
35871
  }
36532
35872
 
36533
- css /* scss */ `
36534
- .o-dv-list-item-delete {
36535
- color: #666666;
36536
- cursor: pointer;
36537
- }
36538
- `;
36539
35873
  class ListCriterionForm extends CriterionForm {
36540
35874
  static template = "o-spreadsheet-ListCriterionForm";
36541
35875
  static components = { CriterionInput, RoundColorPicker };
@@ -37249,36 +36583,6 @@ class SelectionInputStore extends SpreadsheetStore {
37249
36583
  }
37250
36584
  }
37251
36585
 
37252
- css /* scss */ `
37253
- .o-selection {
37254
- .o-selection-input {
37255
- padding: 2px 0px;
37256
-
37257
- input.o-invalid {
37258
- background-color: ${ALERT_DANGER_BG};
37259
- }
37260
- .input-icon {
37261
- right: 7px;
37262
- top: 4px;
37263
- }
37264
- .o-drag-handle {
37265
- cursor: move;
37266
- }
37267
- }
37268
- .o-disabled-ranges {
37269
- color: #888 !important;
37270
- }
37271
- .o-button {
37272
- flex-grow: 0;
37273
- }
37274
-
37275
- /* Make the character a bit bigger
37276
- compared to its neighbor INPUT box */
37277
- .o-remove-selection {
37278
- font-size: calc(100% + 4px);
37279
- }
37280
- }
37281
- `;
37282
36586
  /**
37283
36587
  * This component can be used when the user needs to input some
37284
36588
  * ranges. He can either input the ranges with the regular DOM `<input/>`
@@ -37777,44 +37081,6 @@ class FilterMenuCriterion extends owl.Component {
37777
37081
  }
37778
37082
  }
37779
37083
 
37780
- const CHECK_SVG = /*xml*/ `
37781
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
37782
- <path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
37783
- </svg>
37784
- `;
37785
- const CHECKBOX_WIDTH = 14;
37786
- css /* scss */ `
37787
- label.o-checkbox {
37788
- input {
37789
- appearance: none;
37790
- -webkit-appearance: none;
37791
- -moz-appearance: none;
37792
- border-radius: 0;
37793
- width: ${CHECKBOX_WIDTH}px;
37794
- height: ${CHECKBOX_WIDTH}px;
37795
- vertical-align: top;
37796
- outline: none;
37797
- border: 1px solid ${GRAY_300};
37798
- cursor: pointer;
37799
-
37800
- &:hover {
37801
- border-color: ${ACTION_COLOR};
37802
- }
37803
-
37804
- &:checked {
37805
- background: url("data:image/svg+xml,${encodeURIComponent(CHECK_SVG)}");
37806
- background-color: ${ACTION_COLOR};
37807
- border-color: ${ACTION_COLOR};
37808
- }
37809
-
37810
- &:focus {
37811
- outline: none;
37812
- box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
37813
- border-color: ${ACTION_COLOR};
37814
- }
37815
- }
37816
- }
37817
- `;
37818
37084
  class Checkbox extends owl.Component {
37819
37085
  static template = "o-spreadsheet.Checkbox";
37820
37086
  static props = {
@@ -38022,60 +37288,6 @@ class FilterMenuValueList extends owl.Component {
38022
37288
  }
38023
37289
  }
38024
37290
 
38025
- css /* scss */ `
38026
- .o-filter-menu {
38027
- width: 245px;
38028
- padding: 8px 0;
38029
- user-select: none;
38030
-
38031
- .o-filter-menu-content {
38032
- padding: 0 16px;
38033
- }
38034
-
38035
- .o-sort-item {
38036
- padding-left: 34px;
38037
- }
38038
-
38039
- .o_side_panel_collapsible_title {
38040
- font-size: inherit;
38041
- padding: 0 0 4px 0 !important;
38042
- font-weight: 400 !important;
38043
-
38044
- .collapsor .o-icon {
38045
- opacity: 0.8;
38046
- }
38047
-
38048
- .collapsor-arrow {
38049
- transform-origin: 6px 8px;
38050
-
38051
- .o-icon {
38052
- width: 12px;
38053
- height: 16px;
38054
- }
38055
- }
38056
- }
38057
-
38058
- .o-filter-menu-item {
38059
- display: flex;
38060
- cursor: pointer;
38061
- user-select: none;
38062
- line-height: 1;
38063
-
38064
- &.selected,
38065
- &:hover {
38066
- background-color: ${BUTTON_ACTIVE_BG};
38067
- }
38068
- }
38069
-
38070
- .o-filter-menu-buttons {
38071
- margin-top: 9px;
38072
-
38073
- .o-button {
38074
- height: 26px;
38075
- }
38076
- }
38077
- }
38078
- `;
38079
37291
  class FilterMenu extends owl.Component {
38080
37292
  static template = "o-spreadsheet-FilterMenu";
38081
37293
  static props = {
@@ -38199,55 +37411,6 @@ const FilterMenuPopoverBuilder = {
38199
37411
  },
38200
37412
  };
38201
37413
 
38202
- const LINK_TOOLTIP_HEIGHT = 32;
38203
- const LINK_TOOLTIP_WIDTH = 220;
38204
- css /* scss */ `
38205
- .o-link-tool {
38206
- font-size: 13px;
38207
- background-color: white;
38208
- box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);
38209
- padding: 6px 12px;
38210
- border-radius: 4px;
38211
- display: flex;
38212
- justify-content: space-between;
38213
- height: ${LINK_TOOLTIP_HEIGHT}px;
38214
- width: ${LINK_TOOLTIP_WIDTH}px;
38215
-
38216
- img {
38217
- margin-right: 3px;
38218
- width: 16px;
38219
- height: 16px;
38220
- }
38221
-
38222
- a.o-link {
38223
- color: ${LINK_COLOR};
38224
- text-decoration: none;
38225
- flex-grow: 2;
38226
- white-space: nowrap;
38227
- overflow: hidden;
38228
- text-overflow: ellipsis;
38229
- }
38230
- a.o-link:hover {
38231
- text-decoration: none;
38232
- color: #001d1f;
38233
- cursor: pointer;
38234
- }
38235
- }
38236
- .o-link-icon {
38237
- float: right;
38238
- padding-left: 5px;
38239
- .o-icon {
38240
- height: 16px;
38241
- }
38242
- }
38243
- .o-link-icon .o-icon {
38244
- height: 13px;
38245
- }
38246
- .o-link-icon:hover {
38247
- cursor: pointer;
38248
- color: #000;
38249
- }
38250
- `;
38251
37414
  class LinkDisplay extends owl.Component {
38252
37415
  static template = "o-spreadsheet-LinkDisplay";
38253
37416
  static props = {
@@ -38478,54 +37641,6 @@ linkMenuRegistry.add("sheet", {
38478
37641
  sequence: 10,
38479
37642
  });
38480
37643
 
38481
- const PADDING = 12;
38482
- const LINK_EDITOR_WIDTH = 340 + 2 * PADDING;
38483
- css /* scss */ `
38484
- .o-link-editor {
38485
- font-size: 13px;
38486
- background-color: white;
38487
- box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);
38488
- padding: ${PADDING}px;
38489
- display: flex;
38490
- flex-direction: column;
38491
- border-radius: 4px;
38492
- width: ${LINK_EDITOR_WIDTH}px;
38493
-
38494
- .o-section {
38495
- .o-section-title {
38496
- font-weight: bold;
38497
- margin-bottom: 5px;
38498
- }
38499
- }
38500
- .o-buttons {
38501
- padding-left: 16px;
38502
- padding-top: 16px;
38503
- text-align: right;
38504
- }
38505
- input.o-input {
38506
- width: 100%;
38507
- padding: 0 23px 4px 0;
38508
- }
38509
- .o-link-url {
38510
- position: relative;
38511
- flex-grow: 1;
38512
- button {
38513
- position: absolute;
38514
- right: 0px;
38515
- top: 0px;
38516
- border: none;
38517
- height: 20px;
38518
- width: 20px;
38519
- background-color: #fff;
38520
- margin: 2px 3px 1px 0px;
38521
- padding: 0px 1px 0px 0px;
38522
- }
38523
- button:hover {
38524
- cursor: pointer;
38525
- }
38526
- }
38527
- }
38528
- `;
38529
37644
  class LinkEditor extends owl.Component {
38530
37645
  static template = "o-spreadsheet-LinkEditor";
38531
37646
  static props = {
@@ -39253,29 +38368,6 @@ function buildTableStyle(name, templateName, primaryColor) {
39253
38368
  };
39254
38369
  }
39255
38370
 
39256
- css /* scss */ `
39257
- .o-spreadsheet {
39258
- .o-icon {
39259
- display: flex;
39260
- align-items: center;
39261
- justify-content: center;
39262
- width: ${ICON_EDGE_LENGTH}px;
39263
- height: ${ICON_EDGE_LENGTH}px;
39264
- font-size: ${ICON_EDGE_LENGTH}px;
39265
- vertical-align: middle;
39266
-
39267
- .small-text {
39268
- font: bold 9px sans-serif;
39269
- }
39270
- .heavy-text {
39271
- font: bold 16px sans-serif;
39272
- }
39273
- }
39274
- .fa-small {
39275
- font-size: 14px;
39276
- }
39277
- }
39278
- `;
39279
38371
  // -----------------------------------------------------------------------------
39280
38372
  // We need here the svg of the icons that we need to convert to images for the renderer
39281
38373
  // -----------------------------------------------------------------------------
@@ -49149,37 +48241,6 @@ function adjustIndexWithinBounds(index, position, max) {
49149
48241
  return index;
49150
48242
  }
49151
48243
 
49152
- // -----------------------------------------------------------------------------
49153
- // Autofill
49154
- // -----------------------------------------------------------------------------
49155
- css /* scss */ `
49156
- .o-autofill {
49157
- position: absolute;
49158
- height: ${AUTOFILL_EDGE_LENGTH}px;
49159
- width: ${AUTOFILL_EDGE_LENGTH}px;
49160
- border: 1px solid white;
49161
- background-color: #1a73e8;
49162
- }
49163
-
49164
- .o-autofill-handler {
49165
- position: absolute;
49166
- height: ${AUTOFILL_EDGE_LENGTH}px;
49167
- width: ${AUTOFILL_EDGE_LENGTH}px;
49168
- &:hover {
49169
- cursor: crosshair;
49170
- }
49171
- }
49172
-
49173
- .o-autofill-nextvalue {
49174
- position: absolute;
49175
- background-color: #ffffff;
49176
- border: 1px solid black;
49177
- padding: 5px;
49178
- font-size: 12px;
49179
- pointer-events: none;
49180
- white-space: nowrap;
49181
- }
49182
- `;
49183
48244
  class Autofill extends owl.Component {
49184
48245
  static template = "o-spreadsheet-Autofill";
49185
48246
  static props = {
@@ -49264,16 +48325,6 @@ class TooltipComponent extends owl.Component {
49264
48325
  `;
49265
48326
  }
49266
48327
 
49267
- css /* scss */ `
49268
- .o-client-tag {
49269
- position: absolute;
49270
- border-top-left-radius: 4px;
49271
- border-top-right-radius: 4px;
49272
- font-size: ${DEFAULT_FONT_SIZE};
49273
- color: white;
49274
- pointer-events: none;
49275
- }
49276
- `;
49277
48328
  class ClientTag extends owl.Component {
49278
48329
  static template = "o-spreadsheet-ClientTag";
49279
48330
  static props = {
@@ -49823,28 +48874,6 @@ class CellComposerStore extends AbstractComposerStore {
49823
48874
 
49824
48875
  const COMPOSER_BORDER_WIDTH = 3 * 0.4 * window.devicePixelRatio || 1;
49825
48876
  const GRID_CELL_REFERENCE_TOP_OFFSET = 28;
49826
- css /* scss */ `
49827
- div.o-grid-composer {
49828
- z-index: ${ComponentsImportance.GridComposer};
49829
- position: absolute;
49830
- border: ${COMPOSER_BORDER_WIDTH}px solid ${SELECTION_BORDER_COLOR};
49831
- font-family: ${DEFAULT_FONT};
49832
-
49833
- display: flex;
49834
- align-items: center;
49835
- }
49836
-
49837
- div.o-cell-reference {
49838
- position: absolute;
49839
- z-index: ${ComponentsImportance.GridComposer};
49840
- background: ${SELECTION_BORDER_COLOR};
49841
- color: white;
49842
- font-size: 12px;
49843
- line-height: 14px;
49844
- padding: 6px 7px;
49845
- border-radius: 4px;
49846
- }
49847
- `;
49848
48877
  /**
49849
48878
  * This component is a composer which positions itself on the grid at the anchor cell.
49850
48879
  * It also applies the style of the cell to the composer input.
@@ -49970,6 +48999,7 @@ class GridComposer extends owl.Component {
49970
48999
  return cssPropertiesToCss({
49971
49000
  left: `${left - 1}px`,
49972
49001
  top: `${top}px`,
49002
+ border: `${COMPOSER_BORDER_WIDTH}px solid ${SELECTION_BORDER_COLOR}`,
49973
49003
  "min-width": `${minWidth}px`,
49974
49004
  "min-height": `${minHeight}px`,
49975
49005
  "max-width": `${maxWidth}px`,
@@ -50240,24 +49270,6 @@ function getAxis(getters, figureUI, dnd, axisType) {
50240
49270
  return { position, axisType: axisType };
50241
49271
  }
50242
49272
 
50243
- css /*SCSS*/ `
50244
- .o-figure-snap-line {
50245
- position: relative;
50246
- z-index: ${ComponentsImportance.FigureSnapLine};
50247
- &.vertical {
50248
- width: 0px;
50249
- border-left: 1px dashed black;
50250
- }
50251
- &.horizontal {
50252
- border-top: 1px dashed black;
50253
- height: 0px;
50254
- }
50255
- }
50256
- .o-figure-container {
50257
- -webkit-user-select: none; /* safari */
50258
- user-select: none;
50259
- }
50260
- `;
50261
49273
  /**
50262
49274
  * Each figure ⭐ is positioned inside a container `div` placed and sized
50263
49275
  * according to the split pane the figure is part of, or a separate container for the figure
@@ -50689,38 +49701,6 @@ class FiguresContainer extends owl.Component {
50689
49701
  }
50690
49702
  }
50691
49703
 
50692
- css /* scss */ `
50693
- .o-validation {
50694
- border-radius: 4px;
50695
- border-width: 0 0 0 3px;
50696
- border-style: solid;
50697
- gap: 3px;
50698
-
50699
- .o-icon {
50700
- margin-right: 5px;
50701
- height: 1.2em;
50702
- width: 1.2em;
50703
- }
50704
- }
50705
-
50706
- .o-validation-warning {
50707
- border-color: ${ALERT_WARNING_BORDER};
50708
- color: ${ALERT_WARNING_TEXT_COLOR};
50709
- background-color: ${ALERT_WARNING_BG};
50710
- }
50711
-
50712
- .o-validation-error {
50713
- border-color: ${ALERT_DANGER_BORDER};
50714
- color: ${ALERT_DANGER_TEXT_COLOR};
50715
- background-color: ${ALERT_DANGER_BG};
50716
- }
50717
-
50718
- .o-validation-info {
50719
- border-color: ${ALERT_INFO_BORDER};
50720
- color: ${ALERT_INFO_TEXT_COLOR};
50721
- background-color: ${ALERT_INFO_BG};
50722
- }
50723
- `;
50724
49704
  class ValidationMessages extends owl.Component {
50725
49705
  static template = "o-spreadsheet-ValidationMessages";
50726
49706
  static props = {
@@ -50742,20 +49722,6 @@ class ValidationMessages extends owl.Component {
50742
49722
  }
50743
49723
  }
50744
49724
 
50745
- css /* scss */ `
50746
- .o-grid-add-rows {
50747
- input.o-input {
50748
- width: 60px;
50749
- height: 30px;
50750
- }
50751
-
50752
- .o-validation-error {
50753
- display: inline-block !important;
50754
- margin-top: 0;
50755
- margin-left: 8px;
50756
- }
50757
- }
50758
- `;
50759
49725
  class GridAddRowsFooter extends owl.Component {
50760
49726
  static template = "o-spreadsheet-GridAddRowsFooter";
50761
49727
  static props = {
@@ -51000,14 +49966,6 @@ class HoveredIconStore extends SpreadsheetStore {
51000
49966
  }
51001
49967
  }
51002
49968
 
51003
- const CURSOR_SVG = /*xml*/ `
51004
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
51005
- `;
51006
- css /* scss */ `
51007
- .o-paint-format-cursor {
51008
- cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
51009
- }
51010
- `;
51011
49969
  function useCellHovered(env, gridRef) {
51012
49970
  const delayedHoveredCell = useStore(DelayedHoveredCellStore);
51013
49971
  const hoveredTable = useStore(HoveredTableStore);
@@ -51253,7 +50211,6 @@ class GridPopover extends owl.Component {
51253
50211
  };
51254
50212
  static components = { Popover };
51255
50213
  cellPopovers;
51256
- zIndex = ComponentsImportance.GridPopover;
51257
50214
  setup() {
51258
50215
  this.cellPopovers = useStore(CellPopoverStore);
51259
50216
  }
@@ -51572,58 +50529,6 @@ class AbstractResizer extends owl.Component {
51572
50529
  this.props.onOpenContextMenu(type, ev.clientX, ev.clientY);
51573
50530
  }
51574
50531
  }
51575
- css /* scss */ `
51576
- .o-col-resizer {
51577
- position: absolute;
51578
- top: 0;
51579
- left: ${HEADER_WIDTH}px;
51580
- right: ${SCROLLBAR_WIDTH}px;
51581
- height: ${HEADER_HEIGHT}px;
51582
- width: calc(100% - ${HEADER_WIDTH + SCROLLBAR_WIDTH}px);
51583
- &.o-dragging {
51584
- cursor: grabbing;
51585
- }
51586
- &.o-grab {
51587
- cursor: grab;
51588
- }
51589
- .dragging-col-line {
51590
- top: ${HEADER_HEIGHT}px;
51591
- position: absolute;
51592
- width: 2px;
51593
- height: 10000px;
51594
- background-color: black;
51595
- }
51596
- .dragging-col-shadow {
51597
- top: ${HEADER_HEIGHT}px;
51598
- position: absolute;
51599
- height: 10000px;
51600
- background-color: black;
51601
- opacity: 0.1;
51602
- }
51603
- .o-handle {
51604
- position: absolute;
51605
- height: ${HEADER_HEIGHT}px;
51606
- width: 4px;
51607
- cursor: e-resize;
51608
- background-color: ${SELECTION_BORDER_COLOR};
51609
- }
51610
- .dragging-resizer {
51611
- top: ${HEADER_HEIGHT}px;
51612
- position: absolute;
51613
- margin-left: 2px;
51614
- width: 1px;
51615
- height: 10000px;
51616
- background-color: ${SELECTION_BORDER_COLOR};
51617
- }
51618
- .o-unhide {
51619
- color: ${ICONS_COLOR};
51620
- }
51621
- .o-unhide:hover {
51622
- z-index: ${ComponentsImportance.Grid + 1};
51623
- background-color: lightgrey;
51624
- }
51625
- }
51626
- `;
51627
50532
  class ColResizer extends AbstractResizer {
51628
50533
  static props = {
51629
50534
  onOpenContextMenu: Function,
@@ -51766,57 +50671,6 @@ class ColResizer extends AbstractResizer {
51766
50671
  return this.env.model.getters.getPaneDivisions(this.sheetId).xSplit > 0;
51767
50672
  }
51768
50673
  }
51769
- css /* scss */ `
51770
- .o-row-resizer {
51771
- position: absolute;
51772
- top: ${HEADER_HEIGHT}px;
51773
- left: 0;
51774
- bottom: ${SCROLLBAR_WIDTH}px;
51775
- width: ${HEADER_WIDTH}px;
51776
- &.o-dragging {
51777
- cursor: grabbing;
51778
- }
51779
- &.o-grab {
51780
- cursor: grab;
51781
- }
51782
- .dragging-row-line {
51783
- left: ${HEADER_WIDTH}px;
51784
- position: absolute;
51785
- width: 10000px;
51786
- height: 2px;
51787
- background-color: black;
51788
- }
51789
- .dragging-row-shadow {
51790
- left: ${HEADER_WIDTH}px;
51791
- position: absolute;
51792
- width: 10000px;
51793
- background-color: black;
51794
- opacity: 0.1;
51795
- }
51796
- .o-handle {
51797
- position: absolute;
51798
- height: 4px;
51799
- width: ${HEADER_WIDTH}px;
51800
- cursor: n-resize;
51801
- background-color: ${SELECTION_BORDER_COLOR};
51802
- }
51803
- .dragging-resizer {
51804
- left: ${HEADER_WIDTH}px;
51805
- position: absolute;
51806
- margin-top: 2px;
51807
- width: 10000px;
51808
- height: 1px;
51809
- background-color: ${SELECTION_BORDER_COLOR};
51810
- }
51811
- .o-unhide {
51812
- color: ${ICONS_COLOR};
51813
- }
51814
- .o-unhide:hover {
51815
- z-index: ${ComponentsImportance.Grid + 1};
51816
- background-color: lightgrey;
51817
- }
51818
- }
51819
- `;
51820
50674
  class RowResizer extends AbstractResizer {
51821
50675
  static props = {
51822
50676
  onOpenContextMenu: Function,
@@ -51957,18 +50811,6 @@ class RowResizer extends AbstractResizer {
51957
50811
  return this.env.model.getters.getPaneDivisions(this.sheetId).ySplit > 0;
51958
50812
  }
51959
50813
  }
51960
- css /* scss */ `
51961
- .o-overlay {
51962
- .all {
51963
- position: absolute;
51964
- top: 0;
51965
- left: 0;
51966
- right: 0;
51967
- width: ${HEADER_WIDTH}px;
51968
- height: ${HEADER_HEIGHT}px;
51969
- }
51970
- }
51971
- `;
51972
50814
  class HeadersOverlay extends owl.Component {
51973
50815
  static props = {
51974
50816
  onOpenContextMenu: Function,
@@ -52923,17 +51765,6 @@ function useWheelHandler(handler) {
52923
51765
  return onMouseWheel;
52924
51766
  }
52925
51767
 
52926
- css /* scss */ `
52927
- .o-border {
52928
- position: absolute;
52929
- &:hover {
52930
- cursor: grab;
52931
- }
52932
- }
52933
- .o-moving {
52934
- cursor: grabbing;
52935
- }
52936
- `;
52937
51768
  class Border extends owl.Component {
52938
51769
  static template = "o-spreadsheet-Border";
52939
51770
  static props = {
@@ -52972,32 +51803,6 @@ class Border extends owl.Component {
52972
51803
  }
52973
51804
 
52974
51805
  const MOBILE_HANDLER_WIDTH = 40;
52975
- css /* scss */ `
52976
- .o-corner {
52977
- position: absolute;
52978
- }
52979
-
52980
- .o-corner-button {
52981
- border: 1px solid white;
52982
- height: ${AUTOFILL_EDGE_LENGTH}px;
52983
- width: ${AUTOFILL_EDGE_LENGTH}px;
52984
- }
52985
- .o-corner-nw,
52986
- .o-corner-se {
52987
- &:hover {
52988
- cursor: nwse-resize;
52989
- }
52990
- }
52991
- .o-corner-ne,
52992
- .o-corner-sw {
52993
- &:hover {
52994
- cursor: nesw-resize;
52995
- }
52996
- }
52997
- .o-resizing {
52998
- cursor: grabbing;
52999
- }
53000
- `;
53001
51806
  class Corner extends owl.Component {
53002
51807
  static template = "o-spreadsheet-Corner";
53003
51808
  static props = {
@@ -53063,11 +51868,6 @@ function orientationToDir(or) {
53063
51868
  return { dirX, dirY };
53064
51869
  }
53065
51870
 
53066
- css /*SCSS*/ `
53067
- .o-highlight {
53068
- z-index: ${ComponentsImportance.Highlight};
53069
- }
53070
- `;
53071
51871
  class Highlight extends owl.Component {
53072
51872
  static template = "o-spreadsheet-Highlight";
53073
51873
  static props = {
@@ -53202,24 +52002,6 @@ let ScrollBar$1 = class ScrollBar {
53202
52002
  }
53203
52003
  };
53204
52004
 
53205
- css /* scss */ `
53206
- .o-scrollbar {
53207
- position: absolute;
53208
- overflow: auto;
53209
- z-index: ${ComponentsImportance.ScrollBar};
53210
- background-color: ${BACKGROUND_GRAY_COLOR};
53211
-
53212
- &.corner {
53213
- box-sizing: content-box;
53214
- right: 0px;
53215
- bottom: 0px;
53216
- height: ${SCROLLBAR_WIDTH}px;
53217
- width: ${SCROLLBAR_WIDTH}px;
53218
- border-top: 1px solid #e2e3e3;
53219
- border-left: 1px solid #e2e3e3;
53220
- }
53221
- }
53222
- `;
53223
52005
  class ScrollBar extends owl.Component {
53224
52006
  static props = {
53225
52007
  width: { type: Number, optional: true },
@@ -53382,24 +52164,6 @@ function useAutofocus({ refName }) {
53382
52164
  }, () => [ref.el]);
53383
52165
  }
53384
52166
 
53385
- css /* scss */ `
53386
- .o-spreadsheet {
53387
- .os-input {
53388
- border-width: 0 0 1px 0;
53389
- border-color: transparent;
53390
- outline: none;
53391
- text-overflow: ellipsis;
53392
- color: ${TEXT_BODY};
53393
- }
53394
- .os-input:hover,
53395
- .os-input.o-input-border {
53396
- border-color: ${GRAY_300};
53397
- }
53398
- .os-input:focus {
53399
- border-color: ${ACTION_COLOR};
53400
- }
53401
- }
53402
- `;
53403
52167
  class TextInput extends owl.Component {
53404
52168
  static template = "o-spreadsheet-TextInput";
53405
52169
  static props = {
@@ -53481,21 +52245,6 @@ class TextInput extends owl.Component {
53481
52245
  }
53482
52246
  }
53483
52247
 
53484
- css /* scss */ `
53485
- .o-menu-item-button {
53486
- display: flex;
53487
- justify-content: center;
53488
- align-items: center;
53489
- margin: 2px 1px;
53490
- padding: 0px 1px;
53491
- border-radius: 2px;
53492
- min-width: 22px;
53493
- }
53494
- .o-disabled {
53495
- opacity: 0.6;
53496
- cursor: default;
53497
- }
53498
- `;
53499
52248
  class ActionButton extends owl.Component {
53500
52249
  static template = "o-spreadsheet-ActionButton";
53501
52250
  static props = {
@@ -53548,41 +52297,6 @@ class ActionButton extends owl.Component {
53548
52297
  }
53549
52298
  }
53550
52299
 
53551
- css /* scss */ `
53552
- .o-color-picker-widget {
53553
- display: flex;
53554
- position: relative;
53555
- align-items: center;
53556
- height: 30px;
53557
-
53558
- .o-color-picker-button-style {
53559
- display: flex;
53560
- justify-content: center;
53561
- align-items: center;
53562
- margin: 2px;
53563
- padding: 3px;
53564
- border-radius: 2px;
53565
- cursor: pointer;
53566
- &:not([disabled]):hover {
53567
- background-color: rgba(0, 0, 0, 0.08);
53568
- }
53569
- }
53570
-
53571
- .o-color-picker-button {
53572
- > span {
53573
- border-bottom: 4px solid;
53574
- height: 20px;
53575
- margin-top: 2px;
53576
- display: block;
53577
- }
53578
-
53579
- &[disabled] {
53580
- pointer-events: none;
53581
- opacity: 0.3;
53582
- }
53583
- }
53584
- }
53585
- `;
53586
52300
  class ColorPickerWidget extends owl.Component {
53587
52301
  static template = "o-spreadsheet-ColorPickerWidget";
53588
52302
  static props = {
@@ -53615,26 +52329,6 @@ class ColorPickerWidget extends owl.Component {
53615
52329
  }
53616
52330
  }
53617
52331
 
53618
- css /* scss */ `
53619
- .o-font-size-editor {
53620
- width: max-content !important;
53621
- height: calc(100% - 4px);
53622
- input.o-font-size {
53623
- outline: none;
53624
- height: 20px;
53625
- width: 31px;
53626
- text-align: center;
53627
- }
53628
- }
53629
- .o-text-options > div {
53630
- cursor: pointer;
53631
- line-height: 26px;
53632
- padding: 3px 12px;
53633
- &:hover {
53634
- background-color: rgba(0, 0, 0, 0.08);
53635
- }
53636
- }
53637
- `;
53638
52332
  class FontSizeEditor extends owl.Component {
53639
52333
  static template = "o-spreadsheet-FontSizeEditor";
53640
52334
  static props = {
@@ -53710,41 +52404,6 @@ class FontSizeEditor extends owl.Component {
53710
52404
  }
53711
52405
  }
53712
52406
 
53713
- css /* scss */ `
53714
- .o-chart-title-designer {
53715
- .o-hoverable-button {
53716
- height: 30px;
53717
- }
53718
- .o-dropdown-content .o-hoverable-button {
53719
- height: fit-content;
53720
- }
53721
-
53722
- .o-divider {
53723
- border-right: 1px solid ${GRAY_300};
53724
- margin: 0px 4px;
53725
- height: 14px;
53726
- }
53727
-
53728
- .o-menu-item-button.active {
53729
- background-color: #e6f4ea;
53730
- color: #188038;
53731
- }
53732
-
53733
- .o-dropdown-content {
53734
- overflow-y: auto;
53735
- overflow-x: hidden;
53736
- padding: 2px;
53737
- z-index: 100;
53738
- box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
53739
-
53740
- .o-dropdown-line {
53741
- > span {
53742
- padding: 4px;
53743
- }
53744
- }
53745
- }
53746
- }
53747
- `;
53748
52407
  class TextStyler extends owl.Component {
53749
52408
  static template = "o-spreadsheet.TextStyler";
53750
52409
  static components = { ColorPickerWidget, ActionButton, FontSizeEditor };
@@ -54572,27 +53231,6 @@ class BarConfigPanel extends GenericChartConfigPanel {
54572
53231
  }
54573
53232
  }
54574
53233
 
54575
- css /* scss */ `
54576
- .o-badge-selection {
54577
- gap: 1px;
54578
- button.o-button {
54579
- border-radius: 0;
54580
- &.selected {
54581
- color: ${GRAY_900};
54582
- border-color: ${ACTION_COLOR};
54583
- background: ${BADGE_SELECTED_COLOR};
54584
- font-weight: 600;
54585
- }
54586
-
54587
- &:first-child {
54588
- border-radius: 4px 0 0 4px;
54589
- }
54590
- &:last-child {
54591
- border-radius: 0 4px 4px 0;
54592
- }
54593
- }
54594
- }
54595
- `;
54596
53234
  class BadgeSelection extends owl.Component {
54597
53235
  static template = "o-spreadsheet.BadgeSelection";
54598
53236
  static props = {
@@ -54602,13 +53240,6 @@ class BadgeSelection extends owl.Component {
54602
53240
  };
54603
53241
  }
54604
53242
 
54605
- css /* scss */ `
54606
- .o-chart-title-designer {
54607
- > span {
54608
- height: 30px;
54609
- }
54610
- }
54611
- `;
54612
53243
  class ChartTitle extends owl.Component {
54613
53244
  static template = "o-spreadsheet.ChartTitle";
54614
53245
  static components = { Section, TextStyler };
@@ -54670,31 +53301,12 @@ class AxisDesignEditor extends owl.Component {
54670
53301
  }
54671
53302
  }
54672
53303
 
54673
- const CIRCLE_SVG = /*xml*/ `
54674
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
54675
- <circle r="2" fill="#FFF"/>
54676
- </svg>
54677
- `;
54678
- css /* scss */ `
54679
- .o-radio {
54680
- input {
54681
- appearance: none;
54682
- -webkit-appearance: none;
54683
- -moz-appearance: none;
54684
- width: 14px;
54685
- height: 14px;
54686
- border: 1px solid ${GRAY_300};
54687
- outline: none;
54688
- border-radius: 8px;
54689
-
54690
- &:checked {
54691
- background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
54692
- background-color: ${ACTION_COLOR};
54693
- border-color: ${ACTION_COLOR};
54694
- }
54695
- }
54696
- }
54697
- `;
53304
+ // FIXME Encoding version used in css
53305
+ // const CIRCLE_SVG = /*xml*/ `
53306
+ // <svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
53307
+ // <circle r="2" fill="#FFF"/>
53308
+ // </svg>
53309
+ // `;
54698
53310
  class RadioSelection extends owl.Component {
54699
53311
  static template = "o-spreadsheet.RadioSelection";
54700
53312
  static props = {
@@ -55191,45 +53803,6 @@ class GaugeChartConfigPanel extends owl.Component {
55191
53803
  }
55192
53804
  }
55193
53805
 
55194
- css /* scss */ `
55195
- .o-gauge-color-set {
55196
- table {
55197
- table-layout: fixed;
55198
- margin-top: 2%;
55199
- display: table;
55200
- text-align: left;
55201
- font-size: 12px;
55202
- line-height: 18px;
55203
- width: 100%;
55204
- font-size: 12px;
55205
- }
55206
-
55207
- td {
55208
- height: 30px;
55209
- padding: 6px 0;
55210
- }
55211
- th.o-gauge-color-set-colorPicker {
55212
- width: 8%;
55213
- }
55214
- th.o-gauge-color-set-text {
55215
- width: 25%;
55216
- }
55217
- th.o-gauge-color-set-operator {
55218
- width: 10%;
55219
- }
55220
- th.o-gauge-color-set-value {
55221
- width: 22%;
55222
- }
55223
- th.o-gauge-color-set-type {
55224
- width: 30%;
55225
- }
55226
- input,
55227
- select {
55228
- width: 100%;
55229
- height: 100%;
55230
- }
55231
- }
55232
- `;
55233
53806
  class GaugeChartDesignPanel extends owl.Component {
55234
53807
  static template = "o-spreadsheet-GaugeChartDesignPanel";
55235
53808
  static components = {
@@ -56035,40 +54608,6 @@ chartSidePanelComponentRegistry
56035
54608
  design: TreeMapChartDesignPanel,
56036
54609
  });
56037
54610
 
56038
- css /* scss */ `
56039
- .o-section .o-input.o-type-selector {
56040
- height: 30px;
56041
- padding-left: 35px;
56042
- padding-top: 5px;
56043
- }
56044
- .o-type-selector-preview {
56045
- left: 5px;
56046
- top: 3px;
56047
- .o-chart-preview {
56048
- width: 24px;
56049
- height: 24px;
56050
- }
56051
- }
56052
-
56053
- .o-popover .o-chart-select-popover {
56054
- background: #fff;
56055
- .o-chart-type-item {
56056
- cursor: pointer;
56057
- padding: 3px 6px;
56058
- margin: 1px 2px;
56059
- &.selected,
56060
- &:hover {
56061
- border: 1px solid ${ACTION_COLOR};
56062
- background: ${BADGE_SELECTED_COLOR};
56063
- padding: 2px 5px;
56064
- }
56065
- .o-chart-preview {
56066
- width: 48px;
56067
- height: 48px;
56068
- }
56069
- }
56070
- }
56071
- `;
56072
54611
  class ChartTypePicker extends owl.Component {
56073
54612
  static template = "o-spreadsheet-ChartTypePicker";
56074
54613
  static components = { Section, Popover };
@@ -56171,38 +54710,6 @@ class MainChartPanelStore extends SpreadsheetStore {
56171
54710
  }
56172
54711
  }
56173
54712
 
56174
- css /* scss */ `
56175
- .o-chart {
56176
- .o-panel {
56177
- display: flex;
56178
- .o-panel-element {
56179
- flex: 1 0 auto;
56180
- padding: 8px 0px;
56181
- text-align: center;
56182
- cursor: pointer;
56183
- border-right: 1px solid ${GRAY_300};
56184
-
56185
- &.inactive {
56186
- color: ${TEXT_BODY};
56187
- background-color: ${GRAY_100};
56188
- border-bottom: 1px solid ${GRAY_300};
56189
- }
56190
-
56191
- &:not(.inactive) {
56192
- color: ${TEXT_HEADING};
56193
- border-bottom: 1px solid #fff;
56194
- }
56195
-
56196
- .fa {
56197
- margin-right: 4px;
56198
- }
56199
- }
56200
- .o-panel-element:last-child {
56201
- border-right: none;
56202
- }
56203
- }
56204
- }
56205
- `;
56206
54713
  class ChartPanel extends owl.Component {
56207
54714
  static template = "o-spreadsheet-ChartPanel";
56208
54715
  static components = { Section, ChartTypePicker };
@@ -56291,26 +54798,6 @@ class ChartPanel extends owl.Component {
56291
54798
  }
56292
54799
  }
56293
54800
 
56294
- css /* scss */ `
56295
- .o-icon-picker {
56296
- position: absolute;
56297
- z-index: ${ComponentsImportance.IconPicker};
56298
- box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
56299
- background-color: white;
56300
- padding: 2px 1px;
56301
- }
56302
- .o-cf-icon-line {
56303
- display: flex;
56304
- padding: 0 6px;
56305
- }
56306
- .o-icon-picker-item {
56307
- cursor: pointer;
56308
- &:hover {
56309
- background-color: ${BADGE_SELECTED_COLOR};
56310
- outline: ${ACTION_COLOR} solid 1px;
56311
- }
56312
- }
56313
- `;
56314
54801
  class IconPicker extends owl.Component {
56315
54802
  static template = "o-spreadsheet-IconPicker";
56316
54803
  static props = {
@@ -56348,77 +54835,6 @@ function useHighlights(highlightProvider) {
56348
54835
  }, () => [highlightProvider.highlights]);
56349
54836
  }
56350
54837
 
56351
- css /* scss */ `
56352
- .o-cf-preview {
56353
- &.o-cf-cursor-ptr {
56354
- cursor: pointer;
56355
- }
56356
-
56357
- border-bottom: 1px solid ${GRAY_300};
56358
- height: 80px;
56359
- padding: 10px;
56360
- position: relative;
56361
- cursor: pointer;
56362
- &:hover,
56363
- &.o-cf-dragging {
56364
- background-color: ${GRAY_200};
56365
- }
56366
-
56367
- &:not(:hover) .o-cf-delete-button {
56368
- display: none;
56369
- }
56370
- .o-cf-preview-icon {
56371
- border: 1px solid ${GRAY_300};
56372
- background-color: #fff;
56373
- position: absolute;
56374
- height: 50px;
56375
- width: 50px;
56376
- .o-icon {
56377
- width: ${CF_ICON_EDGE_LENGTH}px;
56378
- height: ${CF_ICON_EDGE_LENGTH}px;
56379
- }
56380
- }
56381
- .o-cf-preview-description {
56382
- left: 65px;
56383
- margin-bottom: auto;
56384
- margin-right: 8px;
56385
- margin-top: auto;
56386
- position: relative;
56387
- width: 142px;
56388
- .o-cf-preview-description-rule {
56389
- margin-bottom: 4px;
56390
- max-height: 2.8em;
56391
- line-height: 1.4em;
56392
- }
56393
- .o-cf-preview-range {
56394
- font-size: 12px;
56395
- }
56396
- }
56397
- .o-cf-delete {
56398
- left: 90%;
56399
- top: 39%;
56400
- position: absolute;
56401
- }
56402
- &:not(:hover):not(.o-cf-dragging) .o-cf-drag-handle {
56403
- display: none !important;
56404
- }
56405
- .o-cf-drag-handle {
56406
- left: -8px;
56407
- cursor: move;
56408
- .o-icon {
56409
- width: 6px;
56410
- height: 30px;
56411
- }
56412
- }
56413
-
56414
- .o-icon.arrow-down {
56415
- color: #e06666;
56416
- }
56417
- .o-icon.arrow-up {
56418
- color: #6aa84f;
56419
- }
56420
- }
56421
- `;
56422
54838
  class ConditionalFormatPreview extends owl.Component {
56423
54839
  static template = "o-spreadsheet-ConditionalFormatPreview";
56424
54840
  icons = ICONS;
@@ -56537,95 +54953,6 @@ class ConditionalFormatPreviewList extends owl.Component {
56537
54953
  }
56538
54954
  }
56539
54955
 
56540
- css /* scss */ `
56541
- .o-cf-ruleEditor {
56542
- .o-cf-preview-display {
56543
- border: 1px solid ${GRAY_300};
56544
- padding: 10px;
56545
- }
56546
-
56547
- .o-cf-cell-is-rule {
56548
- .o-divider {
56549
- border-right: 1px solid ${GRAY_300};
56550
- margin: 4px 6px;
56551
- }
56552
- }
56553
- .o-cf-color-scale-editor {
56554
- .o-threshold {
56555
- .o-select-with-input {
56556
- max-width: 150px;
56557
- }
56558
- .o-threshold-value {
56559
- flex-grow: 1;
56560
- flex-basis: 60%;
56561
- min-width: 0px; /* input overflows in Firefox otherwise */
56562
- }
56563
- .o-threshold-value input:disabled {
56564
- background-color: #edebed;
56565
- }
56566
- }
56567
- }
56568
- .o-cf-iconset-rule {
56569
- .o-cf-clickable-icon {
56570
- border: 1px solid ${GRAY_200};
56571
- border-radius: 4px;
56572
- cursor: pointer;
56573
- &:hover {
56574
- border-color: ${ACTION_COLOR};
56575
- background-color: ${BADGE_SELECTED_COLOR};
56576
- }
56577
- .o-icon {
56578
- width: ${CF_ICON_EDGE_LENGTH}px;
56579
- height: ${CF_ICON_EDGE_LENGTH}px;
56580
- }
56581
- }
56582
- .o-cf-iconsets {
56583
- gap: 11px;
56584
- .o-cf-iconset {
56585
- padding: 7px 8px;
56586
- width: 95px;
56587
- .o-icon {
56588
- margin: 0 3px;
56589
- }
56590
- svg {
56591
- vertical-align: baseline;
56592
- }
56593
- }
56594
- }
56595
- .o-inflection {
56596
- .o-cf-icon-button {
56597
- padding: 4px 10px;
56598
- }
56599
- table {
56600
- font-size: 13px;
56601
- td {
56602
- padding: 6px 0;
56603
- }
56604
-
56605
- th.o-cf-iconset-icons {
56606
- width: 25px;
56607
- }
56608
- th.o-cf-iconset-text {
56609
- width: 82px;
56610
- }
56611
- th.o-cf-iconset-operator {
56612
- width: 20px;
56613
- }
56614
- .o-cf-iconset-type {
56615
- min-width: 80px;
56616
- }
56617
- }
56618
- }
56619
- }
56620
-
56621
- .o-icon.arrow-down {
56622
- color: #e06666;
56623
- }
56624
- .o-icon.arrow-up {
56625
- color: #6aa84f;
56626
- }
56627
- }
56628
- `;
56629
54956
  class ConditionalFormattingEditor extends owl.Component {
56630
54957
  static template = "o-spreadsheet-ConditionalFormattingEditor";
56631
54958
  static props = {
@@ -57155,25 +55482,6 @@ class ConditionalFormattingPanel extends owl.Component {
57155
55482
  */
57156
55483
  const currenciesRegistry = new Registry();
57157
55484
 
57158
- css /* scss */ `
57159
- .o-custom-currency {
57160
- .o-format-proposals {
57161
- color: black;
57162
- }
57163
-
57164
- .o-format-examples {
57165
- background: #f9fafb;
57166
- padding: 8px;
57167
- border-radius: 4px;
57168
- border: 1px solid #d8dadd;
57169
- color: #374151;
57170
- }
57171
-
57172
- table {
57173
- table-layout: fixed;
57174
- }
57175
- }
57176
- `;
57177
55485
  class CustomCurrencyPanel extends owl.Component {
57178
55486
  static template = "o-spreadsheet-CustomCurrencyPanel";
57179
55487
  static components = { Section, Checkbox };
@@ -57406,31 +55714,6 @@ class DataValidationEditor extends owl.Component {
57406
55714
  }
57407
55715
  }
57408
55716
 
57409
- css /* scss */ `
57410
- .o-sidePanel {
57411
- .o-dv-preview {
57412
- height: 70px;
57413
- cursor: pointer;
57414
- border-bottom: 1px solid ${FIGURE_BORDER_COLOR};
57415
-
57416
- .o-dv-container {
57417
- min-width: 0; /* otherwise flex won't shrink correctly */
57418
- }
57419
-
57420
- .o-dv-preview-description {
57421
- font-size: 13px;
57422
- }
57423
-
57424
- &:hover {
57425
- background-color: rgba(0, 0, 0, 0.08);
57426
- }
57427
-
57428
- &:not(:hover) .o-dv-preview-delete {
57429
- display: none !important;
57430
- }
57431
- }
57432
- }
57433
- `;
57434
55717
  class DataValidationPreview extends owl.Component {
57435
55718
  static template = "o-spreadsheet-DataValidationPreview";
57436
55719
  static props = {
@@ -57879,38 +56162,6 @@ class FindAndReplaceStore extends SpreadsheetStore {
57879
56162
  }
57880
56163
  }
57881
56164
 
57882
- css /* scss */ `
57883
- .o-find-and-replace {
57884
- outline: none;
57885
- height: 100%;
57886
- .o-input-search-container {
57887
- display: flex;
57888
- .o-input-with-count {
57889
- flex-grow: 1;
57890
- width: auto;
57891
- }
57892
- .o-input-without-count {
57893
- width: 100%;
57894
- }
57895
- .o-input-count {
57896
- width: fit-content;
57897
- padding: 4px 0 4px 4px;
57898
- white-space: nowrap;
57899
- }
57900
- }
57901
-
57902
- .o-result-buttons {
57903
- .o-button {
57904
- height: 19px;
57905
- width: 19px;
57906
- .o-icon {
57907
- height: 14px;
57908
- width: 14px;
57909
- }
57910
- }
57911
- }
57912
- }
57913
- `;
57914
56165
  class FindAndReplacePanel extends owl.Component {
57915
56166
  static template = "o-spreadsheet-FindAndReplacePanel";
57916
56167
  static components = { SelectionInput, Section, Checkbox, ValidationMessages };
@@ -58021,22 +56272,6 @@ class FindAndReplacePanel extends owl.Component {
58021
56272
  }
58022
56273
  }
58023
56274
 
58024
- css /* scss */ `
58025
- .o-more-formats-panel {
58026
- .format-preview {
58027
- height: 49px;
58028
- background-color: white;
58029
- cursor: pointer;
58030
-
58031
- &:hover {
58032
- background-color: rgba(0, 0, 0, 0.08);
58033
- }
58034
- }
58035
- .check-icon {
58036
- width: 24px;
58037
- }
58038
- }
58039
- `;
58040
56275
  const DATE_FORMAT_ACTIONS = createActions([
58041
56276
  formatNumberFullDateTime,
58042
56277
  formatNumberISODate,
@@ -58194,21 +56429,6 @@ class PivotMeasureDisplayPanelStore extends SpreadsheetStore {
58194
56429
  }
58195
56430
  }
58196
56431
 
58197
- css /* scss */ `
58198
- .o-sidePanel {
58199
- .o-pivot-measure-display-field,
58200
- .o-pivot-measure-display-value {
58201
- border: solid 1px ${GRAY_300};
58202
- border-radius: 3px;
58203
- }
58204
-
58205
- .o-pivot-measure-display-description {
58206
- white-space: pre-wrap;
58207
- color: dimgray;
58208
- border-left: 2px solid ${GRAY_300};
58209
- }
58210
- }
58211
- `;
58212
56432
  class PivotMeasureDisplayPanel extends owl.Component {
58213
56433
  static template = "o-spreadsheet-PivotMeasureDisplayPanel";
58214
56434
  static props = {
@@ -58267,11 +56487,6 @@ function getVisiblePivotCellPositions(getters, pivotId) {
58267
56487
  return positions;
58268
56488
  }
58269
56489
 
58270
- css /* scss */ `
58271
- .pivot-defer-update {
58272
- min-height: 40px;
58273
- }
58274
- `;
58275
56490
  class PivotDeferUpdate extends owl.Component {
58276
56491
  static template = "o-spreadsheet-PivotDeferUpdate";
58277
56492
  static props = {
@@ -58360,25 +56575,6 @@ function getHtmlContentFromPattern(pattern, value, highlightColor, className) {
58360
56575
  return pendingHtmlContent.filter((content) => content.value);
58361
56576
  }
58362
56577
 
58363
- css /* scss */ `
58364
- input.pivot-dimension-search-field:focus {
58365
- outline: none;
58366
- }
58367
- .pivot-dimension-search-field-icon svg {
58368
- width: 13px;
58369
- height: 13px;
58370
- }
58371
- .pivot-dimension-search {
58372
- background-color: white;
58373
- }
58374
- .add-dimension.o-button {
58375
- padding: 2px 7px;
58376
- font-weight: 400;
58377
- font-size: 12px;
58378
- flex-grow: 0;
58379
- height: inherit;
58380
- }
58381
- `;
58382
56578
  class AddDimensionButton extends owl.Component {
58383
56579
  static template = "o-spreadsheet-AddDimensionButton";
58384
56580
  static components = { Popover, TextValueProvider };
@@ -58472,35 +56668,6 @@ class AddDimensionButton extends owl.Component {
58472
56668
  }
58473
56669
  }
58474
56670
 
58475
- // don't use bg-white since it's flipped to dark in dark mode and we don't support dark mode
58476
- css /* scss */ `
58477
- .pivot-dimension {
58478
- background-color: white;
58479
- border: 1px solid ${GRAY_300};
58480
- border-radius: 4px;
58481
-
58482
- select.o-input {
58483
- height: inherit;
58484
- }
58485
-
58486
- select > option {
58487
- background-color: white;
58488
- }
58489
-
58490
- .pivot-dim-operator-label {
58491
- min-width: 120px;
58492
- }
58493
-
58494
- &.pivot-dimension-invalid {
58495
- background-color: #ffdddd;
58496
- border-color: red !important;
58497
- select,
58498
- input {
58499
- background-color: #ffdddd;
58500
- }
58501
- }
58502
- }
58503
- `;
58504
56671
  class PivotDimension extends owl.Component {
58505
56672
  static template = "o-spreadsheet-PivotDimension";
58506
56673
  static props = {
@@ -58652,19 +56819,6 @@ class PivotMeasureEditor extends owl.Component {
58652
56819
  }
58653
56820
  }
58654
56821
 
58655
- css /* scss */ `
58656
- .o-pivot-sort {
58657
- .o-sort-card {
58658
- width: fit-content;
58659
- background-color: ${GRAY_100};
58660
- border: 1px solid ${GRAY_300};
58661
-
58662
- .o-sort-value {
58663
- color: ${PRIMARY_BUTTON_BG};
58664
- }
58665
- }
58666
- }
58667
- `;
58668
56822
  class PivotSortSection extends owl.Component {
58669
56823
  static template = "o-spreadsheet-PivotSortSection";
58670
56824
  static components = {
@@ -58710,11 +56864,6 @@ class PivotSortSection extends owl.Component {
58710
56864
  }
58711
56865
  }
58712
56866
 
58713
- css /* scss */ `
58714
- .add-calculated-measure {
58715
- cursor: pointer;
58716
- }
58717
- `;
58718
56867
  class PivotLayoutConfigurator extends owl.Component {
58719
56868
  static template = "o-spreadsheet-PivotLayoutConfigurator";
58720
56869
  static components = {
@@ -59529,11 +57678,6 @@ class PivotSidePanel extends owl.Component {
59529
57678
  }
59530
57679
  }
59531
57680
 
59532
- css /* scss */ `
59533
- .o-checkbox-selection {
59534
- max-height: 300px;
59535
- }
59536
- `;
59537
57681
  class RemoveDuplicatesPanel extends owl.Component {
59538
57682
  static template = "o-spreadsheet-RemoveDuplicatesPanel";
59539
57683
  static components = { ValidationMessages, Section, Checkbox };
@@ -59620,12 +57764,6 @@ class RemoveDuplicatesPanel extends owl.Component {
59620
57764
  }
59621
57765
  }
59622
57766
 
59623
- css /* scss */ `
59624
- .o-locale-preview {
59625
- border: 1px solid ${GRAY_300};
59626
- background-color: ${GRAY_100};
59627
- }
59628
- `;
59629
57767
  class SettingsPanel extends owl.Component {
59630
57768
  static template = "o-spreadsheet-SettingsPanel";
59631
57769
  static components = { Section, ValidationMessages, BadgeSelection };
@@ -59899,34 +58037,6 @@ function drawTexts(ctx, tableStyle, colWidth, rowHeight) {
59899
58037
  ctx.restore();
59900
58038
  }
59901
58039
 
59902
- css /* scss */ `
59903
- .o-table-style-list-item {
59904
- border: 1px solid transparent;
59905
- border-radius: 4px;
59906
- &.selected {
59907
- border: 1px solid ${ACTION_COLOR};
59908
- background: ${BADGE_SELECTED_COLOR};
59909
- }
59910
-
59911
- &:hover {
59912
- background: #ddd;
59913
- .o-table-style-edit-button {
59914
- display: block !important;
59915
- right: 0;
59916
- top: 0;
59917
- background: #fff;
59918
- cursor: pointer;
59919
- border: 1px solid #ddd;
59920
- padding: 1px 1px 1px 2px;
59921
- .o-icon {
59922
- font-size: 12px;
59923
- width: 12px;
59924
- height: 12px;
59925
- }
59926
- }
59927
- }
59928
- }
59929
- `;
59930
58040
  class TableStylePreview extends owl.Component {
59931
58041
  static template = "o-spreadsheet-TableStylePreview";
59932
58042
  static components = { MenuPopover };
@@ -59987,52 +58097,6 @@ class TableStylePreview extends owl.Component {
59987
58097
  }
59988
58098
  }
59989
58099
 
59990
- css /* scss */ `
59991
- .o-table-style-popover {
59992
- /* 7 tables preview + padding by line */
59993
- width: calc((66px + 4px * 2) * 7 + 1.5rem * 2);
59994
- background: #fff;
59995
- font-size: 14px;
59996
- user-select: none;
59997
-
59998
- .o-notebook {
59999
- border-bottom: 1px solid ${GRAY_300};
60000
-
60001
- .o-notebook-tab {
60002
- padding: 5px 15px;
60003
- border: 1px solid ${GRAY_300};
60004
- margin-bottom: -1px;
60005
- margin-left: -1px;
60006
- color: ${TEXT_BODY};
60007
- cursor: pointer;
60008
- transition: color 0.2s, border-color 0.2s;
60009
-
60010
- &.selected {
60011
- border-bottom-color: #fff;
60012
- border-top-color: ${PRIMARY_BUTTON_BG};
60013
- color: ${TEXT_HEADING};
60014
- }
60015
- }
60016
- }
60017
-
60018
- .o-table-style-list-item {
60019
- padding: 3px;
60020
- }
60021
-
60022
- .o-table-style-popover-preview {
60023
- width: 66px;
60024
- height: 51px;
60025
- }
60026
-
60027
- .o-new-table-style {
60028
- font-size: 36px;
60029
- color: #666;
60030
- &:hover {
60031
- background: #f5f5f5;
60032
- }
60033
- }
60034
- }
60035
- `;
60036
58100
  class TableStylesPopover extends owl.Component {
60037
58101
  static template = "o-spreadsheet-TableStylesPopover";
60038
58102
  static components = { Popover, TableStylePreview };
@@ -60072,31 +58136,6 @@ class TableStylesPopover extends owl.Component {
60072
58136
  }
60073
58137
  }
60074
58138
 
60075
- css /* scss */ `
60076
- .o-table-style-picker {
60077
- border: 1px solid ${GRAY_300};
60078
- border-radius: 3px;
60079
-
60080
- .o-table-style-picker-arrow {
60081
- border-left: 1px solid ${GRAY_300};
60082
-
60083
- &:hover {
60084
- background: #f5f5f5;
60085
- cursor: pointer;
60086
- }
60087
- }
60088
-
60089
- .o-table-style-list-item {
60090
- padding: 5px 6px;
60091
- margin: 5px 2px;
60092
-
60093
- .o-table-style-picker-preview {
60094
- width: 51px;
60095
- height: 36px;
60096
- }
60097
- }
60098
- }
60099
- `;
60100
58139
  class TableStylePicker extends owl.Component {
60101
58140
  static template = "o-spreadsheet-TableStylePicker";
60102
58141
  static components = { TableStylesPopover, TableStylePreview };
@@ -60140,19 +58179,6 @@ class TableStylePicker extends owl.Component {
60140
58179
  }
60141
58180
  }
60142
58181
 
60143
- css /* scss */ `
60144
- .o-table-panel {
60145
- input.o-table-n-of-headers {
60146
- width: 14px;
60147
- text-align: center;
60148
- }
60149
-
60150
- .o-info-icon {
60151
- width: 14px;
60152
- height: 14px;
60153
- }
60154
- }
60155
- `;
60156
58182
  class TablePanel extends owl.Component {
60157
58183
  static template = "o-spreadsheet-TablePanel";
60158
58184
  static components = { TableStylePicker, SelectionInput, ValidationMessages, Checkbox, Section };
@@ -60304,19 +58330,6 @@ class TablePanel extends owl.Component {
60304
58330
  }
60305
58331
  }
60306
58332
 
60307
- css /* scss */ `
60308
- .o-table-style-editor-panel {
60309
- .o-table-style-list-item {
60310
- margin: 2px 7px;
60311
- padding: 6px 9px;
60312
-
60313
- .o-table-style-edit-template-preview {
60314
- width: 71px;
60315
- height: 51px;
60316
- }
60317
- }
60318
- }
60319
- `;
60320
58333
  const DEFAULT_TABLE_STYLE_COLOR = "#3C78D8";
60321
58334
  class TableStyleEditorPanel extends owl.Component {
60322
58335
  static template = "o-spreadsheet-TableStyleEditorPanel";
@@ -60751,15 +58764,6 @@ class SidePanelStore extends SpreadsheetStore {
60751
58764
 
60752
58765
  const SIZE = 3;
60753
58766
  const COLOR = "#777";
60754
- css /* scss */ `
60755
- .o-table-resizer {
60756
- width: ${SIZE * 2}px;
60757
- height: ${SIZE * 2}px;
60758
- border-bottom: ${SIZE}px solid ${COLOR};
60759
- border-right: ${SIZE}px solid ${COLOR};
60760
- cursor: nwse-resize;
60761
- }
60762
- `;
60763
58767
  class TableResizer extends owl.Component {
60764
58768
  static template = "o-spreadsheet-TableResizer";
60765
58769
  static props = { table: Object };
@@ -61576,43 +59580,6 @@ class FullScreenChart extends owl.Component {
61576
59580
  }
61577
59581
  }
61578
59582
 
61579
- css /* scss */ `
61580
- .o_pivot_html_renderer {
61581
- width: 100%;
61582
- border-collapse: collapse;
61583
-
61584
- &:hover {
61585
- cursor: pointer;
61586
- }
61587
-
61588
- td,
61589
- th {
61590
- border: 1px solid #dee2e6;
61591
- background-color: #fff;
61592
- padding: 0.3rem;
61593
- white-space: nowrap;
61594
-
61595
- &:hover {
61596
- filter: brightness(0.9);
61597
- }
61598
- }
61599
-
61600
- td {
61601
- text-align: right;
61602
- }
61603
-
61604
- th {
61605
- background-color: #f5f5f5;
61606
- font-weight: bold;
61607
- color: black;
61608
- }
61609
-
61610
- .o_missing_value {
61611
- color: #46646d;
61612
- background: #e7f2f6;
61613
- }
61614
- }
61615
- `;
61616
59583
  class PivotHTMLRenderer extends owl.Component {
61617
59584
  static template = "o_spreadsheet.PivotHTMLRenderer";
61618
59585
  static components = { Checkbox };
@@ -77626,13 +75593,10 @@ class GridSelectionPlugin extends UIPlugin {
77626
75593
  const deltaCol = isBasedBefore && isCol ? thickness : 0;
77627
75594
  const deltaRow = isBasedBefore && !isCol ? thickness : 0;
77628
75595
  const toRemove = isBasedBefore ? cmd.elements.map((el) => el + thickness) : cmd.elements;
77629
- const originalSize = Object.fromEntries(toRemove.map((element) => {
77630
- const size = isCol
77631
- ? this.getters.getColSize(cmd.sheetId, element)
77632
- : this.getters.getUserRowSize(cmd.sheetId, element);
77633
- const isDefaultCol = isCol && size === DEFAULT_CELL_WIDTH;
77634
- return [element, isDefaultCol ? undefined : size];
77635
- }));
75596
+ const originalSize = {};
75597
+ for (const element of toRemove) {
75598
+ originalSize[element] = this.getters.getHeaderSize(cmd.sheetId, cmd.dimension, element);
75599
+ }
77636
75600
  const target = [
77637
75601
  {
77638
75602
  left: isCol ? start + deltaCol : 0,
@@ -77676,11 +75640,11 @@ class GridSelectionPlugin extends UIPlugin {
77676
75640
  for (const element of toRemove) {
77677
75641
  const size = originalSize[element];
77678
75642
  const currentSize = this.getters.getHeaderSize(cmd.sheetId, cmd.dimension, currentIndex);
77679
- if (size && size !== currentSize) {
75643
+ if (size !== currentSize) {
77680
75644
  resizingGroups[size] ??= [];
77681
75645
  resizingGroups[size].push(currentIndex);
77682
- currentIndex += 1;
77683
75646
  }
75647
+ currentIndex += 1;
77684
75648
  }
77685
75649
  for (const size in resizingGroups) {
77686
75650
  this.dispatch("RESIZE_COLUMNS_ROWS", {
@@ -80599,11 +78563,6 @@ const RIPPLE_KEY_FRAMES = [
80599
78563
  { transform: "scale(0.8)", offset: 0.33 },
80600
78564
  { opacity: "0", transform: "scale(1)", offset: 1 },
80601
78565
  ];
80602
- css /* scss */ `
80603
- .o-ripple {
80604
- z-index: 1;
80605
- }
80606
- `;
80607
78566
  class RippleEffect extends owl.Component {
80608
78567
  static template = "o-spreadsheet-RippleEffect";
80609
78568
  static props = {
@@ -80775,59 +78734,6 @@ function interactiveRenameSheet(env, sheetId, name, errorCallback) {
80775
78734
  }
80776
78735
  }
80777
78736
 
80778
- css /* scss */ `
80779
- .o-sheet {
80780
- padding: 0 15px;
80781
- padding-right: 10px;
80782
- height: ${DESKTOP_BOTTOMBAR_HEIGHT}px;
80783
- border-left: 1px solid #c1c1c1;
80784
- border-right: 1px solid #c1c1c1;
80785
- margin-left: -1px;
80786
- cursor: pointer;
80787
- &:hover {
80788
- background-color: rgba(0, 0, 0, 0.08);
80789
- }
80790
-
80791
- &.active {
80792
- color: ${ACTION_COLOR};
80793
- background-color: #ffffff;
80794
- box-shadow: 0 1px 3px 1px rgba(60, 64, 67, 0.15);
80795
- }
80796
-
80797
- .o-sheet-icon {
80798
- z-index: 1;
80799
-
80800
- &:hover {
80801
- background-color: rgba(0, 0, 0, 0.08);
80802
- }
80803
- }
80804
-
80805
- .o-sheet-name {
80806
- outline: none;
80807
- padding: 2px 4px;
80808
-
80809
- &.o-sheet-name-editable {
80810
- border-radius: 2px;
80811
- border: 2px solid mediumblue;
80812
- /* negative margins so nothing moves when the border is added */
80813
- margin-left: -2px;
80814
- margin-right: -2px;
80815
- }
80816
- }
80817
-
80818
- .o-sheet-color {
80819
- bottom: 0;
80820
- left: 0;
80821
- height: 6px;
80822
- z-index: 1;
80823
- width: calc(100% - 1px);
80824
- }
80825
- }
80826
-
80827
- .o-spreadshet-mobile .o-sheet {
80828
- height: ${MOBILE_BOTTOMBAR_HEIGHT}px;
80829
- }
80830
- `;
80831
78737
  class BottomBarSheet extends owl.Component {
80832
78738
  static template = "o-spreadsheet-BottomBarSheet";
80833
78739
  static props = {
@@ -81107,20 +79013,6 @@ class AggregateStatisticsStore extends SpreadsheetStore {
81107
79013
  }
81108
79014
  }
81109
79015
 
81110
- // -----------------------------------------------------------------------------
81111
- // SpreadSheet
81112
- // -----------------------------------------------------------------------------
81113
- css /* scss */ `
81114
- .o-selection-statistic {
81115
- margin-right: 20px;
81116
- padding: 4px 4px 4px 8px;
81117
- color: #333;
81118
- cursor: pointer;
81119
- &:hover {
81120
- background-color: rgba(0, 0, 0, 0.08) !important;
81121
- }
81122
- }
81123
- `;
81124
79016
  class BottomBarStatistic extends owl.Component {
81125
79017
  static template = "o-spreadsheet-BottomBarStatistic";
81126
79018
  static props = {
@@ -81177,77 +79069,6 @@ class BottomBarStatistic extends owl.Component {
81177
79069
  // SpreadSheet
81178
79070
  // -----------------------------------------------------------------------------
81179
79071
  const MENU_MAX_HEIGHT = 250;
81180
- css /* scss */ `
81181
- .o-spreadsheet-bottom-bar {
81182
- background-color: ${BACKGROUND_GRAY_COLOR};
81183
- padding-left: ${HEADER_WIDTH}px;
81184
- font-size: 15px;
81185
- border-top: 1px solid lightgrey;
81186
-
81187
- .o-sheet-item {
81188
- cursor: pointer;
81189
- &:hover {
81190
- background-color: rgba(0, 0, 0, 0.08);
81191
- }
81192
- }
81193
-
81194
- .o-all-sheets {
81195
- max-width: 70%;
81196
- .o-bottom-bar-fade-out {
81197
- background-image: linear-gradient(-90deg, #cfcfcf, transparent 1%);
81198
- }
81199
-
81200
- .o-bottom-bar-fade-in {
81201
- z-index: 1;
81202
- background-image: linear-gradient(90deg, #cfcfcf, transparent 1%);
81203
- }
81204
-
81205
- .o-sheet-list {
81206
- overflow-y: hidden;
81207
- overflow-x: auto;
81208
-
81209
- &::-webkit-scrollbar {
81210
- display: none; /* Chrome */
81211
- }
81212
- -ms-overflow-style: none; /* IE and Edge */
81213
- scrollbar-width: none; /* Firefox */
81214
- }
81215
- }
81216
-
81217
- .o-bottom-bar-arrows {
81218
- .o-bottom-bar-arrow {
81219
- cursor: pointer;
81220
- &:hover:not([class*="o-disabled"]) {
81221
- .o-icon {
81222
- opacity: 0.9;
81223
- }
81224
- }
81225
-
81226
- .o-icon {
81227
- height: 18px;
81228
- width: 18px;
81229
- font-size: 18px;
81230
- }
81231
- }
81232
- }
81233
- }
81234
-
81235
- .o-spreadsheet-mobile .o-spreadsheet-bottom-bar {
81236
- padding-left: 0;
81237
-
81238
- .add-sheet-container {
81239
- order: 2;
81240
- }
81241
-
81242
- .o-add-sheet {
81243
- margin-left: 0.5rem;
81244
- }
81245
-
81246
- .o-all-sheets {
81247
- max-width: none;
81248
- }
81249
- }
81250
- `;
81251
79072
  class BottomBar extends owl.Component {
81252
79073
  static template = "o-spreadsheet-BottomBar";
81253
79074
  static props = { onClick: Function };
@@ -81503,12 +79324,6 @@ class ClickableCellsStore extends SpreadsheetStore {
81503
79324
  }
81504
79325
  }
81505
79326
 
81506
- css /* scss */ `
81507
- .o-dashboard-clickable-cell {
81508
- position: absolute;
81509
- cursor: pointer;
81510
- }
81511
- `;
81512
79327
  class SpreadsheetDashboard extends owl.Component {
81513
79328
  static template = "o-spreadsheet-SpreadsheetDashboard";
81514
79329
  static props = { getGridSize: Function };
@@ -81600,27 +79415,6 @@ class SpreadsheetDashboard extends owl.Component {
81600
79415
  }
81601
79416
  }
81602
79417
 
81603
- css /* scss */ `
81604
- .o-header-group {
81605
- .o-header-group-header {
81606
- z-index: ${ComponentsImportance.HeaderGroupingButton};
81607
- .o-group-fold-button {
81608
- cursor: pointer;
81609
- width: 15px;
81610
- height: 15px;
81611
- border: 1px solid ${HEADER_GROUPING_BORDER_COLOR};
81612
- .o-icon {
81613
- width: 7px;
81614
- height: 7px;
81615
- }
81616
-
81617
- &:hover {
81618
- border-color: #777;
81619
- }
81620
- }
81621
- }
81622
- }
81623
- `;
81624
79418
  class AbstractHeaderGroup extends owl.Component {
81625
79419
  static template = "o-spreadsheet-HeaderGroup";
81626
79420
  static props = {
@@ -81771,27 +79565,6 @@ class ColGroup extends AbstractHeaderGroup {
81771
79565
  }
81772
79566
  }
81773
79567
 
81774
- css /* scss */ `
81775
- .o-header-group-frozen-pane-border {
81776
- &.o-group-rows {
81777
- margin-top: -1px;
81778
- border-bottom: 3px solid ${FROZEN_PANE_HEADER_BORDER_COLOR};
81779
- }
81780
- &.o-group-columns {
81781
- margin-left: -1px;
81782
- border-right: 3px solid ${FROZEN_PANE_HEADER_BORDER_COLOR};
81783
- }
81784
- }
81785
-
81786
- .o-header-group-main-pane {
81787
- &.o-group-rows {
81788
- margin-top: -2px; /* Counteract o-header-group-frozen-pane-border offset */
81789
- }
81790
- &.o-group-columns {
81791
- margin-left: -2px;
81792
- }
81793
- }
81794
- `;
81795
79568
  class HeaderGroupContainer extends owl.Component {
81796
79569
  static template = "o-spreadsheet-HeaderGroupContainer";
81797
79570
  static props = {
@@ -81870,121 +79643,6 @@ function useScreenWidth() {
81870
79643
  };
81871
79644
  }
81872
79645
 
81873
- css /* scss */ `
81874
- .o-sidePanel {
81875
- display: flex;
81876
- flex-direction: column;
81877
- overflow-x: hidden;
81878
- background-color: white;
81879
- border: solid ${GRAY_300};
81880
- border-width: 1px 0 0 1px;
81881
- user-select: none;
81882
- color: ${TEXT_BODY};
81883
-
81884
- &.collapsed {
81885
- padding: 8px;
81886
- cursor: pointer;
81887
-
81888
- .o-sidePanelTitle {
81889
- writing-mode: vertical-rl;
81890
- text-orientation: mixed;
81891
- }
81892
- }
81893
-
81894
- .o-sidePanelTitle {
81895
- line-height: 20px;
81896
- font-size: 16px;
81897
- }
81898
-
81899
- .o-sidePanelHeader {
81900
- padding: 8px;
81901
- border-bottom: 1px solid ${GRAY_300};
81902
- }
81903
-
81904
- .o-sidePanelAction {
81905
- padding: 5px 10px;
81906
- cursor: pointer;
81907
-
81908
- &.active {
81909
- background-color: ${BUTTON_ACTIVE_BG};
81910
- }
81911
-
81912
- &:hover {
81913
- background-color: ${BUTTON_HOVER_BG};
81914
- }
81915
- }
81916
- .o-sidePanelBody-container {
81917
- /* This overwrites the min-height: auto; of flex. Without this, a flex div cannot be smaller than its children */
81918
- min-height: 0;
81919
- }
81920
- .o-sidePanelBody {
81921
- overflow: auto;
81922
- width: 100%;
81923
- height: 100%;
81924
-
81925
- .o-section {
81926
- padding: 16px;
81927
-
81928
- .o-section-title {
81929
- font-weight: 500;
81930
- margin-bottom: 5px;
81931
- }
81932
-
81933
- .o-section-subtitle {
81934
- font-weight: 500;
81935
- font-size: 13px;
81936
- line-height: 14px;
81937
- margin: 8px 0 4px 0;
81938
- }
81939
-
81940
- .o-subsection-left {
81941
- display: inline-block;
81942
- width: 47%;
81943
- margin-right: 3%;
81944
- }
81945
-
81946
- .o-subsection-right {
81947
- display: inline-block;
81948
- width: 47%;
81949
- margin-left: 3%;
81950
- }
81951
- }
81952
-
81953
- .o-sidePanel-composer {
81954
- color: ${TEXT_BODY};
81955
- }
81956
- }
81957
-
81958
- .o-sidePanelButtons {
81959
- display: flex;
81960
- gap: 8px;
81961
- }
81962
-
81963
- .o-invalid {
81964
- border-width: 2px;
81965
- border-color: red;
81966
- }
81967
-
81968
- .o-sidePanel-handle-container {
81969
- width: 8px;
81970
- position: fixed;
81971
- top: 50%;
81972
- z-index: 1;
81973
- }
81974
- .o-sidePanel-handle {
81975
- cursor: col-resize;
81976
- color: #a9a9a9;
81977
- .o-icon {
81978
- height: 25px;
81979
- margin-left: -5px;
81980
- }
81981
- }
81982
- }
81983
-
81984
- .o-fw-bold {
81985
- font-weight: 500;
81986
- }
81987
- `;
81988
79646
  class SidePanel extends owl.Component {
81989
79647
  static template = "o-spreadsheet-SidePanel";
81990
79648
  static props = {
@@ -82159,11 +79817,6 @@ class RibbonMenu extends owl.Component {
82159
79817
  }
82160
79818
  }
82161
79819
 
82162
- css `
82163
- .o-small-composer {
82164
- z-index: ${ComponentsImportance.TopBarComposer};
82165
- }
82166
- `;
82167
79820
  class SmallBottomBar extends owl.Component {
82168
79821
  static components = { Composer, BottomBar, Ripple, RibbonMenu };
82169
79822
  static template = "o-spreadsheet-SmallBottomBar";
@@ -82251,36 +79904,12 @@ class SmallBottomBar extends owl.Component {
82251
79904
 
82252
79905
  const COMPOSER_MAX_HEIGHT = 300;
82253
79906
  /* svg free of use from https://uxwing.com/formula-fx-icon/ */
82254
- const FX_SVG = /*xml*/ `
82255
- <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
82256
- <path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
82257
- </svg>
82258
- `;
82259
- css /* scss */ `
82260
- .o-topbar-composer-container {
82261
- height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
82262
- }
82263
-
82264
- .o-topbar-composer {
82265
- height: fit-content;
82266
- margin-top: -1px;
82267
- margin-bottom: -1px;
82268
- border: 1px solid;
82269
- font-family: ${DEFAULT_FONT};
82270
-
82271
- /* In readonly we always show the fx icon if the composer is empty, not matter the focus */
82272
- .o-composer:empty:not(:focus):not(.active)::before,
82273
- &.o-topbar-composer-readonly .o-composer:empty::before {
82274
- content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
82275
- position: relative;
82276
- top: 20%;
82277
- }
82278
- }
82279
-
82280
- .user-select-text {
82281
- user-select: text;
82282
- }
82283
- `;
79907
+ // FIXME This svg is hardcoded in the css file. We should find a better way to handle it.
79908
+ // const FX_SVG = /*xml*/ `
79909
+ // <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
79910
+ // <path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
79911
+ // </svg>
79912
+ // `;
82284
79913
  class TopBarComposer extends owl.Component {
82285
79914
  static template = "o-spreadsheet-TopBarComposer";
82286
79915
  static props = {};
@@ -82316,18 +79945,6 @@ class TopBarComposer extends owl.Component {
82316
79945
  style.height = this.focus === "inactive" ? `${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px` : "fit-content";
82317
79946
  return cssPropertiesToCss(style);
82318
79947
  }
82319
- get containerStyle() {
82320
- if (this.focus === "inactive") {
82321
- return cssPropertiesToCss({
82322
- "border-color": SEPARATOR_COLOR,
82323
- "border-right": "none",
82324
- });
82325
- }
82326
- return cssPropertiesToCss({
82327
- "border-color": SELECTION_BORDER_COLOR,
82328
- "z-index": String(ComponentsImportance.TopBarComposer),
82329
- });
82330
- }
82331
79948
  onFocus(selection) {
82332
79949
  this.composerFocusStore.focusComposer(this.composerInterface, { selection });
82333
79950
  }
@@ -82417,79 +80034,6 @@ const BORDER_POSITIONS = [
82417
80034
  // -----------------------------------------------------------------------------
82418
80035
  // Border Editor
82419
80036
  // -----------------------------------------------------------------------------
82420
- css /* scss */ `
82421
- .o-border-selector {
82422
- padding: 4px;
82423
- background-color: white;
82424
-
82425
- .o-divider {
82426
- border-right: 1px solid ${GRAY_300};
82427
- margin: 0 6px;
82428
- }
82429
-
82430
- .o-border-selector-section {
82431
- .o-dropdown-line {
82432
- height: 30px;
82433
- margin: 1px;
82434
- .o-line-item {
82435
- padding: 4px;
82436
- width: 26px;
82437
- height: 26px;
82438
- &.active {
82439
- background-color: ${BUTTON_ACTIVE_BG};
82440
- }
82441
- }
82442
- }
82443
- .o-border-style-tool {
82444
- padding: 0px 3px;
82445
- margin: 2px;
82446
- height: 25px;
82447
- }
82448
- }
82449
- }
82450
-
82451
- .o-border-style-dropdown {
82452
- background: #ffffff;
82453
- padding: 4px;
82454
- .o-dropdown-line {
82455
- }
82456
- .o-style-preview {
82457
- margin: 7px 5px 7px 5px;
82458
- width: 60px;
82459
- height: 5px;
82460
- }
82461
- .o-style-thin {
82462
- border-bottom: 1px solid #000000;
82463
- }
82464
- .o-style-medium {
82465
- border-bottom: 2px solid #000000;
82466
- }
82467
- .o-style-thick {
82468
- border-bottom: 3px solid #000000;
82469
- }
82470
- .o-style-dashed {
82471
- border-bottom: 1px dashed #000000;
82472
- }
82473
- .o-style-dotted {
82474
- border-bottom: 1px dotted #000000;
82475
- }
82476
- .o-dropdown-border-type {
82477
- cursor: pointer;
82478
- &:not(.o-disabled):not(.active):hover {
82479
- background-color: ${BUTTON_HOVER_BG};
82480
- }
82481
- }
82482
- .o-dropdown-border-check {
82483
- width: 20px;
82484
- font-size: 12px;
82485
- }
82486
- .o-border-picker-button {
82487
- padding: 0px !important;
82488
- margin: 5px 0px 0px 0px !important;
82489
- height: 25px !important;
82490
- }
82491
- }
82492
- `;
82493
80037
  class BorderEditor extends owl.Component {
82494
80038
  static template = "o-spreadsheet-BorderEditor";
82495
80039
  static props = {
@@ -83040,90 +80584,6 @@ topBarToolBarRegistry
83040
80584
  // -----------------------------------------------------------------------------
83041
80585
  // TopBar
83042
80586
  // -----------------------------------------------------------------------------
83043
- css /* scss */ `
83044
- .o-topbar-divider {
83045
- border-right: 1px solid ${SEPARATOR_COLOR};
83046
- width: 0;
83047
- margin: 0 6px;
83048
- height: 30px;
83049
- }
83050
-
83051
- .o-toolbar-button {
83052
- height: 30px;
83053
- }
83054
-
83055
- .o-spreadsheet-topbar {
83056
- line-height: 1.2;
83057
- font-size: 14px;
83058
- font-weight: 500;
83059
- background-color: #fff;
83060
-
83061
- .o-topbar-top {
83062
- border-bottom: 1px solid ${SEPARATOR_COLOR};
83063
- padding: 2px 10px;
83064
-
83065
- /* Menus */
83066
- .o-topbar-topleft {
83067
- .o-topbar-menu {
83068
- padding: 4px 6px;
83069
- margin: 0 2px;
83070
-
83071
- &.active {
83072
- background-color: ${BUTTON_ACTIVE_BG};
83073
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83074
- }
83075
- }
83076
- }
83077
- }
83078
-
83079
- .irregularity-map {
83080
- border-top: 1px solid ${SEPARATOR_COLOR};
83081
- height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
83082
-
83083
- .alert-info {
83084
- border-left: 3px solid ${ALERT_INFO_BORDER};
83085
- }
83086
- }
83087
-
83088
- .o-topbar-composer {
83089
- flex-grow: 1;
83090
- }
83091
-
83092
- /* Toolbar */
83093
- .o-topbar-toolbar {
83094
- height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
83095
-
83096
- .o-readonly-toolbar {
83097
- background-color: ${BACKGROUND_HEADER_COLOR};
83098
- padding-left: 18px;
83099
- padding-right: 18px;
83100
- }
83101
-
83102
- /* Toolbar */
83103
- .o-toolbar-tools {
83104
- cursor: default;
83105
- }
83106
- }
83107
- }
83108
-
83109
- .o-spreadsheet-mobile {
83110
- .o-topbar-toolbar {
83111
- height: ${MOBILE_TOPBAR_TOOLBAR_HEIGHT}px;
83112
- }
83113
- .o-topbar-divider {
83114
- border-width: 2px;
83115
- border-radius: 4px;
83116
- }
83117
-
83118
- .o-toolbar-button {
83119
- height: 35px;
83120
- width: 31px;
83121
- .o-toolbar-button.o-mobile-disabled * {
83122
- color: ${DISABLED_TEXT_COLOR};
83123
- cursor: not-allowed;
83124
- }
83125
- }
83126
- `;
83127
80587
  class TopBar extends owl.Component {
83128
80588
  static template = "o-spreadsheet-TopBar";
83129
80589
  static props = {
@@ -83397,251 +80857,6 @@ class WebClipboardWrapper {
83397
80857
  }
83398
80858
  }
83399
80859
 
83400
- // -----------------------------------------------------------------------------
83401
- // SpreadSheet
83402
- // -----------------------------------------------------------------------------
83403
- const CARET_DOWN_SVG = /*xml*/ `
83404
- <svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
83405
- <polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
83406
- </svg>
83407
- `;
83408
- css /* scss */ `
83409
- .o-spreadsheet {
83410
- position: relative;
83411
- display: grid;
83412
- font-size: 14px;
83413
-
83414
- .text-muted {
83415
- color: ${TEXT_BODY_MUTED} !important;
83416
- }
83417
- .o-disabled {
83418
- opacity: 0.4;
83419
- cursor: default;
83420
- pointer-events: none;
83421
- }
83422
-
83423
- &,
83424
- *,
83425
- *:before,
83426
- *:after {
83427
- /* rtl not supported ATM */
83428
- direction: ltr;
83429
- }
83430
- .o-separator {
83431
- border-bottom: ${MENU_SEPARATOR_BORDER_WIDTH}px solid ${SEPARATOR_COLOR};
83432
- margin-top: ${MENU_SEPARATOR_PADDING}px;
83433
- margin-bottom: ${MENU_SEPARATOR_PADDING}px;
83434
- }
83435
- .o-hoverable-button {
83436
- border-radius: 2px;
83437
- cursor: pointer;
83438
- .o-icon {
83439
- color: ${TEXT_BODY};
83440
- }
83441
- &:not(.o-disabled):not(.active):hover {
83442
- background-color: ${BUTTON_HOVER_BG};
83443
- color: ${BUTTON_HOVER_TEXT_COLOR};
83444
- .o-icon {
83445
- color: ${BUTTON_HOVER_TEXT_COLOR};
83446
- }
83447
- }
83448
- &.active {
83449
- background-color: ${BUTTON_ACTIVE_BG};
83450
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83451
- .o-icon {
83452
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83453
- }
83454
- }
83455
- }
83456
-
83457
- .o-grid-container {
83458
- display: grid;
83459
- background-color: ${HEADER_GROUPING_BACKGROUND_COLOR};
83460
-
83461
- .o-top-left {
83462
- border: 1px solid ${GRID_BORDER_COLOR};
83463
- margin-bottom: -1px;
83464
- margin-right: -1px;
83465
- }
83466
-
83467
- .o-column-groups {
83468
- grid-column-start: 2;
83469
- border-top: 1px solid ${GRID_BORDER_COLOR};
83470
- }
83471
-
83472
- .o-row-groups {
83473
- grid-row-start: 2;
83474
- }
83475
-
83476
- .o-group-grid {
83477
- border-top: 1px solid ${GRID_BORDER_COLOR};
83478
- border-left: 1px solid ${GRID_BORDER_COLOR};
83479
- }
83480
- }
83481
-
83482
- .o-input {
83483
- min-width: 0px;
83484
- padding: 1px 0;
83485
- width: 100%;
83486
- outline: none;
83487
- border-color: ${GRAY_300};
83488
- color: ${GRAY_900};
83489
-
83490
- &::placeholder {
83491
- opacity: 0.5;
83492
- }
83493
- &:focus {
83494
- border-color: ${ACTION_COLOR};
83495
- }
83496
- }
83497
-
83498
- select.o-input {
83499
- cursor: pointer;
83500
- border-width: 0 0 1px 0;
83501
- padding: 1px 6px 1px 0px;
83502
-
83503
- appearance: none;
83504
- -webkit-appearance: none;
83505
- -moz-appearance: none;
83506
- background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
83507
- no-repeat right center;
83508
- text-overflow: ellipsis;
83509
-
83510
- &:disabled {
83511
- color: ${DISABLED_TEXT_COLOR};
83512
- opacity: 0.4;
83513
- cursor: default;
83514
- }
83515
- }
83516
-
83517
- .o-input[type="text"] {
83518
- border-width: 0 0 1px 0;
83519
- }
83520
-
83521
- .o-input[type="number"],
83522
- .o-number-input {
83523
- border-width: 0 0 1px 0;
83524
- /* Remove number input arrows */
83525
- appearance: textfield;
83526
- &::-webkit-outer-spin-button,
83527
- &::-webkit-inner-spin-button {
83528
- -webkit-appearance: none;
83529
- margin: 0;
83530
- }
83531
- }
83532
- }
83533
-
83534
- .o-two-columns {
83535
- grid-column: 1 / 3;
83536
- }
83537
-
83538
- .o-text-icon {
83539
- vertical-align: middle;
83540
- }
83541
- `;
83542
- // -----------------------------------------------------------------------------
83543
- // GRID STYLE
83544
- // -----------------------------------------------------------------------------
83545
- css /* scss */ `
83546
- .o-grid {
83547
- position: relative;
83548
- overflow: hidden;
83549
- background-color: ${BACKGROUND_GRAY_COLOR};
83550
- &:focus {
83551
- outline: none;
83552
- }
83553
-
83554
- > canvas {
83555
- box-sizing: content-box;
83556
- border-bottom: 1px solid #e2e3e3;
83557
- border-right: 1px solid #e2e3e3;
83558
- }
83559
-
83560
- .o-grid-overlay {
83561
- position: absolute;
83562
- outline: none;
83563
- }
83564
- }
83565
-
83566
- .o-button {
83567
- border: 1px solid;
83568
- border-radius: 4px;
83569
- font-weight: 500;
83570
- font-size: 14px;
83571
- height: 32px;
83572
- line-height: 16px;
83573
- flex-grow: 1;
83574
- background-color: ${BUTTON_BG};
83575
- border: 1px solid ${GRAY_200};
83576
- color: ${TEXT_BODY};
83577
-
83578
- &:disabled {
83579
- color: ${DISABLED_TEXT_COLOR};
83580
- }
83581
-
83582
- &.primary {
83583
- background-color: ${PRIMARY_BUTTON_BG};
83584
- border-color: ${PRIMARY_BUTTON_BG};
83585
- color: #fff;
83586
- &:hover:enabled {
83587
- color: #fff;
83588
- background-color: ${PRIMARY_BUTTON_HOVER_BG};
83589
- }
83590
- &:active:enabled {
83591
- background-color: ${PRIMARY_BUTTON_ACTIVE_BG};
83592
- color: ${PRIMARY_BUTTON_BG};
83593
- }
83594
- &.o-disabled,
83595
- &:disabled {
83596
- opacity: 0.5;
83597
- }
83598
- }
83599
-
83600
- &:hover:enabled {
83601
- color: ${BUTTON_HOVER_TEXT_COLOR};
83602
- background-color: ${BUTTON_HOVER_BG};
83603
- }
83604
- &:active:enabled {
83605
- color: ${BUTTON_ACTIVE_TEXT_COLOR};
83606
- background-color: ${BUTTON_ACTIVE_BG};
83607
- }
83608
-
83609
- &.o-disabled,
83610
- &:disabled {
83611
- opacity: 0.8;
83612
- }
83613
-
83614
- &.o-button-danger:hover {
83615
- color: #ffffff;
83616
- background: ${ALERT_DANGER_BORDER};
83617
- }
83618
- }
83619
-
83620
- .o-button-link {
83621
- cursor: pointer;
83622
- text-decoration: none;
83623
- color: ${ACTION_COLOR};
83624
- font-weight: 500;
83625
- &:hover,
83626
- &:active {
83627
- color: ${ACTION_COLOR_HOVER};
83628
- }
83629
- }
83630
-
83631
- .o-button-icon {
83632
- cursor: pointer;
83633
- color: ${TEXT_BODY_MUTED};
83634
- font-weight: 500;
83635
- &:hover,
83636
- &:active {
83637
- color: ${TEXT_BODY};
83638
- }
83639
- }
83640
-
83641
- .o-spreadsheet-bottombar-wrapper {
83642
- z-index: ${ComponentsImportance.ScrollBar + 1};
83643
- }
83644
- `;
83645
80860
  class Spreadsheet extends owl.Component {
83646
80861
  static template = "o-spreadsheet-Spreadsheet";
83647
80862
  static props = {
@@ -88520,6 +85735,6 @@ exports.tokenColors = tokenColors;
88520
85735
  exports.tokenize = tokenize;
88521
85736
 
88522
85737
 
88523
- __info__.version = "19.1.0-alpha.1";
88524
- __info__.date = "2025-09-12T13:33:41.605Z";
88525
- __info__.hash = "d3e4e7b";
85738
+ __info__.version = "19.1.0-alpha.2";
85739
+ __info__.date = "2025-09-19T07:26:49.306Z";
85740
+ __info__.hash = "8cc543d";