canvas-datagrid 0.3.20 → 0.3.21

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/CHANGELOG.md CHANGED
@@ -7,6 +7,18 @@ All notable changes to this project will be documented in this file.
7
7
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
8
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
+ ## 0.3.21 - 2021-12-08
11
+
12
+ ### Added
13
+
14
+ - Add `afterdelete` event and `deleteSelectedData()` public method (mdebrauw, #446)
15
+
16
+ ### Fixed
17
+
18
+ - Remove mousemove at body when dispose (faimaklg, #449)
19
+ - Fire event when resizing column by double clicking column border (mdebrauw, #447)
20
+ - Fix filter button active/hover states, remove inline grid button after menu item click (xianzhi3, #445)
21
+
10
22
  ## 0.3.20 - 2021-12-04
11
23
 
12
24
  ### Added
@@ -175,6 +175,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
175
175
  if (item.click) {
176
176
  menuItemContainer.addEventListener('click', function (ev) {
177
177
  item.click.apply(self, [ev]);
178
+ self.disposeButton();
178
179
  });
179
180
  }
180
181
  }
@@ -4545,7 +4546,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
4545
4546
  onFilterButton: false
4546
4547
  };
4547
4548
 
4548
- if (cell.isFilterable && x > cell.x + cell.width - self.style.filterButtonWidth && x < cell.x + cell.width && y > cell.y + cell.height - self.style.filterButtonHeight && y < cell.y + cell.height) {
4549
+ if (cell.isFilterable && x > cell.x + cell.width + self.canvasOffsetLeft - self.style.filterButtonWidth && x < cell.x + cell.width + self.canvasOffsetLeft && y > cell.y + cell.height + self.canvasOffsetTop - self.style.filterButtonHeight && y < cell.y + cell.height + self.canvasOffsetTop) {
4549
4550
  self.hovers.onFilterButton = true;
4550
4551
  self.draw();
4551
4552
  }
@@ -5394,6 +5395,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5394
5395
  self.selectNone();
5395
5396
  } else if (ctrl && e.key === 'a') {
5396
5397
  self.selectAll();
5398
+ } else if (['Backspace', 'Delete'].includes(e.key)) {
5399
+ self.deleteSelectedData();
5397
5400
  } else if (e.key === 'ArrowDown') {
5398
5401
  y += 1;
5399
5402
  } else if (e.key === 'ArrowUp') {
@@ -5838,6 +5841,10 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
5838
5841
  })) {
5839
5842
  return;
5840
5843
  }
5844
+
5845
+ requestAnimationFrame(function () {
5846
+ return self.draw();
5847
+ });
5841
5848
  };
5842
5849
 
5843
5850
  self.copy = function (e) {
@@ -6318,6 +6325,51 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
6318
6325
  return selectedCells;
6319
6326
  };
6320
6327
 
6328
+ self.clearSelectedCells = function () {
6329
+ var schema = self.getSchema();
6330
+ var affectedCells = [];
6331
+
6332
+ var _iterator3 = _createForOfIteratorHelper(self.selections.entries()),
6333
+ _step3;
6334
+
6335
+ try {
6336
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6337
+ var _step3$value = _slicedToArray(_step3.value, 2),
6338
+ rowIndex = _step3$value[0],
6339
+ row = _step3$value[1];
6340
+
6341
+ // If no cells are selected for a particular rowIndex the selections array will contain an empty element for that rowIndex.
6342
+ if (!row) continue;
6343
+ var boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);
6344
+
6345
+ var _iterator4 = _createForOfIteratorHelper(row),
6346
+ _step4;
6347
+
6348
+ try {
6349
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
6350
+ var columnIndex = _step4.value;
6351
+ // If the whole row is selected the columnIndex for the rowHeader is -1.
6352
+ if (columnIndex < 0) continue;
6353
+ var boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(columnIndex);
6354
+ var columnName = schema[boundColumnIndex].name;
6355
+ self.viewData[boundRowIndex][columnName] = null;
6356
+ affectedCells.push([rowIndex, columnIndex, boundRowIndex, boundColumnIndex]);
6357
+ }
6358
+ } catch (err) {
6359
+ _iterator4.e(err);
6360
+ } finally {
6361
+ _iterator4.f();
6362
+ }
6363
+ }
6364
+ } catch (err) {
6365
+ _iterator3.e(err);
6366
+ } finally {
6367
+ _iterator3.f();
6368
+ }
6369
+
6370
+ return affectedCells;
6371
+ };
6372
+
6321
6373
  self.getBoundRowIndexFromViewRowIndex = function (viewRowIndex) {
6322
6374
  if (self.boundRowIndexMap && self.boundRowIndexMap.has(viewRowIndex)) {
6323
6375
  return self.boundRowIndexMap.get(viewRowIndex);
@@ -6488,12 +6540,12 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
6488
6540
  } // Apply sorting
6489
6541
 
6490
6542
 
6491
- var _iterator3 = _createForOfIteratorHelper(self.orderings.columns),
6492
- _step3;
6543
+ var _iterator5 = _createForOfIteratorHelper(self.orderings.columns),
6544
+ _step5;
6493
6545
 
6494
6546
  try {
6495
6547
  var _loop2 = function _loop2() {
6496
- var column = _step3.value;
6548
+ var column = _step5.value;
6497
6549
  var sortFn = column.sortFunction(column.orderBy, column.orderDirection);
6498
6550
  newViewData.sort(function (_ref7, _ref8) {
6499
6551
  var _ref9 = _slicedToArray(_ref7, 1),
@@ -6508,13 +6560,13 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
6508
6560
  });
6509
6561
  };
6510
6562
 
6511
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
6563
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
6512
6564
  _loop2();
6513
6565
  }
6514
6566
  } catch (err) {
6515
- _iterator3.e(err);
6567
+ _iterator5.e(err);
6516
6568
  } finally {
6517
- _iterator3.f();
6569
+ _iterator5.f();
6518
6570
  }
6519
6571
 
6520
6572
  return {
@@ -6668,6 +6720,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
6668
6720
  self.controlInput.removeEventListener('keypress', self.keypress, false);
6669
6721
  self.controlInput.removeEventListener('keyup', self.keyup, false);
6670
6722
  self.controlInput.removeEventListener('keydown', self.keydown, false);
6723
+ document.body.removeEventListener('mousemove', self.mousemove);
6671
6724
  window.removeEventListener('resize', self.resize);
6672
6725
 
6673
6726
  if (self.observer && self.observer.disconnect) {
@@ -6844,6 +6897,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
6844
6897
  };
6845
6898
  Object.keys(self.style).forEach(self.parseStyleValue);
6846
6899
  self.intf.moveSelection = self.moveSelection;
6900
+ self.intf.deleteSelectedData = self.deleteSelectedData;
6847
6901
  self.intf.moveTo = self.moveTo;
6848
6902
  self.intf.addEventListener = self.addEventListener;
6849
6903
  self.intf.removeEventListener = self.removeEventListener;
@@ -8788,7 +8842,14 @@ __webpack_require__.r(__webpack_exports__);
8788
8842
  return;
8789
8843
  }
8790
8844
 
8791
- self.sizes.columns[name === 'cornerCell' ? -1 : self.getHeaderByName(name).index] = Math.max(self.findColumnMaxTextLength(name), self.style.minColumnWidth);
8845
+ var columnIndex = name === 'cornerCell' ? -1 : self.getHeaderByName(name).index;
8846
+ var newSize = Math.max(self.findColumnMaxTextLength(name), self.style.minColumnWidth);
8847
+ self.sizes.columns[columnIndex] = newSize;
8848
+ self.dispatchEvent('resizecolumn', {
8849
+ x: newSize,
8850
+ y: self.resizingStartingHeight,
8851
+ draggingItem: self.currentCell
8852
+ });
8792
8853
 
8793
8854
  if (!internal) {
8794
8855
  self.resize();
@@ -8909,6 +8970,29 @@ __webpack_require__.r(__webpack_exports__);
8909
8970
  });
8910
8971
  self.selections = sel;
8911
8972
  };
8973
+ /**
8974
+ * Deletes currently selected data.
8975
+ * @memberof canvasDatagrid
8976
+ * @name deleteSelectedData
8977
+ * @method
8978
+ * @param {boolean} dontDraw Suppress the draw method after the selection change.
8979
+ */
8980
+
8981
+
8982
+ self.deleteSelectedData = function (dontDraw) {
8983
+ var affectedCells = self.clearSelectedCells();
8984
+ self.dispatchEvent('afterdelete', {
8985
+ cells: affectedCells
8986
+ });
8987
+
8988
+ if (dontDraw) {
8989
+ return;
8990
+ }
8991
+
8992
+ requestAnimationFrame(function () {
8993
+ return self.draw();
8994
+ });
8995
+ };
8912
8996
  /**
8913
8997
  * Moves data in the provided selection to another position in the grid. Moving data off the edge of the schema (columns/x) will truncate data.
8914
8998
  * @memberof canvasDatagrid