@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.
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +10 -11
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +3 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +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-select-user-team.cjs.entry.js +38 -11
- package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +75 -13
- package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +244 -0
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/_helpers/entity-selector/entity-selector.js +4 -2
- package/dist/collection/components/_helpers/entity-selector/entity-selector.js.map +1 -1
- package/dist/collection/components/_helpers/ide-loader/ide-loader.css +1 -1
- package/dist/collection/components/current-user-info/current-user-info.css +6 -1
- package/dist/collection/components/current-user-info/current-user-info.js +32 -11
- package/dist/collection/components/current-user-info/current-user-info.js.map +1 -1
- package/dist/collection/components/current-user-info/gx-ide-assets/current-user-info/langs/current-user-info.lang.en.json +2 -1
- package/dist/collection/components/current-user-info/gx-ide-assets/current-user-info/langs/current-user-info.lang.ja.json +2 -1
- package/dist/collection/components/current-user-info/gx-ide-assets/current-user-info/langs/current-user-info.lang.zh.json +2 -1
- package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.en.json +5 -1
- package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.ja.json +5 -1
- package/dist/collection/components/select-user-team/gx-ide-assets/select-user-team/langs/select-user-team.lang.zh.json +5 -1
- package/dist/collection/components/select-user-team/helpers.js +1 -1
- package/dist/collection/components/select-user-team/helpers.js.map +1 -1
- package/dist/collection/components/select-user-team/select-user-team.css +8 -0
- package/dist/collection/components/select-user-team/select-user-team.js +42 -9
- package/dist/collection/components/select-user-team/select-user-team.js.map +1 -1
- package/dist/collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.en.json +15 -5
- package/dist/collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.ja.json +13 -3
- package/dist/collection/components/sign-in-team/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.zh.json +13 -3
- package/dist/collection/components/sign-in-team/sign-in-team.css +9 -4
- package/dist/collection/components/sign-in-team/sign-in-team.js +116 -15
- package/dist/collection/components/sign-in-team/sign-in-team.js.map +1 -1
- package/dist/collection/components/ww-attributes/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.en.json +30 -0
- package/dist/collection/components/ww-attributes/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.ja.json +30 -0
- package/dist/collection/components/ww-attributes/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.zh.json +30 -0
- package/dist/collection/components/ww-attributes/helpers.js +11 -0
- package/dist/collection/components/ww-attributes/helpers.js.map +1 -0
- package/dist/collection/components/ww-attributes/ww-attributes.css +70 -0
- package/dist/collection/components/ww-attributes/ww-attributes.js +468 -0
- package/dist/collection/components/ww-attributes/ww-attributes.js.map +1 -0
- package/dist/collection/testing/locale.e2e.js +1 -0
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/entity-selector.js +3 -1
- package/dist/components/entity-selector.js.map +1 -1
- package/dist/components/gx-ide-current-user-info.js +12 -12
- package/dist/components/gx-ide-current-user-info.js.map +1 -1
- package/dist/components/gx-ide-select-user-team.js +48 -13
- package/dist/components/gx-ide-select-user-team.js.map +1 -1
- package/dist/components/gx-ide-sign-in-team.js +86 -15
- package/dist/components/gx-ide-sign-in-team.js.map +1 -1
- package/dist/components/gx-ide-ww-attributes.d.ts +11 -0
- package/dist/components/gx-ide-ww-attributes.js +294 -0
- package/dist/components/gx-ide-ww-attributes.js.map +1 -0
- 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-current-user-info.entry.js +10 -11
- package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
- package/dist/esm/gx-ide-entity-selector.entry.js +3 -1
- package/dist/esm/gx-ide-entity-selector.entry.js.map +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-select-user-team.entry.js +38 -11
- package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
- package/dist/esm/gx-ide-sign-in-team.entry.js +75 -13
- package/dist/esm/gx-ide-sign-in-team.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js +240 -0
- package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/current-user-info/langs/current-user-info.lang.en.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/current-user-info/langs/current-user-info.lang.ja.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/current-user-info/langs/current-user-info.lang.zh.json +2 -1
- package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.en.json +5 -1
- package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.ja.json +5 -1
- package/dist/genexus-ide-ui/gx-ide-assets/select-user-team/langs/select-user-team.lang.zh.json +5 -1
- package/dist/genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.en.json +15 -5
- package/dist/genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.ja.json +13 -3
- package/dist/genexus-ide-ui/gx-ide-assets/sign-in-team/langs/sign-in-team.lang.zh.json +13 -3
- package/dist/genexus-ide-ui/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.en.json +30 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.ja.json +30 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ww-attributes/langs/ww-attributes.lang.zh.json +30 -0
- package/dist/genexus-ide-ui/{p-04d7f44c.entry.js → p-1693a2d1.entry.js} +4 -2
- package/dist/genexus-ide-ui/p-1693a2d1.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-5619120d.entry.js +341 -0
- package/dist/genexus-ide-ui/p-5619120d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-b12a5426.entry.js → p-a27c088d.entry.js} +45 -41
- package/dist/genexus-ide-ui/p-a27c088d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-c9b0fd13.entry.js → p-ab653cc2.entry.js} +44 -18
- package/dist/genexus-ide-ui/p-ab653cc2.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-b04a0ae3.entry.js +236 -0
- package/dist/genexus-ide-ui/p-b04a0ae3.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-6db2056c.entry.js → p-efebc74b.entry.js} +7 -7
- package/dist/genexus-ide-ui/p-efebc74b.entry.js.map +1 -0
- package/dist/types/components/_helpers/entity-selector/entity-selector.d.ts +1 -1
- package/dist/types/components/current-user-info/current-user-info.d.ts +6 -2
- package/dist/types/components/select-user-team/select-user-team.d.ts +9 -0
- package/dist/types/components/sign-in-team/sign-in-team.d.ts +13 -1
- package/dist/types/components/ww-attributes/helpers.d.ts +3 -0
- package/dist/types/components/ww-attributes/ww-attributes.d.ts +95 -0
- package/dist/types/components.d.ts +128 -17
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-04d7f44c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-0b33d2f9.entry.js +0 -163
- package/dist/genexus-ide-ui/p-0b33d2f9.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-6db2056c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-b12a5426.entry.js.map +0 -1
- 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
|
|
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
|
|
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
|
|
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,
|
|
56
|
-
if (
|
|
57
|
-
if (
|
|
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
|
|
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,
|
|
63
|
-
if (
|
|
64
|
-
if (typeof t === "function" ? e !== t || !
|
|
65
|
-
return
|
|
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,
|
|
68
|
+
var c, d, f, u, m;
|
|
69
69
|
|
|
70
|
-
const
|
|
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
|
|
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
|
-
|
|
103
|
-
if (
|
|
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 (
|
|
105
|
+
} else if (n === v) {
|
|
108
106
|
this.signOutCallback();
|
|
109
|
-
} else if (
|
|
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.
|
|
118
|
+
this.termsCallback = undefined;
|
|
119
|
+
this.privacyCallback = undefined;
|
|
121
120
|
}
|
|
122
121
|
async componentWillLoad() {
|
|
123
|
-
a(this, c, await
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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,
|
|
141
|
+
var e, i;
|
|
141
142
|
const o = limitFullName((e = this.userInfo) === null || e === void 0 ? void 0 : e.name);
|
|
142
|
-
return t(
|
|
143
|
+
return t(n, {
|
|
143
144
|
class: "widget"
|
|
144
145
|
}, t("ch-theme", {
|
|
145
|
-
model:
|
|
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,
|
|
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, ((
|
|
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:
|
|
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("
|
|
171
|
-
class: "text-body-regular-s
|
|
172
|
-
onClick: this.
|
|
173
|
-
}, l(this, c, "f").
|
|
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
|
|
183
|
+
return i(this);
|
|
180
184
|
}
|
|
181
185
|
};
|
|
182
186
|
|
|
183
|
-
c = new WeakMap, d = new WeakMap, f = new WeakMap, u = new WeakMap,
|
|
187
|
+
c = new WeakMap, d = new WeakMap, f = new WeakMap, u = new WeakMap, m = new WeakMap;
|
|
184
188
|
|
|
185
|
-
y.style =
|
|
189
|
+
y.style = r;
|
|
186
190
|
|
|
187
191
|
export { y as gx_ide_current_user_info };
|
|
188
|
-
//# sourceMappingURL=p-
|
|
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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"}
|