@endge/ui-vue 0.23.3

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.
Files changed (79) hide show
  1. package/LICENSE +201 -0
  2. package/dist/domain/core/endge-vue.d.ts +22 -0
  3. package/dist/domain/types/filter-renderer.type.d.ts +5 -0
  4. package/dist/domain/types/sfc-render.type.d.ts +143 -0
  5. package/dist/edit.utils-Dnnbd0xG-D9ndNtVP.js +51 -0
  6. package/dist/events-BvSmBueA-Doh7RyHn.js +23 -0
  7. package/dist/main-CQv-nkoD.js +19453 -0
  8. package/dist/main.d.ts +42 -0
  9. package/dist/model/render/sfc/SFCVueRenderInspection.d.ts +12 -0
  10. package/dist/model/render/sfc/SFCVueRuntimeBridge.d.ts +43 -0
  11. package/dist/model/render/sfc/native-vue-sfc-adapter.d.ts +4 -0
  12. package/dist/model/style/EndgeDOMStyleRuntime.d.ts +10 -0
  13. package/dist/model/style/endge-dom-style.d.ts +17 -0
  14. package/dist/model/style/index.d.ts +2 -0
  15. package/dist/reactive/use-current-environment.d.ts +8 -0
  16. package/dist/reactive/use-current-locale.d.ts +8 -0
  17. package/dist/reactive/use-current-project-filter.d.ts +8 -0
  18. package/dist/reactive/use-current-theme.d.ts +8 -0
  19. package/dist/reactive/use-ui.d.ts +3 -0
  20. package/dist/revo-grid.entry-BAwst49a.js +1615 -0
  21. package/dist/revogr-attribution_7.entry-BMG7pXkt.js +967 -0
  22. package/dist/revogr-clipboard_3.entry-BRLLR59Q.js +334 -0
  23. package/dist/revogr-data_4.entry-D1ndZEok.js +745 -0
  24. package/dist/revogr-filter-panel.entry-C-xzIppO.js +329 -0
  25. package/dist/store/domain.d.ts +91 -0
  26. package/dist/test/overlay/context-menu-manager.test.d.ts +1 -0
  27. package/dist/test/sfc/EndgeVueAdapter.test.d.ts +1 -0
  28. package/dist/test/sfc/SFCRender_Component.test.d.ts +1 -0
  29. package/dist/test/sfc/SFCRender_Evaluator.test.d.ts +1 -0
  30. package/dist/test/sfc/SFCRender_FormControls.test.d.ts +1 -0
  31. package/dist/test/sfc/SFCRender_Grid.test.d.ts +1 -0
  32. package/dist/test/sfc/SFCRender_IntrinsicEvents.test.d.ts +1 -0
  33. package/dist/test/sfc/SFCRender_TableAlignment.test.d.ts +1 -0
  34. package/dist/test/sfc/SFCRender_TableLayout.test.d.ts +1 -0
  35. package/dist/test/sfc/SFCRender_TableVisibility.test.d.ts +1 -0
  36. package/dist/test/sfc/SFCVueRenderInspection.test.d.ts +1 -0
  37. package/dist/test/style/endge-dom-runtime-placement.test.d.ts +1 -0
  38. package/dist/test/style/endge-dom-style-jsdom.test.d.ts +1 -0
  39. package/dist/test/style/endge-dom-style.test.d.ts +1 -0
  40. package/dist/test/style/sfc-style-markers.test.d.ts +1 -0
  41. package/dist/throttle-Cpk1LoGk-5dM_0aHc.js +183 -0
  42. package/dist/ui/filter/EndgeFilterControlRenderer.d.ts +33 -0
  43. package/dist/ui/filter/EndgeFilterField.vue.d.ts +13 -0
  44. package/dist/ui/filter/EndgeFilterRenderer.vue.d.ts +3 -0
  45. package/dist/ui/filter/index.d.ts +2 -0
  46. package/dist/ui/layout/EndgeShell.vue.d.ts +22 -0
  47. package/dist/ui/overlay/EndgeContextMenuRoot.vue.d.ts +4 -0
  48. package/dist/ui/overlay/context-menu-manager.d.ts +46 -0
  49. package/dist/ui/render/entities/EndgePage.vue.d.ts +1852 -0
  50. package/dist/ui/render/sfc/SFCRender_Badge.d.ts +3 -0
  51. package/dist/ui/render/sfc/SFCRender_Base.d.ts +8 -0
  52. package/dist/ui/render/sfc/SFCRender_BoundaryRegistry.d.ts +15 -0
  53. package/dist/ui/render/sfc/SFCRender_Box.d.ts +3 -0
  54. package/dist/ui/render/sfc/SFCRender_Checkbox.d.ts +3 -0
  55. package/dist/ui/render/sfc/SFCRender_Component.d.ts +3 -0
  56. package/dist/ui/render/sfc/SFCRender_Context.d.ts +8 -0
  57. package/dist/ui/render/sfc/SFCRender_DateTime.d.ts +3 -0
  58. package/dist/ui/render/sfc/SFCRender_Divider.d.ts +3 -0
  59. package/dist/ui/render/sfc/SFCRender_Dot.d.ts +3 -0
  60. package/dist/ui/render/sfc/SFCRender_Evaluator.d.ts +19 -0
  61. package/dist/ui/render/sfc/SFCRender_Flex.d.ts +3 -0
  62. package/dist/ui/render/sfc/SFCRender_Grid.d.ts +3 -0
  63. package/dist/ui/render/sfc/SFCRender_Icon.d.ts +3 -0
  64. package/dist/ui/render/sfc/SFCRender_Input.d.ts +3 -0
  65. package/dist/ui/render/sfc/SFCRender_Node.d.ts +6 -0
  66. package/dist/ui/render/sfc/SFCRender_Number.d.ts +3 -0
  67. package/dist/ui/render/sfc/SFCRender_Select.d.ts +3 -0
  68. package/dist/ui/render/sfc/SFCRender_Table.d.ts +9 -0
  69. package/dist/ui/render/sfc/SFCRender_TableAlignment.d.ts +8 -0
  70. package/dist/ui/render/sfc/SFCRender_TableStyle.d.ts +35 -0
  71. package/dist/ui/render/sfc/SFCRender_Text.d.ts +3 -0
  72. package/dist/ui/render/sfc/SFCRender_Textarea.d.ts +3 -0
  73. package/dist/ui/render/sfc/SFC_Renderer.vue.d.ts +3 -0
  74. package/dist/ui/render/sfc/SFC_RuntimeRenderer.vue.d.ts +3 -0
  75. package/dist/ui/table/NativeTablePagination.vue.d.ts +15 -0
  76. package/dist/viewport.helpers-CoCAvmZs-f555rwPU.js +77 -0
  77. package/dist/vue.css +1 -0
  78. package/dist/vue.js +75 -0
  79. package/package.json +77 -0
@@ -0,0 +1,329 @@
1
+ import { r as F, c as m, l as I, h as s, J as w, K as C, L as k, M as D, H as E, f as O } from "./main-CQv-nkoD.js";
2
+ /*!
3
+ * Built by Revolist OU ❤️
4
+ */
5
+ (function() {
6
+ Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector), Element.prototype.closest || (Element.prototype.closest = function(i) {
7
+ let t = this;
8
+ do {
9
+ if (Element.prototype.matches.call(t, i))
10
+ return t;
11
+ t = t.parentElement || t.parentNode;
12
+ } while (t !== null && t.nodeType === 1);
13
+ return null;
14
+ });
15
+ })();
16
+ const y = "text/revogrid-filter-id";
17
+ function S(e, i) {
18
+ e && (e.effectAllowed = "move", e.setData(y, String(i)), e.setData("text/plain", String(i)));
19
+ }
20
+ function A(e) {
21
+ if (!e)
22
+ return;
23
+ const t = (e.getData(y) || e.getData("text/plain")).trim();
24
+ if (!t)
25
+ return;
26
+ const r = Number(t);
27
+ return Number.isFinite(r) ? r : void 0;
28
+ }
29
+ function b(e, i, t) {
30
+ if (i === t)
31
+ return !1;
32
+ const r = e.findIndex((n) => n.id === i), a = e.findIndex((n) => n.id === t);
33
+ if (r === -1 || a === -1 || r === a)
34
+ return !1;
35
+ const o = e.map((n) => {
36
+ var d;
37
+ return (d = n.relation) !== null && d !== void 0 ? d : "and";
38
+ }), [l] = e.splice(r, 1);
39
+ return e.splice(a, 0, l), e.forEach((n, d) => {
40
+ var c;
41
+ n.relation = d === e.length - 1 ? "and" : (c = o[d]) !== null && c !== void 0 ? c : "and";
42
+ }), !0;
43
+ }
44
+ const T = () => '.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}', f = "none", _ = "multi-filter-list", R = "multi-filter-list-action", x = "add-filter", u = 8, L = class {
45
+ constructor(e) {
46
+ F(this, e), this.filterChange = m(this, "filterChange", 7), this.resetChange = m(this, "resetChange", 7), this.filterCaptionsInternal = {
47
+ title: "Filter by",
48
+ ok: "Close",
49
+ save: "Save",
50
+ // drops the filter
51
+ reset: "Reset",
52
+ cancel: "Cancel",
53
+ add: "Add condition",
54
+ placeholder: "Enter value...",
55
+ and: "and",
56
+ or: "or",
57
+ filterCondition: "Filter condition",
58
+ removeFilter: "Remove filter",
59
+ reorderFilter: "Reorder filter"
60
+ }, this.isFilterIdSet = !1, this.filterId = 0, this.currentFilterId = -1, this.currentFilterType = f, this.filterItems = {}, this.filterNames = {}, this.filterEntities = {}, this.disableDynamicFiltering = !1, this.closeOnOutsideClick = !0, this.debouncedApplyFilter = I(() => {
61
+ this.filterChange.emit(this.filterItems);
62
+ }, 400);
63
+ }
64
+ onMouseDown(e) {
65
+ if (!this.changes)
66
+ return;
67
+ const i = e.composedPath(), t = this.getAddFilterSelect();
68
+ if (t instanceof HTMLSelectElement) {
69
+ if (i.includes(t))
70
+ return;
71
+ t.value = f;
72
+ }
73
+ this.currentFilterType = f, this.changes && (this.changes.type = f), this.currentFilterId = -1, !i.includes(this.element) && !this.isOwnFilterButton(e.target) && this.closeOnOutsideClick && (this.changes = void 0);
74
+ }
75
+ async show(e) {
76
+ this.changes = e, this.filterItems = (e == null ? void 0 : e.filterItems) || {}, this.changes && (this.changes.type = this.changes.type || f);
77
+ }
78
+ async getChanges() {
79
+ return this.changes;
80
+ }
81
+ componentWillRender() {
82
+ if (!this.isFilterIdSet) {
83
+ this.isFilterIdSet = !0;
84
+ const e = Object.keys(this.filterItems);
85
+ for (const i of e)
86
+ this.filterId += this.filterItems[i].length;
87
+ }
88
+ }
89
+ getFilterItemsList() {
90
+ var e, i;
91
+ const t = (e = this.changes) === null || e === void 0 ? void 0 : e.prop;
92
+ if (typeof t > "u")
93
+ return "";
94
+ const r = (i = this.filterItems[t]) !== null && i !== void 0 ? i : [], a = r.filter((l) => !l.hidden).length, o = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
95
+ return s("div", { key: this.filterId }, s("ul", { class: "multi-filter-list-container" }, r.map((l, n) => {
96
+ let d;
97
+ if (l.hidden)
98
+ return;
99
+ n !== this.filterItems[t].length - 1 && (d = s(w, { text: l.relation === "and" ? o.and : o.or, onClick: () => this.toggleFilterAndOr(l.id) }));
100
+ const c = this.renderExtra(t, n), h = this.draggedFilterId === l.id, p = this.dragOverFilterId === l.id && !h, v = a > 1;
101
+ return s("li", { key: l.id, class: _, "aria-label": `${o.filterCondition} ${n + 1}` }, s("div", { class: {
102
+ "multi-filter-list-row": !0,
103
+ "filter-row-drop-active": this.draggedFilterId !== void 0 && !h,
104
+ "filter-row-dragging": h,
105
+ "filter-row-drag-over": p
106
+ } }, v ? s("button", { type: "button", class: "filter-row-drop-target", tabIndex: -1, "aria-label": `${o.filterCondition} ${n + 1}`, onDragOver: (g) => this.onFilterDragOver(g, l.id), onDragLeave: () => this.onFilterDragLeave(l.id), onDrop: (g) => this.onFilterDrop(g, t, l.id) }) : "", v ? s(C, { ariaLabel: o.reorderFilter, dragging: h, dragOver: p, onDragStart: (g) => this.onFilterDragStart(g, l.id), onDragEnd: () => this.onFilterDragEnd(), onKeyDown: (g) => this.onFilterReorderKeyDown(g, t, l.id) }) : "", s("div", { class: { "select-input": !0 } }, s("select", { class: "select-css select-filter", onChange: (g) => this.onFilterTypeChange(g, t, n) }, this.renderSelectOptions(this.filterItems[t][n].type, !0)), c ? s("div", { class: "filter-extra" }, c) : ""), s("div", { class: R }, d, s(k, { ariaLabel: o.removeFilter, onClick: () => this.onRemoveFilter(l.id) }))));
107
+ })), r.filter((l) => !l.hidden).length > 0 ? s("div", { class: "add-filter-divider" }) : "");
108
+ }
109
+ componentDidRender() {
110
+ this.syncDialog();
111
+ }
112
+ syncDialog() {
113
+ if (this.dialog) {
114
+ if (!this.changes) {
115
+ this.dialog.open && this.dialog.close();
116
+ return;
117
+ }
118
+ this.dialog.open || this.dialog.show(), this.changes.autoCorrect !== !1 && (this.autoCorrect(this.dialog), requestAnimationFrame(() => this.autoCorrect(this.dialog)));
119
+ }
120
+ }
121
+ autoCorrect(e) {
122
+ var i;
123
+ if (!e || !this.changes)
124
+ return;
125
+ e.style.maxHeight = "", e.style.left = `${this.changes.x}px`, e.style.top = `${this.changes.y}px`;
126
+ const t = e.getBoundingClientRect(), r = (i = this.changes.anchorY) !== null && i !== void 0 ? i : this.changes.y, a = this.changes.y, o = Math.max(0, r - u), l = Math.max(0, window.innerHeight - a - u), n = t.height > l && o > l, d = Math.max(u, n ? o : l);
127
+ e.style.maxHeight = `${d}px`;
128
+ const c = e.getBoundingClientRect(), h = Math.max(u, window.innerWidth - c.width - u), p = Math.max(u, window.innerHeight - c.height - u), v = Math.min(Math.max(u, this.changes.x), h), g = Math.min(n ? Math.max(u, r - c.height) : Math.max(u, a), p);
129
+ e.style.left = `${v}px`, e.style.top = `${g}px`;
130
+ }
131
+ onFilterTypeChange(e, i, t) {
132
+ e.target instanceof HTMLSelectElement && (this.filterItems[i][t].type = e.target.value, this.filterId++, setTimeout(() => {
133
+ const r = document.getElementById("filter-input-" + this.filterItems[i][t].id);
134
+ r instanceof HTMLInputElement && r.focus();
135
+ }, 0), this.disableDynamicFiltering || this.debouncedApplyFilter());
136
+ }
137
+ onAddNewFilter(e) {
138
+ const i = e.target;
139
+ this.currentFilterType = i.value, this.addNewFilterToProp();
140
+ const t = this.getAddFilterSelect();
141
+ t && (t.value = f, this.currentFilterType = f), this.disableDynamicFiltering || this.debouncedApplyFilter();
142
+ }
143
+ addNewFilterToProp() {
144
+ var e;
145
+ const i = (e = this.changes) === null || e === void 0 ? void 0 : e.prop;
146
+ (i || i === 0) && (this.filterItems[i] || (this.filterItems[i] = []), this.currentFilterType !== "none" && (this.filterId++, this.currentFilterId = this.filterId, this.filterItems[i].push({
147
+ id: this.currentFilterId,
148
+ type: this.currentFilterType,
149
+ value: "",
150
+ relation: "and"
151
+ }), setTimeout(() => {
152
+ const t = document.getElementById("filter-input-" + this.currentFilterId);
153
+ t && t.focus();
154
+ }, 0)));
155
+ }
156
+ onSave() {
157
+ this.filterChange.emit(this.filterItems);
158
+ }
159
+ onCancel() {
160
+ this.changes = void 0;
161
+ }
162
+ onReset() {
163
+ var e;
164
+ this.assertChanges(), this.resetChange.emit((e = this.changes) === null || e === void 0 ? void 0 : e.prop), this.filterId++;
165
+ }
166
+ onRemoveFilter(e) {
167
+ var i;
168
+ this.assertChanges(), this.filterId++;
169
+ const t = (i = this.changes) === null || i === void 0 ? void 0 : i.prop, r = this.filterItems[t ?? ""];
170
+ if (!r)
171
+ return;
172
+ const a = r.findIndex((o) => o.id === e);
173
+ a !== -1 && (r.splice(a, 1), r.length === 0 && delete this.filterItems[t ?? ""], this.disableDynamicFiltering || this.debouncedApplyFilter());
174
+ }
175
+ onFilterDragStart(e, i) {
176
+ this.draggedFilterId = i, S(e.dataTransfer, i);
177
+ }
178
+ onFilterDragOver(e, i) {
179
+ this.draggedFilterId === void 0 || this.draggedFilterId === i || (e.preventDefault(), e.dataTransfer && (e.dataTransfer.dropEffect = "move"), this.dragOverFilterId = i);
180
+ }
181
+ onFilterDragLeave(e) {
182
+ this.dragOverFilterId === e && (this.dragOverFilterId = void 0);
183
+ }
184
+ onFilterDrop(e, i, t) {
185
+ var r;
186
+ e.preventDefault();
187
+ const a = (r = this.draggedFilterId) !== null && r !== void 0 ? r : A(e.dataTransfer);
188
+ if (this.onFilterDragEnd(), a === void 0)
189
+ return;
190
+ const o = this.filterItems[i];
191
+ o && b(o, a, t) && (this.filterId++, this.disableDynamicFiltering || this.debouncedApplyFilter());
192
+ }
193
+ onFilterDragEnd() {
194
+ this.draggedFilterId = void 0, this.dragOverFilterId = void 0;
195
+ }
196
+ onFilterReorderKeyDown(e, i, t) {
197
+ let r = 0;
198
+ if (e.key === "ArrowUp")
199
+ r = -1;
200
+ else if (e.key === "ArrowDown")
201
+ r = 1;
202
+ else
203
+ return;
204
+ const a = this.filterItems[i];
205
+ if (!a)
206
+ return;
207
+ const o = a.filter((d) => !d.hidden), l = o.findIndex((d) => d.id === t);
208
+ if (l === -1)
209
+ return;
210
+ e.preventDefault(), e.stopPropagation();
211
+ const n = o[l + r];
212
+ !n || !b(a, t, n.id) || (this.filterId++, this.disableDynamicFiltering || this.debouncedApplyFilter());
213
+ }
214
+ toggleFilterAndOr(e) {
215
+ var i;
216
+ this.assertChanges(), this.filterId++;
217
+ const t = (i = this.changes) === null || i === void 0 ? void 0 : i.prop, r = this.filterItems[t ?? ""];
218
+ if (!r)
219
+ return;
220
+ const a = r.findIndex((o) => o.id === e);
221
+ a !== -1 && (r[a].relation = r[a].relation === "and" ? "or" : "and", this.disableDynamicFiltering || this.debouncedApplyFilter());
222
+ }
223
+ assertChanges() {
224
+ if (!this.changes)
225
+ throw new Error("Changes required per edit");
226
+ }
227
+ renderSelectOptions(e, i = !1) {
228
+ if (!this.changes)
229
+ return;
230
+ const t = [], r = this.changes.prop, a = /* @__PURE__ */ new Set();
231
+ if (Object.keys(this.filterItems).forEach((o) => {
232
+ this.filterItems[o].forEach((n) => {
233
+ n.hidden && a.add(n.type);
234
+ });
235
+ }), !i) {
236
+ const o = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
237
+ t.push(s("option", { selected: this.currentFilterType === f, value: f }, r && this.filterItems[r] && this.filterItems[r].length > 0 ? o.add : this.filterNames[f]));
238
+ }
239
+ for (let o in this.changes.filterTypes) {
240
+ const l = this.changes.filterTypes[o].filter((n) => !a.has(n));
241
+ l.length && (t.push(...l.map((n) => s("option", { value: n, selected: e === n }, this.filterNames[n]))), t.push(s("option", { disabled: !0 })));
242
+ }
243
+ return t;
244
+ }
245
+ renderExtra(e, i) {
246
+ const t = this.filterItems[e];
247
+ if (!t)
248
+ return "";
249
+ const r = (n) => {
250
+ this.filterItems[e][i].value = n, this.disableDynamicFiltering || this.debouncedApplyFilter();
251
+ }, a = () => {
252
+ const n = this.getAddFilterSelect();
253
+ n && (n.value = f, this.currentFilterType = f, this.addNewFilterToProp(), n.focus());
254
+ }, o = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions), l = this.filterEntities[t[i].type].extra;
255
+ return typeof l == "function" ? l(s, {
256
+ value: t[i].value,
257
+ filter: t[i],
258
+ prop: e,
259
+ index: i,
260
+ placeholder: o.placeholder,
261
+ onInput: (n) => {
262
+ r(n);
263
+ },
264
+ onFocus: () => {
265
+ a();
266
+ }
267
+ }) : l !== "input" && l !== "datepicker" ? "" : s("input", { id: `filter-input-${t[i].id}`, placeholder: o.placeholder, type: l === "datepicker" ? "date" : "text", value: t[i].value, onInput: (n) => {
268
+ n.target instanceof HTMLInputElement && r(n.target.value);
269
+ }, onKeyDown: (n) => {
270
+ if (n.key.toLowerCase() === "enter") {
271
+ this.getAddFilterSelect() && a();
272
+ return;
273
+ }
274
+ n.stopPropagation();
275
+ } });
276
+ }
277
+ getAddFilterSelect() {
278
+ return this.element.querySelector(`#${x}`);
279
+ }
280
+ isOwnFilterButton(e) {
281
+ if (!(e instanceof Element) || !D(e))
282
+ return !1;
283
+ const i = this.getOwningGrid(this.element), t = this.getOwningGrid(e);
284
+ return !!i && i === t;
285
+ }
286
+ getOwningGrid(e) {
287
+ const i = e.closest("revo-grid");
288
+ if (i)
289
+ return i;
290
+ const t = e.getRootNode();
291
+ if (t instanceof ShadowRoot && t.host.localName === "revo-grid")
292
+ return t.host;
293
+ }
294
+ render() {
295
+ var e, i, t, r, a, o, l, n, d;
296
+ const c = {
297
+ left: `${(i = (e = this.changes) === null || e === void 0 ? void 0 : e.x) !== null && i !== void 0 ? i : 0}px`,
298
+ top: `${(r = (t = this.changes) === null || t === void 0 ? void 0 : t.y) !== null && r !== void 0 ? r : 0}px`
299
+ }, h = Object.assign(Object.assign({}, this.filterCaptionsInternal), this.filterCaptions);
300
+ return s(E, { key: "2a19b35adb56fb7d23385fffebc768838edee162" }, s("dialog", { key: "94386d7cbc4bd9c631f72928938b1d1550a3de82", class: "filter-panel-dialog", style: c, ref: (p) => this.dialog = p, onCancel: (p) => {
301
+ p.preventDefault(), this.onCancel();
302
+ } }, this.changes && [
303
+ s("slot", { key: "header-slot", slot: "header" }),
304
+ ((o = (a = this.changes).extraContent) === null || o === void 0 ? void 0 : o.call(a, this.changes)) || "",
305
+ ((l = this.changes) === null || l === void 0 ? void 0 : l.hideDefaultFilters) !== !0 && [
306
+ s("label", { key: "filter-title" }, h.title),
307
+ s("div", { key: "filter-holder", class: "filter-holder" }, this.getFilterItemsList()),
308
+ s("div", { key: "add-filter", class: "add-filter" }, s("select", { key: "4f7354e39d8e5cf9ae7b735290eff18d105ab87e", id: x, class: "select-css", onChange: (p) => this.onAddNewFilter(p) }, this.renderSelectOptions(this.currentFilterType)))
309
+ ],
310
+ s("slot", { key: "default-slot" }),
311
+ ((d = (n = this.changes).extraBottomContent) === null || d === void 0 ? void 0 : d.call(n, this.changes)) || "",
312
+ s("div", { key: "filter-actions", class: "filter-actions" }, this.disableDynamicFiltering && [
313
+ s("button", { key: "save", id: "revo-button-save", "aria-label": "save", class: "revo-button green", onClick: () => this.onSave() }, h.save),
314
+ s("button", { key: "cancel", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, h.cancel)
315
+ ], !this.disableDynamicFiltering && [
316
+ s("button", { key: "ok", id: "revo-button-ok", "aria-label": "ok", class: "revo-button green", onClick: () => this.onCancel() }, h.ok),
317
+ s("button", { key: "reset", id: "revo-button-reset", "aria-label": "reset", class: "revo-button outline", onClick: () => this.onReset() }, h.reset)
318
+ ]),
319
+ s("slot", { key: "footer-slot", slot: "footer" })
320
+ ]));
321
+ }
322
+ get element() {
323
+ return O(this);
324
+ }
325
+ };
326
+ L.style = T();
327
+ export {
328
+ L as revogr_filter_panel
329
+ };
@@ -0,0 +1,91 @@
1
+ export declare const useDomainStore: import('pinia').StoreDefinition<"endge-domain-store", Pick<{
2
+ domain: import('vue').Ref<import('@endge/core').EndgeDomain, import('@endge/core').EndgeDomain>;
3
+ projects: import('vue').ComputedRef<import('@endge/core/dist/domain/entities/reflect/RProject').RProject[]>;
4
+ types: import('vue').ComputedRef<import('@endge/core').RType[]>;
5
+ typesPrimitives: import('vue').ComputedRef<import('@endge/core').RType[]>;
6
+ typesComplex: import('vue').ComputedRef<import('@endge/core').RType[]>;
7
+ typeCatalog: import('vue').ComputedRef<import('@endge/core').TypeProgramCatalogEntry[]>;
8
+ queries: import('vue').ComputedRef<import('@endge/core').RQuery[]>;
9
+ components: import('vue').ComputedRef<import('@endge/core').RComponent[]>;
10
+ componentSFCs: import('vue').ComputedRef<import('@endge/core').RComponentSFC[]>;
11
+ actions: import('vue').ComputedRef<import('@endge/core').RAction[]>;
12
+ converters: import('vue').ComputedRef<import('@endge/core').RConverter[]>;
13
+ integrations: import('vue').ComputedRef<import('@endge/core').RIntegration[]>;
14
+ pageTemplates: import('vue').ComputedRef<import('@endge/core').RPageTemplate[]>;
15
+ pages: import('vue').ComputedRef<import('@endge/core').RPage[]>;
16
+ navigations: import('vue').ComputedRef<import('@endge/core').RNavigation[]>;
17
+ folders: import('vue').ComputedRef<import('@endge/core').RFolder[]>;
18
+ queriesNames: import('vue').ComputedRef<string[]>;
19
+ parameters: import('vue').ComputedRef<import('@endge/core').RParameter[]>;
20
+ filters: import('vue').ComputedRef<import('@endge/core').RFilter[]>;
21
+ compositions: import('vue').ComputedRef<import('@endge/core').RComposition[]>;
22
+ environments: import('vue').ComputedRef<import('@endge/core').REnvironment[]>;
23
+ tenants: import('vue').ComputedRef<import('@endge/core').RTenant[]>;
24
+ policies: import('vue').ComputedRef<import('@endge/core').RPolicy[]>;
25
+ styles: import('vue').ComputedRef<import('@endge/core').RStyle[]>;
26
+ vocabs: import('vue').ComputedRef<import('@endge/core').RVocabs[]>;
27
+ i18nBundles: import('vue').ComputedRef<import('@endge/core').RI18nBundle[]>;
28
+ mocks: import('vue').ComputedRef<import('@endge/core').RMock[]>;
29
+ authProfiles: import('vue').ComputedRef<import('@endge/core').RAuthProfile[]>;
30
+ events: import('vue').ComputedRef<import('@endge/core').CachedEvent[]>;
31
+ }, "domain">, Pick<{
32
+ domain: import('vue').Ref<import('@endge/core').EndgeDomain, import('@endge/core').EndgeDomain>;
33
+ projects: import('vue').ComputedRef<import('@endge/core/dist/domain/entities/reflect/RProject').RProject[]>;
34
+ types: import('vue').ComputedRef<import('@endge/core').RType[]>;
35
+ typesPrimitives: import('vue').ComputedRef<import('@endge/core').RType[]>;
36
+ typesComplex: import('vue').ComputedRef<import('@endge/core').RType[]>;
37
+ typeCatalog: import('vue').ComputedRef<import('@endge/core').TypeProgramCatalogEntry[]>;
38
+ queries: import('vue').ComputedRef<import('@endge/core').RQuery[]>;
39
+ components: import('vue').ComputedRef<import('@endge/core').RComponent[]>;
40
+ componentSFCs: import('vue').ComputedRef<import('@endge/core').RComponentSFC[]>;
41
+ actions: import('vue').ComputedRef<import('@endge/core').RAction[]>;
42
+ converters: import('vue').ComputedRef<import('@endge/core').RConverter[]>;
43
+ integrations: import('vue').ComputedRef<import('@endge/core').RIntegration[]>;
44
+ pageTemplates: import('vue').ComputedRef<import('@endge/core').RPageTemplate[]>;
45
+ pages: import('vue').ComputedRef<import('@endge/core').RPage[]>;
46
+ navigations: import('vue').ComputedRef<import('@endge/core').RNavigation[]>;
47
+ folders: import('vue').ComputedRef<import('@endge/core').RFolder[]>;
48
+ queriesNames: import('vue').ComputedRef<string[]>;
49
+ parameters: import('vue').ComputedRef<import('@endge/core').RParameter[]>;
50
+ filters: import('vue').ComputedRef<import('@endge/core').RFilter[]>;
51
+ compositions: import('vue').ComputedRef<import('@endge/core').RComposition[]>;
52
+ environments: import('vue').ComputedRef<import('@endge/core').REnvironment[]>;
53
+ tenants: import('vue').ComputedRef<import('@endge/core').RTenant[]>;
54
+ policies: import('vue').ComputedRef<import('@endge/core').RPolicy[]>;
55
+ styles: import('vue').ComputedRef<import('@endge/core').RStyle[]>;
56
+ vocabs: import('vue').ComputedRef<import('@endge/core').RVocabs[]>;
57
+ i18nBundles: import('vue').ComputedRef<import('@endge/core').RI18nBundle[]>;
58
+ mocks: import('vue').ComputedRef<import('@endge/core').RMock[]>;
59
+ authProfiles: import('vue').ComputedRef<import('@endge/core').RAuthProfile[]>;
60
+ events: import('vue').ComputedRef<import('@endge/core').CachedEvent[]>;
61
+ }, "parameters" | "pages" | "components" | "filters" | "actions" | "projects" | "types" | "typesPrimitives" | "typesComplex" | "typeCatalog" | "queries" | "componentSFCs" | "converters" | "integrations" | "pageTemplates" | "navigations" | "folders" | "queriesNames" | "compositions" | "environments" | "tenants" | "policies" | "styles" | "vocabs" | "i18nBundles" | "mocks" | "authProfiles" | "events">, Pick<{
62
+ domain: import('vue').Ref<import('@endge/core').EndgeDomain, import('@endge/core').EndgeDomain>;
63
+ projects: import('vue').ComputedRef<import('@endge/core/dist/domain/entities/reflect/RProject').RProject[]>;
64
+ types: import('vue').ComputedRef<import('@endge/core').RType[]>;
65
+ typesPrimitives: import('vue').ComputedRef<import('@endge/core').RType[]>;
66
+ typesComplex: import('vue').ComputedRef<import('@endge/core').RType[]>;
67
+ typeCatalog: import('vue').ComputedRef<import('@endge/core').TypeProgramCatalogEntry[]>;
68
+ queries: import('vue').ComputedRef<import('@endge/core').RQuery[]>;
69
+ components: import('vue').ComputedRef<import('@endge/core').RComponent[]>;
70
+ componentSFCs: import('vue').ComputedRef<import('@endge/core').RComponentSFC[]>;
71
+ actions: import('vue').ComputedRef<import('@endge/core').RAction[]>;
72
+ converters: import('vue').ComputedRef<import('@endge/core').RConverter[]>;
73
+ integrations: import('vue').ComputedRef<import('@endge/core').RIntegration[]>;
74
+ pageTemplates: import('vue').ComputedRef<import('@endge/core').RPageTemplate[]>;
75
+ pages: import('vue').ComputedRef<import('@endge/core').RPage[]>;
76
+ navigations: import('vue').ComputedRef<import('@endge/core').RNavigation[]>;
77
+ folders: import('vue').ComputedRef<import('@endge/core').RFolder[]>;
78
+ queriesNames: import('vue').ComputedRef<string[]>;
79
+ parameters: import('vue').ComputedRef<import('@endge/core').RParameter[]>;
80
+ filters: import('vue').ComputedRef<import('@endge/core').RFilter[]>;
81
+ compositions: import('vue').ComputedRef<import('@endge/core').RComposition[]>;
82
+ environments: import('vue').ComputedRef<import('@endge/core').REnvironment[]>;
83
+ tenants: import('vue').ComputedRef<import('@endge/core').RTenant[]>;
84
+ policies: import('vue').ComputedRef<import('@endge/core').RPolicy[]>;
85
+ styles: import('vue').ComputedRef<import('@endge/core').RStyle[]>;
86
+ vocabs: import('vue').ComputedRef<import('@endge/core').RVocabs[]>;
87
+ i18nBundles: import('vue').ComputedRef<import('@endge/core').RI18nBundle[]>;
88
+ mocks: import('vue').ComputedRef<import('@endge/core').RMock[]>;
89
+ authProfiles: import('vue').ComputedRef<import('@endge/core').RAuthProfile[]>;
90
+ events: import('vue').ComputedRef<import('@endge/core').CachedEvent[]>;
91
+ }, never>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};