@odoo/o-spreadsheet 16.2.0 → 16.3.0-alpha.1
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.
- package/dist/o-spreadsheet.cjs.js +197 -96
- package/dist/o-spreadsheet.esm.js +197 -96
- package/dist/o-spreadsheet.iife.js +197 -96
- package/dist/o-spreadsheet.iife.min.js +319 -373
- package/package.json +2 -2
|
@@ -110,6 +110,7 @@ const HEADER_BORDER_COLOR = "#C0C0C0";
|
|
|
110
110
|
const CELL_BORDER_COLOR = "#E2E3E3";
|
|
111
111
|
const BACKGROUND_CHART_COLOR = "#FFFFFF";
|
|
112
112
|
const MENU_ITEM_DISABLED_COLOR = "#CACACA";
|
|
113
|
+
const BG_HOVER_COLOR = "#EBEBEB";
|
|
113
114
|
const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
|
|
114
115
|
const LINK_COLOR = "#01666b";
|
|
115
116
|
const FILTERS_COLOR = "#188038";
|
|
@@ -594,6 +595,38 @@ function getYearFrac(startDate, endDate, _dayCountConvention) {
|
|
|
594
595
|
break;
|
|
595
596
|
}
|
|
596
597
|
return yearsEnd - yearsStart;
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Get the number of whole months between two dates.
|
|
601
|
+
* e.g.
|
|
602
|
+
* 2002/01/01 -> 2002/02/01 = 1 month,
|
|
603
|
+
* 2002/01/01 -> 2003/02/01 = 13 months
|
|
604
|
+
* @param startDate
|
|
605
|
+
* @param endDate
|
|
606
|
+
* @returns
|
|
607
|
+
*/
|
|
608
|
+
function getTimeDifferenceInWholeMonths(startDate, endDate) {
|
|
609
|
+
const months = (endDate.getFullYear() - startDate.getFullYear()) * 12 +
|
|
610
|
+
endDate.getMonth() -
|
|
611
|
+
startDate.getMonth();
|
|
612
|
+
return startDate.getDate() > endDate.getDate() ? months - 1 : months;
|
|
613
|
+
}
|
|
614
|
+
function getTimeDifferenceInWholeDays(startDate, endDate) {
|
|
615
|
+
const startUtc = startDate.getTime();
|
|
616
|
+
const endUtc = endDate.getTime();
|
|
617
|
+
return Math.floor((endUtc - startUtc) / MS_PER_DAY);
|
|
618
|
+
}
|
|
619
|
+
function getTimeDifferenceInWholeYears(startDate, endDate) {
|
|
620
|
+
const years = endDate.getFullYear() - startDate.getFullYear();
|
|
621
|
+
const monthStart = startDate.getMonth();
|
|
622
|
+
const monthEnd = endDate.getMonth();
|
|
623
|
+
const dateStart = startDate.getDate();
|
|
624
|
+
const dateEnd = endDate.getDate();
|
|
625
|
+
const isEndMonthDateBigger = monthEnd > monthStart || (monthEnd === monthStart && dateEnd >= dateStart);
|
|
626
|
+
return isEndMonthDateBigger ? years : years - 1;
|
|
627
|
+
}
|
|
628
|
+
function areTwoDatesWithinOneYear(startDate, endDate) {
|
|
629
|
+
return getYearFrac(startDate, endDate, 1) < 1;
|
|
597
630
|
}
|
|
598
631
|
|
|
599
632
|
//------------------------------------------------------------------------------
|
|
@@ -3409,6 +3442,11 @@ function assert(condition, message) {
|
|
|
3409
3442
|
// FORMAT FUNCTIONS
|
|
3410
3443
|
// -----------------------------------------------------------------------------
|
|
3411
3444
|
const expectNumberValueError = (value) => _lt("The function [[FUNCTION_NAME]] expects a number value, but '%s' is a string, and cannot be coerced to a number.", value);
|
|
3445
|
+
const expectNumberRangeError = (lowerBound, upperBound, value) => _lt("The function [[FUNCTION_NAME]] expects a number value between %s and %s inclusive, but receives %s.", lowerBound.toString(), upperBound.toString(), value.toString());
|
|
3446
|
+
const expectStringSetError = (stringSet, value) => {
|
|
3447
|
+
const stringSetString = stringSet.map((str) => `'${str}'`).join(", ");
|
|
3448
|
+
return _lt("The function [[FUNCTION_NAME]] has an argument with value '%s'. It should be one of: %s.", value, stringSetString);
|
|
3449
|
+
};
|
|
3412
3450
|
function toNumber(value) {
|
|
3413
3451
|
switch (typeof value) {
|
|
3414
3452
|
case "number":
|
|
@@ -3434,6 +3472,12 @@ function strictToNumber(value) {
|
|
|
3434
3472
|
}
|
|
3435
3473
|
return toNumber(value);
|
|
3436
3474
|
}
|
|
3475
|
+
function strictToInteger(value) {
|
|
3476
|
+
return Math.trunc(strictToNumber(value));
|
|
3477
|
+
}
|
|
3478
|
+
function assertNumberGreaterThanOrEqualToOne(value) {
|
|
3479
|
+
assert(() => value >= 1, _lt("The function [[FUNCTION_NAME]] expects a number value to be greater than or equal to 1, but receives %s.", value.toString()));
|
|
3480
|
+
}
|
|
3437
3481
|
function toString(value) {
|
|
3438
3482
|
switch (typeof value) {
|
|
3439
3483
|
case "string":
|
|
@@ -4667,6 +4711,7 @@ const CSS$2 = css /* scss */ `
|
|
|
4667
4711
|
.o-search-icon {
|
|
4668
4712
|
right: 5px;
|
|
4669
4713
|
top: 4px;
|
|
4714
|
+
opacity: 0.4;
|
|
4670
4715
|
|
|
4671
4716
|
svg {
|
|
4672
4717
|
height: 16px;
|
|
@@ -5292,7 +5337,7 @@ css /* scss */ `
|
|
|
5292
5337
|
&:not(.disabled) {
|
|
5293
5338
|
&:hover,
|
|
5294
5339
|
&.o-menu-item-active {
|
|
5295
|
-
background-color:
|
|
5340
|
+
background-color: ${BG_HOVER_COLOR};
|
|
5296
5341
|
}
|
|
5297
5342
|
.o-menu-item-description {
|
|
5298
5343
|
color: grey;
|
|
@@ -11753,6 +11798,15 @@ var database = /*#__PURE__*/Object.freeze({
|
|
|
11753
11798
|
|
|
11754
11799
|
const DEFAULT_TYPE = 1;
|
|
11755
11800
|
const DEFAULT_WEEKEND = 1;
|
|
11801
|
+
var TIME_UNIT;
|
|
11802
|
+
(function (TIME_UNIT) {
|
|
11803
|
+
TIME_UNIT["WHOLE_YEARS"] = "Y";
|
|
11804
|
+
TIME_UNIT["WHOLE_MONTHS"] = "M";
|
|
11805
|
+
TIME_UNIT["WHOLE_DAYS"] = "D";
|
|
11806
|
+
TIME_UNIT["DAYS_WITHOUT_WHOLE_MONTHS"] = "MD";
|
|
11807
|
+
TIME_UNIT["MONTH_WITHOUT_WHOLE_YEARS"] = "YM";
|
|
11808
|
+
TIME_UNIT["DAYS_BETWEEN_NO_MORE_THAN_ONE_YEAR"] = "YD";
|
|
11809
|
+
})(TIME_UNIT || (TIME_UNIT = {}));
|
|
11756
11810
|
// -----------------------------------------------------------------------------
|
|
11757
11811
|
// DATE
|
|
11758
11812
|
// -----------------------------------------------------------------------------
|
|
@@ -11783,6 +11837,63 @@ const DATE = {
|
|
|
11783
11837
|
isExported: true,
|
|
11784
11838
|
};
|
|
11785
11839
|
// -----------------------------------------------------------------------------
|
|
11840
|
+
// DATEDIF
|
|
11841
|
+
// -----------------------------------------------------------------------------
|
|
11842
|
+
const DATEDIF = {
|
|
11843
|
+
description: _lt("Calculates the number of days, months, or years between two dates."),
|
|
11844
|
+
args: [
|
|
11845
|
+
arg("start_date (date)", _lt("The start date to consider in the calculation. Must be a reference to a cell containing a DATE, a function returning a DATE type, or a number.")),
|
|
11846
|
+
arg("end_date (date)", _lt("The end date to consider in the calculation. Must be a reference to a cell containing a DATE, a function returning a DATE type, or a number.")),
|
|
11847
|
+
arg("unit (string)", _lt(`A text abbreviation for unit of time. Accepted values are "Y" (the number of whole years between start_date and end_date), "M" (the number of whole months between start_date and end_date), "D" (the number of days between start_date and end_date), "MD" (the number of days between start_date and end_date after subtracting whole months), "YM" (the number of whole months between start_date and end_date after subtracting whole years), "YD" (the number of days between start_date and end_date, assuming start_date and end_date were no more than one year apart).`)),
|
|
11848
|
+
],
|
|
11849
|
+
returns: ["NUMBER"],
|
|
11850
|
+
compute: function (startDate, endDate, unit) {
|
|
11851
|
+
const _unit = toString(unit).toUpperCase();
|
|
11852
|
+
assert(() => Object.values(TIME_UNIT).includes(_unit), expectStringSetError(Object.values(TIME_UNIT), toString(unit)));
|
|
11853
|
+
const _startDate = Math.trunc(toNumber(startDate));
|
|
11854
|
+
const _endDate = Math.trunc(toNumber(endDate));
|
|
11855
|
+
const jsStartDate = numberToJsDate(_startDate);
|
|
11856
|
+
const jsEndDate = numberToJsDate(_endDate);
|
|
11857
|
+
assert(() => _endDate >= _startDate, _lt("start_date (%s) should be on or before end_date (%s).", jsStartDate.toLocaleDateString(), jsEndDate.toLocaleDateString()));
|
|
11858
|
+
switch (_unit) {
|
|
11859
|
+
case TIME_UNIT.WHOLE_YEARS:
|
|
11860
|
+
return getTimeDifferenceInWholeYears(jsStartDate, jsEndDate);
|
|
11861
|
+
case TIME_UNIT.WHOLE_MONTHS:
|
|
11862
|
+
return getTimeDifferenceInWholeMonths(jsStartDate, jsEndDate);
|
|
11863
|
+
case TIME_UNIT.WHOLE_DAYS: {
|
|
11864
|
+
return getTimeDifferenceInWholeDays(jsStartDate, jsEndDate);
|
|
11865
|
+
}
|
|
11866
|
+
case TIME_UNIT.MONTH_WITHOUT_WHOLE_YEARS: {
|
|
11867
|
+
return (getTimeDifferenceInWholeMonths(jsStartDate, jsEndDate) -
|
|
11868
|
+
getTimeDifferenceInWholeYears(jsStartDate, jsEndDate) * 12);
|
|
11869
|
+
}
|
|
11870
|
+
case TIME_UNIT.DAYS_WITHOUT_WHOLE_MONTHS:
|
|
11871
|
+
// Using "MD" may get incorrect result in Excel
|
|
11872
|
+
// See: https://support.microsoft.com/en-us/office/datedif-function-25dba1a4-2812-480b-84dd-8b32a451b35c
|
|
11873
|
+
let days = jsEndDate.getDate() - jsStartDate.getDate();
|
|
11874
|
+
if (days < 0) {
|
|
11875
|
+
const monthBeforeEndMonth = new Date(jsEndDate.getFullYear(), jsEndDate.getMonth() - 1, 1);
|
|
11876
|
+
const daysInMonthBeforeEndMonth = getDaysInMonth(monthBeforeEndMonth);
|
|
11877
|
+
days = daysInMonthBeforeEndMonth - Math.abs(days);
|
|
11878
|
+
}
|
|
11879
|
+
return days;
|
|
11880
|
+
case TIME_UNIT.DAYS_BETWEEN_NO_MORE_THAN_ONE_YEAR: {
|
|
11881
|
+
if (areTwoDatesWithinOneYear(_startDate, _endDate)) {
|
|
11882
|
+
return getTimeDifferenceInWholeDays(jsStartDate, jsEndDate);
|
|
11883
|
+
}
|
|
11884
|
+
const endDateWithinOneYear = new Date(jsStartDate.getFullYear(), jsEndDate.getMonth(), jsEndDate.getDate());
|
|
11885
|
+
let days = getTimeDifferenceInWholeDays(jsStartDate, endDateWithinOneYear);
|
|
11886
|
+
if (days < 0) {
|
|
11887
|
+
endDateWithinOneYear.setFullYear(jsStartDate.getFullYear() + 1);
|
|
11888
|
+
days = getTimeDifferenceInWholeDays(jsStartDate, endDateWithinOneYear);
|
|
11889
|
+
}
|
|
11890
|
+
return days;
|
|
11891
|
+
}
|
|
11892
|
+
}
|
|
11893
|
+
},
|
|
11894
|
+
isExported: true,
|
|
11895
|
+
};
|
|
11896
|
+
// -----------------------------------------------------------------------------
|
|
11786
11897
|
// DATEVALUE
|
|
11787
11898
|
// -----------------------------------------------------------------------------
|
|
11788
11899
|
const DATEVALUE = {
|
|
@@ -12461,6 +12572,7 @@ const YEAR_END = {
|
|
|
12461
12572
|
var date = /*#__PURE__*/Object.freeze({
|
|
12462
12573
|
__proto__: null,
|
|
12463
12574
|
DATE: DATE,
|
|
12575
|
+
DATEDIF: DATEDIF,
|
|
12464
12576
|
DATEVALUE: DATEVALUE,
|
|
12465
12577
|
DAY: DAY,
|
|
12466
12578
|
DAYS: DAYS,
|
|
@@ -14944,12 +15056,54 @@ var logical = /*#__PURE__*/Object.freeze({
|
|
|
14944
15056
|
const DEFAULT_IS_SORTED = true;
|
|
14945
15057
|
const DEFAULT_MATCH_MODE = 0;
|
|
14946
15058
|
const DEFAULT_SEARCH_MODE = 1;
|
|
15059
|
+
const DEFAULT_ABSOLUTE_RELATIVE_MODE = 1;
|
|
14947
15060
|
function assertAvailable(variable, searchKey) {
|
|
14948
15061
|
if (variable === undefined) {
|
|
14949
15062
|
throw new NotAvailableError(_lt("Did not find value '%s' in [[FUNCTION_NAME]] evaluation.", toString(searchKey)));
|
|
14950
15063
|
}
|
|
14951
15064
|
}
|
|
14952
15065
|
// -----------------------------------------------------------------------------
|
|
15066
|
+
// ADDRESS
|
|
15067
|
+
// -----------------------------------------------------------------------------
|
|
15068
|
+
const ADDRESS = {
|
|
15069
|
+
description: _lt("Returns a cell reference as a string. "),
|
|
15070
|
+
args: [
|
|
15071
|
+
arg("row (number)", _lt("The row number of the cell reference. ")),
|
|
15072
|
+
arg("column (number)", _lt("The column number (not name) of the cell reference. A is column number 1. ")),
|
|
15073
|
+
arg(`absolute_relative_mode (number, default=${DEFAULT_ABSOLUTE_RELATIVE_MODE})`, _lt("An indicator of whether the reference is row/column absolute. 1 is row and column absolute (e.g. $A$1), 2 is row absolute and column relative (e.g. A$1), 3 is row relative and column absolute (e.g. $A1), and 4 is row and column relative (e.g. A1).")),
|
|
15074
|
+
arg("use_a1_notation (boolean, default=TRUE)", _lt("A boolean indicating whether to use A1 style notation (TRUE) or R1C1 style notation (FALSE).")),
|
|
15075
|
+
arg("sheet (string, optional)", _lt("A string indicating the name of the sheet into which the address points.")),
|
|
15076
|
+
],
|
|
15077
|
+
returns: ["STRING"],
|
|
15078
|
+
compute: function (row, column, absoluteRelativeMode = DEFAULT_ABSOLUTE_RELATIVE_MODE, useA1Notation = true, sheet) {
|
|
15079
|
+
const rowNumber = strictToInteger(row);
|
|
15080
|
+
const colNumber = strictToInteger(column);
|
|
15081
|
+
assertNumberGreaterThanOrEqualToOne(rowNumber);
|
|
15082
|
+
assertNumberGreaterThanOrEqualToOne(colNumber);
|
|
15083
|
+
const _absoluteRelativeMode = strictToInteger(absoluteRelativeMode);
|
|
15084
|
+
assert(() => [1, 2, 3, 4].includes(_absoluteRelativeMode), expectNumberRangeError(1, 4, _absoluteRelativeMode));
|
|
15085
|
+
const _useA1Notation = toBoolean(useA1Notation);
|
|
15086
|
+
let cellReference;
|
|
15087
|
+
if (_useA1Notation) {
|
|
15088
|
+
const rangePart = {
|
|
15089
|
+
rowFixed: [1, 2].includes(_absoluteRelativeMode) ? true : false,
|
|
15090
|
+
colFixed: [1, 3].includes(_absoluteRelativeMode) ? true : false,
|
|
15091
|
+
};
|
|
15092
|
+
cellReference = toXC(colNumber - 1, rowNumber - 1, rangePart);
|
|
15093
|
+
}
|
|
15094
|
+
else {
|
|
15095
|
+
const rowPart = [1, 2].includes(_absoluteRelativeMode) ? `R${rowNumber}` : `R[${rowNumber}]`;
|
|
15096
|
+
const colPart = [1, 3].includes(_absoluteRelativeMode) ? `C${colNumber}` : `C[${colNumber}]`;
|
|
15097
|
+
cellReference = rowPart + colPart;
|
|
15098
|
+
}
|
|
15099
|
+
if (sheet !== undefined) {
|
|
15100
|
+
return `${getComposerSheetName(toString(sheet))}!${cellReference}`;
|
|
15101
|
+
}
|
|
15102
|
+
return cellReference;
|
|
15103
|
+
},
|
|
15104
|
+
isExported: true,
|
|
15105
|
+
};
|
|
15106
|
+
// -----------------------------------------------------------------------------
|
|
14953
15107
|
// COLUMN
|
|
14954
15108
|
// -----------------------------------------------------------------------------
|
|
14955
15109
|
const COLUMN = {
|
|
@@ -15198,6 +15352,7 @@ const XLOOKUP = {
|
|
|
15198
15352
|
|
|
15199
15353
|
var lookup = /*#__PURE__*/Object.freeze({
|
|
15200
15354
|
__proto__: null,
|
|
15355
|
+
ADDRESS: ADDRESS,
|
|
15201
15356
|
COLUMN: COLUMN,
|
|
15202
15357
|
COLUMNS: COLUMNS,
|
|
15203
15358
|
HLOOKUP: HLOOKUP,
|
|
@@ -19553,6 +19708,13 @@ css /* scss */ `
|
|
|
19553
19708
|
pointer-events: none;
|
|
19554
19709
|
}
|
|
19555
19710
|
}
|
|
19711
|
+
|
|
19712
|
+
.o-topbar-composer .o-composer:empty:not(:focus)::before {
|
|
19713
|
+
/* svg free of use from https://uxwing.com/formula-fx-icon/ */
|
|
19714
|
+
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'%3E%3Cpath 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='%23BDBDBD' /%3E%3C/svg%3E");
|
|
19715
|
+
position: relative;
|
|
19716
|
+
top: 20%;
|
|
19717
|
+
}
|
|
19556
19718
|
`;
|
|
19557
19719
|
class Composer extends owl.Component {
|
|
19558
19720
|
constructor() {
|
|
@@ -20203,20 +20365,10 @@ const CSS$1 = css /* scss */ `
|
|
|
20203
20365
|
justify-content: center;
|
|
20204
20366
|
width: ${FILTER_ICON_EDGE_LENGTH}px;
|
|
20205
20367
|
height: ${FILTER_ICON_EDGE_LENGTH}px;
|
|
20206
|
-
|
|
20207
|
-
svg {
|
|
20208
|
-
path {
|
|
20209
|
-
fill: ${FILTERS_COLOR};
|
|
20210
|
-
}
|
|
20211
|
-
}
|
|
20212
20368
|
}
|
|
20213
20369
|
.o-filter-icon:hover {
|
|
20214
20370
|
background: ${FILTERS_COLOR};
|
|
20215
|
-
|
|
20216
|
-
path {
|
|
20217
|
-
fill: white;
|
|
20218
|
-
}
|
|
20219
|
-
}
|
|
20371
|
+
color: #fff;
|
|
20220
20372
|
}
|
|
20221
20373
|
`;
|
|
20222
20374
|
class FilterIcon extends owl.Component {
|
|
@@ -39425,7 +39577,6 @@ function interactiveRenameSheet(env, sheetId, name, errorCallback) {
|
|
|
39425
39577
|
|
|
39426
39578
|
css /* scss */ `
|
|
39427
39579
|
.o-sheet {
|
|
39428
|
-
color: #666;
|
|
39429
39580
|
padding: 0 15px;
|
|
39430
39581
|
padding-right: 10px;
|
|
39431
39582
|
height: ${BOTTOMBAR_HEIGHT}px;
|
|
@@ -39813,6 +39964,7 @@ class DOMDndHelper {
|
|
|
39813
39964
|
const MENU_MAX_HEIGHT = 250;
|
|
39814
39965
|
css /* scss */ `
|
|
39815
39966
|
.o-spreadsheet-bottom-bar {
|
|
39967
|
+
color: ${TEXT_HEADER_COLOR};
|
|
39816
39968
|
background-color: ${BACKGROUND_GRAY_COLOR};
|
|
39817
39969
|
padding-left: ${HEADER_WIDTH}px;
|
|
39818
39970
|
font-size: 15px;
|
|
@@ -40476,6 +40628,7 @@ TopBarComposer.props = {
|
|
|
40476
40628
|
css /* scss */ `
|
|
40477
40629
|
.o-font-size-editor {
|
|
40478
40630
|
input.o-font-size {
|
|
40631
|
+
outline-color: ${SELECTION_BORDER_COLOR};
|
|
40479
40632
|
height: 20px;
|
|
40480
40633
|
width: 23px;
|
|
40481
40634
|
}
|
|
@@ -40588,52 +40741,53 @@ const FORMATS = [
|
|
|
40588
40741
|
const CUSTOM_FORMATS = [
|
|
40589
40742
|
{ name: "custom_currency", text: NumberFormatTerms.CustomCurrency, sidePanel: "CustomCurrency" },
|
|
40590
40743
|
];
|
|
40591
|
-
const
|
|
40592
|
-
|
|
40593
|
-
const
|
|
40594
|
-
const
|
|
40595
|
-
const
|
|
40744
|
+
const ICONS_COLOR = "#4A4F59";
|
|
40745
|
+
// If we ever change these colors, make sure the filter tool stays green to match the icon in the grid
|
|
40746
|
+
const ACTIVE_BG_COLOR = BACKGROUND_HEADER_FILTER_COLOR;
|
|
40747
|
+
const ACTIVE_FONT_COLOR = FILTERS_COLOR;
|
|
40748
|
+
const HOVERED_BG_COLOR = BG_HOVER_COLOR;
|
|
40749
|
+
const HOVERED_FONT_COLOR = "#000";
|
|
40596
40750
|
// -----------------------------------------------------------------------------
|
|
40597
40751
|
// TopBar
|
|
40598
40752
|
// -----------------------------------------------------------------------------
|
|
40599
40753
|
css /* scss */ `
|
|
40600
40754
|
.o-spreadsheet-topbar {
|
|
40601
|
-
background-color: white;
|
|
40602
40755
|
line-height: 1.2;
|
|
40603
|
-
display: flex;
|
|
40604
|
-
flex-direction: column;
|
|
40605
40756
|
font-size: 13px;
|
|
40606
|
-
line-height: 1.2;
|
|
40607
|
-
user-select: none;
|
|
40608
40757
|
font-weight: 500;
|
|
40609
|
-
|
|
40758
|
+
|
|
40759
|
+
.o-topbar-hoverable {
|
|
40760
|
+
cursor: pointer;
|
|
40761
|
+
.o-icon {
|
|
40762
|
+
color: ${ICONS_COLOR};
|
|
40763
|
+
}
|
|
40764
|
+
&:not(.o-disabled):not(.active):hover {
|
|
40765
|
+
background-color: ${HOVERED_BG_COLOR};
|
|
40766
|
+
color: ${HOVERED_FONT_COLOR};
|
|
40767
|
+
.o-icon {
|
|
40768
|
+
color: ${HOVERED_FONT_COLOR};
|
|
40769
|
+
}
|
|
40770
|
+
}
|
|
40771
|
+
&.active {
|
|
40772
|
+
background-color: ${ACTIVE_BG_COLOR};
|
|
40773
|
+
color: ${ACTIVE_FONT_COLOR};
|
|
40774
|
+
.o-icon {
|
|
40775
|
+
color: ${ACTIVE_FONT_COLOR};
|
|
40776
|
+
}
|
|
40777
|
+
}
|
|
40778
|
+
}
|
|
40610
40779
|
|
|
40611
40780
|
.o-topbar-top {
|
|
40612
40781
|
border-bottom: 1px solid ${SEPARATOR_COLOR};
|
|
40613
|
-
display: flex;
|
|
40614
40782
|
padding: 2px 10px;
|
|
40615
|
-
justify-content: space-between;
|
|
40616
40783
|
|
|
40617
40784
|
/* Menus */
|
|
40618
40785
|
.o-topbar-topleft {
|
|
40619
|
-
display: flex;
|
|
40620
40786
|
.o-topbar-menu {
|
|
40621
40787
|
padding: 4px 6px;
|
|
40622
40788
|
margin: 0 2px;
|
|
40623
|
-
cursor: pointer;
|
|
40624
|
-
}
|
|
40625
|
-
|
|
40626
|
-
.o-topbar-menu:hover,
|
|
40627
|
-
.o-topbar-menu-active {
|
|
40628
|
-
background-color: #f1f3f4;
|
|
40629
|
-
border-radius: 2px;
|
|
40630
40789
|
}
|
|
40631
40790
|
}
|
|
40632
|
-
|
|
40633
|
-
.o-topbar-topright {
|
|
40634
|
-
display: flex;
|
|
40635
|
-
justify-content: flex-end;
|
|
40636
|
-
}
|
|
40637
40791
|
}
|
|
40638
40792
|
|
|
40639
40793
|
.o-topbar-composer {
|
|
@@ -40642,13 +40796,9 @@ css /* scss */ `
|
|
|
40642
40796
|
|
|
40643
40797
|
/* Toolbar */
|
|
40644
40798
|
.o-topbar-toolbar {
|
|
40645
|
-
flex-shrink: 0;
|
|
40646
|
-
display: flex;
|
|
40647
40799
|
height: ${TOPBAR_TOOLBAR_HEIGHT}px;
|
|
40648
40800
|
|
|
40649
40801
|
.o-readonly-toolbar {
|
|
40650
|
-
display: flex;
|
|
40651
|
-
align-items: center;
|
|
40652
40802
|
background-color: ${BACKGROUND_HEADER_COLOR};
|
|
40653
40803
|
padding-left: 18px;
|
|
40654
40804
|
padding-right: 18px;
|
|
@@ -40656,11 +40806,6 @@ css /* scss */ `
|
|
|
40656
40806
|
|
|
40657
40807
|
/* Toolbar */
|
|
40658
40808
|
.o-toolbar-tools {
|
|
40659
|
-
display: flex;
|
|
40660
|
-
flex-shrink: 0;
|
|
40661
|
-
margin-left: 16px;
|
|
40662
|
-
cursor: default;
|
|
40663
|
-
|
|
40664
40809
|
.o-tool {
|
|
40665
40810
|
display: flex;
|
|
40666
40811
|
justify-content: center;
|
|
@@ -40668,40 +40813,13 @@ css /* scss */ `
|
|
|
40668
40813
|
margin: 2px;
|
|
40669
40814
|
padding: 0px 3px;
|
|
40670
40815
|
border-radius: 2px;
|
|
40671
|
-
cursor: pointer;
|
|
40672
40816
|
min-width: 20px;
|
|
40673
|
-
svg path,
|
|
40674
|
-
polygon,
|
|
40675
|
-
rect {
|
|
40676
|
-
fill: ${FONT_COLOR};
|
|
40677
|
-
}
|
|
40678
|
-
}
|
|
40679
|
-
|
|
40680
|
-
.o-tool-outlined {
|
|
40681
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
40682
40817
|
}
|
|
40683
40818
|
|
|
40684
40819
|
.o-filter-tool {
|
|
40685
40820
|
margin-right: 8px;
|
|
40686
40821
|
}
|
|
40687
40822
|
|
|
40688
|
-
.o-tool.active {
|
|
40689
|
-
background-color: ${ACTIVE_BG_COLOR};
|
|
40690
|
-
svg path,
|
|
40691
|
-
polygon,
|
|
40692
|
-
rect {
|
|
40693
|
-
fill: ${ACTIVE_FG_COLOR};
|
|
40694
|
-
}
|
|
40695
|
-
}
|
|
40696
|
-
.o-tool:not(.o-disabled):hover {
|
|
40697
|
-
background-color: ${HOVERED_BG_COLOR};
|
|
40698
|
-
svg path,
|
|
40699
|
-
polygon,
|
|
40700
|
-
rect {
|
|
40701
|
-
fill: ${HOVERED_FG_COLOR};
|
|
40702
|
-
}
|
|
40703
|
-
}
|
|
40704
|
-
|
|
40705
40823
|
.o-border-dropdown {
|
|
40706
40824
|
padding: 4px;
|
|
40707
40825
|
}
|
|
@@ -40727,10 +40845,6 @@ css /* scss */ `
|
|
|
40727
40845
|
height: 30px;
|
|
40728
40846
|
}
|
|
40729
40847
|
|
|
40730
|
-
.o-text-icon {
|
|
40731
|
-
line-height: 30px;
|
|
40732
|
-
}
|
|
40733
|
-
|
|
40734
40848
|
.o-text-options > div {
|
|
40735
40849
|
line-height: 26px;
|
|
40736
40850
|
padding: 3px 12px;
|
|
@@ -40749,14 +40863,6 @@ css /* scss */ `
|
|
|
40749
40863
|
box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
|
|
40750
40864
|
background-color: white;
|
|
40751
40865
|
|
|
40752
|
-
.o-dropdown-item {
|
|
40753
|
-
cursor: pointer;
|
|
40754
|
-
}
|
|
40755
|
-
|
|
40756
|
-
.o-dropdown-item:hover {
|
|
40757
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
40758
|
-
}
|
|
40759
|
-
|
|
40760
40866
|
.o-dropdown-line {
|
|
40761
40867
|
display: flex;
|
|
40762
40868
|
margin: 1px;
|
|
@@ -40765,11 +40871,6 @@ css /* scss */ `
|
|
|
40765
40871
|
padding: 4px;
|
|
40766
40872
|
width: 18px;
|
|
40767
40873
|
height: 18px;
|
|
40768
|
-
cursor: pointer;
|
|
40769
|
-
|
|
40770
|
-
&:hover {
|
|
40771
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
40772
|
-
}
|
|
40773
40874
|
}
|
|
40774
40875
|
}
|
|
40775
40876
|
|
|
@@ -40781,7 +40882,7 @@ css /* scss */ `
|
|
|
40781
40882
|
padding: 0 20px;
|
|
40782
40883
|
white-space: nowrap;
|
|
40783
40884
|
|
|
40784
|
-
&.active:before {
|
|
40885
|
+
&.o-dropdown-active:before {
|
|
40785
40886
|
content: "✓";
|
|
40786
40887
|
font-weight: bold;
|
|
40787
40888
|
position: absolute;
|
|
@@ -44977,6 +45078,6 @@ exports.setTranslationMethod = setTranslationMethod;
|
|
|
44977
45078
|
exports.tokenize = tokenize;
|
|
44978
45079
|
|
|
44979
45080
|
|
|
44980
|
-
__info__.version = '16.
|
|
44981
|
-
__info__.date = '2023-03-
|
|
44982
|
-
__info__.hash = '
|
|
45081
|
+
__info__.version = '16.3.0-alpha.1';
|
|
45082
|
+
__info__.date = '2023-03-16T12:12:26.034Z';
|
|
45083
|
+
__info__.hash = 'f41d64a';
|