@genexus/genexus-ide-ui 3.2.16 → 3.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/collection/components/new-kb/new-kb.js +1 -1
- package/dist/collection/components/new-kb/new-kb.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +1 -1
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/{p-e3a0b11b.entry.js → p-ea98ae0b.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e3a0b11b.entry.js.map → p-ea98ae0b.entry.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-new-kb.js","mappings":"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","names":["GxIdeNewKb"],"sources":["src/components/new-kb/new-kb.scss?tag=gx-ide-new-kb&encapsulation=shadow","src/components/new-kb/new-kb.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n &-one-col {\n grid-template-columns: 1fr;\n }\n\n // KB Name and Location are independent inline-field grids, so each label\n // column defaults to `max-content` and sizes to its own caption. Since\n // \"Location\" is shorter than \"KB Name\", their inputs would start at\n // different positions. Pin a shared, fixed-width label column on both so\n // the inputs line up vertically while keeping the same label-to-input gap.\n .field-inline {\n grid-template-columns: 4.5rem 1fr;\n }\n}\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// Backend-only callout shown immediately below the front end checkboxes.\n// The grid has no row gap, so add a top margin for breathing room.\n.main__front-end > .kb-storage-callout {\n margin-block-start: var(--spacing-gap-m);\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.advanced-loader {\n position: relative;\n display: block;\n inline-size: 100%;\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 @include callout;\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 display: inline-flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n\n &__spinner {\n display: inline-block;\n flex-shrink: 0;\n\n @include spinner(\n var(--icon-s),\n var(--color-accent-primary-default),\n var(--color-accent-primary-pressed)\n );\n }\n\n &--connecting {\n color: var(--color-accent-primary-on-default);\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 { 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 SUCCESS_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"success\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"error\"\n});\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 #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 /**\n * Monotonic id of the latest collations request. Used to discard stale\n * responses: a slow request for an invalid instance can resolve after a\n * newer request for a valid instance, and without this guard it would\n * overwrite the UI with the wrong (failed) result.\n */\n #collationsRequestId = 0;\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 /**\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 /**\n * True when front ends are available but none is selected, meaning the KB\n * will be generated as backend only. Drives the backend-only callout.\n */\n @State() noFrontEndSelected: boolean = false;\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\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 // Defer the one-time setup until the real advanced content is rendered\n // (not the loader); otherwise the control refs it reads are still undefined.\n if (\n this.advancedTabIsVisible &&\n !this.loadingAdvancedTab &&\n !this.#advancedTabHasBeenRendered\n ) {\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\n if (!this.#locationElRegistered && this.#locationEl) {\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 (!selectedInstance || !this.getCollationsForInstanceCallback) {\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 // Tag this request so we can ignore its response if a newer request is\n // fired before it resolves (e.g. the user fixes an invalid server name\n // while the slow request for the invalid one is still pending).\n const requestId = ++this.#collationsRequestId;\n this.connectionStatus = \"connecting\";\n try {\n const result = await this.getCollationsForInstanceCallback(\n selectedInstance,\n authType,\n userName,\n password\n );\n if (requestId !== this.#collationsRequestId) {\n // A newer request superseded this one; discard the stale response.\n return;\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 if (requestId !== this.#collationsRequestId) {\n return;\n }\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\n {this.noFrontEndSelected && (\n <div class=\"kb-storage-callout\" part=\"backend-only-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.tabBasic.frontEnd\n .backendOnlyCalloutTitle\n }\n </span>\n <span class=\"kb-storage-callout__description body-regular-xs\">\n {\n this.#componentLocale.tabBasic.frontEnd\n .backendOnlyCalloutDescription\n }\n </span>\n </div>\n </div>\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 this.#recomputeBackendOnly();\n };\n\n /**\n * Recomputes whether the KB will be generated as backend only, i.e. there\n * are front ends to choose from but none is currently selected.\n */\n #recomputeBackendOnly = () => {\n const checkedIds = this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n );\n this.noFrontEndSelected =\n (this.frontEnds?.length ?? 0) > 0 && (checkedIds?.length ?? 0) === 0;\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 #selectLocationHandler = async (event: MouseEvent): Promise<void> => {\n // Capture the button before awaiting. Opening/closing the location picker\n // restores focus to it programmatically, leaving the :focus-visible outline\n // lingering as if it were still active. On a successful selection move focus\n // to the location input (natural next step, keyboard-friendly); otherwise\n // just blur the button so the outline doesn't stay pinned.\n const button = event.currentTarget as HTMLButtonElement;\n const kbLocation = await this.selectLocationCallback();\n if (kbLocation) {\n this.kbLocation = kbLocation;\n this.#locationEl?.focus();\n } else {\n button?.blur();\n }\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 = data.connectionFailed ? \"failed\" : \"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 this.#recomputeBackendOnly();\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=\"field field-inline\">\n <label class=\"label\" htmlFor=\"kbLocation\">\n {this.#componentLocale.header.kbLocation}\n </label>\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 \"\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 type=\"button\"\n >\n <ch-image class=\"icon-m\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\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.loadingAdvancedTab ? (\n <gx-ide-loader\n show\n class=\"advanced-loader\"\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n ></gx-ide-loader>\n ) : (\n this.#renderAdvanced()\n )}\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 \"body-semi-bold-s\": true,\n \"connection-status\": true,\n [`connection-status--${this.connectionStatus}`]: true\n }}\n part={`connection-status connection-status-${this.connectionStatus}`}\n >\n {this.connectionStatus === \"connecting\" && (\n <span class=\"connection-status__spinner\"></span>\n )}\n {this.connectionStatus === \"success\" && (\n <ch-image\n class=\"icon-m\"\n src={SUCCESS_ICON}\n type=\"mask\"\n ></ch-image>\n )}\n {this.connectionStatus === \"failed\" && (\n <ch-image\n class=\"icon-m\"\n src={ERROR_ICON}\n type=\"mask\"\n ></ch-image>\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 connectionFailed?: boolean;\n}\n\nexport type GetAdvancedTabDataCallback = () => Promise<\n AdvancedTabData | undefined\n>;\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-new-kb.js","mappings":"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","names":["GxIdeNewKb"],"sources":["src/components/new-kb/new-kb.scss?tag=gx-ide-new-kb&encapsulation=shadow","src/components/new-kb/new-kb.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n &-one-col {\n grid-template-columns: 1fr;\n }\n\n // KB Name and Location are independent inline-field grids, so each label\n // column defaults to `max-content` and sizes to its own caption. Since\n // \"Location\" is shorter than \"KB Name\", their inputs would start at\n // different positions. Pin a shared, fixed-width label column on both so\n // the inputs line up vertically while keeping the same label-to-input gap.\n .field-inline {\n grid-template-columns: 4.5rem 1fr;\n }\n}\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// Backend-only callout shown immediately below the front end checkboxes.\n// The grid has no row gap, so add a top margin for breathing room.\n.main__front-end > .kb-storage-callout {\n margin-block-start: var(--spacing-gap-m);\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.advanced-loader {\n position: relative;\n display: block;\n inline-size: 100%;\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 @include callout;\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 display: inline-flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n\n &__spinner {\n display: inline-block;\n flex-shrink: 0;\n\n @include spinner(\n var(--icon-s),\n var(--color-accent-primary-default),\n var(--color-accent-primary-pressed)\n );\n }\n\n &--connecting {\n color: var(--color-accent-primary-on-default);\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 { 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 SUCCESS_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"success\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"error\"\n});\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 #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 /**\n * Monotonic id of the latest collations request. Used to discard stale\n * responses: a slow request for an invalid instance can resolve after a\n * newer request for a valid instance, and without this guard it would\n * overwrite the UI with the wrong (failed) result.\n */\n #collationsRequestId = 0;\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 /**\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 /**\n * True when front ends are available but none is selected, meaning the KB\n * will be generated as backend only. Drives the backend-only callout.\n */\n @State() noFrontEndSelected: boolean = false;\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\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 // Defer the one-time setup until the real advanced content is rendered\n // (not the loader); otherwise the control refs it reads are still undefined.\n if (\n this.advancedTabIsVisible &&\n !this.loadingAdvancedTab &&\n !this.#advancedTabHasBeenRendered\n ) {\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\n if (!this.#locationElRegistered && this.#locationEl) {\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 (!selectedInstance || !this.getCollationsForInstanceCallback) {\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 // Tag this request so we can ignore its response if a newer request is\n // fired before it resolves (e.g. the user fixes an invalid server name\n // while the slow request for the invalid one is still pending).\n const requestId = ++this.#collationsRequestId;\n this.connectionStatus = \"connecting\";\n try {\n const result = await this.getCollationsForInstanceCallback(\n selectedInstance,\n authType,\n userName,\n password\n );\n if (requestId !== this.#collationsRequestId) {\n // A newer request superseded this one; discard the stale response.\n return;\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 if (requestId !== this.#collationsRequestId) {\n return;\n }\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\n {this.noFrontEndSelected && (\n <div class=\"kb-storage-callout\" part=\"backend-only-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.tabBasic.frontEnd\n .backendOnlyCalloutTitle\n }\n </span>\n <span class=\"kb-storage-callout__description body-regular-xs\">\n {\n this.#componentLocale.tabBasic.frontEnd\n .backendOnlyCalloutDescription\n }\n </span>\n </div>\n </div>\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 this.#recomputeBackendOnly();\n };\n\n /**\n * Recomputes whether the KB will be generated as backend only, i.e. there\n * are front ends to choose from but none is currently selected.\n */\n #recomputeBackendOnly = () => {\n const checkedIds = this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n );\n this.noFrontEndSelected =\n (this.frontEnds?.length ?? 0) > 0 && (checkedIds?.length ?? 0) === 0;\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 #selectLocationHandler = async (event: MouseEvent): Promise<void> => {\n // Capture the button before awaiting. Opening/closing the location picker\n // restores focus to it programmatically, leaving the :focus-visible outline\n // lingering as if it were still active. On a successful selection move focus\n // to the location input (natural next step, keyboard-friendly); otherwise\n // just blur the button so the outline doesn't stay pinned.\n const button = event.currentTarget as HTMLButtonElement;\n const kbLocation = await this.selectLocationCallback();\n if (kbLocation) {\n this.kbLocation = kbLocation;\n this.#locationEl?.focus();\n } else {\n button?.blur();\n }\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 = data.connectionFailed ? \"failed\" : \"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 this.#recomputeBackendOnly();\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=\"field field-inline\">\n <label class=\"label\" htmlFor=\"kbLocation\">\n {this.#componentLocale.header.kbLocation}\n </label>\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 \"\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 type=\"button\"\n >\n <ch-image class=\"icon-m\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\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.loadingAdvancedTab ? (\n <gx-ide-loader\n show\n class=\"advanced-loader\"\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n ></gx-ide-loader>\n ) : (\n this.#renderAdvanced()\n )}\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 && !this.loadingAdvancedTab && (\n <span\n class={{\n \"body-semi-bold-s\": true,\n \"connection-status\": true,\n [`connection-status--${this.connectionStatus}`]: true\n }}\n part={`connection-status connection-status-${this.connectionStatus}`}\n >\n {this.connectionStatus === \"connecting\" && (\n <span class=\"connection-status__spinner\"></span>\n )}\n {this.connectionStatus === \"success\" && (\n <ch-image\n class=\"icon-m\"\n src={SUCCESS_ICON}\n type=\"mask\"\n ></ch-image>\n )}\n {this.connectionStatus === \"failed\" && (\n <ch-image\n class=\"icon-m\"\n src={ERROR_ICON}\n type=\"mask\"\n ></ch-image>\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 connectionFailed?: boolean;\n}\n\nexport type GetAdvancedTabDataCallback = () => Promise<\n AdvancedTabData | undefined\n>;\n"],"version":3}
|
|
@@ -764,7 +764,7 @@ const GxIdeNewKb = class {
|
|
|
764
764
|
"dialog-footer-with-border": true,
|
|
765
765
|
"spacing-body-block-end": true,
|
|
766
766
|
"spacing-body-inline": true
|
|
767
|
-
} }, this.connectionStatus && (h("span", { class: {
|
|
767
|
+
} }, this.connectionStatus && !this.loadingAdvancedTab && (h("span", { class: {
|
|
768
768
|
"body-semi-bold-s": true,
|
|
769
769
|
"connection-status": true,
|
|
770
770
|
[`connection-status--${this.connectionStatus}`]: true
|