@revolist/revogrid 4.23.13 → 4.23.15
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/{column.drag.plugin-D_Dfhp4f.js → column.drag.plugin-ByDJ7Rk3.js} +5 -5
- package/dist/cjs/{filter.button-B9EzJrr1.js → filter.button-C4xpvyyE.js} +10 -16
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/revo-grid.cjs.entry.js +2 -2
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +119 -41
- package/dist/collection/components/clipboard/revogr-clipboard.js +1 -1
- package/dist/collection/plugins/filter/filter.button.js +10 -16
- package/dist/collection/plugins/filter/filter.panel.js +117 -39
- package/dist/collection/plugins/filter/filter.plugin.js +4 -4
- package/dist/collection/plugins/filter/filter.style.css +65 -13
- package/dist/{revo-grid/column.drag.plugin-UNSHSmgo.js → esm/column.drag.plugin-BZacA8n_.js} +5 -5
- package/dist/{revo-grid/filter.button-BFwo1uvz.js → esm/filter.button-B-RBiF67.js} +10 -16
- package/dist/esm/index.js +3 -3
- package/dist/esm/revo-grid.entry.js +2 -2
- package/dist/esm/revogr-clipboard_3.entry.js +1 -1
- package/dist/esm/revogr-data_4.entry.js +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +119 -41
- package/dist/{esm/column.drag.plugin-UNSHSmgo.js → revo-grid/column.drag.plugin-BZacA8n_.js} +5 -5
- package/dist/{esm/filter.button-BFwo1uvz.js → revo-grid/filter.button-B-RBiF67.js} +10 -16
- package/dist/revo-grid/index.esm.js +3 -3
- package/dist/revo-grid/revo-grid.entry.js +2 -2
- package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +119 -41
- package/dist/types/plugins/filter/filter.button.d.ts +13 -3
- package/dist/types/plugins/filter/filter.panel.d.ts +4 -0
- package/dist/types/plugins/filter/filter.types.d.ts +7 -0
- package/hydrate/index.js +133 -61
- package/hydrate/index.mjs +133 -61
- package/package.json +1 -1
- package/standalone/filter.button.js +1 -1
- package/standalone/revo-grid.js +1 -1
- package/standalone/revogr-clipboard2.js +1 -1
- package/standalone/revogr-filter-panel.js +1 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, d as createEvent, h, e as Host, g as getElement } from './index-Chp_81rd.js';
|
|
5
5
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
6
|
-
import { i as isFilterBtn, e as AndOrButton, f as ReorderButton, d as TrashButton } from './filter.button-
|
|
6
|
+
import { i as isFilterBtn, e as AndOrButton, f as ReorderButton, d as TrashButton } from './filter.button-B-RBiF67.js';
|
|
7
7
|
|
|
8
8
|
(function closest() {
|
|
9
9
|
if (!Element.prototype.matches) {
|
|
@@ -66,12 +66,13 @@ function moveFilterItem(items, sourceId, targetId) {
|
|
|
66
66
|
return true;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
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{
|
|
69
|
+
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));box-sizing:border-box;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 .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{position:sticky;right:0;bottom:-10px;left:0;z-index:1;text-align:right;margin:10px -10px -10px;padding:0 5px 10px 10px;background:var(--revo-grid-filter-panel-bg, #fff);border-top:1px solid var(--revo-grid-filter-panel-divider, #d9d9d9)}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-row{display:flex;align-items:center;gap:6px;position:relative}.multi-filter-list .multi-filter-list-row.filter-row-dragging{opacity:0.65}.multi-filter-list .multi-filter-list-row.filter-row-drag-over::before{content:"";position:absolute;top:-4px;right:0;left:0;z-index:2;height:2px;background:var(--revo-grid-filter-panel-reorder-accent, #007cb2);border-radius:999px;box-shadow:0 0 0 2px var(--revo-grid-filter-panel-bg, #fff)}.multi-filter-list .multi-filter-list-row.filter-row-drop-active .filter-row-drop-target{pointer-events:auto}.multi-filter-list .filter-row-drop-target{position:absolute;inset:0;z-index:1;padding:0;pointer-events:none;background:transparent;border:0}.multi-filter-list .multi-filter-list-action{display:flex;align-self:stretch;flex:0 0 auto;justify-content:flex-end;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;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;width:22px;height:100%;font-size:16px}.multi-filter-list .trash-button .trash-img{width:1em}.multi-filter-list .reorder-button{border:0;background:transparent;color:var(--revo-grid-filter-panel-reorder-color, #6b7280);cursor:grab;font-family:monospace;font-size:12px;letter-spacing:0;line-height:1;padding:6px 2px;transform:scaleX(0.8);width:16px}.multi-filter-list .reorder-button.filter-row-drag-over{color:var(--revo-grid-filter-panel-reorder-accent, #007cb2)}.multi-filter-list .reorder-button:active{cursor:grabbing}.multi-filter-list-container{padding:0;margin:0;list-style:none}.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;align-items:center;flex:1 1 auto;gap:6px;min-width:0}.select-input .select-filter,.select-input .filter-extra{flex:1 1 0;min-width:0}.select-input .select-filter{width:auto}.select-input .filter-extra{display:flex}.select-input .filter-extra>*{width:100%}.select-input input[type=text],.select-input input[type=date]{margin:0}`;
|
|
70
70
|
|
|
71
71
|
const defaultType = 'none';
|
|
72
72
|
const FILTER_LIST_CLASS = 'multi-filter-list';
|
|
73
73
|
const FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';
|
|
74
74
|
const FILTER_ID = 'add-filter';
|
|
75
|
+
const VIEWPORT_PADDING = 8;
|
|
75
76
|
const FilterPanel = class {
|
|
76
77
|
constructor(hostRef) {
|
|
77
78
|
registerInstance(this, hostRef);
|
|
@@ -88,6 +89,9 @@ const FilterPanel = class {
|
|
|
88
89
|
placeholder: 'Enter value...',
|
|
89
90
|
and: 'and',
|
|
90
91
|
or: 'or',
|
|
92
|
+
filterCondition: 'Filter condition',
|
|
93
|
+
removeFilter: 'Remove filter',
|
|
94
|
+
reorderFilter: 'Reorder filter',
|
|
91
95
|
};
|
|
92
96
|
this.isFilterIdSet = false;
|
|
93
97
|
this.filterId = 0;
|
|
@@ -162,36 +166,75 @@ const FilterPanel = class {
|
|
|
162
166
|
return '';
|
|
163
167
|
const propFilters = (_b = this.filterItems[prop]) !== null && _b !== void 0 ? _b : [];
|
|
164
168
|
const visibleFilterCount = propFilters.filter(filter => !filter.hidden).length;
|
|
165
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
166
|
-
return (h("div", { key: this.filterId }, propFilters.map((filter, index) => {
|
|
169
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
170
|
+
return (h("div", { key: this.filterId }, h("ul", { class: "multi-filter-list-container" }, propFilters.map((filter, index) => {
|
|
167
171
|
let andOrButton;
|
|
168
172
|
if (filter.hidden) {
|
|
169
173
|
return;
|
|
170
174
|
}
|
|
171
175
|
// hide toggle button if there is only one filter and the last one
|
|
172
176
|
if (index !== this.filterItems[prop].length - 1) {
|
|
173
|
-
andOrButton = (h(
|
|
177
|
+
andOrButton = (h(AndOrButton, { text: filter.relation === 'and' ? capts.and : capts.or, onClick: () => this.toggleFilterAndOr(filter.id) }));
|
|
174
178
|
}
|
|
175
179
|
const extra = this.renderExtra(prop, index);
|
|
176
|
-
|
|
177
|
-
|
|
180
|
+
const isDragging = this.draggedFilterId === filter.id;
|
|
181
|
+
const isDragOver = this.dragOverFilterId === filter.id && !isDragging;
|
|
182
|
+
const canReorder = visibleFilterCount > 1;
|
|
183
|
+
return (h("li", { key: filter.id, class: FILTER_LIST_CLASS, "aria-label": `${capts.filterCondition} ${index + 1}` }, h("div", { class: {
|
|
184
|
+
'multi-filter-list-row': true,
|
|
185
|
+
'filter-row-drop-active': this.draggedFilterId !== undefined && !isDragging,
|
|
186
|
+
'filter-row-dragging': isDragging,
|
|
187
|
+
'filter-row-drag-over': isDragOver,
|
|
188
|
+
} }, canReorder ? (h("button", { type: "button", class: "filter-row-drop-target", tabIndex: -1, "aria-label": `${capts.filterCondition} ${index + 1}`, onDragOver: e => this.onFilterDragOver(e, filter.id), onDragLeave: () => this.onFilterDragLeave(filter.id), onDrop: e => this.onFilterDrop(e, prop, filter.id) })) : '', canReorder ? (h(ReorderButton, { ariaLabel: capts.reorderFilter, dragging: isDragging, dragOver: isDragOver, onDragStart: e => this.onFilterDragStart(e, filter.id), onDragEnd: () => this.onFilterDragEnd(), onKeyDown: e => this.onFilterReorderKeyDown(e, prop, filter.id) })) : '', h("div", { class: { 'select-input': true } }, h("select", { class: "select-css select-filter", onChange: e => this.onFilterTypeChange(e, prop, index) }, this.renderSelectOptions(this.filterItems[prop][index].type, true)), extra ? h("div", { class: "filter-extra" }, extra) : ''), h("div", { class: FILTER_LIST_CLASS_ACTION }, andOrButton, h(TrashButton, { ariaLabel: capts.removeFilter, onClick: () => this.onRemoveFilter(filter.id) })))));
|
|
189
|
+
})), propFilters.filter(f => !f.hidden).length > 0 ? h("div", { class: "add-filter-divider" }) : ''));
|
|
178
190
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
191
|
+
componentDidRender() {
|
|
192
|
+
this.syncDialog();
|
|
193
|
+
}
|
|
194
|
+
syncDialog() {
|
|
195
|
+
if (!this.dialog) {
|
|
182
196
|
return;
|
|
183
197
|
}
|
|
184
|
-
|
|
185
|
-
|
|
198
|
+
if (!this.changes) {
|
|
199
|
+
if (this.dialog.open) {
|
|
200
|
+
this.dialog.close();
|
|
201
|
+
}
|
|
186
202
|
return;
|
|
187
203
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (
|
|
192
|
-
|
|
204
|
+
if (!this.dialog.open) {
|
|
205
|
+
this.dialog.show();
|
|
206
|
+
}
|
|
207
|
+
if (this.changes.autoCorrect !== false) {
|
|
208
|
+
this.autoCorrect(this.dialog);
|
|
209
|
+
requestAnimationFrame(() => this.autoCorrect(this.dialog));
|
|
193
210
|
}
|
|
194
211
|
}
|
|
212
|
+
autoCorrect(el) {
|
|
213
|
+
var _a;
|
|
214
|
+
if (!el || !this.changes) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
el.style.maxHeight = '';
|
|
218
|
+
el.style.left = `${this.changes.x}px`;
|
|
219
|
+
el.style.top = `${this.changes.y}px`;
|
|
220
|
+
const pos = el.getBoundingClientRect();
|
|
221
|
+
const anchorTop = (_a = this.changes.anchorY) !== null && _a !== void 0 ? _a : this.changes.y;
|
|
222
|
+
const anchorBottom = this.changes.y;
|
|
223
|
+
const spaceAbove = Math.max(0, anchorTop - VIEWPORT_PADDING);
|
|
224
|
+
const spaceBelow = Math.max(0, window.innerHeight - anchorBottom - VIEWPORT_PADDING);
|
|
225
|
+
const openAbove = pos.height > spaceBelow && spaceAbove > spaceBelow;
|
|
226
|
+
const availableHeight = Math.max(VIEWPORT_PADDING, openAbove ? spaceAbove : spaceBelow);
|
|
227
|
+
el.style.maxHeight = `${availableHeight}px`;
|
|
228
|
+
const adjustedPos = el.getBoundingClientRect();
|
|
229
|
+
const maxLeft = Math.max(VIEWPORT_PADDING, window.innerWidth - adjustedPos.width - VIEWPORT_PADDING);
|
|
230
|
+
const maxTop = Math.max(VIEWPORT_PADDING, window.innerHeight - adjustedPos.height - VIEWPORT_PADDING);
|
|
231
|
+
const left = Math.min(Math.max(VIEWPORT_PADDING, this.changes.x), maxLeft);
|
|
232
|
+
const top = openAbove
|
|
233
|
+
? Math.min(Math.max(VIEWPORT_PADDING, anchorTop - adjustedPos.height), maxTop)
|
|
234
|
+
: Math.min(Math.max(VIEWPORT_PADDING, anchorBottom), maxTop);
|
|
235
|
+
el.style.left = `${left}px`;
|
|
236
|
+
el.style.top = `${top}px`;
|
|
237
|
+
}
|
|
195
238
|
onFilterTypeChange(e, prop, index) {
|
|
196
239
|
if (!(e.target instanceof HTMLSelectElement)) {
|
|
197
240
|
return;
|
|
@@ -325,6 +368,37 @@ const FilterPanel = class {
|
|
|
325
368
|
this.draggedFilterId = undefined;
|
|
326
369
|
this.dragOverFilterId = undefined;
|
|
327
370
|
}
|
|
371
|
+
onFilterReorderKeyDown(e, prop, sourceId) {
|
|
372
|
+
let direction = 0;
|
|
373
|
+
if (e.key === 'ArrowUp') {
|
|
374
|
+
direction = -1;
|
|
375
|
+
}
|
|
376
|
+
else if (e.key === 'ArrowDown') {
|
|
377
|
+
direction = 1;
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
const items = this.filterItems[prop];
|
|
383
|
+
if (!items) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
const visibleItems = items.filter(item => !item.hidden);
|
|
387
|
+
const sourceIndex = visibleItems.findIndex(item => item.id === sourceId);
|
|
388
|
+
if (sourceIndex === -1) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
e.preventDefault();
|
|
392
|
+
e.stopPropagation();
|
|
393
|
+
const target = visibleItems[sourceIndex + direction];
|
|
394
|
+
if (!target || !moveFilterItem(items, sourceId, target.id)) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
this.filterId++;
|
|
398
|
+
if (!this.disableDynamicFiltering) {
|
|
399
|
+
this.debouncedApplyFilter();
|
|
400
|
+
}
|
|
401
|
+
}
|
|
328
402
|
toggleFilterAndOr(id) {
|
|
329
403
|
var _a;
|
|
330
404
|
this.assertChanges();
|
|
@@ -363,7 +437,7 @@ const FilterPanel = class {
|
|
|
363
437
|
});
|
|
364
438
|
});
|
|
365
439
|
if (!isDefaultTypeRemoved) {
|
|
366
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
440
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
367
441
|
options.push(h("option", { selected: this.currentFilterType === defaultType, value: defaultType }, prop && this.filterItems[prop] && this.filterItems[prop].length > 0
|
|
368
442
|
? capts.add
|
|
369
443
|
: this.filterNames[defaultType]));
|
|
@@ -396,7 +470,7 @@ const FilterPanel = class {
|
|
|
396
470
|
select.focus();
|
|
397
471
|
}
|
|
398
472
|
};
|
|
399
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
473
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
400
474
|
const extra = this.filterEntities[currentFilter[index].type].extra;
|
|
401
475
|
if (typeof extra === 'function') {
|
|
402
476
|
return extra(h, {
|
|
@@ -433,30 +507,34 @@ const FilterPanel = class {
|
|
|
433
507
|
} }));
|
|
434
508
|
}
|
|
435
509
|
render() {
|
|
436
|
-
var _a, _b, _c, _d, _e;
|
|
437
|
-
if (!this.changes) {
|
|
438
|
-
return h(Host, { style: { display: 'none' } });
|
|
439
|
-
}
|
|
510
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
440
511
|
const style = {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
top: `${this.changes.y}px`,
|
|
512
|
+
left: `${(_b = (_a = this.changes) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0}px`,
|
|
513
|
+
top: `${(_d = (_c = this.changes) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0}px`,
|
|
444
514
|
};
|
|
445
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
446
|
-
return (h(Host, { style: style, ref: el => {
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
} },
|
|
450
|
-
h("
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
h("
|
|
458
|
-
|
|
459
|
-
|
|
515
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
516
|
+
return (h(Host, { key: '4e969f8b7033363c885c94b1f7770917786669f2' }, h("dialog", { key: '79b2713724684fa99f56621fe43645a0b0ad54bf', class: "filter-panel-dialog", style: style, ref: el => (this.dialog = el), onCancel: e => {
|
|
517
|
+
e.preventDefault();
|
|
518
|
+
this.onCancel();
|
|
519
|
+
} }, this.changes && [
|
|
520
|
+
h("slot", { key: "header-slot", slot: "header" }),
|
|
521
|
+
((_f = (_e = this.changes).extraContent) === null || _f === void 0 ? void 0 : _f.call(_e, this.changes)) || '',
|
|
522
|
+
((_g = this.changes) === null || _g === void 0 ? void 0 : _g.hideDefaultFilters) !== true && [
|
|
523
|
+
h("label", { key: "filter-title" }, capts.title),
|
|
524
|
+
h("div", { key: "filter-holder", class: "filter-holder" }, this.getFilterItemsList()),
|
|
525
|
+
h("div", { key: "add-filter", class: "add-filter" }, h("select", { key: 'fc894bdfae1ff35d5c49adc7646dd3182b7bd49e', id: FILTER_ID, class: "select-css", onChange: e => this.onAddNewFilter(e) }, this.renderSelectOptions(this.currentFilterType))),
|
|
526
|
+
],
|
|
527
|
+
h("slot", { key: "default-slot" }),
|
|
528
|
+
((_j = (_h = this.changes).extraBottomContent) === null || _j === void 0 ? void 0 : _j.call(_h, this.changes)) || '',
|
|
529
|
+
h("div", { key: "filter-actions", class: "filter-actions" }, this.disableDynamicFiltering && [
|
|
530
|
+
h("button", { key: "save", id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, capts.save),
|
|
531
|
+
h("button", { key: "cancel", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.cancel),
|
|
532
|
+
], !this.disableDynamicFiltering && [
|
|
533
|
+
h("button", { key: "ok", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.ok),
|
|
534
|
+
h("button", { key: "reset", id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, capts.reset),
|
|
535
|
+
]),
|
|
536
|
+
h("slot", { key: "footer-slot", slot: "footer" }),
|
|
537
|
+
])));
|
|
460
538
|
}
|
|
461
539
|
get element() { return getElement(this); }
|
|
462
540
|
};
|
package/dist/{esm/column.drag.plugin-UNSHSmgo.js → revo-grid/column.drag.plugin-BZacA8n_.js}
RENAMED
|
@@ -6,7 +6,7 @@ import { K as createStore, l as setStore, i as calculateDimensionData, L as iden
|
|
|
6
6
|
import { j as calculateRowHeaderSize } from './viewport.store-_c579YyM.js';
|
|
7
7
|
import { g as getScrollbarSize, t as timeout } from './index-Db3qZoW5.js';
|
|
8
8
|
import { h } from './index-Chp_81rd.js';
|
|
9
|
-
import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-
|
|
9
|
+
import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-B-RBiF67.js';
|
|
10
10
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
11
11
|
import { O as ON_COLUMN_CLICK, d as dispatch } from './header-cell-renderer-BMmXRsd_.js';
|
|
12
12
|
|
|
@@ -1400,7 +1400,8 @@ class FilterPlugin extends BasePlugin {
|
|
|
1400
1400
|
async headerclick(e) {
|
|
1401
1401
|
var _a, _b;
|
|
1402
1402
|
const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
|
|
1403
|
-
|
|
1403
|
+
const filterButton = isFilterBtn(el);
|
|
1404
|
+
if (!filterButton) {
|
|
1404
1405
|
return;
|
|
1405
1406
|
}
|
|
1406
1407
|
e.preventDefault();
|
|
@@ -1414,9 +1415,8 @@ class FilterPlugin extends BasePlugin {
|
|
|
1414
1415
|
return;
|
|
1415
1416
|
}
|
|
1416
1417
|
// filter button clicked, open filter dialog
|
|
1417
|
-
const
|
|
1418
|
-
const
|
|
1419
|
-
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 });
|
|
1418
|
+
const buttonPos = (filterButton instanceof HTMLElement ? filterButton : el).getBoundingClientRect();
|
|
1419
|
+
const data = Object.assign(Object.assign(Object.assign({}, e.detail), this.filterCollection[prop]), { x: buttonPos.x, y: buttonPos.y + buttonPos.height, anchorY: buttonPos.y, autoCorrect: true, filterTypes: this.getColumnFilter(e.detail.filter), filterItems: this.multiFilterItems, extraContent: this.extraHyperContent, extraBottomContent: this.extraBottomHyperContent });
|
|
1420
1420
|
(_b = this.beforeshow) === null || _b === void 0 ? void 0 : _b.call(this, data);
|
|
1421
1421
|
this.pop.show(data);
|
|
1422
1422
|
}
|
|
@@ -15,24 +15,18 @@ const FilterButton = ({ column }) => {
|
|
|
15
15
|
[FILTER_BUTTON_ACTIVE]: column && !!column[FILTER_PROP],
|
|
16
16
|
} }, h("svg", { class: "filter-img", viewBox: "0 0 64 64" }, h("g", { stroke: "none", "stroke-width": "1", fill: "none", "fill-rule": "evenodd" }, h("path", { d: "M43,48 L43,56 L21,56 L21,48 L43,48 Z M53,28 L53,36 L12,36 L12,28 L53,28 Z M64,8 L64,16 L0,16 L0,8 L64,8 Z", fill: "currentColor" }))))));
|
|
17
17
|
};
|
|
18
|
-
const TrashButton = () => {
|
|
19
|
-
return (h("
|
|
18
|
+
const TrashButton = ({ ariaLabel, onClick }) => {
|
|
19
|
+
return (h("button", { type: "button", class: { [TRASH_BUTTON]: true }, "aria-label": ariaLabel, onClick: onClick }, h("svg", { class: "trash-img", viewBox: "0 0 24 24" }, h("path", { fill: "currentColor", d: "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z" }))));
|
|
20
20
|
};
|
|
21
|
-
const AndOrButton = ({ text }) => {
|
|
22
|
-
return h("button", { class: { [AND_OR_BUTTON]: true, 'light revo-button': true } }, text);
|
|
21
|
+
const AndOrButton = ({ text, onClick }) => {
|
|
22
|
+
return h("button", { type: "button", class: { [AND_OR_BUTTON]: true, 'light revo-button': true }, onClick: onClick }, text);
|
|
23
23
|
};
|
|
24
|
-
const ReorderButton = ({ dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, }) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
REORDER_BUTTON,
|
|
31
|
-
dragging ? 'filter-row-dragging' : '',
|
|
32
|
-
dragOver ? 'filter-row-drag-over' : '',
|
|
33
|
-
].filter(Boolean).join(' ');
|
|
34
|
-
};
|
|
35
|
-
return (h("button", { type: "button", ref: applyClass, draggable: true, title: "Reorder filter", "aria-label": "reorder filter", onDragStart: onDragStart, onDragEnd: onDragEnd, onDragOver: onDragOver, onDragLeave: onDragLeave, onDrop: onDrop }, "::"));
|
|
24
|
+
const ReorderButton = ({ ariaLabel, dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, onKeyDown, }) => {
|
|
25
|
+
return (h("button", { type: "button", class: {
|
|
26
|
+
[REORDER_BUTTON]: true,
|
|
27
|
+
'filter-row-dragging': !!dragging,
|
|
28
|
+
'filter-row-drag-over': !!dragOver,
|
|
29
|
+
}, draggable: true, title: ariaLabel, "aria-label": ariaLabel, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragOver: onDragOver, onDragLeave: onDragLeave, onDrop: onDrop, onKeyDown: onKeyDown }, "::"));
|
|
36
30
|
};
|
|
37
31
|
function isFilterBtn(e) {
|
|
38
32
|
if (e.classList.contains(FILTER_BUTTON_CLASS)) {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
4
|
export { o as GROUPING_ROW_TYPE, j as GROUP_COLUMN_PROP, G as GROUP_DEPTH, h as GROUP_EXPANDED, l as GROUP_EXPAND_BTN, m as GROUP_EXPAND_EVENT, k as GROUP_ORIGINAL_INDEX, f as PSEUDO_GROUP_COLUMN, P as PSEUDO_GROUP_ITEM, d as PSEUDO_GROUP_ITEM_ID, e as PSEUDO_GROUP_ITEM_VALUE, c as columnTypes, a as cropCellToMax, H as gatherGroup, s as gatherGrouping, z as getCellData, B as getCellDataParsed, A as getCellRaw, I as getColumnByProp, D as getColumnSizes, C as getColumnType, F as getColumns, q as getExpanded, t as getGroupingName, x as getParsedGroup, g as getRange, p as getSource, E as isColGrouping, u as isGrouping, v as isGroupingColumn, b as isRangeSingleCell, i as isRowType, y as isSameGroup, w as measureEqualDepth, n as nextCell, r as rowTypes } from './column.service-C6hByxPy.js';
|
|
5
|
-
import { B as BasePlugin } from './column.drag.plugin-
|
|
6
|
-
export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, s as SortingPlugin, a as StretchColumn, w as defaultCellCompare, x as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, r as getColumnDragPosition, z as getComparer, q as getLeftRelative, y as getNextOrder, u as getSortingIndex, t as hasActiveSorting, i as isStretchPlugin, v as sortIndexByItems } from './column.drag.plugin-
|
|
5
|
+
import { B as BasePlugin } from './column.drag.plugin-BZacA8n_.js';
|
|
6
|
+
export { A as AutoSizeColumnPlugin, n as BEFORE_COLUMN_DRAG_END_EVENT, m as COLUMN_DRAG_END_EVENT, l as COLUMN_DRAG_MOVE_EVENT, o as COLUMN_DRAG_START_EVENT, C as ColumnAutoSizeMode, p as ColumnMovePlugin, D as DimensionStore, b as ExportCsv, E as ExportFilePlugin, c as FILTER_CONFIG_CHANGED_EVENT, F as FILTER_TRIMMED_TYPE, d as FILTE_PANEL, e as FilterPlugin, G as GroupingRowPlugin, S as SelectionStore, s as SortingPlugin, a as StretchColumn, w as defaultCellCompare, x as descCellCompare, j as doCollapse, k as doExpand, f as filterCoreFunctionsIndexedByType, h as filterNames, g as filterTypes, r as getColumnDragPosition, z as getComparer, q as getLeftRelative, y as getNextOrder, u as getSortingIndex, t as hasActiveSorting, i as isStretchPlugin, v as sortIndexByItems } from './column.drag.plugin-BZacA8n_.js';
|
|
7
7
|
export { d as dispatch, a as dispatchByEvent } from './header-cell-renderer-BMmXRsd_.js';
|
|
8
8
|
export { C as CellRenderer, G as GroupingRowRenderer, S as SortingSign, e as expandEvent, a as expandSvgIconVNode } from './cell-renderer-CLTRlCa5.js';
|
|
9
9
|
export { a as applyMixins, f as findPositionInArray, g as getScrollbarSize, m as mergeSortedArray, p as pushSorted, r as range, s as scaleValue, t as timeout } from './index-Db3qZoW5.js';
|
|
@@ -12,7 +12,7 @@ export { k as isAll, c as isClear, h as isCopy, a as isCtrlKey, b as isCtrlMetaK
|
|
|
12
12
|
export { h } from './index-Chp_81rd.js';
|
|
13
13
|
export { C as CELL_CLASS, z as CELL_HANDLER_CLASS, m as DATA_COL, n as DATA_ROW, o as DISABLED_CLASS, x as DRAGGABLE_CLASS, A as DRAGG_TEXT, w as DRAG_ICON_CLASS, D as DataStore, E as EDIT_INPUT_WR, F as FOCUS_CLASS, G as GRID_INTERNALS, v as HEADER_ACTUAL_ROW_CLASS, H as HEADER_CLASS, u as HEADER_ROW_CLASS, r as HEADER_SORTABLE_CLASS, M as MIN_COL_SIZE, y as MOBILE_CLASS, R as RESIZE_INTERVAL, B as ROW_FOCUSED_CLASS, q as ROW_HEADER_TYPE, S as SELECTION_BORDER_CLASS, T as TMP_SELECTION_BG_CLASS, i as calculateDimensionData, I as codesLetter, h as gatherTrimmedItems, k as getItemByIndex, j as getItemByPosition, g as getPhysical, b as getSourceItem, f as getSourceItemVirtualIndexByProp, c as getSourcePhysicalIndex, a as getVisibleSourceItem, J as keyValues, p as proxyPlugin, e as setItems, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, l as setStore, t as trimmedPlugin } from './dimension.helpers-CGKwSvw6.js';
|
|
14
14
|
export { V as ViewportStore, b as addMissingItems, j as calculateRowHeaderSize, c as clampViewportCoordinate, f as getFirstItem, d as getItems, h as getLastItem, a as getUpdatedItemsByPosition, g as getViewportMaxCoordinate, i as isActiveRange, e as isActiveRangeOutsideLastItem, r as recombineByOffset, s as setItemSizes, u as updateMissingAndRange } from './viewport.store-_c579YyM.js';
|
|
15
|
-
export { A as AND_OR_BUTTON, e as AndOrButton, a as FILTER_BUTTON_ACTIVE, F as FILTER_BUTTON_CLASS, b as FILTER_PROP, c as FilterButton, R as REORDER_BUTTON, f as ReorderButton, T as TRASH_BUTTON, d as TrashButton, i as isFilterBtn } from './filter.button-
|
|
15
|
+
export { A as AND_OR_BUTTON, e as AndOrButton, a as FILTER_BUTTON_ACTIVE, F as FILTER_BUTTON_CLASS, b as FILTER_PROP, c as FilterButton, R as REORDER_BUTTON, f as ReorderButton, T as TRASH_BUTTON, d as TrashButton, i as isFilterBtn } from './filter.button-B-RBiF67.js';
|
|
16
16
|
import './debounce-PCRWZliA.js';
|
|
17
17
|
|
|
18
18
|
const REVOGRID_EVENTS = new Map([
|
|
@@ -6,12 +6,12 @@ import { c as columnTypes, J as reduce, C as getColumnType, r as rowTypes, i as
|
|
|
6
6
|
import { D as DataStore, b as getSourceItem, f as getSourceItemVirtualIndexByProp, d as setSourceByPhysicalIndex, s as setSourceByVirtualIndex, a as getVisibleSourceItem, h as gatherTrimmedItems, k as getItemByIndex, R as RESIZE_INTERVAL } from './dimension.helpers-CGKwSvw6.js';
|
|
7
7
|
import { d as debounce } from './debounce-PCRWZliA.js';
|
|
8
8
|
import { g as getScrollDimension, v as viewportDataPartition, F as FOOTER_SLOT, C as CONTENT_SLOT, H as HEADER_SLOT, D as DATA_SLOT } from './viewport.helpers-CoCAvmZs.js';
|
|
9
|
-
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, s as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-
|
|
9
|
+
import { D as DimensionStore, S as SelectionStore, B as BasePlugin, G as GroupingRowPlugin, a as StretchColumn, i as isStretchPlugin, A as AutoSizeColumnPlugin, e as FilterPlugin, E as ExportFilePlugin, s as SortingPlugin, p as ColumnMovePlugin } from './column.drag.plugin-BZacA8n_.js';
|
|
10
10
|
import { V as ViewportStore } from './viewport.store-_c579YyM.js';
|
|
11
11
|
import { T as ThemeService } from './theme.service-BmnDvr6P.js';
|
|
12
12
|
import { t as timeout } from './index-Db3qZoW5.js';
|
|
13
13
|
import { g as getPropertyFromEvent } from './events-BvSmBueA.js';
|
|
14
|
-
import './filter.button-
|
|
14
|
+
import './filter.button-B-RBiF67.js';
|
|
15
15
|
import './header-cell-renderer-BMmXRsd_.js';
|
|
16
16
|
|
|
17
17
|
class ColumnDataProvider {
|
|
@@ -143,7 +143,7 @@ const Clipboard = class {
|
|
|
143
143
|
}
|
|
144
144
|
getData(e) {
|
|
145
145
|
return (e.clipboardData ||
|
|
146
|
-
(
|
|
146
|
+
(globalThis === null || globalThis === void 0 ? void 0 : globalThis.clipboardData));
|
|
147
147
|
}
|
|
148
148
|
};
|
|
149
149
|
|
|
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, h, e as Host, g as getElement
|
|
|
5
5
|
import { M as ColumnService, u as isGrouping } from './column.service-C6hByxPy.js';
|
|
6
6
|
import { B as ROW_FOCUSED_CLASS, b as getSourceItem, n as DATA_ROW, m as DATA_COL, M as MIN_COL_SIZE, r as HEADER_SORTABLE_CLASS, H as HEADER_CLASS, F as FOCUS_CLASS, k as getItemByIndex, u as HEADER_ROW_CLASS, v as HEADER_ACTUAL_ROW_CLASS } from './dimension.helpers-CGKwSvw6.js';
|
|
7
7
|
import { G as GroupingRowRenderer, C as CellRenderer, R as RowRenderer, P as PADDING_DEPTH, S as SortingSign } from './cell-renderer-CLTRlCa5.js';
|
|
8
|
-
import { c as FilterButton } from './filter.button-
|
|
8
|
+
import { c as FilterButton } from './filter.button-B-RBiF67.js';
|
|
9
9
|
import { H as HeaderCellRenderer } from './header-cell-renderer-BMmXRsd_.js';
|
|
10
10
|
import { t as throttle, L as LocalScrollTimer, a as LocalScrollService, g as getContentSize } from './throttle-CaUDyxyU.js';
|
|
11
11
|
import { H as HEADER_SLOT, C as CONTENT_SLOT, F as FOOTER_SLOT } from './viewport.helpers-CoCAvmZs.js';
|