@genexus/genexus-ide-ui 0.0.56 → 0.0.58
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/{ch-checkbox_4.cjs.entry.js → ch-checkbox_3.cjs.entry.js} +90 -65
- package/dist/cjs/{ch-grid-action-refresh_6.cjs.entry.js → ch-grid-action-refresh_7.cjs.entry.js} +168 -4
- package/dist/cjs/ch-icon_2.cjs.entry.js +1 -0
- package/dist/cjs/ch-suggest_4.cjs.entry.js +7 -3
- package/dist/cjs/ch-test-suggest.cjs.entry.js +84 -0
- package/dist/cjs/ch-test-tree-x.cjs.entry.js +83 -43
- package/dist/cjs/ch-tooltip.cjs.entry.js +85 -0
- package/dist/cjs/config-082c7c76.js +9 -0
- package/dist/cjs/{form-a22de8f3.js → form-a2de5b1c.js} +14 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-grid-chameleon.cjs.entry.js +21 -3
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +10 -9
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +2 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +76 -116
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +3 -2
- package/dist/cjs/gx-ide-test.cjs.entry.js +51 -5
- package/dist/cjs/gxg-combo-box_2.cjs.entry.js +9 -4
- package/dist/cjs/gxg-form-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/gxg-form-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/gxg-form-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/gxg-form-text.cjs.entry.js +19 -4
- package/dist/cjs/gxg-form-textarea.cjs.entry.js +8 -4
- package/dist/cjs/gxg-label_2.cjs.entry.js +40 -2
- package/dist/cjs/gxg-list-box_2.cjs.entry.js +2 -2
- package/dist/cjs/gxg-select.cjs.entry.js +1 -1
- package/dist/cjs/gxg-test.cjs.entry.js +1 -16
- package/dist/cjs/gxg-tree-view.cjs.entry.js +108 -45
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/common/config.js +5 -0
- package/dist/collection/common/helpers.js +3 -0
- package/dist/collection/components/new-kb/new-kb.js +10 -9
- package/dist/collection/components/new-object/new-object.js +2 -1
- package/dist/collection/components/references/helpers.js +16 -19
- package/dist/collection/components/references/references.css +8 -0
- package/dist/collection/components/references/references.js +60 -98
- package/dist/collection/components/share-kb/share-kb.js +3 -2
- package/dist/components/ch-paginator-pages.js +1 -171
- package/dist/{esm/ch-paginator-pages.entry.js → components/ch-paginator-pages2.js} +29 -8
- package/dist/components/ch-paginator2.js +18 -4
- package/dist/components/ch-suggest2.js +6 -2
- package/dist/components/ch-test-suggest.js +119 -0
- package/dist/components/ch-test-tree-x.js +96 -58
- package/dist/components/ch-tooltip.js +115 -0
- package/dist/components/checkbox.js +1 -1
- package/dist/components/combo-box.js +10 -4
- package/dist/components/config.js +7 -0
- package/dist/components/form-checkbox.js +1 -1
- package/dist/components/form-text.js +20 -4
- package/dist/components/form-textarea.js +9 -4
- package/dist/components/form.js +14 -1
- package/dist/components/gx-grid-chameleon.js +52 -28
- package/dist/components/gx-ide-new-kb.js +10 -9
- package/dist/components/gx-ide-new-object.js +2 -1
- package/dist/components/gx-ide-references.js +122 -150
- package/dist/components/gx-ide-share-kb.js +3 -2
- package/dist/components/gx-ide-test.js +48 -2
- package/dist/components/gxg-test.js +25 -22
- package/dist/components/gxg-tree-view.js +2 -389
- package/dist/components/icon2.js +1 -0
- package/dist/components/index.js +2 -1
- package/dist/components/list-box.js +1 -1
- package/dist/components/suggest.js +1 -1
- package/dist/components/tooltip.js +45 -3
- package/dist/components/tree-view.js +453 -0
- package/dist/components/tree-x-list-item.js +59 -32
- package/dist/components/tree-x.js +34 -17
- package/dist/esm/{ch-checkbox_4.entry.js → ch-checkbox_3.entry.js} +92 -66
- package/dist/esm/{ch-grid-action-refresh_6.entry.js → ch-grid-action-refresh_7.entry.js} +168 -5
- package/dist/esm/ch-icon_2.entry.js +1 -0
- package/dist/esm/ch-suggest_4.entry.js +7 -3
- package/dist/esm/ch-test-suggest.entry.js +80 -0
- package/dist/esm/ch-test-tree-x.entry.js +84 -44
- package/dist/esm/ch-tooltip.entry.js +81 -0
- package/dist/esm/config-94445cc2.js +7 -0
- package/dist/esm/{form-5e68671c.js → form-9c41f579.js} +14 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-grid-chameleon.entry.js +21 -3
- package/dist/esm/gx-ide-new-kb.entry.js +10 -9
- package/dist/esm/gx-ide-new-object.entry.js +2 -1
- package/dist/esm/gx-ide-references.entry.js +76 -116
- package/dist/esm/gx-ide-share-kb.entry.js +3 -2
- package/dist/esm/gx-ide-test.entry.js +48 -2
- package/dist/esm/gxg-combo-box_2.entry.js +9 -4
- package/dist/esm/gxg-form-checkbox-group.entry.js +1 -1
- package/dist/esm/gxg-form-checkbox.entry.js +2 -2
- package/dist/esm/gxg-form-radio-group.entry.js +1 -1
- package/dist/esm/gxg-form-text.entry.js +19 -4
- package/dist/esm/gxg-form-textarea.entry.js +8 -4
- package/dist/esm/gxg-label_2.entry.js +41 -3
- package/dist/esm/gxg-list-box_2.entry.js +2 -2
- package/dist/esm/gxg-select.entry.js +1 -1
- package/dist/esm/gxg-test.entry.js +1 -16
- package/dist/esm/gxg-tree-view.entry.js +109 -46
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.css +4 -2
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/icon-assets/gemini-tools/error.svg +1 -1
- package/dist/genexus-ide-ui/icon-assets/gemini-tools/success.svg +1 -1
- package/dist/genexus-ide-ui/icon-assets/gemini-tools/warning.svg +1 -1
- package/dist/genexus-ide-ui/{p-afe9515e.entry.js → p-0268cc45.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-0aa11d6f.entry.js +1 -0
- package/dist/genexus-ide-ui/p-0f4fe7ad.js +1 -0
- package/dist/genexus-ide-ui/p-109209dc.entry.js +1 -0
- package/dist/genexus-ide-ui/p-123b8351.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-a440a73f.entry.js → p-1294d220.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-4eaffd02.entry.js → p-2096031c.entry.js} +1 -1
- package/dist/genexus-ide-ui/{p-f3a1dc7c.entry.js → p-2537b4d6.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-3657924a.entry.js +1 -0
- package/dist/genexus-ide-ui/p-3ec2f036.entry.js +1 -0
- package/dist/genexus-ide-ui/p-4923cffa.entry.js +1 -0
- package/dist/genexus-ide-ui/p-4e81926d.entry.js +1 -0
- package/dist/genexus-ide-ui/p-71c6da54.entry.js +1 -0
- package/dist/genexus-ide-ui/p-86b98a99.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-e586d05e.entry.js → p-875e5979.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-9e428123.entry.js +1 -0
- package/dist/genexus-ide-ui/p-a8b8baf9.entry.js +1 -0
- package/dist/genexus-ide-ui/p-cd00ba19.entry.js +1 -0
- package/dist/genexus-ide-ui/p-ce9fef1a.entry.js +1 -0
- package/dist/genexus-ide-ui/p-d47ed4e3.entry.js +1 -0
- package/dist/genexus-ide-ui/p-d7b452ef.entry.js +1 -0
- package/dist/genexus-ide-ui/{p-5cb871e3.entry.js → p-ebcdef37.entry.js} +1 -1
- package/dist/genexus-ide-ui/p-f1ff6b48.entry.js +1 -0
- package/dist/genexus-ide-ui/p-f62d9b6d.entry.js +1 -0
- package/dist/genexus-ide-ui/p-f82f25e2.js +1 -0
- package/dist/genexus-ide-ui/p-f9f1d95d.entry.js +1 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/checkbox/checkbox.css +3 -3
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-suggest/test-suggest.css +114 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/test/test-tree-x.css +1 -47
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tooltip/tooltip.css +120 -0
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/{tree-x → tree-view/tree-x}/tree-x.css +4 -5
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/{tree-x-list-item → tree-view/tree-x-list-item}/tree-x-list-item.css +8 -9
- package/dist/node_modules/@genexus/gemini/dist/collection/components/combo-box/combo-box.css +5 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-checkbox/form-checkbox.css +18 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-text/form-text.css +37 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/form-textarea/form-textarea.css +22 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/list-box/list-box.css +18 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/suggest/styles.css +18 -0
- package/dist/node_modules/@genexus/gemini/dist/collection/components/tooltip/tooltip.css +58 -3
- package/dist/node_modules/@genexus/gemini/dist/collection/components/tree-view/tree-view.css +68 -13
- package/dist/types/common/config.d.ts +3 -0
- package/dist/types/common/helpers.d.ts +1 -0
- package/dist/types/components/references/helpers.d.ts +3 -3
- package/dist/types/components/references/references.d.ts +7 -19
- package/package.json +3 -3
- package/dist/cjs/ch-paginator-pages.cjs.entry.js +0 -156
- package/dist/cjs/update-tree-model-8b154db1.js +0 -53
- package/dist/components/ch-tree-x-list.js +0 -6
- package/dist/components/tree-x-list.js +0 -37
- package/dist/components/update-tree-model.js +0 -50
- package/dist/esm/update-tree-model-6c612f05.js +0 -50
- package/dist/genexus-ide-ui/p-01406cbc.js +0 -1
- package/dist/genexus-ide-ui/p-03efca69.entry.js +0 -1
- package/dist/genexus-ide-ui/p-1d7c22d5.entry.js +0 -1
- package/dist/genexus-ide-ui/p-395a65de.entry.js +0 -1
- package/dist/genexus-ide-ui/p-3b4fca51.entry.js +0 -1
- package/dist/genexus-ide-ui/p-447c3a31.entry.js +0 -1
- package/dist/genexus-ide-ui/p-46d393f5.entry.js +0 -1
- package/dist/genexus-ide-ui/p-58f882c6.entry.js +0 -1
- package/dist/genexus-ide-ui/p-60bea19c.entry.js +0 -1
- package/dist/genexus-ide-ui/p-64cbe277.entry.js +0 -1
- package/dist/genexus-ide-ui/p-71ecc7fd.js +0 -1
- package/dist/genexus-ide-ui/p-9a6cb543.entry.js +0 -1
- package/dist/genexus-ide-ui/p-a2fa3132.entry.js +0 -1
- package/dist/genexus-ide-ui/p-a708db45.entry.js +0 -1
- package/dist/genexus-ide-ui/p-c0edbeb5.entry.js +0 -1
- package/dist/genexus-ide-ui/p-c7425416.entry.js +0 -1
- package/dist/genexus-ide-ui/p-cd5482fa.entry.js +0 -1
- package/dist/genexus-ide-ui/p-d312fe25.entry.js +0 -1
- package/dist/genexus-ide-ui/p-e6ae0460.entry.js +0 -1
- package/dist/node_modules/@genexus/chameleon-controls-library/dist/collection/components/tree-x-list/tree-x-list.css +0 -6
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { h, proxyCustomElement, HTMLElement, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { d as defineCustomElement$4 } from './ch-suggest2.js';
|
|
3
|
+
import { d as defineCustomElement$3 } from './ch-window2.js';
|
|
4
|
+
import { d as defineCustomElement$2 } from './ch-window-close2.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @description This function converts SelectorCategoryData[] SuggestData
|
|
8
|
+
*/
|
|
9
|
+
const convertObjectDataToSuggestData = (selectorCategoriesData) => {
|
|
10
|
+
const suggestData = {
|
|
11
|
+
suggestItems: null,
|
|
12
|
+
suggestLists: []
|
|
13
|
+
};
|
|
14
|
+
if (selectorCategoriesData.length) {
|
|
15
|
+
selectorCategoriesData.forEach(selectorCategory => {
|
|
16
|
+
const suggestList = {
|
|
17
|
+
label: selectorCategory.name,
|
|
18
|
+
items: []
|
|
19
|
+
};
|
|
20
|
+
selectorCategory.items.forEach((objectData) => {
|
|
21
|
+
const suggestItem = {
|
|
22
|
+
value: objectData.id,
|
|
23
|
+
description: objectData.description,
|
|
24
|
+
icon: objectData.icon
|
|
25
|
+
};
|
|
26
|
+
suggestList.items.push(suggestItem);
|
|
27
|
+
});
|
|
28
|
+
suggestData.suggestLists.push(suggestList);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return suggestData;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
35
|
+
const renderSuggestLists = (suggestData) => {
|
|
36
|
+
if (suggestData === null || suggestData === void 0 ? void 0 : suggestData.suggestLists.length) {
|
|
37
|
+
const randomNumber = Math.random();
|
|
38
|
+
const result = suggestData.suggestLists.map((list) => {
|
|
39
|
+
return (h("ch-suggest-list", { label: list.label, key: randomNumber }, list.items.map((item) => {
|
|
40
|
+
return renderSuggestListsItem(item);
|
|
41
|
+
})));
|
|
42
|
+
});
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
};
|
|
47
|
+
const renderSuggestListsItem = (suggestItem) => {
|
|
48
|
+
return (h("ch-suggest-list-item", { value: suggestItem.value }, [suggestItem.description || suggestItem.value]));
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const testSuggestCss = ":host{display:block}:root{--highlight-color:rgb(163, 25, 161)}ch-suggest{display:block}ch-suggest::part(title){display:block;font-weight:bold}ch-suggest::part(label){font-weight:500}ch-suggest[label-position=\"start\"]::part(label){margin-inline-end:8px;display:flex;align-items:center}ch-suggest[label-position=\"above\"]::part(label){margin-block-end:4px}ch-suggest::part(close-button){display:block;width:16px;height:16px}ch-suggest::part(close-button)::after{content:\"✖\";line-height:8px;height:100%;display:block;border:1px solid black;cursor:pointer;text-align:center;line-height:16px}ch-suggest::part(header){display:flex;justify-content:space-between;align-items:center;margin-block-end:8px}ch-suggest::part(ch-window-close){width:10px;height:10px}ch-suggest::part(input){padding:4px 8px;border:1px solid black}ch-suggest::part(input):focus{outline:2px solid var(--highlight-color);border-color:var(--highlight-color)}ch-suggest-list{background-color:rgba(234, 234, 234, 0.224);border:1px solid rgba(128, 128, 128, 0.275);border-radius:4px;padding:8px;margin-block-end:4px}ch-suggest-list::part(title){font-size:14px;font-weight:bold;text-transform:uppercase;margin:4px 0 8px 0}ch-suggest-list-item::part(button){padding:4px 8px;cursor:pointer;gap:4px}ch-suggest-list-item ch-icon{--icon-size:16px;margin-inline-end:2px}ch-suggest-list-item:hover{background-color:var(--ch-color--violet-100)}ch-suggest-list-item:focus,ch-suggest-list-item[selected]:focus{outline:2px solid var(--highlight-color)}ch-suggest-list-item[selected]{background-color:rgba(241, 184, 243, 0.42);outline:none}ch-suggest-list-item::part(button):focus{outline:2px solid var(--highlight-color);border-color:var(--highlight-color)}ch-suggest-list-item::part(content-wrapper){display:flex;gap:8px}ch-suggest::part(dropdown){margin-block-start:4px;border:1px solid black;background-color:white;padding:8px}:focus{outline-style:none !important}";
|
|
52
|
+
|
|
53
|
+
const ChTestSuggest$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
54
|
+
constructor() {
|
|
55
|
+
super();
|
|
56
|
+
this.__registerHost();
|
|
57
|
+
this.__attachShadow();
|
|
58
|
+
// 5.EVENTS (EMIT) //
|
|
59
|
+
// 6.COMPONENT LIFECYCLE EVENTS //
|
|
60
|
+
// 7.LISTENERS //
|
|
61
|
+
// 8.PUBLIC METHODS API //
|
|
62
|
+
// 9.LOCAL METHODS //
|
|
63
|
+
/**
|
|
64
|
+
* This handler gets fired every time the value of the 'Select Object' ch-suggest changes.
|
|
65
|
+
*/
|
|
66
|
+
this.selectObjectValueChangedHandler = async (e) => {
|
|
67
|
+
const value = e.detail;
|
|
68
|
+
this.selectorSourceCallback(value)
|
|
69
|
+
.then(result => {
|
|
70
|
+
/* show suggestions*/
|
|
71
|
+
this.objectsSuggestions = convertObjectDataToSuggestData(result);
|
|
72
|
+
})
|
|
73
|
+
.catch(() => {
|
|
74
|
+
// to do
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// 10.RENDER() FUNCTION //
|
|
79
|
+
render() {
|
|
80
|
+
return (h(Host, null, h("ch-suggest", { onValueChanged: this.selectObjectValueChangedHandler, part: "object-selector-suggest", exportparts: "dropdown:select-object-dropdown" }, renderSuggestLists(this.objectsSuggestions))));
|
|
81
|
+
}
|
|
82
|
+
static get style() { return testSuggestCss; }
|
|
83
|
+
}, [1, "ch-test-suggest", {
|
|
84
|
+
"selectorSourceCallback": [16],
|
|
85
|
+
"objectsSuggestions": [32]
|
|
86
|
+
}]);
|
|
87
|
+
function defineCustomElement$1() {
|
|
88
|
+
if (typeof customElements === "undefined") {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const components = ["ch-test-suggest", "ch-suggest", "ch-window", "ch-window-close"];
|
|
92
|
+
components.forEach(tagName => { switch (tagName) {
|
|
93
|
+
case "ch-test-suggest":
|
|
94
|
+
if (!customElements.get(tagName)) {
|
|
95
|
+
customElements.define(tagName, ChTestSuggest$1);
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
case "ch-suggest":
|
|
99
|
+
if (!customElements.get(tagName)) {
|
|
100
|
+
defineCustomElement$4();
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
case "ch-window":
|
|
104
|
+
if (!customElements.get(tagName)) {
|
|
105
|
+
defineCustomElement$3();
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
case "ch-window-close":
|
|
109
|
+
if (!customElements.get(tagName)) {
|
|
110
|
+
defineCustomElement$2();
|
|
111
|
+
}
|
|
112
|
+
break;
|
|
113
|
+
} });
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const ChTestSuggest = ChTestSuggest$1;
|
|
117
|
+
const defineCustomElement = defineCustomElement$1;
|
|
118
|
+
|
|
119
|
+
export { ChTestSuggest, defineCustomElement };
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
import { proxyCustomElement, HTMLElement, h, forceUpdate
|
|
2
|
-
import { d as defineCustomElement$
|
|
3
|
-
import { d as defineCustomElement$
|
|
4
|
-
import { d as defineCustomElement$3 } from './tree-x-list.js';
|
|
1
|
+
import { proxyCustomElement, HTMLElement, createEvent, h, forceUpdate } from '@stencil/core/internal/client';
|
|
2
|
+
import { d as defineCustomElement$4 } from './checkbox.js';
|
|
3
|
+
import { d as defineCustomElement$3 } from './tree-x.js';
|
|
5
4
|
import { d as defineCustomElement$2 } from './tree-x-list-item.js';
|
|
6
5
|
|
|
7
|
-
const testTreeXCss = "ch-test-tree-x{display:
|
|
6
|
+
const testTreeXCss = "ch-test-tree-x{display:contents}";
|
|
8
7
|
|
|
9
8
|
const DEFAULT_DRAG_DISABLED_VALUE = false;
|
|
10
9
|
const DEFAULT_DROP_DISABLED_VALUE = false;
|
|
10
|
+
const DEFAULT_CLASS_VALUE = "tree-view-item";
|
|
11
|
+
const DEFAULT_EDITABLE_ITEMS_VALUE = true;
|
|
11
12
|
const DEFAULT_EXPANDED_VALUE = false;
|
|
12
13
|
const DEFAULT_INDETERMINATE_VALUE = false;
|
|
13
14
|
const DEFAULT_LAZY_VALUE = false;
|
|
15
|
+
const DEFAULT_ORDER_VALUE = 0;
|
|
14
16
|
const DEFAULT_SELECTED_VALUE = false;
|
|
15
17
|
const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
16
18
|
constructor() {
|
|
17
19
|
super();
|
|
18
20
|
this.__registerHost();
|
|
21
|
+
this.itemContextmenu = createEvent(this, "itemContextmenu", 7);
|
|
22
|
+
this.itemOpenReference = createEvent(this, "itemOpenReference", 7);
|
|
23
|
+
this.selectedItemsChange = createEvent(this, "selectedItemsChange", 7);
|
|
19
24
|
// UI Models
|
|
20
25
|
this.flattenedTreeModel = new Map();
|
|
21
26
|
this.selectedItems = new Set();
|
|
22
|
-
this.flattenedLazyTreeModel = new Map();
|
|
23
27
|
/**
|
|
24
28
|
* This property lets you specify if the tree is waiting to process the drop
|
|
25
29
|
* of items.
|
|
@@ -27,39 +31,47 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
27
31
|
this.waitDropProcessing = false;
|
|
28
32
|
/**
|
|
29
33
|
* This attribute lets you specify if the drag operation is disabled in all
|
|
30
|
-
* items by default. If `true`, the
|
|
34
|
+
* items by default. If `true`, the items can't be dragged.
|
|
31
35
|
*/
|
|
32
36
|
this.dragDisabled = DEFAULT_DRAG_DISABLED_VALUE;
|
|
33
37
|
/**
|
|
34
38
|
* This attribute lets you specify if the drop operation is disabled in all
|
|
35
|
-
* items by default. If `true`, the
|
|
39
|
+
* items by default. If `true`, the items won't accept any drops.
|
|
36
40
|
*/
|
|
37
41
|
this.dropDisabled = DEFAULT_DROP_DISABLED_VALUE;
|
|
38
42
|
/**
|
|
39
43
|
* This property lets you define the model of the ch-tree-x control.
|
|
40
44
|
*/
|
|
41
|
-
this.treeModel =
|
|
45
|
+
this.treeModel = [];
|
|
42
46
|
/**
|
|
43
47
|
* Set this attribute if you want to allow multi selection of the items.
|
|
44
48
|
*/
|
|
45
49
|
this.multiSelection = false;
|
|
50
|
+
/**
|
|
51
|
+
* This attribute lets you specify if the edit operation is enabled in all
|
|
52
|
+
* items by default. If `true`, the items can edit its caption in place.
|
|
53
|
+
*/
|
|
54
|
+
this.editableItems = DEFAULT_EDITABLE_ITEMS_VALUE;
|
|
46
55
|
/**
|
|
47
56
|
* `true` to display the relation between tree items and tree lists using
|
|
48
57
|
* lines.
|
|
49
58
|
*/
|
|
50
59
|
this.showLines = "none";
|
|
51
60
|
this.handleDroppableZoneEnter = (event) => {
|
|
52
|
-
const dropInformation = event.detail;
|
|
53
61
|
if (!this.checkDroppableZoneCallback) {
|
|
54
62
|
return;
|
|
55
63
|
}
|
|
64
|
+
event.stopPropagation();
|
|
65
|
+
// Suppose the request is made immediately by executing the callback
|
|
56
66
|
const requestTimestamp = new Date().getTime();
|
|
67
|
+
const dropInformation = event.detail;
|
|
57
68
|
const promise = this.checkDroppableZoneCallback(dropInformation);
|
|
58
69
|
promise.then(validDrop => {
|
|
59
|
-
this.
|
|
70
|
+
this.updateValidDropZone(requestTimestamp, dropInformation.newContainer.id, dropInformation.draggedItems, validDrop);
|
|
60
71
|
});
|
|
61
72
|
};
|
|
62
73
|
this.handleSelectedItemsChange = (event) => {
|
|
74
|
+
event.stopPropagation();
|
|
63
75
|
const itemsToProcess = new Map(event.detail);
|
|
64
76
|
// Remove no longer selected items
|
|
65
77
|
this.selectedItems.forEach(selectedItemId => {
|
|
@@ -83,13 +95,22 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
83
95
|
newSelectedItem.expanded = newSelectedItemInfo.expanded;
|
|
84
96
|
this.selectedItems.add(itemId);
|
|
85
97
|
});
|
|
98
|
+
this.selectedItemsChange.emit(event.detail);
|
|
86
99
|
};
|
|
87
100
|
this.handleExpandedItemChange = (event) => {
|
|
88
101
|
const detail = event.detail;
|
|
89
102
|
const itemInfo = this.flattenedTreeModel.get(detail.id).item;
|
|
90
103
|
itemInfo.expanded = detail.expanded;
|
|
91
104
|
};
|
|
105
|
+
this.handleItemContextmenu = (event) => {
|
|
106
|
+
event.stopPropagation();
|
|
107
|
+
this.itemContextmenu.emit(event.detail);
|
|
108
|
+
};
|
|
92
109
|
this.handleItemsDropped = (event) => {
|
|
110
|
+
if (!this.dropItemsCallback) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
event.stopPropagation();
|
|
93
114
|
const dataTransferInfo = event.detail;
|
|
94
115
|
const newContainer = dataTransferInfo.newContainer;
|
|
95
116
|
const newParentId = newContainer.id;
|
|
@@ -98,7 +119,7 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
98
119
|
return;
|
|
99
120
|
}
|
|
100
121
|
const draggedItems = dataTransferInfo.draggedItems;
|
|
101
|
-
if (draggedItems.length === 0
|
|
122
|
+
if (draggedItems.length === 0) {
|
|
102
123
|
return;
|
|
103
124
|
}
|
|
104
125
|
const promise = this.dropItemsCallback(dataTransferInfo);
|
|
@@ -149,26 +170,25 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
149
170
|
itemUIModelExtended.parentItem = newParentUIModel;
|
|
150
171
|
};
|
|
151
172
|
this.renderSubModel = (treeSubModel, lastItem, level) => {
|
|
152
|
-
var _a, _b;
|
|
153
|
-
return (h("ch-tree-x-list-item", { id: treeSubModel.id, caption: treeSubModel.caption, checkbox: treeSubModel.checkbox, checked: treeSubModel.checked, class: treeSubModel.class, disabled: treeSubModel.disabled, dragDisabled: (_a = treeSubModel.dragDisabled) !== null && _a !== void 0 ? _a : this.dragDisabled, dropDisabled: (_b = treeSubModel.dropDisabled) !== null && _b !== void 0 ? _b : this.dropDisabled, expanded: treeSubModel.expanded, indeterminate: treeSubModel.indeterminate, lastItem: lastItem, lazyLoad: treeSubModel.lazy, leaf: treeSubModel.leaf, leftImgSrc: treeSubModel.leftImgSrc, level: level, metadata: treeSubModel.metadata, rightImgSrc: treeSubModel.rightImgSrc, selected: treeSubModel.selected, showExpandableButton: treeSubModel.showExpandableButton, showLines: this.showLines, toggleCheckboxes: treeSubModel.toggleCheckboxes }, !treeSubModel.leaf &&
|
|
173
|
+
var _a, _b, _c;
|
|
174
|
+
return (h("ch-tree-x-list-item", { id: treeSubModel.id, caption: treeSubModel.caption, checkbox: treeSubModel.checkbox, checked: treeSubModel.checked, class: treeSubModel.class, disabled: treeSubModel.disabled, downloading: treeSubModel.downloading, dragDisabled: (_a = treeSubModel.dragDisabled) !== null && _a !== void 0 ? _a : this.dragDisabled, dropDisabled: (_b = treeSubModel.dropDisabled) !== null && _b !== void 0 ? _b : this.dropDisabled, editable: (_c = treeSubModel.editable) !== null && _c !== void 0 ? _c : this.editableItems, expanded: treeSubModel.expanded, indeterminate: treeSubModel.indeterminate, lastItem: lastItem, lazyLoad: treeSubModel.lazy, leaf: treeSubModel.leaf, leftImgSrc: treeSubModel.leftImgSrc, level: level, metadata: treeSubModel.metadata, rightImgSrc: treeSubModel.rightImgSrc, selected: treeSubModel.selected, showExpandableButton: treeSubModel.showExpandableButton, showLines: this.showLines, toggleCheckboxes: treeSubModel.toggleCheckboxes }, !treeSubModel.leaf &&
|
|
154
175
|
treeSubModel.items != null &&
|
|
155
|
-
treeSubModel.items.
|
|
176
|
+
treeSubModel.items.map((subModel, index) => this.renderSubModel(subModel, this.showLines && index === treeSubModel.items.length - 1, level + 1))));
|
|
156
177
|
};
|
|
157
178
|
this.flattenItemUIModel = (parentModel) => (item) => {
|
|
158
|
-
var _a, _b, _c, _d;
|
|
179
|
+
var _a, _b, _c, _d, _e;
|
|
159
180
|
this.flattenedTreeModel.set(item.id, {
|
|
160
181
|
parentItem: parentModel,
|
|
161
182
|
item: item
|
|
162
183
|
});
|
|
163
184
|
// Make sure the properties are with their default values to avoid issues
|
|
164
185
|
// when reusing DOM nodes
|
|
186
|
+
item.class || (item.class = DEFAULT_CLASS_VALUE);
|
|
165
187
|
(_a = item.expanded) !== null && _a !== void 0 ? _a : (item.expanded = DEFAULT_EXPANDED_VALUE);
|
|
166
188
|
(_b = item.indeterminate) !== null && _b !== void 0 ? _b : (item.indeterminate = DEFAULT_INDETERMINATE_VALUE);
|
|
167
189
|
(_c = item.lazy) !== null && _c !== void 0 ? _c : (item.lazy = DEFAULT_LAZY_VALUE);
|
|
168
|
-
(_d = item.
|
|
169
|
-
|
|
170
|
-
this.flattenedLazyTreeModel.set(item.id, item);
|
|
171
|
-
}
|
|
190
|
+
(_d = item.order) !== null && _d !== void 0 ? _d : (item.order = DEFAULT_ORDER_VALUE);
|
|
191
|
+
(_e = item.selected) !== null && _e !== void 0 ? _e : (item.selected = DEFAULT_SELECTED_VALUE);
|
|
172
192
|
if (item.selected) {
|
|
173
193
|
this.selectedItems.add(item.id);
|
|
174
194
|
}
|
|
@@ -178,6 +198,26 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
178
198
|
handleTreeModelChange() {
|
|
179
199
|
this.flattenModel();
|
|
180
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Given an item id, an array of items to add, the download status and the
|
|
203
|
+
* lazy state, updates the item's UI Model.
|
|
204
|
+
*/
|
|
205
|
+
async loadLazyContent(itemId, items, downloading = false, lazy = false) {
|
|
206
|
+
const itemToLazyLoadContent = this.flattenedTreeModel.get(itemId).item;
|
|
207
|
+
// Establish that the content was lazy loaded
|
|
208
|
+
itemToLazyLoadContent.downloading = downloading;
|
|
209
|
+
itemToLazyLoadContent.lazy = lazy;
|
|
210
|
+
// Check if there is items to add
|
|
211
|
+
if (items == null) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
// @todo What happens in the server when dropping items on a lazy node?
|
|
215
|
+
itemToLazyLoadContent.items = items;
|
|
216
|
+
this.sortItems(itemToLazyLoadContent.items);
|
|
217
|
+
this.flattenSubModel(itemToLazyLoadContent);
|
|
218
|
+
// Force re-render
|
|
219
|
+
forceUpdate(this);
|
|
220
|
+
}
|
|
181
221
|
/**
|
|
182
222
|
* Given an item id, it displays and scrolls into the item view.
|
|
183
223
|
*/
|
|
@@ -253,6 +293,16 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
253
293
|
});
|
|
254
294
|
forceUpdate(this);
|
|
255
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Update the information about the valid droppable zones.
|
|
298
|
+
* @param requestTimestamp Time where the request to the server was made. Useful to avoid having old information.
|
|
299
|
+
* @param newContainerId ID of the container where the drag is trying to be made.
|
|
300
|
+
* @param draggedItems Information about the dragged items.
|
|
301
|
+
* @param validDrop Current state of the droppable zone.
|
|
302
|
+
*/
|
|
303
|
+
async updateValidDropZone(requestTimestamp, newContainerId, draggedItems, validDrop) {
|
|
304
|
+
this.treeRef.updateValidDropZone(requestTimestamp, newContainerId, draggedItems, validDrop);
|
|
305
|
+
}
|
|
256
306
|
updateItemProperty(itemUIModel, properties) {
|
|
257
307
|
if (!itemUIModel) {
|
|
258
308
|
return;
|
|
@@ -263,36 +313,22 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
263
313
|
});
|
|
264
314
|
}
|
|
265
315
|
loadLazyChildrenHandler(event) {
|
|
316
|
+
if (!this.lazyLoadTreeItemsCallback) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
266
319
|
event.stopPropagation();
|
|
267
320
|
const treeItemId = event.detail;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const itemToLazyLoadContent = this.flattenedLazyTreeModel.get(treeItemId);
|
|
274
|
-
// Establish that the content was lazy loaded
|
|
275
|
-
this.flattenedLazyTreeModel.delete(treeItemId);
|
|
276
|
-
itemToLazyLoadContent.lazy = false;
|
|
277
|
-
itemRef.downloading = false;
|
|
278
|
-
// Check if there is items to add
|
|
279
|
-
if (result == null) {
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
// @todo What happens in the server when dropping items on a lazy node?
|
|
283
|
-
itemToLazyLoadContent.items = result;
|
|
284
|
-
this.sortItems(itemToLazyLoadContent.items);
|
|
285
|
-
this.flattenSubModel(itemToLazyLoadContent);
|
|
286
|
-
// Force re-render
|
|
287
|
-
forceUpdate(this);
|
|
288
|
-
});
|
|
289
|
-
}
|
|
321
|
+
const promise = this.lazyLoadTreeItemsCallback(treeItemId);
|
|
322
|
+
event.target.downloading = true;
|
|
323
|
+
promise.then(result => {
|
|
324
|
+
this.loadLazyContent(treeItemId, result);
|
|
325
|
+
});
|
|
290
326
|
}
|
|
291
327
|
handleCaptionModification(event) {
|
|
292
|
-
event.stopPropagation();
|
|
293
328
|
if (!this.modifyItemCaptionCallback) {
|
|
294
329
|
return;
|
|
295
330
|
}
|
|
331
|
+
event.stopPropagation();
|
|
296
332
|
const itemRef = event.target;
|
|
297
333
|
const itemId = event.detail.id;
|
|
298
334
|
const itemUIModel = this.flattenedTreeModel.get(itemId);
|
|
@@ -319,11 +355,15 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
319
355
|
}
|
|
320
356
|
});
|
|
321
357
|
}
|
|
358
|
+
handleOpenReference(event) {
|
|
359
|
+
event.stopPropagation();
|
|
360
|
+
this.itemOpenReference.emit(event.detail);
|
|
361
|
+
}
|
|
322
362
|
flattenSubModel(model) {
|
|
323
363
|
const items = model.items;
|
|
324
364
|
if (!items) {
|
|
325
365
|
// Make sure that subtrees don't have an undefined array
|
|
326
|
-
if (model.leaf
|
|
366
|
+
if (model.leaf !== true) {
|
|
327
367
|
model.items = [];
|
|
328
368
|
}
|
|
329
369
|
return;
|
|
@@ -339,14 +379,13 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
339
379
|
}
|
|
340
380
|
flattenModel() {
|
|
341
381
|
this.flattenedTreeModel.clear();
|
|
342
|
-
this.
|
|
343
|
-
this.flattenSubModel(this.treeModel);
|
|
382
|
+
this.flattenSubModel({ id: null, caption: null, items: this.treeModel });
|
|
344
383
|
}
|
|
345
384
|
componentWillLoad() {
|
|
346
385
|
this.flattenModel();
|
|
347
386
|
}
|
|
348
387
|
render() {
|
|
349
|
-
return (h(
|
|
388
|
+
return (h("ch-tree-x", { class: this.cssClass || null, multiSelection: this.multiSelection, waitDropProcessing: this.waitDropProcessing, onDroppableZoneEnter: this.handleDroppableZoneEnter, onExpandedItemChange: this.handleExpandedItemChange, onItemContextmenu: this.handleItemContextmenu, onItemsDropped: this.handleItemsDropped, onSelectedItemsChange: this.handleSelectedItemsChange, ref: el => (this.treeRef = el) }, this.treeModel.map((subModel, index) => this.renderSubModel(subModel, this.showLines && index === this.treeModel.length - 1, 0))));
|
|
350
389
|
}
|
|
351
390
|
static get watchers() { return {
|
|
352
391
|
"treeModel": ["handleTreeModelChange"]
|
|
@@ -354,26 +393,30 @@ const ChTestTreeX$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
|
|
|
354
393
|
static get style() { return testTreeXCss; }
|
|
355
394
|
}, [0, "ch-test-tree-x", {
|
|
356
395
|
"checkDroppableZoneCallback": [16],
|
|
396
|
+
"cssClass": [1, "css-class"],
|
|
357
397
|
"dragDisabled": [4, "drag-disabled"],
|
|
358
398
|
"dropDisabled": [4, "drop-disabled"],
|
|
359
399
|
"dropItemsCallback": [16],
|
|
360
|
-
"treeModel": [
|
|
400
|
+
"treeModel": [16],
|
|
361
401
|
"lazyLoadTreeItemsCallback": [16],
|
|
362
402
|
"modifyItemCaptionCallback": [16],
|
|
363
|
-
"multiSelection": [
|
|
403
|
+
"multiSelection": [4, "multi-selection"],
|
|
404
|
+
"editableItems": [4, "editable-items"],
|
|
364
405
|
"showLines": [1, "show-lines"],
|
|
365
406
|
"sortItemsCallback": [16],
|
|
366
407
|
"waitDropProcessing": [32],
|
|
408
|
+
"loadLazyContent": [64],
|
|
367
409
|
"scrollIntoVisible": [64],
|
|
368
410
|
"toggleItems": [64],
|
|
369
411
|
"updateAllItemsProperties": [64],
|
|
370
|
-
"updateItemsProperties": [64]
|
|
371
|
-
|
|
412
|
+
"updateItemsProperties": [64],
|
|
413
|
+
"updateValidDropZone": [64]
|
|
414
|
+
}, [[0, "loadLazyContent", "loadLazyChildrenHandler"], [0, "modifyCaption", "handleCaptionModification"], [2, "openReference", "handleOpenReference"]]]);
|
|
372
415
|
function defineCustomElement$1() {
|
|
373
416
|
if (typeof customElements === "undefined") {
|
|
374
417
|
return;
|
|
375
418
|
}
|
|
376
|
-
const components = ["ch-test-tree-x", "ch-checkbox", "ch-tree-x", "ch-tree-x-list
|
|
419
|
+
const components = ["ch-test-tree-x", "ch-checkbox", "ch-tree-x", "ch-tree-x-list-item"];
|
|
377
420
|
components.forEach(tagName => { switch (tagName) {
|
|
378
421
|
case "ch-test-tree-x":
|
|
379
422
|
if (!customElements.get(tagName)) {
|
|
@@ -381,16 +424,11 @@ function defineCustomElement$1() {
|
|
|
381
424
|
}
|
|
382
425
|
break;
|
|
383
426
|
case "ch-checkbox":
|
|
384
|
-
if (!customElements.get(tagName)) {
|
|
385
|
-
defineCustomElement$5();
|
|
386
|
-
}
|
|
387
|
-
break;
|
|
388
|
-
case "ch-tree-x":
|
|
389
427
|
if (!customElements.get(tagName)) {
|
|
390
428
|
defineCustomElement$4();
|
|
391
429
|
}
|
|
392
430
|
break;
|
|
393
|
-
case "ch-tree-x
|
|
431
|
+
case "ch-tree-x":
|
|
394
432
|
if (!customElements.get(tagName)) {
|
|
395
433
|
defineCustomElement$3();
|
|
396
434
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
|
|
2
|
+
import { f as focusComposedPath } from './helpers.js';
|
|
3
|
+
import { d as defineCustomElement$3 } from './ch-window2.js';
|
|
4
|
+
import { d as defineCustomElement$2 } from './ch-window-close2.js';
|
|
5
|
+
|
|
6
|
+
const tooltipCss = "*,::after,::before{box-sizing:border-box}ch-tooltip{--ch-tooltip-separation:12px;--ch-tooltip-separation-x:var(--ch-tooltip-separation);--ch-tooltip-separation-y:var(--ch-tooltip-separation);--ch-tooltip-arrow-size:10px;--ch-tooltip-based:calc( 1px - var(--ch-tooltip-arrow-size));--ch-tooltip-centered:calc( 50% - var(--ch-tooltip-arrow-size) / 2);--ch-tooltip-75:calc( 75% - var(--ch-tooltip-arrow-size) / 2);--ch-tooltip-25:calc( 25% - var(--ch-tooltip-arrow-size) / 2);display:flex;position:relative;width:100%;height:100%}ch-tooltip:not([hidden]){display:contents}ch-window[y-align=outside-start]{--ch-window-separation:var(--ch-tooltip-separation-y);--ch-window-separation-y:calc(var(--ch-tooltip-separation-y) * -1)}ch-window[y-align=outside-end]{--ch-window-separation:var(--ch-tooltip-separation-y);--ch-window-separation-y:var(--ch-tooltip-separation-y)}ch-window[x-align=outside-start]+:not(ch-window[y-align=outside-start],ch-window[y-align=outside-end]){--ch-window-separation:var(--ch-tooltip-separation-x);--ch-window-separation-x:calc(var(--ch-tooltip-separation-x) * -1)}ch-window[x-align=outside-end]+:not(ch-window[y-align=outside-start],ch-window[y-align=outside-end]){--ch-window-separation:var(--ch-tooltip-separation-x);--ch-window-separation-x:var(--ch-tooltip-separation-x)}ch-window[y-align=outside-start] .tooltip-content::after,ch-window[y-align=outside-start][x-align=outside-start] .tooltip-content::after,ch-window[y-align=outside-start][x-align=outside-end] .tooltip-content::after{clip-path:polygon(0 0, 50% 100%, 100% 0);inset-block-end:var(--ch-tooltip-based)}ch-window[y-align=outside-start][x-align=outside-start] .tooltip-content::after,ch-window[y-align=outside-start][x-align=outside-start][x-align=outside-start] .tooltip-content::after,ch-window[y-align=outside-start][x-align=outside-end][x-align=outside-start] .tooltip-content::after{inset-inline-end:0}ch-window[y-align=outside-start][x-align=outside-end] .tooltip-content::after,ch-window[y-align=outside-start][x-align=outside-start][x-align=outside-end] .tooltip-content::after,ch-window[y-align=outside-start][x-align=outside-end][x-align=outside-end] .tooltip-content::after{inset-inline-start:0}ch-window[y-align=outside-end] .tooltip-content::after,ch-window[y-align=outside-end][x-align=outside-end] .tooltip-content::after,ch-window[y-align=outside-end][x-align=outside-start] .tooltip-content::after{clip-path:polygon(50% 0, 100% 100%, 0 100%);inset-block-start:var(--ch-tooltip-based)}ch-window[y-align=outside-end][x-align=outside-start] .tooltip-content::after,ch-window[y-align=outside-end][x-align=outside-end][x-align=outside-start] .tooltip-content::after,ch-window[y-align=outside-end][x-align=outside-start][x-align=outside-start] .tooltip-content::after{inset-inline-end:0}ch-window[y-align=outside-end][x-align=outside-end] .tooltip-content::after,ch-window[y-align=outside-end][x-align=outside-end][x-align=outside-end] .tooltip-content::after,ch-window[y-align=outside-end][x-align=outside-start][x-align=outside-end] .tooltip-content::after{inset-inline-start:0}ch-window[x-align=outside-start] .tooltip-content::after{clip-path:polygon(100% 50%, 0 0, 0 100%);inset-inline-end:var(--ch-tooltip-based)}ch-window[x-align=outside-end] .tooltip-content::after{clip-path:polygon(100% 0, 0 50%, 100% 100%);inset-inline-start:var(--ch-tooltip-based)}ch-window[x-align=center] .tooltip-content::after{inset-inline-start:var(--ch-tooltip-centered)}ch-window[x-align=inside-start] .tooltip-content::after{inset-inline-start:var(--ch-tooltip-75)}ch-window[x-align=inside-end] .tooltip-content::after{inset-inline-start:var(--ch-tooltip-25)}ch-window[y-align=inside-start] .tooltip-content::after{inset-block-start:var(--ch-tooltip-75)}ch-window[y-align=center] .tooltip-content::after{inset-block-start:var(--ch-tooltip-centered)}ch-window[y-align=inside-end] .tooltip-content::after{inset-block-start:var(--ch-tooltip-25)}.tooltip-content::after{content:\" \";position:absolute;background-color:inherit;width:var(--ch-tooltip-arrow-size);height:var(--ch-tooltip-arrow-size)}";
|
|
7
|
+
|
|
8
|
+
const mapTooltipAlignToChWindowAlign = {
|
|
9
|
+
OutsideStart: "outside-start",
|
|
10
|
+
InsideStart: "inside-start",
|
|
11
|
+
Center: "center",
|
|
12
|
+
InsideEnd: "inside-end",
|
|
13
|
+
OutsideEnd: "outside-end"
|
|
14
|
+
};
|
|
15
|
+
const EXPORT_PARTS = "window:section,mask";
|
|
16
|
+
const ChTooltip$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.__registerHost();
|
|
20
|
+
/** Determines if the window and the tooltip is hidden or visible.
|
|
21
|
+
* Inherited from ch-window.
|
|
22
|
+
*/
|
|
23
|
+
this.hidden = true;
|
|
24
|
+
/**
|
|
25
|
+
* Specifies the tooltip description.
|
|
26
|
+
*/
|
|
27
|
+
this.tooltipId = "Tooltip";
|
|
28
|
+
/**
|
|
29
|
+
* Specifies the delay (in ms)
|
|
30
|
+
* for the tooltip to be displayed.
|
|
31
|
+
*/
|
|
32
|
+
this.delay = 100;
|
|
33
|
+
/**
|
|
34
|
+
* Specifies the position of the tooltip relative to
|
|
35
|
+
* the container element.
|
|
36
|
+
*/
|
|
37
|
+
this.position = "OutsideStart_Center";
|
|
38
|
+
this.showWithDelay = () => {
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
this.hidden = false;
|
|
41
|
+
}, this.delay);
|
|
42
|
+
};
|
|
43
|
+
this.handleEnter = () => {
|
|
44
|
+
if (!this.hidden) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
this.showWithDelay();
|
|
48
|
+
};
|
|
49
|
+
this.handleLeave = () => {
|
|
50
|
+
if (this.container === focusComposedPath()[0]) {
|
|
51
|
+
this.hidden = false;
|
|
52
|
+
}
|
|
53
|
+
this.hidden = true;
|
|
54
|
+
};
|
|
55
|
+
this.addListeners = () => {
|
|
56
|
+
this.container.addEventListener("focus", this.handleEnter);
|
|
57
|
+
this.container.addEventListener("focusout", this.handleLeave);
|
|
58
|
+
this.container.addEventListener("mouseenter", this.handleEnter);
|
|
59
|
+
this.container.addEventListener("mouseleave", this.handleLeave);
|
|
60
|
+
};
|
|
61
|
+
this.removeListeners = () => {
|
|
62
|
+
this.container.removeEventListener("focus", this.handleEnter);
|
|
63
|
+
this.container.removeEventListener("focusout", this.handleLeave);
|
|
64
|
+
this.container.removeEventListener("mouseenter", this.handleEnter);
|
|
65
|
+
this.container.removeEventListener("mouseleave", this.handleLeave);
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
componentDidLoad() {
|
|
69
|
+
this.container = document.querySelector('[slot="container"] > :first-child');
|
|
70
|
+
this.addListeners();
|
|
71
|
+
}
|
|
72
|
+
disconnectedCallback() {
|
|
73
|
+
this.removeListeners();
|
|
74
|
+
}
|
|
75
|
+
render() {
|
|
76
|
+
const aligns = this.position.split("_");
|
|
77
|
+
const alignX = aligns[0];
|
|
78
|
+
const alignY = aligns[1];
|
|
79
|
+
return (h(Host, null, h("slot", { name: "container" }), h("ch-window", { exportparts: EXPORT_PARTS, "show-header": false, "show-footer": false, modal: false, "close-on-escape": true, hidden: this.hidden, container: this.container, xAlign: mapTooltipAlignToChWindowAlign[alignX], yAlign: mapTooltipAlignToChWindowAlign[alignY] }, h("div", { role: "tooltip", class: "tooltip-content", id: this.tooltipId }, h("slot", { name: "content" })))));
|
|
80
|
+
}
|
|
81
|
+
static get style() { return tooltipCss; }
|
|
82
|
+
}, [4, "ch-tooltip", {
|
|
83
|
+
"tooltipId": [1, "tooltip-id"],
|
|
84
|
+
"delay": [2],
|
|
85
|
+
"position": [1],
|
|
86
|
+
"hidden": [32]
|
|
87
|
+
}]);
|
|
88
|
+
function defineCustomElement$1() {
|
|
89
|
+
if (typeof customElements === "undefined") {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const components = ["ch-tooltip", "ch-window", "ch-window-close"];
|
|
93
|
+
components.forEach(tagName => { switch (tagName) {
|
|
94
|
+
case "ch-tooltip":
|
|
95
|
+
if (!customElements.get(tagName)) {
|
|
96
|
+
customElements.define(tagName, ChTooltip$1);
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
case "ch-window":
|
|
100
|
+
if (!customElements.get(tagName)) {
|
|
101
|
+
defineCustomElement$3();
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case "ch-window-close":
|
|
105
|
+
if (!customElements.get(tagName)) {
|
|
106
|
+
defineCustomElement$2();
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
} });
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const ChTooltip = ChTooltip$1;
|
|
113
|
+
const defineCustomElement = defineCustomElement$1;
|
|
114
|
+
|
|
115
|
+
export { ChTooltip, defineCustomElement };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
|
|
2
2
|
import { D as DISABLED_CLASS } from './reserverd-names.js';
|
|
3
3
|
|
|
4
|
-
const checkboxCss = "*,::before,::after{box-sizing:border-box}:host{display:flex;align-items:center;align-self:stretch;outline:unset;touch-action:manipulation;user-select:none}:host(.ch-checkbox--actionable) :is(.input,.label){cursor:pointer}.container{position:relative;width:min(1em, 20px);height:min(1em, 20px);border:1px solid var(--option-border-color,
|
|
4
|
+
const checkboxCss = "*,::before,::after{box-sizing:border-box}:host{display:flex;align-items:center;align-self:stretch;outline:unset;touch-action:manipulation;user-select:none}:host(.ch-checkbox--actionable) :is(.input,.label){cursor:pointer}.container{position:relative;width:min(1em, 20px);height:min(1em, 20px);border:1px solid var(--option-border-color, currentColor);border-radius:18.75%}.container--checked{background-color:var(--option-checked-color, #ffffff00)}.container:focus-within{box-shadow:0 0 1px 1px color-mix(in srgb, currentColor 25%, transparent)}.input{display:flex;width:100%;height:100%;opacity:0;margin:0;padding:0}.option{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);width:50%;height:50%;background-color:currentColor;opacity:0;pointer-events:none}.option--checked{opacity:1;-webkit-mask:url(\"data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' %3E%3Cpath fill='currentColor' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z' /%3E%3C/svg%3E\")}.option--indeterminate{opacity:1}.label{margin-inline-start:min(0.35em, 7px)}";
|
|
5
5
|
|
|
6
6
|
const CHECKBOX_ID = "checkbox";
|
|
7
7
|
const PARTS = (checked, indeterminate) => `${checked ? " checked" : ""}${indeterminate ? " indeterminate" : ""}`;
|