@genexus/genexus-ide-ui 3.2.12 → 3.2.14

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 (78) hide show
  1. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  2. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +24 -34
  3. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +12 -12
  5. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +26 -3
  7. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +77 -44
  9. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  10. package/dist/cjs/loader.cjs.js +1 -1
  11. package/dist/collection/components/kb-manager-import/helpers.js +2 -9
  12. package/dist/collection/components/kb-manager-import/helpers.js.map +1 -1
  13. package/dist/collection/components/kb-manager-import/kb-manager-import.js +10 -3
  14. package/dist/collection/components/kb-manager-import/kb-manager-import.js.map +1 -1
  15. package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.en.json +3 -1
  16. package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.ja.json +3 -1
  17. package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.zh.json +3 -1
  18. package/dist/collection/components/new-environment/new-environment.css +29 -0
  19. package/dist/collection/components/new-environment/new-environment.js +54 -17
  20. package/dist/collection/components/new-environment/new-environment.js.map +1 -1
  21. package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +9 -5
  22. package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +7 -3
  23. package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +9 -5
  24. package/dist/collection/components/new-kb/new-kb.css +42 -1
  25. package/dist/collection/components/new-kb/new-kb.js +77 -47
  26. package/dist/collection/components/new-kb/new-kb.js.map +1 -1
  27. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +25 -36
  28. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  29. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +0 -2
  30. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +0 -2
  31. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +0 -2
  32. package/dist/components/gx-ide-create-kb-from-server.js +24 -35
  33. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  34. package/dist/components/gx-ide-kb-manager-import.js +12 -12
  35. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  36. package/dist/components/gx-ide-new-environment.js +27 -4
  37. package/dist/components/gx-ide-new-environment.js.map +1 -1
  38. package/dist/components/gx-ide-new-kb.js +85 -46
  39. package/dist/components/gx-ide-new-kb.js.map +1 -1
  40. package/dist/esm/genexus-ide-ui.js +1 -1
  41. package/dist/esm/gx-ide-create-kb-from-server.entry.js +24 -34
  42. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  43. package/dist/esm/gx-ide-kb-manager-import.entry.js +12 -12
  44. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  45. package/dist/esm/gx-ide-new-environment.entry.js +26 -3
  46. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  47. package/dist/esm/gx-ide-new-kb.entry.js +77 -44
  48. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  49. package/dist/esm/loader.js +1 -1
  50. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  51. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  52. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +0 -2
  53. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +0 -2
  54. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +0 -2
  55. package/dist/genexus-ide-ui/gx-ide-assets/new-environment/langs/new-environment.lang.en.json +3 -1
  56. package/dist/genexus-ide-ui/gx-ide-assets/new-environment/langs/new-environment.lang.ja.json +3 -1
  57. package/dist/genexus-ide-ui/gx-ide-assets/new-environment/langs/new-environment.lang.zh.json +3 -1
  58. package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +9 -5
  59. package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +7 -3
  60. package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +9 -5
  61. package/dist/genexus-ide-ui/{p-cf61384e.entry.js → p-2164c3a8.entry.js} +154 -167
  62. package/dist/genexus-ide-ui/p-2164c3a8.entry.js.map +1 -0
  63. package/dist/genexus-ide-ui/{p-7cd24b82.entry.js → p-806c5dcb.entry.js} +58 -47
  64. package/dist/genexus-ide-ui/p-806c5dcb.entry.js.map +1 -0
  65. package/dist/genexus-ide-ui/{p-5727fce7.entry.js → p-8f4af976.entry.js} +222 -184
  66. package/dist/genexus-ide-ui/p-8f4af976.entry.js.map +1 -0
  67. package/dist/genexus-ide-ui/{p-eeae9dd5.entry.js → p-95cf766b.entry.js} +401 -345
  68. package/dist/genexus-ide-ui/p-95cf766b.entry.js.map +1 -0
  69. package/dist/types/components/kb-manager-import/helpers.d.ts +1 -1
  70. package/dist/types/components/new-environment/new-environment.d.ts +8 -3
  71. package/dist/types/components/new-kb/new-kb.d.ts +5 -1
  72. package/dist/types/components/team-dev/create-kb-from-server/create-kb-from-server.d.ts +0 -1
  73. package/dist/types/components.d.ts +8 -0
  74. package/package.json +1 -1
  75. package/dist/genexus-ide-ui/p-5727fce7.entry.js.map +0 -1
  76. package/dist/genexus-ide-ui/p-7cd24b82.entry.js.map +0 -1
  77. package/dist/genexus-ide-ui/p-cf61384e.entry.js.map +0 -1
  78. package/dist/genexus-ide-ui/p-eeae9dd5.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","FOLDER_ICON","LOCATION_MODE_DEFAULT","LOCATION_MODE_CUSTOM","GxIdeCreateKbFromServer","_GxIdeCreateKbFromServer_chSearchIcon","set","this","_GxIdeCreateKbFromServer_showMoreIcon","_GxIdeCreateKbFromServer_versionsSelect","value","_GxIdeCreateKbFromServer__componentLocale","_GxIdeCreateKbFromServer_kbsActionListModel","_GxIdeCreateKbFromServer_kbVersions","_GxIdeCreateKbFromServer_chShortcutsEl","_GxIdeCreateKbFromServer_shortcutsSrc","getAssetPath","_GxIdeCreateKbFromServer_selectedKbId","_GxIdeCreateKbFromServer_kbNameAlreadyEditedByUser","_GxIdeCreateKbFromServer_locationModeModel","_GxIdeCreateKbFromServer_versionSelectedTypeEl","_GxIdeCreateKbFromServer_localKBNameEl","_GxIdeCreateKbFromServer_cancelHandler","cancelCallback","_GxIdeCreateKbFromServer_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeCreateKbFromServer_locationModeChangeHandler","event","locationMode","detail","kbLocation","_GxIdeCreateKbFromServer_selectLocationHandler","location","selectLocationCallback","_GxIdeCreateKbFromServer_inputKbLocationHandler","_GxIdeCreateKbFromServer_createHandler","versionSelectedType","__classPrivateFieldSet","createKBCallback","selectedKB","__classPrivateFieldGet","versionSelected","localKBName","localKbNameInputValue","undefined","versionList","then","formSubmitResult","validatableControls","validateControls","_GxIdeCreateKbFromServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCreateKbFromServer_filterValueChangedHandler","filterValue","toLowerCase","kbsFilteredActionListModel","filter","item","includes","_GxIdeCreateKbFromServer_init","getGXserverKBsCallback","result","_GxIdeCreateKbFromServer_initializeValidatableControls","validatableControl","reference","_GxIdeCreateKbFromServer_inputLocalKbNameHandler","_GxIdeCreateKbFromServer_selectedVersionHandler","selectKBVersionsCallback","length","map","kbVersion","versionsValueInput","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeCreateKbFromServer_selectKbChangeHandler","enableSelectVersionsButton","_GxIdeCreateKbFromServer_versionsChangedHandler","_GxIdeCreateKbFromServer_sortItems","model","sort","a","b","toLocaleLowerCase","localeCompare","_GxIdeCreateKbFromServer_renderFooter","onClick","part","footer","cancel","disabled","createKb","Map","componentDidLoad","call","loading","componentWillLoad","Locale","getComponentStrings","el","kbLocationDefault","kbLocationCustom","suspendShortcuts","suspend","render","Host","src","ref","header","user","change","loaderTitle","loader","title","description","show","Fragment","startImgSrc","onInput","placeholder","searchKbsPlaceholder","stateIconSrc","stateTitle","emptyKBsText","isAnimated","selection","onSelectedItemsChange","sortItemsCallback","onChange","htmlFor","versionsLabel","readonly","versionsPlaceholderDisabled","localKbNameLabel","localKbNamePlaceholder","canSetLocation","selectLocationButton"],"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","@import \"../../../global/temporary-mercury-overrides/_button.scss\";\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(--spacing-gap-m);\n }\n}\n\n.location-custom-wrapper {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n flex-grow: 1;\n min-inline-size: 0;\n}\n\n.location-field {\n flex-grow: 1;\n min-inline-size: 0;\n\n > .input {\n inline-size: 100%;\n }\n}\n","// Stencil\nimport {\n Component,\n Element,\n Fragment,\n getAssetPath,\n h,\n Host,\n Method,\n Prop,\n State\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\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\";\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\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { KBVersion } from \"../version-control/common/types\";\nimport { mapKbsModelToActionListModel } from \"./helpers\";\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\nconst FOLDER_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"primary\"\n});\n\nconst LOCATION_MODE_DEFAULT = \"default\";\nconst LOCATION_MODE_CUSTOM = \"custom\";\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: \"interactive\"\n });\n\n #showMoreIcon = getIconPath({\n category: \"system\",\n name: \"more-horizontal\",\n colorType: \"interactive\"\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 #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n #kbNameAlreadyEditedByUser: boolean = false;\n\n #locationModeModel: RadioGroupItemModel[];\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 @State() locationMode: string = LOCATION_MODE_DEFAULT;\n\n /**\n * Default suggested path to a directory where the KB will be stored/generated.\n */\n @Prop({ mutable: true }) kbLocation: string;\n\n /**\n * Specifies whether the location field (and its folder-picker button) is\n * shown in the header, allowing the user to override the default `kbLocation`\n * path. Independent from `isAdvanced`.\n */\n @Prop() readonly canSetLocation: boolean = false;\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 that returns a folder path selected by the user.\n */\n @Prop() readonly selectLocationCallback: SelectLocationCallback;\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 this.#locationModeModel = [\n {\n value: LOCATION_MODE_DEFAULT,\n caption: this.#_componentLocale.kb.kbLocationDefault\n },\n {\n value: LOCATION_MODE_CUSTOM,\n caption: this.#_componentLocale.kb.kbLocationCustom\n }\n ];\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\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 #locationModeChangeHandler = (event: CustomEvent<string>) => {\n this.locationMode = event.detail as string;\n if (this.locationMode === LOCATION_MODE_DEFAULT) {\n this.kbLocation = \"\";\n }\n };\n\n #selectLocationHandler = async (): Promise<void> => {\n const location = await this.selectLocationCallback();\n if (location) {\n this.kbLocation = location;\n }\n };\n\n #inputKbLocationHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbLocation = event.detail as string;\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 kbLocation:\n this.locationMode === LOCATION_MODE_CUSTOM\n ? this.kbLocation || undefined\n : undefined,\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 #sortItems = (model: ActionListItemActionable[]): void => {\n model.sort((a, b) =>\n a.caption\n ?.toLocaleLowerCase()\n .localeCompare(b.caption?.toLocaleLowerCase())\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer dialog-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 dialog-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 id=\"change-connection-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 type=\"search\"\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 sortItemsCallback={this.#sortItems}\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 id=\"select-version-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-m\"\n disabled={!this.enableSelectVersionsButton}\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=\"localKbName\"\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\n {this.canSetLocation && (\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"kbLocation\">\n {this.#_componentLocale.kb.kbLocation}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n id=\"kbLocation\"\n model={this.#locationModeModel}\n value={LOCATION_MODE_DEFAULT}\n onChange={this.#locationModeChangeHandler}\n ></ch-radio-group-render>\n\n {this.locationMode === LOCATION_MODE_CUSTOM && (\n <div class=\"location-custom-wrapper\">\n <div class=\"location-field\">\n <ch-edit\n class=\"input\"\n value={this.kbLocation}\n id=\"kbLocation\"\n onInput={this.#inputKbLocationHandler}\n ></ch-edit>\n </div>\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#_componentLocale.kb.selectLocationButton\n }\n title={this.#_componentLocale.kb.selectLocationButton}\n onClick={this.#selectLocationHandler}\n >\n <ch-image\n class=\"icon-m\"\n type=\"mask\"\n src={FOLDER_ICON}\n ></ch-image>\n </button>\n </div>\n )}\n </div>\n )}\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 ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type KnowledgeBaseInfo = {\n selectedKB: string;\n versionSelected: VersionOption;\n localKBName: string;\n kbLocation?: string;\n versionList: KBVersion[];\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n\nexport type SelectLocationCallback = () => Promise<string>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["newKbCss","CSS_BUNDLES","WINDOWS_AUTHENTICATION_VALUE","LOCALDB_INSTANCE","MAIN_SECTION_CLASSES","BASIC_SECTION_PARENT_CLASSES","SYSTEM_ICON","getIconPath","category","name","colorType","WARNING_ICON","DATABASE_ICON","LOCATION_MODE_DEFAULT","LOCATION_MODE_CUSTOM","DATABASE_NAME_PREFIX","BASIC_TAB_SELECTOR","ADVANCED_TAB_SELECTOR","GxIdeNewKb","_GxIdeNewKb_advancedTabHasBeenRendered","set","this","_GxIdeNewKb_componentLocale","_GxIdeNewKb_frontEndsCheckedMap","Map","_GxIdeNewKb_selectedPrototypingEnvironmentId","_GxIdeNewKb_selectedDataSourceId","_GxIdeNewKb_shortcutsSrc","getAssetPath","_GxIdeNewKb_kbSectionsModel","_GxIdeNewKb_authenticationTypeEl","_GxIdeNewKb_collationEl","_GxIdeNewKb_createDataFilesInKBFolderEl","_GxIdeNewKb_databaseNameEl","_GxIdeNewKb_dataSourceEl","_GxIdeNewKb_kbNameEl","_GxIdeNewKb_locationEl","_GxIdeNewKb_locationModeEl","_GxIdeNewKb_locationModeModel","_GxIdeNewKb_locationElRegistered","_GxIdeNewKb_credentialControlsRegistered","_GxIdeNewKb_passwordEl","_GxIdeNewKb_prototypingEnvironmentEl","_GxIdeNewKb_prototypingTargetEl","_GxIdeNewKb_savePasswordEl","_GxIdeNewKb_serverNameEl","_GxIdeNewKb_userInterfaceLanguageEl","_GxIdeNewKb_userNameEl","_GxIdeNewKb_chShortcutsEl","_GxIdeNewKb_computeDefaultDatabaseName","kbName","_GxIdeNewKb_kbNameInputHandler","e","kbNameValue","_a","detail","_b","__classPrivateFieldGet","value","databaseNameValue","call","_GxIdeNewKb_databaseNameInputHandler","_GxIdeNewKb_handlerAuthenticationTypeInput","async","authenticationTypeValue","collations","defaultCollation","undefined","connectionStatus","_GxIdeNewKb_loadCollationsForCurrentConnection","_GxIdeNewKb_handlerCredentialsChanged","userNameValue","passwordValue","_d","_c","_GxIdeNewKb_browseForMoreHandler","browseForMoreCallback","browseForMoreDialogOpen","selectedInstance","serverNameValue","_GxIdeNewKb_serverNameChangedHandler","CustomEvent","error","target","_GxIdeNewKb_applyCreateDataFilesInKBFolderForServer","_GxIdeNewKb_classifyServer","serverName","toLowerCase","isLocal","serverInstances","some","s","label","_GxIdeNewKb_createDataFilesInKBFolderDisabled","kind","_GxIdeNewKb_sqlAuthMissingCredentials","authType","createDataFilesInKBFolder","getCollationsForInstanceCallback","isWindowsAuth","userName","password","result","_e","_GxIdeNewKb_prototypingEnvironmentValueChangedHandler","event","__classPrivateFieldSet","_GxIdeNewKb_getDataSources","_GxIdeNewKb_updateFrontEnds","_GxIdeNewKb_prototypingTargetValueChangedHandler","_GxIdeNewKb_getPrototypingEnvironments","_GxIdeNewKb_dataSourceValueChangedHandler","_GxIdeNewKb_renderAdvanced","showCredentials","h","class","part","tabAdvanced","tabTitle","connectionGroup","htmlFor","ref","el","id","model","serverInstancesComboBoxModel","suggest","suggestDebounce","config","inputDebounce","onInput","onChange","browseForMore","onClick","src","actionElement","blockAlign","inlineAlign","delay","tooltipSettings","_GxIdeNewKb_evaluateTooltipRender","databaseName","collation","disabled","length","placeholder","disabledPlaceholder","collationsComboBoxModel","checkedValue","caption","createDataFilesInKbFolder","authenticationGroup","authenticationType","authenticationTypes","authenticationTypesComboBoxModel","debounce","type","showPasswordButton","savePassword","windowsAuthCalloutTitle","windowsAuthCalloutDescription","_GxIdeNewKb_renderBasic","tabBasic","prototypingTarget","prototypingTargets","prototypingTargetsInitialValue","prototypingTargetsComboBoxModel","userInterfaceLanguage","userInterfaceLanguages","userInterfaceLanguagesInitialValue","userInterfaceLanguagesComboBoxModel","backEnd","backEndLabel","prototypingEnvironment","defaultPrototypingEnvironments","prototypingEnvironmentsComboBoxModel","dataSource","defaultDataSources","defaultDataSourcesComboBoxModel","frontEnd","frontEndLabel","renderChCheckboxItems","frontEnds","_GxIdeNewKb_frontEndCheckboxInputHandler","get","_GxIdeNewKb_cancelKbHandler","cancelCallback","_GxIdeNewKb_createKbHandler","selectedFrontEndIds","createCallback","_f","kbLocation","_g","_h","_j","_k","_l","_m","_o","_p","_q","creationMode","selectedTab","then","formSubmitResult","validatableControls","validateControls","controlReference","hasError","message","checked","_GxIdeNewKb_updateFrontEndsCheckedMap","checkboxId","currentState","push","checkboxIndex","findIndex","removeIndex","getPrototypingEnvironmentsCallback","selectedPrototypingTargetId","envs","getDataSourcesCallback","selectedPrototypingEnvironmentId","updatedDefaultDataSourcesPromise","setSelectedItem","getSelectedItem","catch","_GxIdeNewKb_initialSetupAdvancedTab","hasWindowsAuth","opt","_GxIdeNewKb_initializeValidatableControlsBasicTab","forEach","validatableControl","reference","_GxIdeNewKb_initializeValidatableControlsAdvancedTab","_GxIdeNewKb_selectLocationHandler","selectLocationCallback","_GxIdeNewKb_locationModeChangeHandler","locationMode","_GxIdeNewKb_tabSelectionChangedHandler","newSelectedId","advancedTabIsVisible","_GxIdeNewKb_loadAdvancedTabData","getAdvancedTabDataCallback","loadingAdvancedTab","data","updatedFrontEnds","getFrontEndsCallback","has","checkedIds","filter","fe","map","watchAuthenticationTypes","newValue","mapOptionsToComboBoxItemModel","watchCollations","watchServerInstances","watchDefaultDataSources","watchDefaultPrototypingEnvironments","watchPrototypingTargets","watchUserInterfaceLanguages","componentWillLoad","Locale","getComponentStrings","tabLabel","header","kbLocationDefault","kbLocationCustom","connectedCallback","componentDidLoad","componentDidRender","suspendShortcuts","suspend","render","Host","isAdvanced","autoFocus","canSetLocation","selectLocationButton","title","scrollable","tab","tabListPosition","selectedId","overflow","contain","onSelectedItemChange","slot","footer","btnCancel","btnCreate"],"sources":["src/components/new-kb/new-kb.scss?tag=gx-ide-new-kb&encapsulation=shadow","src/components/new-kb/new-kb.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n &-one-col {\n grid-template-columns: 1fr;\n }\n}\n// location appears when canSetLocation is true\n.location-wrapper {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n min-block-size: var(--control-block-size);\n}\n.location-custom-wrapper {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n flex-grow: 1;\n min-inline-size: 0;\n}\n.location-field {\n flex-grow: 1;\n min-inline-size: 0;\n\n > .input {\n inline-size: 100%;\n }\n}\n\n.basic {\n display: grid;\n grid-template:\n \"basic-top basic-top\" max-content\n \"back-end front-end\" 1fr;\n grid-template-columns: 1fr 1fr;\n}\n.basic__header {\n grid-area: basic-top;\n grid-template-columns: 1fr 1fr;\n}\n.dialog-header__back-end,\n.dialog-header__front-end {\n padding-block-start: 16px;\n}\n.main__back-end {\n border-inline-end: var(--section-common-border);\n}\n.main__back-end,\n.main__front-end {\n grid-auto-rows: max-content;\n padding-block: 12px;\n overflow: auto;\n}\n// back end\n.section__back-end {\n grid-area: back-end;\n grid-auto-rows: max-content;\n}\n// front end\n.section__front-end {\n grid-area: front-end;\n}\n.section__back-end,\n.section__front-end {\n display: grid;\n grid-template-rows: max-content 1fr;\n overflow: auto;\n}\n\n.basic,\n.advanced {\n padding-block-start: 12px;\n overflow: auto;\n block-size: 100%;\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n// Knowledge Base Storage card (advanced tab)\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n.kb-storage-card {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-l);\n padding-inline: var(--spacing-padding-xl);\n}\n\n.kb-storage-card__header {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-s);\n padding-block-end: var(--spacing-padding-m);\n border-bottom: 1px solid var(--color-border-surface-on-elevation-1);\n}\n\n.kb-storage-card__heading {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-xs);\n min-inline-size: 0;\n}\n\n.kb-storage-card__title {\n margin: 0;\n color: var(--color-text-neutral-default);\n}\n\n.kb-storage-card__grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n column-gap: var(--spacing-gap-xl);\n row-gap: var(--spacing-gap-l);\n}\n\n.kb-storage-column {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n min-inline-size: 0;\n}\n\n.kb-storage-column__title {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-s);\n color: var(--color-text-neutral-disabled);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.kb-storage-column__title-text {\n white-space: nowrap;\n}\n\n.kb-storage-column__title-rule {\n flex: 1;\n block-size: 1px;\n background-color: var(--color-border-surface-on-elevation-1);\n}\n\n.field-group--stacked {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n}\n\n.server-name-wrapper {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--spacing-gap-xs);\n min-inline-size: 0;\n}\n\n.kb-storage-credentials {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-m);\n}\n\n.kb-storage-callout {\n display: flex;\n flex-direction: row;\n gap: var(--spacing-gap-xs);\n padding: var(--spacing-padding-m);\n border: 1px solid var(--color-border-surface-on-elevation-2);\n border-radius: var(--border-radius-s);\n background-color: var(--color-accent-surface-elevation-2);\n}\n\n.kb-storage-callout-inner {\n display: flex;\n flex-direction: column;\n}\n\n.kb-storage-callout__title {\n display: flex;\n gap: var(--spacing-gap-xs);\n}\n\n.kb-storage-callout__description {\n color: var(--color-text-neutral-disabled);\n}\n\n// WA / TODO: Add a helper class in Mercury to justify text.\n.text-align-center {\n text-align: center; // should be resolved on mercury\n}\n\n.tab::part(page) {\n // WA / TODO: Remove this line when the ch-tab renders supports scrollbar\n // custom styling\n scrollbar-width: thin;\n}\n\n// Align the tab list with the header / footer horizontal padding\n// (matches `spacing-body-inline` -> --spacing-padding-xl).\n.tab::part(tab-list block-start) {\n padding-inline: var(--spacing-padding-xl);\n}\n\n// WA: Staring on Mercury V1.0.0. the checkbox displays an outline all around.\n// This requires the checkbox inline-size to be set to max-content.\n// TODO: Remove this once the checkbox displays correctly on a later version of Mercury.\n.checkbox {\n inline-size: max-content;\n}\n\n.footer.dialog-footer-with-border {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--spacing-gap-m);\n\n > .buttons-spacer {\n margin-inline-start: auto;\n }\n}\n\n.connection-status {\n &--connecting {\n color: var(--color-text-neutral-disabled);\n }\n\n &--success {\n color: var(--color-text-success-default);\n }\n\n &--failed {\n color: var(--color-text-error-default);\n }\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n getAssetPath,\n Method,\n h,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { getSelectedItem, setSelectedItem } from \"../../common/common\";\nimport {\n mapOptionsToComboBoxItemModel,\n renderChCheckboxItems\n} from \"../../common/helpers\";\nimport { FormSubmitResult, GxOption } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\nimport {\n TabModel,\n ComboBoxModel,\n ChCheckboxCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { removeIndex } from \"../../common/array\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tab\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst WINDOWS_AUTHENTICATION_VALUE: string = \"WINDOWS_AUTHENTICATION\";\nconst LOCALDB_INSTANCE: string = \"(LocalDB)\\\\MSSQLLocalDB\";\nconst MAIN_SECTION_CLASSES: string = \"main\";\nconst BASIC_SECTION_PARENT_CLASSES: string = \"basic\";\n\nconst SYSTEM_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"primary\"\n});\n\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"on-interactive\"\n});\n\nconst DATABASE_ICON = getIconPath({\n category: \"system\",\n name: \"database\",\n colorType: \"primary\"\n});\n\nconst LOCATION_MODE_DEFAULT = \"default\";\nconst LOCATION_MODE_CUSTOM = \"custom\";\n\nconst DATABASE_NAME_PREFIX: string = \"GX_KB_\";\n\nconst BASIC_TAB_SELECTOR: string = \"basic\";\nconst ADVANCED_TAB_SELECTOR: string = \"advanced\";\n\n@Component({\n tag: \"gx-ide-new-kb\",\n styleUrl: \"new-kb.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/new-kb\"]\n})\nexport class GxIdeNewKb {\n #advancedTabHasBeenRendered: boolean = false;\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n /**\n * frontEndsState saves the id's of the front ends checkboxes that are checked\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #frontEndsCheckedMap = new Map<string, string[]>();\n #selectedPrototypingEnvironmentId: string;\n #selectedDataSourceId: string;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-kb/shortcuts.json`);\n #kbSectionsModel: TabModel = [];\n\n @Element() el: HTMLGxIdeNewKbElement;\n\n /* References needed to collect data con \"Create\" button submit*/\n #authenticationTypeEl!: HTMLChComboBoxRenderElement;\n #collationEl!: HTMLChComboBoxRenderElement;\n #createDataFilesInKBFolderEl!: HTMLChCheckboxElement;\n #databaseNameEl!: HTMLChEditElement;\n #dataSourceEl!: HTMLChComboBoxRenderElement;\n #kbNameEl!: HTMLChEditElement;\n #locationEl!: HTMLChEditElement;\n #locationModeEl!: HTMLChRadioGroupRenderElement;\n #locationModeModel: RadioGroupItemModel[];\n #locationElRegistered = false;\n #credentialControlsRegistered = false;\n #passwordEl!: HTMLChEditElement;\n #prototypingEnvironmentEl!: HTMLChComboBoxRenderElement;\n #prototypingTargetEl!: HTMLChComboBoxRenderElement;\n #savePasswordEl!: HTMLChCheckboxElement;\n #serverNameEl!: HTMLChComboBoxRenderElement;\n #userInterfaceLanguageEl!: HTMLChComboBoxRenderElement;\n #userNameEl!: HTMLChEditElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n\n @State() advancedTabIsVisible: boolean = false;\n @State() loadingAdvancedTab: boolean = false;\n @State() browseForMoreDialogOpen: boolean = false;\n @State() databaseNameValue: string = \"\";\n @State() locationMode: string = LOCATION_MODE_DEFAULT;\n /**\n * Allows selecting multiple generators for the front end\n * TODO: Check if this property can be deleted, since we can call getFrontEndsCallback.\n */\n @State() frontEnds: GxOption[];\n @State() validatableControls = new Map<string, ControlValidation>();\n @State() connectionStatus: \"connecting\" | \"success\" | \"failed\" | undefined;\n @State() userNameValue: string = \"\";\n @State() passwordValue: string = \"\";\n\n // representations of GxOption[] as ComboBoxModel, and initialValue for each one.\n @State() authenticationTypes: GxOption[] = [];\n @Watch(\"authenticationTypes\")\n watchAuthenticationTypes(newValue: GxOption[]) {\n if (newValue?.length) {\n this.authenticationTypesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.authenticationTypeValue = getSelectedItem(newValue);\n }\n }\n @State() authenticationTypesComboBoxModel: ComboBoxModel = [];\n @State() authenticationTypeValue: string;\n @State() collations: GxOption[] = [];\n @Watch(\"collations\")\n watchCollations(newValue: GxOption[]) {\n if (!newValue?.length) {\n this.collationsComboBoxModel = [];\n return;\n }\n this.collationsComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n }\n @State() collationsComboBoxModel: ComboBoxModel = [];\n @State() defaultCollation: string;\n @State() defaultDataSourcesComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsInitialValue: string;\n @State() prototypingEnvironmentsComboBoxModel: ComboBoxModel = [];\n @State() prototypingEnvironmentsInitialValue: string;\n @State() serverInstances: GxOption[] = [];\n @Watch(\"serverInstances\")\n watchServerInstances(newValue: GxOption[]) {\n if (!newValue?.length) {\n this.serverInstancesComboBoxModel = [];\n return;\n }\n this.serverInstancesComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n }\n @State() serverInstancesComboBoxModel: ComboBoxModel = [];\n @State() serverNameValue: string = \"\";\n @State() userInterfaceLanguagesComboBoxModel: ComboBoxModel = [];\n @State() userInterfaceLanguagesInitialValue: string;\n @State() selectedTab: string = BASIC_TAB_SELECTOR;\n\n /**\n * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Specifies whether the location field (and its folder-picker button) is\n * shown in the header, allowing the user to override the default `kbLocation`\n * path. Independent from `isAdvanced`.\n */\n @Prop() readonly canSetLocation: boolean = false;\n\n /**\n * Callback invoked when the advanced tab is selected for the first time.\n * Returns the data needed to populate the advanced tab fields lazily,\n * avoiding unnecessary loading at component initialization.\n */\n @Prop() readonly getAdvancedTabDataCallback: GetAdvancedTabDataCallback;\n\n /**\n * Callback that will be invoked when the user confirms KB creation (‘Create’ button)\n */\n @Prop() readonly createCallback!: CreateCallback;\n\n /**\n * It allows defining whether the option to create the data files in the KB folder will be shown in the advanced tab\n */\n @Prop({ mutable: true }) createDataFilesInKBFolder: boolean = true;\n\n /**\n * Name of the database where we are going to persist the information of our KB\n */\n @Prop() readonly databaseName: string;\n\n /**\n * It allows defining the DBMS that will be used in the solution\n */\n @Prop({ mutable: true }) defaultDataSources: GxOption[] = [];\n @Watch(\"defaultDataSources\")\n watchDefaultDataSources(newValue: GxOption[]) {\n if (newValue?.length) {\n this.defaultDataSourcesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n const result = setSelectedItem(newValue, this.#selectedDataSourceId);\n this.#selectedDataSourceId = getSelectedItem(result);\n }\n }\n\n /**\n * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)\n */\n @Prop() readonly getDataSourcesCallback: GetDataSourcesCallback;\n\n /**\n * Callback invoked when the user changes the prototyping environment, allowing for the modification of the list of front ends\n */\n @Prop() readonly getFrontEndsCallback!: GetFrontEndsCallback;\n\n /**\n * Callback invoked when the user changes the prototyping target id, allowing for the modification of the list of prototyping environments\n */\n @Prop()\n readonly getPrototypingEnvironmentsCallback!: GetPrototypingEnvironmentsCallback;\n\n /**\n * Specify whether it is feasible to display information related to local configuration parameters\n */\n @Prop() readonly isAdvanced = false;\n\n /**\n * Default suggested path to a directory where the information related to the KB will be stored/generated\n */\n @Prop({ mutable: true }) kbLocation: string;\n\n /**\n * The knowledge base default suggested name\n */\n @Prop() readonly kbName: string;\n\n /**\n * Password for the database connection. Visible if the Authentication Type is different from Windows Authentication (first item of the combo)\n */\n @Prop() readonly password: string;\n\n /**\n * It allows selecting the default environment that the KB will have (additional environments can be created later)\n */\n @Prop({ mutable: true }) defaultPrototypingEnvironments: GxOption[] = [];\n @Watch(\"defaultPrototypingEnvironments\")\n watchDefaultPrototypingEnvironments(newValue: GxOption[]) {\n if (newValue?.length) {\n this.prototypingEnvironmentsComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.#selectedPrototypingEnvironmentId = getSelectedItem(newValue);\n this.#updateFrontEnds();\n }\n }\n\n /**\n * Path to a directory where the information related to the KB will be stored/generated\n */\n @Prop() readonly prototypingTargets: GxOption[] = [];\n @Watch(\"prototypingTargets\")\n watchPrototypingTargets(newValue: GxOption[]) {\n if (newValue?.length) {\n this.prototypingTargetsComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.prototypingTargetsInitialValue = getSelectedItem(newValue);\n this.#getPrototypingEnvironments();\n }\n }\n\n /**\n * Visible if something other than Windows Authentication is selected\n */\n @Prop() readonly savePassword: boolean = false;\n\n /**\n * This is a function provided by the developer that returns a string, with the location path\n */\n @Prop() readonly selectLocationCallback!: SelectLocationCallback;\n\n /**\n * Callback invoked when the user clicks the \"Browse for more...\" button next\n * to the Server Name combo. The host is expected to display its own server\n * picker UI and resolve with the name of the selected server instance, which\n * will be set as the value of the Server Name combo.\n */\n @Prop() readonly browseForMoreCallback: BrowseForMoreCallback;\n\n /**\n * Callback invoked when the user selects a different server instance,\n * allowing the host to fetch the collations available on that instance.\n */\n @Prop()\n readonly getCollationsForInstanceCallback: GetCollationsForInstanceCallback;\n\n /**\n * Specify the language in which the application screens will be developed (default language)\n */\n @Prop() readonly userInterfaceLanguages: GxOption[] = [];\n @Watch(\"userInterfaceLanguages\")\n watchUserInterfaceLanguages(newValue: GxOption[]) {\n if (newValue?.length) {\n this.userInterfaceLanguagesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.userInterfaceLanguagesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Username for the database connection. Visible if the Authentication Type is different from Windows Authentication\n */\n @Prop({ mutable: true }) userName: string;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.databaseNameValue = this.#computeDefaultDatabaseName(this.kbName);\n if (this.databaseName) {\n this.databaseNameValue = this.databaseName;\n }\n this.userNameValue = this.userName ?? \"\";\n this.passwordValue = this.password ?? \"\";\n this.#kbSectionsModel = [\n {\n id: BASIC_TAB_SELECTOR,\n name: this.#componentLocale.tabBasic.tabLabel\n },\n {\n id: ADVANCED_TAB_SELECTOR,\n name: this.#componentLocale.tabAdvanced.tabLabel\n }\n ];\n\n this.#locationModeModel = [\n {\n value: LOCATION_MODE_DEFAULT,\n caption: this.#componentLocale.header.kbLocationDefault\n },\n {\n value: LOCATION_MODE_CUSTOM,\n caption: this.#componentLocale.header.kbLocationCustom\n }\n ];\n }\n\n connectedCallback() {\n this.watchDefaultDataSources(this.defaultDataSources);\n this.watchDefaultPrototypingEnvironments(\n this.defaultPrototypingEnvironments\n );\n this.watchPrototypingTargets(this.prototypingTargets);\n this.watchUserInterfaceLanguages(this.userInterfaceLanguages);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControlsBasicTab();\n }\n\n componentDidRender() {\n if (this.advancedTabIsVisible && !this.#advancedTabHasBeenRendered) {\n // just call this once.\n this.#initialSetupAdvancedTab();\n this.#initializeValidatableControlsAdvancedTab();\n this.#advancedTabHasBeenRendered = true;\n }\n\n // Register the location input for validation once it's rendered (custom mode)\n if (\n this.locationMode === LOCATION_MODE_CUSTOM &&\n !this.#locationElRegistered &&\n this.#locationEl\n ) {\n this.validatableControls.set(this.#locationEl.id, {\n reference: this.#locationEl,\n hasError: false,\n message: undefined\n });\n this.#locationElRegistered = true;\n }\n\n // Register credential controls when they become visible (SQL Auth selected)\n if (\n this.authenticationTypeValue !== WINDOWS_AUTHENTICATION_VALUE &&\n !this.#credentialControlsRegistered &&\n this.#userNameEl &&\n this.#passwordEl\n ) {\n this.validatableControls.set(this.#userNameEl.id, {\n reference: this.#userNameEl,\n hasError: false,\n message: undefined\n });\n this.validatableControls.set(this.#passwordEl.id, {\n reference: this.#passwordEl,\n hasError: false,\n message: undefined\n });\n this.#credentialControlsRegistered = true;\n }\n\n // Reset flag when switching back to Windows Auth so they re-register next time\n if (\n this.authenticationTypeValue === WINDOWS_AUTHENTICATION_VALUE &&\n this.#credentialControlsRegistered\n ) {\n this.#credentialControlsRegistered = false;\n }\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #computeDefaultDatabaseName = (kbName: string): string =>\n `${DATABASE_NAME_PREFIX}${kbName ?? \"\"}`;\n\n #kbNameInputHandler = (e: CustomEvent<string> | InputEvent) => {\n const kbNameValue = (e.detail ?? this.#kbNameEl?.value) as string;\n this.databaseNameValue = this.#computeDefaultDatabaseName(kbNameValue);\n };\n\n #databaseNameInputHandler = (e: CustomEvent<string> | InputEvent) => {\n this.databaseNameValue = (e.detail ??\n this.#databaseNameEl?.value) as string;\n };\n\n #handlerAuthenticationTypeInput = async (\n e: CustomEvent<string> | InputEvent\n ) => {\n this.authenticationTypeValue = (e as CustomEvent<string>)?.detail as string;\n this.collations = [];\n this.defaultCollation = undefined;\n this.connectionStatus = undefined;\n await this.#loadCollationsForCurrentConnection();\n };\n\n #handlerCredentialsChanged = async (): Promise<void> => {\n this.userNameValue = this.#userNameEl?.value ?? \"\";\n this.passwordValue = this.#passwordEl?.value ?? \"\";\n await this.#loadCollationsForCurrentConnection();\n };\n\n #browseForMoreHandler = async (): Promise<void> => {\n if (!this.browseForMoreCallback) {\n return;\n }\n this.browseForMoreDialogOpen = true;\n try {\n const selectedInstance = await this.browseForMoreCallback();\n if (selectedInstance) {\n this.serverNameValue = selectedInstance;\n if (this.#serverNameEl) {\n this.#serverNameEl.value = selectedInstance;\n }\n await this.#serverNameChangedHandler(\n new CustomEvent<string>(\"change\", { detail: selectedInstance })\n );\n }\n } catch (error) {\n } finally {\n this.browseForMoreDialogOpen = false;\n }\n };\n\n #serverNameChangedHandler = async (\n e: CustomEvent<string> | InputEvent\n ): Promise<void> => {\n const selectedInstance =\n (e as CustomEvent<string>)?.detail ??\n (e.target as HTMLInputElement)?.value;\n this.serverNameValue = selectedInstance ?? \"\";\n this.#applyCreateDataFilesInKBFolderForServer();\n await this.#loadCollationsForCurrentConnection();\n };\n\n #classifyServer = (\n serverName: string\n ): \"localdb\" | \"local\" | \"remote\" | \"empty\" => {\n if (!serverName) {\n return \"empty\";\n }\n if (serverName.toLowerCase() === LOCALDB_INSTANCE.toLowerCase()) {\n return \"localdb\";\n }\n const isLocal = (this.serverInstances ?? []).some(\n s => s.label?.toLowerCase() === serverName.toLowerCase()\n );\n return isLocal ? \"local\" : \"remote\";\n };\n\n #createDataFilesInKBFolderDisabled = (): boolean => {\n const kind = this.#classifyServer(this.serverNameValue);\n return kind === \"localdb\" || kind === \"remote\" || kind === \"empty\";\n };\n\n #sqlAuthMissingCredentials = (): boolean => {\n const authType = this.authenticationTypeValue;\n if (!authType || authType === WINDOWS_AUTHENTICATION_VALUE) {\n return false;\n }\n return !this.userNameValue || !this.passwordValue;\n };\n\n #applyCreateDataFilesInKBFolderForServer = (): void => {\n const kind = this.#classifyServer(this.serverNameValue);\n if (kind === \"local\" || kind === \"localdb\") {\n this.createDataFilesInKBFolder = true;\n } else if (kind === \"remote\") {\n this.createDataFilesInKBFolder = false;\n }\n };\n\n #loadCollationsForCurrentConnection = async (): Promise<void> => {\n const selectedInstance = this.serverNameValue;\n if (\n !selectedInstance ||\n !this.getCollationsForInstanceCallback ||\n this.connectionStatus === \"connecting\"\n ) {\n return;\n }\n const authType = this.authenticationTypeValue;\n const isWindowsAuth = authType === WINDOWS_AUTHENTICATION_VALUE;\n const userName = isWindowsAuth ? undefined : this.#userNameEl?.value;\n const password = isWindowsAuth ? undefined : this.#passwordEl?.value;\n\n if (!isWindowsAuth && authType && (!userName || !password)) {\n return;\n }\n\n this.connectionStatus = \"connecting\";\n try {\n const result = await this.getCollationsForInstanceCallback(\n selectedInstance,\n authType,\n userName,\n password\n );\n if (result) {\n this.collations = result.collations ?? [];\n this.defaultCollation = result.defaultCollation ?? undefined;\n this.connectionStatus = \"success\";\n } else {\n this.collations = [];\n this.defaultCollation = undefined;\n this.connectionStatus = \"failed\";\n }\n } catch {\n this.collations = [];\n this.defaultCollation = undefined;\n this.connectionStatus = \"failed\";\n }\n };\n\n #prototypingEnvironmentValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ): void => {\n this.#selectedPrototypingEnvironmentId = event.detail as string;\n this.#getDataSources();\n this.#updateFrontEnds();\n };\n\n #prototypingTargetValueChangedHandler = async (): Promise<void> => {\n await this.#getPrototypingEnvironments();\n this.#getDataSources();\n };\n\n #dataSourceValueChangedHandler = () => {\n this.#selectedDataSourceId = this.#dataSourceEl.value;\n };\n\n #renderAdvanced = (): Element[] => {\n const showCredentials =\n this.authenticationTypeValue !== WINDOWS_AUTHENTICATION_VALUE;\n\n return [\n <section class=\"kb-storage-card\" part=\"kb-storage-card\">\n <header class=\"kb-storage-card__header\">\n <div class=\"kb-storage-card__heading\">\n <h2 class=\"kb-storage-card__title body-semi-bold-m\">\n {this.#componentLocale.tabAdvanced.tabTitle}\n </h2>\n </div>\n </header>\n\n <div class=\"kb-storage-card__grid\">\n <div class=\"kb-storage-column\">\n <div class=\"kb-storage-column__title body-regular-xs\">\n <span class=\"kb-storage-column__title-text\">\n {this.#componentLocale.tabAdvanced.connectionGroup}\n </span>\n <span class=\"kb-storage-column__title-rule\" aria-hidden=\"true\" />\n </div>\n\n <div class=\"field-group field-group--stacked\">\n <div class=\"field field-block server-name-field\">\n <label class=\"label\" htmlFor=\"serverName\">\n {this.#componentLocale.tabAdvanced.serverName.label}\n </label>\n <div class=\"server-name-wrapper\">\n <ch-combo-box-render\n class=\"combo-box\"\n value={this.serverNameValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#serverNameEl = el as HTMLChComboBoxRenderElement)\n }\n id=\"serverName\"\n part=\"server-name\"\n model={this.serverInstancesComboBoxModel}\n suggest\n suggestDebounce={config.inputDebounce}\n onInput={this.#serverNameChangedHandler}\n onChange={this.#serverNameChangedHandler}\n ></ch-combo-box-render>\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#componentLocale.tabAdvanced.serverName.browseForMore\n }\n part=\"button-browse-for-more\"\n onClick={this.#browseForMoreHandler}\n >\n <ch-image class=\"icon-m\" src={DATABASE_ICON}></ch-image>\n {!this.browseForMoreDialogOpen && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"center\"\n delay={config.tooltipSettings.delay}\n >\n {\n this.#componentLocale.tabAdvanced.serverName\n .browseForMore\n }\n </ch-tooltip>\n )}\n </button>\n </div>\n {this.#evaluateTooltipRender(this.#serverNameEl)}\n </div>\n\n <div class=\"field field-block database-field\">\n <label class=\"label\" htmlFor=\"databaseName\">\n {this.#componentLocale.tabAdvanced.databaseName.label}\n </label>\n <ch-edit\n class=\"input\"\n value={this.databaseNameValue}\n id=\"databaseName\"\n part=\"database-name\"\n onInput={this.#databaseNameInputHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#databaseNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n {this.#evaluateTooltipRender(this.#databaseNameEl)}\n </div>\n\n <div class=\"field field-block collation-field\">\n <label class=\"label\" htmlFor=\"collation\">\n {this.#componentLocale.tabAdvanced.collation.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={\n !this.serverNameValue || this.collations.length === 0\n }\n placeholder={\n this.collations.length === 0\n ? this.#componentLocale.tabAdvanced.collation\n .disabledPlaceholder\n : \"\"\n }\n value={this.defaultCollation}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#collationEl = el as HTMLChComboBoxRenderElement)\n }\n model={this.collationsComboBoxModel}\n id=\"collation\"\n part=\"collation\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#collationEl)}\n </div>\n\n <ch-checkbox\n class=\"checkbox\"\n checkedValue=\"true\"\n value={this.createDataFilesInKBFolder ? \"true\" : undefined}\n disabled={this.#createDataFilesInKBFolderDisabled()}\n caption={\n this.#componentLocale.tabAdvanced.createDataFilesInKbFolder\n }\n part=\"create-data-in-kb\"\n id=\"createDataFilesInKBFolder\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#createDataFilesInKBFolderEl =\n el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n </div>\n\n <div class=\"kb-storage-column\">\n <div class=\"kb-storage-column__title body-regular-xs\">\n <span class=\"kb-storage-column__title-text\">\n {this.#componentLocale.tabAdvanced.authenticationGroup}\n </span>\n <span class=\"kb-storage-column__title-rule\" aria-hidden=\"true\" />\n </div>\n\n <div class=\"field-group field-group--stacked\">\n <div class=\"field field-block authentication-type-field\">\n <label class=\"label\" htmlFor=\"authenticationType\">\n {this.#componentLocale.tabAdvanced.authenticationType.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.authenticationTypes.length === 0}\n placeholder={\n this.authenticationTypes.length === 0\n ? this.#componentLocale.tabAdvanced.authenticationType\n .disabledPlaceholder\n : \"\"\n }\n value={this.authenticationTypeValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#authenticationTypeEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.authenticationTypesComboBoxModel}\n id=\"authenticationType\"\n part=\"authentication-type\"\n onInput={\n this.authenticationTypes.length > 0\n ? this.#handlerAuthenticationTypeInput\n : undefined\n }\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#authenticationTypeEl)}\n </div>\n\n {showCredentials ? (\n <div class=\"kb-storage-credentials\">\n <div class=\"field field-block username-field\">\n <label class=\"label\" htmlFor=\"userName\">\n {this.#componentLocale.tabAdvanced.userName.label}\n </label>\n <ch-edit\n class=\"input\"\n value={this.userName}\n id=\"userName\"\n part=\"user-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#userNameEl = el as HTMLChEditElement)\n }\n onInput={this.#handlerCredentialsChanged}\n debounce={config.inputDebounce}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#userNameEl)}\n </div>\n\n <div class=\"field field-block password-field\">\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.tabAdvanced.password.label}\n </label>\n <ch-edit\n class=\"input\"\n type=\"password\"\n showPasswordButton\n value={this.password}\n id=\"password\"\n part=\"password\"\n ref={(el: HTMLChEditElement) =>\n (this.#passwordEl = el as HTMLChEditElement)\n }\n onInput={this.#handlerCredentialsChanged}\n debounce={config.inputDebounce}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordEl)}\n </div>\n\n <ch-checkbox\n class=\"checkbox\"\n checkedValue=\"password\"\n value=\"password\"\n caption={this.#componentLocale.tabAdvanced.savePassword}\n part=\"save-password\"\n id=\"savePassword\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#savePasswordEl = el as HTMLChCheckboxElement)\n }\n disabled\n ></ch-checkbox>\n </div>\n ) : (\n <div class=\"kb-storage-callout\" part=\"windows-auth-callout\">\n <ch-image\n class=\"icon-l\"\n src={WARNING_ICON}\n type=\"mask\"\n ></ch-image>\n\n <div class=\"kb-storage-callout-inner\">\n <span class=\"kb-storage-callout__title body-semi-bold-s\">\n {\n this.#componentLocale.tabAdvanced\n .windowsAuthCalloutTitle\n }\n </span>\n <span class=\"kb-storage-callout__description body-regular-xs\">\n {\n this.#componentLocale.tabAdvanced\n .windowsAuthCalloutDescription\n }\n </span>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n ];\n };\n\n #renderBasic = (): HTMLElement[] => {\n return [\n <section class=\"basic__header field-group dialog-header-with-border spacing-body-inline\">\n <div\n // #prototyping target\n class=\"field field-block prototyping-target\"\n >\n <label class=\"label\" htmlFor=\"prototypingTarget\">\n {this.#componentLocale.tabBasic.prototypingTarget.label}\n </label>\n\n <ch-combo-box-render\n id=\"prototypingTarget\"\n class=\"combo-box\"\n part=\"prototyping-target\"\n disabled={this.prototypingTargets.length === 0}\n placeholder={\n this.prototypingTargets.length === 0\n ? this.#componentLocale.tabBasic.prototypingTarget\n .disabledPlaceholder\n : \"\"\n }\n value={this.prototypingTargetsInitialValue}\n model={this.prototypingTargetsComboBoxModel}\n onInput={\n this.prototypingTargets.length > 0\n ? this.#prototypingTargetValueChangedHandler\n : undefined\n }\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingTargetEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#prototypingTargetEl)}\n </div>\n\n <div\n // #user interface\n class=\"field field-block user-interface-language\"\n >\n <label class=\"label\" htmlFor=\"userInterfaceLanguage\">\n {this.#componentLocale.tabBasic.userInterfaceLanguage.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.userInterfaceLanguages.length === 0}\n placeholder={\n this.userInterfaceLanguages.length === 0\n ? this.#componentLocale.tabBasic.userInterfaceLanguage\n .disabledPlaceholder\n : \"\"\n }\n value={this.userInterfaceLanguagesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#userInterfaceLanguageEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.userInterfaceLanguagesComboBoxModel}\n id=\"userInterfaceLanguage\"\n part=\"user-interface-language\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#userInterfaceLanguageEl)}\n </div>\n </section>,\n\n <section\n class=\"section__back-end\"\n // backend\n >\n <h2\n // back end\n class=\"dialog-header dialog-header-with-border dialog-header__back-end subtitle-regular-xs\t text-align-center spacing-body-inline\"\n >\n {this.#componentLocale.tabBasic.backEnd.backEndLabel}\n </h2>\n <div class=\"field-group main__back-end spacing-body-inline scrollable\">\n <div\n // #prototyping environment\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"prototypingEnvironment\">\n {\n this.#componentLocale.tabBasic.backEnd.prototypingEnvironment\n .label\n }\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.defaultPrototypingEnvironments.length === 0}\n placeholder={\n this.defaultPrototypingEnvironments.length === 0\n ? this.#componentLocale.tabBasic.backEnd\n .prototypingEnvironment.disabledPlaceholder\n : \"\"\n }\n value={this.#selectedPrototypingEnvironmentId}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingEnvironmentEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.prototypingEnvironmentsComboBoxModel}\n onInput={this.#prototypingEnvironmentValueChangedHandler}\n part=\"prototyping-environment\"\n id=\"prototypingEnvironment\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#prototypingEnvironmentEl)}\n </div>\n\n <div\n // #data source\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"dataSource\">\n {this.#componentLocale.tabBasic.backEnd.dataSource.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.defaultDataSources.length === 0}\n placeholder={\n this.defaultDataSources.length === 0\n ? this.#componentLocale.tabBasic.backEnd.dataSource\n .disabledPlaceholder\n : \"\"\n }\n value={this.#selectedDataSourceId}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#dataSourceEl = el as HTMLChComboBoxRenderElement)\n }\n onInput={this.#dataSourceValueChangedHandler}\n model={this.defaultDataSourcesComboBoxModel}\n part=\"data-source\"\n id=\"dataSource\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#dataSourceEl)}\n </div>\n </div>\n </section>,\n\n <section\n class=\"section__front-end\"\n // front end\n >\n <h2 class=\"dialog-header dialog-header-with-border dialog-header__front-end subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.tabBasic.frontEnd.frontEndLabel}\n </h2>\n <div class=\"field-group main__front-end spacing-body-inline scrollable\">\n {renderChCheckboxItems(\n this.frontEnds,\n this.#frontEndCheckboxInputHandler,\n this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n )\n )}\n </div>\n </section>\n ];\n };\n\n // - - - - - - - - - -\n\n #cancelKbHandler = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #createKbHandler = (): void => {\n const selectedFrontEndIds =\n this.#frontEndsCheckedMap.get(this.#selectedPrototypingEnvironmentId) ??\n [];\n\n this.createCallback({\n authenticationType: this.#authenticationTypeEl?.value,\n collation: this.#collationEl?.value,\n createDataFilesInKBFolder: !!this.#createDataFilesInKBFolderEl?.value,\n dataSource: this.#dataSourceEl?.value,\n databaseName: this.#databaseNameEl?.value,\n frontEnds: selectedFrontEndIds,\n kbLocation: this.#locationEl?.value,\n kbName: this.#kbNameEl?.value,\n password: this.#passwordEl?.value,\n prototypingEnvironment: this.#prototypingEnvironmentEl?.value,\n prototypingTarget: this.#prototypingTargetEl?.value,\n savePassword: !!this.#savePasswordEl?.value,\n serverName: this.#serverNameEl?.value,\n userInterfaceLanguage: this.#userInterfaceLanguageEl?.value,\n userName: this.#userNameEl?.value,\n creationMode: this.selectedTab as CreationMode\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 new-kb 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 #frontEndCheckboxInputHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n const checkedValue = (event.target as HTMLChCheckboxElement).checkedValue;\n const checked = event.detail === checkedValue;\n this.#updateFrontEndsCheckedMap(checkedValue, checked);\n };\n\n /**\n * This function updates frontEndsCheckedMap, that contains the checked\n * checkboxes for each language front ends.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateFrontEndsCheckedMap = (checkboxId: string, checked: boolean) => {\n let currentState = this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n );\n if (!currentState) {\n // first time\n currentState = [];\n this.#frontEndsCheckedMap.set(\n this.#selectedPrototypingEnvironmentId,\n currentState\n );\n }\n if (checked) {\n // update by adding\n currentState.push(checkboxId);\n } else {\n // update by removing\n const checkboxIndex = currentState.findIndex(id => id === checkboxId);\n removeIndex(currentState, checkboxIndex);\n }\n };\n\n #getPrototypingEnvironments = async (): Promise<void> => {\n if (this.getPrototypingEnvironmentsCallback) {\n const selectedPrototypingTargetId = this.#prototypingTargetEl\n ? this.#prototypingTargetEl.value\n : this.prototypingTargetsInitialValue;\n const envs = await this.getPrototypingEnvironmentsCallback(\n selectedPrototypingTargetId\n );\n if (envs) {\n this.defaultPrototypingEnvironments = envs;\n }\n }\n };\n\n #getDataSources = (): void => {\n if (this.getDataSourcesCallback) {\n const selectedPrototypingEnvironmentId =\n this.#prototypingEnvironmentEl.value;\n const selectedPrototypingTargetId = this.#prototypingTargetEl.value;\n const updatedDefaultDataSourcesPromise: Promise<GxOption[]> =\n this.getDataSourcesCallback(\n selectedPrototypingEnvironmentId,\n selectedPrototypingTargetId\n );\n updatedDefaultDataSourcesPromise\n .then(result => {\n if (result.length > 0) {\n result = setSelectedItem(result, this.#selectedDataSourceId);\n this.#selectedDataSourceId = getSelectedItem(result);\n this.defaultDataSources = result;\n // set first option as selected\n this.#dataSourceEl.value =\n this.#selectedDataSourceId !== undefined\n ? this.#selectedDataSourceId\n : this.defaultDataSources[0].id;\n }\n })\n .catch(() => {\n // to do\n });\n }\n };\n\n #initialSetupAdvancedTab = () => {\n const hasWindowsAuth = this.authenticationTypes.some(\n opt => opt.id === WINDOWS_AUTHENTICATION_VALUE\n );\n if (hasWindowsAuth) {\n this.authenticationTypeValue = WINDOWS_AUTHENTICATION_VALUE;\n }\n };\n\n #initializeValidatableControlsBasicTab = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#dataSourceEl,\n this.#kbNameEl,\n this.#prototypingEnvironmentEl,\n this.#prototypingTargetEl,\n this.#userInterfaceLanguageEl\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 #initializeValidatableControlsAdvancedTab = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#authenticationTypeEl,\n this.#createDataFilesInKBFolderEl,\n this.#serverNameEl,\n this.#authenticationTypeEl,\n this.#databaseNameEl,\n this.#userNameEl,\n this.#collationEl,\n this.#passwordEl,\n this.#savePasswordEl\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 /**\n * @description It allows defining the DBMS that will be used in the solution\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #selectLocationHandler = (): void => {\n this.selectLocationCallback().then(kbLocation => {\n if (kbLocation) {\n this.kbLocation = kbLocation;\n } else {\n // to be defined\n }\n });\n };\n\n #locationModeChangeHandler = () => {\n this.locationMode = this.#locationModeEl.value;\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.selectedTab = event.detail.newSelectedId;\n if (event.detail.newSelectedId === ADVANCED_TAB_SELECTOR) {\n if (!this.advancedTabIsVisible) {\n this.advancedTabIsVisible = true;\n this.#loadAdvancedTabData();\n }\n } else {\n this.connectionStatus = undefined;\n }\n };\n\n #loadAdvancedTabData = async (): Promise<void> => {\n if (!this.getAdvancedTabDataCallback || this.loadingAdvancedTab) {\n return;\n }\n this.loadingAdvancedTab = true;\n this.connectionStatus = \"connecting\";\n try {\n const data = await this.getAdvancedTabDataCallback();\n if (data) {\n if (data.serverName != null) {\n this.serverNameValue = data.serverName;\n this.#applyCreateDataFilesInKBFolderForServer();\n }\n this.serverInstances = data.serverInstances ?? this.serverInstances;\n this.collations = data.collations ?? this.collations;\n this.authenticationTypes =\n data.authenticationTypes ?? this.authenticationTypes;\n this.defaultCollation = data.defaultCollation ?? this.defaultCollation;\n this.authenticationTypeValue =\n data.authenticationTypes?.[0]?.id ?? this.authenticationTypeValue;\n this.connectionStatus = \"success\";\n } else {\n this.connectionStatus = \"failed\";\n }\n } catch {\n this.connectionStatus = \"failed\";\n } finally {\n this.loadingAdvancedTab = false;\n }\n };\n\n /**\n * Evaluates which front-end options need updates on 'getFrontEndsCallback'\n * by comparing the new state (getFrontEndsCallback result) and previous state.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateFrontEnds = async () => {\n const updatedFrontEnds = await this.getFrontEndsCallback(\n this.#selectedPrototypingEnvironmentId\n );\n if (updatedFrontEnds?.length > 0) {\n this.frontEnds = updatedFrontEnds;\n\n // Seed the checked map from the data's checked property so that\n // initially checked items render as checked on first load.\n if (\n !this.#frontEndsCheckedMap.has(this.#selectedPrototypingEnvironmentId)\n ) {\n const checkedIds = updatedFrontEnds\n .filter(fe => fe.checked)\n .map(fe => fe.value || fe.id);\n\n if (checkedIds.length > 0) {\n this.#frontEndsCheckedMap.set(\n this.#selectedPrototypingEnvironmentId,\n checkedIds\n );\n }\n }\n }\n };\n\n render() {\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 <section class=\"section\">\n <header\n class={{\n \"field-group\": true,\n \"dialog-header-with-border\": !this.isAdvanced,\n \"dialog-header\": this.isAdvanced,\n \"header\": true,\n \"header-one-col\": true,\n \"spacing-body-block-start\": true,\n \"spacing-body-inline\": true\n }}\n >\n <div\n // #kb name\n class=\"field field-inline kb-name\"\n >\n <label class=\"label kb-label\" htmlFor=\"kbName\">\n {this.#componentLocale.header.kbName}\n </label>\n <ch-edit\n // TODO add placeholder\n autoFocus\n class=\"input kb-input\"\n placeholder=\"SalesInventory\"\n value={this.kbName}\n onInput={this.#kbNameInputHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#kbNameEl = el as HTMLChEditElement)\n }\n id=\"kbName\"\n part=\"kb-name\"\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#kbNameEl)}\n </div>\n\n {this.canSetLocation && (\n <div class=\"location-wrapper\">\n <label class=\"label location-label\">\n {this.#componentLocale.header.kbLocation}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#locationModeModel}\n value={LOCATION_MODE_DEFAULT}\n onChange={this.#locationModeChangeHandler}\n ref={(el: HTMLChRadioGroupRenderElement) =>\n (this.#locationModeEl = el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n\n {this.locationMode === LOCATION_MODE_CUSTOM && (\n <div class=\"location-custom-wrapper\">\n <div class=\"location-field\">\n <ch-edit\n class=\"input\"\n value={this.kbLocation}\n ref={(el: HTMLChEditElement) =>\n (this.#locationEl = el as HTMLChEditElement)\n }\n id=\"kbLocation\"\n part=\"kb-location\"\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#locationEl)}\n </div>\n <button\n class=\"button-tertiary button-icon-only location-icon\"\n aria-label={\n this.#componentLocale.header.selectLocationButton\n }\n title={this.#componentLocale.header.selectLocationButton}\n part=\"button-select-location\"\n onClick={this.#selectLocationHandler}\n >\n <ch-image class=\"icon-m\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\n )}\n </div>\n )}\n </header>\n\n {this.isAdvanced ? (\n <ch-tab-render\n // #tab\n class={{\n scrollable: true,\n tab: true,\n [MAIN_SECTION_CLASSES]: true\n }}\n tabListPosition=\"block-start\"\n model={this.#kbSectionsModel}\n selectedId={BASIC_TAB_SELECTOR}\n overflow=\"auto\"\n contain=\"size\"\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n >\n <div\n slot={BASIC_TAB_SELECTOR}\n class={BASIC_SECTION_PARENT_CLASSES}\n part=\"tab-button-basic\"\n >\n {this.#renderBasic()}\n </div>\n\n {this.advancedTabIsVisible && (\n <div\n slot={ADVANCED_TAB_SELECTOR}\n class=\"advanced\"\n part=\"tab-button-advanced\"\n >\n {this.#renderAdvanced()}\n </div>\n )}\n </ch-tab-render>\n ) : (\n <div class={MAIN_SECTION_CLASSES}>\n <div class={BASIC_SECTION_PARENT_CLASSES}>\n {this.#renderBasic()}\n </div>\n </div>\n )}\n\n <footer\n class={{\n \"footer\": true,\n \"dialog-footer-with-border\": true,\n \"spacing-body-block-end\": true,\n \"spacing-body-inline\": true\n }}\n >\n {this.connectionStatus && (\n <span\n class={{\n \"connection-status\": true,\n [`connection-status--${this.connectionStatus}`]: true\n }}\n part={`connection-status connection-status-${this.connectionStatus}`}\n >\n {\n this.#componentLocale.footer.connectionStatus[\n this.connectionStatus\n ]\n }\n </span>\n )}\n <div class=\"buttons-spacer\">\n <button\n // #cancel\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelKbHandler}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n // #create\n class=\"button-primary\"\n id=\"button-create\"\n disabled={\n this.connectionStatus === \"failed\" ||\n this.connectionStatus === \"connecting\" ||\n this.#sqlAuthMissingCredentials()\n }\n onClick={this.#createKbHandler}\n part=\"button-create\"\n >\n {this.#componentLocale.footer.btnCreate}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport interface NewKBData {\n authenticationType: string;\n collation: string;\n createDataFilesInKBFolder: boolean;\n databaseName: string;\n dataSource: string;\n frontEnds: string[];\n kbLocation: string;\n kbName: string;\n password: string;\n prototypingEnvironment: string;\n prototypingTarget: string;\n savePassword: boolean;\n serverName: string;\n userInterfaceLanguage: string;\n userName: string;\n creationMode: CreationMode;\n}\n\nexport type CreationMode = \"basic\" | \"advanced\";\nexport type CreateCallback = (data: NewKBData) => Promise<FormSubmitResult>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type GetDataSourcesCallback = (\n selectedPrototypingEnvironmentId: string,\n selectedPrototypingTargetId: string\n) => Promise<GxOption[]>;\n\nexport type GetFrontEndsCallback = (\n selectedPrototypingEnvironmentId: string\n) => Promise<GxOption[]>;\n\nexport type GetPrototypingEnvironmentsCallback = (\n selectedPrototypingTargetId: string\n) => Promise<GxOption[]>;\n\nexport type SelectLocationCallback = () => Promise<string>;\n\nexport type BrowseForMoreCallback = () => Promise<string>;\n\nexport type CollationsForInstanceResult = {\n collations: GxOption[];\n defaultCollation: string;\n};\n\nexport type GetCollationsForInstanceCallback = (\n serverInstance: string,\n authType?: string,\n userName?: string,\n password?: string\n) => Promise<CollationsForInstanceResult | undefined>;\n\nexport interface AdvancedTabData {\n serverName?: string;\n serverInstances?: GxOption[];\n collations?: GxOption[];\n authenticationTypes?: GxOption[];\n defaultCollation?: string;\n}\n\nexport type GetAdvancedTabDataCallback = () => Promise<\n AdvancedTabData | undefined\n>;\n"],"mappings":"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"}