@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.
Files changed (70) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +162 -0
  3. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +1 -5
  5. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-sign-in.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-start-page.cjs.entry.js +2 -2
  9. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/collection/collection-manifest.json +1 -0
  12. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
  13. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
  14. package/dist/collection/components/chat/chat-welcome/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
  15. package/dist/collection/components/curl-inspector/curl-inspector.css +50 -0
  16. package/dist/collection/components/curl-inspector/curl-inspector.js +327 -0
  17. package/dist/collection/components/curl-inspector/curl-inspector.js.map +1 -0
  18. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
  19. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
  20. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
  21. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
  22. package/dist/collection/components/sign-in/sign-in.css +0 -1
  23. package/dist/collection/components/start-page/start-page.js +2 -2
  24. package/dist/collection/components/start-page/start-page.js.map +1 -1
  25. package/dist/collection/showcase/chat-container/chat.showcase.js +1 -5
  26. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  27. package/dist/collection/testing/locale.e2e.js +2 -1
  28. package/dist/collection/testing/locale.e2e.js.map +1 -1
  29. package/dist/components/gx-ide-curl-inspector.d.ts +11 -0
  30. package/dist/components/gx-ide-curl-inspector.js +194 -0
  31. package/dist/components/gx-ide-curl-inspector.js.map +1 -0
  32. package/dist/components/gx-ide-sc-chat-container.js +1 -5
  33. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  34. package/dist/components/gx-ide-sign-in.js +1 -1
  35. package/dist/components/gx-ide-sign-in.js.map +1 -1
  36. package/dist/components/gx-ide-start-page.js +2 -2
  37. package/dist/components/gx-ide-start-page.js.map +1 -1
  38. package/dist/esm/genexus-ide-ui.js +1 -1
  39. package/dist/esm/gx-ide-curl-inspector.entry.js +158 -0
  40. package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -0
  41. package/dist/esm/gx-ide-sc-chat-container.entry.js +1 -5
  42. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  43. package/dist/esm/gx-ide-sign-in.entry.js +1 -1
  44. package/dist/esm/gx-ide-sign-in.entry.js.map +1 -1
  45. package/dist/esm/gx-ide-start-page.entry.js +2 -2
  46. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  47. package/dist/esm/loader.js +1 -1
  48. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  49. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  50. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.en.json +2 -1
  51. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.ja.json +3 -2
  52. package/dist/genexus-ide-ui/gx-ide-assets/chat-welcome/langs/chat-welcome.lang.zh.json +2 -1
  53. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.en.json +14 -0
  54. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +14 -0
  55. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.zh.json +14 -0
  56. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/shortcuts.json +31 -0
  57. package/dist/genexus-ide-ui/{p-4cd4f013.entry.js → p-06fbe725.entry.js} +2 -2
  58. package/dist/genexus-ide-ui/p-06fbe725.entry.js.map +1 -0
  59. package/dist/genexus-ide-ui/{p-413c0800.entry.js → p-29db37fd.entry.js} +3 -4
  60. package/dist/genexus-ide-ui/p-29db37fd.entry.js.map +1 -0
  61. package/dist/genexus-ide-ui/{p-6b525369.entry.js → p-aae7f543.entry.js} +5 -3
  62. package/dist/genexus-ide-ui/p-aae7f543.entry.js.map +1 -0
  63. package/dist/genexus-ide-ui/p-c3400671.entry.js +217 -0
  64. package/dist/genexus-ide-ui/p-c3400671.entry.js.map +1 -0
  65. package/dist/types/components/curl-inspector/curl-inspector.d.ts +56 -0
  66. package/dist/types/components.d.ts +125 -54
  67. package/package.json +1 -1
  68. package/dist/genexus-ide-ui/p-413c0800.entry.js.map +0 -1
  69. package/dist/genexus-ide-ui/p-4cd4f013.entry.js.map +0 -1
  70. 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>;