@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
|
@@ -8,7 +8,7 @@ var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
|
8
8
|
var viewport_store = require('./viewport.store-BscUCiUk.js');
|
|
9
9
|
var index$1 = require('./index-DxaSE5uZ.js');
|
|
10
10
|
var index = require('./index-Dq8Xzj5l.js');
|
|
11
|
-
var filter_button = require('./filter.button-
|
|
11
|
+
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
12
12
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
13
13
|
var headerCellRenderer = require('./header-cell-renderer-DyjOxArm.js');
|
|
14
14
|
|
|
@@ -1402,7 +1402,8 @@ class FilterPlugin extends BasePlugin {
|
|
|
1402
1402
|
async headerclick(e) {
|
|
1403
1403
|
var _a, _b;
|
|
1404
1404
|
const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
|
|
1405
|
-
|
|
1405
|
+
const filterButton = filter_button.isFilterBtn(el);
|
|
1406
|
+
if (!filterButton) {
|
|
1406
1407
|
return;
|
|
1407
1408
|
}
|
|
1408
1409
|
e.preventDefault();
|
|
@@ -1416,9 +1417,8 @@ class FilterPlugin extends BasePlugin {
|
|
|
1416
1417
|
return;
|
|
1417
1418
|
}
|
|
1418
1419
|
// filter button clicked, open filter dialog
|
|
1419
|
-
const
|
|
1420
|
-
const
|
|
1421
|
-
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 });
|
|
1420
|
+
const buttonPos = (filterButton instanceof HTMLElement ? filterButton : el).getBoundingClientRect();
|
|
1421
|
+
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 });
|
|
1422
1422
|
(_b = this.beforeshow) === null || _b === void 0 ? void 0 : _b.call(this, data);
|
|
1423
1423
|
this.pop.show(data);
|
|
1424
1424
|
}
|
|
@@ -17,24 +17,18 @@ const FilterButton = ({ column }) => {
|
|
|
17
17
|
[FILTER_BUTTON_ACTIVE]: column && !!column[FILTER_PROP],
|
|
18
18
|
} }, index.h("svg", { class: "filter-img", viewBox: "0 0 64 64" }, index.h("g", { stroke: "none", "stroke-width": "1", fill: "none", "fill-rule": "evenodd" }, index.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" }))))));
|
|
19
19
|
};
|
|
20
|
-
const TrashButton = () => {
|
|
21
|
-
return (index.h("
|
|
20
|
+
const TrashButton = ({ ariaLabel, onClick }) => {
|
|
21
|
+
return (index.h("button", { type: "button", class: { [TRASH_BUTTON]: true }, "aria-label": ariaLabel, onClick: onClick }, index.h("svg", { class: "trash-img", viewBox: "0 0 24 24" }, index.h("path", { fill: "currentColor", d: "M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z" }))));
|
|
22
22
|
};
|
|
23
|
-
const AndOrButton = ({ text }) => {
|
|
24
|
-
return index.h("button", { class: { [AND_OR_BUTTON]: true, 'light revo-button': true } }, text);
|
|
23
|
+
const AndOrButton = ({ text, onClick }) => {
|
|
24
|
+
return index.h("button", { type: "button", class: { [AND_OR_BUTTON]: true, 'light revo-button': true }, onClick: onClick }, text);
|
|
25
25
|
};
|
|
26
|
-
const ReorderButton = ({ dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, }) => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
REORDER_BUTTON,
|
|
33
|
-
dragging ? 'filter-row-dragging' : '',
|
|
34
|
-
dragOver ? 'filter-row-drag-over' : '',
|
|
35
|
-
].filter(Boolean).join(' ');
|
|
36
|
-
};
|
|
37
|
-
return (index.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 }, "::"));
|
|
26
|
+
const ReorderButton = ({ ariaLabel, dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, onKeyDown, }) => {
|
|
27
|
+
return (index.h("button", { type: "button", class: {
|
|
28
|
+
[REORDER_BUTTON]: true,
|
|
29
|
+
'filter-row-dragging': !!dragging,
|
|
30
|
+
'filter-row-drag-over': !!dragOver,
|
|
31
|
+
}, draggable: true, title: ariaLabel, "aria-label": ariaLabel, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragOver: onDragOver, onDragLeave: onDragLeave, onDrop: onDrop, onKeyDown: onKeyDown }, "::"));
|
|
38
32
|
};
|
|
39
33
|
function isFilterBtn(e) {
|
|
40
34
|
if (e.classList.contains(FILTER_BUTTON_CLASS)) {
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var column_service = require('./column.service-BNWNiJW3.js');
|
|
7
|
-
var column_drag_plugin = require('./column.drag.plugin-
|
|
7
|
+
var column_drag_plugin = require('./column.drag.plugin-ByDJ7Rk3.js');
|
|
8
8
|
var headerCellRenderer = require('./header-cell-renderer-DyjOxArm.js');
|
|
9
9
|
var cellRenderer = require('./cell-renderer-DfUCisis.js');
|
|
10
10
|
var index$1 = require('./index-DxaSE5uZ.js');
|
|
@@ -13,7 +13,7 @@ var edit_utils = require('./edit.utils-pKeiYFLJ.js');
|
|
|
13
13
|
var index = require('./index-Dq8Xzj5l.js');
|
|
14
14
|
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
15
15
|
var viewport_store = require('./viewport.store-BscUCiUk.js');
|
|
16
|
-
var filter_button = require('./filter.button-
|
|
16
|
+
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
17
17
|
require('./debounce-CcpHiH2p.js');
|
|
18
18
|
|
|
19
19
|
const REVOGRID_EVENTS = new Map([
|
|
@@ -8,12 +8,12 @@ var column_service = require('./column.service-BNWNiJW3.js');
|
|
|
8
8
|
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
9
9
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
10
10
|
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
11
|
-
var column_drag_plugin = require('./column.drag.plugin-
|
|
11
|
+
var column_drag_plugin = require('./column.drag.plugin-ByDJ7Rk3.js');
|
|
12
12
|
var viewport_store = require('./viewport.store-BscUCiUk.js');
|
|
13
13
|
var theme_service = require('./theme.service-BgnxGIjK.js');
|
|
14
14
|
var index$1 = require('./index-DxaSE5uZ.js');
|
|
15
15
|
var events = require('./events-DeLDyZlb.js');
|
|
16
|
-
require('./filter.button-
|
|
16
|
+
require('./filter.button-C4xpvyyE.js');
|
|
17
17
|
require('./header-cell-renderer-DyjOxArm.js');
|
|
18
18
|
|
|
19
19
|
class ColumnDataProvider {
|
|
@@ -145,7 +145,7 @@ const Clipboard = class {
|
|
|
145
145
|
}
|
|
146
146
|
getData(e) {
|
|
147
147
|
return (e.clipboardData ||
|
|
148
|
-
(
|
|
148
|
+
(globalThis === null || globalThis === void 0 ? void 0 : globalThis.clipboardData));
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
151
|
|
|
@@ -7,7 +7,7 @@ var index = require('./index-Dq8Xzj5l.js');
|
|
|
7
7
|
var column_service = require('./column.service-BNWNiJW3.js');
|
|
8
8
|
var dimension_helpers = require('./dimension.helpers-B9HgANnM.js');
|
|
9
9
|
var cellRenderer = require('./cell-renderer-DfUCisis.js');
|
|
10
|
-
var filter_button = require('./filter.button-
|
|
10
|
+
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
11
11
|
var headerCellRenderer = require('./header-cell-renderer-DyjOxArm.js');
|
|
12
12
|
var throttle = require('./throttle-BCwEuJJq.js');
|
|
13
13
|
var viewport_helpers = require('./viewport.helpers-BND76K2j.js');
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
var index = require('./index-Dq8Xzj5l.js');
|
|
7
7
|
var debounce = require('./debounce-CcpHiH2p.js');
|
|
8
|
-
var filter_button = require('./filter.button-
|
|
8
|
+
var filter_button = require('./filter.button-C4xpvyyE.js');
|
|
9
9
|
|
|
10
10
|
(function closest() {
|
|
11
11
|
if (!Element.prototype.matches) {
|
|
@@ -68,12 +68,13 @@ function moveFilterItem(items, sourceId, targetId) {
|
|
|
68
68
|
return true;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
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{
|
|
71
|
+
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}`;
|
|
72
72
|
|
|
73
73
|
const defaultType = 'none';
|
|
74
74
|
const FILTER_LIST_CLASS = 'multi-filter-list';
|
|
75
75
|
const FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';
|
|
76
76
|
const FILTER_ID = 'add-filter';
|
|
77
|
+
const VIEWPORT_PADDING = 8;
|
|
77
78
|
const FilterPanel = class {
|
|
78
79
|
constructor(hostRef) {
|
|
79
80
|
index.registerInstance(this, hostRef);
|
|
@@ -90,6 +91,9 @@ const FilterPanel = class {
|
|
|
90
91
|
placeholder: 'Enter value...',
|
|
91
92
|
and: 'and',
|
|
92
93
|
or: 'or',
|
|
94
|
+
filterCondition: 'Filter condition',
|
|
95
|
+
removeFilter: 'Remove filter',
|
|
96
|
+
reorderFilter: 'Reorder filter',
|
|
93
97
|
};
|
|
94
98
|
this.isFilterIdSet = false;
|
|
95
99
|
this.filterId = 0;
|
|
@@ -164,36 +168,75 @@ const FilterPanel = class {
|
|
|
164
168
|
return '';
|
|
165
169
|
const propFilters = (_b = this.filterItems[prop]) !== null && _b !== void 0 ? _b : [];
|
|
166
170
|
const visibleFilterCount = propFilters.filter(filter => !filter.hidden).length;
|
|
167
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
168
|
-
return (index.h("div", { key: this.filterId }, propFilters.map((filter, index$1) => {
|
|
171
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
172
|
+
return (index.h("div", { key: this.filterId }, index.h("ul", { class: "multi-filter-list-container" }, propFilters.map((filter, index$1) => {
|
|
169
173
|
let andOrButton;
|
|
170
174
|
if (filter.hidden) {
|
|
171
175
|
return;
|
|
172
176
|
}
|
|
173
177
|
// hide toggle button if there is only one filter and the last one
|
|
174
178
|
if (index$1 !== this.filterItems[prop].length - 1) {
|
|
175
|
-
andOrButton = (index.h(
|
|
179
|
+
andOrButton = (index.h(filter_button.AndOrButton, { text: filter.relation === 'and' ? capts.and : capts.or, onClick: () => this.toggleFilterAndOr(filter.id) }));
|
|
176
180
|
}
|
|
177
181
|
const extra = this.renderExtra(prop, index$1);
|
|
178
|
-
|
|
179
|
-
|
|
182
|
+
const isDragging = this.draggedFilterId === filter.id;
|
|
183
|
+
const isDragOver = this.dragOverFilterId === filter.id && !isDragging;
|
|
184
|
+
const canReorder = visibleFilterCount > 1;
|
|
185
|
+
return (index.h("li", { key: filter.id, class: FILTER_LIST_CLASS, "aria-label": `${capts.filterCondition} ${index$1 + 1}` }, index.h("div", { class: {
|
|
186
|
+
'multi-filter-list-row': true,
|
|
187
|
+
'filter-row-drop-active': this.draggedFilterId !== undefined && !isDragging,
|
|
188
|
+
'filter-row-dragging': isDragging,
|
|
189
|
+
'filter-row-drag-over': isDragOver,
|
|
190
|
+
} }, canReorder ? (index.h("button", { type: "button", class: "filter-row-drop-target", tabIndex: -1, "aria-label": `${capts.filterCondition} ${index$1 + 1}`, onDragOver: e => this.onFilterDragOver(e, filter.id), onDragLeave: () => this.onFilterDragLeave(filter.id), onDrop: e => this.onFilterDrop(e, prop, filter.id) })) : '', canReorder ? (index.h(filter_button.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) })) : '', index.h("div", { class: { 'select-input': true } }, index.h("select", { class: "select-css select-filter", onChange: e => this.onFilterTypeChange(e, prop, index$1) }, this.renderSelectOptions(this.filterItems[prop][index$1].type, true)), extra ? index.h("div", { class: "filter-extra" }, extra) : ''), index.h("div", { class: FILTER_LIST_CLASS_ACTION }, andOrButton, index.h(filter_button.TrashButton, { ariaLabel: capts.removeFilter, onClick: () => this.onRemoveFilter(filter.id) })))));
|
|
191
|
+
})), propFilters.filter(f => !f.hidden).length > 0 ? index.h("div", { class: "add-filter-divider" }) : ''));
|
|
180
192
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
193
|
+
componentDidRender() {
|
|
194
|
+
this.syncDialog();
|
|
195
|
+
}
|
|
196
|
+
syncDialog() {
|
|
197
|
+
if (!this.dialog) {
|
|
184
198
|
return;
|
|
185
199
|
}
|
|
186
|
-
|
|
187
|
-
|
|
200
|
+
if (!this.changes) {
|
|
201
|
+
if (this.dialog.open) {
|
|
202
|
+
this.dialog.close();
|
|
203
|
+
}
|
|
188
204
|
return;
|
|
189
205
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (
|
|
194
|
-
|
|
206
|
+
if (!this.dialog.open) {
|
|
207
|
+
this.dialog.show();
|
|
208
|
+
}
|
|
209
|
+
if (this.changes.autoCorrect !== false) {
|
|
210
|
+
this.autoCorrect(this.dialog);
|
|
211
|
+
requestAnimationFrame(() => this.autoCorrect(this.dialog));
|
|
195
212
|
}
|
|
196
213
|
}
|
|
214
|
+
autoCorrect(el) {
|
|
215
|
+
var _a;
|
|
216
|
+
if (!el || !this.changes) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
el.style.maxHeight = '';
|
|
220
|
+
el.style.left = `${this.changes.x}px`;
|
|
221
|
+
el.style.top = `${this.changes.y}px`;
|
|
222
|
+
const pos = el.getBoundingClientRect();
|
|
223
|
+
const anchorTop = (_a = this.changes.anchorY) !== null && _a !== void 0 ? _a : this.changes.y;
|
|
224
|
+
const anchorBottom = this.changes.y;
|
|
225
|
+
const spaceAbove = Math.max(0, anchorTop - VIEWPORT_PADDING);
|
|
226
|
+
const spaceBelow = Math.max(0, window.innerHeight - anchorBottom - VIEWPORT_PADDING);
|
|
227
|
+
const openAbove = pos.height > spaceBelow && spaceAbove > spaceBelow;
|
|
228
|
+
const availableHeight = Math.max(VIEWPORT_PADDING, openAbove ? spaceAbove : spaceBelow);
|
|
229
|
+
el.style.maxHeight = `${availableHeight}px`;
|
|
230
|
+
const adjustedPos = el.getBoundingClientRect();
|
|
231
|
+
const maxLeft = Math.max(VIEWPORT_PADDING, window.innerWidth - adjustedPos.width - VIEWPORT_PADDING);
|
|
232
|
+
const maxTop = Math.max(VIEWPORT_PADDING, window.innerHeight - adjustedPos.height - VIEWPORT_PADDING);
|
|
233
|
+
const left = Math.min(Math.max(VIEWPORT_PADDING, this.changes.x), maxLeft);
|
|
234
|
+
const top = openAbove
|
|
235
|
+
? Math.min(Math.max(VIEWPORT_PADDING, anchorTop - adjustedPos.height), maxTop)
|
|
236
|
+
: Math.min(Math.max(VIEWPORT_PADDING, anchorBottom), maxTop);
|
|
237
|
+
el.style.left = `${left}px`;
|
|
238
|
+
el.style.top = `${top}px`;
|
|
239
|
+
}
|
|
197
240
|
onFilterTypeChange(e, prop, index) {
|
|
198
241
|
if (!(e.target instanceof HTMLSelectElement)) {
|
|
199
242
|
return;
|
|
@@ -327,6 +370,37 @@ const FilterPanel = class {
|
|
|
327
370
|
this.draggedFilterId = undefined;
|
|
328
371
|
this.dragOverFilterId = undefined;
|
|
329
372
|
}
|
|
373
|
+
onFilterReorderKeyDown(e, prop, sourceId) {
|
|
374
|
+
let direction = 0;
|
|
375
|
+
if (e.key === 'ArrowUp') {
|
|
376
|
+
direction = -1;
|
|
377
|
+
}
|
|
378
|
+
else if (e.key === 'ArrowDown') {
|
|
379
|
+
direction = 1;
|
|
380
|
+
}
|
|
381
|
+
else {
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
const items = this.filterItems[prop];
|
|
385
|
+
if (!items) {
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
const visibleItems = items.filter(item => !item.hidden);
|
|
389
|
+
const sourceIndex = visibleItems.findIndex(item => item.id === sourceId);
|
|
390
|
+
if (sourceIndex === -1) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
e.preventDefault();
|
|
394
|
+
e.stopPropagation();
|
|
395
|
+
const target = visibleItems[sourceIndex + direction];
|
|
396
|
+
if (!target || !moveFilterItem(items, sourceId, target.id)) {
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
this.filterId++;
|
|
400
|
+
if (!this.disableDynamicFiltering) {
|
|
401
|
+
this.debouncedApplyFilter();
|
|
402
|
+
}
|
|
403
|
+
}
|
|
330
404
|
toggleFilterAndOr(id) {
|
|
331
405
|
var _a;
|
|
332
406
|
this.assertChanges();
|
|
@@ -365,7 +439,7 @@ const FilterPanel = class {
|
|
|
365
439
|
});
|
|
366
440
|
});
|
|
367
441
|
if (!isDefaultTypeRemoved) {
|
|
368
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
442
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
369
443
|
options.push(index.h("option", { selected: this.currentFilterType === defaultType, value: defaultType }, prop && this.filterItems[prop] && this.filterItems[prop].length > 0
|
|
370
444
|
? capts.add
|
|
371
445
|
: this.filterNames[defaultType]));
|
|
@@ -398,7 +472,7 @@ const FilterPanel = class {
|
|
|
398
472
|
select.focus();
|
|
399
473
|
}
|
|
400
474
|
};
|
|
401
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
475
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
402
476
|
const extra = this.filterEntities[currentFilter[index$1].type].extra;
|
|
403
477
|
if (typeof extra === 'function') {
|
|
404
478
|
return extra(index.h, {
|
|
@@ -435,30 +509,34 @@ const FilterPanel = class {
|
|
|
435
509
|
} }));
|
|
436
510
|
}
|
|
437
511
|
render() {
|
|
438
|
-
var _a, _b, _c, _d, _e;
|
|
439
|
-
if (!this.changes) {
|
|
440
|
-
return index.h(index.Host, { style: { display: 'none' } });
|
|
441
|
-
}
|
|
512
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
442
513
|
const style = {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
top: `${this.changes.y}px`,
|
|
514
|
+
left: `${(_b = (_a = this.changes) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0}px`,
|
|
515
|
+
top: `${(_d = (_c = this.changes) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0}px`,
|
|
446
516
|
};
|
|
447
|
-
const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);
|
|
448
|
-
return (index.h(index.Host, { style: style, ref: el => {
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
} },
|
|
452
|
-
index.h("
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
index.h("
|
|
460
|
-
|
|
461
|
-
|
|
517
|
+
const capts = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
|
|
518
|
+
return (index.h(index.Host, { key: '4e969f8b7033363c885c94b1f7770917786669f2' }, index.h("dialog", { key: '79b2713724684fa99f56621fe43645a0b0ad54bf', class: "filter-panel-dialog", style: style, ref: el => (this.dialog = el), onCancel: e => {
|
|
519
|
+
e.preventDefault();
|
|
520
|
+
this.onCancel();
|
|
521
|
+
} }, this.changes && [
|
|
522
|
+
index.h("slot", { key: "header-slot", slot: "header" }),
|
|
523
|
+
((_f = (_e = this.changes).extraContent) === null || _f === void 0 ? void 0 : _f.call(_e, this.changes)) || '',
|
|
524
|
+
((_g = this.changes) === null || _g === void 0 ? void 0 : _g.hideDefaultFilters) !== true && [
|
|
525
|
+
index.h("label", { key: "filter-title" }, capts.title),
|
|
526
|
+
index.h("div", { key: "filter-holder", class: "filter-holder" }, this.getFilterItemsList()),
|
|
527
|
+
index.h("div", { key: "add-filter", class: "add-filter" }, index.h("select", { key: 'fc894bdfae1ff35d5c49adc7646dd3182b7bd49e', id: FILTER_ID, class: "select-css", onChange: e => this.onAddNewFilter(e) }, this.renderSelectOptions(this.currentFilterType))),
|
|
528
|
+
],
|
|
529
|
+
index.h("slot", { key: "default-slot" }),
|
|
530
|
+
((_j = (_h = this.changes).extraBottomContent) === null || _j === void 0 ? void 0 : _j.call(_h, this.changes)) || '',
|
|
531
|
+
index.h("div", { key: "filter-actions", class: "filter-actions" }, this.disableDynamicFiltering && [
|
|
532
|
+
index.h("button", { key: "save", id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, capts.save),
|
|
533
|
+
index.h("button", { key: "cancel", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.cancel),
|
|
534
|
+
], !this.disableDynamicFiltering && [
|
|
535
|
+
index.h("button", { key: "ok", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, capts.ok),
|
|
536
|
+
index.h("button", { key: "reset", id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, capts.reset),
|
|
537
|
+
]),
|
|
538
|
+
index.h("slot", { key: "footer-slot", slot: "footer" }),
|
|
539
|
+
])));
|
|
462
540
|
}
|
|
463
541
|
get element() { return index.getElement(this); }
|
|
464
542
|
};
|
|
@@ -124,7 +124,7 @@ export class Clipboard {
|
|
|
124
124
|
}
|
|
125
125
|
getData(e) {
|
|
126
126
|
return (e.clipboardData ||
|
|
127
|
-
(
|
|
127
|
+
(globalThis === null || globalThis === void 0 ? void 0 : globalThis.clipboardData));
|
|
128
128
|
}
|
|
129
129
|
static get is() { return "revogr-clipboard"; }
|
|
130
130
|
static get properties() {
|
|
@@ -14,24 +14,18 @@ export const FilterButton = ({ column }) => {
|
|
|
14
14
|
[FILTER_BUTTON_ACTIVE]: column && !!column[FILTER_PROP],
|
|
15
15
|
} }, 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" }))))));
|
|
16
16
|
};
|
|
17
|
-
export const TrashButton = () => {
|
|
18
|
-
return (h("
|
|
17
|
+
export const TrashButton = ({ ariaLabel, onClick }) => {
|
|
18
|
+
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" }))));
|
|
19
19
|
};
|
|
20
|
-
export const AndOrButton = ({ text }) => {
|
|
21
|
-
return h("button", { class: { [AND_OR_BUTTON]: true, 'light revo-button': true } }, text);
|
|
20
|
+
export const AndOrButton = ({ text, onClick }) => {
|
|
21
|
+
return h("button", { type: "button", class: { [AND_OR_BUTTON]: true, 'light revo-button': true }, onClick: onClick }, text);
|
|
22
22
|
};
|
|
23
|
-
export const ReorderButton = ({ dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, }) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
REORDER_BUTTON,
|
|
30
|
-
dragging ? 'filter-row-dragging' : '',
|
|
31
|
-
dragOver ? 'filter-row-drag-over' : '',
|
|
32
|
-
].filter(Boolean).join(' ');
|
|
33
|
-
};
|
|
34
|
-
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 }, "::"));
|
|
23
|
+
export const ReorderButton = ({ ariaLabel, dragging, dragOver, onDragStart, onDragEnd, onDragOver, onDragLeave, onDrop, onKeyDown, }) => {
|
|
24
|
+
return (h("button", { type: "button", class: {
|
|
25
|
+
[REORDER_BUTTON]: true,
|
|
26
|
+
'filter-row-dragging': !!dragging,
|
|
27
|
+
'filter-row-drag-over': !!dragOver,
|
|
28
|
+
}, draggable: true, title: ariaLabel, "aria-label": ariaLabel, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragOver: onDragOver, onDragLeave: onDragLeave, onDrop: onDrop, onKeyDown: onKeyDown }, "::"));
|
|
35
29
|
};
|
|
36
30
|
export function isFilterBtn(e) {
|
|
37
31
|
if (e.classList.contains(FILTER_BUTTON_CLASS)) {
|