@genexus/genexus-ide-ui 1.1.37 → 1.1.38

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 (42) hide show
  1. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +9 -3
  2. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  3. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +19 -34
  4. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
  5. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +12 -4
  6. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  7. package/dist/collection/components/details-acknowledgements/details-acknowledgements.js +19 -34
  8. package/dist/collection/components/details-acknowledgements/details-acknowledgements.js.map +1 -1
  9. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +3 -1
  10. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +3 -1
  11. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +3 -1
  12. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +9 -3
  13. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  14. package/dist/collection/components/team-dev/server-selector/server-selector.js +12 -4
  15. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  16. package/dist/components/gx-ide-create-kb-from-server.js +9 -3
  17. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  18. package/dist/components/gx-ide-details-acknowledgements.js +19 -34
  19. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
  20. package/dist/components/gx-ide-server-selector.js +12 -4
  21. package/dist/components/gx-ide-server-selector.js.map +1 -1
  22. package/dist/esm/gx-ide-create-kb-from-server.entry.js +9 -3
  23. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  24. package/dist/esm/gx-ide-details-acknowledgements.entry.js +19 -34
  25. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
  26. package/dist/esm/gx-ide-server-selector.entry.js +12 -4
  27. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  28. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  29. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +3 -1
  30. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +3 -1
  31. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +3 -1
  32. package/dist/genexus-ide-ui/{p-bee71b20.entry.js → p-970e89ac.entry.js} +55 -45
  33. package/dist/genexus-ide-ui/p-970e89ac.entry.js.map +1 -0
  34. package/dist/genexus-ide-ui/{p-9ad85231.entry.js → p-b34ecbdc.entry.js} +35 -28
  35. package/dist/genexus-ide-ui/p-b34ecbdc.entry.js.map +1 -0
  36. package/dist/genexus-ide-ui/{p-5e2f9545.entry.js → p-bd0ffc08.entry.js} +56 -72
  37. package/dist/genexus-ide-ui/p-bd0ffc08.entry.js.map +1 -0
  38. package/dist/types/components/details-acknowledgements/types.d.ts +1 -1
  39. package/package.json +1 -1
  40. package/dist/genexus-ide-ui/p-5e2f9545.entry.js.map +0 -1
  41. package/dist/genexus-ide-ui/p-9ad85231.entry.js.map +0 -1
  42. package/dist/genexus-ide-ui/p-bee71b20.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapKbsModelToActionListModel","kbsData","listBoxItems","forEach","kb","push","id","type","caption","name","createKbFromServerCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","colorType","GxIdeCreateKbFromServer","_GxIdeCreateKbFromServer_chSearchIcon","set","this","_GxIdeCreateKbFromServer_showMoreIcon","_GxIdeCreateKbFromServer_versionsSelect","value","_GxIdeCreateKbFromServer__componentLocale","_GxIdeCreateKbFromServer_kbsActionListModel","_GxIdeCreateKbFromServer_kbVersions","_GxIdeCreateKbFromServer_shortcutsSrc","getAssetPath","_GxIdeCreateKbFromServer_selectedKbId","_GxIdeCreateKbFromServer_kbNameAlreadyEditedByUser","_GxIdeCreateKbFromServer_versionSelectedTypeEl","_GxIdeCreateKbFromServer_localKBNameEl","_GxIdeCreateKbFromServer_cancelHandler","cancelCallback","_GxIdeCreateKbFromServer_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeCreateKbFromServer_createHandler","versionSelectedType","__classPrivateFieldSet","createKBCallback","selectedKB","__classPrivateFieldGet","versionSelected","localKBName","localKbNameInputValue","versionList","then","formSubmitResult","validatableControls","validateControls","_GxIdeCreateKbFromServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCreateKbFromServer_filterValueChangedHandler","event","filterValue","detail","toLowerCase","kbsFilteredActionListModel","filter","item","includes","_GxIdeCreateKbFromServer_init","getGXserverKBsCallback","result","_GxIdeCreateKbFromServer_initializeValidatableControls","validatableControl","reference","undefined","_GxIdeCreateKbFromServer_inputLocalKbNameHandler","_GxIdeCreateKbFromServer_selectedVersionHandler","selectKBVersionsCallback","length","map","kbVersion","versionsValueInput","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeCreateKbFromServer_selectKbChangeHandler","enableSelectVersionsButton","_GxIdeCreateKbFromServer_versionsChangedHandler","_GxIdeCreateKbFromServer_renderFooter","onClick","part","footer","cancel","disabled","createKb","Map","componentDidLoad","call","loading","componentWillLoad","Locale","getComponentStrings","el","render","Host","model","src","ref","chShortcutsEl","header","user","change","loaderTitle","loader","title","description","show","Fragment","startImgSrc","onInput","placeholder","searchKbsPlaceholder","stateIconSrc","stateTitle","emptyKBsText","isAnimated","selection","onSelectedItemsChange","onChange","htmlFor","versionsLabel","readonly","versionsPlaceholderDisabled","localKbNameLabel","localKbNamePlaceholder"],"sources":["src/components/team-dev/create-kb-from-server/helpers.ts","src/components/team-dev/create-kb-from-server/create-kb-from-server.scss?tag=gx-ide-create-kb-from-server&encapsulation=shadow","src/components/team-dev/create-kb-from-server/create-kb-from-server.tsx"],"sourcesContent":["import { ActionListItemModel } from \"@genexus/chameleon-controls-library\";\nimport { KBData } from \"./create-kb-from-server\";\n\nexport const mapKbsModelToActionListModel = (\n kbsData: KBData[]\n): ActionListItemModel[] => {\n const listBoxItems: ActionListItemModel[] = [];\n kbsData.forEach(kb => {\n listBoxItems.push({\n id: kb.id,\n type: \"actionable\",\n caption: kb.name\n });\n });\n return listBoxItems;\n};\n",":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n position: relative;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n }\n\n .button-icon-only {\n border-color: var(--mer-color__neutral-gray--500);\n border-width: var(--mer-border__width--sm);\n border-radius: var(--mer-border__radius--sm);\n }\n\n .button-icon-only:hover {\n border-color: var(--mer-color__neutral-gray--100);\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath,\n Fragment\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { mapKbsModelToActionListModel } from \"./helpers\";\nimport {\n ActionListItemActionable,\n ActionListItemModel,\n ActionListItemModelExtended,\n ChActionListRenderCustomEvent,\n ChEditCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-create-kb-from-server\",\n styleUrl: \"create-kb-from-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/create-kb-from-server\"]\n})\nexport class GxIdeCreateKbFromServer {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #showMoreIcon = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" },\n { value: \"Select\", caption: \"Select Version\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n #kbsActionListModel: ActionListItemModel[] = [];\n #kbVersions: KBVersion[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n #kbNameAlreadyEditedByUser: boolean = false;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeCreateKbFromServerElement;\n\n #localKBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n /**\n * The current kbn name value.\n */\n @State() localKbNameInputValue: string = \"\";\n\n /**\n * State to store the loading state of the component\n */\n @State() loading = true;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * KBs filtered\n */\n @State() kbsFilteredActionListModel: ActionListItemModel[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create KB' button is pressed. Receives the user's parameter selection to create the remote KB locally and ends the dialog.\n */\n @Prop() readonly createKBCallback!: (\n kbInfo: KnowledgeBaseInfo\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback that must be invoked when invoking the dialog\n */\n @Prop() readonly getGXserverKBsCallback!: (\n data: GXServerConnectionData\n ) => Promise<KBData[]>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n async componentDidLoad() {\n await this.#init();\n this.loading = false;\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #createHandler = async (): Promise<void> => {\n if (this.versionSelectedType !== \"Select\") {\n this.#kbVersions = [];\n }\n this.createKBCallback({\n selectedKB: this.#selectedKbId,\n versionSelected: this.versionSelectedType,\n localKBName: this.localKbNameInputValue,\n versionList: this.#kbVersions\n }).then((formSubmitResult: FormSubmitResult) => {\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 #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.kbsFilteredActionListModel = this.#kbsActionListModel.filter(\n (item: ActionListItemActionable) =>\n item.caption.toLowerCase().includes(this.filterValue)\n );\n };\n\n #init = async () => {\n await this.getGXserverKBsCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n }).then(result => {\n this.#kbsActionListModel = mapKbsModelToActionListModel(result);\n this.kbsFilteredActionListModel = this.#kbsActionListModel;\n this.filterValue = \"\";\n });\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#localKBNameEl];\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 #inputLocalKbNameHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.localKbNameInputValue = event.detail as string;\n this.#kbNameAlreadyEditedByUser = true;\n };\n\n #selectedVersionHandler = async () => {\n if (this.selectKBVersionsCallback) {\n await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n if (result?.length) {\n this.#kbVersions = result.map(kbVersion => ({\n id: kbVersion.id,\n name: kbVersion.name\n }));\n\n if (result.length === 1 && this.#kbVersions[0].id === 0) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput =\n this.#_componentLocale.kb.versionsPlaceholder;\n } else if (result.length > 1) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput = `${result.length.toString()} ${\n this.#_componentLocale.kb.versionSelectedFieldValue\n }`;\n } else {\n this.localKbNameInputValue = `${this.#selectedKbId}_${\n this.#kbVersions[0].name\n }`;\n this.versionsValueInput = `${result[0].name} ${\n this.#_componentLocale.kb.oneVersionSelectedFieldValue\n }`;\n }\n }\n });\n }\n };\n\n #selectKbChangeHandler = (\n event: ChActionListRenderCustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const item = event.detail[0]?.item as ActionListItemActionable;\n if (item === undefined) {\n this.enableSelectVersionsButton = false;\n this.#selectedKbId = undefined;\n return;\n }\n this.enableSelectVersionsButton = true;\n this.#selectedKbId = item.id;\n if (this.#kbNameAlreadyEditedByUser) {\n return;\n }\n this.localKbNameInputValue = item.caption;\n if (this.versionSelectedType === \"Select\") {\n this.versionsValueInput = \"\";\n this.#kbVersions = [];\n }\n };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // create kb button\n class=\"button-primary\"\n onClick={this.enableSelectVersionsButton && this.#createHandler}\n disabled={!this.enableSelectVersionsButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.createKb}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n <section class=\"main field-group spacing-body\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <Fragment>\n <ch-edit\n class=\"input search-kbs\"\n id=\"local-kb-name\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={this.#_componentLocale.kb.searchKbsPlaceholder}\n ></ch-edit>\n {this.#kbsActionListModel.length === 0 ||\n this.kbsFilteredActionListModel.length === 0 ? (\n <div class=\"list-box\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyKBsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </div>\n ) : (\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n onSelectedItemsChange={this.#selectKbChangeHandler}\n model={this.kbsFilteredActionListModel}\n ></ch-action-list-render>\n )}\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={(el: HTMLChRadioGroupRenderElement) => {\n this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement;\n if (this.#versionSelectedTypeEl) {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n }\n }}\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-sm\"\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"localKbName\">\n {this.#_componentLocale.kb.localKbNameLabel}\n </label>\n <ch-edit\n // local kb name\n class=\"input\"\n id=\"local-kb-name\"\n value={this.localKbNameInputValue}\n onInput={this.#inputLocalKbNameHandler}\n placeholder={\n this.#_componentLocale.kb.localKbNamePlaceholder\n }\n ref={(el: HTMLChEditElement) => {\n this.#localKBNameEl = el as HTMLChEditElement;\n if (this.#localKBNameEl) {\n this.#initializeValidatableControls();\n }\n }}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#localKBNameEl)}\n </div>\n </Fragment>\n )}\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type KBVersion = {\n id: number;\n name: string;\n type?: VersionType;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type KnowledgeBaseInfo = {\n selectedKB: string;\n versionSelected: VersionOption;\n localKBName: string;\n versionList: KBVersion[];\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n\nexport type VersionType = \"Branch\" | \"Frozen\";\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["serverSelectorCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","name","colorType","LOCK_ICON","LANGUAGE_ICON","GxIdeServerSelector","_GxIdeServerSelector_chSearchIcon","set","this","_GxIdeServerSelector_versionsSelect","value","caption","_GxIdeServerSelector__componentLocale","_GxIdeServerSelector_chGridRecentlyUsedServersEl","_GxIdeServerSelector_chGridConnectedServersEl","_GxIdeServerSelector_previousSelectedRowId","_GxIdeServerSelector_selectedRowId","_GxIdeServerSelector_serverUrlEL","_GxIdeServerSelector_cancelHandler","cancelCallback","_GxIdeServerSelector_confirmHandler","async","selectedConnectionType","selectServerCallback","uri","selectedServerUri","selectedServerName","isValidUrl","__classPrivateFieldGet","_GxIdeServerSelector_validateUrl","call","serverUrlInputValue","serverNameInputValue","_GxIdeServerSelector_filterValueChangedHandler","event","filterValue","detail","toLowerCase","filteredConnectedServersData","connectedServersData","filter","item","serverName","includes","_GxIdeServerSelector_inputHandler","field","enableConfirmButton","_GxIdeServerSelector_enableConfirmButton","url","serverUrl","URL","protocolValid","protocol","startsWith","ex","length","_GxIdeServerSelector_selectConnectedServersHandler","_GxIdeServerSelector_handleServerSelection","_GxIdeServerSelector_selectRecentlyUsedServersHandler","recentlyUsedServersData","serversData","otherGridEl","isFirstSelection","__classPrivateFieldSet","rowId","undefined","selectedServer","find","server","id","userName","gxServerUsername","selectRow","_GxIdeServerSelector_connectionTypeChangedHandler","_GxIdeServerSelector_renderTabularGridColumnSet","hideColumnName","h","class","columnId","columnName","settingable","columnNameHidden","size","config","tabularGrid","colSize","maxContent","resizable","sortable","onColumnSortChanged","_GxIdeServerSelector_handleColumnSortChanged","auto","_GxIdeServerSelector_renderTooltip","text","actionElement","blockAlign","inlineAlign","tooltipSettings","delay","_GxIdeServerSelector_renderTabularGridCommonCells","_GxIdeServerSelector_renderIcon","accessLevel","isConnected","_GxIdeServerSelector_renderRecentlyUsedServersGrid","rowSelectionMode","ref","el","allowColumnReorder","onRowClicked","map","rowid","stateIconSrc","stateTitle","emptyConnectedServers","isAnimated","_GxIdeServerSelector_renderConnectedServersGrid","e","sortDirection","aux","sort","a","b","icon","src","_GxIdeServerSelector_renderFooter","isSelectionMode","onClick","footer","cancel","disabled","confirm","Map","componentWillLoad","Locale","getComponentStrings","_a","_b","render","connectionTypeClass","recentlyUsedEmptyClass","Host","model","header","title","onChange","startImgSrc","onInput","placeholder","placeholders","searchServers","accessibleName","type","htmlFor","recentlyUsed","allServers","labels","input","maxLength","errors","serverUrlInvalid"],"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 border-inline: 1px solid var(--grid-cell__border-color);\n --grid-cell__box-shadow-inline-block:\n inset 0 0px var(--grid-cell__border-color),\n inset 0 -1px var(--grid-cell__border-color);\n overflow: auto;\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 .tabular-grid-column:first-child::part(bar-name-icon) {\n background-image: var(\n --icon__system_order-alphabetically_on-elevation--enabled\n );\n block-size: var(--mer-icon__box--md);\n inline-size: var(--mer-icon__box--md);\n background-size: var(--mer-icon__size--md);\n }\n .tabular-grid-rowset-empty {\n border-block-end: none;\n overflow: hidden;\n }\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\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 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\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 #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\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Username\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"status\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Status\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n resizable={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 <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 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 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 );\n };\n\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n\n const aux = this.connectedServersData;\n aux.sort((a: any, b: any) => {\n if (a[columnId] < b[columnId]) {\n return sortDirection === \"asc\" ? -1 : 1;\n }\n if (a[columnId] > b[columnId]) {\n return sortDirection === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n this.connectedServersData = [...aux];\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"],"mappings":"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"}