@odoo/o-spreadsheet 16.0.12 → 16.0.13
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 +39 -24
- package/dist/o-spreadsheet.d.ts +3 -1
- package/dist/o-spreadsheet.esm.js +39 -24
- package/dist/o-spreadsheet.iife.js +39 -24
- package/dist/o-spreadsheet.iife.min.js +229 -228
- package/package.json +1 -1
|
@@ -1617,27 +1617,36 @@ function removeTrailingZeroes(numberString) {
|
|
|
1617
1617
|
}
|
|
1618
1618
|
return numberString.slice(0, i + 1) || undefined;
|
|
1619
1619
|
}
|
|
1620
|
+
const leadingZeroesRegexp = /^0+/;
|
|
1620
1621
|
/**
|
|
1621
1622
|
* Limit the size of the decimal part of a number to the given number of digits.
|
|
1622
1623
|
*/
|
|
1623
1624
|
function limitDecimalDigits(decimalDigits, maxDecimals) {
|
|
1625
|
+
var _a;
|
|
1624
1626
|
let integerDigits = "0";
|
|
1625
1627
|
let resultDecimalDigits = decimalDigits;
|
|
1626
1628
|
// Note : we'd want to simply use number.toFixed() to handle the max digits & rounding,
|
|
1627
1629
|
// but it has very strange behaviour. Ex: 12.345.toFixed(2) => "12.35", but 1.345.toFixed(2) => "1.34"
|
|
1628
1630
|
let slicedDecimalDigits = decimalDigits.slice(0, maxDecimals);
|
|
1629
1631
|
const i = maxDecimals;
|
|
1630
|
-
if (Number(
|
|
1632
|
+
if (Number(decimalDigits[i]) < 5) {
|
|
1631
1633
|
return { integerDigits, decimalDigits: slicedDecimalDigits };
|
|
1632
1634
|
}
|
|
1633
1635
|
// round up
|
|
1636
|
+
const leadingZeroes = ((_a = slicedDecimalDigits.match(leadingZeroesRegexp)) === null || _a === void 0 ? void 0 : _a[0]) || "";
|
|
1634
1637
|
const slicedRoundedUp = (Number(slicedDecimalDigits) + 1).toString();
|
|
1635
|
-
|
|
1636
|
-
|
|
1638
|
+
const withoutLeadingZeroes = slicedDecimalDigits.slice(leadingZeroes.length);
|
|
1639
|
+
// e.g. carry over from 99 to 100
|
|
1640
|
+
const carryOver = slicedRoundedUp.length > withoutLeadingZeroes.length;
|
|
1641
|
+
if (carryOver && !leadingZeroes) {
|
|
1642
|
+
integerDigits = "1";
|
|
1637
1643
|
resultDecimalDigits = undefined;
|
|
1638
1644
|
}
|
|
1645
|
+
else if (carryOver) {
|
|
1646
|
+
resultDecimalDigits = leadingZeroes.slice(0, -1) + slicedRoundedUp;
|
|
1647
|
+
}
|
|
1639
1648
|
else {
|
|
1640
|
-
resultDecimalDigits = slicedRoundedUp;
|
|
1649
|
+
resultDecimalDigits = leadingZeroes + slicedRoundedUp;
|
|
1641
1650
|
}
|
|
1642
1651
|
return { integerDigits, decimalDigits: resultDecimalDigits };
|
|
1643
1652
|
}
|
|
@@ -8363,6 +8372,7 @@ css /* scss */ `
|
|
|
8363
8372
|
.o-color-picker-toggler {
|
|
8364
8373
|
display: flex;
|
|
8365
8374
|
.o-color-picker-toggler-sign {
|
|
8375
|
+
display: flex;
|
|
8366
8376
|
margin: auto auto;
|
|
8367
8377
|
width: 55%;
|
|
8368
8378
|
height: 55%;
|
|
@@ -20235,6 +20245,7 @@ class Composer extends owl.Component {
|
|
|
20235
20245
|
this.autocompleteAPI.moveDown();
|
|
20236
20246
|
}
|
|
20237
20247
|
}
|
|
20248
|
+
this.updateCursorIfNeeded();
|
|
20238
20249
|
}
|
|
20239
20250
|
processTabKey(ev) {
|
|
20240
20251
|
ev.preventDefault();
|
|
@@ -20291,9 +20302,12 @@ class Composer extends owl.Component {
|
|
|
20291
20302
|
}
|
|
20292
20303
|
else {
|
|
20293
20304
|
ev.stopPropagation();
|
|
20305
|
+
this.updateCursorIfNeeded();
|
|
20294
20306
|
}
|
|
20295
|
-
|
|
20307
|
+
}
|
|
20308
|
+
updateCursorIfNeeded() {
|
|
20296
20309
|
if (!this.env.model.getters.isSelectingForComposer()) {
|
|
20310
|
+
const { start, end } = this.contentHelper.getCurrentSelection();
|
|
20297
20311
|
this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION", { start, end });
|
|
20298
20312
|
this.isKeyStillDown = true;
|
|
20299
20313
|
}
|
|
@@ -33182,14 +33196,19 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
33182
33196
|
if (!filter)
|
|
33183
33197
|
continue;
|
|
33184
33198
|
const valuesInFilterZone = filter.filteredZone
|
|
33185
|
-
? positions(filter.filteredZone)
|
|
33186
|
-
.map((pos) => { var _a; return (_a = this.getters.getCell(sheetData.id, pos.col, pos.row)) === null || _a === void 0 ? void 0 : _a.formattedValue; })
|
|
33187
|
-
.filter(isNonEmptyString)
|
|
33199
|
+
? positions(filter.filteredZone).map((pos) => { var _a; return (_a = this.getters.getCell(sheetData.id, pos.col, pos.row)) === null || _a === void 0 ? void 0 : _a.formattedValue; })
|
|
33188
33200
|
: [];
|
|
33189
|
-
|
|
33190
|
-
|
|
33191
|
-
|
|
33192
|
-
|
|
33201
|
+
if (filteredValues.length) {
|
|
33202
|
+
const xlsxDisplayedValues = valuesInFilterZone
|
|
33203
|
+
.filter(isNonEmptyString)
|
|
33204
|
+
.filter((val) => !filteredValues.includes(val));
|
|
33205
|
+
filters.push({
|
|
33206
|
+
colId: i,
|
|
33207
|
+
displayedValues: [...new Set(xlsxDisplayedValues)],
|
|
33208
|
+
displayBlanks: !filteredValues.includes("") && valuesInFilterZone.some((val) => !val),
|
|
33209
|
+
});
|
|
33210
|
+
}
|
|
33211
|
+
// In xlsx, filter header should ALWAYS be a string and should be unique in the table
|
|
33193
33212
|
const headerPosition = { col: filter.col, row: filter.zoneWithHeaders.top };
|
|
33194
33213
|
const headerString = (_a = this.getters.getCell(sheetData.id, headerPosition.col, headerPosition.row)) === null || _a === void 0 ? void 0 : _a.formattedValue;
|
|
33195
33214
|
const headerName = this.getUniqueColNameForExcel(i, headerString, headerNames);
|
|
@@ -41880,15 +41899,10 @@ function addAutoFilter(table) {
|
|
|
41880
41899
|
`;
|
|
41881
41900
|
}
|
|
41882
41901
|
function addFilterColumns(table) {
|
|
41883
|
-
const tableZone = toZone(table.range);
|
|
41884
41902
|
const columns = [];
|
|
41885
|
-
for (const
|
|
41886
|
-
const filter = table.filters[i];
|
|
41887
|
-
if (!filter || !filter.filteredValues.length) {
|
|
41888
|
-
continue;
|
|
41889
|
-
}
|
|
41903
|
+
for (const filter of table.filters) {
|
|
41890
41904
|
const colXml = escapeXml /*xml*/ `
|
|
41891
|
-
<filterColumn ${formatAttributes([["colId",
|
|
41905
|
+
<filterColumn ${formatAttributes([["colId", filter.colId]])}>
|
|
41892
41906
|
${addFilter(filter)}
|
|
41893
41907
|
</filterColumn>
|
|
41894
41908
|
`;
|
|
@@ -41897,9 +41911,10 @@ function addFilterColumns(table) {
|
|
|
41897
41911
|
return columns;
|
|
41898
41912
|
}
|
|
41899
41913
|
function addFilter(filter) {
|
|
41900
|
-
const filterValues = filter.
|
|
41914
|
+
const filterValues = filter.displayedValues.map((val) => escapeXml /*xml*/ `<filter ${formatAttributes([["val", val]])}/>`);
|
|
41915
|
+
const filterAttributes = filter.displayBlanks ? [["blank", 1]] : [];
|
|
41901
41916
|
return escapeXml /*xml*/ `
|
|
41902
|
-
<filters>
|
|
41917
|
+
<filters ${formatAttributes(filterAttributes)}>
|
|
41903
41918
|
${joinXmlNodes(filterValues)}
|
|
41904
41919
|
</filters>
|
|
41905
41920
|
`;
|
|
@@ -42802,6 +42817,6 @@ exports.setTranslationMethod = setTranslationMethod;
|
|
|
42802
42817
|
exports.tokenize = tokenize;
|
|
42803
42818
|
|
|
42804
42819
|
|
|
42805
|
-
__info__.version = '16.0.
|
|
42806
|
-
__info__.date = '2023-06-
|
|
42807
|
-
__info__.hash = '
|
|
42820
|
+
__info__.version = '16.0.13';
|
|
42821
|
+
__info__.date = '2023-06-12T13:44:11.940Z';
|
|
42822
|
+
__info__.hash = '3c9ec1e';
|
package/dist/o-spreadsheet.d.ts
CHANGED
|
@@ -836,7 +836,8 @@ interface ExcelFilterTableData {
|
|
|
836
836
|
}
|
|
837
837
|
interface ExcelFilterData {
|
|
838
838
|
colId: number;
|
|
839
|
-
|
|
839
|
+
displayedValues: string[];
|
|
840
|
+
displayBlanks?: boolean;
|
|
840
841
|
}
|
|
841
842
|
|
|
842
843
|
declare type ClientId = string;
|
|
@@ -5544,6 +5545,7 @@ declare class Composer extends Component<Props$j, SpreadsheetChildEnv> {
|
|
|
5544
5545
|
onCompositionStart(): void;
|
|
5545
5546
|
onCompositionEnd(): void;
|
|
5546
5547
|
onKeydown(ev: KeyboardEvent): void;
|
|
5548
|
+
private updateCursorIfNeeded;
|
|
5547
5549
|
onInput(): void;
|
|
5548
5550
|
onKeyup(ev: KeyboardEvent): void;
|
|
5549
5551
|
onMousedown(ev: MouseEvent): void;
|
|
@@ -1613,27 +1613,36 @@ function removeTrailingZeroes(numberString) {
|
|
|
1613
1613
|
}
|
|
1614
1614
|
return numberString.slice(0, i + 1) || undefined;
|
|
1615
1615
|
}
|
|
1616
|
+
const leadingZeroesRegexp = /^0+/;
|
|
1616
1617
|
/**
|
|
1617
1618
|
* Limit the size of the decimal part of a number to the given number of digits.
|
|
1618
1619
|
*/
|
|
1619
1620
|
function limitDecimalDigits(decimalDigits, maxDecimals) {
|
|
1621
|
+
var _a;
|
|
1620
1622
|
let integerDigits = "0";
|
|
1621
1623
|
let resultDecimalDigits = decimalDigits;
|
|
1622
1624
|
// Note : we'd want to simply use number.toFixed() to handle the max digits & rounding,
|
|
1623
1625
|
// but it has very strange behaviour. Ex: 12.345.toFixed(2) => "12.35", but 1.345.toFixed(2) => "1.34"
|
|
1624
1626
|
let slicedDecimalDigits = decimalDigits.slice(0, maxDecimals);
|
|
1625
1627
|
const i = maxDecimals;
|
|
1626
|
-
if (Number(
|
|
1628
|
+
if (Number(decimalDigits[i]) < 5) {
|
|
1627
1629
|
return { integerDigits, decimalDigits: slicedDecimalDigits };
|
|
1628
1630
|
}
|
|
1629
1631
|
// round up
|
|
1632
|
+
const leadingZeroes = ((_a = slicedDecimalDigits.match(leadingZeroesRegexp)) === null || _a === void 0 ? void 0 : _a[0]) || "";
|
|
1630
1633
|
const slicedRoundedUp = (Number(slicedDecimalDigits) + 1).toString();
|
|
1631
|
-
|
|
1632
|
-
|
|
1634
|
+
const withoutLeadingZeroes = slicedDecimalDigits.slice(leadingZeroes.length);
|
|
1635
|
+
// e.g. carry over from 99 to 100
|
|
1636
|
+
const carryOver = slicedRoundedUp.length > withoutLeadingZeroes.length;
|
|
1637
|
+
if (carryOver && !leadingZeroes) {
|
|
1638
|
+
integerDigits = "1";
|
|
1633
1639
|
resultDecimalDigits = undefined;
|
|
1634
1640
|
}
|
|
1641
|
+
else if (carryOver) {
|
|
1642
|
+
resultDecimalDigits = leadingZeroes.slice(0, -1) + slicedRoundedUp;
|
|
1643
|
+
}
|
|
1635
1644
|
else {
|
|
1636
|
-
resultDecimalDigits = slicedRoundedUp;
|
|
1645
|
+
resultDecimalDigits = leadingZeroes + slicedRoundedUp;
|
|
1637
1646
|
}
|
|
1638
1647
|
return { integerDigits, decimalDigits: resultDecimalDigits };
|
|
1639
1648
|
}
|
|
@@ -8359,6 +8368,7 @@ css /* scss */ `
|
|
|
8359
8368
|
.o-color-picker-toggler {
|
|
8360
8369
|
display: flex;
|
|
8361
8370
|
.o-color-picker-toggler-sign {
|
|
8371
|
+
display: flex;
|
|
8362
8372
|
margin: auto auto;
|
|
8363
8373
|
width: 55%;
|
|
8364
8374
|
height: 55%;
|
|
@@ -20231,6 +20241,7 @@ class Composer extends Component {
|
|
|
20231
20241
|
this.autocompleteAPI.moveDown();
|
|
20232
20242
|
}
|
|
20233
20243
|
}
|
|
20244
|
+
this.updateCursorIfNeeded();
|
|
20234
20245
|
}
|
|
20235
20246
|
processTabKey(ev) {
|
|
20236
20247
|
ev.preventDefault();
|
|
@@ -20287,9 +20298,12 @@ class Composer extends Component {
|
|
|
20287
20298
|
}
|
|
20288
20299
|
else {
|
|
20289
20300
|
ev.stopPropagation();
|
|
20301
|
+
this.updateCursorIfNeeded();
|
|
20290
20302
|
}
|
|
20291
|
-
|
|
20303
|
+
}
|
|
20304
|
+
updateCursorIfNeeded() {
|
|
20292
20305
|
if (!this.env.model.getters.isSelectingForComposer()) {
|
|
20306
|
+
const { start, end } = this.contentHelper.getCurrentSelection();
|
|
20293
20307
|
this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION", { start, end });
|
|
20294
20308
|
this.isKeyStillDown = true;
|
|
20295
20309
|
}
|
|
@@ -33178,14 +33192,19 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
33178
33192
|
if (!filter)
|
|
33179
33193
|
continue;
|
|
33180
33194
|
const valuesInFilterZone = filter.filteredZone
|
|
33181
|
-
? positions(filter.filteredZone)
|
|
33182
|
-
.map((pos) => { var _a; return (_a = this.getters.getCell(sheetData.id, pos.col, pos.row)) === null || _a === void 0 ? void 0 : _a.formattedValue; })
|
|
33183
|
-
.filter(isNonEmptyString)
|
|
33195
|
+
? positions(filter.filteredZone).map((pos) => { var _a; return (_a = this.getters.getCell(sheetData.id, pos.col, pos.row)) === null || _a === void 0 ? void 0 : _a.formattedValue; })
|
|
33184
33196
|
: [];
|
|
33185
|
-
|
|
33186
|
-
|
|
33187
|
-
|
|
33188
|
-
|
|
33197
|
+
if (filteredValues.length) {
|
|
33198
|
+
const xlsxDisplayedValues = valuesInFilterZone
|
|
33199
|
+
.filter(isNonEmptyString)
|
|
33200
|
+
.filter((val) => !filteredValues.includes(val));
|
|
33201
|
+
filters.push({
|
|
33202
|
+
colId: i,
|
|
33203
|
+
displayedValues: [...new Set(xlsxDisplayedValues)],
|
|
33204
|
+
displayBlanks: !filteredValues.includes("") && valuesInFilterZone.some((val) => !val),
|
|
33205
|
+
});
|
|
33206
|
+
}
|
|
33207
|
+
// In xlsx, filter header should ALWAYS be a string and should be unique in the table
|
|
33189
33208
|
const headerPosition = { col: filter.col, row: filter.zoneWithHeaders.top };
|
|
33190
33209
|
const headerString = (_a = this.getters.getCell(sheetData.id, headerPosition.col, headerPosition.row)) === null || _a === void 0 ? void 0 : _a.formattedValue;
|
|
33191
33210
|
const headerName = this.getUniqueColNameForExcel(i, headerString, headerNames);
|
|
@@ -41876,15 +41895,10 @@ function addAutoFilter(table) {
|
|
|
41876
41895
|
`;
|
|
41877
41896
|
}
|
|
41878
41897
|
function addFilterColumns(table) {
|
|
41879
|
-
const tableZone = toZone(table.range);
|
|
41880
41898
|
const columns = [];
|
|
41881
|
-
for (const
|
|
41882
|
-
const filter = table.filters[i];
|
|
41883
|
-
if (!filter || !filter.filteredValues.length) {
|
|
41884
|
-
continue;
|
|
41885
|
-
}
|
|
41899
|
+
for (const filter of table.filters) {
|
|
41886
41900
|
const colXml = escapeXml /*xml*/ `
|
|
41887
|
-
<filterColumn ${formatAttributes([["colId",
|
|
41901
|
+
<filterColumn ${formatAttributes([["colId", filter.colId]])}>
|
|
41888
41902
|
${addFilter(filter)}
|
|
41889
41903
|
</filterColumn>
|
|
41890
41904
|
`;
|
|
@@ -41893,9 +41907,10 @@ function addFilterColumns(table) {
|
|
|
41893
41907
|
return columns;
|
|
41894
41908
|
}
|
|
41895
41909
|
function addFilter(filter) {
|
|
41896
|
-
const filterValues = filter.
|
|
41910
|
+
const filterValues = filter.displayedValues.map((val) => escapeXml /*xml*/ `<filter ${formatAttributes([["val", val]])}/>`);
|
|
41911
|
+
const filterAttributes = filter.displayBlanks ? [["blank", 1]] : [];
|
|
41897
41912
|
return escapeXml /*xml*/ `
|
|
41898
|
-
<filters>
|
|
41913
|
+
<filters ${formatAttributes(filterAttributes)}>
|
|
41899
41914
|
${joinXmlNodes(filterValues)}
|
|
41900
41915
|
</filters>
|
|
41901
41916
|
`;
|
|
@@ -42770,6 +42785,6 @@ function addFunction(functionName, functionDescription) {
|
|
|
42770
42785
|
export { AbstractChart, CommandResult, CorePlugin, DATETIME_FORMAT, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, cellTypes, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, load, parse, readonlyAllowedCommands, registries, setTranslationMethod, tokenize };
|
|
42771
42786
|
|
|
42772
42787
|
|
|
42773
|
-
__info__.version = '16.0.
|
|
42774
|
-
__info__.date = '2023-06-
|
|
42775
|
-
__info__.hash = '
|
|
42788
|
+
__info__.version = '16.0.13';
|
|
42789
|
+
__info__.date = '2023-06-12T13:44:11.940Z';
|
|
42790
|
+
__info__.hash = '3c9ec1e';
|
|
@@ -1614,27 +1614,36 @@
|
|
|
1614
1614
|
}
|
|
1615
1615
|
return numberString.slice(0, i + 1) || undefined;
|
|
1616
1616
|
}
|
|
1617
|
+
const leadingZeroesRegexp = /^0+/;
|
|
1617
1618
|
/**
|
|
1618
1619
|
* Limit the size of the decimal part of a number to the given number of digits.
|
|
1619
1620
|
*/
|
|
1620
1621
|
function limitDecimalDigits(decimalDigits, maxDecimals) {
|
|
1622
|
+
var _a;
|
|
1621
1623
|
let integerDigits = "0";
|
|
1622
1624
|
let resultDecimalDigits = decimalDigits;
|
|
1623
1625
|
// Note : we'd want to simply use number.toFixed() to handle the max digits & rounding,
|
|
1624
1626
|
// but it has very strange behaviour. Ex: 12.345.toFixed(2) => "12.35", but 1.345.toFixed(2) => "1.34"
|
|
1625
1627
|
let slicedDecimalDigits = decimalDigits.slice(0, maxDecimals);
|
|
1626
1628
|
const i = maxDecimals;
|
|
1627
|
-
if (Number(
|
|
1629
|
+
if (Number(decimalDigits[i]) < 5) {
|
|
1628
1630
|
return { integerDigits, decimalDigits: slicedDecimalDigits };
|
|
1629
1631
|
}
|
|
1630
1632
|
// round up
|
|
1633
|
+
const leadingZeroes = ((_a = slicedDecimalDigits.match(leadingZeroesRegexp)) === null || _a === void 0 ? void 0 : _a[0]) || "";
|
|
1631
1634
|
const slicedRoundedUp = (Number(slicedDecimalDigits) + 1).toString();
|
|
1632
|
-
|
|
1633
|
-
|
|
1635
|
+
const withoutLeadingZeroes = slicedDecimalDigits.slice(leadingZeroes.length);
|
|
1636
|
+
// e.g. carry over from 99 to 100
|
|
1637
|
+
const carryOver = slicedRoundedUp.length > withoutLeadingZeroes.length;
|
|
1638
|
+
if (carryOver && !leadingZeroes) {
|
|
1639
|
+
integerDigits = "1";
|
|
1634
1640
|
resultDecimalDigits = undefined;
|
|
1635
1641
|
}
|
|
1642
|
+
else if (carryOver) {
|
|
1643
|
+
resultDecimalDigits = leadingZeroes.slice(0, -1) + slicedRoundedUp;
|
|
1644
|
+
}
|
|
1636
1645
|
else {
|
|
1637
|
-
resultDecimalDigits = slicedRoundedUp;
|
|
1646
|
+
resultDecimalDigits = leadingZeroes + slicedRoundedUp;
|
|
1638
1647
|
}
|
|
1639
1648
|
return { integerDigits, decimalDigits: resultDecimalDigits };
|
|
1640
1649
|
}
|
|
@@ -8360,6 +8369,7 @@
|
|
|
8360
8369
|
.o-color-picker-toggler {
|
|
8361
8370
|
display: flex;
|
|
8362
8371
|
.o-color-picker-toggler-sign {
|
|
8372
|
+
display: flex;
|
|
8363
8373
|
margin: auto auto;
|
|
8364
8374
|
width: 55%;
|
|
8365
8375
|
height: 55%;
|
|
@@ -20232,6 +20242,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
20232
20242
|
this.autocompleteAPI.moveDown();
|
|
20233
20243
|
}
|
|
20234
20244
|
}
|
|
20245
|
+
this.updateCursorIfNeeded();
|
|
20235
20246
|
}
|
|
20236
20247
|
processTabKey(ev) {
|
|
20237
20248
|
ev.preventDefault();
|
|
@@ -20288,9 +20299,12 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
20288
20299
|
}
|
|
20289
20300
|
else {
|
|
20290
20301
|
ev.stopPropagation();
|
|
20302
|
+
this.updateCursorIfNeeded();
|
|
20291
20303
|
}
|
|
20292
|
-
|
|
20304
|
+
}
|
|
20305
|
+
updateCursorIfNeeded() {
|
|
20293
20306
|
if (!this.env.model.getters.isSelectingForComposer()) {
|
|
20307
|
+
const { start, end } = this.contentHelper.getCurrentSelection();
|
|
20294
20308
|
this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION", { start, end });
|
|
20295
20309
|
this.isKeyStillDown = true;
|
|
20296
20310
|
}
|
|
@@ -33179,14 +33193,19 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
33179
33193
|
if (!filter)
|
|
33180
33194
|
continue;
|
|
33181
33195
|
const valuesInFilterZone = filter.filteredZone
|
|
33182
|
-
? positions(filter.filteredZone)
|
|
33183
|
-
.map((pos) => { var _a; return (_a = this.getters.getCell(sheetData.id, pos.col, pos.row)) === null || _a === void 0 ? void 0 : _a.formattedValue; })
|
|
33184
|
-
.filter(isNonEmptyString)
|
|
33196
|
+
? positions(filter.filteredZone).map((pos) => { var _a; return (_a = this.getters.getCell(sheetData.id, pos.col, pos.row)) === null || _a === void 0 ? void 0 : _a.formattedValue; })
|
|
33185
33197
|
: [];
|
|
33186
|
-
|
|
33187
|
-
|
|
33188
|
-
|
|
33189
|
-
|
|
33198
|
+
if (filteredValues.length) {
|
|
33199
|
+
const xlsxDisplayedValues = valuesInFilterZone
|
|
33200
|
+
.filter(isNonEmptyString)
|
|
33201
|
+
.filter((val) => !filteredValues.includes(val));
|
|
33202
|
+
filters.push({
|
|
33203
|
+
colId: i,
|
|
33204
|
+
displayedValues: [...new Set(xlsxDisplayedValues)],
|
|
33205
|
+
displayBlanks: !filteredValues.includes("") && valuesInFilterZone.some((val) => !val),
|
|
33206
|
+
});
|
|
33207
|
+
}
|
|
33208
|
+
// In xlsx, filter header should ALWAYS be a string and should be unique in the table
|
|
33190
33209
|
const headerPosition = { col: filter.col, row: filter.zoneWithHeaders.top };
|
|
33191
33210
|
const headerString = (_a = this.getters.getCell(sheetData.id, headerPosition.col, headerPosition.row)) === null || _a === void 0 ? void 0 : _a.formattedValue;
|
|
33192
33211
|
const headerName = this.getUniqueColNameForExcel(i, headerString, headerNames);
|
|
@@ -41877,15 +41896,10 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
41877
41896
|
`;
|
|
41878
41897
|
}
|
|
41879
41898
|
function addFilterColumns(table) {
|
|
41880
|
-
const tableZone = toZone(table.range);
|
|
41881
41899
|
const columns = [];
|
|
41882
|
-
for (const
|
|
41883
|
-
const filter = table.filters[i];
|
|
41884
|
-
if (!filter || !filter.filteredValues.length) {
|
|
41885
|
-
continue;
|
|
41886
|
-
}
|
|
41900
|
+
for (const filter of table.filters) {
|
|
41887
41901
|
const colXml = escapeXml /*xml*/ `
|
|
41888
|
-
<filterColumn ${formatAttributes([["colId",
|
|
41902
|
+
<filterColumn ${formatAttributes([["colId", filter.colId]])}>
|
|
41889
41903
|
${addFilter(filter)}
|
|
41890
41904
|
</filterColumn>
|
|
41891
41905
|
`;
|
|
@@ -41894,9 +41908,10 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
41894
41908
|
return columns;
|
|
41895
41909
|
}
|
|
41896
41910
|
function addFilter(filter) {
|
|
41897
|
-
const filterValues = filter.
|
|
41911
|
+
const filterValues = filter.displayedValues.map((val) => escapeXml /*xml*/ `<filter ${formatAttributes([["val", val]])}/>`);
|
|
41912
|
+
const filterAttributes = filter.displayBlanks ? [["blank", 1]] : [];
|
|
41898
41913
|
return escapeXml /*xml*/ `
|
|
41899
|
-
<filters>
|
|
41914
|
+
<filters ${formatAttributes(filterAttributes)}>
|
|
41900
41915
|
${joinXmlNodes(filterValues)}
|
|
41901
41916
|
</filters>
|
|
41902
41917
|
`;
|
|
@@ -42801,9 +42816,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
42801
42816
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
42802
42817
|
|
|
42803
42818
|
|
|
42804
|
-
__info__.version = '16.0.
|
|
42805
|
-
__info__.date = '2023-06-
|
|
42806
|
-
__info__.hash = '
|
|
42819
|
+
__info__.version = '16.0.13';
|
|
42820
|
+
__info__.date = '2023-06-12T13:44:11.940Z';
|
|
42821
|
+
__info__.hash = '3c9ec1e';
|
|
42807
42822
|
|
|
42808
42823
|
|
|
42809
42824
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|