@genexus/genexus-ide-ui 1.0.44 → 1.0.46

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 (115) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +10 -11
  3. package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +3 -1
  5. package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +38 -11
  9. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +75 -13
  11. package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +244 -0
  13. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -0
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/collection-manifest.json +1 -0
  16. package/dist/collection/components/_helpers/entity-selector/entity-selector.js +4 -2
  17. package/dist/collection/components/_helpers/entity-selector/entity-selector.js.map +1 -1
  18. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +1 -1
  19. package/dist/collection/components/current-user-info/current-user-info.css +6 -1
  20. package/dist/collection/components/current-user-info/current-user-info.js +32 -11
  21. package/dist/collection/components/current-user-info/current-user-info.js.map +1 -1
  22. package/dist/collection/components/current-user-info/gx-ide-assets/current-user-info/langs/current-user-info.lang.en.json +2 -1
  23. package/dist/collection/components/current-user-info/gx-ide-assets/current-user-info/langs/current-user-info.lang.ja.json +2 -1
  24. package/dist/collection/components/current-user-info/gx-ide-assets/current-user-info/langs/current-user-info.lang.zh.json +2 -1
  25. package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.en.json +5 -1
  26. package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.ja.json +5 -1
  27. package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.zh.json +5 -1
  28. package/dist/collection/components/select-user-team/helpers.js +1 -1
  29. package/dist/collection/components/select-user-team/helpers.js.map +1 -1
  30. package/dist/collection/components/select-user-team/select-user-team.css +8 -0
  31. package/dist/collection/components/select-user-team/select-user-team.js +42 -9
  32. package/dist/collection/components/select-user-team/select-user-team.js.map +1 -1
  33. package/dist/collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.en.json +15 -5
  34. package/dist/collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.ja.json +13 -3
  35. package/dist/collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.zh.json +13 -3
  36. package/dist/collection/components/sign-in-team/sign-in-team.css +9 -4
  37. package/dist/collection/components/sign-in-team/sign-in-team.js +116 -15
  38. package/dist/collection/components/sign-in-team/sign-in-team.js.map +1 -1
  39. package/dist/collection/components/ww-attributes/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.en.json +30 -0
  40. package/dist/collection/components/ww-attributes/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.ja.json +30 -0
  41. package/dist/collection/components/ww-attributes/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.zh.json +30 -0
  42. package/dist/collection/components/ww-attributes/helpers.js +11 -0
  43. package/dist/collection/components/ww-attributes/helpers.js.map +1 -0
  44. package/dist/collection/components/ww-attributes/ww-attributes.css +70 -0
  45. package/dist/collection/components/ww-attributes/ww-attributes.js +468 -0
  46. package/dist/collection/components/ww-attributes/ww-attributes.js.map +1 -0
  47. package/dist/collection/testing/locale.e2e.js +1 -0
  48. package/dist/collection/testing/locale.e2e.js.map +1 -1
  49. package/dist/components/entity-selector.js +3 -1
  50. package/dist/components/entity-selector.js.map +1 -1
  51. package/dist/components/gx-ide-current-user-info.js +12 -12
  52. package/dist/components/gx-ide-current-user-info.js.map +1 -1
  53. package/dist/components/gx-ide-select-user-team.js +48 -13
  54. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  55. package/dist/components/gx-ide-sign-in-team.js +86 -15
  56. package/dist/components/gx-ide-sign-in-team.js.map +1 -1
  57. package/dist/components/gx-ide-ww-attributes.d.ts +11 -0
  58. package/dist/components/gx-ide-ww-attributes.js +294 -0
  59. package/dist/components/gx-ide-ww-attributes.js.map +1 -0
  60. package/dist/components/ide-loader.js +1 -1
  61. package/dist/components/ide-loader.js.map +1 -1
  62. package/dist/esm/genexus-ide-ui.js +1 -1
  63. package/dist/esm/gx-ide-current-user-info.entry.js +10 -11
  64. package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
  65. package/dist/esm/gx-ide-entity-selector.entry.js +3 -1
  66. package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
  67. package/dist/esm/gx-ide-loader.entry.js +1 -1
  68. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  69. package/dist/esm/gx-ide-select-user-team.entry.js +38 -11
  70. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  71. package/dist/esm/gx-ide-sign-in-team.entry.js +75 -13
  72. package/dist/esm/gx-ide-sign-in-team.entry.js.map +1 -1
  73. package/dist/esm/gx-ide-ww-attributes.entry.js +240 -0
  74. package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -0
  75. package/dist/esm/loader.js +1 -1
  76. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  77. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  78. package/dist/genexus-ide-ui/gx-ide-assets/current-user-info/langs/current-user-info.lang.en.json +2 -1
  79. package/dist/genexus-ide-ui/gx-ide-assets/current-user-info/langs/current-user-info.lang.ja.json +2 -1
  80. package/dist/genexus-ide-ui/gx-ide-assets/current-user-info/langs/current-user-info.lang.zh.json +2 -1
  81. package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.en.json +5 -1
  82. package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.ja.json +5 -1
  83. package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.zh.json +5 -1
  84. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.en.json +15 -5
  85. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.ja.json +13 -3
  86. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.zh.json +13 -3
  87. package/dist/genexus-ide-ui/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.en.json +30 -0
  88. package/dist/genexus-ide-ui/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.ja.json +30 -0
  89. package/dist/genexus-ide-ui/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.zh.json +30 -0
  90. package/dist/genexus-ide-ui/{p-04d7f44c.entry.js → p-1693a2d1.entry.js} +4 -2
  91. package/dist/genexus-ide-ui/p-1693a2d1.entry.js.map +1 -0
  92. package/dist/genexus-ide-ui/p-5619120d.entry.js +341 -0
  93. package/dist/genexus-ide-ui/p-5619120d.entry.js.map +1 -0
  94. package/dist/genexus-ide-ui/{p-b12a5426.entry.js → p-a27c088d.entry.js} +45 -41
  95. package/dist/genexus-ide-ui/p-a27c088d.entry.js.map +1 -0
  96. package/dist/genexus-ide-ui/{p-c9b0fd13.entry.js → p-ab653cc2.entry.js} +44 -18
  97. package/dist/genexus-ide-ui/p-ab653cc2.entry.js.map +1 -0
  98. package/dist/genexus-ide-ui/p-b04a0ae3.entry.js +236 -0
  99. package/dist/genexus-ide-ui/p-b04a0ae3.entry.js.map +1 -0
  100. package/dist/genexus-ide-ui/{p-6db2056c.entry.js → p-efebc74b.entry.js} +7 -7
  101. package/dist/genexus-ide-ui/p-efebc74b.entry.js.map +1 -0
  102. package/dist/types/components/_helpers/entity-selector/entity-selector.d.ts +1 -1
  103. package/dist/types/components/current-user-info/current-user-info.d.ts +6 -2
  104. package/dist/types/components/select-user-team/select-user-team.d.ts +9 -0
  105. package/dist/types/components/sign-in-team/sign-in-team.d.ts +13 -1
  106. package/dist/types/components/ww-attributes/helpers.d.ts +3 -0
  107. package/dist/types/components/ww-attributes/ww-attributes.d.ts +95 -0
  108. package/dist/types/components.d.ts +128 -17
  109. package/package.json +1 -1
  110. package/dist/genexus-ide-ui/p-04d7f44c.entry.js.map +0 -1
  111. package/dist/genexus-ide-ui/p-0b33d2f9.entry.js +0 -163
  112. package/dist/genexus-ide-ui/p-0b33d2f9.entry.js.map +0 -1
  113. package/dist/genexus-ide-ui/p-6db2056c.entry.js.map +0 -1
  114. package/dist/genexus-ide-ui/p-b12a5426.entry.js.map +0 -1
  115. package/dist/genexus-ide-ui/p-c9b0fd13.entry.js.map +0 -1
@@ -0,0 +1,341 @@
1
+ import { r as t, h as e, H as i, g as s } from "./p-49712340.js";
2
+
3
+ import { g as a } from "./p-617e65ca.js";
4
+
5
+ import { c as r } from "./p-78b90603.js";
6
+
7
+ import { L as n } from "./p-311eedf3.js";
8
+
9
+ const mapOptionsToComboBoxItemModel = t => t.map((t => {
10
+ var e;
11
+ return {
12
+ value: t.id,
13
+ caption: t.label,
14
+ startImgSrc: (e = t.iconName) !== null && e !== void 0 ? e : ""
15
+ };
16
+ }));
17
+
18
+ const l = '@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content}.section{display:contents}.header{grid-template:"name type" max-content "object object" max-content;grid-template-columns:1fr 1fr}.name__field{grid-area:name}.name__label{inline-size:40px}.type__field{grid-area:type}.more__btn{grid-area:more;inline-size:64px}.object-selector__field{grid-area:object}.main{overflow:auto}ch-tabular-grid.tabular-grid--empty::part(main){overflow:hidden}ch-tabular-grid-rowset-empty{position:relative}.tabular-grid-row ch-tabular-grid-cell:is(:nth-child(2),:nth-child(3),:nth-child(4)){padding-block:var(--grid-cell__padding-block);padding-inline:var(--grid-cell__padding-inline);align-items:start;justify-content:start;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.matching-attributes{margin:0}';
19
+
20
+ var o = undefined && undefined.__classPrivateFieldGet || function(t, e, i, s) {
21
+ if (i === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
22
+ if (typeof e === "function" ? t !== e || !s : !e.has(t)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
23
+ return i === "m" ? s : i === "a" ? s.call(t) : s ? s.value : e.get(t);
24
+ };
25
+
26
+ var c = undefined && undefined.__classPrivateFieldSet || function(t, e, i, s, a) {
27
+ if (s === "m") throw new TypeError("Private method is not writable");
28
+ if (s === "a" && !a) throw new TypeError("Private accessor was defined without a setter");
29
+ if (typeof e === "function" ? t !== e || !a : !e.has(t)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
30
+ return s === "a" ? a.call(t, i) : a ? a.value = i : e.set(t, i), i;
31
+ };
32
+
33
+ var d, h, u, f, m, b, p, g, w, v, y, k, _, x, W, M;
34
+
35
+ const j = [ "resets/box-sizing", "components/button", "components/edit", "components/combo-box", "components/tabular-grid", "components/icon", "utils/form", "utils/layout", "utils/spacing", "chameleon/scrollbar" ];
36
+
37
+ const z = a({
38
+ category: "window-tools",
39
+ name: "filter",
40
+ colorType: "on-elevation"
41
+ });
42
+
43
+ const T = class {
44
+ constructor(i) {
45
+ t(this, i);
46
+ /**
47
+ * Component hard-coded strings translations.
48
+ */ d.set(this, void 0);
49
+ /* References needed to collect data */ h.set(this, void 0);
50
+ u.set(this, (t => {
51
+ this.contextMenuCallback({
52
+ selection: this.selectedAttributesIds,
53
+ clientX: t.clientX,
54
+ clientY: t.clientY
55
+ });
56
+ }));
57
+ f.set(this, (() => {
58
+ this.deleteSelectionCallback(this.selectedAttributesIds);
59
+ }));
60
+ m.set(this, (() => {
61
+ o(this, h, "f").selectAllRows(false);
62
+ }));
63
+ b.set(this, (() => {
64
+ var t;
65
+ this.loading = true;
66
+ const e = {
67
+ name: this.name.trim(),
68
+ type: this.type,
69
+ object: (t = this.object) === null || t === void 0 ? void 0 : t.id
70
+ };
71
+ this.loadCallback(e).then((t => {
72
+ var e;
73
+ this.attributes = t;
74
+ if (((e = this.selectedAttributesIds) === null || e === void 0 ? void 0 : e.length) > 0) {
75
+ this.selectedAttributesIds = [];
76
+ o(this, m, "f").call(this);
77
+ }
78
+ this.loading = false;
79
+ }));
80
+ }));
81
+ p.set(this, (() => {
82
+ // for grid selection
83
+ o(this, h, "f").addEventListener("selectionChanged", (t => {
84
+ this.selectedAttributesIds = t.detail.rowsId;
85
+ this.selectionChangeCallback(this.selectedAttributesIds);
86
+ }));
87
+ o(this, h, "f").addEventListener("contextmenu", (t => {
88
+ t.preventDefault();
89
+ t.stopPropagation();
90
+ o(this, u, "f").call(this, t);
91
+ }));
92
+ o(this, h, "f").addEventListener("rowDoubleClicked", (() => {
93
+ o(this, g, "f").call(this);
94
+ }));
95
+ }));
96
+ g.set(this, (() => {
97
+ this.openSelectionCallback(this.selectedAttributesIds);
98
+ }));
99
+ w.set(this, (async () => {
100
+ const t = await this.objectActionCallback();
101
+ this.object = {
102
+ id: t.id,
103
+ name: t.name,
104
+ iconSrc: t.iconSrc
105
+ };
106
+ return new Promise((t => {
107
+ t(null);
108
+ }));
109
+ }));
110
+ v.set(this, (t => {
111
+ this.object = t.detail;
112
+ o(this, b, "f").call(this);
113
+ }));
114
+ y.set(this, (() => {
115
+ var t;
116
+ const i = ((t = this.attributes) === null || t === void 0 ? void 0 : t.length) === 0 || !this.attributes;
117
+ return e("ch-tabular-grid", {
118
+ class: {
119
+ "tabular-grid": true,
120
+ "tabular-grid--empty": i,
121
+ main: true
122
+ },
123
+ ref: t => c(this, h, t, "f"),
124
+ "row-selection-mode": "multiple",
125
+ part: "ch-grid-attributes"
126
+ }, e("ch-tabular-grid-columnset", {
127
+ class: "tabular-grid-column-set"
128
+ }, e("ch-tabular-grid-column", {
129
+ "column-name": "",
130
+ "column-name-position": "text",
131
+ settingable: false,
132
+ size: r.tabularGrid.colSize.maxContent,
133
+ class: "tabular-grid-column"
134
+ }), e("ch-tabular-grid-column", {
135
+ "column-name": o(this, d, "f").tableHead.name,
136
+ "column-name-position": "text",
137
+ size: r.tabularGrid.colSize.auto,
138
+ class: "tabular-grid-column",
139
+ settingable: false
140
+ }), e("ch-tabular-grid-column", {
141
+ "column-name": o(this, d, "f").tableHead.type,
142
+ "column-name-position": "text",
143
+ class: "tabular-grid-column",
144
+ size: r.tabularGrid.colSize.auto,
145
+ settingable: false
146
+ }), e("ch-tabular-grid-column", {
147
+ "column-name": o(this, d, "f").tableHead.description,
148
+ "column-name-position": "text",
149
+ size: r.tabularGrid.colSize.auto,
150
+ class: "tabular-grid-column",
151
+ settingable: false
152
+ })), o(this, k, "f").call(this));
153
+ }));
154
+ k.set(this, (() => {
155
+ if (this.loading) {
156
+ return e("ch-tabular-grid-rowset", {
157
+ class: "tabular-grid-rowset"
158
+ }, e("ch-tabular-grid-rowset-empty", null, e("gx-ide-loader", {
159
+ loaderTitle: o(this, d, "f").loader.title,
160
+ description: o(this, d, "f").loader.description,
161
+ show: true
162
+ })));
163
+ } else if (this.attributes.length) {
164
+ return e("ch-tabular-grid-rowset", {
165
+ class: "tabular-grid-rowset"
166
+ }, this.attributes.map((t => e("ch-tabular-grid-row", {
167
+ class: "tabular-grid-row",
168
+ rowid: t.id
169
+ }, e("ch-tabular-grid-cell", {
170
+ class: "tabular-grid-cell"
171
+ }, e("ch-image", {
172
+ class: "icon-sm",
173
+ src: t.icon
174
+ })), e("ch-tabular-grid-cell", {
175
+ class: "tabular-grid-cell"
176
+ }, t.name), e("ch-tabular-grid-cell", {
177
+ class: "tabular-grid-cell"
178
+ }, t.type), e("ch-tabular-grid-cell", {
179
+ class: "tabular-grid-cell"
180
+ }, t.description)))));
181
+ } else {
182
+ // filter returned none
183
+ return e("ch-tabular-grid-rowset", {
184
+ class: "tabular-grid-rowset"
185
+ }, e("ch-tabular-grid-rowset-empty", null, e("gx-ide-empty-state", {
186
+ stateIconSrc: z,
187
+ stateTitle: o(this, d, "f").emptyStateTitle,
188
+ isAnimated: true
189
+ })));
190
+ }
191
+ }));
192
+ _.set(this, (() => {
193
+ var t;
194
+ return e("header", {
195
+ class: "header field-group control-header-with-border spacing-body"
196
+ }, e("div", {
197
+ class: "field field-inline name__field"
198
+ }, e("label", {
199
+ class: "label name__label",
200
+ htmlFor: "name"
201
+ }, o(this, d, "f").filter.name), e("ch-edit", {
202
+ // Name
203
+ id: "name",
204
+ class: "input",
205
+ value: this.name,
206
+ debounce: 300,
207
+ onInput: o(this, W, "f"),
208
+ part: "filter-name"
209
+ })), e("div", {
210
+ class: "field field-inline type__field"
211
+ }, e("label", {
212
+ class: "label",
213
+ htmlFor: "type"
214
+ }, o(this, d, "f").filter.type), e("ch-combo-box-render", {
215
+ // Type
216
+ id: "type",
217
+ class: "combo-box",
218
+ disabled: !this.types,
219
+ value: this.type,
220
+ model: mapOptionsToComboBoxItemModel((t = this.types) !== null && t !== void 0 ? t : []),
221
+ part: "filter-type",
222
+ onInput: o(this, M, "f")
223
+ })), e("div", {
224
+ class: "field field-inline object-selector__field"
225
+ }, e("label", {
226
+ class: "label",
227
+ htmlFor: "object-selector"
228
+ }, o(this, d, "f").filter.object), e("gx-ide-entity-selector", {
229
+ // Object
230
+ id: "object-selector",
231
+ value: this.object,
232
+ labelPosition: "none",
233
+ defaultValue: null,
234
+ selectEntityCallback: o(this, w, "f"),
235
+ onValueChanged: o(this, v, "f"),
236
+ part: "filter-module-folder"
237
+ })));
238
+ }));
239
+ x.set(this, (() => {
240
+ o(this, h, "f").selectAllRows();
241
+ }));
242
+ W.set(this, (t => {
243
+ this.name = t.detail.trim();
244
+ o(this, b, "f").call(this);
245
+ }));
246
+ M.set(this, (t => {
247
+ this.type = t.detail;
248
+ o(this, b, "f").call(this);
249
+ }));
250
+ this.attributes = undefined;
251
+ this.selectedAttributesIds = [];
252
+ this.filterMore = false;
253
+ this.name = "";
254
+ this.loading = true;
255
+ this.object = undefined;
256
+ this.type = undefined;
257
+ this.contextMenuCallback = undefined;
258
+ this.deleteSelectionCallback = undefined;
259
+ this.loadCallback = undefined;
260
+ this.objectActionCallback = undefined;
261
+ this.objects = undefined;
262
+ this.openSelectionCallback = undefined;
263
+ this.selectionChangeCallback = undefined;
264
+ this.types = undefined;
265
+ }
266
+ async componentWillLoad() {
267
+ c(this, d, await n.getComponentStrings(this.el), "f");
268
+ }
269
+ componentDidLoad() {
270
+ o(this, p, "f").call(this);
271
+ this.type = this.types[0].id;
272
+ // before #getAttributes
273
+ o(this, b, "f").call(this);
274
+ }
275
+ keyDownHandler(t) {
276
+ if (document.activeElement === this.el) {
277
+ switch (t.key) {
278
+ case "Enter":
279
+ o(this, g, "f").call(this);
280
+ break;
281
+
282
+ case "Delete":
283
+ o(this, f, "f").call(this);
284
+ break;
285
+ }
286
+ }
287
+ }
288
+ /**
289
+ * Reloads the view, refreshing the filters and attributes table.
290
+ */ async reload() {
291
+ this.name = "";
292
+ this.type = this.types[0].id;
293
+ this.object = null;
294
+ o(this, b, "f").call(this);
295
+ }
296
+ /**
297
+ * Validate necessary data input
298
+ */ async validate() {
299
+ const t = true;
300
+ return t;
301
+ }
302
+ render() {
303
+ var t, s;
304
+ const a = !this.attributes || this.attributes.length === 0;
305
+ const r = ((t = this.attributes) === null || t === void 0 ? void 0 : t.length) === 1 ? o(this, d, "f").matchingAttribute : o(this, d, "f").matchingAttributes;
306
+ const n = ((s = this.attributes) === null || s === void 0 ? void 0 : s.length) || 0;
307
+ return e(i, {
308
+ class: "widget"
309
+ }, e("ch-theme", {
310
+ model: j
311
+ }), e("section", {
312
+ class: "section"
313
+ }, o(this, _, "f").call(this), o(this, y, "f").call(this), e("footer", {
314
+ class: "control-footer control-footer-with-border spacing-body-block-end spacing-body-inline control-footer-space-between"
315
+ }, e("p", {
316
+ class: "text-body-regular-s matching-attributes"
317
+ }, `${n} ${r}`), e("button", {
318
+ id: "button-select-all",
319
+ class: "button-primary",
320
+ onClick: o(this, x, "f"),
321
+ disabled: a,
322
+ part: "button button--select-all"
323
+ }, o(this, d, "f").footer.btnSelectAll))));
324
+ }
325
+ static get assetsDirs() {
326
+ return [ "gx-ide-assets/ww-attributes" ];
327
+ }
328
+ get el() {
329
+ return s(this);
330
+ }
331
+ };
332
+
333
+ d = new WeakMap, h = new WeakMap, u = new WeakMap, f = new WeakMap, m = new WeakMap,
334
+ b = new WeakMap, p = new WeakMap, g = new WeakMap, w = new WeakMap, v = new WeakMap,
335
+ y = new WeakMap, k = new WeakMap, _ = new WeakMap, x = new WeakMap, W = new WeakMap,
336
+ M = new WeakMap;
337
+
338
+ T.style = l;
339
+
340
+ export { T as gx_ide_ww_attributes };
341
+ //# sourceMappingURL=p-5619120d.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mapOptionsToComboBoxItemModel","options","map","option","value","id","caption","label","startImgSrc","_a","iconName","wwAttributesCss","CSS_BUNDLES","FILTER_ICON","getIconPath","category","name","colorType","GxIdeWWAttributes","_GxIdeWWAttributes__componentLocale","set","this","_GxIdeWWAttributes_chGridEl","_GxIdeWWAttributes_contextMenuCallbackHandler","ev","contextMenuCallback","selection","selectedAttributesIds","clientX","clientY","_GxIdeWWAttributes_deleteSelectionCallbackHandle","deleteSelectionCallback","_GxIdeWWAttributes_deselectAll","__classPrivateFieldGet","selectAllRows","_GxIdeWWAttributes_getAttributes","loading","filters","trim","type","object","loadCallback","then","items","attributes","length","call","_GxIdeWWAttributes_listenChanges","addEventListener","detail","rowsId","selectionChangeCallback","preventDefault","stopPropagation","_GxIdeWWAttributes_openSelectionCallbackHandle","openSelectionCallback","_GxIdeWWAttributes_entityCallbackHandler","async","result","objectActionCallback","iconSrc","Promise","resolve","_GxIdeWWAttributes_entityValueChangedHandler","event","_GxIdeWWAttributes_renderAttributesGrid","tabularGridEmpty","h","class","main","ref","el","__classPrivateFieldSet","part","settingable","size","config","tabularGrid","colSize","maxContent","tableHead","auto","description","_GxIdeWWAttributes_evaluateAttributesGridContent","loaderTitle","loader","title","show","attr","rowid","src","icon","stateIconSrc","stateTitle","emptyStateTitle","isAnimated","_GxIdeWWAttributes_renderFilter","htmlFor","filter","debounce","onInput","_GxIdeWWAttributes_nameInputHandler","disabled","types","model","_GxIdeWWAttributes_typeInputHandler","labelPosition","defaultValue","selectEntityCallback","onValueChanged","_GxIdeWWAttributes_selectAll","e","componentWillLoad","Locale","getComponentStrings","componentDidLoad","keyDownHandler","eventInfo","document","activeElement","key","reload","validate","isValid","render","btnDisabled","matchingAttributesLabel","matchingAttribute","matchingAttributes","attributesLength","_b","Host","onClick","footer","btnSelectAll"],"sources":["src/components/ww-attributes/helpers.tsx","src/components/ww-attributes/ww-attributes.scss?tag=gx-ide-ww-attributes&encapsulation=shadow","src/components/ww-attributes/ww-attributes.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.label,\n startImgSrc: option.iconName ?? \"\"\n };\n });\n};\n","@import \"../../../node_modules/@genexus/mercury/dist/mercury.scss\"; // for the tabular-grid-cell-layout mixin\n\n$nameInlineSize: 40px;\n$moreBtnInlineSize: 64px;\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n// Header\n.header {\n grid-template:\n \"name type\" max-content\n \"object object\" max-content;\n grid-template-columns: 1fr 1fr;\n}\n.name__field {\n grid-area: name;\n}\n.name__label {\n inline-size: $nameInlineSize;\n}\n.type__field {\n grid-area: type;\n}\n.more__btn {\n grid-area: more;\n inline-size: $moreBtnInlineSize;\n}\n.object-selector__field {\n grid-area: object;\n}\n\n// Main\n.main {\n overflow: auto;\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-row\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n// WA: remove this when Mercury removes margin from p elements\n.matching-attributes {\n margin: 0;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n// Stencil\nimport {\n Component,\n Element,\n Host,\n Listen,\n Method,\n Prop,\n State,\n h\n} from \"@stencil/core\";\n// Other Libraries\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n// Custom Imports\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo, EntityData, GxOption } from \"../../common/types\";\nimport { mapOptionsToComboBoxItemModel } from \"./helpers\";\nimport { ChEditCustomEvent } from \"@genexus/chameleon-controls-library\";\nimport HTMLChTabularGridRowsetElement from \"@genexus/chameleon-controls-library/dist/types/components/tabular-grid/rowset/tabular-grid-rowset\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../../components\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/combo-box\",\n \"components/tabular-grid\",\n \"components/icon\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-ww-attributes\",\n styleUrl: \"ww-attributes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-attributes\"]\n})\nexport class GxIdeWWAttributes {\n /**\n * Component hard-coded strings translations.\n */\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeWwAttributesElement;\n\n /* References needed to collect data */\n #chGridEl!: HTMLChTabularGridElement;\n\n /**\n * Attributes rendered in the table\n */\n @State() attributes: AttributeData[];\n\n /**\n * Selected attributes in the table of attributes\n */\n @State() selectedAttributesIds: string[] = [];\n\n /**\n * Show or hide advanced filters\n */\n @State() filterMore = false;\n\n /**\n * The attribute filter name\n */\n @State() name: string = \"\";\n\n /**\n * True if loadCallback hasn't been resolved yet\n */\n @State() loading: boolean = true;\n\n /**\n * The attribute object value\n */\n @State() object: EntityData;\n\n /**\n * The attribute filter type value\n */\n @State() type: string;\n\n /**\n * Callback invoked when user right-clicks on the grid\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Callback invoked when user deletes an object\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Callback invoked when user filters the objects\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Callback invoked when user executes filter action\n */\n @Prop() readonly objectActionCallback!: ObjectActionCallback;\n\n /**\n * Objects rendered in the object selector\n */\n @Prop() readonly objects!: GxOption[];\n\n /**\n * Callback invoked when user opens the selection dialog\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when user selects or deselects an object\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Types rendered in the filter type selector\n */\n @Prop() readonly types!: GxOption[];\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {\n this.#listenChanges();\n this.type = this.types[0].id; // before #getAttributes\n this.#getAttributes();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.#openSelectionCallbackHandle();\n break;\n case \"Delete\":\n this.#deleteSelectionCallbackHandle();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and attributes table.\n */\n @Method()\n async reload(): Promise<void> {\n this.name = \"\";\n this.type = this.types[0].id;\n this.object = null;\n this.#getAttributes();\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n #contextMenuCallbackHandler = (ev: MouseEvent): void => {\n this.contextMenuCallback({\n selection: this.selectedAttributesIds,\n clientX: ev.clientX,\n clientY: ev.clientY\n });\n };\n\n #deleteSelectionCallbackHandle = (): void => {\n this.deleteSelectionCallback(this.selectedAttributesIds);\n };\n\n #deselectAll = (): void => {\n (this.#chGridEl as any).selectAllRows(false);\n };\n\n #getAttributes = (): void => {\n this.loading = true;\n const filters: AttributeFiltersData = {\n name: this.name.trim(),\n type: this.type,\n object: this.object?.id\n };\n this.loadCallback(filters).then((items: AttributeData[]) => {\n this.attributes = items;\n if (this.selectedAttributesIds?.length > 0) {\n this.selectedAttributesIds = [];\n this.#deselectAll();\n }\n this.loading = false;\n });\n };\n\n #listenChanges = (): void => {\n // for grid selection\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedAttributesIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.selectedAttributesIds);\n });\n this.#chGridEl.addEventListener(\"contextmenu\", (ev: MouseEvent): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.#contextMenuCallbackHandler(ev);\n });\n\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.#openSelectionCallbackHandle();\n });\n };\n\n #openSelectionCallbackHandle = (): void => {\n this.openSelectionCallback(this.selectedAttributesIds);\n };\n\n #entityCallbackHandler = async (): Promise<null> => {\n const result = await this.objectActionCallback();\n this.object = {\n id: result.id,\n name: result.name,\n iconSrc: result.iconSrc\n };\n return new Promise(resolve => {\n resolve(null);\n });\n };\n\n #entityValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.object = event.detail;\n this.#getAttributes();\n };\n\n #renderAttributesGrid = (): Element => {\n const tabularGridEmpty = this.attributes?.length === 0 || !this.attributes;\n return (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty,\n \"main\": true\n }}\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n row-selection-mode=\"multiple\"\n part=\"ch-grid-attributes\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n column-name=\"\"\n column-name-position=\"text\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.name}\n column-name-position=\"text\"\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.type}\n column-name-position=\"text\"\n class=\"tabular-grid-column\"\n size={config.tabularGrid.colSize.auto}\n settingable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n column-name={this.#_componentLocale.tableHead.description}\n column-name-position=\"text\"\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.#evaluateAttributesGridContent()}\n </ch-tabular-grid>\n );\n };\n\n #evaluateAttributesGridContent = (): HTMLChTabularGridRowsetElement => {\n if (this.loading) {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n } else if (this.attributes.length) {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.attributes.map((attr: AttributeData) => (\n <ch-tabular-grid-row class=\"tabular-grid-row\" rowid={attr.id}>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image class=\"icon-sm\" src={attr.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {attr.description}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n );\n } else {\n // filter returned none\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#_componentLocale.emptyStateTitle}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n }\n };\n\n #renderFilter = (): Element => {\n return (\n <header class=\"header field-group control-header-with-border spacing-body\">\n <div class=\"field field-inline name__field\">\n <label class=\"label name__label\" htmlFor=\"name\">\n {this.#_componentLocale.filter.name}\n </label>\n <ch-edit\n // Name\n id=\"name\"\n class=\"input\"\n value={this.name}\n debounce={300}\n onInput={this.#nameInputHandler}\n part=\"filter-name\"\n ></ch-edit>\n </div>\n\n <div class=\"field field-inline type__field\">\n <label class=\"label\" htmlFor=\"type\">\n {this.#_componentLocale.filter.type}\n </label>\n <ch-combo-box-render\n // Type\n id=\"type\"\n class=\"combo-box\"\n disabled={!this.types}\n value={this.type}\n model={mapOptionsToComboBoxItemModel(this.types ?? [])}\n part=\"filter-type\"\n onInput={this.#typeInputHandler}\n ></ch-combo-box-render>\n </div>\n\n {/* <button\n // TODO: Check with Design if it maes sense to have a button that toggles only one control.\n // More\n class=\"button-primary more__btn\"\n onClick={this.#showMoreFilter}\n part=\"button button--more-less\"\n >\n {this.filterMore\n ? this.#_componentLocale.filter.btnLess\n : this.#_componentLocale.filter.btnMore}\n </button> */}\n\n <div class=\"field field-inline object-selector__field\">\n <label class=\"label\" htmlFor=\"object-selector\">\n {this.#_componentLocale.filter.object}\n </label>\n <gx-ide-entity-selector\n // Object\n id=\"object-selector\"\n value={this.object}\n labelPosition=\"none\"\n defaultValue={null}\n selectEntityCallback={this.#entityCallbackHandler}\n onValueChanged={this.#entityValueChangedHandler}\n part=\"filter-module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </header>\n );\n };\n\n #selectAll = (): void => {\n (this.#chGridEl as any).selectAllRows();\n };\n\n #nameInputHandler = (e: ChEditCustomEvent<string> | InputEvent) => {\n this.name = (e as ChEditCustomEvent<string>).detail.trim();\n this.#getAttributes();\n };\n\n #typeInputHandler = (e: CustomEvent<string> | InputEvent) => {\n this.type = e.detail as string;\n this.#getAttributes();\n };\n\n render(): void {\n const btnDisabled = !this.attributes || this.attributes.length === 0;\n const matchingAttributesLabel =\n this.attributes?.length === 1\n ? this.#_componentLocale.matchingAttribute\n : this.#_componentLocale.matchingAttributes;\n const attributesLength = this.attributes?.length || 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {this.#renderFilter()}\n\n {this.#renderAttributesGrid()}\n\n <footer class=\"control-footer control-footer-with-border spacing-body-block-end spacing-body-inline control-footer-space-between\">\n <p class=\"text-body-regular-s matching-attributes\">\n {`${attributesLength} ${matchingAttributesLabel}`}\n </p>\n\n <button\n id=\"button-select-all\"\n class=\"button-primary\"\n onClick={this.#selectAll}\n disabled={btnDisabled}\n part=\"button button--select-all\"\n >\n {this.#_componentLocale.footer.btnSelectAll}\n </button>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type LoadCallback = (\n filters: AttributeFiltersData\n) => Promise<AttributeData[]>;\n\nexport type ObjectActionCallback = () => Promise<EntityData | undefined>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\n\nexport interface AttributeData {\n id: string;\n icon: string;\n name: string;\n type: string;\n description: string;\n}\n\nexport interface AttributeFiltersData {\n name?: string;\n type?: string;\n object?: string;\n}\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { r as e, h as t, H as i, g as n } from "./p-49712340.js";
1
+ import { r as e, h as t, H as n, g as i } from "./p-49712340.js";
2
2
 
3
3
  import { g as o } from "./p-617e65ca.js";
4
4
 
5
- import { L as r } from "./p-311eedf3.js";
5
+ import { L as s } from "./p-311eedf3.js";
6
6
 
7
7
  /**
8
8
  * Returns initials from the first two words of a name. Returns "X" for invalid input.
@@ -50,28 +50,28 @@ import { L as r } from "./p-311eedf3.js";
50
50
  }
51
51
  };
52
52
 
53
- const s = "@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:inline-grid;justify-items:end;block-size:100%}.user-login__button{all:unset;display:grid;grid-template-columns:max-content max-content max-content;align-items:center;gap:var(--mer-spacing--sm);block-size:auto;cursor:pointer}.user-login__details{display:grid;grid-template-rows:max-content max-content;gap:var(--mer-spacing--3xs);justify-items:end}.user-login__name{font-weight:var(--mer-font__weight--medium);font-size:var(--mer-font__size--3xs);color:var(--mer-text__on-elevation)}.user-login__organization{font-weight:var(--mer-font__weight--light);font-size:var(--mer-font__size--4xs);color:var(--mer-text__neutral)}.user-login__name,.user-login__organization{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:120px;display:inline-block}.user-login__avatar{font-size:9px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;block-size:var(--mer-spacing--lg);inline-size:var(--mer-spacing--lg);color:var(--mer-text__on-elevation);border-radius:50%;background-color:var(--mer-color__tinted-primary--10);border:var(--mer-border__width--sm) solid var(--mer-color__primary--200)}.privacy-policy{text-decoration:underline;cursor:pointer}";
53
+ const r = "@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host{display:inline-grid;justify-items:end;block-size:100%}.user-login__button{all:unset;display:grid;grid-template-columns:max-content max-content max-content;align-items:center;gap:var(--mer-spacing--sm);block-size:auto;cursor:pointer}.user-login__details{display:grid;grid-template-rows:max-content max-content;gap:var(--mer-spacing--3xs);justify-items:end}.user-login__name{font-weight:var(--mer-font__weight--medium);font-size:var(--mer-font__size--3xs);color:var(--mer-text__on-elevation)}.user-login__organization{font-weight:var(--mer-font__weight--light);font-size:var(--mer-font__size--4xs);color:var(--mer-text__neutral)}.user-login__name,.user-login__organization{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:120px;display:inline-block}.user-login__avatar{font-size:9px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;block-size:var(--mer-spacing--lg);inline-size:var(--mer-spacing--lg);color:var(--mer-text__on-elevation);border-radius:50%;background-color:var(--mer-color__tinted-primary--10);border:var(--mer-border__width--sm) solid var(--mer-color__primary--200)}.user-login__footer{display:flex;flex-direction:column;gap:var(--mer-spacing--2xs)}.agreement-link{text-decoration:underline;cursor:pointer}";
54
54
 
55
- var a = undefined && undefined.__classPrivateFieldSet || function(e, t, i, n, o) {
56
- if (n === "m") throw new TypeError("Private method is not writable");
57
- if (n === "a" && !o) throw new TypeError("Private accessor was defined without a setter");
55
+ var a = undefined && undefined.__classPrivateFieldSet || function(e, t, n, i, o) {
56
+ if (i === "m") throw new TypeError("Private method is not writable");
57
+ if (i === "a" && !o) throw new TypeError("Private accessor was defined without a setter");
58
58
  if (typeof t === "function" ? e !== t || !o : !t.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
59
- return n === "a" ? o.call(e, i) : o ? o.value = i : t.set(e, i), i;
59
+ return i === "a" ? o.call(e, n) : o ? o.value = n : t.set(e, n), n;
60
60
  };
61
61
 
62
- var l = undefined && undefined.__classPrivateFieldGet || function(e, t, i, n) {
63
- if (i === "a" && !n) throw new TypeError("Private accessor was defined without a getter");
64
- if (typeof t === "function" ? e !== t || !n : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
65
- return i === "m" ? n : i === "a" ? n.call(e) : n ? n.value : t.get(e);
62
+ var l = undefined && undefined.__classPrivateFieldGet || function(e, t, n, i) {
63
+ if (n === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
64
+ if (typeof t === "function" ? e !== t || !i : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
65
+ return n === "m" ? i : n === "a" ? i.call(e) : i ? i.value : t.get(e);
66
66
  };
67
67
 
68
- var c, d, f, u, p;
68
+ var c, d, f, u, m;
69
69
 
70
- const h = [
70
+ const p = [
71
71
  // TODO: review if "utils/form--full" is required.
72
72
  "resets/box-sizing", "components/tooltip", "components/switch", "components/icon", "components/dropdown", "utils/layout", "utils/typography", "utils/spacing", "chameleon/scrollbar" ];
73
73
 
74
- const m = o({
74
+ const h = o({
75
75
  category: "navigation",
76
76
  name: "chevron-down",
77
77
  colorType: "neutral"
@@ -99,14 +99,12 @@ const y = class {
99
99
  // this.changeModeCallback(this.#mode);
100
100
  // }
101
101
  // };
102
- p.set(this, ((e, t, i) => {
103
- if (i === g) {
104
- this.myAccountCallback();
105
- } else if (i === _) {
102
+ m.set(this, ((e, t, n) => {
103
+ if (n === g) ; else if (n === _) {
106
104
  this.changeTeamCallback();
107
- } else if (i === v) {
105
+ } else if (n === v) {
108
106
  this.signOutCallback();
109
- } else if (i === w) {
107
+ } else if (n === w) {
110
108
  this.changeLanguageCallback();
111
109
  }
112
110
  }));
@@ -117,16 +115,19 @@ const y = class {
117
115
  this.changeLanguageCallback = undefined;
118
116
  this.changeModeCallback = undefined;
119
117
  this.signOutCallback = undefined;
120
- this.showTermsCallback = undefined;
118
+ this.termsCallback = undefined;
119
+ this.privacyCallback = undefined;
121
120
  }
122
121
  async componentWillLoad() {
123
- a(this, c, await r.getComponentStrings(this.el), "f");
122
+ a(this, c, await s.getComponentStrings(this.el), "f");
124
123
  a(this, d, getInitialsFromName(this.userInfo.name), "f");
125
- a(this, f, [ {
126
- id: g,
127
- caption: l(this, c, "f").myAccountLabel,
128
- showSeparator: false
129
- }, {
124
+ a(this, f, [
125
+ // {
126
+ // id: MY_ACCOUNT_ID,
127
+ // caption: this.#componentLocale.myAccountLabel,
128
+ // showSeparator: false
129
+ // },
130
+ {
130
131
  id: _,
131
132
  caption: l(this, c, "f").changeTeamLabel,
132
133
  showSeparator: false
@@ -137,17 +138,17 @@ const y = class {
137
138
  } ], "f");
138
139
  }
139
140
  render() {
140
- var e, n;
141
+ var e, i;
141
142
  const o = limitFullName((e = this.userInfo) === null || e === void 0 ? void 0 : e.name);
142
- return t(i, {
143
+ return t(n, {
143
144
  class: "widget"
144
145
  }, t("ch-theme", {
145
- model: h
146
+ model: p
146
147
  }), t("ch-dropdown-render", {
147
148
  class: "dropdown",
148
149
  model: l(this, f, "f"),
149
150
  position: "InsideEnd_OutsideEnd",
150
- itemClickCallback: l(this, p, "f")
151
+ itemClickCallback: l(this, m, "f")
151
152
  }, t("button", {
152
153
  class: "user-login__button",
153
154
  ref: e => a(this, u, e, "f"),
@@ -156,33 +157,36 @@ const y = class {
156
157
  class: "user-login__details"
157
158
  }, o ? t("span", {
158
159
  class: "user-login__name"
159
- }, o) : null, ((n = this.userInfo) === null || n === void 0 ? void 0 : n.team) ? t("span", {
160
+ }, o) : null, ((i = this.userInfo) === null || i === void 0 ? void 0 : i.team) ? t("span", {
160
161
  class: "user-login__organization"
161
162
  }, this.userInfo.team) : null), t("div", {
162
163
  class: "user-login__avatar"
163
164
  }, l(this, d, "f")), t("ch-image", {
164
- src: m,
165
+ src: h,
165
166
  class: "icon-md",
166
167
  containerRef: l(this, u, "f")
167
168
  })), t("div", {
168
169
  class: "user-login__footer footer-slot",
169
170
  slot: "footer"
170
- }, t("p", {
171
- class: "text-body-regular-s privacy-policy",
172
- onClick: this.showTermsCallback
173
- }, l(this, c, "f").privacyAndTerms))));
171
+ }, t("span", {
172
+ class: "text-body-regular-s agreement-link",
173
+ onClick: this.termsCallback
174
+ }, l(this, c, "f").termsAndConditionsText), t("span", {
175
+ class: "text-body-regular-s agreement-link",
176
+ onClick: this.privacyCallback
177
+ }, l(this, c, "f").privacyPolicyText))));
174
178
  }
175
179
  static get assetsDirs() {
176
180
  return [ "gx-ide-assets/current-user-info" ];
177
181
  }
178
182
  get el() {
179
- return n(this);
183
+ return i(this);
180
184
  }
181
185
  };
182
186
 
183
- c = new WeakMap, d = new WeakMap, f = new WeakMap, u = new WeakMap, p = new WeakMap;
187
+ c = new WeakMap, d = new WeakMap, f = new WeakMap, u = new WeakMap, m = new WeakMap;
184
188
 
185
- y.style = s;
189
+ y.style = r;
186
190
 
187
191
  export { y as gx_ide_current_user_info };
188
- //# sourceMappingURL=p-b12a5426.entry.js.map
192
+ //# sourceMappingURL=p-a27c088d.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getInitialsFromName","name","trim","nameData","split","filter","Boolean","length","toUpperCase","limitFullName","fullName","fullNameData","currentUserInfoCss","CSS_BUNDLES","CHEVRON_DOWN_ICON","getIconPath","category","colorType","MY_ACCOUNT_ID","CHANGE_TEAM_ID","SIGN_OUT_ID","LANGUAGE_ID","GxIdeNewEnvironment","_GxIdeNewEnvironment_componentLocale","set","this","_GxIdeNewEnvironment_initials","_GxIdeNewEnvironment_menuDropdownModel","_GxIdeNewEnvironment_userLoginButton","_GxIdeNewEnvironment_dropDownitemClickHandler","_event","_target","itemId","changeTeamCallback","signOutCallback","changeLanguageCallback","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","userInfo","id","caption","__classPrivateFieldGet","changeTeamLabel","showSeparator","signOutLabel","render","userName","_a","h","Host","class","model","position","itemClickCallback","ref","slot","_b","team","src","containerRef","onClick","termsCallback","termsAndConditionsText","privacyCallback","privacyPolicyText"],"sources":["src/components/current-user-info/helpers.tsx","src/components/current-user-info/current-user-info.scss?tag=gx-ide-current-user-info&encapsulation=shadow","src/components/current-user-info/current-user-info.tsx"],"sourcesContent":["/**\n * Returns initials from the first two words of a name. Returns \"X\" for invalid input.\n *\n * @param name - The full name string.\n * @returns Initials of the first two words, or \"X\" if invalid.\n *\n * Example:\n * getInitialsFromName(\"John Doe\") -> \"JD\"\n * getInitialsFromName(\"Jane\") -> \"J\"\n * getInitialsFromName(\"\") -> \"X\"\n */\nexport const getInitialsFromName = (name: string): string | null => {\n if (typeof name !== \"string\" || name.trim() === \"\") {\n return \"X\";\n }\n\n const nameData = name.split(\" \").filter(Boolean); // Remove any empty strings from splitting\n if (nameData.length === 1) {\n return nameData[0][0].toUpperCase();\n } else {\n return `${nameData[0][0].toUpperCase()}${nameData[1][0].toUpperCase()}`;\n }\n};\n\n/**\n * Limits the full name to the first two words. Returns null for invalid input.\n *\n * @param fullName - The full name string to be limited.\n * @returns The first two words of the full name, or null if invalid.\n *\n * Example:\n * limitFullName(\"John Doe Smith\") -> \"John Doe\"\n * limitFullName(\"Jane\") -> \"Jane\"\n * limitFullName(\"\") -> null\n */\nexport const limitFullName = (fullName: string): string | null => {\n if (typeof fullName !== \"string\" || fullName.trim() === \"\") {\n return null;\n }\n\n const fullNameData = fullName.split(\" \").filter(Boolean); // Remove any empty strings from splitting\n if (fullNameData.length === 1) {\n return fullNameData[0];\n } else {\n return `${fullNameData[0]} ${fullNameData[1]}`;\n }\n};\n","@import \"../../../node_modules/@genexus/mercury/dist/mercury.scss\";\n\n:host {\n display: inline-grid;\n justify-items: end;\n block-size: 100%;\n}\n\n.user-login {\n &__button {\n all: unset;\n display: grid;\n grid-template-columns: max-content max-content max-content;\n align-items: center;\n gap: var(--mer-spacing--sm);\n block-size: auto;\n cursor: pointer;\n }\n &__details {\n display: grid;\n grid-template-rows: max-content max-content;\n gap: var(--mer-spacing--3xs);\n justify-items: end;\n }\n &__name {\n font-weight: var(--mer-font__weight--medium);\n font-size: var(--mer-font__size--3xs);\n color: var(--mer-text__on-elevation);\n }\n &__organization {\n font-weight: var(--mer-font__weight--light);\n font-size: var(--mer-font__size--4xs);\n color: var(--mer-text__neutral);\n }\n &__name,\n &__organization {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-inline-size: 120px;\n display: inline-block;\n }\n &__avatar {\n font-size: 9px;\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n block-size: var(--mer-spacing--lg);\n inline-size: var(--mer-spacing--lg);\n color: var(--mer-text__on-elevation);\n border-radius: 50%;\n background-color: var(--mer-color__tinted-primary--10);\n border: var(--mer-border__width--sm) solid var(--mer-color__primary--200);\n }\n\n &__footer {\n display: flex;\n flex-direction: column;\n gap: var(--mer-spacing--2xs);\n }\n}\n\n.agreement-link {\n text-decoration: underline;\n cursor: pointer;\n}\n","/* STENCIL IMPORTS */\nimport { Component, Element, Host, Prop, State, h } from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { getInitialsFromName, limitFullName } from \"./helpers\";\nimport { DropdownModel } from \"@genexus/chameleon-controls-library\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n // TODO: review if \"utils/form--full\" is required.\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"components/switch\",\n \"components/icon\",\n \"components/dropdown\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"navigation\",\n name: \"chevron-down\",\n colorType: \"neutral\"\n});\n\nconst MY_ACCOUNT_ID = \"my-account\";\nconst CHANGE_TEAM_ID = \"change-team\";\nconst SIGN_OUT_ID = \"sign-out\";\nconst LANGUAGE_ID = \"language\";\n\n@Component({\n tag: \"gx-ide-current-user-info\",\n styleUrl: \"current-user-info.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/current-user-info\"]\n})\nexport class GxIdeNewEnvironment {\n #componentLocale: any;\n #initials: string = \"\";\n // #mode: Mode;\n #menuDropdownModel: DropdownModel;\n\n @Element() el: HTMLGxIdeCurrentUserInfoElement;\n #userLoginButton: HTMLButtonElement;\n\n @State() showMenu: boolean = false;\n\n /**\n * User data\n */\n @Prop() readonly userInfo: UserInfo;\n\n /**\n * Callback executed when the user click \"My Account\" link\n */\n @Prop() readonly myAccountCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user click \"change team\" link\n */\n @Prop() readonly changeTeamCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user click \"Language\" link\n */\n @Prop() readonly changeLanguageCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user switch the \"Mode\" status\n */\n @Prop() readonly changeModeCallback!: (mode: Mode) => Promise<void>;\n\n /**\n * Callback executed when the user click \"Sign Out\" link\n */\n @Prop() readonly signOutCallback!: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"term and conditions\" link\n */\n @Prop() readonly termsCallback: () => Promise<void>;\n\n /**\n * Callback executed when the user clicks on the \"privacy policy\" link\n */\n @Prop() readonly privacyCallback: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#initials = getInitialsFromName(this.userInfo.name);\n this.#menuDropdownModel = [\n // {\n // id: MY_ACCOUNT_ID,\n // caption: this.#componentLocale.myAccountLabel,\n // showSeparator: false\n // },\n {\n id: CHANGE_TEAM_ID,\n caption: this.#componentLocale.changeTeamLabel,\n showSeparator: false\n },\n {\n id: SIGN_OUT_ID,\n caption: this.#componentLocale.signOutLabel,\n showSeparator: true\n }\n // {\n // id: LANGUAGE_ID,\n // caption: this.#componentLocale.languageLabel,\n // showSeparator: true\n // }\n ];\n }\n\n // #handleModeSwitch = () => {\n // this.#mode = this.#mode === \"dark\" ? \"light\" : \"dark\";\n // if (this.changeModeCallback) {\n // this.changeModeCallback(this.#mode);\n // }\n // };\n\n #dropDownitemClickHandler = (\n _event: UIEvent,\n _target: string,\n itemId: string\n ): void => {\n if (itemId === MY_ACCOUNT_ID) {\n // this.myAccountCallback();\n } else if (itemId === CHANGE_TEAM_ID) {\n this.changeTeamCallback();\n } else if (itemId === SIGN_OUT_ID) {\n this.signOutCallback();\n } else if (itemId === LANGUAGE_ID) {\n this.changeLanguageCallback();\n }\n };\n\n render() {\n const userName = limitFullName(this.userInfo?.name);\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-dropdown-render\n class=\"dropdown\"\n model={this.#menuDropdownModel}\n position=\"InsideEnd_OutsideEnd\"\n itemClickCallback={this.#dropDownitemClickHandler}\n >\n <button\n class=\"user-login__button\"\n ref={el => (this.#userLoginButton = el as HTMLButtonElement)}\n slot=\"action\"\n >\n <div class=\"user-login__details\">\n {userName ? (\n <span class=\"user-login__name\">{userName}</span>\n ) : null}\n {this.userInfo?.team ? (\n <span class=\"user-login__organization\">\n {this.userInfo.team}\n </span>\n ) : null}\n </div>\n\n <div class=\"user-login__avatar\">{this.#initials}</div>\n <ch-image\n src={CHEVRON_DOWN_ICON}\n class=\"icon-md\"\n containerRef={this.#userLoginButton}\n ></ch-image>\n </button>\n <div class=\"user-login__footer footer-slot\" slot=\"footer\">\n <span\n class=\"text-body-regular-s agreement-link\"\n onClick={this.termsCallback}\n >\n {this.#componentLocale.termsAndConditionsText}\n </span>\n <span\n class=\"text-body-regular-s agreement-link\"\n onClick={this.privacyCallback}\n >\n {this.#componentLocale.privacyPolicyText}\n </span>\n </div>\n </ch-dropdown-render>\n </Host>\n );\n }\n}\n\nexport type UserInfo = {\n name: string;\n team: string;\n};\n\nexport type Mode = \"dark\" | \"light\";\n"],"mappings":"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"}