canvas-datagrid 0.3.20 → 0.3.24
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 +31 -0
- package/dist/canvas-datagrid.debug.js +285 -141
- package/dist/canvas-datagrid.debug.map +1 -1
- package/dist/canvas-datagrid.js +1 -1
- package/dist/canvas-datagrid.module.js +1 -1
- package/dist/canvas-datagrid.module.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/lib/button.js +1 -0
- package/lib/docs.js +9 -1
- package/lib/events/index.js +69 -95
- package/lib/events/util.js +39 -1
- package/lib/intf.js +108 -0
- package/lib/publicMethods.js +37 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,37 @@ 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.24 - 2021-12-22
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Prevent default when handling cut event and cleanup utility functions (mdebrauw, #454)
|
|
15
|
+
|
|
16
|
+
## 0.3.23 - 2021-12-16
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Slight refactor and set minimum width when resizing (mdebrauw, #452)
|
|
21
|
+
|
|
22
|
+
## 0.3.22 - 2021-12-15
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Resize selected columns simultaneously (mdebrauw, #451)
|
|
27
|
+
- Refactor `cut` and `copy` event handlers (mdebrauw, #450)
|
|
28
|
+
|
|
29
|
+
## 0.3.21 - 2021-12-08
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Add `afterdelete` event and `deleteSelectedData()` public method (mdebrauw, #446)
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Remove mousemove at body when dispose (faimaklg, #449)
|
|
38
|
+
- Fire event when resizing column by double clicking column border (mdebrauw, #447)
|
|
39
|
+
- Fix filter button active/hover states, remove inline grid button after menu item click (xianzhi3, #445)
|
|
40
|
+
|
|
10
41
|
## 0.3.20 - 2021-12-04
|
|
11
42
|
|
|
12
43
|
### 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
|
}
|
|
@@ -4083,15 +4084,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
4083
4084
|
/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/
|
|
4084
4085
|
|
|
4085
4086
|
|
|
4086
|
-
function
|
|
4087
|
-
|
|
4088
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4089
|
-
|
|
4090
|
-
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
4091
|
-
|
|
4092
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
4093
|
-
|
|
4094
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4087
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4095
4088
|
|
|
4096
4089
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4097
4090
|
|
|
@@ -4545,7 +4538,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
4545
4538
|
onFilterButton: false
|
|
4546
4539
|
};
|
|
4547
4540
|
|
|
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) {
|
|
4541
|
+
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
4542
|
self.hovers.onFilterButton = true;
|
|
4550
4543
|
self.draw();
|
|
4551
4544
|
}
|
|
@@ -4833,7 +4826,21 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
4833
4826
|
self.ellipsisCache = {};
|
|
4834
4827
|
};
|
|
4835
4828
|
|
|
4836
|
-
self.stopDragResize = function () {
|
|
4829
|
+
self.stopDragResize = function (event) {
|
|
4830
|
+
var pos = self.getLayerPos(event);
|
|
4831
|
+
|
|
4832
|
+
if (self.dragMode === 'ew-resize') {
|
|
4833
|
+
var hasMoved = !!(pos.x - self.dragStart.x); // Check that dragItem is selected or part of selection.
|
|
4834
|
+
|
|
4835
|
+
var dragItemIsSelected = self.isColumnSelected(self.dragItem.columnIndex);
|
|
4836
|
+
|
|
4837
|
+
if (hasMoved && dragItemIsSelected) {
|
|
4838
|
+
var width = Math.max(self.resizingStartingWidth + pos.x - self.dragStart.x, self.style.minColumnWidth); // If the column is selected, resize it to width plus any other selected columns.
|
|
4839
|
+
|
|
4840
|
+
self.fitSelectedColumns(width);
|
|
4841
|
+
}
|
|
4842
|
+
}
|
|
4843
|
+
|
|
4837
4844
|
self.resize();
|
|
4838
4845
|
document.body.removeEventListener('mousemove', self.dragResizeColumn, false);
|
|
4839
4846
|
document.body.removeEventListener('mouseup', self.stopDragResize, false);
|
|
@@ -5394,6 +5401,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
5394
5401
|
self.selectNone();
|
|
5395
5402
|
} else if (ctrl && e.key === 'a') {
|
|
5396
5403
|
self.selectAll();
|
|
5404
|
+
} else if (['Backspace', 'Delete'].includes(e.key)) {
|
|
5405
|
+
self.deleteSelectedData();
|
|
5397
5406
|
} else if (e.key === 'ArrowDown') {
|
|
5398
5407
|
y += 1;
|
|
5399
5408
|
} else if (e.key === 'ArrowUp') {
|
|
@@ -5583,7 +5592,15 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
5583
5592
|
}
|
|
5584
5593
|
|
|
5585
5594
|
if (self.currentCell.context === 'ew-resize' && self.currentCell.style === 'columnHeaderCell') {
|
|
5586
|
-
|
|
5595
|
+
// Check that double-clicked cell is selected or part of selection.
|
|
5596
|
+
var currentCellIsSelected = self.isColumnSelected(self.currentCell.columnIndex);
|
|
5597
|
+
|
|
5598
|
+
if (currentCellIsSelected) {
|
|
5599
|
+
// There might be more
|
|
5600
|
+
self.fitSelectedColumns();
|
|
5601
|
+
} else {
|
|
5602
|
+
self.fitColumnToValues(self.currentCell.header.name);
|
|
5603
|
+
}
|
|
5587
5604
|
} else if (self.currentCell.context === 'ew-resize' && self.currentCell.style === 'cornerCell') {
|
|
5588
5605
|
self.autosize();
|
|
5589
5606
|
} else if (['cell', 'activeCell'].includes(self.currentCell.style) && !self.hovers.onFilterButton) {
|
|
@@ -5792,135 +5809,43 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
5792
5809
|
});
|
|
5793
5810
|
};
|
|
5794
5811
|
|
|
5795
|
-
self.cut = function (
|
|
5796
|
-
self.
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
_step2;
|
|
5802
|
-
|
|
5803
|
-
try {
|
|
5804
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
5805
|
-
var _step2$value = _slicedToArray(_step2.value, 2),
|
|
5806
|
-
rowIndex = _step2$value[0],
|
|
5807
|
-
row = _step2$value[1];
|
|
5808
|
-
|
|
5809
|
-
if (!row) continue;
|
|
5810
|
-
var boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);
|
|
5812
|
+
self.cut = function (event) {
|
|
5813
|
+
if (self.dispatchEvent('cut', {
|
|
5814
|
+
NativeEvent: event
|
|
5815
|
+
})) {
|
|
5816
|
+
return;
|
|
5817
|
+
} // Expecting instance of `ClipboardEvent` with `clipboardData` attribute
|
|
5811
5818
|
|
|
5812
|
-
var _iterator3 = _createForOfIteratorHelper(row),
|
|
5813
|
-
_step3;
|
|
5814
5819
|
|
|
5815
|
-
|
|
5816
|
-
|
|
5817
|
-
var columnIndex = _step3.value;
|
|
5818
|
-
var boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(columnIndex);
|
|
5819
|
-
var colName = schema[boundColumnIndex].name;
|
|
5820
|
-
self.viewData[rowIndex][colName] = '';
|
|
5821
|
-
affectedCells.push([rowIndex, columnIndex, boundRowIndex, boundColumnIndex]);
|
|
5822
|
-
}
|
|
5823
|
-
} catch (err) {
|
|
5824
|
-
_iterator3.e(err);
|
|
5825
|
-
} finally {
|
|
5826
|
-
_iterator3.f();
|
|
5827
|
-
}
|
|
5828
|
-
}
|
|
5829
|
-
} catch (err) {
|
|
5830
|
-
_iterator2.e(err);
|
|
5831
|
-
} finally {
|
|
5832
|
-
_iterator2.f();
|
|
5820
|
+
if (!self.hasFocus || !event.clipboardData) {
|
|
5821
|
+
return;
|
|
5833
5822
|
}
|
|
5834
5823
|
|
|
5835
|
-
|
|
5836
|
-
|
|
5824
|
+
self.copySelectedCellsToClipboard(event.clipboardData);
|
|
5825
|
+
var affectedCells = self.clearSelectedCells();
|
|
5826
|
+
self.dispatchEvent('aftercut', {
|
|
5837
5827
|
cells: affectedCells
|
|
5838
|
-
})
|
|
5839
|
-
|
|
5840
|
-
|
|
5828
|
+
});
|
|
5829
|
+
requestAnimationFrame(function () {
|
|
5830
|
+
return self.draw();
|
|
5831
|
+
});
|
|
5832
|
+
event.preventDefault();
|
|
5841
5833
|
};
|
|
5842
5834
|
|
|
5843
|
-
self.copy = function (
|
|
5835
|
+
self.copy = function (event) {
|
|
5844
5836
|
if (self.dispatchEvent('copy', {
|
|
5845
|
-
NativeEvent:
|
|
5837
|
+
NativeEvent: event
|
|
5846
5838
|
})) {
|
|
5847
5839
|
return;
|
|
5848
|
-
}
|
|
5840
|
+
} // Expecting instance of `ClipboardEvent` with `clipboardData` attribute
|
|
5849
5841
|
|
|
5850
|
-
if (!self.hasFocus || !e.clipboardData) {
|
|
5851
|
-
return;
|
|
5852
|
-
}
|
|
5853
5842
|
|
|
5854
|
-
|
|
5855
|
-
|
|
5856
|
-
textRows = [],
|
|
5857
|
-
sData = self.getSelectedData(),
|
|
5858
|
-
s = self.getSchema(),
|
|
5859
|
-
sSorted = [],
|
|
5860
|
-
firstRowKeys,
|
|
5861
|
-
isNeat = true; // Selected like [[0, 1], [0, 1]] of [[0, 3]] is neat; Selected like [[0, 1], [1, 2]] is untidy
|
|
5862
|
-
|
|
5863
|
-
function htmlSafe(v) {
|
|
5864
|
-
if (typeof v === 'number') return v;
|
|
5865
|
-
return v.replace(/</g, '<').replace(/>/g, '>');
|
|
5843
|
+
if (!self.hasFocus || !event.clipboardData) {
|
|
5844
|
+
return;
|
|
5866
5845
|
}
|
|
5867
5846
|
|
|
5868
|
-
|
|
5869
|
-
|
|
5870
|
-
});
|
|
5871
|
-
|
|
5872
|
-
if (sData.length > 0) {
|
|
5873
|
-
sData.forEach(function (row) {
|
|
5874
|
-
if (!row) return;
|
|
5875
|
-
var rowKeys = Object.keys(row);
|
|
5876
|
-
var textRow = [];
|
|
5877
|
-
if (!firstRowKeys) firstRowKeys = Object.keys(row);
|
|
5878
|
-
if (isNeat && rowKeys.length !== firstRowKeys.length) isNeat = false;
|
|
5879
|
-
sSorted.forEach(function (column, columnIndex) {
|
|
5880
|
-
if (rowKeys.indexOf(String(column.name)) < 0) {
|
|
5881
|
-
if (firstRowKeys.indexOf(String(column.name)) < 0) {
|
|
5882
|
-
return;
|
|
5883
|
-
} else if (isNeat) {
|
|
5884
|
-
isNeat = false;
|
|
5885
|
-
}
|
|
5886
|
-
}
|
|
5887
|
-
|
|
5888
|
-
textRow.push(row[column.name] || '');
|
|
5889
|
-
});
|
|
5890
|
-
textRows.push(textRow);
|
|
5891
|
-
});
|
|
5892
|
-
|
|
5893
|
-
if (isNeat) {
|
|
5894
|
-
t = textRows.map(function (row) {
|
|
5895
|
-
return row.join('\t');
|
|
5896
|
-
}).join('\n');
|
|
5897
|
-
/**
|
|
5898
|
-
* The html content copied by Excel has not header
|
|
5899
|
-
*/
|
|
5900
|
-
|
|
5901
|
-
d += '<table>';
|
|
5902
|
-
d += textRows.map(function (row) {
|
|
5903
|
-
return '<tr>' + row.map(function (value) {
|
|
5904
|
-
return '<td>' + htmlSafe(value) + '</td>';
|
|
5905
|
-
}).join('') + '</tr>';
|
|
5906
|
-
}).join('');
|
|
5907
|
-
d += '</table>';
|
|
5908
|
-
} else {
|
|
5909
|
-
t = textRows.map(function (row) {
|
|
5910
|
-
return row.join('');
|
|
5911
|
-
}).join('');
|
|
5912
|
-
d = t;
|
|
5913
|
-
}
|
|
5914
|
-
|
|
5915
|
-
if (t) {
|
|
5916
|
-
e.clipboardData.setData('text/html', d);
|
|
5917
|
-
e.clipboardData.setData('text/plain', t);
|
|
5918
|
-
e.clipboardData.setData('text/csv', t);
|
|
5919
|
-
e.clipboardData.setData('application/json', JSON.stringify(sData));
|
|
5920
|
-
}
|
|
5921
|
-
|
|
5922
|
-
e.preventDefault();
|
|
5923
|
-
}
|
|
5847
|
+
self.copySelectedCellsToClipboard(event.clipboardData);
|
|
5848
|
+
event.preventDefault();
|
|
5924
5849
|
};
|
|
5925
5850
|
|
|
5926
5851
|
return;
|
|
@@ -5933,6 +5858,9 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
5933
5858
|
!*** ./lib/events/util.js ***!
|
|
5934
5859
|
\****************************/
|
|
5935
5860
|
/*! namespace exports */
|
|
5861
|
+
/*! export createHTMLString [provided] [no usage info] [missing usage info prevents renaming] */
|
|
5862
|
+
/*! export createTextString [provided] [no usage info] [missing usage info prevents renaming] */
|
|
5863
|
+
/*! export htmlSafe [provided] [no usage info] [missing usage info prevents renaming] */
|
|
5936
5864
|
/*! export isSupportedHtml [provided] [no usage info] [missing usage info prevents renaming] */
|
|
5937
5865
|
/*! export parseData [provided] [no usage info] [missing usage info prevents renaming] */
|
|
5938
5866
|
/*! export parseHtmlTable [provided] [no usage info] [missing usage info prevents renaming] */
|
|
@@ -5946,12 +5874,15 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
5946
5874
|
"use strict";
|
|
5947
5875
|
__webpack_require__.r(__webpack_exports__);
|
|
5948
5876
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
5877
|
+
/* harmony export */ "createTextString": function() { return /* binding */ createTextString; },
|
|
5878
|
+
/* harmony export */ "createHTMLString": function() { return /* binding */ createHTMLString; },
|
|
5949
5879
|
/* harmony export */ "isSupportedHtml": function() { return /* binding */ isSupportedHtml; },
|
|
5950
|
-
/* harmony export */ "
|
|
5880
|
+
/* harmony export */ "htmlSafe": function() { return /* binding */ htmlSafe; },
|
|
5951
5881
|
/* harmony export */ "parseData": function() { return /* binding */ parseData; },
|
|
5952
5882
|
/* harmony export */ "parseHtmlTable": function() { return /* binding */ parseHtmlTable; },
|
|
5953
5883
|
/* harmony export */ "parseHtmlText": function() { return /* binding */ parseHtmlText; },
|
|
5954
|
-
/* harmony export */ "parseText": function() { return /* binding */ parseText; }
|
|
5884
|
+
/* harmony export */ "parseText": function() { return /* binding */ parseText; },
|
|
5885
|
+
/* harmony export */ "sanitizeElementData": function() { return /* binding */ sanitizeElementData; }
|
|
5955
5886
|
/* harmony export */ });
|
|
5956
5887
|
|
|
5957
5888
|
|
|
@@ -6074,6 +6005,36 @@ var parseData = function parseData(data, mimeType) {
|
|
|
6074
6005
|
return parseText(data);
|
|
6075
6006
|
};
|
|
6076
6007
|
|
|
6008
|
+
var htmlSafe = function htmlSafe(value) {
|
|
6009
|
+
if (typeof value === 'number') return value;
|
|
6010
|
+
return value.replace(/</g, '<').replace(/>/g, '>');
|
|
6011
|
+
};
|
|
6012
|
+
|
|
6013
|
+
var createTextString = function createTextString(selectedData, isNeat) {
|
|
6014
|
+
// Selected like [[0, 1], [0, 1]] of [[0, 3]] is neat; Selected like [[0, 1], [1, 2]] is untidy.
|
|
6015
|
+
// If not isNeat we just return a simple string of concatenated values.
|
|
6016
|
+
if (!isNeat) return selectedData.map(function (row) {
|
|
6017
|
+
return Object.values(row).join('');
|
|
6018
|
+
}).join(''); // If isNeat, we can create tab separated mutti-line text.
|
|
6019
|
+
|
|
6020
|
+
return selectedData.map(function (row) {
|
|
6021
|
+
return Object.values(row).join('\t');
|
|
6022
|
+
}).join('\n');
|
|
6023
|
+
};
|
|
6024
|
+
|
|
6025
|
+
var createHTMLString = function createHTMLString(selectedData, isNeat) {
|
|
6026
|
+
if (!isNeat) return createTextString(selectedData, isNeat); // If isNeat, we can create a HTML table with the selected data.
|
|
6027
|
+
|
|
6028
|
+
var htmlString = '<table>';
|
|
6029
|
+
htmlString += selectedData.map(function (row) {
|
|
6030
|
+
return '<tr>' + Object.values(row).map(function (value) {
|
|
6031
|
+
return '<td>' + htmlSafe(value) + '</td>';
|
|
6032
|
+
}).join('') + '</tr>';
|
|
6033
|
+
}).join('');
|
|
6034
|
+
htmlString += '</table>';
|
|
6035
|
+
return htmlString;
|
|
6036
|
+
};
|
|
6037
|
+
|
|
6077
6038
|
|
|
6078
6039
|
|
|
6079
6040
|
/***/ }),
|
|
@@ -6085,7 +6046,7 @@ var parseData = function parseData(data, mimeType) {
|
|
|
6085
6046
|
/*! namespace exports */
|
|
6086
6047
|
/*! export default [provided] [no usage info] [missing usage info prevents renaming] */
|
|
6087
6048
|
/*! other exports [not provided] [no usage info] */
|
|
6088
|
-
/*! runtime requirements: __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
|
|
6049
|
+
/*! runtime requirements: __webpack_require__, __webpack_require__.r, __webpack_exports__, __webpack_require__.d, __webpack_require__.* */
|
|
6089
6050
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
6090
6051
|
|
|
6091
6052
|
"use strict";
|
|
@@ -6093,6 +6054,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
6093
6054
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
6094
6055
|
/* harmony export */ "default": function() { return /* export default binding */ __WEBPACK_DEFAULT_EXPORT__; }
|
|
6095
6056
|
/* harmony export */ });
|
|
6057
|
+
/* harmony import */ var _events_util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events/util */ "./lib/events/util.js");
|
|
6096
6058
|
/*jslint browser: true, unparam: true, todo: true*/
|
|
6097
6059
|
|
|
6098
6060
|
/*globals HTMLElement: false, Reflect: false, define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/
|
|
@@ -6114,6 +6076,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
6114
6076
|
|
|
6115
6077
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
6116
6078
|
|
|
6079
|
+
|
|
6117
6080
|
/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(self, ctor) {
|
|
6118
6081
|
self.scale = 1;
|
|
6119
6082
|
self.orders = {
|
|
@@ -6318,6 +6281,122 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6318
6281
|
return selectedCells;
|
|
6319
6282
|
};
|
|
6320
6283
|
|
|
6284
|
+
self.copySelectedCellsToClipboard = function (clipboardData) {
|
|
6285
|
+
var selectedData = [];
|
|
6286
|
+
var schema = self.getSchema();
|
|
6287
|
+
var firstRowAsString;
|
|
6288
|
+
var isNeat = true; // Selected like [[0, 1], [0, 1]] of [[0, 3]] is neat; Selected like [[0, 1], [1, 2]] is untidy
|
|
6289
|
+
|
|
6290
|
+
var _iterator3 = _createForOfIteratorHelper(self.selections.entries()),
|
|
6291
|
+
_step3;
|
|
6292
|
+
|
|
6293
|
+
try {
|
|
6294
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
6295
|
+
var _step3$value = _slicedToArray(_step3.value, 2),
|
|
6296
|
+
rowIndex = _step3$value[0],
|
|
6297
|
+
row = _step3$value[1];
|
|
6298
|
+
|
|
6299
|
+
// If no cells are selected for a particular rowIndex the selections array will contain an empty element for that rowIndex.
|
|
6300
|
+
if (!row) continue; // Convert to string for easy comparison to the first row.
|
|
6301
|
+
|
|
6302
|
+
var rowAsString = row.join(',').toString();
|
|
6303
|
+
var rowDict = {};
|
|
6304
|
+
if (!firstRowAsString) firstRowAsString = row.join(',').toString();
|
|
6305
|
+
if (isNeat && rowAsString !== firstRowAsString) isNeat = false;
|
|
6306
|
+
var boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);
|
|
6307
|
+
|
|
6308
|
+
var _iterator4 = _createForOfIteratorHelper(row),
|
|
6309
|
+
_step4;
|
|
6310
|
+
|
|
6311
|
+
try {
|
|
6312
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
6313
|
+
var columnIndex = _step4.value;
|
|
6314
|
+
// If the whole row is selected the columnIndex for the rowHeader is -1.
|
|
6315
|
+
if (columnIndex < 0) continue;
|
|
6316
|
+
var boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(columnIndex);
|
|
6317
|
+
var columnName = schema[boundColumnIndex].name;
|
|
6318
|
+
var value = self.originalData[boundRowIndex][columnName];
|
|
6319
|
+
rowDict[columnName] = value;
|
|
6320
|
+
}
|
|
6321
|
+
} catch (err) {
|
|
6322
|
+
_iterator4.e(err);
|
|
6323
|
+
} finally {
|
|
6324
|
+
_iterator4.f();
|
|
6325
|
+
}
|
|
6326
|
+
|
|
6327
|
+
selectedData.push(rowDict);
|
|
6328
|
+
}
|
|
6329
|
+
} catch (err) {
|
|
6330
|
+
_iterator3.e(err);
|
|
6331
|
+
} finally {
|
|
6332
|
+
_iterator3.f();
|
|
6333
|
+
}
|
|
6334
|
+
|
|
6335
|
+
if (selectedData.length > 0) {
|
|
6336
|
+
var textString = (0,_events_util__WEBPACK_IMPORTED_MODULE_0__.createTextString)(selectedData, isNeat);
|
|
6337
|
+
var htmlString = (0,_events_util__WEBPACK_IMPORTED_MODULE_0__.createHTMLString)(selectedData, isNeat);
|
|
6338
|
+
var copiedData = {
|
|
6339
|
+
'text/plain': textString,
|
|
6340
|
+
'text/html': htmlString,
|
|
6341
|
+
'text/csv': textString,
|
|
6342
|
+
'application/json': JSON.stringify(selectedData)
|
|
6343
|
+
};
|
|
6344
|
+
|
|
6345
|
+
for (var _i2 = 0, _Object$entries = Object.entries(copiedData); _i2 < _Object$entries.length; _i2++) {
|
|
6346
|
+
var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
|
|
6347
|
+
mimeType = _Object$entries$_i[0],
|
|
6348
|
+
data = _Object$entries$_i[1];
|
|
6349
|
+
|
|
6350
|
+
clipboardData.setData(mimeType, data);
|
|
6351
|
+
}
|
|
6352
|
+
}
|
|
6353
|
+
};
|
|
6354
|
+
|
|
6355
|
+
self.clearSelectedCells = function () {
|
|
6356
|
+
var schema = self.getSchema();
|
|
6357
|
+
var affectedCells = [];
|
|
6358
|
+
|
|
6359
|
+
var _iterator5 = _createForOfIteratorHelper(self.selections.entries()),
|
|
6360
|
+
_step5;
|
|
6361
|
+
|
|
6362
|
+
try {
|
|
6363
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
6364
|
+
var _step5$value = _slicedToArray(_step5.value, 2),
|
|
6365
|
+
rowIndex = _step5$value[0],
|
|
6366
|
+
row = _step5$value[1];
|
|
6367
|
+
|
|
6368
|
+
// If no cells are selected for a particular rowIndex the selections array will contain an empty element for that rowIndex.
|
|
6369
|
+
if (!row) continue;
|
|
6370
|
+
var boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);
|
|
6371
|
+
|
|
6372
|
+
var _iterator6 = _createForOfIteratorHelper(row),
|
|
6373
|
+
_step6;
|
|
6374
|
+
|
|
6375
|
+
try {
|
|
6376
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
6377
|
+
var columnIndex = _step6.value;
|
|
6378
|
+
// If the whole row is selected the columnIndex for the rowHeader is -1.
|
|
6379
|
+
if (columnIndex < 0) continue;
|
|
6380
|
+
var boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(columnIndex);
|
|
6381
|
+
var columnName = schema[boundColumnIndex].name;
|
|
6382
|
+
self.viewData[boundRowIndex][columnName] = '';
|
|
6383
|
+
affectedCells.push([rowIndex, columnIndex, boundRowIndex, boundColumnIndex]);
|
|
6384
|
+
}
|
|
6385
|
+
} catch (err) {
|
|
6386
|
+
_iterator6.e(err);
|
|
6387
|
+
} finally {
|
|
6388
|
+
_iterator6.f();
|
|
6389
|
+
}
|
|
6390
|
+
}
|
|
6391
|
+
} catch (err) {
|
|
6392
|
+
_iterator5.e(err);
|
|
6393
|
+
} finally {
|
|
6394
|
+
_iterator5.f();
|
|
6395
|
+
}
|
|
6396
|
+
|
|
6397
|
+
return affectedCells;
|
|
6398
|
+
};
|
|
6399
|
+
|
|
6321
6400
|
self.getBoundRowIndexFromViewRowIndex = function (viewRowIndex) {
|
|
6322
6401
|
if (self.boundRowIndexMap && self.boundRowIndexMap.has(viewRowIndex)) {
|
|
6323
6402
|
return self.boundRowIndexMap.get(viewRowIndex);
|
|
@@ -6394,6 +6473,39 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6394
6473
|
self.orders.rows = fillArray(0, self.originalData.length - 1);
|
|
6395
6474
|
};
|
|
6396
6475
|
|
|
6476
|
+
self.fitSelectedColumns = function (width) {
|
|
6477
|
+
var selectedColumns = self.selections[0];
|
|
6478
|
+
var schema = self.getSchema();
|
|
6479
|
+
|
|
6480
|
+
var _iterator7 = _createForOfIteratorHelper(selectedColumns),
|
|
6481
|
+
_step7;
|
|
6482
|
+
|
|
6483
|
+
try {
|
|
6484
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
6485
|
+
var selectedColumn = _step7.value;
|
|
6486
|
+
|
|
6487
|
+
// Make sure the column is not the row header and that the whole column has in fact been selected.
|
|
6488
|
+
if (selectedColumn >= 0 && self.isColumnSelected(selectedColumn)) {
|
|
6489
|
+
if (isNaN(width)) {
|
|
6490
|
+
var column = schema[self.orders.columns[selectedColumn]];
|
|
6491
|
+
self.fitColumnToValues(column.name);
|
|
6492
|
+
} else {
|
|
6493
|
+
self.sizes.columns[selectedColumn] = width;
|
|
6494
|
+
self.dispatchEvent('resizecolumn', {
|
|
6495
|
+
x: width,
|
|
6496
|
+
y: self.resizingStartingHeight,
|
|
6497
|
+
draggingItem: self.currentCell
|
|
6498
|
+
});
|
|
6499
|
+
}
|
|
6500
|
+
}
|
|
6501
|
+
}
|
|
6502
|
+
} catch (err) {
|
|
6503
|
+
_iterator7.e(err);
|
|
6504
|
+
} finally {
|
|
6505
|
+
_iterator7.f();
|
|
6506
|
+
}
|
|
6507
|
+
};
|
|
6508
|
+
|
|
6397
6509
|
self.getVisibleSchema = function () {
|
|
6398
6510
|
return self.getSchema().filter(function (col) {
|
|
6399
6511
|
return !col.hidden;
|
|
@@ -6460,9 +6572,9 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6460
6572
|
}); // Apply filtering
|
|
6461
6573
|
|
|
6462
6574
|
var _loop = function _loop() {
|
|
6463
|
-
var _Object$
|
|
6464
|
-
headerName = _Object$
|
|
6465
|
-
filterText = _Object$
|
|
6575
|
+
var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i3], 2),
|
|
6576
|
+
headerName = _Object$entries2$_i[0],
|
|
6577
|
+
filterText = _Object$entries2$_i[1];
|
|
6466
6578
|
|
|
6467
6579
|
var header = self.getHeaderByName(headerName);
|
|
6468
6580
|
|
|
@@ -6481,19 +6593,19 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6481
6593
|
});
|
|
6482
6594
|
};
|
|
6483
6595
|
|
|
6484
|
-
for (var
|
|
6596
|
+
for (var _i3 = 0, _Object$entries2 = Object.entries(self.columnFilters); _i3 < _Object$entries2.length; _i3++) {
|
|
6485
6597
|
var _ret = _loop();
|
|
6486
6598
|
|
|
6487
6599
|
if (_ret === "continue") continue;
|
|
6488
6600
|
} // Apply sorting
|
|
6489
6601
|
|
|
6490
6602
|
|
|
6491
|
-
var
|
|
6492
|
-
|
|
6603
|
+
var _iterator8 = _createForOfIteratorHelper(self.orderings.columns),
|
|
6604
|
+
_step8;
|
|
6493
6605
|
|
|
6494
6606
|
try {
|
|
6495
6607
|
var _loop2 = function _loop2() {
|
|
6496
|
-
var column =
|
|
6608
|
+
var column = _step8.value;
|
|
6497
6609
|
var sortFn = column.sortFunction(column.orderBy, column.orderDirection);
|
|
6498
6610
|
newViewData.sort(function (_ref7, _ref8) {
|
|
6499
6611
|
var _ref9 = _slicedToArray(_ref7, 1),
|
|
@@ -6508,13 +6620,13 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6508
6620
|
});
|
|
6509
6621
|
};
|
|
6510
6622
|
|
|
6511
|
-
for (
|
|
6623
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
6512
6624
|
_loop2();
|
|
6513
6625
|
}
|
|
6514
6626
|
} catch (err) {
|
|
6515
|
-
|
|
6627
|
+
_iterator8.e(err);
|
|
6516
6628
|
} finally {
|
|
6517
|
-
|
|
6629
|
+
_iterator8.f();
|
|
6518
6630
|
}
|
|
6519
6631
|
|
|
6520
6632
|
return {
|
|
@@ -6668,6 +6780,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6668
6780
|
self.controlInput.removeEventListener('keypress', self.keypress, false);
|
|
6669
6781
|
self.controlInput.removeEventListener('keyup', self.keyup, false);
|
|
6670
6782
|
self.controlInput.removeEventListener('keydown', self.keydown, false);
|
|
6783
|
+
document.body.removeEventListener('mousemove', self.mousemove);
|
|
6671
6784
|
window.removeEventListener('resize', self.resize);
|
|
6672
6785
|
|
|
6673
6786
|
if (self.observer && self.observer.disconnect) {
|
|
@@ -6844,6 +6957,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
6844
6957
|
};
|
|
6845
6958
|
Object.keys(self.style).forEach(self.parseStyleValue);
|
|
6846
6959
|
self.intf.moveSelection = self.moveSelection;
|
|
6960
|
+
self.intf.deleteSelectedData = self.deleteSelectedData;
|
|
6847
6961
|
self.intf.moveTo = self.moveTo;
|
|
6848
6962
|
self.intf.addEventListener = self.addEventListener;
|
|
6849
6963
|
self.intf.removeEventListener = self.removeEventListener;
|
|
@@ -8788,7 +8902,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8788
8902
|
return;
|
|
8789
8903
|
}
|
|
8790
8904
|
|
|
8791
|
-
|
|
8905
|
+
var columnIndex = name === 'cornerCell' ? -1 : self.getHeaderByName(name).index;
|
|
8906
|
+
var newSize = Math.max(self.findColumnMaxTextLength(name), self.style.minColumnWidth);
|
|
8907
|
+
self.sizes.columns[columnIndex] = newSize;
|
|
8908
|
+
self.dispatchEvent('resizecolumn', {
|
|
8909
|
+
x: newSize,
|
|
8910
|
+
y: self.resizingStartingHeight,
|
|
8911
|
+
draggingItem: self.currentCell
|
|
8912
|
+
});
|
|
8792
8913
|
|
|
8793
8914
|
if (!internal) {
|
|
8794
8915
|
self.resize();
|
|
@@ -8909,6 +9030,29 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8909
9030
|
});
|
|
8910
9031
|
self.selections = sel;
|
|
8911
9032
|
};
|
|
9033
|
+
/**
|
|
9034
|
+
* Deletes currently selected data.
|
|
9035
|
+
* @memberof canvasDatagrid
|
|
9036
|
+
* @name deleteSelectedData
|
|
9037
|
+
* @method
|
|
9038
|
+
* @param {boolean} dontDraw Suppress the draw method after the selection change.
|
|
9039
|
+
*/
|
|
9040
|
+
|
|
9041
|
+
|
|
9042
|
+
self.deleteSelectedData = function (dontDraw) {
|
|
9043
|
+
var affectedCells = self.clearSelectedCells();
|
|
9044
|
+
self.dispatchEvent('afterdelete', {
|
|
9045
|
+
cells: affectedCells
|
|
9046
|
+
});
|
|
9047
|
+
|
|
9048
|
+
if (dontDraw) {
|
|
9049
|
+
return;
|
|
9050
|
+
}
|
|
9051
|
+
|
|
9052
|
+
requestAnimationFrame(function () {
|
|
9053
|
+
return self.draw();
|
|
9054
|
+
});
|
|
9055
|
+
};
|
|
8912
9056
|
/**
|
|
8913
9057
|
* 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
9058
|
* @memberof canvasDatagrid
|