@genexus/genexus-ide-ui 1.1.27 → 1.1.28
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/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +162 -0
- package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +1 -5
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-sign-in.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
- package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
- package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
- package/dist/collection/components/curl-inspector/curl-inspector.css +50 -0
- package/dist/collection/components/curl-inspector/curl-inspector.js +327 -0
- package/dist/collection/components/curl-inspector/curl-inspector.js.map +1 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
- package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
- package/dist/collection/components/sign-in/sign-in.css +0 -1
- package/dist/collection/components/start-page/start-page.js +2 -2
- package/dist/collection/components/start-page/start-page.js.map +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js +1 -5
- package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
- package/dist/collection/testing/locale.e2e.js +2 -1
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/gx-ide-curl-inspector.d.ts +11 -0
- package/dist/components/gx-ide-curl-inspector.js +194 -0
- package/dist/components/gx-ide-curl-inspector.js.map +1 -0
- package/dist/components/gx-ide-sc-chat-container.js +1 -5
- package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
- package/dist/components/gx-ide-sign-in.js +1 -1
- package/dist/components/gx-ide-sign-in.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +2 -2
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-curl-inspector.entry.js +158 -0
- package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -0
- package/dist/esm/gx-ide-sc-chat-container.entry.js +1 -5
- package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
- package/dist/esm/gx-ide-sign-in.entry.js +1 -1
- package/dist/esm/gx-ide-sign-in.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +2 -2
- package/dist/esm/gx-ide-start-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/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
- package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
- package/dist/genexus-ide-ui/{p-4cd4f013.entry.js → p-06fbe725.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-06fbe725.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-413c0800.entry.js → p-29db37fd.entry.js} +3 -4
- package/dist/genexus-ide-ui/p-29db37fd.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-6b525369.entry.js → p-aae7f543.entry.js} +5 -3
- package/dist/genexus-ide-ui/p-aae7f543.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-c3400671.entry.js +217 -0
- package/dist/genexus-ide-ui/p-c3400671.entry.js.map +1 -0
- package/dist/types/components/curl-inspector/curl-inspector.d.ts +56 -0
- package/dist/types/components.d.ts +125 -54
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-413c0800.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-4cd4f013.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-6b525369.entry.js.map +0 -1
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { r as t, h as i, H as e, a as s } from "./p-4406e156.js";
|
|
2
|
+
|
|
3
|
+
import { c as n } from "./p-13738332.js";
|
|
4
|
+
|
|
5
|
+
import { L as o } from "./p-311eedf3.js";
|
|
6
|
+
|
|
7
|
+
import { v as a } from "./p-289c3290.js";
|
|
8
|
+
|
|
9
|
+
const l = ':host{display:grid;grid-template-rows:max-content 1fr max-content;block-size:100%;overflow:auto}.section{display:contents}.main{display:grid;overflow:auto}.field-group-name-description-module{align-items:center;grid-template-areas:"name-label name-input" "description-label description-input" "module-label module-entity-selector";grid-template-columns:max-content 1fr}.name-label{grid-area:name-label}.name-input{grid-area:name-input}.description-label{grid-area:description-label}.description-input{grid-area:description-input}.module-label{grid-area:module-label}.module-entity-selector{grid-area:module-entity-selector}.tooltip{height:0}';
|
|
10
|
+
|
|
11
|
+
var r = undefined && undefined.__classPrivateFieldGet || function(t, i, e, s) {
|
|
12
|
+
if (e === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
if (typeof i === "function" ? t !== i || !s : !i.has(t)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
|
+
return e === "m" ? s : e === "a" ? s.call(t) : s ? s.value : i.get(t);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
var d = undefined && undefined.__classPrivateFieldSet || function(t, i, e, s, n) {
|
|
18
|
+
if (s === "m") throw new TypeError("Private method is not writable");
|
|
19
|
+
if (s === "a" && !n) throw new TypeError("Private accessor was defined without a setter");
|
|
20
|
+
if (typeof i === "function" ? t !== i || !n : !i.has(t)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
21
|
+
return s === "a" ? n.call(t, e) : n ? n.value = e : i.set(t, e), e;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
var h, c, f, u, p, m, v, b, w, g, y, k, M, W;
|
|
25
|
+
|
|
26
|
+
const x = [ "resets/box-sizing", "components/tooltip", "utils/form--full", "utils/layout", "utils/typography", "utils/spacing", "chameleon/scrollbar" ];
|
|
27
|
+
|
|
28
|
+
const E = class {
|
|
29
|
+
constructor(e) {
|
|
30
|
+
t(this, e);
|
|
31
|
+
h.set(this, void 0);
|
|
32
|
+
c.set(this, void 0);
|
|
33
|
+
f.set(this, void 0);
|
|
34
|
+
u.set(this, void 0);
|
|
35
|
+
p.set(this, void 0);
|
|
36
|
+
m.set(this, void 0);
|
|
37
|
+
v.set(this, void 0);
|
|
38
|
+
b.set(this, void 0);
|
|
39
|
+
w.set(this, (() => {
|
|
40
|
+
const t = [ r(this, p, "f"), r(this, u, "f") ];
|
|
41
|
+
t.forEach((t => {
|
|
42
|
+
if (t.id) {
|
|
43
|
+
this.validatableControls.set(t.id, {
|
|
44
|
+
reference: t,
|
|
45
|
+
hasError: false,
|
|
46
|
+
message: undefined
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
}));
|
|
51
|
+
g.set(this, (t => {
|
|
52
|
+
var e, s, o;
|
|
53
|
+
return ((s = (e = this.validatableControls) === null || e === void 0 ? void 0 : e.get(t === null || t === void 0 ? void 0 : t.id)) === null || s === void 0 ? void 0 : s.hasError) && ((o = this.validatableControls.get(t.id)) === null || o === void 0 ? void 0 : o.message) && i("ch-tooltip", {
|
|
54
|
+
class: "tooltip",
|
|
55
|
+
actionElement: t,
|
|
56
|
+
blockAlign: n.tooltipSettings.blockAlign,
|
|
57
|
+
inlineAlign: n.tooltipSettings.inlineAlign,
|
|
58
|
+
delay: n.tooltipSettings.delay
|
|
59
|
+
}, this.validatableControls.get(t.id).message);
|
|
60
|
+
}));
|
|
61
|
+
y.set(this, (() => {
|
|
62
|
+
var t, i, e, s, n;
|
|
63
|
+
const o = ((i = (t = r(this, p, "f")) === null || t === void 0 ? void 0 : t.value) === null || i === void 0 ? void 0 : i.trim()) || "";
|
|
64
|
+
const a = ((s = (e = r(this, u, "f")) === null || e === void 0 ? void 0 : e.value) === null || s === void 0 ? void 0 : s.id) || "";
|
|
65
|
+
const l = ((n = this.curlContent) === null || n === void 0 ? void 0 : n.trim()) || "";
|
|
66
|
+
const d = this.validateNameCallback ? this.validateNameCallback(o) : Boolean(o);
|
|
67
|
+
const h = Boolean(a);
|
|
68
|
+
const c = Boolean(l);
|
|
69
|
+
this.isFormValid = d && h && c;
|
|
70
|
+
}));
|
|
71
|
+
k.set(this, (() => {
|
|
72
|
+
if (r(this, m, "f")) {
|
|
73
|
+
this.curlContent = r(this, m, "f").text;
|
|
74
|
+
r(this, y, "f").call(this);
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
M.set(this, (t => {
|
|
78
|
+
const i = t.target.assignedElements();
|
|
79
|
+
if (i.length) {
|
|
80
|
+
d(this, m, i[0], "f");
|
|
81
|
+
r(this, m, "f").addEventListener("input", r(this, k, "f"));
|
|
82
|
+
d(this, v, (t => {
|
|
83
|
+
this.curlContent = t.detail.content;
|
|
84
|
+
r(this, k, "f").call(this);
|
|
85
|
+
}), "f");
|
|
86
|
+
r(this, m, "f").addEventListener("curl-content-change", r(this, v, "f"));
|
|
87
|
+
d(this, b, (t => {
|
|
88
|
+
if ((t.ctrlKey || t.metaKey) && t.key === "v") {
|
|
89
|
+
setTimeout((() => {
|
|
90
|
+
r(this, k, "f").call(this);
|
|
91
|
+
}), 0);
|
|
92
|
+
}
|
|
93
|
+
}), "f");
|
|
94
|
+
r(this, m, "f").addEventListener("keydown", r(this, b, "f"));
|
|
95
|
+
this.curlContent = r(this, m, "f").text;
|
|
96
|
+
r(this, y, "f").call(this);
|
|
97
|
+
}
|
|
98
|
+
}));
|
|
99
|
+
W.set(this, (() => {
|
|
100
|
+
var t;
|
|
101
|
+
const i = {
|
|
102
|
+
name: r(this, p, "f").value,
|
|
103
|
+
description: r(this, f, "f").value,
|
|
104
|
+
parentId: (t = r(this, u, "f").value) === null || t === void 0 ? void 0 : t.id,
|
|
105
|
+
curl: this.curlContent
|
|
106
|
+
};
|
|
107
|
+
this.confirmCallback(i).then((t => {
|
|
108
|
+
this.validatableControls = a(t, this.validatableControls);
|
|
109
|
+
}));
|
|
110
|
+
}));
|
|
111
|
+
this.showTooltipError = false;
|
|
112
|
+
this.isFormValid = false;
|
|
113
|
+
this.curlContent = "";
|
|
114
|
+
this.validatableControls = new Map;
|
|
115
|
+
this.cancelCallback = undefined;
|
|
116
|
+
this.confirmCallback = undefined;
|
|
117
|
+
this.defaultParent = undefined;
|
|
118
|
+
this.parent = undefined;
|
|
119
|
+
this.selectModuleCallback = undefined;
|
|
120
|
+
this.validateNameCallback = undefined;
|
|
121
|
+
}
|
|
122
|
+
async componentWillLoad() {
|
|
123
|
+
d(this, h, await o.getComponentStrings(this.el), "f");
|
|
124
|
+
}
|
|
125
|
+
componentDidLoad() {
|
|
126
|
+
r(this, w, "f").call(this);
|
|
127
|
+
}
|
|
128
|
+
disconnectedCallback() {
|
|
129
|
+
if (r(this, m, "f") && r(this, m, "f").removeEventListener) {
|
|
130
|
+
r(this, m, "f").removeEventListener("input", r(this, k, "f"));
|
|
131
|
+
r(this, m, "f").removeEventListener("curl-content-change", r(this, v, "f"));
|
|
132
|
+
r(this, m, "f").removeEventListener("keydown", r(this, b, "f"));
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Suspends or reactivates the shortcuts
|
|
137
|
+
*/ async suspendShortcuts(t) {
|
|
138
|
+
r(this, c, "f").suspend = t;
|
|
139
|
+
}
|
|
140
|
+
render() {
|
|
141
|
+
return i(e, {
|
|
142
|
+
class: "widget"
|
|
143
|
+
}, i("ch-theme", {
|
|
144
|
+
model: x
|
|
145
|
+
}), i("ch-shortcuts", {
|
|
146
|
+
src: "./gx-ide-assets/curl-inspector/shortcuts.json",
|
|
147
|
+
ref: t => d(this, c, t, "f")
|
|
148
|
+
}), i("section", {
|
|
149
|
+
class: "section"
|
|
150
|
+
}, i("header", {
|
|
151
|
+
class: "header field-group spacing-body control-header"
|
|
152
|
+
}, i("div", {
|
|
153
|
+
class: "field-group field-group-name-description-module"
|
|
154
|
+
}, i("label", {
|
|
155
|
+
class: "label name-label",
|
|
156
|
+
htmlFor: "input-name"
|
|
157
|
+
}, r(this, h, "f").header.nameFieldLabel), i("ch-edit", {
|
|
158
|
+
class: "input name-input",
|
|
159
|
+
id: "input-name",
|
|
160
|
+
ref: t => d(this, p, t, "f"),
|
|
161
|
+
onInput: r(this, y, "f")
|
|
162
|
+
}), r(this, g, "f").call(this, r(this, p, "f")), i("label", {
|
|
163
|
+
class: "label description-label",
|
|
164
|
+
htmlFor: "input-description"
|
|
165
|
+
}, r(this, h, "f").header.descriptionFieldLabel), i("ch-edit", {
|
|
166
|
+
class: "input description-input",
|
|
167
|
+
id: "input-description",
|
|
168
|
+
ref: t => d(this, f, t, "f")
|
|
169
|
+
}), i("label", {
|
|
170
|
+
class: "label module-label",
|
|
171
|
+
htmlFor: "input-module"
|
|
172
|
+
}, r(this, h, "f").header.moduleFolderLabel), i("gx-ide-entity-selector", {
|
|
173
|
+
class: "module module-entity-selector",
|
|
174
|
+
id: "module",
|
|
175
|
+
value: this.defaultParent,
|
|
176
|
+
ref: t => d(this, u, t, "f"),
|
|
177
|
+
labelPosition: "none",
|
|
178
|
+
defaultValue: this.defaultParent,
|
|
179
|
+
selectEntityCallback: this.selectModuleCallback
|
|
180
|
+
}), r(this, g, "f").call(this, r(this, u, "f")))), i("div", {
|
|
181
|
+
class: "main field-group scrollable"
|
|
182
|
+
}, i("slot", {
|
|
183
|
+
name: "CurlTextEditor",
|
|
184
|
+
onSlotchange: r(this, M, "f")
|
|
185
|
+
})), i("footer", {
|
|
186
|
+
class: "control-footer control-footer spacing-body-block-end spacing-body-inline"
|
|
187
|
+
}, i("div", {
|
|
188
|
+
class: "buttons-spacer"
|
|
189
|
+
}, i("button", {
|
|
190
|
+
class: "button-secondary",
|
|
191
|
+
id: "button-cancel",
|
|
192
|
+
onClick: this.cancelCallback,
|
|
193
|
+
part: "button-cancel"
|
|
194
|
+
}, r(this, h, "f").footer.btnCancel), i("button", {
|
|
195
|
+
class: "button-primary",
|
|
196
|
+
id: "button-ok",
|
|
197
|
+
onClick: r(this, W, "f"),
|
|
198
|
+
part: "button-ok",
|
|
199
|
+
disabled: !this.isFormValid
|
|
200
|
+
}, r(this, h, "f").footer.btnCreate)))));
|
|
201
|
+
}
|
|
202
|
+
static get assetsDirs() {
|
|
203
|
+
return [ "gx-ide-assets/curl-inspector" ];
|
|
204
|
+
}
|
|
205
|
+
get el() {
|
|
206
|
+
return s(this);
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
h = new WeakMap, c = new WeakMap, f = new WeakMap, u = new WeakMap, p = new WeakMap,
|
|
211
|
+
m = new WeakMap, v = new WeakMap, b = new WeakMap, w = new WeakMap, g = new WeakMap,
|
|
212
|
+
y = new WeakMap, k = new WeakMap, M = new WeakMap, W = new WeakMap;
|
|
213
|
+
|
|
214
|
+
E.style = l;
|
|
215
|
+
|
|
216
|
+
export { E as gx_ide_curl_inspector };
|
|
217
|
+
//# sourceMappingURL=p-c3400671.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["curlInspectorCss","CSS_BUNDLES","GxIdeCurlInspector","_GxIdeCurlInspector_componentLocale","set","this","_GxIdeCurlInspector_chShortcutsEl","_GxIdeCurlInspector_descriptionEl","_GxIdeCurlInspector_moduleEntitySelector","_GxIdeCurlInspector_nameEl","_GxIdeCurlInspector_editorEl","_GxIdeCurlInspector_curlContentChangeHandler","_GxIdeCurlInspector_keydownHandler","_GxIdeCurlInspector_initializeValidatableControls","validatableControls","__classPrivateFieldGet","forEach","validatableControl","id","reference","hasError","message","undefined","_GxIdeCurlInspector_evaluateTooltipRender","controlReference","_b","_a","get","_c","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCurlInspector_validateForm","name","value","trim","parentId","_d","curl","_e","curlContent","isNameValid","validateNameCallback","Boolean","isParentValid","isCurlValid","isFormValid","_GxIdeCurlInspector_handleEditorChange","text","call","_GxIdeCurlInspector_handleSlotChange","e","elements","target","assignedElements","length","__classPrivateFieldSet","addEventListener","event","detail","content","ctrlKey","metaKey","key","setTimeout","_GxIdeCurlInspector_createHandler","data","description","confirmCallback","then","formSubmitResult","validateControls","Map","componentWillLoad","Locale","getComponentStrings","el","componentDidLoad","disconnectedCallback","removeEventListener","suspendShortcuts","suspend","render","Host","model","src","ref","htmlFor","header","nameFieldLabel","onInput","descriptionFieldLabel","moduleFolderLabel","defaultParent","labelPosition","defaultValue","selectEntityCallback","selectModuleCallback","onSlotchange","onClick","cancelCallback","part","footer","btnCancel","disabled","btnCreate"],"sources":["src/components/curl-inspector/curl-inspector.scss?tag=gx-ide-curl-inspector&encapsulation=shadow","src/components/curl-inspector/curl-inspector.tsx"],"sourcesContent":[":host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n}\n\n.main {\n display: grid;\n overflow: auto;\n}\n.field-group-name-description-module {\n align-items: center;\n grid-template-areas:\n \"name-label name-input\"\n \"description-label description-input\"\n \"module-label module-entity-selector\";\n grid-template-columns: max-content 1fr;\n}\n\n.name-label {\n grid-area: name-label;\n}\n.name-input {\n grid-area: name-input;\n}\n.description-label {\n grid-area: description-label;\n}\n.description-input {\n grid-area: description-input;\n}\n.module-label {\n grid-area: module-label;\n}\n.module-entity-selector {\n grid-area: module-entity-selector;\n}\n\n.tooltip {\n /* WA: Tooltip takes layout space by default, height: 0 prevents layout shift */\n height: 0;\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n Method,\n h\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-curl-inspector\",\n styleUrl: \"curl-inspector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/curl-inspector\"]\n})\nexport class GxIdeCurlInspector {\n #componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #moduleEntitySelector!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #editorEl: TextProviderElement;\n #curlContentChangeHandler: EventListener;\n #keydownHandler: EventListener;\n\n @Element() el: HTMLGxIdeCurlInspectorElement;\n\n @State() showTooltipError: boolean = false;\n @State() isFormValid: boolean = false;\n @State() curlContent: string = \"\";\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the user wants to cancel the operation\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the user confirms the creation. Receives the data\n * necessary to create the procedure.\n */\n @Prop() readonly confirmCallback!: (\n data: CurlImportData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Actual value for Module/Folder field\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. It returns the\n * information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback to validate the name. Should return true if the name is valid, false otherwise.\n */\n @Prop() readonly validateNameCallback?: (name: string) => boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n disconnectedCallback() {\n if (this.#editorEl && this.#editorEl.removeEventListener) {\n this.#editorEl.removeEventListener(\"input\", this.#handleEditorChange);\n this.#editorEl.removeEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n this.#editorEl.removeEventListener(\"keydown\", this.#keydownHandler);\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #initializeValidatableControls = () => {\n const validatableControls: HTMLElement[] = [\n this.#nameEl,\n this.#moduleEntitySelector\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #validateForm = () => {\n const name = this.#nameEl?.value?.trim() || \"\";\n const parentId = this.#moduleEntitySelector?.value?.id || \"\";\n const curl = this.curlContent?.trim() || \"\";\n\n const isNameValid = this.validateNameCallback\n ? this.validateNameCallback(name)\n : Boolean(name);\n const isParentValid = Boolean(parentId);\n const isCurlValid = Boolean(curl);\n\n this.isFormValid = isNameValid && isParentValid && isCurlValid;\n };\n\n #handleEditorChange = () => {\n if (this.#editorEl) {\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #handleSlotChange = (e: Event) => {\n const elements = (e.target as HTMLSlotElement).assignedElements();\n if (elements.length) {\n this.#editorEl = elements[0] as TextProviderElement;\n\n this.#editorEl.addEventListener(\"input\", this.#handleEditorChange);\n\n this.#curlContentChangeHandler = ((event: CustomEvent) => {\n this.curlContent = event.detail.content;\n this.#handleEditorChange();\n }) as EventListener;\n\n this.#editorEl.addEventListener(\n \"curl-content-change\",\n this.#curlContentChangeHandler\n );\n\n this.#keydownHandler = (event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === \"v\") {\n setTimeout(() => {\n this.#handleEditorChange();\n }, 0);\n }\n };\n\n this.#editorEl.addEventListener(\"keydown\", this.#keydownHandler);\n\n this.curlContent = this.#editorEl.text;\n this.#validateForm();\n }\n };\n\n #createHandler = () => {\n const data: CurlImportData = {\n name: this.#nameEl.value,\n description: this.#descriptionEl.value,\n parentId: this.#moduleEntitySelector.value?.id,\n curl: this.curlContent\n };\n this.confirmCallback(data).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={\"./gx-ide-assets/curl-inspector/shortcuts.json\"}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group spacing-body control-header\">\n <div class=\"field-group field-group-name-description-module\">\n <label class=\"label name-label\" htmlFor=\"input-name\">\n {this.#componentLocale.header.nameFieldLabel}\n </label>\n <ch-edit\n class=\"input name-input\"\n id=\"input-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onInput={this.#validateForm}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#nameEl)}\n\n <label\n class=\"label description-label\"\n htmlFor=\"input-description\"\n >\n {this.#componentLocale.header.descriptionFieldLabel}\n </label>\n <ch-edit\n class=\"input description-input\"\n id=\"input-description\"\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n <label class=\"label module-label\" htmlFor=\"input-module\">\n {this.#componentLocale.header.moduleFolderLabel}\n </label>\n <gx-ide-entity-selector\n class=\"module module-entity-selector\"\n id=\"module\"\n value={this.defaultParent}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEntitySelector =\n el as HTMLGxIdeEntitySelectorElement)\n }\n labelPosition=\"none\"\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ></gx-ide-entity-selector>\n {this.#evaluateTooltipRender(this.#moduleEntitySelector)}\n </div>\n </header>\n <div class=\"main field-group scrollable\">\n <slot\n name=\"CurlTextEditor\"\n onSlotchange={this.#handleSlotChange}\n ></slot>\n </div>\n <footer class=\"control-footer control-footer spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.cancelCallback}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-ok\"\n onClick={this.#createHandler}\n part=\"button-ok\"\n disabled={!this.isFormValid}\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type CurlImportData = {\n name: string;\n description: string;\n parentId: string;\n curl: string;\n};\n\nexport type EntityData = {\n id: string;\n name: string;\n iconSrc?: string;\n};\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\ninterface ItextProvider {\n readonly text: string;\n}\n\ntype TextProviderElement = HTMLElement & ItextProvider;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { FormSubmitResult } from "../../common/types";
|
|
2
|
+
import { ControlValidation } from "../../common/form-validation";
|
|
3
|
+
export declare class GxIdeCurlInspector {
|
|
4
|
+
#private;
|
|
5
|
+
el: HTMLGxIdeCurlInspectorElement;
|
|
6
|
+
showTooltipError: boolean;
|
|
7
|
+
isFormValid: boolean;
|
|
8
|
+
curlContent: string;
|
|
9
|
+
validatableControls: Map<string, ControlValidation>;
|
|
10
|
+
/**
|
|
11
|
+
* Callback that must be invoked when the user wants to cancel the operation
|
|
12
|
+
*/
|
|
13
|
+
readonly cancelCallback: () => Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Callback that must be invoked when the user confirms the creation. Receives the data
|
|
16
|
+
* necessary to create the procedure.
|
|
17
|
+
*/
|
|
18
|
+
readonly confirmCallback: (data: CurlImportData) => Promise<FormSubmitResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Default value for Module/Folder field
|
|
21
|
+
*/
|
|
22
|
+
readonly defaultParent: EntityData;
|
|
23
|
+
/**
|
|
24
|
+
* Actual value for Module/Folder field
|
|
25
|
+
*/
|
|
26
|
+
readonly parent: EntityData;
|
|
27
|
+
/**
|
|
28
|
+
* Callback invoked when the action is executed in the Module/Folder filter. It returns the
|
|
29
|
+
* information of the selected object (id and name) or 'undefined' if it was canceled.
|
|
30
|
+
*/
|
|
31
|
+
readonly selectModuleCallback: SelectModuleCallback;
|
|
32
|
+
/**
|
|
33
|
+
* Callback to validate the name. Should return true if the name is valid, false otherwise.
|
|
34
|
+
*/
|
|
35
|
+
readonly validateNameCallback?: (name: string) => boolean;
|
|
36
|
+
componentWillLoad(): Promise<void>;
|
|
37
|
+
componentDidLoad(): void;
|
|
38
|
+
disconnectedCallback(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Suspends or reactivates the shortcuts
|
|
41
|
+
*/
|
|
42
|
+
suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
|
|
43
|
+
render(): void;
|
|
44
|
+
}
|
|
45
|
+
export type CurlImportData = {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
parentId: string;
|
|
49
|
+
curl: string;
|
|
50
|
+
};
|
|
51
|
+
export type EntityData = {
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
iconSrc?: string;
|
|
55
|
+
};
|
|
56
|
+
export type SelectModuleCallback = () => Promise<EntityData | undefined>;
|