@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
|
};
|
|
@@ -9,9 +9,18 @@ type Props = {
|
|
|
9
9
|
column: ColumnRegular;
|
|
10
10
|
};
|
|
11
11
|
export declare const FilterButton: ({ column }: Props) => any;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
type TrashButtonProps = {
|
|
13
|
+
ariaLabel: string;
|
|
14
|
+
onClick?: (event: MouseEvent) => void;
|
|
15
|
+
};
|
|
16
|
+
export declare const TrashButton: ({ ariaLabel, onClick }: TrashButtonProps) => any;
|
|
17
|
+
type AndOrButtonProps = {
|
|
18
|
+
text: string;
|
|
19
|
+
onClick?: (event: MouseEvent) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare const AndOrButton: ({ text, onClick }: AndOrButtonProps) => any;
|
|
14
22
|
type ReorderButtonProps = {
|
|
23
|
+
ariaLabel: string;
|
|
15
24
|
dragging?: boolean;
|
|
16
25
|
dragOver?: boolean;
|
|
17
26
|
onDragStart?: (event: DragEvent) => void;
|
|
@@ -19,7 +28,8 @@ type ReorderButtonProps = {
|
|
|
19
28
|
onDragOver?: (event: DragEvent) => void;
|
|
20
29
|
onDragLeave?: (event: DragEvent) => void;
|
|
21
30
|
onDrop?: (event: DragEvent) => void;
|
|
31
|
+
onKeyDown?: (event: KeyboardEvent) => void;
|
|
22
32
|
};
|
|
23
|
-
export declare const ReorderButton: ({ dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, }: ReorderButtonProps) => any;
|
|
33
|
+
export declare const ReorderButton: ({ ariaLabel, dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, onKeyDown, }: ReorderButtonProps) => any;
|
|
24
34
|
export declare function isFilterBtn(e: HTMLElement): true | Element | null;
|
|
25
35
|
export {};
|
|
@@ -10,6 +10,7 @@ import { FilterType } from './filter.indexed';
|
|
|
10
10
|
* @internal
|
|
11
11
|
*/
|
|
12
12
|
export declare class FilterPanel {
|
|
13
|
+
private dialog?;
|
|
13
14
|
private filterCaptionsInternal;
|
|
14
15
|
element: HTMLElement;
|
|
15
16
|
isFilterIdSet: boolean;
|
|
@@ -38,6 +39,8 @@ export declare class FilterPanel {
|
|
|
38
39
|
getChanges(): Promise<ShowData | undefined>;
|
|
39
40
|
componentWillRender(): void;
|
|
40
41
|
getFilterItemsList(): any;
|
|
42
|
+
componentDidRender(): void;
|
|
43
|
+
private syncDialog;
|
|
41
44
|
private autoCorrect;
|
|
42
45
|
private onFilterTypeChange;
|
|
43
46
|
private debouncedApplyFilter;
|
|
@@ -52,6 +55,7 @@ export declare class FilterPanel {
|
|
|
52
55
|
private onFilterDragLeave;
|
|
53
56
|
private onFilterDrop;
|
|
54
57
|
private onFilterDragEnd;
|
|
58
|
+
private onFilterReorderKeyDown;
|
|
55
59
|
private toggleFilterAndOr;
|
|
56
60
|
private assertChanges;
|
|
57
61
|
renderSelectOptions(type: FilterType, isDefaultTypeRemoved?: boolean): VNode[] | undefined;
|
|
@@ -41,6 +41,9 @@ export interface FilterCaptions {
|
|
|
41
41
|
placeholder: string;
|
|
42
42
|
and: string;
|
|
43
43
|
or: string;
|
|
44
|
+
filterCondition: string;
|
|
45
|
+
removeFilter: string;
|
|
46
|
+
reorderFilter: string;
|
|
44
47
|
}
|
|
45
48
|
export interface FilterLocalization {
|
|
46
49
|
captions: Partial<FilterCaptions>;
|
|
@@ -118,6 +121,10 @@ export interface MultiFilterItem {
|
|
|
118
121
|
export interface ShowData extends FilterItem, Omit<ColumnRegular, 'filter'> {
|
|
119
122
|
x: number;
|
|
120
123
|
y: number;
|
|
124
|
+
/**
|
|
125
|
+
* Top viewport coordinate of the element the filter panel is anchored to.
|
|
126
|
+
*/
|
|
127
|
+
anchorY?: number;
|
|
121
128
|
/**
|
|
122
129
|
* Auto correct position if it is out of document bounds
|
|
123
130
|
*/
|