@genexus/genexus-ide-ui 1.0.62 → 1.0.64
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-loader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +58 -30
- package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/_helpers/ide-loader/ide-loader.css +2 -2
- package/dist/collection/components/new-object/new-object.js +100 -30
- package/dist/collection/components/new-object/new-object.js.map +1 -1
- package/dist/collection/components/select-kb-items/select-kb-items.css +0 -4
- package/dist/collection/components/select-kb-items/select-kb-items.js +2 -2
- package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
- package/dist/components/gx-ide-new-object.js +60 -30
- package/dist/components/gx-ide-new-object.js.map +1 -1
- package/dist/components/gx-ide-select-kb-items.js +3 -3
- package/dist/components/gx-ide-select-kb-items.js.map +1 -1
- package/dist/components/ide-loader.js +1 -1
- package/dist/components/ide-loader.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-loader.entry.js +1 -1
- package/dist/esm/gx-ide-loader.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-object.entry.js +58 -30
- package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +3 -3
- package/dist/esm/gx-ide-select-kb-items.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/{p-395e9c81.entry.js → p-0d9a25ad.entry.js} +14 -16
- package/dist/genexus-ide-ui/p-0d9a25ad.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-09d55db9.entry.js → p-6830b540.entry.js} +126 -93
- package/dist/genexus-ide-ui/p-6830b540.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-5246559c.entry.js → p-e9f77ad0.entry.js} +7 -7
- package/dist/genexus-ide-ui/p-e9f77ad0.entry.js.map +1 -0
- package/dist/types/components/new-object/new-object.d.ts +12 -0
- package/dist/types/components.d.ts +18 -2
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-09d55db9.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-395e9c81.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-5246559c.entry.js.map +0 -1
|
@@ -2,7 +2,7 @@ import { r as t, c as i, a as e, h as s, H as a, g as n } from "./p-2cf37639.js"
|
|
|
2
2
|
|
|
3
3
|
import { c as o } from "./p-13738332.js";
|
|
4
4
|
|
|
5
|
-
import { L as
|
|
5
|
+
import { L as h } from "./p-311eedf3.js";
|
|
6
6
|
|
|
7
7
|
const mapTypeCategoryDataToActionListModel = t => t.map((t => ({
|
|
8
8
|
id: t.id,
|
|
@@ -38,9 +38,9 @@ const mapTypeDataToActionListModel = (t, i, e) => t.map((t => ({
|
|
|
38
38
|
* Order the items in the same order as they come.
|
|
39
39
|
*/ const sortActionListDefault = t => t;
|
|
40
40
|
|
|
41
|
-
const
|
|
41
|
+
const l = ':host{display:grid;block-size:100%}.main{display:grid;grid-template-rows:1fr max-content max-content}.categories-types-layout{grid-template-columns:1fr 1fr}.api-description-layout{padding-block:calc( var(--content-block-spacing) * 2 );display:grid;grid-template:"api-description-title api-description-title" "api-name-label api-name-control" "api-description-label api-description-control" "api-module-label api-module-control";grid-template-columns:max-content 1fr}.api-description-title{grid-area:api-description-title}.api-name-label{grid-area:api-name-label}.api-name-control{grid-area:api-name-control}.api-description-label{grid-area:api-description-label}.api-description-control{grid-area:api-description-control}.api-module-label{grid-area:api-module-label}.api-module-control{grid-area:api-module-control}';
|
|
42
42
|
|
|
43
|
-
var
|
|
43
|
+
var r = undefined && undefined.__classPrivateFieldGet || function(t, i, e, s) {
|
|
44
44
|
if (e === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
|
|
45
45
|
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");
|
|
46
46
|
return e === "m" ? s : e === "a" ? s.call(t) : s ? s.value : i.get(t);
|
|
@@ -53,11 +53,11 @@ var c = undefined && undefined.__classPrivateFieldSet || function(t, i, e, s, a)
|
|
|
53
53
|
return s === "a" ? a.call(t, e) : a ? a.value = e : i.set(t, e), e;
|
|
54
54
|
};
|
|
55
55
|
|
|
56
|
-
var d,
|
|
56
|
+
var d, f, p, u, m, b, w, g, y, k, v, M, W, C, x, j, I, S, E, F, T, $, _, P, z, D, L, N;
|
|
57
57
|
|
|
58
|
-
const
|
|
58
|
+
const A = [ "resets/box-sizing", "components/button", "components/edit", "components/icon", "components/tooltip", "components/list-box", "utils/form", "utils/layout", "utils/spacing", "utils/typography" ];
|
|
59
59
|
|
|
60
|
-
const
|
|
60
|
+
const B = class {
|
|
61
61
|
constructor(a) {
|
|
62
62
|
t(this, a);
|
|
63
63
|
this.cancel = i(this, "cancel", 7);
|
|
@@ -68,13 +68,13 @@ const A = class {
|
|
|
68
68
|
* The component hard-coded strings translations.
|
|
69
69
|
*/
|
|
70
70
|
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
f.set(this, void 0);
|
|
72
|
+
p.set(this, e(`./gx-ide-assets/new-object/shortcuts.json`));
|
|
73
73
|
/* References needed to collect data on "Create" button submit */ u.set(this, void 0);
|
|
74
74
|
m.set(this, void 0);
|
|
75
75
|
b.set(this, void 0);
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
w.set(this, false);
|
|
77
|
+
g.set(this, void 0);
|
|
78
78
|
y.set(this, void 0);
|
|
79
79
|
k.set(this, false);
|
|
80
80
|
// - - - - - - - - - - -
|
|
@@ -96,82 +96,118 @@ const A = class {
|
|
|
96
96
|
W.set(this, (async () => {
|
|
97
97
|
var t, i, e;
|
|
98
98
|
// validate name first
|
|
99
|
-
const s = await this.validateNameCallback(
|
|
99
|
+
const s = await this.validateNameCallback(r(this, y, "f").value);
|
|
100
100
|
if (!!s) {
|
|
101
101
|
// name is invalid
|
|
102
|
-
|
|
102
|
+
r(this, N, "f").call(this, s);
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
105
|
const a = {
|
|
106
106
|
typeId: (t = this.selectedType) === null || t === void 0 ? void 0 : t.id,
|
|
107
|
-
name:
|
|
108
|
-
description: !
|
|
109
|
-
moduleId: (e = (i =
|
|
107
|
+
name: r(this, y, "f").value,
|
|
108
|
+
description: !r(this, w, "f") ? undefined : r(this, b, "f").value,
|
|
109
|
+
moduleId: (e = (i = r(this, g, "f")) === null || i === void 0 ? void 0 : i.value) === null || e === void 0 ? void 0 : e.id
|
|
110
110
|
};
|
|
111
111
|
const n = await this.createCallback(a);
|
|
112
|
-
|
|
112
|
+
r(this, N, "f").call(this, n);
|
|
113
113
|
}));
|
|
114
114
|
C.set(this, (() => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return
|
|
115
|
+
var t;
|
|
116
|
+
if (r(this, k, "f") || r(this, w, "f")) {
|
|
117
|
+
return r(this, b, "f").value;
|
|
118
118
|
} else {
|
|
119
|
+
// First try to get suggested description if callback exists
|
|
120
|
+
if (this.suggestDescriptionCallback) {
|
|
121
|
+
return (t = this.description) !== null && t !== void 0 ? t : this.selectedType.name;
|
|
122
|
+
}
|
|
119
123
|
return this.selectedType.name;
|
|
120
124
|
}
|
|
121
125
|
}));
|
|
122
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Gets the suggested name based on the context
|
|
128
|
+
* @param selectedType The currently selected type
|
|
129
|
+
*/
|
|
130
|
+
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
131
|
+
x.set(this, (async t => {
|
|
132
|
+
if (this.suggestNameCallback) {
|
|
133
|
+
const t = await this.suggestNameCallback();
|
|
134
|
+
if (t) {
|
|
135
|
+
return t.replace(/\s/g, "");
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return t.name.replace(/\s/g, "");
|
|
139
|
+
}));
|
|
140
|
+
/**
|
|
141
|
+
* Gets the suggested description based on the context
|
|
142
|
+
* @param selectedType The currently selected type
|
|
143
|
+
*/
|
|
144
|
+
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
145
|
+
j.set(this, (async t => {
|
|
146
|
+
if (this.suggestDescriptionCallback) {
|
|
147
|
+
const t = await this.suggestDescriptionCallback();
|
|
148
|
+
if (t) {
|
|
149
|
+
return t;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return t.name;
|
|
153
|
+
}));
|
|
154
|
+
/**
|
|
155
|
+
* Updates both name and description suggestions
|
|
156
|
+
*/
|
|
157
|
+
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
158
|
+
I.set(this, (async () => {
|
|
159
|
+
if (!this.selectedType) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (!r(this, k, "f")) {
|
|
163
|
+
this.name = await r(this, x, "f").call(this, this.selectedType);
|
|
164
|
+
}
|
|
165
|
+
if (!r(this, w, "f")) {
|
|
166
|
+
this.description = await r(this, j, "f").call(this, this.selectedType);
|
|
167
|
+
}
|
|
168
|
+
}));
|
|
123
169
|
/**
|
|
124
170
|
* This method defines the initial selected category and type, and it then
|
|
125
|
-
* initializes the name
|
|
171
|
+
* initializes the name and description values.
|
|
126
172
|
*/
|
|
127
173
|
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
128
|
-
|
|
129
|
-
const t =
|
|
174
|
+
S.set(this, (async () => {
|
|
175
|
+
const t = r(this, z, "f").call(this, this.defaultTypeId);
|
|
130
176
|
if (!t) {
|
|
131
177
|
this.selectedCategory = this.typeCategories[0];
|
|
132
178
|
this.selectedType = this.selectedCategory.types[0];
|
|
133
179
|
}
|
|
134
|
-
|
|
135
|
-
this.name = h(this, x, "f").call(this, this.selectedType);
|
|
136
|
-
this.description = this.selectedType.name;
|
|
137
|
-
}
|
|
180
|
+
await r(this, I, "f").call(this);
|
|
138
181
|
}));
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
} else {
|
|
143
|
-
return h(this, x, "f").call(this, this.selectedType);
|
|
144
|
-
}
|
|
182
|
+
F.set(this, (async () => {
|
|
183
|
+
const t = await this.validateNameCallback(r(this, y, "f").value);
|
|
184
|
+
r(this, N, "f").call(this, t);
|
|
145
185
|
}));
|
|
146
|
-
|
|
147
|
-
const t = await this.validateNameCallback(h(this, y, "f").value);
|
|
148
|
-
h(this, L, "f").call(this, t);
|
|
149
|
-
}));
|
|
150
|
-
F.set(this, (t => {
|
|
186
|
+
T.set(this, (t => {
|
|
151
187
|
this.description = t.detail;
|
|
152
|
-
c(this,
|
|
188
|
+
c(this, w, true, "f");
|
|
153
189
|
}));
|
|
154
|
-
|
|
190
|
+
$.set(this, (async t => {
|
|
155
191
|
const i = t.detail;
|
|
156
|
-
if (!
|
|
192
|
+
if (!r(this, w, "f")) {
|
|
157
193
|
// Description should be equal to name, unless the description was already
|
|
158
194
|
// modified by the user.
|
|
159
|
-
|
|
195
|
+
r(this, b, "f").value = i;
|
|
160
196
|
}
|
|
161
197
|
c(this, k, true, "f");
|
|
162
198
|
}));
|
|
163
|
-
|
|
199
|
+
_.set(this, (async t => {
|
|
164
200
|
const i = t.detail;
|
|
165
201
|
const e = await this.validateNameCallback(i);
|
|
166
|
-
|
|
202
|
+
r(this, N, "f").call(this, e);
|
|
167
203
|
}));
|
|
168
|
-
|
|
204
|
+
P.set(this, (() => {
|
|
169
205
|
if (this.selectedType.hasModule || this.selectedType.hasFolder) {
|
|
170
|
-
let t =
|
|
206
|
+
let t = r(this, f, "f").moduleFolder;
|
|
171
207
|
if (!this.selectedType.hasFolder) {
|
|
172
|
-
t =
|
|
208
|
+
t = r(this, f, "f").moduleOnly;
|
|
173
209
|
} else if (!this.selectedType.hasModule) {
|
|
174
|
-
t =
|
|
210
|
+
t = r(this, f, "f").folderOnly;
|
|
175
211
|
}
|
|
176
212
|
return [ s("label", {
|
|
177
213
|
// Module/folder
|
|
@@ -185,12 +221,12 @@ const A = class {
|
|
|
185
221
|
value: this.parent,
|
|
186
222
|
defaultValue: this.defaultParent,
|
|
187
223
|
selectEntityCallback: this.selectModuleCallback,
|
|
188
|
-
ref: t => c(this,
|
|
224
|
+
ref: t => c(this, g, t, "f")
|
|
189
225
|
}) ];
|
|
190
226
|
}
|
|
191
227
|
return null;
|
|
192
228
|
}));
|
|
193
|
-
|
|
229
|
+
z.set(this, (t => {
|
|
194
230
|
if (!t) {
|
|
195
231
|
return false;
|
|
196
232
|
}
|
|
@@ -208,35 +244,30 @@ const A = class {
|
|
|
208
244
|
}
|
|
209
245
|
return i;
|
|
210
246
|
}));
|
|
211
|
-
|
|
247
|
+
D.set(this, (() => {
|
|
212
248
|
if (this.selectedCategory) {
|
|
213
249
|
// update model by setting the selected category
|
|
214
|
-
|
|
250
|
+
r(this, u, "f").updateItemProperties(this.selectedCategory.id, {
|
|
215
251
|
selected: true,
|
|
216
252
|
type: "actionable"
|
|
217
253
|
});
|
|
218
254
|
}
|
|
219
255
|
}));
|
|
220
|
-
|
|
256
|
+
L.set(this, (async t => {
|
|
221
257
|
const i = t.detail;
|
|
222
258
|
if (i.length > 0) {
|
|
223
259
|
this.selectedType = this.selectedCategory.types.find((t => t.id === i[0].item.id));
|
|
224
260
|
this.selectedTypeMap.set(this.selectedCategory.id, this.selectedType.id);
|
|
261
|
+
await r(this, I, "f").call(this);
|
|
225
262
|
}
|
|
226
263
|
}));
|
|
227
|
-
// #validateInitialName = async () => {
|
|
228
|
-
// const result: string | undefined = await this.validateNameCallback(
|
|
229
|
-
// this.name
|
|
230
|
-
// );
|
|
231
|
-
// this.#validateNameHandler(result);
|
|
232
|
-
// };
|
|
233
264
|
/**
|
|
234
265
|
* If the parameter is undefined, it means the name is valid. Otherwise, if it
|
|
235
266
|
* receives a string, it indicates that the name is not valid. The string is the
|
|
236
267
|
* error message to display.
|
|
237
268
|
*/
|
|
238
269
|
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
239
|
-
|
|
270
|
+
N.set(this, (t => {
|
|
240
271
|
this.nameValidationErrorMessage = t;
|
|
241
272
|
}));
|
|
242
273
|
this.description = undefined;
|
|
@@ -257,6 +288,8 @@ const A = class {
|
|
|
257
288
|
this.parent = undefined;
|
|
258
289
|
this.selectModuleCallback = undefined;
|
|
259
290
|
this.validateNameCallback = undefined;
|
|
291
|
+
this.suggestNameCallback = undefined;
|
|
292
|
+
this.suggestDescriptionCallback = undefined;
|
|
260
293
|
}
|
|
261
294
|
typeCategoriesChanged(t) {
|
|
262
295
|
if (t === null || t === void 0 ? void 0 : t.length) {
|
|
@@ -267,21 +300,21 @@ const A = class {
|
|
|
267
300
|
// this.#validateInitialName();
|
|
268
301
|
}
|
|
269
302
|
async componentWillLoad() {
|
|
270
|
-
|
|
271
|
-
c(this,
|
|
303
|
+
await r(this, S, "f").call(this);
|
|
304
|
+
c(this, f, await h.getComponentStrings(this.el), "f");
|
|
272
305
|
this.typeCategoriesChanged(this.typeCategories);
|
|
273
|
-
|
|
306
|
+
r(this, d, "m", E).call(this);
|
|
274
307
|
}
|
|
275
308
|
componentDidLoad() {
|
|
276
|
-
|
|
309
|
+
r(this, D, "f").call(this);
|
|
277
310
|
}
|
|
278
311
|
/**
|
|
279
312
|
* Suspends or reactivates the shortcuts
|
|
280
313
|
*/ async suspendShortcuts(t) {
|
|
281
314
|
if (t) {
|
|
282
|
-
|
|
315
|
+
r(this, m, "f").suspend = true;
|
|
283
316
|
} else {
|
|
284
|
-
|
|
317
|
+
r(this, m, "f").suspend = false;
|
|
285
318
|
}
|
|
286
319
|
}
|
|
287
320
|
render() {
|
|
@@ -289,9 +322,9 @@ const A = class {
|
|
|
289
322
|
return s(a, {
|
|
290
323
|
class: "widget"
|
|
291
324
|
}, s("ch-theme", {
|
|
292
|
-
model:
|
|
325
|
+
model: A
|
|
293
326
|
}), s("ch-shortcuts", {
|
|
294
|
-
src:
|
|
327
|
+
src: r(this, p, "f"),
|
|
295
328
|
ref: t => c(this, m, t, "f")
|
|
296
329
|
}), s("section", {
|
|
297
330
|
class: "main"
|
|
@@ -301,27 +334,27 @@ const A = class {
|
|
|
301
334
|
class: "field field-block"
|
|
302
335
|
}, s("label", {
|
|
303
336
|
class: "label"
|
|
304
|
-
},
|
|
337
|
+
}, r(this, f, "f").categorySelectionTitle), s("ch-action-list-render", {
|
|
305
338
|
// #select a category
|
|
306
339
|
// TODO: The "scrollable" class is a WA since the action-list currently does not support scrollbar customization
|
|
307
340
|
class: "list-box",
|
|
308
341
|
selection: "single",
|
|
309
342
|
model: this.typeCategoriesActionListModel,
|
|
310
343
|
sortItemsCallback: sortActionListDefault,
|
|
311
|
-
onSelectedItemsChange:
|
|
344
|
+
onSelectedItemsChange: r(this, M, "f"),
|
|
312
345
|
ref: t => c(this, u, t, "f")
|
|
313
346
|
})), s("div", {
|
|
314
347
|
class: "field field-block"
|
|
315
348
|
}, s("label", {
|
|
316
349
|
class: "label"
|
|
317
|
-
}, this.selectedCategory.name ? `${this.selectedCategory.name} ${
|
|
350
|
+
}, this.selectedCategory.name ? `${this.selectedCategory.name} ${r(this, f, "f").typeSelectionTitleSuffix}` : r(this, f, "f").typeSelectionTitle), s("ch-action-list-render", {
|
|
318
351
|
// #data management types
|
|
319
352
|
// TODO: The "scrollable" class is a WA since the action-list currently does not support scrollbar customization
|
|
320
353
|
class: "list-box",
|
|
321
354
|
selection: "single",
|
|
322
355
|
sortItemsCallback: sortActionListDefault,
|
|
323
356
|
model: mapTypeDataToActionListModel(this.selectedCategory.types, this.selectedCategory.id, this.selectedType.id),
|
|
324
|
-
onSelectedItemsChange:
|
|
357
|
+
onSelectedItemsChange: r(this, L, "f")
|
|
325
358
|
}))), s("section", {
|
|
326
359
|
class: "api-description-layout field-group spacing-body-inline"
|
|
327
360
|
}, s("h2", {
|
|
@@ -331,7 +364,7 @@ const A = class {
|
|
|
331
364
|
// Name
|
|
332
365
|
class: "label api-name-label",
|
|
333
366
|
htmlFor: "name"
|
|
334
|
-
},
|
|
367
|
+
}, r(this, f, "f").objectName), s("div", null, s("ch-edit", {
|
|
335
368
|
autoFocus: true,
|
|
336
369
|
class: {
|
|
337
370
|
input: true,
|
|
@@ -339,15 +372,15 @@ const A = class {
|
|
|
339
372
|
"input-error": !!this.nameValidationErrorMessage
|
|
340
373
|
},
|
|
341
374
|
placeholder: "Name",
|
|
342
|
-
value:
|
|
375
|
+
value: this.name,
|
|
343
376
|
ref: t => c(this, y, t, "f"),
|
|
344
|
-
onChange:
|
|
345
|
-
onInput:
|
|
346
|
-
onBlur:
|
|
377
|
+
onChange: r(this, _, "f"),
|
|
378
|
+
onInput: r(this, $, "f"),
|
|
379
|
+
onBlur: r(this, F, "f"),
|
|
347
380
|
part: "name"
|
|
348
381
|
}), this.nameValidationErrorMessage && s("ch-tooltip", {
|
|
349
382
|
class: "tooltip",
|
|
350
|
-
actionElement:
|
|
383
|
+
actionElement: r(this, y, "f"),
|
|
351
384
|
blockAlign: o.tooltipSettings.blockAlign,
|
|
352
385
|
inlineAlign: o.tooltipSettings.inlineAlign,
|
|
353
386
|
delay: o.tooltipSettings.delay
|
|
@@ -355,31 +388,31 @@ const A = class {
|
|
|
355
388
|
// Description
|
|
356
389
|
class: "label api-description-label",
|
|
357
390
|
htmlFor: "description"
|
|
358
|
-
},
|
|
391
|
+
}, r(this, f, "f").objectDescription), s("ch-edit", {
|
|
359
392
|
autoFocus: true,
|
|
360
393
|
class: "input api-description-control",
|
|
361
394
|
placeholder: "Description",
|
|
362
|
-
value:
|
|
395
|
+
value: r(this, C, "f").call(this),
|
|
363
396
|
// TODO: toolTip={config.tooltip}
|
|
364
397
|
ref: t => c(this, b, t, "f"),
|
|
365
|
-
onInput:
|
|
398
|
+
onInput: r(this, T, "f"),
|
|
366
399
|
part: "description"
|
|
367
|
-
}),
|
|
400
|
+
}), r(this, P, "f").call(this)), s("footer", {
|
|
368
401
|
class: "footer control-footer-with-border spacing-body-inline spacing-body-block-end "
|
|
369
402
|
}, s("div", {
|
|
370
403
|
class: "buttons-spacer"
|
|
371
404
|
}, s("button", {
|
|
372
405
|
// cancel
|
|
373
406
|
class: "button-secondary",
|
|
374
|
-
onClick:
|
|
407
|
+
onClick: r(this, v, "f"),
|
|
375
408
|
part: "button button-cancel"
|
|
376
|
-
},
|
|
409
|
+
}, r(this, f, "f").footer.btnCancel), s("button", {
|
|
377
410
|
// create
|
|
378
411
|
class: "button-primary",
|
|
379
|
-
onClick:
|
|
412
|
+
onClick: r(this, W, "f"),
|
|
380
413
|
disabled: !!this.nameValidationErrorMessage,
|
|
381
414
|
part: "button button-create"
|
|
382
|
-
},
|
|
415
|
+
}, r(this, f, "f").footer.btnCreate)))));
|
|
383
416
|
}
|
|
384
417
|
static get delegatesFocus() {
|
|
385
418
|
return true;
|
|
@@ -397,12 +430,12 @@ const A = class {
|
|
|
397
430
|
}
|
|
398
431
|
};
|
|
399
432
|
|
|
400
|
-
|
|
401
|
-
|
|
433
|
+
f = new WeakMap, p = new WeakMap, u = new WeakMap, m = new WeakMap, b = new WeakMap,
|
|
434
|
+
w = new WeakMap, g = new WeakMap, y = new WeakMap, k = new WeakMap, v = new WeakMap,
|
|
402
435
|
M = new WeakMap, W = new WeakMap, C = new WeakMap, x = new WeakMap, j = new WeakMap,
|
|
403
|
-
|
|
436
|
+
I = new WeakMap, S = new WeakMap, F = new WeakMap, T = new WeakMap, $ = new WeakMap,
|
|
404
437
|
_ = new WeakMap, P = new WeakMap, z = new WeakMap, D = new WeakMap, L = new WeakMap,
|
|
405
|
-
d = new WeakSet,
|
|
438
|
+
N = new WeakMap, d = new WeakSet, E = function _GxIdeNewObject_initializeSelectedTypeMap() {
|
|
406
439
|
this.typeCategories.forEach((t => {
|
|
407
440
|
if (this.defaultTypeId && t.id === this.selectedCategory.id) {
|
|
408
441
|
this.selectedTypeMap.set(t.id, this.selectedType.id);
|
|
@@ -412,7 +445,7 @@ d = new WeakSet, I = function _GxIdeNewObject_initializeSelectedTypeMap() {
|
|
|
412
445
|
}));
|
|
413
446
|
};
|
|
414
447
|
|
|
415
|
-
|
|
448
|
+
B.style = l;
|
|
416
449
|
|
|
417
|
-
export {
|
|
418
|
-
//# sourceMappingURL=p-
|
|
450
|
+
export { B as gx_ide_new_object };
|
|
451
|
+
//# sourceMappingURL=p-6830b540.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mapTypeCategoryDataToActionListModel","categories","map","category","id","type","additionalInformation","center","imgSrc","icon","undefined","caption","name","part","mapTypeDataToActionListModel","types","selectedCategoryId","selectedTypeId","imageSrc","selected","sortActionListDefault","subModel","newObjectCss","CSS_BUNDLES","GxIdeNewObject","_GxIdeNewObject_componentLocale","set","this","_GxIdeNewObject_shortcutsSrc","getAssetPath","_GxIdeNewObject_categoriesActionListEl","_GxIdeNewObject_chShortcutsEl","_GxIdeNewObject_descriptionEl","_GxIdeNewObject_descriptionModifiedByUser","_GxIdeNewObject_moduleFolderEl","_GxIdeNewObject_nameEl","_GxIdeNewObject_nameModifiedByUser","_GxIdeNewObject_cancelCallbackHandler","async","cancelCallback","_GxIdeNewObject_categoryOnSelectionChangedHandler","selectionEvent","selection","detail","length","selectedCategory","typeCategories","find","item","selectedType","selectedTypeMap","get","_GxIdeNewObject_createCallbackHandler","nameValidation","validateNameCallback","__classPrivateFieldGet","value","_GxIdeNewObject_validateNameHandler","call","data","typeId","_a","description","moduleId","_c","_b","result","createCallback","_GxIdeNewObject_descriptionValueHandler","suggestDescriptionCallback","_GxIdeNewObject_getNameSuggestion","suggestNameCallback","suggestedName","replace","_GxIdeNewObject_getDescriptionSuggestion","suggestedDescription","_GxIdeNewObject_updateSuggestions","_GxIdeNewObject_init","defaultTypeFound","_GxIdeNewObject_setDefaultType","defaultTypeId","_GxIdeNewObject_onBlurNameHandler","_GxIdeNewObject_onInputDescriptionHandler","e","__classPrivateFieldSet","_GxIdeNewObject_onInputNameHandler","_GxIdeNewObject_onNameValueChangedHandler","_GxIdeNewObject_renderModuleFolder","hasModule","hasFolder","labelDescription","moduleFolder","moduleOnly","folderOnly","h","class","htmlFor","labelPosition","parent","defaultValue","defaultParent","selectEntityCallback","selectModuleCallback","ref","el","found","outerLoop","i","j","loopTypeId","_GxIdeNewObject_setSelectedCategoryOnActionList","updateItemProperties","_GxIdeNewObject_typeChangedHandler","nameValidationErrorMessage","Map","typeCategoriesChanged","newValue","typeCategoriesActionListModel","connectedCallback","componentWillLoad","Locale","getComponentStrings","_GxIdeNewObject_instances","_GxIdeNewObject_initializeSelectedTypeMap","componentDidLoad","suspendShortcuts","suspend","render","Host","model","src","categorySelectionTitle","sortItemsCallback","onSelectedItemsChange","typeSelectionTitleSuffix","typeSelectionTitle","objectName","autoFocus","input","placeholder","onChange","onInput","onBlur","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","objectDescription","onClick","footer","btnCancel","disabled","btnCreate","forEach"],"sources":["src/components/new-object/helpers.tsx","src/common/chameleon-helpers.ts","src/components/new-object/new-object.scss?tag=gx-ide-new-object&encapsulation=shadow","src/components/new-object/new-object.tsx"],"sourcesContent":["import { ActionListModel } from \"@genexus/chameleon-controls-library\";\nimport { TypeCategoryData } from \"../..\";\nimport { TypeData } from \"./new-object\";\n\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nexport const mapTypeCategoryDataToActionListModel = (\n categories: TypeCategoryData[]\n): ActionListModel => {\n return categories.map(category => {\n return {\n id: category.id,\n type: \"actionable\",\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: category.icon || undefined }]\n }\n },\n caption: category.name,\n part: `category-${category.id}`\n };\n });\n};\n\nexport const mapTypeDataToActionListModel = (\n types: TypeData[],\n selectedCategoryId: string,\n selectedTypeId?: string\n): ActionListModel => {\n return types.map(type => {\n return {\n id: `${type.id}`,\n type: \"actionable\",\n imageSrc: \"objects/design\",\n selected: selectedTypeId === type.id,\n additionalInformation: {\n \"stretch-start\": {\n center: [{ imgSrc: type.icon }]\n }\n },\n caption: type.name,\n part: `type-${selectedCategoryId}-${type.id}`\n };\n });\n};\n","import { ActionListModel } from \"@genexus/chameleon-controls-library/dist/types/components/action-list/types\";\n\n/**\n * Order the items in the same order as they come.\n */\nexport const sortActionListDefault = (subModel: ActionListModel) => {\n return subModel;\n};\n",":host {\n display: grid;\n block-size: 100%;\n}\n\n.main {\n display: grid;\n grid-template-rows: 1fr max-content max-content;\n}\n.categories-types-layout {\n grid-template-columns: 1fr 1fr;\n}\n.api-description-layout {\n padding-block: calc(\n var(--content-block-spacing) * 2\n ); // WA until we define a class for internal spacing.\n display: grid;\n grid-template:\n \"api-description-title api-description-title\"\n \"api-name-label api-name-control\"\n \"api-description-label api-description-control\"\n \"api-module-label api-module-control\";\n grid-template-columns: max-content 1fr;\n}\n.api-description-title {\n grid-area: api-description-title;\n}\n.api-name-label {\n grid-area: api-name-label;\n}\n.api-name-control {\n grid-area: api-name-control;\n}\n.api-description-label {\n grid-area: api-description-label;\n}\n.api-description-control {\n grid-area: api-description-control;\n}\n.api-module-label {\n grid-area: api-module-label;\n}\n.api-module-control {\n grid-area: api-module-control;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport {\n ActionListItemModelExtended,\n ActionListModel\n} from \"@genexus/chameleon-controls-library\";\nimport {\n mapTypeCategoryDataToActionListModel,\n mapTypeDataToActionListModel\n} from \"./helpers\";\n\nimport { sortActionListDefault } from \"../../common/chameleon-helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-new-object\",\n styleUrl: \"new-object.scss\",\n shadow: { delegatesFocus: true },\n assetsDirs: [\"gx-ide-assets/new-object\"]\n})\nexport class GxIdeNewObject {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeNewObjectElement;\n\n /* References needed to collect data on \"Create\" button submit */\n #categoriesActionListEl: HTMLChActionListRenderElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #descriptionModifiedByUser = false;\n #moduleFolderEl!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #nameModifiedByUser = false;\n\n /**\n * Description of the new object\n */\n @State() description: string = undefined;\n\n /**\n * Name of the new object\n */\n @State() name: string = undefined;\n @State() nameValidationErrorMessage: string;\n @State() selectedCategory: TypeCategoryData | null;\n @State() selectedType: TypeData | null;\n // representations of TypeCategoryData[] as ComboBoxModel.\n @State() typeCategoriesActionListModel: ActionListModel = [];\n @State() typesActionListModel: ActionListModel = [];\n\n @State() selectedTypeMap: Map<string, string> = new Map();\n\n /**\n * Allows you to define the type selected by default when instantiating the dialog.\n * Represented by the type identifier.\n */\n @Prop() readonly defaultTypeId: string;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when user wants to cancel object creation\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when user wants to confirm object creation\n */\n @Prop() readonly createCallback: CreateCallback;\n\n /**\n * Applies a shadow all around\n */\n @Prop() readonly shadow = false;\n\n /**\n * Array containing category list and its corresponding types\n */\n @Prop({ mutable: true }) typeCategories!: TypeCategoryData[];\n @Watch(\"typeCategories\")\n typeCategoriesChanged(newValue: TypeCategoryData[]) {\n if (newValue?.length) {\n this.typeCategoriesActionListModel = mapTypeCategoryDataToActionListModel(\n this.typeCategories\n );\n }\n }\n\n /**\n * Current value for Module/Folder\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter\n * (button '...'). It returns the information of the selected object (id and\n * name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when you must validate a name. Returns an error message or\n * 'undefined' if the name is not valid.\n */\n @Prop() readonly validateNameCallback: ValidateNameCallback;\n\n /**\n * Callback to suggest a name when creating an object from another object.\n * Returns the suggested name or undefined if not applicable.\n */\n @Prop() readonly suggestNameCallback?: SuggestNameCallback;\n\n /**\n * Callback to suggest a description when creating an object from another object.\n * Returns the suggested description or undefined if not applicable.\n */\n @Prop() readonly suggestDescriptionCallback?: SuggestDescriptionCallback;\n\n /**\n * This event emits the 'cancel' event\n */\n @Event() cancel: EventEmitter<boolean>;\n\n /**\n * This event emm=its the data needed to create a new object\n */\n @Event() create: EventEmitter<NewObjectData>;\n\n /**\n * This event is triggered after a validation of the object name is made.\n * Returns 'undefined' if it's valid, otherwise an error message.\n */\n @Event() validateName: EventEmitter<string | undefined>;\n\n connectedCallback() {\n // this.#validateInitialName();\n }\n\n async componentWillLoad() {\n await this.#init();\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.typeCategoriesChanged(this.typeCategories);\n this.#initializeSelectedTypeMap();\n }\n\n componentDidLoad() {\n this.#setSelectedCategoryOnActionList();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // - - - - - - - - - - -\n\n #cancelCallbackHandler = async (): Promise<void> => {\n await this.cancelCallback();\n };\n\n #categoryOnSelectionChangedHandler = (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n const selectedCategory = this.typeCategories.find(\n category => category.id === selection[0].item.id\n );\n if (selectedCategory) {\n this.selectedCategory = selectedCategory;\n if (selectedCategory.types.length > 0) {\n this.selectedType = selectedCategory.types.find(\n type => type.id === this.selectedTypeMap.get(selectedCategory.id)\n );\n }\n }\n }\n };\n\n #createCallbackHandler = async (): Promise<void> => {\n // validate name first\n const nameValidation: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n if (!!nameValidation) {\n // name is invalid\n this.#validateNameHandler(nameValidation);\n return;\n }\n\n const data: NewObjectData = {\n typeId: this.selectedType?.id,\n name: this.#nameEl.value,\n description: !this.#descriptionModifiedByUser\n ? undefined\n : this.#descriptionEl.value,\n moduleId: this.#moduleFolderEl?.value?.id\n };\n const result = await this.createCallback(data);\n this.#validateNameHandler(result);\n };\n\n #descriptionValueHandler = () => {\n if (this.#nameModifiedByUser || this.#descriptionModifiedByUser) {\n return this.#descriptionEl.value;\n } else {\n // First try to get suggested description if callback exists\n if (this.suggestDescriptionCallback) {\n return this.description ?? this.selectedType.name;\n }\n return this.selectedType.name;\n }\n };\n\n /**\n * Gets the suggested name based on the context\n * @param selectedType The currently selected type\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #getNameSuggestion = async (selectedType: TypeData) => {\n if (this.suggestNameCallback) {\n const suggestedName = await this.suggestNameCallback();\n if (suggestedName) {\n return suggestedName.replace(/\\s/g, \"\");\n }\n }\n return selectedType.name.replace(/\\s/g, \"\");\n };\n\n /**\n * Gets the suggested description based on the context\n * @param selectedType The currently selected type\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #getDescriptionSuggestion = async (selectedType: TypeData) => {\n if (this.suggestDescriptionCallback) {\n const suggestedDescription = await this.suggestDescriptionCallback();\n if (suggestedDescription) {\n return suggestedDescription;\n }\n }\n return selectedType.name;\n };\n\n /**\n * Updates both name and description suggestions\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateSuggestions = async () => {\n if (!this.selectedType) {\n return;\n }\n\n if (!this.#nameModifiedByUser) {\n this.name = await this.#getNameSuggestion(this.selectedType);\n }\n\n if (!this.#descriptionModifiedByUser) {\n this.description = await this.#getDescriptionSuggestion(\n this.selectedType\n );\n }\n };\n\n /**\n * This method defines the initial selected category and type, and it then\n * initializes the name and description values.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #init = async () => {\n const defaultTypeFound = this.#setDefaultType(this.defaultTypeId);\n if (!defaultTypeFound) {\n this.selectedCategory = this.typeCategories[0];\n this.selectedType = this.selectedCategory.types[0];\n }\n\n await this.#updateSuggestions();\n };\n\n /**\n * Initializes the selectedTypeMap with the defaultTypeId if it exists, otherwise\n * it initializes the selectedTypeMap with the first type of each category.\n */\n // eslint-disable-next-line @stencil-community/own-methods-must-be-private\n #initializeSelectedTypeMap() {\n this.typeCategories.forEach(category => {\n if (this.defaultTypeId && category.id === this.selectedCategory.id) {\n this.selectedTypeMap.set(category.id, this.selectedType.id);\n } else {\n this.selectedTypeMap.set(category.id, category.types[0].id);\n }\n });\n }\n\n #onBlurNameHandler = async () => {\n const result: string | undefined = await this.validateNameCallback(\n this.#nameEl.value\n );\n this.#validateNameHandler(result);\n };\n\n #onInputDescriptionHandler = (e: CustomEvent<string>) => {\n this.description = e.detail;\n this.#descriptionModifiedByUser = true;\n };\n\n #onInputNameHandler = async (e: CustomEvent<any> | InputEvent) => {\n const name = e.detail;\n if (!this.#descriptionModifiedByUser) {\n // Description should be equal to name, unless the description was already\n // modified by the user.\n this.#descriptionEl.value = name;\n }\n this.#nameModifiedByUser = true;\n };\n\n #onNameValueChangedHandler = async (e: CustomEvent<string>) => {\n const name = e.detail;\n const result: string | undefined = await this.validateNameCallback(name);\n this.#validateNameHandler(result);\n };\n\n #renderModuleFolder = () => {\n if (this.selectedType.hasModule || this.selectedType.hasFolder) {\n let labelDescription = this.#componentLocale.moduleFolder;\n if (!this.selectedType.hasFolder) {\n labelDescription = this.#componentLocale.moduleOnly;\n } else if (!this.selectedType.hasModule) {\n labelDescription = this.#componentLocale.folderOnly;\n }\n return [\n <label\n // Module/folder\n class=\"label api-module-label\"\n htmlFor=\"module\"\n >\n {labelDescription}\n </label>,\n <gx-ide-entity-selector\n id=\"module\"\n class=\"api-module-control\"\n part=\"module\"\n labelPosition=\"none\"\n value={this.parent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleFolderEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n ];\n }\n return null;\n };\n\n #setDefaultType = (typeId: string | undefined): boolean => {\n if (!typeId) {\n return false;\n }\n let found = false;\n outerLoop: for (let i = 0; i < this.typeCategories.length; i++) {\n for (let j = 0; j < this.typeCategories[i].types.length; j++) {\n const loopTypeId = this.typeCategories[i].types[j].id;\n if (loopTypeId === typeId) {\n this.selectedCategory = this.typeCategories[i];\n this.selectedType = this.typeCategories[i].types[j];\n found = true;\n break outerLoop;\n }\n }\n }\n return found;\n };\n\n #setSelectedCategoryOnActionList = () => {\n if (this.selectedCategory) {\n // update model by setting the selected category\n this.#categoriesActionListEl.updateItemProperties(\n this.selectedCategory.id,\n {\n selected: true,\n type: \"actionable\"\n }\n );\n }\n };\n\n #typeChangedHandler = async (\n selectionEvent: CustomEvent<ActionListItemModelExtended[]>\n ) => {\n const selection = selectionEvent.detail;\n if (selection.length > 0) {\n this.selectedType = this.selectedCategory.types.find(\n type => type.id === selection[0].item.id\n );\n this.selectedTypeMap.set(this.selectedCategory.id, this.selectedType.id);\n\n await this.#updateSuggestions();\n }\n };\n\n /**\n * If the parameter is undefined, it means the name is valid. Otherwise, if it\n * receives a string, it indicates that the name is not valid. The string is the\n * error message to display.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #validateNameHandler = (result: string | undefined): void => {\n this.nameValidationErrorMessage = result;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"main\">\n <section class=\"field-group categories-types-layout spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#componentLocale.categorySelectionTitle}\n </label>\n <ch-action-list-render\n // #select a category\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n model={this.typeCategoriesActionListModel}\n sortItemsCallback={sortActionListDefault}\n onSelectedItemsChange={this.#categoryOnSelectionChangedHandler}\n ref={(el: HTMLChActionListRenderElement) =>\n (this.#categoriesActionListEl =\n el as HTMLChActionListRenderElement)\n }\n ></ch-action-list-render>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.selectedCategory.name\n ? `${this.selectedCategory.name} ${\n this.#componentLocale.typeSelectionTitleSuffix\n }`\n : this.#componentLocale.typeSelectionTitle}\n </label>\n <ch-action-list-render\n // #data management types\n // TODO: The \"scrollable\" class is a WA since the action-list currently does not support scrollbar customization\n class=\"list-box\"\n selection=\"single\"\n sortItemsCallback={sortActionListDefault}\n model={mapTypeDataToActionListModel(\n this.selectedCategory.types,\n this.selectedCategory.id,\n this.selectedType.id\n )}\n onSelectedItemsChange={this.#typeChangedHandler}\n ></ch-action-list-render>\n </div>\n </section>\n\n <section class=\"api-description-layout field-group spacing-body-inline\">\n <h2\n // API Description\n class=\"text-align-center api-description-title subtitle-regular-xs\t\"\n >\n {this.selectedType?.description}\n </h2>\n\n <label\n // Name\n class=\"label api-name-label\"\n htmlFor=\"name\"\n >\n {this.#componentLocale.objectName}\n </label>\n <div>\n <ch-edit\n autoFocus\n class={{\n \"input\": true,\n \"api-name-control\": true,\n \"input-error\": !!this.nameValidationErrorMessage\n }}\n placeholder=\"Name\"\n value={this.name}\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onChange={this.#onNameValueChangedHandler}\n onInput={this.#onInputNameHandler as any}\n onBlur={this.#onBlurNameHandler}\n part=\"name\"\n ></ch-edit>\n {this.nameValidationErrorMessage && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={this.#nameEl as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.nameValidationErrorMessage}\n </ch-tooltip>\n )}\n </div>\n\n <label\n // Description\n class=\"label api-description-label\"\n htmlFor=\"description\"\n >\n {this.#componentLocale.objectDescription}\n </label>\n <ch-edit\n autoFocus\n class=\"input api-description-control\"\n placeholder=\"Description\"\n value={this.#descriptionValueHandler()}\n // TODO: toolTip={config.tooltip}\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n onInput={this.#onInputDescriptionHandler as any}\n part=\"description\"\n ></ch-edit>\n\n {this.#renderModuleFolder()}\n </section>\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end \">\n <div class=\"buttons-spacer\">\n <button\n // cancel\n class=\"button-secondary\"\n onClick={this.#cancelCallbackHandler}\n part=\"button button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n\n <button\n // create\n class=\"button-primary\"\n onClick={this.#createCallbackHandler}\n disabled={!!this.nameValidationErrorMessage}\n part=\"button button-create\"\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport interface NewObjectData {\n typeId: string;\n name: string;\n description: string | undefined;\n moduleId: string;\n}\n\nexport type ValidateNameCallback = (\n name: string\n) => Promise<string | undefined>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type CreateCallback = (\n data: NewObjectData\n) => Promise<string | undefined>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type TypeCategoryData = {\n id: string;\n name: string;\n icon: string;\n types: TypeData[];\n};\n\nexport type TypeData = {\n id: string;\n name: string;\n icon: string;\n hasModule: boolean;\n hasFolder: boolean;\n description: string;\n};\n\nexport type SuggestNameCallback = () => Promise<string | undefined>;\nexport type SuggestDescriptionCallback = () => Promise<string | undefined>;\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as e, c as r, h as a, H as i } from "./p-2cf37639.js";
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const t = ".loader__wrapper{position:absolute;border:none;opacity:0;transition:var(--show-transition) opacity;inline-size:100%;block-size:100%;display:flex;background-color:var(--elevation-background-color, var(--mer-surface));backdrop-filter:var(--gxg-ide-loader-wrapper__backdrop-filter);padding:var(--gxg-ide-loader-wrapper__padding);flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;color:var(--mer-text__on-elevation);z-index:99;animation:fadeIn var(--mer-timing--fast) forwards}.loader__wrapper--visible{opacity:1}.loader__spinner{border:var(--gxg-ide-loader-spinner__border);border-block-start:var(--gxg-ide-loader-spinner__border-top);border-radius:50%;animation:spinner 0.6s infinite linear;inline-size:var(--gxg-ide-loader-spinner__width);block-size:var(--gxg-ide-loader-spinner__width);flex-shrink:0;opacity:1}.loader__content-wrapper{display:flex;text-align:center;flex-direction:column;margin-block-start:var(--gxg-ide-loader-content-wrapper__mbs);gap:var(--mer-spacing--xs);max-block-size:var(--gxg-ide-loader-content-wrapper__max-width);opacity:1}.loader__content-wrapper--hidden{display:none}.loader__cancel-button{margin-block-start:var(--mer-spacing--xs)}@keyframes wrapper{0%{background-color:var(--gxg-ide-loader-wrapper__background-color--from)}100%{background-color:var(--gxg-ide-loader-wrapper__background-color--to)}}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}:host([display-border]) .loader__wrapper{border:1px solid var(--mer-color__elevation--02)}@keyframes fadeIn{0%{opacity:0}}";
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var o = undefined && undefined.__classPrivateFieldGet || function(e, r, a, i) {
|
|
6
6
|
if (a === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
|
|
7
7
|
if (typeof r === "function" ? e !== r || !i : !r.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
8
8
|
return a === "m" ? i : a === "a" ? i.call(e) : i ? i.value : r.get(e);
|
|
@@ -21,13 +21,13 @@ const h = class {
|
|
|
21
21
|
if (this.cancelCallback) {
|
|
22
22
|
this.cancelCallback();
|
|
23
23
|
}
|
|
24
|
-
clearTimeout(
|
|
24
|
+
clearTimeout(o(this, n, "f"));
|
|
25
25
|
this.show = false;
|
|
26
26
|
}));
|
|
27
27
|
d.set(this, (() => this.cancelLabel && a("div", null, a("button", {
|
|
28
28
|
class: "button-secondary loader__cancel-button",
|
|
29
29
|
type: "button",
|
|
30
|
-
onClick:
|
|
30
|
+
onClick: o(this, s, "f")
|
|
31
31
|
}, this.cancelLabel))));
|
|
32
32
|
l.set(this, (() => this.description && a("p", {
|
|
33
33
|
class: "body-regular-italic-s"
|
|
@@ -61,13 +61,13 @@ const h = class {
|
|
|
61
61
|
"loader__content-wrapper": true,
|
|
62
62
|
"loader__content-wrapper--hidden": !this.description && !this.loaderTitle && !this.cancelLabel
|
|
63
63
|
}
|
|
64
|
-
},
|
|
64
|
+
}, o(this, p, "f").call(this), o(this, l, "f").call(this), o(this, d, "f").call(this))));
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
n = new WeakMap, s = new WeakMap, d = new WeakMap, l = new WeakMap, p = new WeakMap;
|
|
69
69
|
|
|
70
|
-
h.style =
|
|
70
|
+
h.style = t;
|
|
71
71
|
|
|
72
72
|
export { h as gx_ide_loader };
|
|
73
|
-
//# sourceMappingURL=p-
|
|
73
|
+
//# sourceMappingURL=p-e9f77ad0.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ideLoaderCss","CSS_BUNDLES","IdeLoader","_IdeLoader_timeoutReference","set","this","_IdeLoader_cancelProcess","cancelCallback","clearTimeout","__classPrivateFieldGet","show","_IdeLoader_renderCancelButton","cancelLabel","h","class","type","onClick","_IdeLoader_renderDescription","description","_IdeLoader_renderTitle","loaderTitle","render","Host","model","showWrapper","part","popover","call"],"sources":["src/components/_helpers/ide-loader/ide-loader.scss?tag=gx-ide-loader&encapsulation=shadow","src/components/_helpers/ide-loader/ide-loader.tsx"],"sourcesContent":[".loader {\n &__wrapper {\n position: absolute;\n border: none;\n opacity: 0;\n transition: var(--show-transition) opacity;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n background-color: var(--elevation-background-color, var(--mer-surface));\n backdrop-filter: var(--gxg-ide-loader-wrapper__backdrop-filter);\n padding: var(--gxg-ide-loader-wrapper__padding);\n flex-direction: column;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n color: var(--mer-text__on-elevation);\n z-index: 99; // WA to prevent tree-view chevron arrow to appear above.\n animation: fadeIn var(--mer-timing--fast) forwards;\n\n &--visible {\n opacity: 1;\n }\n }\n &__spinner {\n border: var(--gxg-ide-loader-spinner__border);\n border-block-start: var(--gxg-ide-loader-spinner__border-top);\n border-radius: 50%;\n animation: spinner 0.6s infinite linear;\n inline-size: var(--gxg-ide-loader-spinner__width);\n block-size: var(--gxg-ide-loader-spinner__width);\n flex-shrink: 0;\n opacity: 1;\n }\n\n &__content-wrapper {\n display: flex;\n text-align: center;\n flex-direction: column;\n margin-block-start: var(--gxg-ide-loader-content-wrapper__mbs);\n gap: var(--mer-spacing--xs);\n max-block-size: var(--gxg-ide-loader-content-wrapper__max-width);\n &--hidden {\n display: none;\n }\n opacity: 1;\n }\n\n &__cancel-button {\n margin-block-start: var(--mer-spacing--xs);\n }\n}\n\n/*background color animation*/\n@keyframes wrapper {\n 0% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--from);\n }\n 100% {\n background-color: var(--gxg-ide-loader-wrapper__background-color--to);\n }\n}\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(359deg);\n }\n}\n\n:host([display-border]) {\n .loader {\n &__wrapper {\n border: 1px solid var(--mer-color__elevation--02);\n }\n }\n}\n\n@keyframes fadeIn {\n 0% {\n opacity: 0;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Event,\n EventEmitter\n} from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"utils/typography\"\n];\n@Component({\n tag: \"gx-ide-loader\",\n styleUrl: \"ide-loader.scss\",\n shadow: true\n})\nexport class IdeLoader {\n #timeoutReference: ReturnType<typeof setTimeout>;\n\n /**\n * shows the '.loader-wrapper'\n */\n @State() showWrapper = true;\n\n /**\n * The time the loader will await before abort.\n */\n @Prop() readonly abortTime: number = 5 * 60 * 1000; // 5 minutes\n\n /**\n * The cancel callback\n */\n @Prop() readonly cancelCallback: IdeLoaderCancelCallback;\n\n /**\n * The cancel button label (optional)\n */\n @Prop() readonly cancelLabel: string;\n\n /**\n * The loader description (optional)\n */\n @Prop() readonly description: string;\n\n /**\n * Displays a border all around\n */\n @Prop({ reflect: true }) readonly displayBorder: boolean = false;\n\n /**\n * The loader title (optional)\n */\n @Prop() readonly loaderTitle: string;\n\n /**\n * It shows the loader\n */\n @Prop({ mutable: true }) show = false;\n\n /**\n * This event is emitted when \"show\" is false.\n */\n @Event() loaderFinished: EventEmitter<void>;\n\n #cancelProcess = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n clearTimeout(this.#timeoutReference);\n this.show = false;\n };\n\n #renderCancelButton = (): HTMLButtonElement | null =>\n this.cancelLabel && (\n <div>\n <button\n class=\"button-secondary loader__cancel-button\"\n type=\"button\"\n onClick={this.#cancelProcess}\n >\n {this.cancelLabel}\n </button>\n </div>\n );\n\n #renderDescription = (): HTMLParagraphElement | null =>\n this.description && <p class=\"body-regular-italic-s\">{this.description}</p>;\n\n #renderTitle = (): HTMLParagraphElement | null =>\n this.loaderTitle && <p class=\"body-regular-l\">{this.loaderTitle}</p>;\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n {this.show && (\n <div\n class={{\n [`loader__wrapper`]: true,\n \"loader__wrapper--visible\": this.showWrapper\n }}\n part=\"loader-wrapper\"\n popover=\"\"\n >\n <div class=\"loader__spinner\"></div>\n <div\n class={{\n \"loader__content-wrapper\": true,\n \"loader__content-wrapper--hidden\":\n !this.description && !this.loaderTitle && !this.cancelLabel\n }}\n >\n {this.#renderTitle()}\n {this.#renderDescription()}\n {this.#renderCancelButton()}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n\nexport type IdeLoaderCancelCallback = () => void;\n"],"mappings":";;AAAA,MAAMA,IAAe;;;;;;;;;;ACYrB,MAAMC,IAA8B,EAClC,qBACA,qBACA;;MAOWC,IAAS;;;;IACpBC,EAAAC,IAAAC,WAAA;IA+CAC,EAAAF,IAAAC,OAAiB;MACf,IAAIA,KAAKE,gBAAgB;QACvBF,KAAKE;;MAEPC,aAAaC,EAAAJ,MAAIF,GAAA;MACjBE,KAAKK,OAAO;AAAK;IAGnBC,EAAAP,IAAAC,OAAsB,MACpBA,KAAKO,eACHC,EAAA,aACEA,EAAA;MACEC,OAAM;MACNC,MAAK;MACLC,SAASP,EAAAJ,MAAIC,GAAA;OAEZD,KAAKO;IAKdK,EAAAb,IAAAC,OAAqB,MACnBA,KAAKa,eAAeL,EAAA;MAAGC,OAAM;OAAyBT,KAAKa;IAE7DC,EAAAf,IAAAC,OAAe,MACbA,KAAKe,eAAeP,EAAA;MAAGC,OAAM;OAAkBT,KAAKe;uBAnE/B;qBAKc,IAAI,KAAK;;;;yBAoBa;;gBAU3B;;EAkChC,MAAAC;IACE,OACER,EAACS,GAAI,MACHT,EAAA;MAAUU,OAAOtB;QAChBI,KAAKK,QACJG,EAAA;MACEC,OAAO;QACL,CAAC,oBAAoB;QACrB,4BAA4BT,KAAKmB;;MAEnCC,MAAK;MACLC,SAAQ;OAERb,EAAA;MAAKC,OAAM;QACXD,EAAA;MACEC,OAAO;QACL,2BAA2B;QAC3B,oCACGT,KAAKa,gBAAgBb,KAAKe,gBAAgBf,KAAKO;;OAGnDH,EAAAJ,MAAIc,GAAA,KAAaQ,KAAjBtB,OACAI,EAAAJ,MAAIY,GAAA,KAAmBU,KAAvBtB,OACAI,EAAAJ,MAAIM,GAAA,KAAoBgB,KAAxBtB"}
|
|
@@ -63,6 +63,16 @@ export declare class GxIdeNewObject {
|
|
|
63
63
|
* 'undefined' if the name is not valid.
|
|
64
64
|
*/
|
|
65
65
|
readonly validateNameCallback: ValidateNameCallback;
|
|
66
|
+
/**
|
|
67
|
+
* Callback to suggest a name when creating an object from another object.
|
|
68
|
+
* Returns the suggested name or undefined if not applicable.
|
|
69
|
+
*/
|
|
70
|
+
readonly suggestNameCallback?: SuggestNameCallback;
|
|
71
|
+
/**
|
|
72
|
+
* Callback to suggest a description when creating an object from another object.
|
|
73
|
+
* Returns the suggested description or undefined if not applicable.
|
|
74
|
+
*/
|
|
75
|
+
readonly suggestDescriptionCallback?: SuggestDescriptionCallback;
|
|
66
76
|
/**
|
|
67
77
|
* This event emits the 'cancel' event
|
|
68
78
|
*/
|
|
@@ -109,3 +119,5 @@ export type TypeData = {
|
|
|
109
119
|
hasFolder: boolean;
|
|
110
120
|
description: string;
|
|
111
121
|
};
|
|
122
|
+
export type SuggestNameCallback = () => Promise<string | undefined>;
|
|
123
|
+
export type SuggestDescriptionCallback = () => Promise<string | undefined>;
|