@genexus/genexus-ide-ui 1.0.23 → 1.0.25
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/{form-validation-0019e158.js → form-validation-178cf461.js} +1 -19
- package/dist/cjs/form-validation-178cf461.js.map +1 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +4 -3
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +10 -28
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +197 -61
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +190 -122
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +149 -43
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +3 -3
- package/dist/collection/components/ai-assistant/ai-assistant.css +2 -2
- package/dist/collection/components/ai-assistant/ai-assistant.js +3 -2
- package/dist/collection/components/ai-assistant/ai-assistant.js.map +1 -1
- package/dist/collection/components/ai-assistant/ai-message.css +38 -13
- package/dist/collection/components/ai-assistant/ai-message.js +11 -27
- package/dist/collection/components/ai-assistant/ai-message.js.map +1 -1
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +1 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +2 -1
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +4 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +3 -0
- package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +3 -0
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.css +33 -0
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +350 -0
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -0
- package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +13 -0
- package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +3 -0
- package/dist/collection/components/team-dev/connect-gx-server/helpers.js +17 -0
- package/dist/collection/components/team-dev/connect-gx-server/helpers.js.map +1 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +39 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +381 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -0
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +27 -0
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +27 -0
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +27 -0
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +10 -0
- package/dist/collection/components/team-dev/create-kb-from-server/helpers.js +12 -0
- package/dist/collection/components/team-dev/create-kb-from-server/helpers.js.map +1 -0
- package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.en.json +27 -0
- package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.ja.json +27 -0
- package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.zh.json +27 -0
- package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/shortcuts.json +10 -0
- package/dist/collection/components/team-dev/share-kb/helpers.js +12 -0
- package/dist/collection/components/team-dev/share-kb/helpers.js.map +1 -0
- package/dist/collection/components/team-dev/share-kb/share-kb.css +39 -0
- package/dist/collection/components/team-dev/share-kb/share-kb.js +349 -0
- package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -0
- package/dist/collection/components/welcome-page/welcome-page.css +2 -16
- package/dist/collection/components/welcome-page/welcome-page.js +1 -1
- package/dist/collection/components/welcome-page/welcome-page.js.map +1 -1
- package/dist/components/ai-message.js +10 -28
- package/dist/components/ai-message.js.map +1 -1
- package/dist/components/form-validation.js +1 -18
- package/dist/components/form-validation.js.map +1 -1
- package/dist/components/gx-ide-ai-assistant.js +4 -3
- package/dist/components/gx-ide-ai-assistant.js.map +1 -1
- package/dist/components/gx-ide-connect-gx-server.js +211 -82
- package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +204 -148
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +160 -61
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-welcome-page.js +2 -2
- package/dist/components/gx-ide-welcome-page.js.map +1 -1
- package/dist/esm/{form-validation-44b2c2a8.js → form-validation-cd0215c6.js} +2 -19
- package/dist/esm/form-validation-cd0215c6.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-assistant.entry.js +4 -3
- package/dist/esm/gx-ide-ai-assistant.entry.js.map +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +10 -28
- package/dist/esm/gx-ide-ai-message.entry.js.map +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js +198 -62
- package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +191 -123
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +149 -43
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-welcome-page.entry.js +2 -2
- package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +1 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +4 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +3 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +3 -0
- package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +8 -12
- package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +2 -16
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +20 -12
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +20 -12
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +25 -1
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/shortcuts.json +5 -2
- package/dist/genexus-ide-ui/gx-ide-assets/share-kb/langs/share-kb.lang.en.json +22 -8
- package/dist/genexus-ide-ui/gx-ide-assets/share-kb/langs/share-kb.lang.ja.json +23 -9
- package/dist/genexus-ide-ui/gx-ide-assets/share-kb/langs/share-kb.lang.zh.json +25 -1
- package/dist/genexus-ide-ui/gx-ide-assets/share-kb/shortcuts.json +5 -2
- package/dist/genexus-ide-ui/{p-7a2d3f1c.entry.js → p-10beeb25.entry.js} +32 -30
- package/dist/genexus-ide-ui/p-10beeb25.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-289c3290.js +39 -0
- package/dist/genexus-ide-ui/p-289c3290.js.map +1 -0
- package/dist/genexus-ide-ui/p-2c6dd837.entry.js +305 -0
- package/dist/genexus-ide-ui/p-2c6dd837.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-407c31c6.entry.js +264 -0
- package/dist/genexus-ide-ui/p-407c31c6.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-3adbc04c.entry.js → p-4cbaa118.entry.js} +11 -11
- package/dist/genexus-ide-ui/p-673480ac.entry.js +88 -0
- package/dist/genexus-ide-ui/p-673480ac.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-26b2037d.entry.js → p-9e810ad5.entry.js} +5 -4
- package/dist/genexus-ide-ui/p-9e810ad5.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-e31b4df0.entry.js +249 -0
- package/dist/genexus-ide-ui/p-e31b4df0.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-3d5fea0a.entry.js → p-ed7eada1.entry.js} +2 -2
- package/dist/types/components/ai-assistant/ai-message.d.ts +1 -1
- package/dist/types/components/team-dev/connect-gx-server/connect-gx-server.d.ts +50 -0
- package/dist/types/components/team-dev/connect-gx-server/helpers.d.ts +4 -0
- package/dist/types/components/team-dev/create-kb-from-server/create-kb-from-server.d.ts +82 -0
- package/dist/types/components/team-dev/create-kb-from-server/helpers.d.ts +3 -0
- package/dist/types/components/team-dev/share-kb/helpers.d.ts +3 -0
- package/dist/types/components/team-dev/share-kb/share-kb.d.ts +73 -0
- package/dist/types/components/welcome-page/welcome-page.d.ts +4 -1
- package/dist/types/components.d.ts +119 -151
- package/package.json +3 -3
- package/dist/cjs/form-validation-0019e158.js.map +0 -1
- package/dist/collection/components/connect-gx-server/connect-gx-server.css +0 -609
- package/dist/collection/components/connect-gx-server/connect-gx-server.js +0 -258
- package/dist/collection/components/connect-gx-server/connect-gx-server.js.map +0 -1
- package/dist/collection/components/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +0 -17
- package/dist/collection/components/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +0 -17
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.css +0 -638
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.js +0 -349
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.js.map +0 -1
- package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +0 -19
- package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +0 -19
- package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +0 -3
- package/dist/collection/components/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +0 -7
- package/dist/collection/components/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.en.json +0 -13
- package/dist/collection/components/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.ja.json +0 -13
- package/dist/collection/components/share-kb/gx-ide-assets/share-kb/langs/share-kb.lang.zh.json +0 -3
- package/dist/collection/components/share-kb/gx-ide-assets/share-kb/shortcuts.json +0 -7
- package/dist/collection/components/share-kb/share-kb.css +0 -636
- package/dist/collection/components/share-kb/share-kb.js +0 -189
- package/dist/collection/components/share-kb/share-kb.js.map +0 -1
- package/dist/esm/form-validation-44b2c2a8.js.map +0 -1
- package/dist/genexus-ide-ui/p-02bc66c1.entry.js +0 -129
- package/dist/genexus-ide-ui/p-02bc66c1.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-26b2037d.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-58e13823.entry.js +0 -158
- package/dist/genexus-ide-ui/p-58e13823.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-5dfb7c66.entry.js +0 -106
- package/dist/genexus-ide-ui/p-5dfb7c66.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-7a2d3f1c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-b8624c0b.js +0 -56
- package/dist/genexus-ide-ui/p-b8624c0b.js.map +0 -1
- package/dist/genexus-ide-ui/p-cf2c8b3c.entry.js +0 -241
- package/dist/genexus-ide-ui/p-cf2c8b3c.entry.js.map +0 -1
- package/dist/types/components/connect-gx-server/connect-gx-server.d.ts +0 -62
- package/dist/types/components/create-kb-from-server/create-kb-from-server.d.ts +0 -97
- package/dist/types/components/share-kb/share-kb.d.ts +0 -53
- /package/dist/collection/components/{connect-gx-server → team-dev/connect-gx-server}/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.zh.json +0 -0
- /package/dist/genexus-ide-ui/{p-3adbc04c.entry.js.map → p-4cbaa118.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-3d5fea0a.entry.js.map → p-ed7eada1.entry.js.map} +0 -0
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
// Define your constants
|
|
2
|
-
const AUTHENTICATION_TYPE = ["GeneXus Account", "Local"];
|
|
3
|
-
/* STENCIL IMPORTS */
|
|
4
|
-
import { Host, h, getAssetPath } from "@stencil/core";
|
|
5
|
-
/* OTHER LIBRARIES IMPORTS */
|
|
6
|
-
/* CUSTOM IMPORTS */
|
|
7
|
-
import { Locale } from "../../common/locale";
|
|
8
|
-
import { config } from "../../common/config";
|
|
9
|
-
import { formSubmitValidation } from "../../common/form-validation";
|
|
10
|
-
import { renderFormItems } from "../../common/common";
|
|
11
|
-
export class GxIdeShareKb {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.renderedFirstTime = false;
|
|
14
|
-
this.shortcutsSrc = getAssetPath(`./gx-ide-assets/share-kb/shortcuts.json`);
|
|
15
|
-
// 7.LISTENERS //
|
|
16
|
-
// 8.PUBLIC METHODS API //
|
|
17
|
-
this.createKBCallbackHandler = async () => {
|
|
18
|
-
const kbData = {
|
|
19
|
-
name: this.kbNameEl.value,
|
|
20
|
-
serverUrl: this.serverUrlEl.value,
|
|
21
|
-
authenticationType: this.authTypeEl.value,
|
|
22
|
-
user: this.userNameEl.value,
|
|
23
|
-
password: this.passwordEl.value
|
|
24
|
-
};
|
|
25
|
-
const createCallbackPromise = this.createKBCallback(kbData);
|
|
26
|
-
createCallbackPromise.then(formSubmitResult => {
|
|
27
|
-
formSubmitValidation(formSubmitResult, this);
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
this.displayTitle = false;
|
|
31
|
-
this.kbName = undefined;
|
|
32
|
-
this.serverUrls = undefined;
|
|
33
|
-
this.enableCustomServer = true;
|
|
34
|
-
this.createKBCallback = undefined;
|
|
35
|
-
}
|
|
36
|
-
// 6.COMPONENT LIFECYCLE METHODS //
|
|
37
|
-
async componentWillLoad() {
|
|
38
|
-
this._componentLocale = await Locale.getComponentStrings(this.el);
|
|
39
|
-
}
|
|
40
|
-
componentDidLoad() {
|
|
41
|
-
this.kbNameEl.focus();
|
|
42
|
-
}
|
|
43
|
-
componentDidRender() {
|
|
44
|
-
if (!this.renderedFirstTime) {
|
|
45
|
-
this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
|
|
46
|
-
this.renderedFirstTime = true;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// 9.LOCAL METHODS //
|
|
50
|
-
// 10.RENDER() FUNCTION //
|
|
51
|
-
render() {
|
|
52
|
-
return (h(Host, { class: "gx-ide-component" }, h("div", { class: "gx-ide-main-wrapper" }, h("gx-ide-container", { containerTitle: this.displayTitle ? this._componentLocale.componentName : null, slimmerFooter: config.gxIdeContainer.slimmerFooter }, h("main", { class: "main" }, h("gxg-label", { labelPosition: "start", class: "kb-label", noMargin: true }, this._componentLocale.main.kbName), h("gxg-form-text", { labelPosition: "start", placeholder: "SalesInventory", "max-width": "100%", value: this.kbName, toolTip: config.tooltip, ref: (el) => (this.kbNameEl = el), part: "kb-name", class: "kb-input" }), h("gxg-label", { labelPosition: "start", class: "server-url-label", noMargin: true }, this._componentLocale.main.serverUrl), h("gxg-combo-box", { disableFilter: !this.enableCustomServer, labelPosition: "start", placeholder: "https://myexampleserver.com", strict: true, toolTip: config.tooltip, value: this.serverUrls[0], ref: (el) => (this.serverUrlEl = el), part: "server-url", class: "server-url-input" }, renderFormItems("gxg-combo-box-item", this.serverUrls.map((item) => ({
|
|
53
|
-
id: item,
|
|
54
|
-
label: item
|
|
55
|
-
})), "server-url")), h("gxg-label", { labelPosition: "start", class: "auth-type-label", noMargin: true }, this._componentLocale.main.authentication), h("gxg-combo-box", { labelPosition: "start", placeholder: "https://myexampleserver.com", "max-width": "100%", value: AUTHENTICATION_TYPE[0], ref: (el) => (this.authTypeEl = el), part: "auth-type", class: "auth-type-input" }, renderFormItems("gxg-combo-box-item", AUTHENTICATION_TYPE.map((item) => ({
|
|
56
|
-
id: item,
|
|
57
|
-
label: item
|
|
58
|
-
})), "auth-type")), h("gxg-label", { labelPosition: "start", class: "user-name-label", noMargin: true }, this._componentLocale.main.userName), h("gxg-form-text", { labelPosition: "start", placeholder: "My User", "max-width": "100%", toolTip: config.tooltip, ref: (el) => (this.userNameEl = el), part: "user-name", class: "user-name-input" }), h("gxg-label", { labelPosition: "start", class: "password-label", noMargin: true }, this._componentLocale.main.password), h("gxg-form-text", { labelPosition: "start", password: true, toolTip: config.tooltip, "max-width": "100%", ref: (el) => (this.passwordEl = el), part: "password", class: "password-input" })), h("gxg-button", { slot: "footer-end", type: "primary-text-icon", icon: "gemini-tools/share", onClick: this.createKBCallbackHandler, part: "share-kb" }, this._componentLocale.footer.shareBtn))), h("gxg-shortcuts", { src: this.shortcutsSrc })));
|
|
59
|
-
}
|
|
60
|
-
static get is() { return "gx-ide-share-kb"; }
|
|
61
|
-
static get encapsulation() { return "shadow"; }
|
|
62
|
-
static get originalStyleUrls() {
|
|
63
|
-
return {
|
|
64
|
-
"$": ["share-kb.scss"]
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
static get styleUrls() {
|
|
68
|
-
return {
|
|
69
|
-
"$": ["share-kb.css"]
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
static get assetsDirs() { return ["gx-ide-assets/share-kb"]; }
|
|
73
|
-
static get properties() {
|
|
74
|
-
return {
|
|
75
|
-
"displayTitle": {
|
|
76
|
-
"type": "boolean",
|
|
77
|
-
"mutable": false,
|
|
78
|
-
"complexType": {
|
|
79
|
-
"original": "false",
|
|
80
|
-
"resolved": "boolean",
|
|
81
|
-
"references": {}
|
|
82
|
-
},
|
|
83
|
-
"required": false,
|
|
84
|
-
"optional": false,
|
|
85
|
-
"docs": {
|
|
86
|
-
"tags": [],
|
|
87
|
-
"text": "If true it displays the component title on the header"
|
|
88
|
-
},
|
|
89
|
-
"attribute": "display-title",
|
|
90
|
-
"reflect": false,
|
|
91
|
-
"defaultValue": "false"
|
|
92
|
-
},
|
|
93
|
-
"kbName": {
|
|
94
|
-
"type": "string",
|
|
95
|
-
"mutable": false,
|
|
96
|
-
"complexType": {
|
|
97
|
-
"original": "string",
|
|
98
|
-
"resolved": "string",
|
|
99
|
-
"references": {}
|
|
100
|
-
},
|
|
101
|
-
"required": true,
|
|
102
|
-
"optional": false,
|
|
103
|
-
"docs": {
|
|
104
|
-
"tags": [],
|
|
105
|
-
"text": "The name of the kb"
|
|
106
|
-
},
|
|
107
|
-
"attribute": "kb-name",
|
|
108
|
-
"reflect": false
|
|
109
|
-
},
|
|
110
|
-
"serverUrls": {
|
|
111
|
-
"type": "unknown",
|
|
112
|
-
"mutable": false,
|
|
113
|
-
"complexType": {
|
|
114
|
-
"original": "string[]",
|
|
115
|
-
"resolved": "string[]",
|
|
116
|
-
"references": {}
|
|
117
|
-
},
|
|
118
|
-
"required": true,
|
|
119
|
-
"optional": false,
|
|
120
|
-
"docs": {
|
|
121
|
-
"tags": [],
|
|
122
|
-
"text": "Urls array of cataloged servers to be shown on combo"
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
"enableCustomServer": {
|
|
126
|
-
"type": "boolean",
|
|
127
|
-
"mutable": false,
|
|
128
|
-
"complexType": {
|
|
129
|
-
"original": "boolean",
|
|
130
|
-
"resolved": "boolean",
|
|
131
|
-
"references": {}
|
|
132
|
-
},
|
|
133
|
-
"required": false,
|
|
134
|
-
"optional": false,
|
|
135
|
-
"docs": {
|
|
136
|
-
"tags": [],
|
|
137
|
-
"text": "True if user can introduce server url manually"
|
|
138
|
-
},
|
|
139
|
-
"attribute": "enable-custom-server",
|
|
140
|
-
"reflect": false,
|
|
141
|
-
"defaultValue": "true"
|
|
142
|
-
},
|
|
143
|
-
"createKBCallback": {
|
|
144
|
-
"type": "unknown",
|
|
145
|
-
"mutable": false,
|
|
146
|
-
"complexType": {
|
|
147
|
-
"original": "CreateKBCallback",
|
|
148
|
-
"resolved": "(data: ShareKBData) => Promise<FormSubmitResult>",
|
|
149
|
-
"references": {
|
|
150
|
-
"CreateKBCallback": {
|
|
151
|
-
"location": "local",
|
|
152
|
-
"path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/share-kb/share-kb.tsx",
|
|
153
|
-
"id": "src/components/share-kb/share-kb.tsx::CreateKBCallback"
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
"required": true,
|
|
158
|
-
"optional": false,
|
|
159
|
-
"docs": {
|
|
160
|
-
"tags": [],
|
|
161
|
-
"text": "Callback invoked when Share button is pressed"
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
static get events() {
|
|
167
|
-
return [{
|
|
168
|
-
"method": "componentDidRenderFirstTime",
|
|
169
|
-
"name": "componentDidRenderFirstTime",
|
|
170
|
-
"bubbles": true,
|
|
171
|
-
"cancelable": true,
|
|
172
|
-
"composed": true,
|
|
173
|
-
"docs": {
|
|
174
|
-
"tags": [{
|
|
175
|
-
"name": "description",
|
|
176
|
-
"text": "Gets fired when the component has rendered for the first time."
|
|
177
|
-
}],
|
|
178
|
-
"text": ""
|
|
179
|
-
},
|
|
180
|
-
"complexType": {
|
|
181
|
-
"original": "string",
|
|
182
|
-
"resolved": "string",
|
|
183
|
-
"references": {}
|
|
184
|
-
}
|
|
185
|
-
}];
|
|
186
|
-
}
|
|
187
|
-
static get elementRef() { return "el"; }
|
|
188
|
-
}
|
|
189
|
-
//# sourceMappingURL=share-kb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"share-kb.js","sourceRoot":"","sources":["../../../src/components/share-kb/share-kb.tsx"],"names":[],"mappings":"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","sourcesContent":["// Define your constants\nconst AUTHENTICATION_TYPE = [\"GeneXus Account\", \"Local\"];\n\n/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n getAssetPath\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n FormSubmitResult,\n GxServerAuthenticationType\n} from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { formSubmitValidation } from \"../../common/form-validation\";\nimport { renderFormItems } from \"../../common/common\";\n\n@Component({\n tag: \"gx-ide-share-kb\",\n styleUrl: \"share-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/share-kb\"]\n})\nexport class GxIdeShareKb {\n /*\nINDEX:\n1.OWN PROPERTIES \n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE METHODS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n\n private _componentLocale: any;\n private renderedFirstTime = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/share-kb/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeShareKbElement;\n private kbNameEl: HTMLGxgFormTextElement;\n private serverUrlEl: HTMLGxgComboBoxElement;\n private authTypeEl: HTMLGxgComboBoxElement;\n private userNameEl: HTMLGxgFormTextElement;\n private passwordEl: HTMLGxgFormTextElement;\n\n // 3.STATE() VARIABLES //\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * The name of the kb\n */\n @Prop() readonly kbName!: string;\n\n /**\n * Urls array of cataloged servers to be shown on combo\n */\n @Prop() readonly serverUrls!: string[];\n\n /**\n * True if user can introduce server url manually\n */\n @Prop() readonly enableCustomServer: boolean = true;\n\n /**\n * Callback invoked when Share button is pressed\n */\n @Prop() readonly createKBCallback!: CreateKBCallback;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.kbNameEl.focus();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n private createKBCallbackHandler = async () => {\n const kbData: ShareKBData = {\n name: this.kbNameEl.value,\n serverUrl: this.serverUrlEl.value,\n authenticationType: this.authTypeEl.value,\n user: this.userNameEl.value,\n password: this.passwordEl.value\n };\n const createCallbackPromise = this.createKBCallback(kbData);\n createCallbackPromise.then(formSubmitResult => {\n formSubmitValidation(formSubmitResult, this);\n });\n };\n\n // 9.LOCAL METHODS //\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <main class=\"main\">\n {/* #kb name */}\n <gxg-label labelPosition=\"start\" class=\"kb-label\" noMargin>\n {this._componentLocale.main.kbName}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n placeholder=\"SalesInventory\"\n max-width=\"100%\"\n value={this.kbName}\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.kbNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"kb-name\"\n class=\"kb-input\"\n ></gxg-form-text>\n\n {/* #server url */}\n <gxg-label\n labelPosition=\"start\"\n class=\"server-url-label\"\n noMargin\n >\n {this._componentLocale.main.serverUrl}\n </gxg-label>\n <gxg-combo-box\n disableFilter={!this.enableCustomServer}\n labelPosition=\"start\"\n placeholder=\"https://myexampleserver.com\"\n strict\n toolTip={config.tooltip}\n value={this.serverUrls[0]}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.serverUrlEl = el as HTMLGxgComboBoxElement)\n }\n part=\"server-url\"\n class=\"server-url-input\"\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n this.serverUrls.map((item: string) => ({\n id: item,\n label: item\n })),\n \"server-url\"\n )}\n </gxg-combo-box>\n\n {/* #authentication type */}\n <gxg-label labelPosition=\"start\" class=\"auth-type-label\" noMargin>\n {this._componentLocale.main.authentication}\n </gxg-label>\n <gxg-combo-box\n labelPosition=\"start\"\n placeholder=\"https://myexampleserver.com\"\n max-width=\"100%\"\n value={AUTHENTICATION_TYPE[0]}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.authTypeEl = el as HTMLGxgComboBoxElement)\n }\n part=\"auth-type\"\n class=\"auth-type-input\"\n >\n {renderFormItems(\n \"gxg-combo-box-item\",\n AUTHENTICATION_TYPE.map((item: string) => ({\n id: item,\n label: item\n })),\n \"auth-type\"\n )}\n </gxg-combo-box>\n\n {/* #user name */}\n <gxg-label labelPosition=\"start\" class=\"user-name-label\" noMargin>\n {this._componentLocale.main.userName}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n placeholder=\"My User\"\n max-width=\"100%\"\n toolTip={config.tooltip}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.userNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"user-name\"\n class=\"user-name-input\"\n ></gxg-form-text>\n\n {/* #password */}\n <gxg-label labelPosition=\"start\" class=\"password-label\" noMargin>\n {this._componentLocale.main.password}\n </gxg-label>\n <gxg-form-text\n labelPosition=\"start\"\n password\n toolTip={config.tooltip}\n max-width=\"100%\"\n ref={(el: HTMLGxgFormTextElement) =>\n (this.passwordEl = el as HTMLGxgFormTextElement)\n }\n part=\"password\"\n class=\"password-input\"\n ></gxg-form-text>\n </main>\n <gxg-button\n slot=\"footer-end\"\n type=\"primary-text-icon\"\n icon=\"gemini-tools/share\"\n onClick={this.createKBCallbackHandler}\n part=\"share-kb\"\n >\n {this._componentLocale.footer.shareBtn}\n </gxg-button>\n </gx-ide-container>\n </div>\n <gxg-shortcuts src={this.shortcutsSrc}></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport type CreateKBCallback = (data: ShareKBData) => Promise<FormSubmitResult>;\nexport type ShareKBData = {\n name: string;\n serverUrl: string;\n authenticationType: GxServerAuthenticationType;\n user: string;\n password: string;\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"form-validation-44b2c2a8.js","mappings":"AAGA;MACa,oBAAoB,GAAG,CAClC,MAA+C,EAC/C,GAAQ;;IAER,MAAA,MAAM,CAAC,WAAW,0CAAE,OAAO,CAAC,OAAO;QACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,MAAM,SAAS,GAAkB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QACjD,IAAI,SAAS,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE;YAC3C,SAAS,CAAC,gBAAgB,GAAG,OAAO,CAAC;YACrC,SAAS,CAAC,iBAAiB,GAAG,OAAO,CAAC;SACvC;aAAM,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE;YACjC,SAAS,CAAC,gBAAgB,GAAG,eAAe,CAAC;YAC7C,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC;SACpC;KACF,CAAC,CAAC;AACL,EAAE;AAEF;AACA,MAAM,kCAAkC,GAAG;IACzC,aAAa,EAAE,gBAAgB;IAC/B,qBAAqB,EAAE,iBAAiB;IACxC,SAAS,EAAE,aAAa;CAChB,CAAC;AAEX,MAAM,gBAAgB,GAAG,CAAC,QAAiB,EAAE,OAAoB;IAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,UAAU,GACd,kCAAkC,CAChC,cAAiE,CAClE,CAAC;IACJ,IAAI,QAAQ,EAAE;QACZ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACnC;SAAM;QACL,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KACtC;AACH,CAAC,CAAC;MAEW,gBAAgB,GAAG,CAC9B,gBAAkC,EAClC,mBAAmD;IAEnD,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChE,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC;QACjC,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC3C,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,EAAE;;YAE/B,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC5D,0BAA0B,CAAC,GAAG,CAAC,QAAQ,kCAClC,gBAAgB,KACnB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,CAAC,OAAO,IAC5B,CAAC;SACJ;KACF,CAAC,CAAC;;IAEH,OAAO,0BAA0B,CAAC;AACpC;;;;","names":[],"sources":["src/common/form-validation.ts"],"sourcesContent":["import { FormSubmitResult, ConnectionResultData } from \"../common/types\";\nimport { FormComponent } from \"@genexus/gemini/dist/types/common/interfaces\";\n\n// formSubmitValidation will be deprecated. use \"validateControls\" instead.\nexport const formSubmitValidation = (\n result: FormSubmitResult | ConnectionResultData,\n ref: any\n) => {\n result.fieldErrors?.forEach(element => {\n const key = element.key;\n const message = element.message;\n const hasError = element.hasError;\n\n const reference: FormComponent = ref[`${key}El`];\n if (reference && hasError && message.trim()) {\n reference.validationStatus = \"error\";\n reference.validationMessage = message;\n } else if (reference && !hasError) {\n reference.validationStatus = \"indeterminate\";\n reference.validationMessage = null;\n }\n });\n};\n\n// TODO: Improve the way we mark components with error. We must not use error classes.\nconst formElementsErrorClassesDictionary = {\n \"ch-checkbox\": \"checkbox-error\",\n \"ch-combo-box-render\": \"combo-box-error\",\n \"ch-edit\": \"input-error\"\n} as const;\n\nconst toggleErrorClass = (hasError: boolean, element: HTMLElement) => {\n const elementTagName = element.tagName.toLowerCase();\n const errorClass =\n formElementsErrorClassesDictionary[\n elementTagName as keyof typeof formElementsErrorClassesDictionary\n ];\n if (hasError) {\n element.classList.add(errorClass);\n } else {\n element.classList.remove(errorClass);\n }\n};\n\nexport const validateControls = (\n formSubmitResult: FormSubmitResult,\n validatableControls: Map<string, ControlValidation>\n): Map<string, ControlValidation> => {\n const validatableControlsUpdated = new Map(validatableControls);\n formSubmitResult.fieldErrors.forEach(fieldResult => {\n const fieldKey = fieldResult.key;\n const fieldHasError = fieldResult.hasError;\n const controlMapRecord = validatableControlsUpdated.get(fieldKey);\n if (controlMapRecord?.reference) {\n // toggle class to add or remove error style\n toggleErrorClass(fieldHasError, controlMapRecord.reference);\n validatableControlsUpdated.set(fieldKey, {\n ...controlMapRecord,\n hasError: fieldHasError,\n message: fieldResult.message\n });\n }\n });\n // return validatableControls updated.\n return validatableControlsUpdated;\n};\n\nexport type ControlValidation = {\n reference: HTMLElement;\n hasError: boolean;\n message: string;\n};\n"],"version":3}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { r as e, c as r, h as t, H as o, g as a } from "./p-aaed592c.js";
|
|
2
|
-
|
|
3
|
-
import { c as i } from "./p-78b90603.js";
|
|
4
|
-
|
|
5
|
-
import { L as s } from "./p-74d59062.js";
|
|
6
|
-
|
|
7
|
-
import { f as l } from "./p-b8624c0b.js";
|
|
8
|
-
|
|
9
|
-
const n = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:block}.user-details-container{display:flex;gap:var(--gx-ide-form-items-gap)}.wrapper{display:flex;flex-direction:column;gap:var(--mer-spacing--md)}";
|
|
10
|
-
|
|
11
|
-
const g = class {
|
|
12
|
-
constructor(o) {
|
|
13
|
-
e(this, o);
|
|
14
|
-
this.componentDidRenderFirstTime = r(this, "componentDidRenderFirstTime", 7);
|
|
15
|
-
this.renderedFirstTime = false;
|
|
16
|
-
// 7.LISTENERS //
|
|
17
|
-
// 8.PUBLIC METHODS API //
|
|
18
|
-
// 9.LOCAL METHODS //
|
|
19
|
-
this.renderServerUrls = () => {
|
|
20
|
-
var e;
|
|
21
|
-
if ((e = this.serverUrls) === null || e === void 0 ? void 0 : e.length) {
|
|
22
|
-
return this.serverUrls.map((e => t("gxg-combo-box-item", null, e)));
|
|
23
|
-
}
|
|
24
|
-
return [];
|
|
25
|
-
};
|
|
26
|
-
this.continueWithGxServerHandler = e => {
|
|
27
|
-
this.displayLoginControls = !e.detail.value;
|
|
28
|
-
};
|
|
29
|
-
this.evaluateDisplayLoginControls = () => {
|
|
30
|
-
if (this.enableUserLogged) {
|
|
31
|
-
this.displayLoginControls = false;
|
|
32
|
-
} else {
|
|
33
|
-
this.displayLoginControls = true;
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
this.connectHandler = () => {
|
|
37
|
-
if (this.connectCallback) {
|
|
38
|
-
this.connectCallback({
|
|
39
|
-
serverUrl: this.serverURLEl.value,
|
|
40
|
-
continueWithGeneXusAccount: this.continueWithGeneXusAccountEl.checked,
|
|
41
|
-
user: this.userNameEl.value,
|
|
42
|
-
password: this.passwordEl.value
|
|
43
|
-
}).then((e => {
|
|
44
|
-
console.log(e);
|
|
45
|
-
l(e, this);
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
this.displayLoginControls = false;
|
|
50
|
-
this.displayTitle = false;
|
|
51
|
-
this.serverUrls = undefined;
|
|
52
|
-
this.enableCustomServer = false;
|
|
53
|
-
this.defaultConnectionData = undefined;
|
|
54
|
-
this.enableUserLogged = false;
|
|
55
|
-
this.connectCallback = undefined;
|
|
56
|
-
this.cancelCallback = undefined;
|
|
57
|
-
}
|
|
58
|
-
// 6.COMPONENT LIFECYCLE METHODS //
|
|
59
|
-
async componentWillLoad() {
|
|
60
|
-
this._componentLocale = await s.getComponentStrings(this.el);
|
|
61
|
-
this.evaluateDisplayLoginControls();
|
|
62
|
-
}
|
|
63
|
-
componentDidRender() {
|
|
64
|
-
if (!this.renderedFirstTime) {
|
|
65
|
-
this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
|
|
66
|
-
this.renderedFirstTime = true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
// 10.RENDER() FUNCTION //
|
|
70
|
-
render() {
|
|
71
|
-
var e, r, a;
|
|
72
|
-
return t(o, {
|
|
73
|
-
class: "gx-ide-component"
|
|
74
|
-
}, t("div", {
|
|
75
|
-
class: "gx-ide-main-wrapper"
|
|
76
|
-
}, t("gx-ide-container", {
|
|
77
|
-
containerTitle: this.displayTitle ? this._componentLocale.componentName : null,
|
|
78
|
-
slimmerFooter: i.gxIdeContainer.slimmerFooter
|
|
79
|
-
}, t("div", {
|
|
80
|
-
class: "wrapper"
|
|
81
|
-
}, t("gxg-combo-box", {
|
|
82
|
-
label: this._componentLocale.main.serverUrl,
|
|
83
|
-
disableFilter: !this.enableCustomServer,
|
|
84
|
-
value: (e = this.defaultConnectionData) === null || e === void 0 ? void 0 : e.serverUrl,
|
|
85
|
-
ref: e => this.serverURLEl = e,
|
|
86
|
-
toolTip: i.tooltip
|
|
87
|
-
}, this.renderServerUrls()), t("gxg-form-checkbox", {
|
|
88
|
-
label: this._componentLocale.main.continueWithGxAccount,
|
|
89
|
-
onChange: this.continueWithGxServerHandler,
|
|
90
|
-
checked: this.enableUserLogged,
|
|
91
|
-
disabled: !this.enableUserLogged,
|
|
92
|
-
ref: e => this.continueWithGeneXusAccountEl = e
|
|
93
|
-
}), this.displayLoginControls ? t("div", {
|
|
94
|
-
class: "user-details-container"
|
|
95
|
-
}, t("gxg-form-text", {
|
|
96
|
-
label: this._componentLocale.main.userName,
|
|
97
|
-
labelPosition: "above",
|
|
98
|
-
disabled: !this.displayLoginControls,
|
|
99
|
-
value: (r = this.defaultConnectionData) === null || r === void 0 ? void 0 : r.user,
|
|
100
|
-
ref: e => this.userNameEl = e,
|
|
101
|
-
toolTip: i.tooltip
|
|
102
|
-
}), t("gxg-form-text", {
|
|
103
|
-
label: this._componentLocale.main.password,
|
|
104
|
-
labelPosition: "above",
|
|
105
|
-
disabled: !this.displayLoginControls,
|
|
106
|
-
value: (a = this.defaultConnectionData) === null || a === void 0 ? void 0 : a.password,
|
|
107
|
-
ref: e => this.passwordEl = e,
|
|
108
|
-
password: true,
|
|
109
|
-
toolTip: i.tooltip
|
|
110
|
-
})) : null), t("gxg-button", {
|
|
111
|
-
slot: "footer-end",
|
|
112
|
-
type: "outlined"
|
|
113
|
-
}, this._componentLocale.main.cancel), t("gxg-button", {
|
|
114
|
-
slot: "footer-end",
|
|
115
|
-
onClick: this.connectHandler
|
|
116
|
-
}, this._componentLocale.main.connect))));
|
|
117
|
-
}
|
|
118
|
-
static get assetsDirs() {
|
|
119
|
-
return [ "gx-ide-assets/connect-gx-server" ];
|
|
120
|
-
}
|
|
121
|
-
get el() {
|
|
122
|
-
return a(this);
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
g.style = n;
|
|
127
|
-
|
|
128
|
-
export { g as gx_ide_connect_gx_server };
|
|
129
|
-
//# sourceMappingURL=p-02bc66c1.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["connectGxServerCss","GxIdeConnectGxServer","this","renderedFirstTime","renderServerUrls","_a","serverUrls","length","map","serverUrl","h","continueWithGxServerHandler","event","displayLoginControls","detail","value","evaluateDisplayLoginControls","enableUserLogged","connectHandler","connectCallback","serverURLEl","continueWithGeneXusAccount","continueWithGeneXusAccountEl","checked","user","userNameEl","password","passwordEl","then","formSubmitResult","console","log","formSubmitValidation","componentWillLoad","_componentLocale","Locale","getComponentStrings","el","componentDidRender","componentDidRenderFirstTime","emit","componentName","render","Host","class","containerTitle","displayTitle","slimmerFooter","config","gxIdeContainer","label","main","disableFilter","enableCustomServer","defaultConnectionData","ref","toolTip","tooltip","continueWithGxAccount","onChange","disabled","userName","labelPosition","_b","_c","slot","type","cancel","onClick","connect"],"sources":["src/components/connect-gx-server/connect-gx-server.scss?tag=gx-ide-connect-gx-server&encapsulation=shadow","src/components/connect-gx-server/connect-gx-server.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n}\n\n.user-details-container {\n display: flex;\n gap: var(--gx-ide-form-items-gap);\n}\n\n.wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--md);\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { formSubmitValidation } from \"../../common/form-validation\";\nimport { ConnectionResultData } from \"../../common/types\";\n\n@Component({\n tag: \"gx-ide-connect-gx-server\",\n styleUrl: \"connect-gx-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/connect-gx-server\"]\n})\nexport class GxIdeConnectGxServer {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeConnectGxServerElement;\n\n private serverURLEl!: HTMLGxgComboBoxElement;\n private userNameEl!: HTMLGxgFormTextElement;\n private passwordEl!: HTMLGxgFormTextElement;\n private continueWithGeneXusAccountEl!: HTMLGxgFormCheckboxElement;\n\n // 3.STATE() VARIABLES //\n\n //\n @State() displayLoginControls: boolean = false;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Array of cataloged server URLs\n */\n @Prop() readonly serverUrls: string[];\n\n /**\n * 'true' if the user should be allowed to manually enter a server URL in serverUrls.\n */\n @Prop() readonly enableCustomServer: boolean = false;\n\n /**\n * Initial user values for the case in which the user returns to the login modal after a successful authentication.\n */\n @Prop() readonly defaultConnectionData?: GXServerConnectionDefault;\n\n /**\n * If 'true', shows the enabled and checked 'Continue with GX Account' checkbox. If 'false', shows the checkbox unchecked and disabled, and displays the options to enter username and password directly. Even if 'true', allow the user to deselect the checkbox and enter username and password.\n */\n @Prop() readonly enableUserLogged: boolean = false;\n\n /**\n * If 'true', shows the enabled and checked 'Continue with GX Account' checkbox. If 'false', shows the checkbox unchecked and disabled, and displays the options to enter username and password directly. Even if 'true', allow the user to deselect the checkbox and enter username and password.\n */\n @Prop() readonly connectCallback: (\n data: GXServerConnectionData\n ) => Promise<ConnectionResultData>;\n\n /**\n * Callback that allows canceling the server connection process.\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateDisplayLoginControls();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n // 9.LOCAL METHODS //\n\n private renderServerUrls = (): HTMLGxgComboBoxItemElement[] => {\n if (this.serverUrls?.length) {\n return this.serverUrls.map(serverUrl => {\n return <gxg-combo-box-item>{serverUrl}</gxg-combo-box-item>;\n });\n }\n return [];\n };\n\n private continueWithGxServerHandler = (\n event: CustomEvent<{ id: string; value: boolean; disabled?: boolean }>\n ) => {\n this.displayLoginControls = !event.detail.value;\n };\n\n private evaluateDisplayLoginControls = () => {\n if (this.enableUserLogged) {\n this.displayLoginControls = false;\n } else {\n this.displayLoginControls = true;\n }\n };\n\n private connectHandler = () => {\n if (this.connectCallback) {\n this.connectCallback({\n serverUrl: this.serverURLEl.value,\n continueWithGeneXusAccount: this.continueWithGeneXusAccountEl.checked,\n user: this.userNameEl.value,\n password: this.passwordEl.value\n }).then((formSubmitResult: ConnectionResultData) => {\n console.log(formSubmitResult);\n formSubmitValidation(formSubmitResult, this);\n });\n }\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <div class=\"wrapper\">\n {/* server url */}\n <gxg-combo-box\n label={this._componentLocale.main.serverUrl}\n disableFilter={!this.enableCustomServer}\n value={this.defaultConnectionData?.serverUrl}\n ref={el => (this.serverURLEl = el as HTMLGxgComboBoxElement)}\n toolTip={config.tooltip}\n >\n {this.renderServerUrls()}\n </gxg-combo-box>\n\n {/* continue with GeneXus account */}\n <gxg-form-checkbox\n label={this._componentLocale.main.continueWithGxAccount}\n onChange={this.continueWithGxServerHandler}\n checked={this.enableUserLogged}\n disabled={!this.enableUserLogged}\n ref={el =>\n (this.continueWithGeneXusAccountEl =\n el as HTMLGxgFormCheckboxElement)\n }\n ></gxg-form-checkbox>\n\n {this.displayLoginControls ? (\n <div class=\"user-details-container\">\n {/* username */}\n <gxg-form-text\n label={this._componentLocale.main.userName}\n labelPosition=\"above\"\n disabled={!this.displayLoginControls}\n value={this.defaultConnectionData?.user}\n ref={el => (this.userNameEl = el as HTMLGxgFormTextElement)}\n toolTip={config.tooltip}\n ></gxg-form-text>\n {/* password */}\n <gxg-form-text\n label={this._componentLocale.main.password}\n labelPosition=\"above\"\n disabled={!this.displayLoginControls}\n value={this.defaultConnectionData?.password}\n ref={el => (this.passwordEl = el as HTMLGxgFormTextElement)}\n password\n toolTip={config.tooltip}\n ></gxg-form-text>\n </div>\n ) : null}\n </div>\n\n {/* cancel and connect buttons */}\n <gxg-button slot=\"footer-end\" type=\"outlined\">\n {this._componentLocale.main.cancel}\n </gxg-button>\n <gxg-button slot=\"footer-end\" onClick={this.connectHandler}>\n {this._componentLocale.main.connect}\n </gxg-button>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\n\nexport type GXServerConnectionDefault = {\n serverUrl: string;\n user: string;\n password: string;\n};\n\nexport type GXServerConnectionData = GXServerConnectionDefault & {\n continueWithGeneXusAccount: boolean;\n};\n"],"mappings":";;;;;;;;AAAA,MAAMA,IAAqB;;MCwBdC,IAAoB;;;;IAOvBC,KAAAC,oBAAoB;;;;QAoFpBD,KAAAE,mBAAmB;;MACzB,KAAIC,IAAAH,KAAKI,gBAAU,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;QAC3B,OAAOL,KAAKI,WAAWE,KAAIC,KAClBC,EAAA,4BAAqBD;;MAGhC,OAAO;AAAE;IAGHP,KAAAS,8BACNC;MAEAV,KAAKW,wBAAwBD,EAAME,OAAOC;AAAK;IAGzCb,KAAAc,+BAA+B;MACrC,IAAId,KAAKe,kBAAkB;QACzBf,KAAKW,uBAAuB;aACvB;QACLX,KAAKW,uBAAuB;;;IAIxBX,KAAAgB,iBAAiB;MACvB,IAAIhB,KAAKiB,iBAAiB;QACxBjB,KAAKiB,gBAAgB;UACnBV,WAAWP,KAAKkB,YAAYL;UAC5BM,4BAA4BnB,KAAKoB,6BAA6BC;UAC9DC,MAAMtB,KAAKuB,WAAWV;UACtBW,UAAUxB,KAAKyB,WAAWZ;WACzBa,MAAMC;UACPC,QAAQC,IAAIF;UACZG,EAAqBH,GAAkB3B;AAAK;;;gCAtGT;wBAOT;;8BAUe;;4BAUF;;;;;EAuB7C,uBAAM+B;IACJ/B,KAAKgC,yBAAyBC,EAAOC,oBAAoBlC,KAAKmC;IAC9DnC,KAAKc;;EAGP,kBAAAsB;IACE,KAAKpC,KAAKC,mBAAmB;MAC3BD,KAAKqC,4BAA4BC,KAC/BtC,KAAKgC,iBAAiBO;MAExBvC,KAAKC,oBAAoB;;;;EAiD7B,MAAAuC;;IACE,OACEhC,EAACiC,GAAI;MAACC,OAAM;OACVlC,EAAA;MAAKkC,OAAM;OACTlC,EAAA;MACEmC,gBACE3C,KAAK4C,eAAe5C,KAAKgC,iBAAiBO,gBAAgB;MAE5DM,eAAeC,EAAOC,eAAeF;OAErCrC,EAAA;MAAKkC,OAAM;OAETlC,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAK1C;MAClC2C,gBAAgBlD,KAAKmD;MACrBtC,QAAOV,IAAAH,KAAKoD,2BAAqB,QAAAjD,WAAA,aAAAA,EAAEI;MACnC8C,KAAKlB,KAAOnC,KAAKkB,cAAciB;MAC/BmB,SAASR,EAAOS;OAEfvD,KAAKE,qBAIRM,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAKO;MAClCC,UAAUzD,KAAKS;MACfY,SAASrB,KAAKe;MACd2C,WAAW1D,KAAKe;MAChBsC,KAAKlB,KACFnC,KAAKoB,+BACJe;QAILnC,KAAKW,uBACJH,EAAA;MAAKkC,OAAM;OAETlC,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAKU;MAClCC,eAAc;MACdF,WAAW1D,KAAKW;MAChBE,QAAOgD,IAAA7D,KAAKoD,2BAAqB,QAAAS,WAAA,aAAAA,EAAEvC;MACnC+B,KAAKlB,KAAOnC,KAAKuB,aAAaY;MAC9BmB,SAASR,EAAOS;QAGlB/C,EAAA;MACEwC,OAAOhD,KAAKgC,iBAAiBiB,KAAKzB;MAClCoC,eAAc;MACdF,WAAW1D,KAAKW;MAChBE,QAAOiD,IAAA9D,KAAKoD,2BAAqB,QAAAU,WAAA,aAAAA,EAAEtC;MACnC6B,KAAKlB,KAAOnC,KAAKyB,aAAaU;MAC9BX,UAAQ;MACR8B,SAASR,EAAOS;UAGlB,OAIN/C,EAAA;MAAYuD,MAAK;MAAaC,MAAK;OAChChE,KAAKgC,iBAAiBiB,KAAKgB,SAE9BzD,EAAA;MAAYuD,MAAK;MAAaG,SAASlE,KAAKgB;OACzChB,KAAKgC,iBAAiBiB,KAAKkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["aiAssistantCss","GxIdeTemplate","this","renderedFirstTime","setFocus","scrollToBottomFlag","evaluateAiInProgress","_a","messages","length","type","aIInProgress","evaluateAiStatus","assistantStatus","renderMessage","message","i","text","h","messageType","hidden","filterValue","key","toString","translations","_componentLocale","aiMessage","textAreaInputHandler","userHasTyped","showFilter","filterEl","value","promptEnterHandler","async","prompt","promptTrimmed","detail","replace","textAreaEl","setTimeout","lastUserMessageHeight","offsetHeight","addMessage","userMessageCallback","then","filterMessagesHandler","e","toLowerCase","filteredMessages","forEach","includes","clearMessages","focus","clearCallback","attachShortcuts","focusShortcuts","ctrlFocusIndex","findIndex","toLocaleLowerCase","shiftFocusIndex","cmdKeyIndex","keyFocus","find","document","addEventListener","ctrlKey","shiftKey","metaKey","promptArrowUpHandler","lastUserMessage","textareaShadowPart","style","height","toggleFilterHandler","promptFocusHandler","promptHasFocus","promptBlurHandler","scrollToBottom","messagesWrapperEl","scrollTo","scrollHeight","scrollTop","clientHeight","watchAIInProgressHandler","aiInProgress","watchMessagesHandler","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","shadowRoot","querySelector","componentDidRender","componentDidRenderFirstTime","emit","componentName","handleFocus","event","preventDefault","clear","updateInProgressMessage","pop","push","render","Host","class","filter","icon","onClick","disabled","onInput","ref","map","ai","promptValue","maxHeight","promptMaxHeight","placeholder","processingQueryPlaceholder","promptPlaceholder","onEnter","onArrowUpPressed","onBlur","onFocus","_b","prompt__shortcuts","shortcut"],"sources":["src/components/ai-assistant/ai-assistant.scss?tag=gx-ide-ai-assistant&encapsulation=shadow","src/components/ai-assistant/ai-assistant.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/gemini/dist/gemini/globals/mixins.scss\";\n\n:host {\n font-family: var(--mer-font-family--primary);\n display: block;\n height: 100%;\n flex-basis: 286px;\n flex-shrink: 0;\n height: 100%;\n overflow-y: auto;\n}\n.gx-ide-main-wrapper {\n padding: 0 10px 52px 10px;\n background-color: var(--mer-color__neutral-gray--1000);\n height: 100%;\n display: grid;\n grid-template-rows: auto 1fr auto;\n gap: var(--mer-spacing--sm);\n}\n\n/*--- Header ---*/\n.header {\n padding-block-start: var(--mer-spacing--sm);\n display: flex;\n flex-direction: column;\n\n &__actions-wrapper {\n display: flex;\n gap: var(--ai-assistant-header-actions-gap);\n margin-inline-start: auto;\n }\n &__first-row {\n display: flex;\n gap: var(--mer-spacing--xs);\n align-items: center;\n justify-content: space-between;\n }\n &__filter {\n margin-block-start: var(--mer-spacing--xs);\n }\n &__second-row {\n transition: 100ms grid-template-rows;\n display: grid;\n grid-template-rows: 0fr;\n\n &--visible {\n grid-template-rows: 1fr;\n }\n }\n .filter-inner-wrapper {\n overflow: hidden;\n }\n}\n\n/*--- Messages ---*/\n.messages-wrapper {\n position: relative;\n overflow: auto;\n display: flex;\n flex-direction: column;\n scroll-behavior: smooth;\n @include gxg-scrollbar();\n}\n.messages {\n display: flex;\n flex-direction: column;\n list-style-type: none;\n padding: 0;\n margin: 0;\n}\n\n/*--- Prompt ---*/\n.prompt {\n position: relative;\n margin-top: auto;\n\n &__textarea {\n &::part(textarea-wrapper) {\n border: none;\n background-color: var(--mer-color__neutral-gray--1100);\n }\n &::part(textarea) {\n border: none;\n }\n }\n &__shortcuts {\n position: absolute;\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--2xs);\n padding-inline-end: var(--mer-spacing--xs);\n right: 0;\n top: 0;\n height: 100%;\n }\n &__shortcut {\n color: var(--mer-color__neutral-gray--400);\n font-size: var(--mer-font__size--2xs);\n padding: var(--mer-spacing--3xs) var(--mer-spacing--xs);\n background-color: var(--mer-color__neutral-gray--700);\n border-radius: var(--mer-border__radius--xs);\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n Method,\n State,\n Watch,\n Listen\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\n\n@Component({\n tag: \"gx-ide-ai-assistant\",\n styleUrl: \"ai-assistant.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/ai-assistant\"]\n})\nexport class GxIdeTemplate {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n /* lastUserMessageHeight is used to set the appropriate height on the textarea, if user presses arrowUp (recover last message)*/\n private lastUserMessageHeight: number;\n private setFocus = true;\n private scrollToBottomFlag = true;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeAiAssistantElement;\n private textAreaEl!: HTMLGxgFormTextareaElement;\n private textareaShadowPart: HTMLTextAreaElement;\n private filterEl: HTMLGxgFormTextElement;\n private messagesWrapperEl!: HTMLDivElement;\n\n // 3.STATE() VARIABLES //\n\n /**\n * Flag used to hide the shortcuts\n */\n @State() userHasTyped = false;\n\n /**\n * This is true if the last message is of type 'assistant-in-progress'\n */\n @State() aIInProgress = false;\n @Watch(\"aIInProgress\")\n watchAIInProgressHandler(aiInProgress: boolean) {\n if (!aiInProgress) {\n this.setFocus = true;\n }\n }\n\n /**\n * This displays or hides the messages filter\n */\n @State() showFilter = false;\n\n /**\n * True if the prompt textbox has focus\n */\n @State() promptHasFocus = false;\n\n /**\n * The filter value\n */\n @State() filterValue: string;\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * List of messages displayed by the component\n */\n @Prop({ mutable: true }) messages: Message[] = [];\n @Watch(\"messages\")\n watchMessagesHandler() {\n this.evaluateAiInProgress();\n this.evaluateAiStatus();\n }\n\n /**\n * The prompt textarea max-height\n */\n @Prop() readonly promptMaxHeight = \"128px\";\n\n /**\n * A temporary property to illustrate the assistant status\n */\n @Prop({ mutable: true }) assistantStatus: AiStatus = \"indeterminate\";\n\n /**\n * List of keys that make up the shortcut to focus on the component's text input\n */\n @Prop() readonly focusShortcuts: string[];\n\n /**\n * List of keys that make up the shortcut to focus on the component's text input\n */\n @Prop() readonly userMessageCallback: UserMessageCallback;\n\n /**\n * Callback that must be invoked when the conversation is cleared, using the header button.\n */\n @Prop() readonly clearCallback: () => Promise<void>;\n\n /**\n * the prompt value\n */\n @Prop() readonly promptValue: string;\n\n /**\n * If tue, it will display a filter.\n */\n @Prop() readonly filter = true;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n // 6.COMPONENT LIFECYCLE METHODS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateAiInProgress();\n this.evaluateAiStatus();\n this.attachShortcuts();\n }\n\n componentDidLoad() {\n this.textareaShadowPart =\n this.textAreaEl.shadowRoot.querySelector(\"textarea\");\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n if (this.setFocus) {\n setTimeout(() => {\n /* Doesn't seems to work without the setTimeout */\n this.textAreaEl.focus();\n this.setFocus = false;\n }, 0);\n }\n setTimeout(() => {\n this.scrollToBottom();\n }, 200);\n }\n\n // 7.LISTENERS //\n\n @Listen(\"focus\", { capture: true })\n handleFocus(event: FocusEvent) {\n if (this.textAreaEl) {\n event.preventDefault();\n this.textAreaEl.focus();\n }\n }\n\n // 8.PUBLIC METHODS API //\n\n /**\n * Clear the list of messages\n */\n @Method()\n async clear() {\n this.messages = [];\n }\n\n /**\n * Add a message. This method will be used by the host to add messages from the assistant\n */\n @Method()\n async addMessage(message: Message) {\n if (message.text?.length > 0) {\n const messages = [...this.messages];\n const updateInProgressMessage =\n messages?.length > 0 &&\n messages[messages.length - 1].type === \"assistant-in-progress\";\n if (updateInProgressMessage) {\n messages.pop();\n }\n messages.push(message);\n this.messages = messages;\n }\n }\n\n // 9.LOCAL METHODS //\n\n private evaluateAiInProgress = () => {\n if (\n this.messages?.length > 0 &&\n this.messages[this.messages.length - 1].type === \"assistant-in-progress\"\n ) {\n this.aIInProgress = true;\n } else {\n this.aIInProgress = false;\n }\n };\n\n private evaluateAiStatus = () => {\n if (this.messages?.length === 0) {\n this.assistantStatus = \"indeterminate\";\n return;\n }\n if (\n this.messages[this.messages.length - 1].type ===\n \"assistant-in-progress\" ||\n this.messages[this.messages.length - 1].type === \"user\"\n ) {\n this.assistantStatus = \"indeterminate\";\n } else if (\n this.messages[this.messages.length - 1].type === \"assistant-error\"\n ) {\n this.assistantStatus = \"error\";\n } else {\n this.assistantStatus = \"success\";\n }\n };\n\n private renderMessage = (\n message: Message,\n i: number\n ): HTMLLIElement | void => {\n if (message.text.length > 0) {\n return (\n <gx-ide-ai-message\n message={message.text}\n messageType={message.type}\n hidden={message.hidden}\n filterValue={this.filterValue}\n key={`${i.toString()}-${message.type}`}\n translations={this._componentLocale.aiMessage}\n ></gx-ide-ai-message>\n );\n }\n };\n\n private textAreaInputHandler = () => {\n this.userHasTyped = true;\n this.showFilter = false;\n this.filterEl.value = \"\";\n this.filterValue = \"\";\n this.scrollToBottomFlag = true;\n };\n\n private promptEnterHandler = async (prompt: CustomEvent<string>) => {\n /* First remove double spaces */\n const promptTrimmed = prompt.detail.replace(/\\s+/g, \" \");\n /* Update textarea value to get the proper height */\n this.textAreaEl.value = promptTrimmed;\n setTimeout(() => {\n /* Then save the actual height (setTimeOut required) */\n this.lastUserMessageHeight = this.textAreaEl.offsetHeight;\n }, 0);\n /* The clear the textarea */\n this.textAreaEl.value = \"\";\n /* Insert the user message */\n this.addMessage({\n type: \"user\",\n text: promptTrimmed\n });\n /* Call the callback */\n if (this.userMessageCallback && !this.aIInProgress) {\n this.aIInProgress = true;\n this.userMessageCallback(promptTrimmed).then(() => {\n this.aIInProgress = false;\n });\n }\n };\n\n private filterMessagesHandler = (e: CustomEvent<string>) => {\n this.scrollToBottomFlag = false;\n this.filterValue = e.detail.toLowerCase();\n const filteredMessages = [...this.messages];\n filteredMessages.forEach(message => {\n if (message.text.toLowerCase().includes(this.filterValue)) {\n message.hidden = false;\n } else {\n message.hidden = true;\n }\n });\n this.messages = filteredMessages;\n };\n\n private clearMessages = () => {\n this.messages = [];\n this.textAreaEl.focus();\n if (this.clearCallback) {\n this.clearCallback();\n }\n };\n\n private attachShortcuts = () => {\n if (this.focusShortcuts?.length > 0) {\n const ctrlFocusIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"ctrl\"\n );\n const shiftFocusIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"shift\"\n );\n const cmdKeyIndex = this.focusShortcuts.findIndex(\n key => key.toLocaleLowerCase() === \"cmd\"\n );\n const keyFocus = this.focusShortcuts\n .find(key => {\n return (\n key.toLocaleLowerCase() !== \"ctrl\" &&\n key.toLocaleLowerCase() !== \"shift\" &&\n key.toLocaleLowerCase() !== \"cmd\"\n );\n })\n .toLowerCase();\n document.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === keyFocus && ctrlFocusIndex !== -1 && e.ctrlKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n } else if (e.key === keyFocus && shiftFocusIndex !== -1 && e.shiftKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n } else if (e.key === keyFocus && cmdKeyIndex !== -1 && e.metaKey) {\n this.textAreaEl.focus();\n this.userHasTyped = true;\n }\n });\n }\n };\n\n private promptArrowUpHandler = () => {\n this.userHasTyped = true;\n const lastUserMessage = this.messages?.find(message => {\n return message.type === \"user\";\n });\n if (lastUserMessage) {\n if (this.lastUserMessageHeight) {\n this.textareaShadowPart.style.height = `${this.lastUserMessageHeight}px`;\n }\n this.textAreaEl.value = lastUserMessage.text;\n }\n };\n\n private toggleFilterHandler = () => {\n this.showFilter = !this.showFilter;\n if (this.showFilter) {\n this.filterEl.focus();\n }\n };\n\n private promptFocusHandler = () => {\n this.promptHasFocus = true;\n };\n\n private promptBlurHandler = () => {\n this.promptHasFocus = false;\n };\n\n private scrollToBottom = () => {\n if (this.scrollToBottomFlag) {\n this.messagesWrapperEl.scrollTo(0, this.messagesWrapperEl.scrollHeight);\n this.messagesWrapperEl.scrollTop =\n this.messagesWrapperEl.scrollHeight -\n this.messagesWrapperEl.clientHeight;\n }\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host\n class={{\n [`assistant--${this.assistantStatus}`]: true,\n \"assistant--in-progress\": this.aIInProgress\n }}\n >\n <div class=\"gx-ide-main-wrapper\">\n <header class=\"header\">\n <div class=\"header__first-row\">\n <gxg-title type=\"title-02\">\n {this._componentLocale.componentName}\n </gxg-title>\n <div class=\"header__actions-wrapper\">\n {this.filter ? (\n <gxg-button\n class=\"header__filter-button\"\n type=\"tertiary\"\n icon=\"menus/find\"\n onClick={this.toggleFilterHandler}\n disabled={this.messages.length === 0}\n ></gxg-button>\n ) : null}\n\n <gxg-button\n class=\"header__clear-button\"\n type=\"tertiary\"\n icon=\"bpm/delete\"\n onClick={this.clearMessages}\n disabled={this.messages.length === 0}\n ></gxg-button>\n </div>\n </div>\n {this.filter ? (\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--visible\": this.showFilter\n }}\n >\n <div class=\"filter-inner-wrapper\">\n <gxg-form-text\n class=\"header__filter\"\n onInput={this.filterMessagesHandler as any}\n ref={el => (this.filterEl = el as HTMLGxgFormTextElement)}\n ></gxg-form-text>\n </div>\n </div>\n ) : null}\n </header>\n\n <div\n class={{\n \"messages-wrapper\": true\n }}\n ref={el => (this.messagesWrapperEl = el as HTMLDivElement)}\n >\n {this.messages?.length ? (\n <ol class={{ messages: true }}>\n {this.messages.map((message, i) => {\n return this.renderMessage(message, i);\n })}\n </ol>\n ) : null}\n </div>\n\n <div\n class={{\n prompt: true\n }}\n >\n <gxg-form-textarea\n ai\n class=\"prompt__textarea\"\n value={this.promptValue}\n maxHeight={this.promptMaxHeight}\n placeholder={\n this.aIInProgress\n ? this._componentLocale.processingQueryPlaceholder\n : this._componentLocale.promptPlaceholder\n }\n onInput={this.textAreaInputHandler}\n onEnter={this.promptEnterHandler}\n onArrowUpPressed={this.promptArrowUpHandler}\n onBlur={this.promptBlurHandler}\n onFocus={this.promptFocusHandler}\n disabled={this.aIInProgress}\n ref={el => (this.textAreaEl = el as HTMLGxgFormTextareaElement)}\n ></gxg-form-textarea>\n {!this.userHasTyped &&\n !this.aIInProgress &&\n !this.promptHasFocus &&\n this.focusShortcuts?.length > 0 ? (\n <div\n class={{\n prompt__shortcuts: true\n }}\n >\n {this.focusShortcuts.map((shortcut, i) => {\n /* Up to three keys allowed*/\n return i <= 2 ? (\n <span class=\"prompt__shortcut\">{shortcut}</span>\n ) : null;\n })}\n </div>\n ) : null}\n </div>\n </div>\n </Host>\n );\n }\n}\n\nexport type AiStatus = \"indeterminate\" | \"success\" | \"error\";\n\nexport type Message = {\n type: MessageType;\n text: string;\n hidden?: boolean;\n filterValue?: string;\n};\n\nexport type MessageType =\n | \"user\"\n | \"assistant-chat\"\n | \"assistant-action\"\n | \"assistant-in-progress\"\n | \"assistant-error\";\n\nexport type UserMessageCallback = (text: string) => Promise<void>;\n"],"mappings":"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"}
|