@revolist/revogrid 4.23.12 → 4.23.14
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/cjs/{cell-renderer-DfUCisis.js → cell-renderer-Dcz022q7.js} +5 -23
- package/dist/cjs/{column.drag.plugin-BRraLvz3.js → column.drag.plugin-BGLbi1zS.js} +8 -37
- package/dist/cjs/{column.service-BNWNiJW3.js → column.service-C1Qvcf5l.js} +23 -62
- package/dist/cjs/{header-cell-renderer-DyjOxArm.js → header-cell-renderer-vVr4IWNV.js} +1 -1
- package/dist/cjs/index.cjs.js +4 -5
- package/dist/cjs/revo-grid.cjs.entry.js +5 -5
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +4 -40
- package/dist/cjs/revogr-data_4.cjs.entry.js +5 -13
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +67 -32
- package/dist/collection/components/data/column.service.js +23 -62
- package/dist/collection/components/data/row-renderer.js +2 -15
- package/dist/collection/components/overlay/revogr-overlay-selection.js +7 -27
- package/dist/collection/components/revoGrid/revo-grid.js +7 -14
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +2 -10
- package/dist/collection/plugins/filter/filter.panel.js +66 -31
- package/dist/collection/plugins/filter/filter.plugin.js +4 -4
- package/dist/collection/plugins/filter/filter.style.css +18 -34
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +2 -7
- package/dist/collection/plugins/moveColumn/column.drag.plugin.js +2 -30
- package/dist/collection/serve/controller.js +0 -1
- package/dist/esm/{cell-renderer-CLTRlCa5.js → cell-renderer-BtN-NGCk.js} +5 -23
- package/dist/esm/{column.drag.plugin-V9DDE3mU.js → column.drag.plugin-4Ixr4ijU.js} +9 -37
- package/dist/esm/{column.service-C6hByxPy.js → column.service-CC_SD8W3.js} +23 -62
- package/dist/esm/{header-cell-renderer-BMmXRsd_.js → header-cell-renderer-B-LX2sgu.js} +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/revo-grid.entry.js +5 -5
- package/dist/esm/revogr-attribution_7.entry.js +4 -40
- package/dist/esm/revogr-data_4.entry.js +5 -13
- package/dist/esm/revogr-filter-panel.entry.js +67 -32
- package/dist/revo-grid/{cell-renderer-CLTRlCa5.js → cell-renderer-BtN-NGCk.js} +5 -23
- package/dist/revo-grid/{column.drag.plugin-V9DDE3mU.js → column.drag.plugin-4Ixr4ijU.js} +9 -37
- package/dist/revo-grid/{column.service-C6hByxPy.js → column.service-CC_SD8W3.js} +23 -62
- package/dist/revo-grid/{header-cell-renderer-BMmXRsd_.js → header-cell-renderer-B-LX2sgu.js} +1 -1
- package/dist/revo-grid/index.esm.js +5 -5
- package/dist/revo-grid/revo-grid.entry.js +5 -5
- package/dist/revo-grid/revogr-attribution_7.entry.js +4 -40
- package/dist/revo-grid/revogr-data_4.entry.js +5 -13
- package/dist/revo-grid/revogr-filter-panel.entry.js +67 -32
- package/dist/types/components/data/column.service.d.ts +1 -10
- package/dist/types/components/data/row-renderer.d.ts +1 -1
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +3 -4
- package/dist/types/components/revoGrid/revo-grid.d.ts +4 -4
- package/dist/types/components.d.ts +14 -14
- package/dist/types/plugins/filter/filter.panel.d.ts +4 -0
- package/dist/types/plugins/filter/filter.plugin.d.ts +0 -1
- package/dist/types/plugins/filter/filter.types.d.ts +0 -1
- package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +0 -4
- package/dist/types/types/interfaces.d.ts +0 -8
- package/hydrate/index.js +107 -201
- package/hydrate/index.mjs +107 -201
- package/package.json +1 -1
- package/readme.md +1 -20
- package/standalone/column.service.js +1 -1
- package/standalone/index.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-data2.js +1 -1
- package/standalone/revogr-filter-panel.js +1 -1
- package/standalone/revogr-overlay-selection2.js +1 -1
- package/standalone/revogr-viewport-scroll2.js +1 -1
- package/dist/collection/components/overlay/clipboard.utils.js +0 -26
- package/dist/types/components/overlay/clipboard.utils.d.ts +0 -3
package/hydrate/index.mjs
CHANGED
|
@@ -7395,7 +7395,7 @@ function isFilterBtn(e) {
|
|
|
7395
7395
|
}
|
|
7396
7396
|
})();
|
|
7397
7397
|
|
|
7398
|
-
const filterStyleCss = () => `.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#4545ff;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037}.revo-button.red{background-color:#E0662E}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.outline{border:1px solid #dbdbdb;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme^=dark] .revo-button.outline{border:1px solid #404040;color:#d8d8d8}revogr-filter-panel{
|
|
7398
|
+
const filterStyleCss = () => `.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#4545ff;height:32px;line-height:32px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#009037}.revo-button.red{background-color:#E0662E}.revo-button:disabled,.revo-button[disabled]{cursor:not-allowed !important;filter:opacity(0.35) !important}.revo-button.outline{border:1px solid #dbdbdb;line-height:30px;background:none;color:#000;box-shadow:none}revo-grid[theme^=dark] .revo-button.outline{border:1px solid #404040;color:#d8d8d8}revogr-filter-panel{display:block}revogr-filter-panel .filter-panel-dialog{position:fixed;top:0;left:0;z-index:100;max-height:calc(100vh - 16px);overflow:auto;opacity:1;transform:none;background-color:var(--revo-grid-filter-panel-bg, #fff);border:1px solid var(--revo-grid-filter-panel-border, #cecece);transform-origin:62px 0px;box-shadow:0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));padding:10px;border-radius:8px;margin:0;min-width:220px;text-align:left;animation:revogr-filter-panel-open 140ms cubic-bezier(0.2, 0, 0, 1)}revogr-filter-panel .filter-panel-dialog::backdrop{background:transparent}revogr-filter-panel .filter-panel-dialog .filter-holder>div{display:flex;flex-direction:column}revogr-filter-panel .filter-panel-dialog label{font-size:13px;display:block;padding:8px 0}revogr-filter-panel .filter-panel-dialog select{width:100%}revogr-filter-panel .filter-panel-dialog input[type=text]{border:0;min-height:34px;margin:5px 0;background:var(--revo-grid-filter-panel-input-bg, #f3f3f3);border-radius:5px;padding:0 10px;box-sizing:border-box;width:100%}revogr-filter-panel .filter-panel-dialog .filter-actions{text-align:right;margin-right:-5px}revogr-filter-panel .filter-panel-dialog .filter-actions button{margin-top:10px;margin-right:5px}@keyframes revogr-filter-panel-open{from{opacity:0;transform:translateY(-4px) scale(0.98)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){revogr-filter-panel .filter-panel-dialog{animation:none}}.rgHeaderCell:hover .rv-filter{transition:opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.rgHeaderCell:hover .rv-filter,.rgHeaderCell .rv-filter.active{opacity:1}.rgHeaderCell .rv-filter{height:24px;width:24px;background:none;border:0;opacity:0;visibility:visible;cursor:pointer;border-radius:4px}.rgHeaderCell .rv-filter.active{color:#10224a}.rgHeaderCell .rv-filter .filter-img{color:gray;width:11px}.select-css{display:block;font-family:sans-serif;line-height:1.3;padding:0.6em 1.4em 0.5em 0.8em;width:100%;max-width:100%;box-sizing:border-box;margin:0;border:1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);box-shadow:transparent;border-radius:0.5em;appearance:none;background-color:var(--revo-grid-filter-panel-input-bg, #f3f3f3);background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat, repeat;background-position:right 0.7em top 50%, 0 0;background-size:0.65em auto, 100%;}.select-css::-ms-expand{display:none}.select-css:hover{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.select-css:focus{border-color:var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);box-shadow:0 0 1px 3px rgba(59, 153, 252, 0.7);box-shadow:0 0 0 3px -moz-mac-focusring;outline:none}.select-css option{font-weight:normal}.select-css:disabled,.select-css[aria-disabled=true]{color:gray;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E"), linear-gradient(to bottom, #ffffff 0%, #ffffff 100%)}.select-css:disabled:hover,.select-css[aria-disabled=true]{border-color:var(--revo-grid-filter-panel-select-border, #d9d9d9)}.multi-filter-list{margin-top:5px;margin-bottom:5px}.multi-filter-list div{white-space:nowrap}.multi-filter-list .multi-filter-list-action{display:flex;justify-content:space-between;align-items:center}.multi-filter-list .and-or-button{margin:0 0 0 10px;min-width:58px;cursor:pointer}.multi-filter-list .trash-button{margin:0 0 -2px 6px;cursor:pointer;width:22px;height:100%;font-size:16px}.multi-filter-list .trash-button .trash-img{width:1em}.add-filter-divider{display:block;margin:0 -10px 10px -10px;border-bottom:1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);height:10px}.select-input{display:flex;justify-content:space-between;align-items:center}`;
|
|
7399
7399
|
|
|
7400
7400
|
const defaultType = 'none';
|
|
7401
7401
|
const FILTER_LIST_CLASS = 'multi-filter-list';
|
|
@@ -7506,24 +7506,56 @@ class FilterPanel {
|
|
|
7506
7506
|
if (index !== this.filterItems[prop].length - 1) {
|
|
7507
7507
|
andOrButton = (hAsync("div", { onClick: () => this.toggleFilterAndOr(filter.id) }, hAsync(AndOrButton, { text: filter.relation === 'and' ? capts.and : capts.or })));
|
|
7508
7508
|
}
|
|
7509
|
-
|
|
7510
|
-
return (hAsync("div", { key: filter.id, class: FILTER_LIST_CLASS }, hAsync("div", { class: "multi-filter-list-row" }, hAsync("div", { class: { 'select-input': true } }, hAsync("select", { class: "select-css select-filter", onChange: e => this.onFilterTypeChange(e, prop, index) }, this.renderSelectOptions(this.filterItems[prop][index].type, true)), extra ? hAsync("div", { class: "filter-extra" }, extra) : ''), hAsync("div", { class: FILTER_LIST_CLASS_ACTION }, andOrButton, hAsync("div", { onClick: () => this.onRemoveFilter(filter.id) }, hAsync(TrashButton, null))))));
|
|
7509
|
+
return (hAsync("div", { key: filter.id, class: FILTER_LIST_CLASS }, hAsync("div", { class: { 'select-input': true } }, hAsync("select", { class: "select-css select-filter", onChange: e => this.onFilterTypeChange(e, prop, index) }, this.renderSelectOptions(this.filterItems[prop][index].type, true)), hAsync("div", { class: FILTER_LIST_CLASS_ACTION }, andOrButton), hAsync("div", { onClick: () => this.onRemoveFilter(filter.id) }, hAsync(TrashButton, null))), hAsync("div", null, this.renderExtra(prop, index))));
|
|
7511
7510
|
}), propFilters.filter(f => !f.hidden).length > 0 ? hAsync("div", { class: "add-filter-divider" }) : ''));
|
|
7512
7511
|
}
|
|
7512
|
+
componentDidRender() {
|
|
7513
|
+
this.syncDialog();
|
|
7514
|
+
}
|
|
7515
|
+
syncDialog() {
|
|
7516
|
+
if (!this.dialog) {
|
|
7517
|
+
return;
|
|
7518
|
+
}
|
|
7519
|
+
if (!this.changes) {
|
|
7520
|
+
if (this.dialog.open) {
|
|
7521
|
+
this.dialog.close();
|
|
7522
|
+
}
|
|
7523
|
+
return;
|
|
7524
|
+
}
|
|
7525
|
+
if (!this.dialog.open) {
|
|
7526
|
+
this.dialog.show();
|
|
7527
|
+
}
|
|
7528
|
+
if (this.changes.autoCorrect !== false) {
|
|
7529
|
+
requestAnimationFrame(() => this.autoCorrect(this.dialog));
|
|
7530
|
+
}
|
|
7531
|
+
}
|
|
7513
7532
|
autoCorrect(el) {
|
|
7514
|
-
var _a, _b;
|
|
7515
7533
|
if (!el) {
|
|
7516
7534
|
return;
|
|
7517
7535
|
}
|
|
7518
|
-
const
|
|
7519
|
-
|
|
7536
|
+
const pos = el.getBoundingClientRect();
|
|
7537
|
+
const maxLeft = Math.max(0, window.innerWidth - pos.width);
|
|
7538
|
+
const maxTop = Math.max(0, window.innerHeight - pos.height);
|
|
7539
|
+
if (pos.left > maxLeft) {
|
|
7540
|
+
el.style.left = `${maxLeft}px`;
|
|
7541
|
+
}
|
|
7542
|
+
if (pos.top > maxTop) {
|
|
7543
|
+
el.style.top = `${maxTop}px`;
|
|
7544
|
+
}
|
|
7545
|
+
}
|
|
7546
|
+
onDialogMouseDown(e) {
|
|
7547
|
+
if (!this.closeOnOutsideClick ||
|
|
7548
|
+
e.target !== this.dialog ||
|
|
7549
|
+
!this.dialog) {
|
|
7520
7550
|
return;
|
|
7521
7551
|
}
|
|
7522
|
-
const
|
|
7523
|
-
const
|
|
7524
|
-
|
|
7525
|
-
|
|
7526
|
-
|
|
7552
|
+
const rect = this.dialog.getBoundingClientRect();
|
|
7553
|
+
const isInside = e.clientX >= rect.left &&
|
|
7554
|
+
e.clientX <= rect.right &&
|
|
7555
|
+
e.clientY >= rect.top &&
|
|
7556
|
+
e.clientY <= rect.bottom;
|
|
7557
|
+
if (!isInside) {
|
|
7558
|
+
this.onCancel();
|
|
7527
7559
|
}
|
|
7528
7560
|
}
|
|
7529
7561
|
onFilterTypeChange(e, prop, index) {
|
|
@@ -7724,30 +7756,33 @@ class FilterPanel {
|
|
|
7724
7756
|
} }));
|
|
7725
7757
|
}
|
|
7726
7758
|
render() {
|
|
7727
|
-
var _a, _b, _c, _d, _e;
|
|
7728
|
-
if (!this.changes) {
|
|
7729
|
-
return hAsync(Host, { style: { display: 'none' } });
|
|
7730
|
-
}
|
|
7759
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
7731
7760
|
const style = {
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
top: `${this.changes.y}px`,
|
|
7761
|
+
left: `${(_b = (_a = this.changes) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0}px`,
|
|
7762
|
+
top: `${(_d = (_c = this.changes) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0}px`,
|
|
7735
7763
|
};
|
|
7736
7764
|
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
7737
|
-
return (hAsync(Host, { style: style, ref: el => {
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
}
|
|
7741
|
-
hAsync("
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
|
|
7746
|
-
|
|
7747
|
-
|
|
7748
|
-
hAsync("
|
|
7749
|
-
hAsync("
|
|
7750
|
-
|
|
7765
|
+
return (hAsync(Host, { key: '9fb424017d080876ff7796237917b4f41f617fe0' }, hAsync("dialog", { key: '37b9f870b95f6fe1bd7be359dd7b77ef196e896e', class: "filter-panel-dialog", style: style, ref: el => (this.dialog = el), onCancel: e => {
|
|
7766
|
+
e.preventDefault();
|
|
7767
|
+
this.onCancel();
|
|
7768
|
+
}, onMouseDown: e => this.onDialogMouseDown(e) }, this.changes && [
|
|
7769
|
+
hAsync("slot", { key: '76ec505a92d0a7c1ae0bbb5f4cac63555f3416be', slot: "header" }),
|
|
7770
|
+
((_f = (_e = this.changes).extraContent) === null || _f === void 0 ? void 0 : _f.call(_e, this.changes)) || '',
|
|
7771
|
+
((_g = this.changes) === null || _g === void 0 ? void 0 : _g.hideDefaultFilters) !== true && [
|
|
7772
|
+
hAsync("label", { key: 'c6fd82c95f6005f286c7bc90de34956128a83246' }, capts.title),
|
|
7773
|
+
hAsync("div", { key: '5e7dac36ad79ba1b6072a0053b30aa384ade0dde', class: "filter-holder" }, this.getFilterItemsList()),
|
|
7774
|
+
hAsync("div", { key: 'd9b6103edbd138d4db845745686ee4c847310a66', class: "add-filter" }, hAsync("select", { key: 'c1b321f2d19458f95ab3f9188d83d94bebdb688e', id: FILTER_ID, class: "select-css", onChange: e => this.onAddNewFilter(e) }, this.renderSelectOptions(this.currentFilterType))),
|
|
7775
|
+
],
|
|
7776
|
+
hAsync("slot", { key: '1571dcbc5c57651deb42a4046272ff60fa74f5a7' }),
|
|
7777
|
+
hAsync("div", { key: '4aa7dee532336b084542df0209291b4c60378b49', class: "filter-actions" }, this.disableDynamicFiltering && [
|
|
7778
|
+
hAsync("button", { key: '4c1b3054cd1bb7f46877592f00f6634d0f7ecafa', id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, capts.save),
|
|
7779
|
+
hAsync("button", { key: 'f31a568c89be18b1a854cdd7d4726e01db24e338', id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.cancel),
|
|
7780
|
+
], !this.disableDynamicFiltering && [
|
|
7781
|
+
hAsync("button", { key: '5d40e8b1f13f94cff4f5a2e2aefeee8861104a9d', id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.ok),
|
|
7782
|
+
hAsync("button", { key: '67eac3abd16f6f6e2ed7089dcfb0d05524ddb7df', id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, capts.reset),
|
|
7783
|
+
]),
|
|
7784
|
+
hAsync("slot", { key: 'b27a9bb3ef814e1e09dca14eda3e332ff34c654c', slot: "footer" }),
|
|
7785
|
+
])));
|
|
7751
7786
|
}
|
|
7752
7787
|
get element() { return getElement(this); }
|
|
7753
7788
|
static get style() { return filterStyleCss(); }
|
|
@@ -13047,82 +13082,43 @@ class ColumnService {
|
|
|
13047
13082
|
mapping,
|
|
13048
13083
|
};
|
|
13049
13084
|
}
|
|
13050
|
-
getTransformedDataToApply(
|
|
13085
|
+
getTransformedDataToApply(start, data) {
|
|
13051
13086
|
const changed = {};
|
|
13052
13087
|
const copyRowLength = data.length;
|
|
13053
|
-
if (!copyRowLength) {
|
|
13054
|
-
return {
|
|
13055
|
-
changed,
|
|
13056
|
-
range: null,
|
|
13057
|
-
};
|
|
13058
|
-
}
|
|
13059
13088
|
const colLength = this.columns.length;
|
|
13060
13089
|
const rowLength = this.dataStore.get('items').length;
|
|
13061
|
-
const bounds = this.getDataApplyBounds(start, targetRange, copyRowLength, rowLength, colLength);
|
|
13062
|
-
if (!bounds) {
|
|
13063
|
-
return {
|
|
13064
|
-
changed,
|
|
13065
|
-
range: null,
|
|
13066
|
-
};
|
|
13067
|
-
}
|
|
13068
|
-
const { startRow, startCol, endRow } = bounds;
|
|
13069
|
-
let maxCol = startCol - 1;
|
|
13070
|
-
let lastRow = startRow - 1;
|
|
13071
13090
|
// rows
|
|
13072
|
-
|
|
13091
|
+
let rowIndex = start.y;
|
|
13092
|
+
let maxCol = 0;
|
|
13093
|
+
for (let i = 0; rowIndex < rowLength && i < copyRowLength; rowIndex++, i++) {
|
|
13073
13094
|
// copy original data link
|
|
13074
13095
|
const copyRow = data[i % copyRowLength];
|
|
13075
13096
|
const copyColLength = (copyRow === null || copyRow === void 0 ? void 0 : copyRow.length) || 0;
|
|
13076
|
-
|
|
13077
|
-
|
|
13097
|
+
// columns
|
|
13098
|
+
let colIndex = start.x;
|
|
13099
|
+
for (let j = 0; colIndex < colLength && j < copyColLength; colIndex++, j++) {
|
|
13100
|
+
const p = this.columns[colIndex].prop;
|
|
13101
|
+
const currentCol = j % colLength;
|
|
13102
|
+
/** if can write */
|
|
13103
|
+
if (!this.isReadOnly(rowIndex, colIndex)) {
|
|
13104
|
+
/** to show before save */
|
|
13105
|
+
if (!changed[rowIndex]) {
|
|
13106
|
+
changed[rowIndex] = {};
|
|
13107
|
+
}
|
|
13108
|
+
changed[rowIndex][p] = copyRow[currentCol];
|
|
13109
|
+
}
|
|
13078
13110
|
}
|
|
13079
|
-
maxCol = Math.max(maxCol,
|
|
13080
|
-
bounds,
|
|
13081
|
-
copyColLength,
|
|
13082
|
-
copyRow,
|
|
13083
|
-
rowIndex,
|
|
13084
|
-
start,
|
|
13085
|
-
targetRange,
|
|
13086
|
-
}));
|
|
13087
|
-
lastRow = rowIndex;
|
|
13111
|
+
maxCol = Math.max(maxCol, colIndex - 1);
|
|
13088
13112
|
}
|
|
13113
|
+
const range = getRange(start, {
|
|
13114
|
+
y: rowIndex - 1,
|
|
13115
|
+
x: maxCol,
|
|
13116
|
+
});
|
|
13089
13117
|
return {
|
|
13090
13118
|
changed,
|
|
13091
|
-
range
|
|
13119
|
+
range,
|
|
13092
13120
|
};
|
|
13093
13121
|
}
|
|
13094
|
-
getDataApplyBounds(start, targetRange, copyRowLength, rowLength, colLength) {
|
|
13095
|
-
var _a, _b, _c;
|
|
13096
|
-
const startRow = (_a = targetRange === null || targetRange === void 0 ? void 0 : targetRange.y) !== null && _a !== void 0 ? _a : start.y;
|
|
13097
|
-
const startCol = (_b = targetRange === null || targetRange === void 0 ? void 0 : targetRange.x) !== null && _b !== void 0 ? _b : start.x;
|
|
13098
|
-
const endRow = Math.min(rowLength - 1, (_c = targetRange === null || targetRange === void 0 ? void 0 : targetRange.y1) !== null && _c !== void 0 ? _c : start.y + copyRowLength - 1);
|
|
13099
|
-
if (endRow < startRow || startCol >= colLength) {
|
|
13100
|
-
return null;
|
|
13101
|
-
}
|
|
13102
|
-
return { startRow, startCol, endRow, colLength };
|
|
13103
|
-
}
|
|
13104
|
-
applyClipboardRow(changed, { bounds, copyColLength, copyRow, rowIndex, start, targetRange, }) {
|
|
13105
|
-
var _a;
|
|
13106
|
-
const endCol = Math.min(bounds.colLength - 1, (_a = targetRange === null || targetRange === void 0 ? void 0 : targetRange.x1) !== null && _a !== void 0 ? _a : start.x + copyColLength - 1);
|
|
13107
|
-
for (let colIndex = bounds.startCol, j = 0; colIndex <= endCol; colIndex++, j++) {
|
|
13108
|
-
if (this.isReadOnly(rowIndex, colIndex)) {
|
|
13109
|
-
continue;
|
|
13110
|
-
}
|
|
13111
|
-
const prop = this.columns[colIndex].prop;
|
|
13112
|
-
changed[rowIndex] = changed[rowIndex] || {};
|
|
13113
|
-
changed[rowIndex][prop] = copyRow[j % copyColLength];
|
|
13114
|
-
}
|
|
13115
|
-
return endCol;
|
|
13116
|
-
}
|
|
13117
|
-
getAppliedRange({ startRow, startCol }, lastRow, maxCol) {
|
|
13118
|
-
if (lastRow < startRow || maxCol < startCol) {
|
|
13119
|
-
return null;
|
|
13120
|
-
}
|
|
13121
|
-
return getRange({ x: startCol, y: startRow }, {
|
|
13122
|
-
y: lastRow,
|
|
13123
|
-
x: maxCol,
|
|
13124
|
-
});
|
|
13125
|
-
}
|
|
13126
13122
|
getRangeStaticData(d, value) {
|
|
13127
13123
|
const changed = {};
|
|
13128
13124
|
// rows
|
|
@@ -13789,30 +13785,6 @@ class AutoFillService {
|
|
|
13789
13785
|
}
|
|
13790
13786
|
}
|
|
13791
13787
|
|
|
13792
|
-
function getRangeFillClipboardData(data, useClipboard) {
|
|
13793
|
-
var _a;
|
|
13794
|
-
if (!isClipboardRangeFillEnabled(useClipboard)) {
|
|
13795
|
-
return null;
|
|
13796
|
-
}
|
|
13797
|
-
const normalized = trimTrailingEmptyClipboardRows(data);
|
|
13798
|
-
return normalized.length === 1 && ((_a = normalized[0]) === null || _a === void 0 ? void 0 : _a.length) === 1
|
|
13799
|
-
? normalized
|
|
13800
|
-
: null;
|
|
13801
|
-
}
|
|
13802
|
-
function isClipboardRangeFillEnabled(useClipboard) {
|
|
13803
|
-
return (typeof useClipboard === 'object' && useClipboard.rangeFill === true);
|
|
13804
|
-
}
|
|
13805
|
-
function trimTrailingEmptyClipboardRows(data) {
|
|
13806
|
-
const rows = [...data];
|
|
13807
|
-
while (rows.length > 1 && isEmptyClipboardRow(rows[rows.length - 1])) {
|
|
13808
|
-
rows.pop();
|
|
13809
|
-
}
|
|
13810
|
-
return rows;
|
|
13811
|
-
}
|
|
13812
|
-
function isEmptyClipboardRow(row) {
|
|
13813
|
-
return !row || row.every(cell => cell === '');
|
|
13814
|
-
}
|
|
13815
|
-
|
|
13816
13788
|
const revogrOverlayStyleCss = () => `revogr-overlay-selection{display:block;position:relative;width:100%}revogr-overlay-selection .autofill-handle{position:absolute;width:14px;height:14px;margin-left:-13px;margin-top:-13px;z-index:10;cursor:crosshair}revogr-overlay-selection .autofill-handle::before{content:"";position:absolute;right:0;bottom:0;width:10px;height:10px;background:#0d63e8;border:1px solid white;box-sizing:border-box}revogr-overlay-selection.mobile .autofill-handle{position:absolute;width:30px;height:30px;margin-left:-29px;margin-top:-29px;z-index:10;cursor:crosshair}revogr-overlay-selection.mobile .autofill-handle::before{content:"";position:absolute;right:0;bottom:0;width:12px;height:12px;background:#0d63e8;border:1px solid white;box-sizing:border-box}revogr-overlay-selection .selection-border-range{position:absolute;pointer-events:none;z-index:9;box-shadow:-1px 0 0 #0d63e8 inset, 1px 0 0 #0d63e8 inset, 0 -1px 0 #0d63e8 inset, 0 1px 0 #0d63e8 inset}revogr-overlay-selection .selection-border-range .range-handlers{height:100%;background-color:transparent;width:75%;max-width:50px;min-width:20px;left:50%;transform:translateX(-50%);position:absolute}revogr-overlay-selection .selection-border-range .range-handlers>span{pointer-events:auto;height:20px;width:20px;position:absolute;left:50%;transform:translateX(-50%)}revogr-overlay-selection .selection-border-range .range-handlers>span:before,revogr-overlay-selection .selection-border-range .range-handlers>span:after{position:absolute;border-radius:5px;width:15px;height:5px;left:50%;transform:translateX(-50%);background-color:rgba(0, 0, 0, 0.2)}revogr-overlay-selection .selection-border-range .range-handlers>span:first-child{top:-7px}revogr-overlay-selection .selection-border-range .range-handlers>span:first-child:before{content:"";top:0}revogr-overlay-selection .selection-border-range .range-handlers>span:last-child{bottom:-7px}revogr-overlay-selection .selection-border-range .range-handlers>span:last-child:after{content:"";bottom:0}revogr-overlay-selection revogr-edit{z-index:10}`;
|
|
13817
13789
|
|
|
13818
13790
|
/**
|
|
@@ -14063,9 +14035,9 @@ class OverlaySelection {
|
|
|
14063
14035
|
nodes.push(hAsync("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, rowType: this.types.rowType, onRowdragstartinit: e => this.rowDragStart(e) }));
|
|
14064
14036
|
}
|
|
14065
14037
|
}
|
|
14066
|
-
return (hAsync(Host, { key: '
|
|
14038
|
+
return (hAsync(Host, { key: 'd936e8452e84c7a25ecd6502e929f1a5af69467f', class: { mobile: this.isMobileDevice }, onDblClick: (e) => this.onElementDblClick(e), onMouseDown: (e) => this.onElementMouseDown(e), onTouchStart: (e) => this.onElementMouseDown(e, true), onCloseedit: (e) => this.closeEdit(e),
|
|
14067
14039
|
// it's done to be able to throw events from different levels, not just from editor
|
|
14068
|
-
onCelledit: (e) => this.onEditCell(e) }, nodes, hAsync("slot", { key: '
|
|
14040
|
+
onCelledit: (e) => this.onEditCell(e) }, nodes, hAsync("slot", { key: 'cd3525d404aa44fd8d06e7fc459777acb8a9d585', name: "data" })));
|
|
14069
14041
|
}
|
|
14070
14042
|
/**
|
|
14071
14043
|
* Executes the focus operation on the specified range of cells.
|
|
@@ -14230,25 +14202,13 @@ class OverlaySelection {
|
|
|
14230
14202
|
if (!focus || isEditing) {
|
|
14231
14203
|
return;
|
|
14232
14204
|
}
|
|
14233
|
-
|
|
14234
|
-
const targetRange = rangeFillData
|
|
14235
|
-
? this.getClipboardPasteTargetRange()
|
|
14236
|
-
: null;
|
|
14237
|
-
let { changed, range } = this.columnService.getTransformedDataToApply({
|
|
14238
|
-
start: focus,
|
|
14239
|
-
data: rangeFillData || data,
|
|
14240
|
-
targetRange,
|
|
14241
|
-
});
|
|
14205
|
+
let { changed, range } = this.columnService.getTransformedDataToApply(focus, data);
|
|
14242
14206
|
const { defaultPrevented: canPaste } = this.rangeClipboardPaste.emit(Object.assign({ data: changed, models: collectModelsOfRange(changed, this.dataStore), range }, this.types));
|
|
14243
14207
|
if (canPaste) {
|
|
14244
14208
|
return;
|
|
14245
14209
|
}
|
|
14246
14210
|
(_a = this.autoFillService) === null || _a === void 0 ? void 0 : _a.onRangeApply(changed, range, range);
|
|
14247
14211
|
}
|
|
14248
|
-
getClipboardPasteTargetRange() {
|
|
14249
|
-
const range = this.selectionStore.get('range');
|
|
14250
|
-
return range && !isRangeSingleCell(range) ? range : null;
|
|
14251
|
-
}
|
|
14252
14212
|
async focusNext() {
|
|
14253
14213
|
var _a;
|
|
14254
14214
|
const canFocus = await ((_a = this.keyboardService) === null || _a === void 0 ? void 0 : _a.keyChangeSelection(new KeyboardEvent('keydown', {
|
|
@@ -15780,7 +15740,8 @@ class FilterPlugin extends BasePlugin {
|
|
|
15780
15740
|
async headerclick(e) {
|
|
15781
15741
|
var _a, _b;
|
|
15782
15742
|
const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
|
|
15783
|
-
|
|
15743
|
+
const filterButton = isFilterBtn(el);
|
|
15744
|
+
if (!filterButton) {
|
|
15784
15745
|
return;
|
|
15785
15746
|
}
|
|
15786
15747
|
e.preventDefault();
|
|
@@ -15794,9 +15755,8 @@ class FilterPlugin extends BasePlugin {
|
|
|
15794
15755
|
return;
|
|
15795
15756
|
}
|
|
15796
15757
|
// filter button clicked, open filter dialog
|
|
15797
|
-
const
|
|
15798
|
-
const
|
|
15799
|
-
const data = Object.assign(Object.assign(Object.assign({}, e.detail), this.filterCollection[prop]), { x: buttonPos.x - gridPos.x, y: buttonPos.y - gridPos.y + buttonPos.height, autoCorrect: true, filterTypes: this.getColumnFilter(e.detail.filter), filterItems: this.multiFilterItems, extraContent: this.extraHyperContent, extraBottomContent: this.extraBottomHyperContent });
|
|
15758
|
+
const buttonPos = (filterButton instanceof HTMLElement ? filterButton : el).getBoundingClientRect();
|
|
15759
|
+
const data = Object.assign(Object.assign(Object.assign({}, e.detail), this.filterCollection[prop]), { x: buttonPos.x, y: buttonPos.y + buttonPos.height, autoCorrect: true, filterTypes: this.getColumnFilter(e.detail.filter), filterItems: this.multiFilterItems, extraContent: this.extraHyperContent });
|
|
15800
15760
|
(_b = this.beforeshow) === null || _b === void 0 ? void 0 : _b.call(this, data);
|
|
15801
15761
|
this.pop.show(data);
|
|
15802
15762
|
}
|
|
@@ -17054,22 +17014,9 @@ function filterOutEmptyGroupRows(source, filterTrimmed) {
|
|
|
17054
17014
|
return trimmed;
|
|
17055
17015
|
}
|
|
17056
17016
|
|
|
17057
|
-
var __rest$1 = (undefined && undefined.__rest) || function (s, e) {
|
|
17058
|
-
var t = {};
|
|
17059
|
-
for (var p in s)
|
|
17060
|
-
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
17061
|
-
t[p] = s[p];
|
|
17062
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17063
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17064
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17065
|
-
t[p[i]] = s[p[i]];
|
|
17066
|
-
}
|
|
17067
|
-
return t;
|
|
17068
|
-
};
|
|
17069
17017
|
const PADDING_DEPTH = 10;
|
|
17070
|
-
const RowRenderer = (
|
|
17071
|
-
|
|
17072
|
-
const props = Object.assign(Object.assign(Object.assign({}, attrs), { [DATA_ROW]: index }), (typeof groupingLevel === 'number'
|
|
17018
|
+
const RowRenderer = ({ rowClass, index, size, start, depth, groupingLevel }, cells) => {
|
|
17019
|
+
const props = Object.assign({ [DATA_ROW]: index }, (typeof groupingLevel === 'number'
|
|
17073
17020
|
? { 'data-level': groupingLevel }
|
|
17074
17021
|
: {}));
|
|
17075
17022
|
return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
|
|
@@ -17096,17 +17043,12 @@ const GroupingRowRenderer = (props) => {
|
|
|
17096
17043
|
const name = model[PSEUDO_GROUP_ITEM];
|
|
17097
17044
|
const expanded = model[GROUP_EXPANDED];
|
|
17098
17045
|
const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
|
|
17099
|
-
const groupRowAttrs = {
|
|
17100
|
-
rowClass: 'groupingRow',
|
|
17101
|
-
depth,
|
|
17102
|
-
expanded,
|
|
17103
|
-
};
|
|
17104
17046
|
if (groupingCustomRenderer) {
|
|
17105
|
-
return (hAsync(RowRenderer, Object.assign({}, props,
|
|
17047
|
+
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, Object.assign(Object.assign({}, props), { colType: props.providers.colType, name,
|
|
17106
17048
|
expanded,
|
|
17107
17049
|
depth })))));
|
|
17108
17050
|
}
|
|
17109
|
-
return (hAsync(RowRenderer, Object.assign({}, props,
|
|
17051
|
+
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), hasExpand && [
|
|
17110
17052
|
hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
|
|
17111
17053
|
name,
|
|
17112
17054
|
]));
|
|
@@ -18579,17 +18521,8 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18579
18521
|
constructor(revogrid, providers) {
|
|
18580
18522
|
super(revogrid, providers);
|
|
18581
18523
|
this.moveFunc = debounce$1((e) => this.doMove(e), 5);
|
|
18582
|
-
this.preventHeaderClickAfterDrag = (event) => {
|
|
18583
|
-
if (!this.preventNextHeaderClick) {
|
|
18584
|
-
return;
|
|
18585
|
-
}
|
|
18586
|
-
this.preventNextHeaderClick = false;
|
|
18587
|
-
event.preventDefault();
|
|
18588
|
-
};
|
|
18589
18524
|
this.staticDragData = null;
|
|
18590
18525
|
this.dragData = null;
|
|
18591
|
-
this.columnDragMoved = false;
|
|
18592
|
-
this.preventNextHeaderClick = false;
|
|
18593
18526
|
this.localSubscriptions = {};
|
|
18594
18527
|
this.orderUi = new ColumnOrderHandler();
|
|
18595
18528
|
revogrid.appendChild(this.orderUi.render());
|
|
@@ -18608,13 +18541,11 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18608
18541
|
callback: (e) => this.move(e),
|
|
18609
18542
|
};
|
|
18610
18543
|
this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));
|
|
18611
|
-
this.revogrid.addEventListener('beforeheaderclick', this.preventHeaderClickAfterDrag, { capture: true });
|
|
18612
18544
|
}
|
|
18613
18545
|
dragStart({ event, data }) {
|
|
18614
18546
|
if (event.defaultPrevented) {
|
|
18615
18547
|
return;
|
|
18616
18548
|
}
|
|
18617
|
-
this.preventNextHeaderClick = false;
|
|
18618
18549
|
const { defaultPrevented } = dispatch(this.revogrid, COLUMN_DRAG_START_EVENT, data);
|
|
18619
18550
|
// check if allowed to drag particulat column
|
|
18620
18551
|
if (defaultPrevented) {
|
|
@@ -18636,8 +18567,7 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18636
18567
|
const cols = this.getDimension(data.pin || 'rgCol');
|
|
18637
18568
|
const gridRect = this.revogrid.getBoundingClientRect();
|
|
18638
18569
|
const elRect = dataEl.getBoundingClientRect();
|
|
18639
|
-
const startItem = getItemByPosition(cols, getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left) +
|
|
18640
|
-
(cols.renderOffset || 0));
|
|
18570
|
+
const startItem = getItemByPosition(cols, getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left) + (cols.renderOffset || 0));
|
|
18641
18571
|
this.staticDragData = {
|
|
18642
18572
|
startPos: event.x,
|
|
18643
18573
|
startItem,
|
|
@@ -18668,14 +18598,10 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18668
18598
|
if (rgCol.itemIndex >= this.staticDragData.cols.count) {
|
|
18669
18599
|
return;
|
|
18670
18600
|
}
|
|
18671
|
-
this.orderUi.showHandler(
|
|
18601
|
+
this.orderUi.showHandler(rgCol.end - (this.staticDragData.cols.renderOffset || 0) + dragData.scrollOffset, dragData.gridRect.width);
|
|
18672
18602
|
}
|
|
18673
18603
|
}
|
|
18674
18604
|
move(e) {
|
|
18675
|
-
if (this.staticDragData &&
|
|
18676
|
-
Math.abs(this.staticDragData.startPos - e.x) > 10) {
|
|
18677
|
-
this.columnDragMoved = true;
|
|
18678
|
-
}
|
|
18679
18605
|
dispatch(this.revogrid, COLUMN_DRAG_MOVE_EVENT, e);
|
|
18680
18606
|
// then do move
|
|
18681
18607
|
this.moveFunc(e);
|
|
@@ -18684,7 +18610,6 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18684
18610
|
this.clearOrder();
|
|
18685
18611
|
}
|
|
18686
18612
|
onMouseUp(e) {
|
|
18687
|
-
const suppressClick = this.columnDragMoved;
|
|
18688
18613
|
// apply new positions
|
|
18689
18614
|
if (this.dragData && this.staticDragData) {
|
|
18690
18615
|
let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);
|
|
@@ -18707,9 +18632,6 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18707
18632
|
}
|
|
18708
18633
|
dispatch(this.revogrid, COLUMN_DRAG_END_EVENT, this.getData(this.staticDragData, newItems, source));
|
|
18709
18634
|
}
|
|
18710
|
-
if (suppressClick) {
|
|
18711
|
-
this.preventNextHeaderClick = !!e.target.closest('revogr-header');
|
|
18712
|
-
}
|
|
18713
18635
|
this.clearOrder();
|
|
18714
18636
|
}
|
|
18715
18637
|
clearLocalSubscriptions() {
|
|
@@ -18718,7 +18640,6 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18718
18640
|
clearOrder() {
|
|
18719
18641
|
this.staticDragData = null;
|
|
18720
18642
|
this.dragData = null;
|
|
18721
|
-
this.columnDragMoved = false;
|
|
18722
18643
|
this.clearLocalSubscriptions();
|
|
18723
18644
|
this.orderUi.stop(this.revogrid);
|
|
18724
18645
|
}
|
|
@@ -18728,7 +18649,6 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18728
18649
|
clearSubscriptions() {
|
|
18729
18650
|
super.clearSubscriptions();
|
|
18730
18651
|
this.clearLocalSubscriptions();
|
|
18731
|
-
this.revogrid.removeEventListener('beforeheaderclick', this.preventHeaderClickAfterDrag, { capture: true });
|
|
18732
18652
|
}
|
|
18733
18653
|
getData({ gridEl, dataEl, pin }, order, source = []) {
|
|
18734
18654
|
const gridRect = gridEl.getBoundingClientRect();
|
|
@@ -18750,12 +18670,6 @@ class ColumnMovePlugin extends BasePlugin {
|
|
|
18750
18670
|
function getLeftRelative(absoluteX, gridPos, offset) {
|
|
18751
18671
|
return absoluteX - gridPos - offset;
|
|
18752
18672
|
}
|
|
18753
|
-
function getColumnDragPosition(targetItem, startItem, renderOffset, scrollOffset) {
|
|
18754
|
-
const insertionEdge = startItem.itemIndex > targetItem.itemIndex
|
|
18755
|
-
? targetItem.start
|
|
18756
|
-
: targetItem.end;
|
|
18757
|
-
return insertionEdge - renderOffset + scrollOffset;
|
|
18758
|
-
}
|
|
18759
18673
|
|
|
18760
18674
|
function isMobileDevice() {
|
|
18761
18675
|
return /Mobi/i.test(navigator.userAgent) || /Android/i.test(navigator.userAgent) || navigator.maxTouchPoints > 0;
|
|
@@ -19105,7 +19019,7 @@ class RevoGridComponent {
|
|
|
19105
19019
|
this.rowSize = 0;
|
|
19106
19020
|
/** Indicates default column size. */
|
|
19107
19021
|
this.colSize = 100;
|
|
19108
|
-
/** When true, user can
|
|
19022
|
+
/** When true, user can range selection. */
|
|
19109
19023
|
this.range = false;
|
|
19110
19024
|
/** When true, grid in read only mode. */
|
|
19111
19025
|
this.readonly = false;
|
|
@@ -19117,7 +19031,7 @@ class RevoGridComponent {
|
|
|
19117
19031
|
this.noHorizontalScrollTransfer = false;
|
|
19118
19032
|
/** When true cell focus appear. */
|
|
19119
19033
|
this.canFocus = true;
|
|
19120
|
-
/** When true enable clipboard.
|
|
19034
|
+
/** When true enable clipboard. */
|
|
19121
19035
|
this.useClipboard = true;
|
|
19122
19036
|
/**
|
|
19123
19037
|
* Columns - defines an array of grid columns.
|
|
@@ -21973,17 +21887,9 @@ class RevogrViewportScroll {
|
|
|
21973
21887
|
}
|
|
21974
21888
|
render() {
|
|
21975
21889
|
var _a, _b;
|
|
21976
|
-
const
|
|
21977
|
-
// When content fits in the viewport (no scroll needed), don't inflate content-wrapper
|
|
21978
|
-
// to clientHeight — that would prevent inner-content-table from shrinking and push
|
|
21979
|
-
// rowPinEnd (footer) to the bottom instead of letting it follow the data rows.
|
|
21980
|
-
// For large/compressed grids (content > clientHeight), physicalContentHeight handles
|
|
21981
|
-
// the browser scroll-size compression correctly.
|
|
21982
|
-
const physicalContentHeight = this.contentHeight < clientHeight
|
|
21983
|
-
? Math.max(this.contentHeight, 0)
|
|
21984
|
-
: getContentSize(this.contentHeight, clientHeight);
|
|
21890
|
+
const physicalContentHeight = getContentSize(this.contentHeight, (_b = (_a = this.verticalScroll) === null || _a === void 0 ? void 0 : _a.clientHeight) !== null && _b !== void 0 ? _b : 0);
|
|
21985
21891
|
const physicalContentWidth = getContentSize(this.contentWidth, 0);
|
|
21986
|
-
return (hAsync(Host, { key: '
|
|
21892
|
+
return (hAsync(Host, { key: 'ec8d907976c1d50f7aab3c263be3f0249a274df6', onWheel: this.horizontalMouseWheel, onScroll: (e) => this.applyScroll('rgCol', e) }, hAsync("div", { key: 'e35696a7993ac94261426b45c28d488cdc42b7f0', class: "inner-content-table", style: { width: `${physicalContentWidth}px` } }, hAsync("div", { key: 'a6997451e01eacda1d27d4efa1d74e1748626218', class: "header-wrapper", ref: e => (this.header = e) }, hAsync("slot", { key: '1d401e87d32d5b1531c2211723b552bbc894f22c', name: HEADER_SLOT })), hAsync("div", { key: 'ceab6f9e812d6ca9a0aa376afcd2562a17f505e0', class: "vertical-inner", ref: el => (this.verticalScroll = el), onWheel: this.verticalMouseWheel, onScroll: (e) => this.applyScroll('rgRow', e) }, hAsync("div", { key: 'a9556578a23d6efddec2e982e863aec064042154', class: "content-wrapper", style: { height: `${physicalContentHeight}px` } }, hAsync("slot", { key: '0ae01f9736b9740612e75261f6e3abebda533377', name: CONTENT_SLOT }))), hAsync("div", { key: '09c2565d4ed449a43820f92d97b6558fca3758e7', class: "footer-wrapper", ref: e => (this.footer = e) }, hAsync("slot", { key: '1ffb08ff8138a560cc09d82e3fe22a53e502aafe', name: FOOTER_SLOT })))));
|
|
21987
21893
|
}
|
|
21988
21894
|
/**
|
|
21989
21895
|
* Extra layer for scroll event monitoring, where MouseWheel event is not passing
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -76,10 +76,7 @@ Used by some of the largest companies in Europe and the United States.
|
|
|
76
76
|
- Header filtering.
|
|
77
77
|
- Custom filters to extend system filters with your own set.
|
|
78
78
|
|
|
79
|
-
- **[Export](https://rv-grid.com/guide/export.plugin)**:
|
|
80
|
-
- **[CSV](https://rv-grid.com/guide/export.plugin)**: Built-in file export for core RevoGrid data workflows.
|
|
81
|
-
- **[PDF](https://rv-grid.com/guide/pdf-export)**: Browser-side PDF export with the lightweight [`@revolist/revogrid-pdf-export`](https://www.npmjs.com/package/@revolist/revogrid-pdf-export) plugin.
|
|
82
|
-
- **[Excel (Pro)](https://rv-grid.com/guide/data-grid-export-excel)**: Workbook export for RevoGrid Pro with layout, styles, frozen panes, merged cells, and formulas.
|
|
79
|
+
- **[Export](https://rv-grid.com/guide/export.plugin)**: Export data to file.
|
|
83
80
|
|
|
84
81
|
- **Custom Sizes**: Define custom sizes for [columns](https://rv-grid.com/guide/column/#Column-Size) and [rows](https://rv-grid.com/guide/row/height). Automatic sizing based on content.
|
|
85
82
|
|
|
@@ -431,22 +428,6 @@ npm run test:e2e
|
|
|
431
428
|
|
|
432
429
|
Test files live in `e2e/` and share helpers from `e2e/helpers.ts`:
|
|
433
430
|
|
|
434
|
-
### Local startup troubleshooting
|
|
435
|
-
|
|
436
|
-
For targeted local work, confirm a new or changed test is discoverable before starting the dev server:
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
./node_modules/.bin/playwright test e2e/pinning.spec.ts --grep "test name" --list
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
Then run a non-watch Stencil build to catch compile errors without invoking the Playwright web-server lifecycle:
|
|
443
|
-
|
|
444
|
-
```bash
|
|
445
|
-
./node_modules/.bin/stencil build --dev --serve --no-open
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
If Playwright fails before any tests run with a Stencil dev-server startup error such as `ERR_SOCKET_BAD_PORT` and port `65536`, treat it as an environment/startup issue rather than an e2e assertion failure. Check `node -v` and whether another local server is already using `localhost:3333`, then retry only after changing that environment state.
|
|
449
|
-
|
|
450
431
|
|
|
451
432
|
## Contributing
|
|
452
433
|
|