@genexus/genexus-ide-ui 1.1.65 → 1.1.67

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 (107) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js +66 -0
  3. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js.map +1 -0
  4. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +210 -0
  5. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -0
  6. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +29 -28
  7. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +10 -2
  9. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +34 -20
  11. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +9 -2
  13. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/collection-manifest.json +2 -0
  16. package/dist/collection/components/_helpers/comments-viewer/comments-viewer.css +41 -0
  17. package/dist/collection/components/_helpers/comments-viewer/comments-viewer.js +112 -0
  18. package/dist/collection/components/_helpers/comments-viewer/comments-viewer.js.map +1 -0
  19. package/dist/collection/components/_helpers/comments-viewer/gx-ide-assets/comments-viewer/langs/comments-viewer.lang.en.json +5 -0
  20. package/dist/collection/components/_helpers/comments-viewer/gx-ide-assets/comments-viewer/langs/comments-viewer.lang.ja.json +5 -0
  21. package/dist/collection/components/_helpers/comments-viewer/gx-ide-assets/comments-viewer/langs/comments-viewer.lang.zh.json +5 -0
  22. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.css +27 -0
  23. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js +273 -0
  24. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js.map +1 -0
  25. package/dist/collection/components/team-dev/bring-all-changes-selector/gx-ide-assets/team-dev-bring-all-changes-selector/langs/team-dev-bring-all-changes-selector.lang.en.json +22 -0
  26. package/dist/collection/components/team-dev/bring-all-changes-selector/gx-ide-assets/team-dev-bring-all-changes-selector/langs/team-dev-bring-all-changes-selector.lang.ja.json +22 -0
  27. package/dist/collection/components/team-dev/bring-all-changes-selector/gx-ide-assets/team-dev-bring-all-changes-selector/langs/team-dev-bring-all-changes-selector.lang.zh.json +22 -0
  28. package/dist/collection/components/team-dev/bring-changes/bring-changes.css +22 -8
  29. package/dist/collection/components/team-dev/bring-changes/bring-changes.js +69 -28
  30. package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
  31. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +6 -0
  32. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.ja.json +6 -0
  33. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +6 -0
  34. package/dist/collection/components/team-dev/preview/team-dev-preview.css +15 -0
  35. package/dist/collection/components/team-dev/preview/team-dev-preview.js +56 -20
  36. package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -1
  37. package/dist/collection/components/team-dev/update/update.js +31 -2
  38. package/dist/collection/components/team-dev/update/update.js.map +1 -1
  39. package/dist/collection/components/team-dev/version-control/commit/commit.js +33 -3
  40. package/dist/collection/components/team-dev/version-control/commit/commit.js.map +1 -1
  41. package/dist/collection/components/team-dev/version-control/common/types.js.map +1 -1
  42. package/dist/collection/testing/locale.e2e.js +3 -1
  43. package/dist/collection/testing/locale.e2e.js.map +1 -1
  44. package/dist/components/gx-ide-comments-viewer.d.ts +11 -0
  45. package/dist/components/gx-ide-comments-viewer.js +83 -0
  46. package/dist/components/gx-ide-comments-viewer.js.map +1 -0
  47. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.d.ts +11 -0
  48. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +232 -0
  49. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -0
  50. package/dist/components/gx-ide-team-dev-bring-changes.js +31 -28
  51. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  52. package/dist/components/gx-ide-team-dev-commit.js +13 -3
  53. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  54. package/dist/components/gx-ide-team-dev-preview.js +37 -21
  55. package/dist/components/gx-ide-team-dev-preview.js.map +1 -1
  56. package/dist/components/gx-ide-team-dev-update.js +12 -3
  57. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  58. package/dist/esm/genexus-ide-ui.js +1 -1
  59. package/dist/esm/gx-ide-comments-viewer.entry.js +62 -0
  60. package/dist/esm/gx-ide-comments-viewer.entry.js.map +1 -0
  61. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +206 -0
  62. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -0
  63. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +29 -28
  64. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  65. package/dist/esm/gx-ide-team-dev-commit.entry.js +10 -2
  66. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  67. package/dist/esm/gx-ide-team-dev-preview.entry.js +34 -20
  68. package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -1
  69. package/dist/esm/gx-ide-team-dev-update.entry.js +9 -2
  70. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  71. package/dist/esm/loader.js +1 -1
  72. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  73. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  74. package/dist/genexus-ide-ui/gx-ide-assets/comments-viewer/langs/comments-viewer.lang.en.json +5 -0
  75. package/dist/genexus-ide-ui/gx-ide-assets/comments-viewer/langs/comments-viewer.lang.ja.json +5 -0
  76. package/dist/genexus-ide-ui/gx-ide-assets/comments-viewer/langs/comments-viewer.lang.zh.json +5 -0
  77. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-all-changes-selector/langs/team-dev-bring-all-changes-selector.lang.en.json +22 -0
  78. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-all-changes-selector/langs/team-dev-bring-all-changes-selector.lang.ja.json +22 -0
  79. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-all-changes-selector/langs/team-dev-bring-all-changes-selector.lang.zh.json +22 -0
  80. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +6 -0
  81. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.ja.json +6 -0
  82. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +6 -0
  83. package/dist/genexus-ide-ui/p-0488759f.entry.js +82 -0
  84. package/dist/genexus-ide-ui/p-0488759f.entry.js.map +1 -0
  85. package/dist/genexus-ide-ui/p-09693b80.entry.js +274 -0
  86. package/dist/genexus-ide-ui/p-09693b80.entry.js.map +1 -0
  87. package/dist/genexus-ide-ui/{p-ab8aee7d.entry.js → p-1890d374.entry.js} +209 -181
  88. package/dist/genexus-ide-ui/p-1890d374.entry.js.map +1 -0
  89. package/dist/genexus-ide-ui/{p-3d71b287.entry.js → p-9285b6db.entry.js} +34 -28
  90. package/dist/genexus-ide-ui/p-9285b6db.entry.js.map +1 -0
  91. package/dist/genexus-ide-ui/{p-73c3f9ec.entry.js → p-c8b0004e.entry.js} +15 -9
  92. package/dist/genexus-ide-ui/p-c8b0004e.entry.js.map +1 -0
  93. package/dist/genexus-ide-ui/{p-eeae4b37.entry.js → p-e2fd2c24.entry.js} +135 -128
  94. package/dist/genexus-ide-ui/p-e2fd2c24.entry.js.map +1 -0
  95. package/dist/types/components/_helpers/comments-viewer/comments-viewer.d.ts +19 -0
  96. package/dist/types/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.d.ts +45 -0
  97. package/dist/types/components/team-dev/bring-changes/bring-changes.d.ts +9 -1
  98. package/dist/types/components/team-dev/preview/team-dev-preview.d.ts +8 -0
  99. package/dist/types/components/team-dev/update/update.d.ts +8 -0
  100. package/dist/types/components/team-dev/version-control/commit/commit.d.ts +8 -0
  101. package/dist/types/components/team-dev/version-control/common/types.d.ts +1 -0
  102. package/dist/types/components.d.ts +94 -0
  103. package/package.json +1 -1
  104. package/dist/genexus-ide-ui/p-3d71b287.entry.js.map +0 -1
  105. package/dist/genexus-ide-ui/p-73c3f9ec.entry.js.map +0 -1
  106. package/dist/genexus-ide-ui/p-ab8aee7d.entry.js.map +0 -1
  107. package/dist/genexus-ide-ui/p-eeae4b37.entry.js.map +0 -1
@@ -0,0 +1,274 @@
1
+ import { r as t, h as i, H as e, a as s } from "./p-9b9ccd0c.js";
2
+
3
+ import { L as o } from "./p-311eedf3.js";
4
+
5
+ import { v as a, c as n } from "./p-b32b6b1f.js";
6
+
7
+ import { c as r } from "./p-c5196b3b.js";
8
+
9
+ const m = ":host{display:grid;block-size:100%;grid-template-rows:1fr max-content}.commit-date-container,.commit-number-container{display:grid;gap:15px}.commit-date-container{grid-template-rows:max-content max-content max-content max-content}.commit-number-container{grid-template-rows:max-content max-content max-content}.heading{margin-block:0}.tooltip{position:absolute}";
10
+
11
+ var h = undefined && undefined.__classPrivateFieldGet || function(t, i, e, s) {
12
+ if (e === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof i === "function" ? t !== i || !s : !i.has(t)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return e === "m" ? s : e === "a" ? s.call(t) : s ? s.value : i.get(t);
15
+ };
16
+
17
+ var l = undefined && undefined.__classPrivateFieldSet || function(t, i, e, s, o) {
18
+ if (s === "m") throw new TypeError("Private method is not writable");
19
+ if (s === "a" && !o) throw new TypeError("Private accessor was defined without a setter");
20
+ if (typeof i === "function" ? t !== i || !o : !i.has(t)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
21
+ return s === "a" ? o.call(t, e) : o ? o.value = e : i.set(t, e), e;
22
+ };
23
+
24
+ var c, d, f, u, p, b, v, w, y, g, k, C, D, _, M;
25
+
26
+ const W = [ "resets/box-sizing", "utils/form", "utils/spacing", "utils/layout", "components/checkbox", "components/button", "components/edit", "components/radio-group", "components/tooltip" ];
27
+
28
+ const x = {
29
+ fromCommitDate: {
30
+ value: "fromCommitDate"
31
+ },
32
+ fromCommitNumber: {
33
+ value: "fromCommitNumber"
34
+ }
35
+ };
36
+
37
+ const N = class {
38
+ constructor(e) {
39
+ t(this, e);
40
+ c.set(this, void 0);
41
+ d.set(this, void 0);
42
+ f.set(this, void 0);
43
+ // TODO: evaluate if this should be a global helper function.
44
+ // It is used on other dialogs as well.
45
+ u.set(this, (t => {
46
+ var e, s, o;
47
+ return ((s = (e = this.validatableControls) === null || e === void 0 ? void 0 : e.get(t === null || t === void 0 ? void 0 : t.id)) === null || s === void 0 ? void 0 : s.hasError) && ((o = this.validatableControls.get(t.id)) === null || o === void 0 ? void 0 : o.message) && i("ch-tooltip", {
48
+ class: "tooltip",
49
+ actionElement: t,
50
+ blockAlign: r.tooltipSettings.blockAlign,
51
+ inlineAlign: r.tooltipSettings.inlineAlign,
52
+ delay: r.tooltipSettings.delay
53
+ }, this.validatableControls.get(t.id).message);
54
+ }));
55
+ p.set(this, (t => {
56
+ t.forEach((t => {
57
+ if (t.id && !this.validatableControls.has(t.id)) {
58
+ this.validatableControls.set(t.id, {
59
+ reference: t,
60
+ hasError: false,
61
+ message: undefined
62
+ });
63
+ }
64
+ }));
65
+ }));
66
+ b.set(this, (async () => {
67
+ await this.cancelCallback();
68
+ }));
69
+ v.set(this, (async () => {
70
+ let t;
71
+ const i = {
72
+ operationType: this.selectedOption,
73
+ fromDate: this.selectedOption === "fromCommitDate" ? this.sinceCommitDate : undefined,
74
+ fromRevision: this.selectedOption === "fromCommitNumber" ? this.sinceCommitNumber : undefined
75
+ };
76
+ t = await this.confirmCallback(i);
77
+ this.validatableControls = a(t, this.validatableControls);
78
+ }));
79
+ w.set(this, (t => {
80
+ const i = new Date;
81
+ let e = new Date;
82
+ switch (t) {
83
+ case "lastSevenDays":
84
+ e.setDate(i.getDate() - 7);
85
+ break;
86
+
87
+ case "lastThirtyDays":
88
+ e.setDate(i.getDate() - 30);
89
+ break;
90
+
91
+ case "lastNinetyDays":
92
+ e.setDate(i.getDate() - 90);
93
+ break;
94
+ }
95
+ this.sinceCommitDate = e;
96
+ }));
97
+ y.set(this, (t => {
98
+ this.sinceCommitDate = t.detail && t.detail !== "" ? new Date(t.detail) : undefined;
99
+ n(this.validatableControls, "commit-date");
100
+ }));
101
+ g.set(this, (t => {
102
+ this.sinceCommitNumber = Number(t.detail);
103
+ n(this.validatableControls, "commit-number");
104
+ }));
105
+ k.set(this, (t => {
106
+ this.selectedOption = t.detail;
107
+ if (this.selectedOption === "fromCommitDate") {
108
+ this.sinceCommitNumber = undefined;
109
+ n(this.validatableControls, "commit-number");
110
+ } else if (this.selectedOption === "fromCommitNumber") {
111
+ this.sinceCommitDate = undefined;
112
+ n(this.validatableControls, "commit-date");
113
+ }
114
+ }));
115
+ C.set(this, (() => {
116
+ if (this.selectedOption === "fromCommitDate") {
117
+ // Validate that sinceCommitDate is a valid date
118
+ return !(this.sinceCommitDate instanceof Date && !isNaN(this.sinceCommitDate.getTime()));
119
+ } else if (this.selectedOption === "fromCommitNumber") {
120
+ // Validate that sinceCommitNumber is a valid number
121
+ return !(this.sinceCommitNumber > 0);
122
+ }
123
+ return true;
124
+ }));
125
+ D.set(this, (() => {
126
+ var t;
127
+ if (this.selectedOption !== "fromCommitDate") {
128
+ return null;
129
+ }
130
+ return i("div", {
131
+ class: "layout layout--cols-2-1"
132
+ }, i("div", {
133
+ class: "layout__panel"
134
+ }, i("div", {
135
+ class: "field field-block"
136
+ }, i("label", {
137
+ class: "label",
138
+ htmlFor: "commit-date"
139
+ }, h(this, c, "f").labels.commitDate), i("ch-edit", {
140
+ class: {
141
+ input: true,
142
+ "input-error": (t = this.validatableControls.get("commit-date")) === null || t === void 0 ? void 0 : t.hasError
143
+ },
144
+ id: "commit-date",
145
+ type: "date",
146
+ value: this.sinceCommitDate && this.sinceCommitDate.toISOString().split("T")[0],
147
+ onInput: h(this, y, "f"),
148
+ ref: t => l(this, f, t, "f")
149
+ }), h(this, u, "f").call(this, h(this, f, "f")))));
150
+ }));
151
+ _.set(this, (() => {
152
+ var t;
153
+ if (this.selectedOption !== "fromCommitNumber") {
154
+ return null;
155
+ }
156
+ return i("div", {
157
+ class: "layout layout--cols-2-1"
158
+ }, i("div", {
159
+ class: "layout__panel"
160
+ }, i("div", {
161
+ class: "field field-block"
162
+ }, i("label", {
163
+ class: "label",
164
+ htmlFor: "commit-number"
165
+ }, h(this, c, "f").labels.commitNumber), i("ch-edit", {
166
+ class: {
167
+ input: true,
168
+ "input-error": (t = this.validatableControls.get("commit-number")) === null || t === void 0 ? void 0 : t.hasError
169
+ },
170
+ id: "commit-number",
171
+ type: "number",
172
+ placeholder: h(this, c, "f").placeholders.commitNumber,
173
+ onInput: h(this, g, "f"),
174
+ mode: "numeric",
175
+ ref: t => l(this, d, t, "f")
176
+ }), h(this, u, "f").call(this, h(this, d, "f")))));
177
+ }));
178
+ M.set(this, (() => {
179
+ if (this.selectedOption !== "fromCommitDate") {
180
+ return null;
181
+ }
182
+ return i("div", {
183
+ class: "layout layout--cols-3"
184
+ }, i("div", {
185
+ class: "layout__panel"
186
+ }, i("button", {
187
+ class: "button-secondary",
188
+ onClick: () => h(this, w, "f").call(this, "lastSevenDays")
189
+ }, h(this, c, "f").captions.lastSevenDays)), i("div", {
190
+ class: "layout__panel"
191
+ }, i("button", {
192
+ class: "button-secondary",
193
+ onClick: () => h(this, w, "f").call(this, "lastThirtyDays")
194
+ }, h(this, c, "f").captions.lastThirtyDays)), i("div", {
195
+ class: "layout__panel"
196
+ }, i("button", {
197
+ class: "button-secondary",
198
+ onClick: () => h(this, w, "f").call(this, "lastNinetyDays")
199
+ }, h(this, c, "f").captions.lastNinetyDays)));
200
+ }));
201
+ this.sinceCommitDate = undefined;
202
+ this.sinceCommitNumber = undefined;
203
+ this.selectedOption = x.fromCommitDate.value;
204
+ this.radioGroupModel = [];
205
+ this.validatableControls = new Map;
206
+ this.cancelCallback = undefined;
207
+ this.confirmCallback = undefined;
208
+ }
209
+ async componentWillLoad() {
210
+ l(this, c, await o.getComponentStrings(this.el), "f");
211
+ this.radioGroupModel = [ {
212
+ value: x.fromCommitDate.value,
213
+ caption: h(this, c, "f").captions.commitDate
214
+ }, {
215
+ value: x.fromCommitNumber.value,
216
+ caption: h(this, c, "f").captions.commitNumber
217
+ } ];
218
+ }
219
+ componentDidRender() {
220
+ if (this.selectedOption === "fromCommitDate" && h(this, f, "f")) {
221
+ h(this, p, "f").call(this, [ h(this, f, "f") ]);
222
+ }
223
+ if (this.selectedOption === "fromCommitNumber" && h(this, d, "f")) {
224
+ h(this, p, "f").call(this, [ h(this, d, "f") ]);
225
+ }
226
+ }
227
+ render() {
228
+ return i(e, {
229
+ class: "widget"
230
+ }, i("ch-theme", {
231
+ model: W
232
+ }), i("div", {
233
+ class: {
234
+ "spacing-body": true,
235
+ "commit-date-container": this.selectedOption === "fromCommitDate",
236
+ "commit-number-container": this.selectedOption === "fromCommitNumber"
237
+ }
238
+ }, i("p", {
239
+ class: "body-regular-m heading"
240
+ }, h(this, c, "f").labels.selectRange), i("ch-radio-group-render", {
241
+ class: "radio-group",
242
+ direction: "horizontal",
243
+ model: this.radioGroupModel,
244
+ onChange: h(this, k, "f"),
245
+ value: x.fromCommitDate.value
246
+ }), h(this, M, "f").call(this), h(this, D, "f").call(this), h(this, _, "f").call(this)), i("footer", {
247
+ class: "control-footer-with-border spacing-body"
248
+ }, i("div", {
249
+ class: "buttons-spacer"
250
+ }, i("button", {
251
+ class: "button-secondary",
252
+ onClick: h(this, b, "f")
253
+ }, h(this, c, "f").buttons.cancel), i("button", {
254
+ class: "button-primary",
255
+ onClick: h(this, v, "f"),
256
+ disabled: h(this, C, "f").call(this)
257
+ }, h(this, c, "f").buttons.confirm))));
258
+ }
259
+ static get assetsDirs() {
260
+ return [ "gx-ide-assets/team-dev-bring-all-changes-selector" ];
261
+ }
262
+ get el() {
263
+ return s(this);
264
+ }
265
+ };
266
+
267
+ c = new WeakMap, d = new WeakMap, f = new WeakMap, u = new WeakMap, p = new WeakMap,
268
+ b = new WeakMap, v = new WeakMap, w = new WeakMap, y = new WeakMap, g = new WeakMap,
269
+ k = new WeakMap, C = new WeakMap, D = new WeakMap, _ = new WeakMap, M = new WeakMap;
270
+
271
+ N.style = m;
272
+
273
+ export { N as gx_ide_team_dev_bring_all_changes_selector };
274
+ //# sourceMappingURL=p-09693b80.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["bringAllChangesSelectorCss","CSS_BUNDLES","MERGE_ACTION_OPTIONS","fromCommitDate","value","fromCommitNumber","GxIdeBringAllChangesSelector","_GxIdeBringAllChangesSelector_componentLocale","set","this","_GxIdeBringAllChangesSelector_revisionNumberRef","_GxIdeBringAllChangesSelector_revisionDateRef","_GxIdeBringAllChangesSelector_evaluateTooltipRender","controlReference","_b","_a","validatableControls","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeBringAllChangesSelector_initializeValidatableControls","forEach","validatableControl","has","reference","undefined","_GxIdeBringAllChangesSelector_cancelClickHandler","async","cancelCallback","_GxIdeBringAllChangesSelector_confirmClickHandler","formSubmitResult","selectedMergeActionData","operationType","selectedOption","fromDate","sinceCommitDate","fromRevision","sinceCommitNumber","confirmCallback","validateControls","_GxIdeBringAllChangesSelector_handleLastDates","lastDates","currentDate","Date","sinceDate","setDate","getDate","_GxIdeBringAllChangesSelector_handleCommitDateValueChanged","event","detail","clearControlError","_GxIdeBringAllChangesSelector_handleCommitNumberValueChanged","Number","_GxIdeBringAllChangesSelector_handleRadioGroupValueChange","_GxIdeBringAllChangesSelector_confirmButtonDisabled","isNaN","getTime","_GxIdeBringAllChangesSelector_renderCommitDateInput","htmlFor","__classPrivateFieldGet","labels","commitDate","input","type","toISOString","split","onInput","ref","el","__classPrivateFieldSet","call","_GxIdeBringAllChangesSelector_renderCommitNumberInput","commitNumber","placeholder","placeholders","mode","_GxIdeBringAllChangesSelector_renderLastDatesButtons","onClick","captions","lastSevenDays","lastThirtyDays","lastNinetyDays","Map","componentWillLoad","Locale","getComponentStrings","radioGroupModel","caption","componentDidRender","render","Host","model","selectRange","direction","onChange","buttons","cancel","disabled","confirm"],"sources":["src/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.scss?tag=gx-ide-team-dev-bring-all-changes-selector&encapsulation=shadow","src/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.commit-date-container,\n.commit-number-container {\n display: grid;\n gap: 15px;\n}\n\n.commit-date-container {\n grid-template-rows: max-content max-content max-content max-content;\n}\n\n.commit-number-container {\n grid-template-rows: max-content max-content max-content;\n}\n\n.heading {\n margin-block: 0;\n}\n\n.tooltip {\n position: absolute;\n}\n","import { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\nimport {\n ChRadioGroupRenderCustomEvent,\n RadioGroupModel\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../components\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { config } from \"../../../common/config\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/spacing\",\n \"utils/layout\",\n \"components/checkbox\",\n \"components/button\",\n \"components/edit\",\n \"components/radio-group\",\n \"components/tooltip\"\n];\n\nconst MERGE_ACTION_OPTIONS = {\n fromCommitDate: {\n value: \"fromCommitDate\"\n },\n fromCommitNumber: {\n value: \"fromCommitNumber\"\n }\n};\n\n@Component({\n tag: \"gx-ide-team-dev-bring-all-changes-selector\",\n styleUrl: \"bring-all-changes-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-all-changes-selector\"]\n})\nexport class GxIdeBringAllChangesSelector {\n #componentLocale: any;\n #revisionNumberRef: HTMLChEditElement;\n #revisionDateRef: HTMLChEditElement;\n @Element() el: HTMLGxIdeTeamDevBringAllChangesSelectorElement;\n /**\n * Date from which the commits will be merged\n */\n @State() sinceCommitDate: Date | undefined = undefined;\n\n /**\n * Number from which the commits will be merged\n */\n @State() sinceCommitNumber: number | undefined = undefined;\n\n /**\n * The selected option from the radio group.\n */\n @State() selectedOption: MergeActionTaken = MERGE_ACTION_OPTIONS\n .fromCommitDate.value as MergeActionTaken;\n\n /**\n * Model for the radio group.\n */\n @State() radioGroupModel: RadioGroupModel = [];\n\n /**\n * Map of validatable controls in the form.\n */\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed.\n */\n @Prop() readonly confirmCallback!: (\n selectedMergeActionData: SelectedMergeActionData\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.radioGroupModel = [\n {\n value: MERGE_ACTION_OPTIONS.fromCommitDate.value,\n caption: this.#componentLocale.captions.commitDate\n },\n {\n value: MERGE_ACTION_OPTIONS.fromCommitNumber.value,\n caption: this.#componentLocale.captions.commitNumber\n }\n ];\n }\n\n componentDidRender() {\n if (this.selectedOption === \"fromCommitDate\" && this.#revisionDateRef) {\n this.#initializeValidatableControls([this.#revisionDateRef]);\n }\n\n if (this.selectedOption === \"fromCommitNumber\" && this.#revisionNumberRef) {\n this.#initializeValidatableControls([this.#revisionNumberRef]);\n }\n }\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #initializeValidatableControls = (validatableControls: HTMLElement[]) => {\n validatableControls.forEach(validatableControl => {\n if (\n validatableControl.id &&\n !this.validatableControls.has(validatableControl.id)\n ) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #cancelClickHandler = async () => {\n await this.cancelCallback();\n };\n\n #confirmClickHandler = async () => {\n let formSubmitResult: FormSubmitResult;\n const selectedMergeActionData: SelectedMergeActionData = {\n operationType: this.selectedOption,\n fromDate:\n this.selectedOption === \"fromCommitDate\"\n ? this.sinceCommitDate\n : undefined,\n fromRevision:\n this.selectedOption === \"fromCommitNumber\"\n ? this.sinceCommitNumber\n : undefined\n };\n formSubmitResult = await this.confirmCallback(selectedMergeActionData);\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n };\n\n #handleLastDates = (lastDates: LastDates) => {\n const currentDate = new Date();\n let sinceDate = new Date();\n switch (lastDates) {\n case \"lastSevenDays\":\n sinceDate.setDate(currentDate.getDate() - 7);\n break;\n case \"lastThirtyDays\":\n sinceDate.setDate(currentDate.getDate() - 30);\n break;\n case \"lastNinetyDays\":\n sinceDate.setDate(currentDate.getDate() - 90);\n break;\n }\n this.sinceCommitDate = sinceDate;\n };\n\n #handleCommitDateValueChanged = (event: CustomEvent<string> | InputEvent) => {\n this.sinceCommitDate =\n event.detail && event.detail !== \"\" ? new Date(event.detail) : undefined;\n clearControlError(this.validatableControls, \"commit-date\");\n };\n\n #handleCommitNumberValueChanged = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.sinceCommitNumber = Number(event.detail);\n clearControlError(this.validatableControls, \"commit-number\");\n };\n\n #handleRadioGroupValueChange = (\n event: ChRadioGroupRenderCustomEvent<string>\n ) => {\n this.selectedOption = event.detail as MergeActionTaken;\n if (this.selectedOption === \"fromCommitDate\") {\n this.sinceCommitNumber = undefined;\n clearControlError(this.validatableControls, \"commit-number\");\n } else if (this.selectedOption === \"fromCommitNumber\") {\n this.sinceCommitDate = undefined;\n clearControlError(this.validatableControls, \"commit-date\");\n }\n };\n\n #confirmButtonDisabled = (): boolean => {\n if (this.selectedOption === \"fromCommitDate\") {\n // Validate that sinceCommitDate is a valid date\n return !(\n this.sinceCommitDate instanceof Date &&\n !isNaN(this.sinceCommitDate.getTime())\n );\n } else if (this.selectedOption === \"fromCommitNumber\") {\n // Validate that sinceCommitNumber is a valid number\n return !(this.sinceCommitNumber > 0);\n }\n return true;\n };\n\n #renderCommitDateInput = () => {\n if (this.selectedOption !== \"fromCommitDate\") {\n return null;\n }\n return (\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"commit-date\">\n {this.#componentLocale.labels.commitDate}\n </label>\n <ch-edit\n class={{\n \"input\": true,\n \"input-error\":\n this.validatableControls.get(\"commit-date\")?.hasError\n }}\n id=\"commit-date\"\n type=\"date\"\n value={\n this.sinceCommitDate &&\n this.sinceCommitDate.toISOString().split(\"T\")[0]\n }\n onInput={this.#handleCommitDateValueChanged}\n ref={(el: HTMLChEditElement) =>\n (this.#revisionDateRef = el as HTMLChEditElement)\n }\n />\n {this.#evaluateTooltipRender(this.#revisionDateRef)}\n </div>\n </div>\n </div>\n );\n };\n\n #renderCommitNumberInput = () => {\n if (this.selectedOption !== \"fromCommitNumber\") {\n return null;\n }\n return (\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"commit-number\">\n {this.#componentLocale.labels.commitNumber}\n </label>\n <ch-edit\n class={{\n \"input\": true,\n \"input-error\":\n this.validatableControls.get(\"commit-number\")?.hasError\n }}\n id=\"commit-number\"\n type=\"number\"\n placeholder={this.#componentLocale.placeholders.commitNumber}\n onInput={this.#handleCommitNumberValueChanged}\n mode=\"numeric\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionNumberRef = el as HTMLChEditElement)\n }\n />\n {this.#evaluateTooltipRender(this.#revisionNumberRef)}\n </div>\n </div>\n </div>\n );\n };\n\n #renderLastDatesButtons = () => {\n if (this.selectedOption !== \"fromCommitDate\") {\n return null;\n }\n\n return (\n <div class=\"layout layout--cols-3\">\n <div class=\"layout__panel\">\n <button\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastSevenDays\")}\n >\n {this.#componentLocale.captions.lastSevenDays}\n </button>\n </div>\n <div class=\"layout__panel\">\n <button\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastThirtyDays\")}\n >\n {this.#componentLocale.captions.lastThirtyDays}\n </button>\n </div>\n <div class=\"layout__panel\">\n <button\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastNinetyDays\")}\n >\n {this.#componentLocale.captions.lastNinetyDays}\n </button>\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div\n class={{\n \"spacing-body\": true,\n \"commit-date-container\": this.selectedOption === \"fromCommitDate\",\n \"commit-number-container\":\n this.selectedOption === \"fromCommitNumber\"\n }}\n >\n <p class=\"body-regular-m heading\">\n {this.#componentLocale.labels.selectRange}\n </p>\n <ch-radio-group-render\n class=\"radio-group\"\n direction=\"horizontal\"\n model={this.radioGroupModel}\n onChange={this.#handleRadioGroupValueChange}\n value={MERGE_ACTION_OPTIONS.fromCommitDate.value}\n />\n\n {this.#renderLastDatesButtons()}\n {this.#renderCommitDateInput()}\n {this.#renderCommitNumberInput()}\n </div>\n\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button class=\"button-secondary\" onClick={this.#cancelClickHandler}>\n {this.#componentLocale.buttons.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n onClick={this.#confirmClickHandler}\n disabled={this.#confirmButtonDisabled()}\n >\n {this.#componentLocale.buttons.confirm}\n </button>\n </div>\n </footer>\n </Host>\n );\n }\n}\n\nexport type SelectedMergeActionData = {\n operationType: MergeActionTaken;\n fromDate?: Date;\n fromRevision?: number;\n};\n\nexport type MergeActionTaken = \"fromCommitDate\" | \"fromCommitNumber\";\n\nexport type LastDates = \"lastSevenDays\" | \"lastThirtyDays\" | \"lastNinetyDays\";\n"],"mappings":"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"}