@odoo/o-spreadsheet 16.3.16 → 16.3.17

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.
@@ -9388,6 +9388,17 @@ const SORT_CELLS_DESCENDING = (env) => {
9388
9388
  };
9389
9389
  const IS_ONLY_ONE_RANGE = (env) => {
9390
9390
  return env.model.getters.getSelectedZones().length === 1;
9391
+ };
9392
+ const CAN_INSERT_HEADER = (env, dimension) => {
9393
+ if (!IS_ONLY_ONE_RANGE(env)) {
9394
+ return false;
9395
+ }
9396
+ const activeHeaders = dimension === "COL" ? env.model.getters.getActiveCols() : env.model.getters.getActiveRows();
9397
+ const ortogonalActiveHeaders = dimension === "COL" ? env.model.getters.getActiveRows() : env.model.getters.getActiveCols();
9398
+ const sheetId = env.model.getters.getActiveSheetId();
9399
+ const zone = env.model.getters.getSelectedZone();
9400
+ const allSheetSelected = isEqual(zone, env.model.getters.getSheetZone(sheetId));
9401
+ return isConsecutive(activeHeaders) && (ortogonalActiveHeaders.size === 0 || allSheetSelected);
9391
9402
  };
9392
9403
 
9393
9404
  const undo = {
@@ -16322,17 +16333,13 @@ for (let category of categories) {
16322
16333
 
16323
16334
  const insertRow = {
16324
16335
  name: MENU_INSERT_ROWS_NAME,
16325
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16326
- IS_ONLY_ONE_RANGE(env) &&
16327
- env.model.getters.getActiveCols().size === 0,
16336
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16328
16337
  icon: "o-spreadsheet-Icon.INSERT_ROW",
16329
16338
  };
16330
16339
  const rowInsertRowBefore = {
16331
16340
  name: ROW_INSERT_ROWS_BEFORE_NAME,
16332
16341
  execute: INSERT_ROWS_BEFORE_ACTION,
16333
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16334
- IS_ONLY_ONE_RANGE(env) &&
16335
- env.model.getters.getActiveCols().size === 0,
16342
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16336
16343
  icon: "o-spreadsheet-Icon.INSERT_ROW_BEFORE",
16337
16344
  };
16338
16345
  const topBarInsertRowsBefore = {
@@ -16348,9 +16355,7 @@ const cellInsertRowsBefore = {
16348
16355
  const rowInsertRowsAfter = {
16349
16356
  execute: INSERT_ROWS_AFTER_ACTION,
16350
16357
  name: ROW_INSERT_ROWS_AFTER_NAME,
16351
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16352
- IS_ONLY_ONE_RANGE(env) &&
16353
- env.model.getters.getActiveCols().size === 0,
16358
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16354
16359
  icon: "o-spreadsheet-Icon.INSERT_ROW_AFTER",
16355
16360
  };
16356
16361
  const topBarInsertRowsAfter = {
@@ -16359,17 +16364,13 @@ const topBarInsertRowsAfter = {
16359
16364
  };
16360
16365
  const insertCol = {
16361
16366
  name: MENU_INSERT_COLUMNS_NAME,
16362
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16363
- IS_ONLY_ONE_RANGE(env) &&
16364
- env.model.getters.getActiveRows().size === 0,
16367
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16365
16368
  icon: "o-spreadsheet-Icon.INSERT_COL",
16366
16369
  };
16367
16370
  const colInsertColsBefore = {
16368
16371
  name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
16369
16372
  execute: INSERT_COLUMNS_BEFORE_ACTION,
16370
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16371
- IS_ONLY_ONE_RANGE(env) &&
16372
- env.model.getters.getActiveRows().size === 0,
16373
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16373
16374
  icon: "o-spreadsheet-Icon.INSERT_COL_BEFORE",
16374
16375
  };
16375
16376
  const topBarInsertColsBefore = {
@@ -16385,9 +16386,7 @@ const cellInsertColsBefore = {
16385
16386
  const colInsertColsAfter = {
16386
16387
  name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
16387
16388
  execute: INSERT_COLUMNS_AFTER_ACTION,
16388
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16389
- IS_ONLY_ONE_RANGE(env) &&
16390
- env.model.getters.getActiveRows().size === 0,
16389
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16391
16390
  icon: "o-spreadsheet-Icon.INSERT_COL_AFTER",
16392
16391
  };
16393
16392
  const topBarInsertColsAfter = {
@@ -19714,7 +19713,7 @@ css /* scss */ `
19714
19713
  }
19715
19714
  .o-input-count {
19716
19715
  width: fit-content;
19717
- padding: 4 0 4 4;
19716
+ padding: 4px 0 4px 4px;
19718
19717
  }
19719
19718
  }
19720
19719
  }
@@ -30848,6 +30847,13 @@ class FiltersPlugin extends CorePlugin {
30848
30847
  }
30849
30848
  onDeleteColumnsRows(cmd) {
30850
30849
  for (const table of this.getFilterTables(cmd.sheetId)) {
30850
+ // Remove the filter tables whose data filter headers are in the removed rows.
30851
+ if (cmd.dimension === "ROW" && cmd.elements.includes(table.zone.top)) {
30852
+ const tables = { ...this.tables[cmd.sheetId] };
30853
+ delete tables[table.id];
30854
+ this.history.update("tables", cmd.sheetId, tables);
30855
+ continue;
30856
+ }
30851
30857
  const zone = reduceZoneOnDeletion(table.zone, cmd.dimension === "COL" ? "left" : "top", cmd.elements);
30852
30858
  if (!zone) {
30853
30859
  const tables = { ...this.tables[cmd.sheetId] };
@@ -34196,6 +34202,8 @@ class FilterEvaluationPlugin extends UIPlugin {
34196
34202
  case "EVALUATE_CELLS":
34197
34203
  case "ACTIVATE_SHEET":
34198
34204
  case "REMOVE_FILTER_TABLE":
34205
+ case "ADD_COLUMNS_ROWS":
34206
+ case "REMOVE_COLUMNS_ROWS":
34199
34207
  this.isEvaluationDirty = true;
34200
34208
  break;
34201
34209
  case "START":
@@ -47797,6 +47805,6 @@ exports.setTranslationMethod = setTranslationMethod;
47797
47805
  exports.tokenize = tokenize;
47798
47806
 
47799
47807
 
47800
- __info__.version = '16.3.16';
47801
- __info__.date = '2023-11-02T09:32:13.671Z';
47802
- __info__.hash = '09607eb';
47808
+ __info__.version = '16.3.17';
47809
+ __info__.date = '2023-11-16T11:59:29.130Z';
47810
+ __info__.hash = '4049460';
@@ -9384,6 +9384,17 @@ const SORT_CELLS_DESCENDING = (env) => {
9384
9384
  };
9385
9385
  const IS_ONLY_ONE_RANGE = (env) => {
9386
9386
  return env.model.getters.getSelectedZones().length === 1;
9387
+ };
9388
+ const CAN_INSERT_HEADER = (env, dimension) => {
9389
+ if (!IS_ONLY_ONE_RANGE(env)) {
9390
+ return false;
9391
+ }
9392
+ const activeHeaders = dimension === "COL" ? env.model.getters.getActiveCols() : env.model.getters.getActiveRows();
9393
+ const ortogonalActiveHeaders = dimension === "COL" ? env.model.getters.getActiveRows() : env.model.getters.getActiveCols();
9394
+ const sheetId = env.model.getters.getActiveSheetId();
9395
+ const zone = env.model.getters.getSelectedZone();
9396
+ const allSheetSelected = isEqual(zone, env.model.getters.getSheetZone(sheetId));
9397
+ return isConsecutive(activeHeaders) && (ortogonalActiveHeaders.size === 0 || allSheetSelected);
9387
9398
  };
9388
9399
 
9389
9400
  const undo = {
@@ -16318,17 +16329,13 @@ for (let category of categories) {
16318
16329
 
16319
16330
  const insertRow = {
16320
16331
  name: MENU_INSERT_ROWS_NAME,
16321
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16322
- IS_ONLY_ONE_RANGE(env) &&
16323
- env.model.getters.getActiveCols().size === 0,
16332
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16324
16333
  icon: "o-spreadsheet-Icon.INSERT_ROW",
16325
16334
  };
16326
16335
  const rowInsertRowBefore = {
16327
16336
  name: ROW_INSERT_ROWS_BEFORE_NAME,
16328
16337
  execute: INSERT_ROWS_BEFORE_ACTION,
16329
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16330
- IS_ONLY_ONE_RANGE(env) &&
16331
- env.model.getters.getActiveCols().size === 0,
16338
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16332
16339
  icon: "o-spreadsheet-Icon.INSERT_ROW_BEFORE",
16333
16340
  };
16334
16341
  const topBarInsertRowsBefore = {
@@ -16344,9 +16351,7 @@ const cellInsertRowsBefore = {
16344
16351
  const rowInsertRowsAfter = {
16345
16352
  execute: INSERT_ROWS_AFTER_ACTION,
16346
16353
  name: ROW_INSERT_ROWS_AFTER_NAME,
16347
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16348
- IS_ONLY_ONE_RANGE(env) &&
16349
- env.model.getters.getActiveCols().size === 0,
16354
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16350
16355
  icon: "o-spreadsheet-Icon.INSERT_ROW_AFTER",
16351
16356
  };
16352
16357
  const topBarInsertRowsAfter = {
@@ -16355,17 +16360,13 @@ const topBarInsertRowsAfter = {
16355
16360
  };
16356
16361
  const insertCol = {
16357
16362
  name: MENU_INSERT_COLUMNS_NAME,
16358
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16359
- IS_ONLY_ONE_RANGE(env) &&
16360
- env.model.getters.getActiveRows().size === 0,
16363
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16361
16364
  icon: "o-spreadsheet-Icon.INSERT_COL",
16362
16365
  };
16363
16366
  const colInsertColsBefore = {
16364
16367
  name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
16365
16368
  execute: INSERT_COLUMNS_BEFORE_ACTION,
16366
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16367
- IS_ONLY_ONE_RANGE(env) &&
16368
- env.model.getters.getActiveRows().size === 0,
16369
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16369
16370
  icon: "o-spreadsheet-Icon.INSERT_COL_BEFORE",
16370
16371
  };
16371
16372
  const topBarInsertColsBefore = {
@@ -16381,9 +16382,7 @@ const cellInsertColsBefore = {
16381
16382
  const colInsertColsAfter = {
16382
16383
  name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
16383
16384
  execute: INSERT_COLUMNS_AFTER_ACTION,
16384
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16385
- IS_ONLY_ONE_RANGE(env) &&
16386
- env.model.getters.getActiveRows().size === 0,
16385
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16387
16386
  icon: "o-spreadsheet-Icon.INSERT_COL_AFTER",
16388
16387
  };
16389
16388
  const topBarInsertColsAfter = {
@@ -19710,7 +19709,7 @@ css /* scss */ `
19710
19709
  }
19711
19710
  .o-input-count {
19712
19711
  width: fit-content;
19713
- padding: 4 0 4 4;
19712
+ padding: 4px 0 4px 4px;
19714
19713
  }
19715
19714
  }
19716
19715
  }
@@ -30844,6 +30843,13 @@ class FiltersPlugin extends CorePlugin {
30844
30843
  }
30845
30844
  onDeleteColumnsRows(cmd) {
30846
30845
  for (const table of this.getFilterTables(cmd.sheetId)) {
30846
+ // Remove the filter tables whose data filter headers are in the removed rows.
30847
+ if (cmd.dimension === "ROW" && cmd.elements.includes(table.zone.top)) {
30848
+ const tables = { ...this.tables[cmd.sheetId] };
30849
+ delete tables[table.id];
30850
+ this.history.update("tables", cmd.sheetId, tables);
30851
+ continue;
30852
+ }
30847
30853
  const zone = reduceZoneOnDeletion(table.zone, cmd.dimension === "COL" ? "left" : "top", cmd.elements);
30848
30854
  if (!zone) {
30849
30855
  const tables = { ...this.tables[cmd.sheetId] };
@@ -34192,6 +34198,8 @@ class FilterEvaluationPlugin extends UIPlugin {
34192
34198
  case "EVALUATE_CELLS":
34193
34199
  case "ACTIVATE_SHEET":
34194
34200
  case "REMOVE_FILTER_TABLE":
34201
+ case "ADD_COLUMNS_ROWS":
34202
+ case "REMOVE_COLUMNS_ROWS":
34195
34203
  this.isEvaluationDirty = true;
34196
34204
  break;
34197
34205
  case "START":
@@ -47765,6 +47773,6 @@ function addFunction(functionName, functionDescription) {
47765
47773
  export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, links, load, parse, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
47766
47774
 
47767
47775
 
47768
- __info__.version = '16.3.16';
47769
- __info__.date = '2023-11-02T09:32:13.671Z';
47770
- __info__.hash = '09607eb';
47776
+ __info__.version = '16.3.17';
47777
+ __info__.date = '2023-11-16T11:59:29.130Z';
47778
+ __info__.hash = '4049460';
@@ -9385,6 +9385,17 @@
9385
9385
  };
9386
9386
  const IS_ONLY_ONE_RANGE = (env) => {
9387
9387
  return env.model.getters.getSelectedZones().length === 1;
9388
+ };
9389
+ const CAN_INSERT_HEADER = (env, dimension) => {
9390
+ if (!IS_ONLY_ONE_RANGE(env)) {
9391
+ return false;
9392
+ }
9393
+ const activeHeaders = dimension === "COL" ? env.model.getters.getActiveCols() : env.model.getters.getActiveRows();
9394
+ const ortogonalActiveHeaders = dimension === "COL" ? env.model.getters.getActiveRows() : env.model.getters.getActiveCols();
9395
+ const sheetId = env.model.getters.getActiveSheetId();
9396
+ const zone = env.model.getters.getSelectedZone();
9397
+ const allSheetSelected = isEqual(zone, env.model.getters.getSheetZone(sheetId));
9398
+ return isConsecutive(activeHeaders) && (ortogonalActiveHeaders.size === 0 || allSheetSelected);
9388
9399
  };
9389
9400
 
9390
9401
  const undo = {
@@ -16319,17 +16330,13 @@
16319
16330
 
16320
16331
  const insertRow = {
16321
16332
  name: MENU_INSERT_ROWS_NAME,
16322
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16323
- IS_ONLY_ONE_RANGE(env) &&
16324
- env.model.getters.getActiveCols().size === 0,
16333
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16325
16334
  icon: "o-spreadsheet-Icon.INSERT_ROW",
16326
16335
  };
16327
16336
  const rowInsertRowBefore = {
16328
16337
  name: ROW_INSERT_ROWS_BEFORE_NAME,
16329
16338
  execute: INSERT_ROWS_BEFORE_ACTION,
16330
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16331
- IS_ONLY_ONE_RANGE(env) &&
16332
- env.model.getters.getActiveCols().size === 0,
16339
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16333
16340
  icon: "o-spreadsheet-Icon.INSERT_ROW_BEFORE",
16334
16341
  };
16335
16342
  const topBarInsertRowsBefore = {
@@ -16345,9 +16352,7 @@
16345
16352
  const rowInsertRowsAfter = {
16346
16353
  execute: INSERT_ROWS_AFTER_ACTION,
16347
16354
  name: ROW_INSERT_ROWS_AFTER_NAME,
16348
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
16349
- IS_ONLY_ONE_RANGE(env) &&
16350
- env.model.getters.getActiveCols().size === 0,
16355
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
16351
16356
  icon: "o-spreadsheet-Icon.INSERT_ROW_AFTER",
16352
16357
  };
16353
16358
  const topBarInsertRowsAfter = {
@@ -16356,17 +16361,13 @@
16356
16361
  };
16357
16362
  const insertCol = {
16358
16363
  name: MENU_INSERT_COLUMNS_NAME,
16359
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16360
- IS_ONLY_ONE_RANGE(env) &&
16361
- env.model.getters.getActiveRows().size === 0,
16364
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16362
16365
  icon: "o-spreadsheet-Icon.INSERT_COL",
16363
16366
  };
16364
16367
  const colInsertColsBefore = {
16365
16368
  name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
16366
16369
  execute: INSERT_COLUMNS_BEFORE_ACTION,
16367
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16368
- IS_ONLY_ONE_RANGE(env) &&
16369
- env.model.getters.getActiveRows().size === 0,
16370
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16370
16371
  icon: "o-spreadsheet-Icon.INSERT_COL_BEFORE",
16371
16372
  };
16372
16373
  const topBarInsertColsBefore = {
@@ -16382,9 +16383,7 @@
16382
16383
  const colInsertColsAfter = {
16383
16384
  name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
16384
16385
  execute: INSERT_COLUMNS_AFTER_ACTION,
16385
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
16386
- IS_ONLY_ONE_RANGE(env) &&
16387
- env.model.getters.getActiveRows().size === 0,
16386
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
16388
16387
  icon: "o-spreadsheet-Icon.INSERT_COL_AFTER",
16389
16388
  };
16390
16389
  const topBarInsertColsAfter = {
@@ -19711,7 +19710,7 @@
19711
19710
  }
19712
19711
  .o-input-count {
19713
19712
  width: fit-content;
19714
- padding: 4 0 4 4;
19713
+ padding: 4px 0 4px 4px;
19715
19714
  }
19716
19715
  }
19717
19716
  }
@@ -30845,6 +30844,13 @@
30845
30844
  }
30846
30845
  onDeleteColumnsRows(cmd) {
30847
30846
  for (const table of this.getFilterTables(cmd.sheetId)) {
30847
+ // Remove the filter tables whose data filter headers are in the removed rows.
30848
+ if (cmd.dimension === "ROW" && cmd.elements.includes(table.zone.top)) {
30849
+ const tables = { ...this.tables[cmd.sheetId] };
30850
+ delete tables[table.id];
30851
+ this.history.update("tables", cmd.sheetId, tables);
30852
+ continue;
30853
+ }
30848
30854
  const zone = reduceZoneOnDeletion(table.zone, cmd.dimension === "COL" ? "left" : "top", cmd.elements);
30849
30855
  if (!zone) {
30850
30856
  const tables = { ...this.tables[cmd.sheetId] };
@@ -34193,6 +34199,8 @@
34193
34199
  case "EVALUATE_CELLS":
34194
34200
  case "ACTIVATE_SHEET":
34195
34201
  case "REMOVE_FILTER_TABLE":
34202
+ case "ADD_COLUMNS_ROWS":
34203
+ case "REMOVE_COLUMNS_ROWS":
34196
34204
  this.isEvaluationDirty = true;
34197
34205
  break;
34198
34206
  case "START":
@@ -47796,9 +47804,9 @@
47796
47804
  Object.defineProperty(exports, '__esModule', { value: true });
47797
47805
 
47798
47806
 
47799
- __info__.version = '16.3.16';
47800
- __info__.date = '2023-11-02T09:32:13.671Z';
47801
- __info__.hash = '09607eb';
47807
+ __info__.version = '16.3.17';
47808
+ __info__.date = '2023-11-16T11:59:29.130Z';
47809
+ __info__.hash = '4049460';
47802
47810
 
47803
47811
 
47804
47812
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);