@genexus/genexus-ide-ui 3.2.11 → 3.2.12

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 (30) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-db-properties-configurator.cjs.entry.js +165 -0
  3. package/dist/cjs/gx-ide-db-properties-configurator.cjs.entry.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/collection/collection-manifest.json +1 -0
  6. package/dist/collection/components/db-properties-configurator/db-properties-configurator.css +127 -0
  7. package/dist/collection/components/db-properties-configurator/db-properties-configurator.js +250 -0
  8. package/dist/collection/components/db-properties-configurator/db-properties-configurator.js.map +1 -0
  9. package/dist/collection/components/db-properties-configurator/gx-ide-assets/db-properties-configurator/langs/db-properties-configurator.lang.en.json +24 -0
  10. package/dist/collection/components/db-properties-configurator/gx-ide-assets/db-properties-configurator/langs/db-properties-configurator.lang.ja.json +24 -0
  11. package/dist/collection/components/db-properties-configurator/gx-ide-assets/db-properties-configurator/langs/db-properties-configurator.lang.zh.json +24 -0
  12. package/dist/collection/testing/locale.e2e.js +1 -0
  13. package/dist/collection/testing/locale.e2e.js.map +1 -1
  14. package/dist/components/gx-ide-db-properties-configurator.d.ts +11 -0
  15. package/dist/components/gx-ide-db-properties-configurator.js +183 -0
  16. package/dist/components/gx-ide-db-properties-configurator.js.map +1 -0
  17. package/dist/esm/genexus-ide-ui.js +1 -1
  18. package/dist/esm/gx-ide-db-properties-configurator.entry.js +161 -0
  19. package/dist/esm/gx-ide-db-properties-configurator.entry.js.map +1 -0
  20. package/dist/esm/loader.js +1 -1
  21. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  22. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  23. package/dist/genexus-ide-ui/gx-ide-assets/db-properties-configurator/langs/db-properties-configurator.lang.en.json +24 -0
  24. package/dist/genexus-ide-ui/gx-ide-assets/db-properties-configurator/langs/db-properties-configurator.lang.ja.json +24 -0
  25. package/dist/genexus-ide-ui/gx-ide-assets/db-properties-configurator/langs/db-properties-configurator.lang.zh.json +24 -0
  26. package/dist/genexus-ide-ui/p-e759cfdb.entry.js +281 -0
  27. package/dist/genexus-ide-ui/p-e759cfdb.entry.js.map +1 -0
  28. package/dist/types/components/db-properties-configurator/db-properties-configurator.d.ts +50 -0
  29. package/dist/types/components.d.ts +107 -60
  30. package/package.json +1 -1
@@ -0,0 +1,250 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f)
3
+ throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
5
+ throw new TypeError("Cannot read private member from an object whose class did not declare it");
6
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
7
+ };
8
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
9
+ if (kind === "m")
10
+ throw new TypeError("Private method is not writable");
11
+ if (kind === "a" && !f)
12
+ throw new TypeError("Private accessor was defined without a setter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
14
+ throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
+ };
17
+ var _GxIdeDbPropertiesConfigurator_componentLocale, _GxIdeDbPropertiesConfigurator_getValue, _GxIdeDbPropertiesConfigurator_hasPendingRequired, _GxIdeDbPropertiesConfigurator_buildComboModel, _GxIdeDbPropertiesConfigurator_isAuthField, _GxIdeDbPropertiesConfigurator_hasTrustedConnection, _GxIdeDbPropertiesConfigurator_valueChangeHandler, _GxIdeDbPropertiesConfigurator_cancelButtonClickedHandler, _GxIdeDbPropertiesConfigurator_confirmButtonClickedHandler, _GxIdeDbPropertiesConfigurator_renderControl, _GxIdeDbPropertiesConfigurator_renderField, _GxIdeDbPropertiesConfigurator_renderSection;
18
+ import { Host, h } from "@stencil/core";
19
+ import { getIconPath } from "@genexus/mercury";
20
+ import { Locale } from "../../common/locale";
21
+ import { config } from "../../common/config";
22
+ const CSS_BUNDLES = [
23
+ "resets/box-sizing",
24
+ "components/button",
25
+ "components/combo-box",
26
+ "components/edit",
27
+ "components/icon",
28
+ "utils/form",
29
+ "utils/layout",
30
+ "utils/typography",
31
+ "utils/spacing",
32
+ "chameleon/scrollbar"
33
+ ];
34
+ const DATABASE_ICON = getIconPath({
35
+ category: "system",
36
+ name: "database",
37
+ colorType: "primary"
38
+ });
39
+ /**
40
+ * Name of the property that toggles integrated security. Its presence in
41
+ * `properties` is what drives the rendering of the Authentication section.
42
+ */
43
+ const TRUSTED_CONNECTION = "TRUSTED_CONNECTION";
44
+ const USER_ID = "USER_ID";
45
+ const USER_PASSWORD = "USER_PASSWORD";
46
+ /** Category that groups the authentication-related fields. */
47
+ const AUTH_CATEGORY = "authentication";
48
+ export class GxIdeDbPropertiesConfigurator {
49
+ constructor() {
50
+ // eslint-disable-next-line @stencil-community/own-props-must-be-private
51
+ _GxIdeDbPropertiesConfigurator_componentLocale.set(this, void 0);
52
+ _GxIdeDbPropertiesConfigurator_getValue.set(this, (field) => { var _a; return (_a = field.value) !== null && _a !== void 0 ? _a : ""; });
53
+ _GxIdeDbPropertiesConfigurator_hasPendingRequired.set(this, () => {
54
+ var _a;
55
+ return ((_a = this.properties) !== null && _a !== void 0 ? _a : []).some(field => field.missing && __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_getValue, "f").call(this, field).trim() === "");
56
+ });
57
+ _GxIdeDbPropertiesConfigurator_buildComboModel.set(this, (field) => { var _a; return ((_a = field.standardValues) !== null && _a !== void 0 ? _a : []).map(value => ({ value, caption: value })); });
58
+ _GxIdeDbPropertiesConfigurator_isAuthField.set(this, (field) => {
59
+ var _a;
60
+ return field.name === TRUSTED_CONNECTION ||
61
+ field.name === USER_ID ||
62
+ field.name === USER_PASSWORD ||
63
+ ((_a = field.category) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === AUTH_CATEGORY;
64
+ });
65
+ /** Whether the host sent the TRUSTED_CONNECTION property. Only then is the
66
+ * Authentication section rendered. */
67
+ _GxIdeDbPropertiesConfigurator_hasTrustedConnection.set(this, () => { var _a; return ((_a = this.properties) !== null && _a !== void 0 ? _a : []).some(field => field.name === TRUSTED_CONNECTION); });
68
+ _GxIdeDbPropertiesConfigurator_valueChangeHandler.set(this, (name) => (event) => {
69
+ var _a, _b;
70
+ const detail = event.detail;
71
+ const value = typeof detail === "string"
72
+ ? detail
73
+ : ((_b = (_a = event.target) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : "");
74
+ this.propertyChangeCallback(name, value);
75
+ });
76
+ _GxIdeDbPropertiesConfigurator_cancelButtonClickedHandler.set(this, () => {
77
+ var _a;
78
+ (_a = this.cancelCallback) === null || _a === void 0 ? void 0 : _a.call(this);
79
+ });
80
+ _GxIdeDbPropertiesConfigurator_confirmButtonClickedHandler.set(this, () => {
81
+ var _a;
82
+ (_a = this.confirmCallback) === null || _a === void 0 ? void 0 : _a.call(this);
83
+ });
84
+ // #region Renders
85
+ _GxIdeDbPropertiesConfigurator_renderControl.set(this, (field) => {
86
+ const fieldId = `field-${field.name}`;
87
+ const value = __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_getValue, "f").call(this, field);
88
+ switch (field.control) {
89
+ case "password":
90
+ return (h("ch-edit", { id: fieldId, class: "input", type: "password", showPasswordButton: true, debounce: config.inputDebounce, value: value, onInput: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name) }));
91
+ case "combo":
92
+ return (h("ch-combo-box-render", { id: fieldId, class: "combo-box", value: value, model: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_buildComboModel, "f").call(this, field), onInput: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name), onChange: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name) }));
93
+ case "checkbox":
94
+ return (h("ch-checkbox", { id: fieldId, class: "checkbox", value: value, checkedValue: "Yes", unCheckedValue: "No", onInput: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name) }));
95
+ case "combo-editable":
96
+ return (h("ch-combo-box-render", { id: fieldId, class: "combo-box", suggest: true, suggestDebounce: config.inputDebounce, value: value, model: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_buildComboModel, "f").call(this, field), onInput: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name), onChange: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name), part: `combo-box combo-box--editable combo-box--${field.name}` }));
97
+ case "custom":
98
+ case "readonly":
99
+ return (h("ch-edit", { id: fieldId, class: "input", readonly: true, value: value, part: `input input--${field.control} input--${field.name}` }));
100
+ // "text"
101
+ default:
102
+ return (h("ch-edit", { id: fieldId, class: "input", debounce: config.inputDebounce, value: value, onInput: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_valueChangeHandler, "f").call(this, field.name), part: `input input--text input--${field.name}` }));
103
+ }
104
+ });
105
+ _GxIdeDbPropertiesConfigurator_renderField.set(this, (field) => {
106
+ const fieldId = `field-${field.name}`;
107
+ const isReadonly = field.control === "readonly" || field.control === "custom";
108
+ const isCheckbox = field.control === "checkbox";
109
+ if (isCheckbox) {
110
+ return (h("div", { class: "field field--checkbox field--full", key: field.name }, h("div", { class: "field__row" }, __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_renderControl, "f").call(this, field), h("label", { class: "label", htmlFor: fieldId }, field.label)), field.description && (h("p", { class: "field__hint body-regular-s" }, field.description))));
111
+ }
112
+ return (h("div", { class: "field field-block", key: field.name }, h("label", { class: { "label": true, "label--disabled": isReadonly }, htmlFor: fieldId }, field.label), __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_renderControl, "f").call(this, field)));
113
+ });
114
+ _GxIdeDbPropertiesConfigurator_renderSection.set(this, (title, fields) => (h("section", { class: "field-section" }, h("div", { class: "field-section__head" }, h("span", { class: "field-section__title" }, title)), h("div", { class: "fields" }, fields.map(__classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_renderField, "f"))))));
115
+ this.properties = [];
116
+ this.cancelCallback = undefined;
117
+ this.confirmCallback = undefined;
118
+ this.propertyChangeCallback = undefined;
119
+ }
120
+ async componentWillLoad() {
121
+ __classPrivateFieldSet(this, _GxIdeDbPropertiesConfigurator_componentLocale, await Locale.getComponentStrings(this.el), "f");
122
+ }
123
+ // #endregion Renders
124
+ render() {
125
+ var _a;
126
+ const title = __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_componentLocale, "f").header.title;
127
+ const description = __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_componentLocale, "f").header.description;
128
+ const sections = __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_componentLocale, "f").sections;
129
+ const allFields = (_a = this.properties) !== null && _a !== void 0 ? _a : [];
130
+ const hasAuthSection = __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_hasTrustedConnection, "f").call(this);
131
+ // The Authentication section is only rendered when TRUSTED_CONNECTION is
132
+ // present; otherwise every field stays in the always-present Connection
133
+ // section so nothing is dropped.
134
+ const authFields = hasAuthSection
135
+ ? allFields.filter(__classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_isAuthField, "f"))
136
+ : [];
137
+ const connectionFields = hasAuthSection
138
+ ? allFields.filter(field => !__classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_isAuthField, "f").call(this, field))
139
+ : allFields;
140
+ return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, h("div", { class: "hero" }, h("div", { class: "hero__text" }, h("h1", { class: "hero__title subtitle-semi-bold-l" }, title), description && (h("p", { class: "hero__description body-regular-s" }, description))), h("div", { class: "hero__badge", "aria-hidden": "true" }, h("ch-image", { class: "icon-xl", src: DATABASE_ICON }))), h("div", { class: "main scrollable" }, connectionFields.length > 0 &&
141
+ __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_renderSection, "f").call(this, sections.connection, connectionFields), hasAuthSection &&
142
+ authFields.length > 0 &&
143
+ __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_renderSection, "f").call(this, sections.authentication, authFields)), h("footer", { class: "dialog-footer-with-border footer" }, h("div", { class: "buttons-spacer" }, h("button", { class: "button-secondary", id: "button-cancel", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_cancelButtonClickedHandler, "f"), part: "button-cancel" }, __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_componentLocale, "f").footer.btnCancel), h("button", { class: "button-primary", id: "button-confirm", type: "button", disabled: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_hasPendingRequired, "f").call(this), onClick: __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_confirmButtonClickedHandler, "f"), part: "button-confirm" }, __classPrivateFieldGet(this, _GxIdeDbPropertiesConfigurator_componentLocale, "f").footer.btnConfirm))))));
144
+ }
145
+ static get is() { return "gx-ide-db-properties-configurator"; }
146
+ static get encapsulation() { return "shadow"; }
147
+ static get originalStyleUrls() {
148
+ return {
149
+ "$": ["db-properties-configurator.scss"]
150
+ };
151
+ }
152
+ static get styleUrls() {
153
+ return {
154
+ "$": ["db-properties-configurator.css"]
155
+ };
156
+ }
157
+ static get assetsDirs() { return ["gx-ide-assets/db-properties-configurator"]; }
158
+ static get properties() {
159
+ return {
160
+ "properties": {
161
+ "type": "unknown",
162
+ "mutable": false,
163
+ "complexType": {
164
+ "original": "DSPropertyField[]",
165
+ "resolved": "DSPropertyField[]",
166
+ "references": {
167
+ "DSPropertyField": {
168
+ "location": "local",
169
+ "path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/db-properties-configurator/db-properties-configurator.tsx",
170
+ "id": "src/components/db-properties-configurator/db-properties-configurator.tsx::DSPropertyField"
171
+ }
172
+ }
173
+ },
174
+ "required": false,
175
+ "optional": false,
176
+ "docs": {
177
+ "tags": [],
178
+ "text": "The list of properties to configure. Acts as the single source of truth:\nthe dialog reads each value from `DSPropertyField.value` and notifies the\nhost of every edit through `propertyChangeCallback`."
179
+ },
180
+ "defaultValue": "[]"
181
+ },
182
+ "cancelCallback": {
183
+ "type": "unknown",
184
+ "mutable": false,
185
+ "complexType": {
186
+ "original": "CancelCallback",
187
+ "resolved": "() => void | Promise<void>",
188
+ "references": {
189
+ "CancelCallback": {
190
+ "location": "local",
191
+ "path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/db-properties-configurator/db-properties-configurator.tsx",
192
+ "id": "src/components/db-properties-configurator/db-properties-configurator.tsx::CancelCallback"
193
+ }
194
+ }
195
+ },
196
+ "required": true,
197
+ "optional": false,
198
+ "docs": {
199
+ "tags": [],
200
+ "text": "Callback invoked when the user cancels the configuration."
201
+ }
202
+ },
203
+ "confirmCallback": {
204
+ "type": "unknown",
205
+ "mutable": false,
206
+ "complexType": {
207
+ "original": "ConfirmCallback",
208
+ "resolved": "() => void | Promise<void>",
209
+ "references": {
210
+ "ConfirmCallback": {
211
+ "location": "local",
212
+ "path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/db-properties-configurator/db-properties-configurator.tsx",
213
+ "id": "src/components/db-properties-configurator/db-properties-configurator.tsx::ConfirmCallback"
214
+ }
215
+ }
216
+ },
217
+ "required": true,
218
+ "optional": false,
219
+ "docs": {
220
+ "tags": [],
221
+ "text": "Callback invoked when the user confirms the configuration."
222
+ }
223
+ },
224
+ "propertyChangeCallback": {
225
+ "type": "unknown",
226
+ "mutable": false,
227
+ "complexType": {
228
+ "original": "PropertyChangeCallback",
229
+ "resolved": "(name: string, value: string) => void | Promise<void>",
230
+ "references": {
231
+ "PropertyChangeCallback": {
232
+ "location": "local",
233
+ "path": "/home/runner/work/genexus-ide-ui/genexus-ide-ui/src/components/db-properties-configurator/db-properties-configurator.tsx",
234
+ "id": "src/components/db-properties-configurator/db-properties-configurator.tsx::PropertyChangeCallback"
235
+ }
236
+ }
237
+ },
238
+ "required": true,
239
+ "optional": false,
240
+ "docs": {
241
+ "tags": [],
242
+ "text": "Callback invoked on every input change. Receives the name of the\nproperty that changed and its new value. The host is expected to apply\nthe change and push an updated `properties` array back to the component."
243
+ }
244
+ }
245
+ };
246
+ }
247
+ static get elementRef() { return "el"; }
248
+ }
249
+ _GxIdeDbPropertiesConfigurator_componentLocale = new WeakMap(), _GxIdeDbPropertiesConfigurator_getValue = new WeakMap(), _GxIdeDbPropertiesConfigurator_hasPendingRequired = new WeakMap(), _GxIdeDbPropertiesConfigurator_buildComboModel = new WeakMap(), _GxIdeDbPropertiesConfigurator_isAuthField = new WeakMap(), _GxIdeDbPropertiesConfigurator_hasTrustedConnection = new WeakMap(), _GxIdeDbPropertiesConfigurator_valueChangeHandler = new WeakMap(), _GxIdeDbPropertiesConfigurator_cancelButtonClickedHandler = new WeakMap(), _GxIdeDbPropertiesConfigurator_confirmButtonClickedHandler = new WeakMap(), _GxIdeDbPropertiesConfigurator_renderControl = new WeakMap(), _GxIdeDbPropertiesConfigurator_renderField = new WeakMap(), _GxIdeDbPropertiesConfigurator_renderSection = new WeakMap();
250
+ //# sourceMappingURL=db-properties-configurator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-properties-configurator.js","sourceRoot":"","sources":["../../../src/components/db-properties-configurator/db-properties-configurator.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, Prop, Element, h } from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\n\nimport { Locale } from \"../../common/locale\";\nimport { config } from \"../../common/config\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/combo-box\",\n \"components/edit\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst DATABASE_ICON = getIconPath({\n category: \"system\",\n name: \"database\",\n colorType: \"primary\"\n});\n\n/**\n * Name of the property that toggles integrated security. Its presence in\n * `properties` is what drives the rendering of the Authentication section.\n */\nconst TRUSTED_CONNECTION = \"TRUSTED_CONNECTION\";\nconst USER_ID = \"USER_ID\";\nconst USER_PASSWORD = \"USER_PASSWORD\";\n\n/** Category that groups the authentication-related fields. */\nconst AUTH_CATEGORY = \"authentication\";\n\n@Component({\n tag: \"gx-ide-db-properties-configurator\",\n styleUrl: \"db-properties-configurator.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/db-properties-configurator\"]\n})\nexport class GxIdeDbPropertiesConfigurator {\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeDbPropertiesConfiguratorElement;\n\n /**\n * The list of properties to configure. Acts as the single source of truth:\n * the dialog reads each value from `DSPropertyField.value` and notifies the\n * host of every edit through `propertyChangeCallback`.\n */\n @Prop() readonly properties: DSPropertyField[] = [];\n\n /**\n * Callback invoked when the user cancels the configuration.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when the user confirms the configuration.\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * Callback invoked on every input change. Receives the name of the\n * property that changed and its new value. The host is expected to apply\n * the change and push an updated `properties` array back to the component.\n */\n @Prop() readonly propertyChangeCallback!: PropertyChangeCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #getValue = (field: DSPropertyField): string => field.value ?? \"\";\n\n #hasPendingRequired = (): boolean =>\n (this.properties ?? []).some(\n field => field.missing && this.#getValue(field).trim() === \"\"\n );\n\n #buildComboModel = (field: DSPropertyField): ComboBoxModel =>\n (field.standardValues ?? []).map(value => ({ value, caption: value }));\n\n #isAuthField = (field: DSPropertyField): boolean =>\n field.name === TRUSTED_CONNECTION ||\n field.name === USER_ID ||\n field.name === USER_PASSWORD ||\n field.category?.toLowerCase() === AUTH_CATEGORY;\n\n /** Whether the host sent the TRUSTED_CONNECTION property. Only then is the\n * Authentication section rendered. */\n #hasTrustedConnection = (): boolean =>\n (this.properties ?? []).some(field => field.name === TRUSTED_CONNECTION);\n\n #valueChangeHandler =\n (name: string) => (event: CustomEvent<string> | InputEvent) => {\n const detail = (event as CustomEvent<string>).detail;\n const value =\n typeof detail === \"string\"\n ? detail\n : ((event.target as HTMLChEditElement)?.value ?? \"\");\n this.propertyChangeCallback(name, value);\n };\n\n #cancelButtonClickedHandler = () => {\n this.cancelCallback?.();\n };\n\n #confirmButtonClickedHandler = () => {\n this.confirmCallback?.();\n };\n\n // #region Renders\n\n #renderControl = (field: DSPropertyField) => {\n const fieldId = `field-${field.name}`;\n const value = this.#getValue(field);\n\n switch (field.control) {\n case \"password\":\n return (\n <ch-edit\n id={fieldId}\n class=\"input\"\n type=\"password\"\n showPasswordButton\n debounce={config.inputDebounce}\n value={value}\n onInput={this.#valueChangeHandler(field.name)}\n ></ch-edit>\n );\n\n case \"combo\":\n return (\n <ch-combo-box-render\n id={fieldId}\n class=\"combo-box\"\n value={value}\n model={this.#buildComboModel(field)}\n onInput={this.#valueChangeHandler(field.name)}\n onChange={this.#valueChangeHandler(field.name)}\n ></ch-combo-box-render>\n );\n\n case \"checkbox\":\n return (\n <ch-checkbox\n id={fieldId}\n class=\"checkbox\"\n value={value}\n checkedValue=\"Yes\"\n unCheckedValue=\"No\"\n onInput={this.#valueChangeHandler(field.name)}\n ></ch-checkbox>\n );\n\n case \"combo-editable\":\n return (\n <ch-combo-box-render\n id={fieldId}\n class=\"combo-box\"\n suggest\n suggestDebounce={config.inputDebounce}\n value={value}\n model={this.#buildComboModel(field)}\n onInput={this.#valueChangeHandler(field.name)}\n onChange={this.#valueChangeHandler(field.name)}\n part={`combo-box combo-box--editable combo-box--${field.name}`}\n ></ch-combo-box-render>\n );\n\n case \"custom\":\n case \"readonly\":\n return (\n <ch-edit\n id={fieldId}\n class=\"input\"\n readonly\n value={value}\n part={`input input--${field.control} input--${field.name}`}\n ></ch-edit>\n );\n\n // \"text\"\n default:\n return (\n <ch-edit\n id={fieldId}\n class=\"input\"\n debounce={config.inputDebounce}\n value={value}\n onInput={this.#valueChangeHandler(field.name)}\n part={`input input--text input--${field.name}`}\n ></ch-edit>\n );\n }\n };\n\n #renderField = (field: DSPropertyField) => {\n const fieldId = `field-${field.name}`;\n const isReadonly =\n field.control === \"readonly\" || field.control === \"custom\";\n const isCheckbox = field.control === \"checkbox\";\n\n if (isCheckbox) {\n return (\n <div class=\"field field--checkbox field--full\" key={field.name}>\n <div class=\"field__row\">\n {this.#renderControl(field)}\n <label class=\"label\" htmlFor={fieldId}>\n {field.label}\n </label>\n </div>\n {field.description && (\n <p class=\"field__hint body-regular-s\">{field.description}</p>\n )}\n </div>\n );\n }\n\n return (\n <div class=\"field field-block\" key={field.name}>\n <label\n class={{ \"label\": true, \"label--disabled\": isReadonly }}\n htmlFor={fieldId}\n >\n {field.label}\n </label>\n\n {this.#renderControl(field)}\n </div>\n );\n };\n\n #renderSection = (title: string, fields: DSPropertyField[]) => (\n <section class=\"field-section\">\n <div class=\"field-section__head\">\n <span class=\"field-section__title\">{title}</span>\n </div>\n <div class=\"fields\">{fields.map(this.#renderField)}</div>\n </section>\n );\n\n // #endregion Renders\n\n render() {\n const title = this.#componentLocale.header.title;\n const description = this.#componentLocale.header.description;\n const sections = this.#componentLocale.sections;\n\n const allFields = this.properties ?? [];\n const hasAuthSection = this.#hasTrustedConnection();\n\n // The Authentication section is only rendered when TRUSTED_CONNECTION is\n // present; otherwise every field stays in the always-present Connection\n // section so nothing is dropped.\n const authFields = hasAuthSection\n ? allFields.filter(this.#isAuthField)\n : [];\n const connectionFields = hasAuthSection\n ? allFields.filter(field => !this.#isAuthField(field))\n : allFields;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <div class=\"hero\">\n <div class=\"hero__text\">\n <h1 class=\"hero__title subtitle-semi-bold-l\">{title}</h1>\n {description && (\n <p class=\"hero__description body-regular-s\">{description}</p>\n )}\n </div>\n <div class=\"hero__badge\" aria-hidden=\"true\">\n <ch-image class=\"icon-xl\" src={DATABASE_ICON}></ch-image>\n </div>\n </div>\n\n <div class=\"main scrollable\">\n {connectionFields.length > 0 &&\n this.#renderSection(sections.connection, connectionFields)}\n\n {hasAuthSection &&\n authFields.length > 0 &&\n this.#renderSection(sections.authentication, authFields)}\n </div>\n\n <footer class=\"dialog-footer-with-border footer\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n type=\"button\"\n onClick={this.#cancelButtonClickedHandler}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-confirm\"\n type=\"button\"\n disabled={this.#hasPendingRequired()}\n onClick={this.#confirmButtonClickedHandler}\n part=\"button-confirm\"\n >\n {this.#componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type DSControlKind =\n | \"checkbox\"\n | \"text\"\n | \"password\"\n | \"combo\"\n | \"combo-editable\"\n | \"custom\"\n | \"readonly\";\n\nexport interface DSPropertyField {\n /** `PropertyData.name` — key used to set the property value. */\n name: string;\n /** `definition.displayName`. */\n label: string;\n /** `definition.description` (rendered below the control). */\n description?: string;\n /** `definition.category` (optional grouping). */\n category?: string;\n\n /** Control resolved by the host. */\n control: DSControlKind;\n\n /** `PropertyData.value` (masked when password). */\n value: string;\n /** `required && isDefault` (host detection). */\n missing: boolean;\n\n // combos:\n /** `PropertyData.standardValues`. */\n standardValues?: string[];\n /** `PropertyData.isStandardValuesExclusive`. */\n exclusive?: boolean;\n}\n\nexport type CancelCallback = () => void | Promise<void>;\n\nexport type ConfirmCallback = () => void | Promise<void>;\n\nexport type PropertyChangeCallback = (\n name: string,\n value: string\n) => void | Promise<void>;\n"]}
@@ -0,0 +1,24 @@
1
+ {
2
+ "componentName": "DB Properties Configurator",
3
+ "header": {
4
+ "caption": "Database connection",
5
+ "title": "Set required properties",
6
+ "description": "The following properties must be set to start the Build process. Fill them with the appropriate values for your database instance.",
7
+ "close": "Close"
8
+ },
9
+ "sections": {
10
+ "connection": "Connection",
11
+ "authentication": "Authentication"
12
+ },
13
+ "fields": {
14
+ "required": "Required",
15
+ "requiredMarker": "*",
16
+ "openEditor": "Open editor",
17
+ "editorEllipsis": "…",
18
+ "uncategorized": "General"
19
+ },
20
+ "footer": {
21
+ "btnCancel": "Cancel",
22
+ "btnConfirm": "Confirm"
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "componentName": "DB プロパティ構成",
3
+ "header": {
4
+ "caption": "データベース接続",
5
+ "title": "必須プロパティの設定",
6
+ "description": "ビルドプロセスを開始するには、以下のプロパティを設定する必要があります。データベースインスタンスに適した値を入力してください。",
7
+ "close": "閉じる"
8
+ },
9
+ "sections": {
10
+ "connection": "接続",
11
+ "authentication": "認証"
12
+ },
13
+ "fields": {
14
+ "required": "必須",
15
+ "requiredMarker": "*",
16
+ "openEditor": "エディターを開く",
17
+ "editorEllipsis": "…",
18
+ "uncategorized": "全般"
19
+ },
20
+ "footer": {
21
+ "btnCancel": "キャンセル",
22
+ "btnConfirm": "確認"
23
+ }
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "componentName": "数据库属性配置器",
3
+ "header": {
4
+ "caption": "数据库连接",
5
+ "title": "设置必填属性",
6
+ "description": "必须设置以下属性才能开始构建过程。请为您的数据库实例填写适当的值。",
7
+ "close": "关闭"
8
+ },
9
+ "sections": {
10
+ "connection": "连接",
11
+ "authentication": "身份验证"
12
+ },
13
+ "fields": {
14
+ "required": "必填",
15
+ "requiredMarker": "*",
16
+ "openEditor": "打开编辑器",
17
+ "editorEllipsis": "…",
18
+ "uncategorized": "常规"
19
+ },
20
+ "footer": {
21
+ "btnCancel": "取消",
22
+ "btnConfirm": "确认"
23
+ }
24
+ }
@@ -102,6 +102,7 @@ const allGeneXusIdeUIComponents = {
102
102
  "gx-ide-data-selector": 0,
103
103
  "gx-ide-data-type-selector": 0,
104
104
  "gx-ide-db-instance-selector": 0,
105
+ "gx-ide-db-properties-configurator": 0,
105
106
  "gx-ide-deployment-tool": 0,
106
107
  "gx-ide-details-acknowledgements": 0,
107
108
  "gx-ide-design-import": 0,
@@ -1 +1 @@
1
- {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-db-instance-selector\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-details-acknowledgements\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-mcp-server\": 0,\n \"gx-ide-multi-select\": 0,\n \"gx-ide-name-picker\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-progress-bar\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-server-selector\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-team-or-org\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-organization\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-sign-in-result\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-bring-all-changes-selector\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-preview\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-starting-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0,\n \"gx-ide-launchpad\": 0,\n \"gx-ide-launchpad-web-apps\": 0,\n \"gx-ide-launchpad-native-apps\": 0,\n \"gx-ide-launchpad-apis\": 0,\n \"gx-ide-launchpad-api\": 0,\n \"gx-ide-comments-viewer\": 0,\n \"gx-ide-restore-version\": 0,\n \"gx-ide-search\": 0,\n \"gx-ide-breadcrumb\": 0,\n \"gx-ide-breadcrumb-item\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-test\",\n \"gx-ide-file-item\",\n \"gx-ide-breadcrumb\",\n \"gx-ide-breadcrumb-item\",\n \"gx-ide-multi-select\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
1
+ {"version":3,"file":"locale.e2e.js","sourceRoot":"","sources":["../../src/testing/locale.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { GeneXusIdeUIControlsTagName } from \"../common/types\";\nimport { haveSameStructure } from \"./same-structure.e2e\";\n\nconst COMPONENT_PREFIX = \"gx-ide-\";\nconst languages: { name: string; attr: string }[] = [\n { name: \"chinese\", attr: \"zh\" },\n { name: \"english\", attr: \"en\" },\n { name: \"japanese\", attr: \"ja\" }\n];\n\nconst testLocale = (componentNameWithPrefix: GeneXusIdeUIControlsTagName) => {\n describe(`[locale][${componentNameWithPrefix}]`, () => {\n let page: E2EPage;\n const componentName = componentNameWithPrefix.replace(COMPONENT_PREFIX, \"\");\n\n // This implementation is a WA since we can't evaluate JS classes in the page.\n // TODO: Implement the locale utility as a function, which can be evaluated\n // in the page\n const getTranslations = () =>\n page.evaluate(component => {\n const ASSETS_FOLDER = \"gx-ide-assets/\";\n const DEFAULT_LANGUAGE = \"en\";\n const LANGS_FOLDER = \"langs/\";\n const LANG_PREFIX = \".lang.\";\n const LANG_EXTENSION = \".json\";\n const lang =\n document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf() ?? DEFAULT_LANGUAGE;\n const folder = `${component}/`;\n\n const path =\n `/build/${ASSETS_FOLDER}${folder}${LANGS_FOLDER}${component}${LANG_PREFIX}${lang}${LANG_EXTENSION}` as const;\n\n return new Promise(resolve => {\n fetch(path)\n .then(async langFile => {\n if (langFile.ok) {\n const fileObject = await langFile.json();\n resolve(fileObject);\n } else {\n resolve(undefined);\n }\n })\n .catch(() => resolve(undefined));\n });\n }, componentName);\n\n beforeEach(async () => {\n page = await newE2EPage({\n failOnConsoleError: true,\n html: \"\" // Necessary\n });\n });\n\n it(\"should work without specifying the language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n\n it(\"should default to english language when there is no language (lang attr) in the browser\", async () => {\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n\n await page.evaluate(() =>\n document.documentElement.setAttribute(\"lang\", \"en\")\n );\n\n const languageEnglishFile: any | undefined = await getTranslations();\n expect(languageEnglishFile).toBeTruthy();\n expect(languageFile).toEqual(languageEnglishFile);\n });\n\n languages.forEach(language => {\n it(`should work with ${language.name} language`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language.attr\n );\n const languageFile: any | undefined = await getTranslations();\n expect(languageFile).toBeTruthy();\n });\n });\n\n for (let index = 0; index < languages.length - 1; index++) {\n const language1 = languages[index];\n const language2 = languages[index + 1];\n\n // TODO: Complete all translations. At this moment, Japanese and Chinese\n // translations have missing literals\n it(`should translate the same literals (${language1.name} and ${language2.name})`, async () => {\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language1.attr\n );\n const language1File: any | undefined = await getTranslations();\n\n await page.evaluate(\n (attr: string) => document.documentElement.setAttribute(\"lang\", attr),\n language2.attr\n );\n const language2File: any | undefined = await getTranslations();\n\n expect(language1File).toBeTruthy();\n expect(language2File).toBeTruthy();\n expect(haveSameStructure(language1File, language2File)).toBe(true);\n });\n }\n });\n};\n\n// TypeScript does not have a built-in type to exhaust a list with union types\nconst allGeneXusIdeUIComponents: { [key in GeneXusIdeUIControlsTagName]: 0 } = {\n \"gx-ide-about\": 0,\n \"gx-ide-bpm-app-declaration\": 0,\n \"gx-ide-bpm-assign-roles\": 0,\n \"gx-ide-bpm-import-files\": 0,\n \"gx-ide-bpm-import-gxpm\": 0,\n \"gx-ide-bpm-objects-selector\": 0,\n \"gx-ide-bpm-sync-gam-roles\": 0,\n \"gx-ide-bpm-task-documents\": 0,\n \"gx-ide-bpm-timer-duration\": 0,\n \"gx-ide-chat-container\": 0,\n \"gx-ide-chat-welcome\": 0,\n \"gx-ide-sc-chat-container\": 0,\n \"gx-ide-connect-gx-server\": 0,\n \"gx-ide-container\": 0,\n \"gx-ide-create-kb-from-server\": 0,\n \"gx-ide-current-user-info\": 0,\n \"gx-ide-data-selector\": 0,\n \"gx-ide-data-type-selector\": 0,\n \"gx-ide-db-instance-selector\": 0,\n \"gx-ide-db-properties-configurator\": 0,\n \"gx-ide-deployment-tool\": 0,\n \"gx-ide-details-acknowledgements\": 0,\n \"gx-ide-design-import\": 0,\n \"gx-ide-edit-module-server\": 0,\n \"gx-ide-empty-state\": 0,\n \"gx-ide-entity-selector\": 0,\n \"gx-ide-file-item\": 0,\n \"gx-ide-file-uploader\": 0,\n \"gx-ide-gam-installation-settings\": 0,\n \"gx-ide-json-import\": 0,\n \"gx-ide-kb-manager-export\": 0,\n \"gx-ide-kb-manager-import\": 0,\n \"gx-ide-list-selector\": 0,\n \"gx-ide-list-selector-item\": 0,\n \"gx-ide-loader\": 0,\n \"gx-ide-manage-module-references\": 0,\n \"gx-ide-mcp-server\": 0,\n \"gx-ide-multi-select\": 0,\n \"gx-ide-name-picker\": 0,\n \"gx-ide-new-environment\": 0,\n \"gx-ide-new-kb\": 0,\n \"gx-ide-new-object\": 0,\n \"gx-ide-new-version\": 0,\n \"gx-ide-object-selector\": 0,\n \"gx-ide-open-api-import\": 0,\n \"gx-ide-progress-bar\": 0,\n \"gx-ide-plugin-explorer\": 0,\n \"gx-ide-plugin-details\": 0,\n \"gx-ide-references\": 0,\n \"gx-ide-server-selector\": 0,\n \"gx-ide-select-kb-items\": 0,\n \"gx-ide-select-team-or-org\": 0,\n \"gx-ide-sign-in\": 0,\n \"gx-ide-sign-in-organization\": 0,\n \"gx-ide-share-kb\": 0,\n \"gx-ide-start-page\": 0,\n \"gx-ide-sign-in-result\": 0,\n \"gx-ide-status-buttons\": 0,\n \"gx-ide-team-dev-bring-changes\": 0,\n \"gx-ide-team-dev-bring-all-changes-selector\": 0,\n \"gx-ide-team-dev-commit\": 0,\n \"gx-ide-team-dev-history\": 0,\n \"gx-ide-team-dev-preview\": 0,\n \"gx-ide-team-dev-select-recent-comment\": 0,\n \"gx-ide-team-dev-update\": 0,\n \"gx-ide-team-dev-update-partial-selection\": 0,\n \"gx-ide-team-dev-update-to-revision\": 0,\n \"gx-ide-starting-template\": 0,\n \"gx-ide-test\": 0,\n \"gx-ide-wf-settings\": 0,\n \"gx-ide-ww-images\": 0,\n \"gx-ide-ww-attributes\": 0,\n \"gx-ide-ww-files\": 0,\n \"gx-ide-navigation-report\": 0,\n \"gx-ide-splash\": 0,\n \"gx-ide-welcome-page\": 0,\n \"gx-ide-bpm-export-xpdl\": 0,\n \"gx-ide-curl-inspector\": 0,\n \"gx-ide-launchpad\": 0,\n \"gx-ide-launchpad-web-apps\": 0,\n \"gx-ide-launchpad-native-apps\": 0,\n \"gx-ide-launchpad-apis\": 0,\n \"gx-ide-launchpad-api\": 0,\n \"gx-ide-comments-viewer\": 0,\n \"gx-ide-restore-version\": 0,\n \"gx-ide-search\": 0,\n \"gx-ide-breadcrumb\": 0,\n \"gx-ide-breadcrumb-item\": 0\n};\n\nconst componentsWithoutTranslations = new Set<GeneXusIdeUIControlsTagName>([\n \"gx-ide-chat-container\",\n \"gx-ide-container\",\n \"gx-ide-sc-chat-container\",\n \"gx-ide-empty-state\",\n \"gx-ide-list-selector\",\n \"gx-ide-list-selector-item\",\n \"gx-ide-loader\",\n \"gx-ide-test\",\n \"gx-ide-file-item\",\n \"gx-ide-breadcrumb\",\n \"gx-ide-breadcrumb-item\",\n \"gx-ide-multi-select\"\n]);\n\nconst componentsWithTranslations = Object.keys(\n allGeneXusIdeUIComponents\n).filter(\n component =>\n !componentsWithoutTranslations.has(component as GeneXusIdeUIControlsTagName)\n);\n\ncomponentsWithTranslations.forEach(testLocale);\n"]}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface GxIdeDbPropertiesConfigurator extends Components.GxIdeDbPropertiesConfigurator, HTMLElement {}
4
+ export const GxIdeDbPropertiesConfigurator: {
5
+ prototype: GxIdeDbPropertiesConfigurator;
6
+ new (): GxIdeDbPropertiesConfigurator;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;