@genexus/genexus-ide-ui 1.1.48 → 1.1.50

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 (79) hide show
  1. package/dist/cjs/{form-validation-178cf461.js → form-validation-54acc775.js} +11 -1
  2. package/dist/cjs/form-validation-54acc775.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-name-picker.cjs.entry.js +2 -1
  9. package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  13. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +61 -30
  14. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  15. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/collection/common/form-validation.js +9 -0
  18. package/dist/collection/common/form-validation.js.map +1 -1
  19. package/dist/collection/components/name-picker/name-picker.js +2 -1
  20. package/dist/collection/components/name-picker/name-picker.js.map +1 -1
  21. package/dist/collection/components/team-dev/server-selector/server-selector.css +4 -0
  22. package/dist/collection/components/team-dev/server-selector/server-selector.js +72 -32
  23. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  24. package/dist/components/form-validation.js +10 -1
  25. package/dist/components/form-validation.js.map +1 -1
  26. package/dist/components/gx-ide-name-picker.js +2 -1
  27. package/dist/components/gx-ide-name-picker.js.map +1 -1
  28. package/dist/components/gx-ide-server-selector.js +61 -31
  29. package/dist/components/gx-ide-server-selector.js.map +1 -1
  30. package/dist/esm/{form-validation-cd0215c6.js → form-validation-21ab3766.js} +11 -2
  31. package/dist/esm/form-validation-21ab3766.js.map +1 -0
  32. package/dist/esm/genexus-ide-ui.js +1 -1
  33. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  34. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  35. package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
  36. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  37. package/dist/esm/gx-ide-name-picker.entry.js +2 -1
  38. package/dist/esm/gx-ide-name-picker.entry.js.map +1 -1
  39. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  40. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  41. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  42. package/dist/esm/gx-ide-server-selector.entry.js +61 -30
  43. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  44. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  45. package/dist/esm/loader.js +1 -1
  46. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  47. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  48. package/dist/genexus-ide-ui/{p-4b06b578.entry.js → p-06561f7e.entry.js} +147 -121
  49. package/dist/genexus-ide-ui/p-06561f7e.entry.js.map +1 -0
  50. package/dist/genexus-ide-ui/{p-16a88fc3.entry.js → p-098a7288.entry.js} +2 -2
  51. package/dist/genexus-ide-ui/{p-0ae0616f.entry.js → p-5f65a4bb.entry.js} +2 -2
  52. package/dist/genexus-ide-ui/{p-443fc479.entry.js → p-5fe6189e.entry.js} +11 -11
  53. package/dist/genexus-ide-ui/{p-137a252f.entry.js → p-67cf4af1.entry.js} +2 -2
  54. package/dist/genexus-ide-ui/p-b32b6b1f.js +49 -0
  55. package/dist/genexus-ide-ui/p-b32b6b1f.js.map +1 -0
  56. package/dist/genexus-ide-ui/{p-d01bbc7a.entry.js → p-cccd6565.entry.js} +2 -2
  57. package/dist/genexus-ide-ui/{p-b34ecbdc.entry.js → p-d24c1115.entry.js} +2 -2
  58. package/dist/genexus-ide-ui/{p-09a634fc.entry.js → p-db07c544.entry.js} +8 -8
  59. package/dist/genexus-ide-ui/{p-af975c83.entry.js → p-eacc81c8.entry.js} +2 -2
  60. package/dist/genexus-ide-ui/{p-e3bce13e.entry.js → p-ee7232f2.entry.js} +33 -32
  61. package/dist/genexus-ide-ui/p-ee7232f2.entry.js.map +1 -0
  62. package/dist/types/common/form-validation.d.ts +1 -0
  63. package/dist/types/components/team-dev/server-selector/server-selector.d.ts +2 -6
  64. package/dist/types/components.d.ts +8 -6
  65. package/package.json +1 -1
  66. package/dist/cjs/form-validation-178cf461.js.map +0 -1
  67. package/dist/esm/form-validation-cd0215c6.js.map +0 -1
  68. package/dist/genexus-ide-ui/p-289c3290.js +0 -39
  69. package/dist/genexus-ide-ui/p-289c3290.js.map +0 -1
  70. package/dist/genexus-ide-ui/p-4b06b578.entry.js.map +0 -1
  71. package/dist/genexus-ide-ui/p-e3bce13e.entry.js.map +0 -1
  72. /package/dist/genexus-ide-ui/{p-16a88fc3.entry.js.map → p-098a7288.entry.js.map} +0 -0
  73. /package/dist/genexus-ide-ui/{p-0ae0616f.entry.js.map → p-5f65a4bb.entry.js.map} +0 -0
  74. /package/dist/genexus-ide-ui/{p-443fc479.entry.js.map → p-5fe6189e.entry.js.map} +0 -0
  75. /package/dist/genexus-ide-ui/{p-137a252f.entry.js.map → p-67cf4af1.entry.js.map} +0 -0
  76. /package/dist/genexus-ide-ui/{p-d01bbc7a.entry.js.map → p-cccd6565.entry.js.map} +0 -0
  77. /package/dist/genexus-ide-ui/{p-b34ecbdc.entry.js.map → p-d24c1115.entry.js.map} +0 -0
  78. /package/dist/genexus-ide-ui/{p-09a634fc.entry.js.map → p-db07c544.entry.js.map} +0 -0
  79. /package/dist/genexus-ide-ui/{p-af975c83.entry.js.map → p-eacc81c8.entry.js.map} +0 -0
@@ -5,10 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-2f1471c9.js');
6
6
  const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
7
7
  const config = require('./config-df6ba4e9.js');
8
+ const formValidation = require('./form-validation-54acc775.js');
8
9
  const locale = require('./locale-ff30a5f3.js');
9
10
  const tabularGridColumnSort = require('./tabular-grid-column-sort-5ca06dc1.js');
10
11
 
11
- const serverSelectorCss = ":host{display:grid;block-size:100%;grid-template-rows:max-content max-content 1fr max-content;row-gap:var(--mer-spacing--md);overflow:auto}:host(.new-connection){grid-template-rows:max-content 1fr}:host(.recently-used-empty){grid-template-rows:max-content 1fr}.section{display:contents}.tabular-grid{border-radius:var(--mer-border__radius--sm);overflow:hidden;overflow:auto;border-inline:1px solid var(--grid-cell__border-color)}.tabular-grid-rowset-empty{border-block-end:1px solid var(--grid-cell__border-color);overflow:hidden}.tabular-grid 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;min-inline-size:0}.text-neutral-gray-400,.tabular-grid-cell.text-neutral-gray-400{color:var(--mer-color__neutral-gray--400)}.search-server{inline-size:50%}.tabular-grid-recently-used .tabular-grid-column::part(bar){--grid-cell__padding-block:0;--grid-cell__padding-inline:0}.tabular-grid.tabular-grid-recently-used{border-block-end:1px solid var(--grid-cell__border-color);max-block-size:100px}.tabular-grid-all-servers{overflow:auto}.field-block-all-servers{overflow:auto}.tabular-grid-all-servers{border-block:1px solid var(--grid-cell__border-color)}.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar){--grid-common__gap:0}.tabular-grid-wrapper{position:relative;overflow:auto}.border-patch{--tabular-grid-border-radius:4px;position:absolute;top:0;inline-size:calc(100% - var(--tabular-grid-border-radius) * 2);inset-inline-start:var(--tabular-grid-border-radius);block-size:2px;background-color:var(--items-container__bg-color);z-index:9999;border-block-start:1px solid var(--mer-border-color__on-surface)}";
12
+ const serverSelectorCss = ":host{display:grid;block-size:100%;grid-template-rows:max-content max-content 1fr max-content;row-gap:var(--mer-spacing--md);overflow:auto}:host(.new-connection){grid-template-rows:max-content 1fr}:host(.recently-used-empty){grid-template-rows:max-content 1fr}.section{display:contents}.tabular-grid{border-radius:var(--mer-border__radius--sm);overflow:hidden;overflow:auto;border-inline:1px solid var(--grid-cell__border-color)}.tabular-grid-rowset-empty{border-block-end:1px solid var(--grid-cell__border-color);overflow:hidden}.tabular-grid 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;min-inline-size:0}.text-neutral-gray-400,.tabular-grid-cell.text-neutral-gray-400{color:var(--mer-color__neutral-gray--400)}.search-server{inline-size:50%}.tabular-grid-recently-used .tabular-grid-column::part(bar){--grid-cell__padding-block:0;--grid-cell__padding-inline:0}.tabular-grid.tabular-grid-recently-used{border-block-end:1px solid var(--grid-cell__border-color);max-block-size:100px}.tabular-grid-all-servers{overflow:auto}.field-block-all-servers{overflow:auto}.tabular-grid-all-servers{border-block:1px solid var(--grid-cell__border-color)}.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar){--grid-common__gap:0}.tabular-grid-wrapper{position:relative;overflow:auto}.border-patch{--tabular-grid-border-radius:4px;position:absolute;top:0;inline-size:calc(100% - var(--tabular-grid-border-radius) * 2);inset-inline-start:var(--tabular-grid-border-radius);block-size:2px;background-color:var(--items-container__bg-color);z-index:9999;border-block-start:1px solid var(--mer-border-color__on-surface)}.tooltip{position:absolute}";
12
13
 
13
14
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
14
15
  if (kind === "a" && !f)
@@ -26,7 +27,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
26
27
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
27
28
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
28
29
  };
29
- var _GxIdeServerSelector_chSearchIcon, _GxIdeServerSelector_versionsSelect, _GxIdeServerSelector__componentLocale, _GxIdeServerSelector_chGridRecentlyUsedServersEl, _GxIdeServerSelector_chGridConnectedServersEl, _GxIdeServerSelector_previousSelectedRowId, _GxIdeServerSelector_selectedRowId, _GxIdeServerSelector_serverUrlEL, _GxIdeServerSelector_cancelHandler, _GxIdeServerSelector_confirmHandler, _GxIdeServerSelector_filterValueChangedHandler, _GxIdeServerSelector_inputHandler, _GxIdeServerSelector_validateUrl, _GxIdeServerSelector_enableConfirmButton, _GxIdeServerSelector_selectConnectedServersHandler, _GxIdeServerSelector_selectRecentlyUsedServersHandler, _GxIdeServerSelector_handleServerSelection, _GxIdeServerSelector_connectionTypeChangedHandler, _GxIdeServerSelector_sortTabularGridColumnCallback, _GxIdeServerSelector_renderTabularGridColumnSet, _GxIdeServerSelector_renderTooltip, _GxIdeServerSelector_renderTabularGridCommonCells, _GxIdeServerSelector_renderRecentlyUsedServersGrid, _GxIdeServerSelector_renderConnectedServersGrid, _GxIdeServerSelector_renderIcon, _GxIdeServerSelector_renderFooter;
30
+ var _GxIdeServerSelector_chSearchIcon, _GxIdeServerSelector_versionsSelect, _GxIdeServerSelector__componentLocale, _GxIdeServerSelector_chGridRecentlyUsedServersEl, _GxIdeServerSelector_chGridConnectedServersEl, _GxIdeServerSelector_previousSelectedRowId, _GxIdeServerSelector_selectedRowId, _GxIdeServerSelector_serverUrlEL, _GxIdeServerSelector_serverFriendlyNameEL, _GxIdeServerSelector_cancelHandler, _GxIdeServerSelector_confirmHandler, _GxIdeServerSelector_evaluateTooltipRender, _GxIdeServerSelector_initializeValidatableControls, _GxIdeServerSelector_filterValueChangedHandler, _GxIdeServerSelector_inputHandler, _GxIdeServerSelector_enableConfirmButton, _GxIdeServerSelector_onConnectedServersRowDoubleClickHandler, _GxIdeServerSelector_onRecentlyUsedRowDoubleClickHandler, _GxIdeServerSelector_selectConnectedServersHandler, _GxIdeServerSelector_selectRecentlyUsedServersHandler, _GxIdeServerSelector_handleServerSelection, _GxIdeServerSelector_connectionTypeChangedHandler, _GxIdeServerSelector_sortTabularGridColumnCallback, _GxIdeServerSelector_renderTabularGridColumnSet, _GxIdeServerSelector_renderTooltip, _GxIdeServerSelector_renderTabularGridCommonCells, _GxIdeServerSelector_renderRecentlyUsedServersGrid, _GxIdeServerSelector_renderConnectedServersGrid, _GxIdeServerSelector_renderIcon, _GxIdeServerSelector_renderFooter;
30
31
  const CSS_BUNDLES = [
31
32
  "resets/box-sizing",
32
33
  "utils/form--full",
@@ -70,25 +71,48 @@ const GxIdeServerSelector = class {
70
71
  _GxIdeServerSelector_previousSelectedRowId.set(this, void 0);
71
72
  _GxIdeServerSelector_selectedRowId.set(this, void 0);
72
73
  _GxIdeServerSelector_serverUrlEL.set(this, void 0);
74
+ _GxIdeServerSelector_serverFriendlyNameEL.set(this, void 0);
73
75
  _GxIdeServerSelector_cancelHandler.set(this, () => {
74
76
  this.cancelCallback();
75
77
  });
76
78
  _GxIdeServerSelector_confirmHandler.set(this, async () => {
79
+ let formSubmitResult;
77
80
  if (this.selectedConnectionType === "select") {
78
- await this.selectServerCallback({
81
+ formSubmitResult = await this.selectServerCallback({
79
82
  uri: this.selectedServerUri,
80
83
  name: this.selectedServerName
81
- });
84
+ }, this.selectedConnectionType);
82
85
  }
83
- else if (this.selectedConnectionType === "new") {
84
- this.isValidUrl = __classPrivateFieldGet(this, _GxIdeServerSelector_validateUrl, "f").call(this, this.serverUrlInputValue);
85
- if (this.isValidUrl) {
86
- await this.selectServerCallback({
87
- uri: this.serverUrlInputValue,
88
- name: this.serverNameInputValue
86
+ else {
87
+ formSubmitResult = await this.selectServerCallback({
88
+ uri: this.serverUrlInputValue,
89
+ name: this.serverNameInputValue
90
+ }, this.selectedConnectionType);
91
+ this.validatableControls = formValidation.validateControls(formSubmitResult, this.validatableControls);
92
+ }
93
+ });
94
+ // TODO: evaluate if this should be a global helper function.
95
+ // It is used on other dialogs as well.
96
+ _GxIdeServerSelector_evaluateTooltipRender.set(this, (controlReference) => {
97
+ var _a, _b, _c;
98
+ return ((_b = (_a = this.validatableControls) === null || _a === void 0 ? void 0 : _a.get(controlReference === null || controlReference === void 0 ? void 0 : controlReference.id)) === null || _b === void 0 ? void 0 : _b.hasError) &&
99
+ ((_c = this.validatableControls.get(controlReference.id)) === null || _c === void 0 ? void 0 : _c.message) && (index.h("ch-tooltip", { class: "tooltip", actionElement: controlReference, blockAlign: config.config.tooltipSettings.blockAlign, inlineAlign: config.config.tooltipSettings.inlineAlign, delay: config.config.tooltipSettings.delay }, this.validatableControls.get(controlReference.id).message));
100
+ });
101
+ _GxIdeServerSelector_initializeValidatableControls.set(this, () => {
102
+ // populate validatableControls with the controls that could have errors.
103
+ const validatableControls = [
104
+ __classPrivateFieldGet(this, _GxIdeServerSelector_serverUrlEL, "f"),
105
+ __classPrivateFieldGet(this, _GxIdeServerSelector_serverFriendlyNameEL, "f")
106
+ ];
107
+ validatableControls.forEach(validatableControl => {
108
+ if (validatableControl.id) {
109
+ this.validatableControls.set(validatableControl.id, {
110
+ reference: validatableControl,
111
+ hasError: false,
112
+ message: undefined
89
113
  });
90
114
  }
91
- }
115
+ });
92
116
  });
93
117
  _GxIdeServerSelector_filterValueChangedHandler.set(this, (event) => {
94
118
  this.filterValue = event.detail.toLowerCase();
@@ -97,19 +121,10 @@ const GxIdeServerSelector = class {
97
121
  _GxIdeServerSelector_inputHandler.set(this, (event, field) => {
98
122
  this.enableConfirmButton = false;
99
123
  this[field] = event.detail;
124
+ const controlId = field === "serverUrlInputValue" ? "server-url" : "server-name";
125
+ formValidation.clearControlError(this.validatableControls, controlId);
100
126
  __classPrivateFieldGet(this, _GxIdeServerSelector_enableConfirmButton, "f").call(this);
101
127
  });
102
- _GxIdeServerSelector_validateUrl.set(this, (url) => {
103
- try {
104
- const serverUrl = new URL(url);
105
- const protocolValid = (serverUrl.protocol === "http:" || serverUrl.protocol === "https:") &&
106
- url.startsWith(`${serverUrl.protocol}//`);
107
- return protocolValid;
108
- }
109
- catch (ex) {
110
- return false;
111
- }
112
- });
113
128
  _GxIdeServerSelector_enableConfirmButton.set(this, () => {
114
129
  if (this.serverUrlInputValue &&
115
130
  this.serverUrlInputValue.length > 0 &&
@@ -121,6 +136,16 @@ const GxIdeServerSelector = class {
121
136
  this.enableConfirmButton = false;
122
137
  }
123
138
  });
139
+ _GxIdeServerSelector_onConnectedServersRowDoubleClickHandler.set(this, (event) => {
140
+ console.log("double click connected servers");
141
+ __classPrivateFieldGet(this, _GxIdeServerSelector_selectConnectedServersHandler, "f").call(this, event);
142
+ __classPrivateFieldGet(this, _GxIdeServerSelector_confirmHandler, "f").call(this);
143
+ });
144
+ _GxIdeServerSelector_onRecentlyUsedRowDoubleClickHandler.set(this, (event) => {
145
+ console.log("double click recently used");
146
+ __classPrivateFieldGet(this, _GxIdeServerSelector_selectRecentlyUsedServersHandler, "f").call(this, event);
147
+ __classPrivateFieldGet(this, _GxIdeServerSelector_confirmHandler, "f").call(this);
148
+ });
124
149
  _GxIdeServerSelector_selectConnectedServersHandler.set(this, (event) => __classPrivateFieldGet(this, _GxIdeServerSelector_handleServerSelection, "f").call(this, event, this.connectedServersData, __classPrivateFieldGet(this, _GxIdeServerSelector_chGridRecentlyUsedServersEl, "f")));
125
150
  _GxIdeServerSelector_selectRecentlyUsedServersHandler.set(this, (event) => __classPrivateFieldGet(this, _GxIdeServerSelector_handleServerSelection, "f").call(this, event, this.recentlyUsedServersData, __classPrivateFieldGet(this, _GxIdeServerSelector_chGridConnectedServersEl, "f")));
126
151
  _GxIdeServerSelector_handleServerSelection.set(this, async (event, serversData, otherGridEl) => {
@@ -173,10 +198,10 @@ const GxIdeServerSelector = class {
173
198
  ];
174
199
  });
175
200
  _GxIdeServerSelector_renderRecentlyUsedServersGrid.set(this, (hideColumnName) => {
176
- return (index.h("ch-tabular-grid", { class: "tabular-grid-recently-used tabular-grid", rowSelectionMode: "single", ref: (el) => (__classPrivateFieldSet(this, _GxIdeServerSelector_chGridRecentlyUsedServersEl, el, "f")), allowColumnReorder: false, onRowClicked: __classPrivateFieldGet(this, _GxIdeServerSelector_selectRecentlyUsedServersHandler, "f"), id: "recently-used-servers" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridColumnSet, "f").call(this, hideColumnName), this.recentlyUsedServersData.length > 0 ? (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, this.recentlyUsedServersData.map((server) => (index.h("ch-tabular-grid-row", { rowid: server.id, class: "tabular-grid-row" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridCommonCells, "f").call(this, server)))))) : (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, index.h("ch-tabular-grid-rowset-empty", null, index.h("gx-ide-empty-state", { stateIconSrc: INFO_ICON, stateTitle: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").emptyConnectedServers, isAnimated: true }))))));
201
+ return (index.h("ch-tabular-grid", { class: "tabular-grid-recently-used tabular-grid", rowSelectionMode: "single", ref: (el) => (__classPrivateFieldSet(this, _GxIdeServerSelector_chGridRecentlyUsedServersEl, el, "f")), allowColumnReorder: false, onRowDoubleClicked: __classPrivateFieldGet(this, _GxIdeServerSelector_onRecentlyUsedRowDoubleClickHandler, "f"), id: "recently-used-servers" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridColumnSet, "f").call(this, hideColumnName), this.recentlyUsedServersData.length > 0 ? (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, this.recentlyUsedServersData.map((server) => (index.h("ch-tabular-grid-row", { rowid: server.id, class: "tabular-grid-row" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridCommonCells, "f").call(this, server)))))) : (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, index.h("ch-tabular-grid-rowset-empty", null, index.h("gx-ide-empty-state", { stateIconSrc: INFO_ICON, stateTitle: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").emptyConnectedServers, isAnimated: true }))))));
177
202
  });
178
203
  _GxIdeServerSelector_renderConnectedServersGrid.set(this, () => {
179
- return (index.h("div", { class: "tabular-grid-wrapper" }, index.h("div", { class: "border-patch" }), index.h("ch-tabular-grid", { class: "tabular-grid tabular-grid-all-servers", rowSelectionMode: "single", ref: (el) => (__classPrivateFieldSet(this, _GxIdeServerSelector_chGridConnectedServersEl, el, "f")), allowColumnReorder: false, onRowClicked: __classPrivateFieldGet(this, _GxIdeServerSelector_selectConnectedServersHandler, "f"), id: "all-servers" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridColumnSet, "f").call(this), this.filteredConnectedServersData.length > 0 ? (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, this.filteredConnectedServersData.map((server) => (index.h("ch-tabular-grid-row", { rowid: server.id, class: "tabular-grid-row" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridCommonCells, "f").call(this, server)))))) : (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, index.h("ch-tabular-grid-rowset-empty", { class: "tabular-grid-rowset-empty" }, index.h("gx-ide-empty-state", { stateIconSrc: INFO_ICON, stateTitle: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").emptyConnectedServers, isAnimated: true })))))));
204
+ return (index.h("div", { class: "tabular-grid-wrapper" }, index.h("div", { class: "border-patch" }), index.h("ch-tabular-grid", { class: "tabular-grid tabular-grid-all-servers", rowSelectionMode: "single", ref: (el) => (__classPrivateFieldSet(this, _GxIdeServerSelector_chGridConnectedServersEl, el, "f")), allowColumnReorder: false, onRowDoubleClicked: __classPrivateFieldGet(this, _GxIdeServerSelector_onConnectedServersRowDoubleClickHandler, "f"), id: "all-servers" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridColumnSet, "f").call(this), this.filteredConnectedServersData.length > 0 ? (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, this.filteredConnectedServersData.map((server) => (index.h("ch-tabular-grid-row", { rowid: server.id, class: "tabular-grid-row" }, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTabularGridCommonCells, "f").call(this, server)))))) : (index.h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, index.h("ch-tabular-grid-rowset-empty", { class: "tabular-grid-rowset-empty" }, index.h("gx-ide-empty-state", { stateIconSrc: INFO_ICON, stateTitle: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").emptyConnectedServers, isAnimated: true })))))));
180
205
  });
181
206
  _GxIdeServerSelector_renderIcon.set(this, (accessLevel) => {
182
207
  const icon = accessLevel === "private" ? LOCK_ICON : LANGUAGE_ICON;
@@ -200,7 +225,6 @@ const GxIdeServerSelector = class {
200
225
  });
201
226
  this.enableConfirmButton = false;
202
227
  this.isFirstSelection = true;
203
- this.isValidUrl = true;
204
228
  this.serverUrlInputValue = "";
205
229
  this.serverNameInputValue = "";
206
230
  this.selectedServerUri = undefined;
@@ -222,6 +246,13 @@ const GxIdeServerSelector = class {
222
246
  this.userName = (_b = this.connectedServersData[0]) === null || _b === void 0 ? void 0 : _b.gxServerUsername;
223
247
  this.filteredConnectedServersData = this.connectedServersData;
224
248
  }
249
+ componentDidRender() {
250
+ if (this.selectedConnectionType === "new" &&
251
+ __classPrivateFieldGet(this, _GxIdeServerSelector_serverUrlEL, "f") &&
252
+ __classPrivateFieldGet(this, _GxIdeServerSelector_serverFriendlyNameEL, "f")) {
253
+ __classPrivateFieldGet(this, _GxIdeServerSelector_initializeValidatableControls, "f").call(this);
254
+ }
255
+ }
225
256
  render() {
226
257
  const connectionTypeClass = this.selectedConnectionType === "new" && "new-connection";
227
258
  const recentlyUsedEmptyClass = this.recentlyUsedServersData.length === 0 && "recently-used-empty";
@@ -230,16 +261,16 @@ const GxIdeServerSelector = class {
230
261
  index.h("div", { class: "field field-block field-block-all-servers spacing-body-inline" }, index.h("label", { class: "label", htmlFor: "all-servers" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").allServers.title), __classPrivateFieldGet(this, _GxIdeServerSelector_renderConnectedServersGrid, "f").call(this))
231
262
  ], this.selectedConnectionType === "new" && (index.h("section", { class: "spacing-body-inline" }, index.h("div", { class: "layout layout--cols-2" }, index.h("div", { class: "field field-block layout__panel" }, index.h("label", { class: "label", htmlFor: "server-url" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").labels.serverUrl), index.h("ch-edit", {
232
263
  // server url
233
- class: { "input": true, "input-error": !this.isValidUrl }, id: "server-url", value: this.serverUrlInputValue, onInput: event => __classPrivateFieldGet(this, _GxIdeServerSelector_inputHandler, "f").call(this, event, "serverUrlInputValue"), placeholder: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").placeholders.serverUrl, ref: el => (__classPrivateFieldSet(this, _GxIdeServerSelector_serverUrlEL, el, "f"))
234
- })), index.h("div", { class: "field field-block layout__panel" }, index.h("label", { class: "label", htmlFor: "server-name" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").labels.serverName), index.h("ch-edit", {
264
+ class: "input", id: "server-url", value: this.serverUrlInputValue, onInput: event => __classPrivateFieldGet(this, _GxIdeServerSelector_inputHandler, "f").call(this, event, "serverUrlInputValue"), placeholder: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").placeholders.serverUrl, ref: el => (__classPrivateFieldSet(this, _GxIdeServerSelector_serverUrlEL, el, "f"))
265
+ }), __classPrivateFieldGet(this, _GxIdeServerSelector_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeServerSelector_serverUrlEL, "f"))), index.h("div", { class: "field field-block layout__panel" }, index.h("label", { class: "label", htmlFor: "server-name" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").labels.serverName), index.h("ch-edit", {
235
266
  // server friendly name
236
- class: "input", id: "server-name", value: this.serverNameInputValue, onInput: event => __classPrivateFieldGet(this, _GxIdeServerSelector_inputHandler, "f").call(this, event, "serverNameInputValue"), placeholder: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").placeholders.serverName, maxLength: 18
237
- })), !this.isValidUrl && (index.h("ch-tooltip", { class: "tooltip", actionElement: __classPrivateFieldGet(this, _GxIdeServerSelector_serverUrlEL, "f"), blockAlign: "outside-end", inlineAlign: config.config.tooltipSettings.inlineAlign, delay: config.config.tooltipSettings.delay }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").errors.serverUrlInvalid))))), __classPrivateFieldGet(this, _GxIdeServerSelector_renderFooter, "f").call(this))));
267
+ class: "input", id: "server-name", value: this.serverNameInputValue, onInput: event => __classPrivateFieldGet(this, _GxIdeServerSelector_inputHandler, "f").call(this, event, "serverNameInputValue"), placeholder: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").placeholders.serverName, maxLength: 18, ref: el => (__classPrivateFieldSet(this, _GxIdeServerSelector_serverFriendlyNameEL, el, "f"))
268
+ }), __classPrivateFieldGet(this, _GxIdeServerSelector_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeServerSelector_serverFriendlyNameEL, "f")))))), __classPrivateFieldGet(this, _GxIdeServerSelector_renderFooter, "f").call(this))));
238
269
  }
239
270
  static get assetsDirs() { return ["gx-ide-assets/server-selector"]; }
240
271
  get el() { return index.getElement(this); }
241
272
  };
242
- _GxIdeServerSelector_chSearchIcon = new WeakMap(), _GxIdeServerSelector_versionsSelect = new WeakMap(), _GxIdeServerSelector__componentLocale = new WeakMap(), _GxIdeServerSelector_chGridRecentlyUsedServersEl = new WeakMap(), _GxIdeServerSelector_chGridConnectedServersEl = new WeakMap(), _GxIdeServerSelector_previousSelectedRowId = new WeakMap(), _GxIdeServerSelector_selectedRowId = new WeakMap(), _GxIdeServerSelector_serverUrlEL = new WeakMap(), _GxIdeServerSelector_cancelHandler = new WeakMap(), _GxIdeServerSelector_confirmHandler = new WeakMap(), _GxIdeServerSelector_filterValueChangedHandler = new WeakMap(), _GxIdeServerSelector_inputHandler = new WeakMap(), _GxIdeServerSelector_validateUrl = new WeakMap(), _GxIdeServerSelector_enableConfirmButton = new WeakMap(), _GxIdeServerSelector_selectConnectedServersHandler = new WeakMap(), _GxIdeServerSelector_selectRecentlyUsedServersHandler = new WeakMap(), _GxIdeServerSelector_handleServerSelection = new WeakMap(), _GxIdeServerSelector_connectionTypeChangedHandler = new WeakMap(), _GxIdeServerSelector_sortTabularGridColumnCallback = new WeakMap(), _GxIdeServerSelector_renderTabularGridColumnSet = new WeakMap(), _GxIdeServerSelector_renderTooltip = new WeakMap(), _GxIdeServerSelector_renderTabularGridCommonCells = new WeakMap(), _GxIdeServerSelector_renderRecentlyUsedServersGrid = new WeakMap(), _GxIdeServerSelector_renderConnectedServersGrid = new WeakMap(), _GxIdeServerSelector_renderIcon = new WeakMap(), _GxIdeServerSelector_renderFooter = new WeakMap();
273
+ _GxIdeServerSelector_chSearchIcon = new WeakMap(), _GxIdeServerSelector_versionsSelect = new WeakMap(), _GxIdeServerSelector__componentLocale = new WeakMap(), _GxIdeServerSelector_chGridRecentlyUsedServersEl = new WeakMap(), _GxIdeServerSelector_chGridConnectedServersEl = new WeakMap(), _GxIdeServerSelector_previousSelectedRowId = new WeakMap(), _GxIdeServerSelector_selectedRowId = new WeakMap(), _GxIdeServerSelector_serverUrlEL = new WeakMap(), _GxIdeServerSelector_serverFriendlyNameEL = new WeakMap(), _GxIdeServerSelector_cancelHandler = new WeakMap(), _GxIdeServerSelector_confirmHandler = new WeakMap(), _GxIdeServerSelector_evaluateTooltipRender = new WeakMap(), _GxIdeServerSelector_initializeValidatableControls = new WeakMap(), _GxIdeServerSelector_filterValueChangedHandler = new WeakMap(), _GxIdeServerSelector_inputHandler = new WeakMap(), _GxIdeServerSelector_enableConfirmButton = new WeakMap(), _GxIdeServerSelector_onConnectedServersRowDoubleClickHandler = new WeakMap(), _GxIdeServerSelector_onRecentlyUsedRowDoubleClickHandler = new WeakMap(), _GxIdeServerSelector_selectConnectedServersHandler = new WeakMap(), _GxIdeServerSelector_selectRecentlyUsedServersHandler = new WeakMap(), _GxIdeServerSelector_handleServerSelection = new WeakMap(), _GxIdeServerSelector_connectionTypeChangedHandler = new WeakMap(), _GxIdeServerSelector_sortTabularGridColumnCallback = new WeakMap(), _GxIdeServerSelector_renderTabularGridColumnSet = new WeakMap(), _GxIdeServerSelector_renderTooltip = new WeakMap(), _GxIdeServerSelector_renderTabularGridCommonCells = new WeakMap(), _GxIdeServerSelector_renderRecentlyUsedServersGrid = new WeakMap(), _GxIdeServerSelector_renderConnectedServersGrid = new WeakMap(), _GxIdeServerSelector_renderIcon = new WeakMap(), _GxIdeServerSelector_renderFooter = new WeakMap();
243
274
  GxIdeServerSelector.style = serverSelectorCss;
244
275
 
245
276
  exports.gx_ide_server_selector = GxIdeServerSelector;
@@ -1 +1 @@
1
- {"file":"gx-ide-server-selector.entry.cjs.js","mappings":"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","names":["getIconPath","sortTabularGridColumn","h","config","Locale","Host"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n overflow: auto;\n border-inline: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// Recently Used\n\n.tabular-grid-recently-used .tabular-grid-column::part(bar) {\n --grid-cell__padding-block: 0;\n --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.tabular-grid-recently-used {\n border-block-end: 1px solid var(--grid-cell__border-color);\n max-block-size: 100px;\n}\n\n// All Servers\n\n.tabular-grid-all-servers {\n overflow: auto;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n.tabular-grid-all-servers {\n border-block: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n\n// WA: .tabular-grid-wrapper and .border-patch is a WA. See details on Asana task:\n// https://app.asana.com/1/10206720691358/project/1207081021030105/task/1211391456974726?focus=true\n.tabular-grid-wrapper {\n position: relative;\n overflow: auto;\n}\n.border-patch {\n --tabular-grid-border-radius: 4px;\n position: absolute;\n top: 0;\n inline-size: calc(100% - var(--tabular-grid-border-radius) * 2);\n inset-inline-start: var(--tabular-grid-border-radius);\n block-size: 2px;\n background-color: var(--items-container__bg-color);\n z-index: 9999;\n border-block-start: 1px solid var(--mer-border-color__on-surface);\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation\n // validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nimport sortTabularGridColumn from \"../../../common/chameleon/tabular-grid-column-sort\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"select\", caption: \"Select a server from the list below\" },\n { value: \"new\", caption: \"Enter a server URL manually\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n\n #chGridRecentlyUsedServersEl: HTMLChTabularGridElement;\n #chGridConnectedServersEl: HTMLChTabularGridElement;\n #previousSelectedRowId: string | undefined;\n #selectedRowId: string | undefined;\n #serverUrlEL: HTMLChEditElement;\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * State to track if this is the first selection made by the user.\n */\n @State() isFirstSelection: boolean = true;\n\n /**\n * State to track if the server URL is valid.\n */\n @State() isValidUrl: boolean = true;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredConnectedServersData: ConnectedGXServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The list of connected GX servers.\n */\n @Prop({ mutable: true }) connectedServersData: ConnectedGXServerData[] = [];\n\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ConnectedGXServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin\n ) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.selectedServerUri = this.connectedServersData[0]?.serverUrl;\n this.userName = this.connectedServersData[0]?.gxServerUsername;\n\n this.filteredConnectedServersData = this.connectedServersData;\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void | ServerType> => {\n if (this.selectedConnectionType === \"select\") {\n await this.selectServerCallback({\n uri: this.selectedServerUri,\n name: this.selectedServerName\n });\n } else if (this.selectedConnectionType === \"new\") {\n this.isValidUrl = this.#validateUrl(this.serverUrlInputValue);\n if (this.isValidUrl) {\n await this.selectServerCallback({\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n });\n }\n }\n };\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredConnectedServersData = this.connectedServersData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = event.detail as string;\n this.#enableConfirmButton();\n };\n\n #validateUrl = (url: string): boolean => {\n try {\n const serverUrl = new URL(url);\n const protocolValid =\n (serverUrl.protocol === \"http:\" || serverUrl.protocol === \"https:\") &&\n url.startsWith(`${serverUrl.protocol}//`);\n return protocolValid;\n } catch (ex) {\n return false;\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #selectConnectedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.connectedServersData,\n this.#chGridRecentlyUsedServersEl\n );\n\n #selectRecentlyUsedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.recentlyUsedServersData,\n this.#chGridConnectedServersEl\n );\n\n #handleServerSelection = async (\n event: CustomEvent<TabularGridRowClickedEvent>,\n serversData: ConnectedGXServerData[],\n otherGridEl: HTMLChTabularGridElement\n ): Promise<void> => {\n if (!this.isFirstSelection) {\n this.#previousSelectedRowId = this.#selectedRowId;\n }\n this.#selectedRowId = event.detail.rowId;\n if (this.#selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n } else {\n const selectedServer = serversData.find(\n server => server.id === this.#selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.isFirstSelection = false;\n await otherGridEl?.selectRow(this.#previousSelectedRowId, false);\n }\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n this.filteredConnectedServersData = [\n ...sortTabularGridColumn(\n e,\n this.filteredConnectedServersData,\n \"string\",\n undefined\n )\n ];\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n columnName=\"Username\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"status\"\n class=\"tabular-grid-column\"\n columnName=\"Status\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderTabularGridCommonCells = (server: ConnectedGXServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(server.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-name\">\n {server.serverName}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-url\">\n {server.serverUrl}\n {this.#renderTooltip(server.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {server.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell text-neutral-gray-400 body-italic-s\">\n {server.isConnected && \"Connected\"}\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderRecentlyUsedServersGrid = (hideColumnName: boolean): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid-recently-used tabular-grid\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridRecentlyUsedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectRecentlyUsedServersHandler}\n id=\"recently-used-servers\"\n >\n {this.#renderTabularGridColumnSet(hideColumnName)}\n {this.recentlyUsedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.recentlyUsedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderConnectedServersGrid = (): Element => {\n return (\n <div class=\"tabular-grid-wrapper\">\n <div class=\"border-patch\"></div>\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridConnectedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectConnectedServersHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredConnectedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredConnectedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row\n rowid={server.id}\n class=\"tabular-grid-row\"\n >\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n const connectionTypeClass =\n this.selectedConnectionType === \"new\" && \"new-connection\";\n const recentlyUsedEmptyClass =\n this.recentlyUsedServersData.length === 0 && \"recently-used-empty\";\n return (\n <Host\n class={`widget elevation-1 ${connectionTypeClass} ${recentlyUsedEmptyClass}`}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n {this.selectedConnectionType === \"select\" && [\n this.recentlyUsedServersData.length > 0 && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n {this.#renderRecentlyUsedServersGrid(true)}\n </div>\n ),\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderConnectedServersGrid()}\n </div>\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class={{ \"input\": true, \"input-error\": !this.isValidUrl }}\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n </div>\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ></ch-edit>\n </div>\n {!this.isValidUrl && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#serverUrlEL as unknown as HTMLButtonElement\n }\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#_componentLocale.errors.serverUrlInvalid}\n </ch-tooltip>\n )}\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerType = \"legacy\" | \"next\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ConnectedGXServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"version":3}
1
+ {"file":"gx-ide-server-selector.entry.cjs.js","mappings":"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","names":["getIconPath","validateControls","h","config","clearControlError","sortTabularGridColumn","Locale","Host"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n overflow: auto;\n border-inline: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// Recently Used\n\n.tabular-grid-recently-used .tabular-grid-column::part(bar) {\n --grid-cell__padding-block: 0;\n --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.tabular-grid-recently-used {\n border-block-end: 1px solid var(--grid-cell__border-color);\n max-block-size: 100px;\n}\n\n// All Servers\n\n.tabular-grid-all-servers {\n overflow: auto;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n.tabular-grid-all-servers {\n border-block: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n\n// WA: .tabular-grid-wrapper and .border-patch is a WA. See details on Asana task:\n// https://app.asana.com/1/10206720691358/project/1207081021030105/task/1211391456974726?focus=true\n.tabular-grid-wrapper {\n position: relative;\n overflow: auto;\n}\n.border-patch {\n --tabular-grid-border-radius: 4px;\n position: absolute;\n top: 0;\n inline-size: calc(100% - var(--tabular-grid-border-radius) * 2);\n inset-inline-start: var(--tabular-grid-border-radius);\n block-size: 2px;\n background-color: var(--items-container__bg-color);\n z-index: 9999;\n border-block-start: 1px solid var(--mer-border-color__on-surface);\n}\n\n.tooltip {\n position: absolute;\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nimport sortTabularGridColumn from \"../../../common/chameleon/tabular-grid-column-sort\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"select\", caption: \"Select a server from the list below\" },\n { value: \"new\", caption: \"Enter a server URL manually\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n\n #chGridRecentlyUsedServersEl: HTMLChTabularGridElement;\n #chGridConnectedServersEl: HTMLChTabularGridElement;\n #previousSelectedRowId: string | undefined;\n #selectedRowId: string | undefined;\n #serverUrlEL: HTMLChEditElement;\n #serverFriendlyNameEL: HTMLChEditElement;\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * State to track if this is the first selection made by the user.\n */\n @State() isFirstSelection: boolean = true;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredConnectedServersData: ConnectedGXServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The list of connected GX servers.\n */\n @Prop({ mutable: true }) connectedServersData: ConnectedGXServerData[] = [];\n\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ConnectedGXServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin,\n connectionOption: ConnectionOption\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.selectedServerUri = this.connectedServersData[0]?.serverUrl;\n this.userName = this.connectedServersData[0]?.gxServerUsername;\n\n this.filteredConnectedServersData = this.connectedServersData;\n }\n\n componentDidRender() {\n if (\n this.selectedConnectionType === \"new\" &&\n this.#serverUrlEL &&\n this.#serverFriendlyNameEL\n ) {\n this.#initializeValidatableControls();\n }\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void> => {\n let formSubmitResult: FormSubmitResult;\n if (this.selectedConnectionType === \"select\") {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.selectedServerUri,\n name: this.selectedServerName\n },\n this.selectedConnectionType\n );\n } else {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n },\n this.selectedConnectionType\n );\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\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 = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#serverUrlEL,\n this.#serverFriendlyNameEL\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredConnectedServersData = this.connectedServersData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = event.detail as string;\n\n const controlId =\n field === \"serverUrlInputValue\" ? \"server-url\" : \"server-name\";\n clearControlError(this.validatableControls, controlId);\n this.#enableConfirmButton();\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #onConnectedServersRowDoubleClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => {\n console.log(\"double click connected servers\");\n this.#selectConnectedServersHandler(event);\n this.#confirmHandler();\n };\n\n #onRecentlyUsedRowDoubleClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => {\n console.log(\"double click recently used\");\n this.#selectRecentlyUsedServersHandler(event);\n this.#confirmHandler();\n };\n\n #selectConnectedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.connectedServersData,\n this.#chGridRecentlyUsedServersEl\n );\n\n #selectRecentlyUsedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.recentlyUsedServersData,\n this.#chGridConnectedServersEl\n );\n\n #handleServerSelection = async (\n event: CustomEvent<TabularGridRowClickedEvent>,\n serversData: ConnectedGXServerData[],\n otherGridEl: HTMLChTabularGridElement\n ): Promise<void> => {\n if (!this.isFirstSelection) {\n this.#previousSelectedRowId = this.#selectedRowId;\n }\n this.#selectedRowId = event.detail.rowId;\n if (this.#selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n } else {\n const selectedServer = serversData.find(\n server => server.id === this.#selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.isFirstSelection = false;\n await otherGridEl?.selectRow(this.#previousSelectedRowId, false);\n }\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n this.filteredConnectedServersData = [\n ...sortTabularGridColumn(\n e,\n this.filteredConnectedServersData,\n \"string\",\n undefined\n )\n ];\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n columnName=\"Username\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"status\"\n class=\"tabular-grid-column\"\n columnName=\"Status\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderTabularGridCommonCells = (server: ConnectedGXServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(server.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-name\">\n {server.serverName}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-url\">\n {server.serverUrl}\n {this.#renderTooltip(server.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {server.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell text-neutral-gray-400 body-italic-s\">\n {server.isConnected && \"Connected\"}\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderRecentlyUsedServersGrid = (hideColumnName: boolean): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid-recently-used tabular-grid\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridRecentlyUsedServersEl = el)\n }\n allowColumnReorder={false}\n onRowDoubleClicked={this.#onRecentlyUsedRowDoubleClickHandler}\n id=\"recently-used-servers\"\n >\n {this.#renderTabularGridColumnSet(hideColumnName)}\n {this.recentlyUsedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.recentlyUsedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderConnectedServersGrid = (): Element => {\n return (\n <div class=\"tabular-grid-wrapper\">\n <div class=\"border-patch\"></div>\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridConnectedServersEl = el)\n }\n allowColumnReorder={false}\n onRowDoubleClicked={this.#onConnectedServersRowDoubleClickHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredConnectedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredConnectedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row\n rowid={server.id}\n class=\"tabular-grid-row\"\n >\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n const connectionTypeClass =\n this.selectedConnectionType === \"new\" && \"new-connection\";\n const recentlyUsedEmptyClass =\n this.recentlyUsedServersData.length === 0 && \"recently-used-empty\";\n return (\n <Host\n class={`widget elevation-1 ${connectionTypeClass} ${recentlyUsedEmptyClass}`}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n {this.selectedConnectionType === \"select\" && [\n this.recentlyUsedServersData.length > 0 && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n {this.#renderRecentlyUsedServersGrid(true)}\n </div>\n ),\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderConnectedServersGrid()}\n </div>\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class=\"input\"\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverUrlEL)}\n </div>\n\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ref={el =>\n (this.#serverFriendlyNameEL = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverFriendlyNameEL)}\n </div>\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ConnectedGXServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"version":3}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-2f1471c9.js');
6
6
  const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
7
7
  const config = require('./config-df6ba4e9.js');
8
- const formValidation = require('./form-validation-178cf461.js');
8
+ const formValidation = require('./form-validation-54acc775.js');
9
9
  const locale = require('./locale-ff30a5f3.js');
10
10
 
11
11
  const shareKbCss = ":host{display:grid;block-size:100%;grid-template-rows:max-content 1fr max-content}.section{display:contents}header{display:grid;grid-template-rows:max-content;grid-template-columns:1fr 1fr max-content}.button-change{align-self:center;justify-self:end}.main{display:grid;grid-template-columns:1fr;grid-template-rows:max-content 1fr max-content max-content}.search-kbs{inline-size:50%}.versions-container{grid-auto-rows:max-content}.versions-container__input{display:grid;grid-template-columns:1fr max-content;gap:var(--mer-spacing--xs)}.button-icon-only.button-tertiary{border-color:var(--mer-color__neutral-gray--500);border-width:var(--mer-border__width--sm);border-radius:var(--mer-border__radius--sm)}.button-icon-only:hover{border-color:var(--mer-color__neutral-gray--100)}";