@genexus/genexus-ide-ui 3.1.3 → 3.2.1
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/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +45 -5
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +46 -13
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +2 -0
- package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +2 -0
- package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +2 -0
- package/dist/collection/components/new-kb/new-kb.css +15 -5
- package/dist/collection/components/new-kb/new-kb.js +64 -12
- package/dist/collection/components/new-kb/new-kb.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +16 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +102 -5
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +5 -1
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +5 -1
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +5 -1
- package/dist/components/gx-ide-create-kb-from-server.js +49 -5
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +48 -13
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +45 -5
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +46 -13
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.en.json +5 -1
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.ja.json +5 -1
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/langs/create-kb-from-server.lang.zh.json +5 -1
- package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +2 -0
- package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +2 -0
- package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +2 -0
- package/dist/genexus-ide-ui/{p-217bd2d7.entry.js → p-76e1c357.entry.js} +178 -137
- package/dist/genexus-ide-ui/p-76e1c357.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-83a7e6fb.entry.js → p-cf61384e.entry.js} +162 -94
- package/dist/genexus-ide-ui/p-cf61384e.entry.js.map +1 -0
- package/dist/types/components/new-kb/new-kb.d.ts +7 -0
- package/dist/types/components/team-dev/create-kb-from-server/create-kb-from-server.d.ts +17 -0
- package/dist/types/components.d.ts +38 -6
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-217bd2d7.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-83a7e6fb.entry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["mapKbsModelToActionListModel","kbsData","listBoxItems","forEach","kb","push","id","type","caption","name","createKbFromServerCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","colorType","FOLDER_ICON","LOCATION_MODE_DEFAULT","LOCATION_MODE_CUSTOM","GxIdeCreateKbFromServer","_GxIdeCreateKbFromServer_chSearchIcon","set","this","_GxIdeCreateKbFromServer_showMoreIcon","_GxIdeCreateKbFromServer_versionsSelect","value","_GxIdeCreateKbFromServer__componentLocale","_GxIdeCreateKbFromServer_kbsActionListModel","_GxIdeCreateKbFromServer_kbVersions","_GxIdeCreateKbFromServer_chShortcutsEl","_GxIdeCreateKbFromServer_shortcutsSrc","getAssetPath","_GxIdeCreateKbFromServer_selectedKbId","_GxIdeCreateKbFromServer_kbNameAlreadyEditedByUser","_GxIdeCreateKbFromServer_locationModeModel","_GxIdeCreateKbFromServer_versionSelectedTypeEl","_GxIdeCreateKbFromServer_localKBNameEl","_GxIdeCreateKbFromServer_cancelHandler","cancelCallback","_GxIdeCreateKbFromServer_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeCreateKbFromServer_locationModeChangeHandler","event","locationMode","detail","kbLocation","_GxIdeCreateKbFromServer_selectLocationHandler","location","selectLocationCallback","_GxIdeCreateKbFromServer_inputKbLocationHandler","_GxIdeCreateKbFromServer_createHandler","versionSelectedType","__classPrivateFieldSet","createKBCallback","selectedKB","__classPrivateFieldGet","versionSelected","localKBName","localKbNameInputValue","undefined","versionList","then","formSubmitResult","validatableControls","validateControls","_GxIdeCreateKbFromServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCreateKbFromServer_filterValueChangedHandler","filterValue","toLowerCase","kbsFilteredActionListModel","filter","item","includes","_GxIdeCreateKbFromServer_init","getGXserverKBsCallback","result","_GxIdeCreateKbFromServer_initializeValidatableControls","validatableControl","reference","_GxIdeCreateKbFromServer_inputLocalKbNameHandler","_GxIdeCreateKbFromServer_selectedVersionHandler","selectKBVersionsCallback","length","map","kbVersion","versionsValueInput","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeCreateKbFromServer_selectKbChangeHandler","enableSelectVersionsButton","_GxIdeCreateKbFromServer_versionsChangedHandler","_GxIdeCreateKbFromServer_sortItems","model","sort","a","b","toLocaleLowerCase","localeCompare","_GxIdeCreateKbFromServer_renderFooter","onClick","part","footer","cancel","disabled","createKb","Map","componentDidLoad","call","loading","componentWillLoad","Locale","getComponentStrings","el","kbLocationDefault","kbLocationCustom","suspendShortcuts","suspend","render","Host","src","ref","header","user","change","loaderTitle","loader","title","description","show","Fragment","startImgSrc","onInput","placeholder","searchKbsPlaceholder","stateIconSrc","stateTitle","emptyKBsText","isAnimated","selection","onSelectedItemsChange","sortItemsCallback","onChange","htmlFor","versionsLabel","readonly","versionsPlaceholderDisabled","localKbNameLabel","localKbNamePlaceholder","canSetLocation","selectLocationButton"],"sources":["src/components/team-dev/create-kb-from-server/helpers.ts","src/components/team-dev/create-kb-from-server/create-kb-from-server.scss?tag=gx-ide-create-kb-from-server&encapsulation=shadow","src/components/team-dev/create-kb-from-server/create-kb-from-server.tsx"],"sourcesContent":["import { ActionListItemModel } from \"@genexus/chameleon-controls-library\";\nimport { KBData } from \"./create-kb-from-server\";\n\nexport const mapKbsModelToActionListModel = (\n kbsData: KBData[]\n): ActionListItemModel[] => {\n const listBoxItems: ActionListItemModel[] = [];\n kbsData.forEach(kb => {\n listBoxItems.push({\n id: kb.id,\n type: \"actionable\",\n caption: kb.name\n });\n });\n return listBoxItems;\n};\n","@import \"../../../global/temporary-mercury-overrides/_button.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n position: relative;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--spacing-gap-m);\n }\n}\n\n.location-custom-wrapper {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-xs);\n flex-grow: 1;\n min-inline-size: 0;\n}\n\n.location-field {\n flex-grow: 1;\n min-inline-size: 0;\n\n > .input {\n inline-size: 100%;\n }\n}\n","// Stencil\nimport {\n Component,\n Element,\n Fragment,\n getAssetPath,\n h,\n Host,\n Method,\n Prop,\n State\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ActionListItemActionable,\n ActionListItemModel,\n ActionListItemModelExtended,\n ChActionListRenderCustomEvent,\n ChEditCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { KBVersion } from \"../version-control/common/types\";\nimport { mapKbsModelToActionListModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst FOLDER_ICON = getIconPath({\n category: \"system\",\n name: \"folder\",\n colorType: \"primary\"\n});\n\nconst LOCATION_MODE_DEFAULT = \"default\";\nconst LOCATION_MODE_CUSTOM = \"custom\";\n\n@Component({\n tag: \"gx-ide-create-kb-from-server\",\n styleUrl: \"create-kb-from-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/create-kb-from-server\"]\n})\nexport class GxIdeCreateKbFromServer {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"interactive\"\n });\n\n #showMoreIcon = getIconPath({\n category: \"system\",\n name: \"more-horizontal\",\n colorType: \"interactive\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" },\n { value: \"Select\", caption: \"Select Version\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n #kbsActionListModel: ActionListItemModel[] = [];\n #kbVersions: KBVersion[] = [];\n #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n #kbNameAlreadyEditedByUser: boolean = false;\n\n #locationModeModel: RadioGroupItemModel[];\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeCreateKbFromServerElement;\n\n #localKBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n /**\n * The current kbn name value.\n */\n @State() localKbNameInputValue: string = \"\";\n\n /**\n * State to store the loading state of the component\n */\n @State() loading = true;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * KBs filtered\n */\n @State() kbsFilteredActionListModel: ActionListItemModel[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n @State() locationMode: string = LOCATION_MODE_DEFAULT;\n\n /**\n * Default suggested path to a directory where the KB will be stored/generated.\n */\n @Prop({ mutable: true }) kbLocation: string;\n\n /**\n * Specifies whether the location field (and its folder-picker button) is\n * shown in the header, allowing the user to override the default `kbLocation`\n * path. Independent from `isAdvanced`.\n */\n @Prop() readonly canSetLocation: boolean = false;\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create KB' button is pressed. Receives the user's parameter selection to create the remote KB locally and ends the dialog.\n */\n @Prop() readonly createKBCallback!: (\n kbInfo: KnowledgeBaseInfo\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback that must be invoked when invoking the dialog\n */\n @Prop() readonly getGXserverKBsCallback!: (\n data: GXServerConnectionData\n ) => Promise<KBData[]>;\n\n /**\n * Callback that returns a folder path selected by the user.\n */\n @Prop() readonly selectLocationCallback: SelectLocationCallback;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n async componentDidLoad() {\n await this.#init();\n this.loading = false;\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#locationModeModel = [\n {\n value: LOCATION_MODE_DEFAULT,\n caption: this.#_componentLocale.kb.kbLocationDefault\n },\n {\n value: LOCATION_MODE_CUSTOM,\n caption: this.#_componentLocale.kb.kbLocationCustom\n }\n ];\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #locationModeChangeHandler = (event: CustomEvent<string>) => {\n this.locationMode = event.detail as string;\n if (this.locationMode === LOCATION_MODE_DEFAULT) {\n this.kbLocation = \"\";\n }\n };\n\n #selectLocationHandler = async (): Promise<void> => {\n const location = await this.selectLocationCallback();\n if (location) {\n this.kbLocation = location;\n }\n };\n\n #inputKbLocationHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.kbLocation = event.detail as string;\n };\n\n #createHandler = async (): Promise<void> => {\n if (this.versionSelectedType !== \"Select\") {\n this.#kbVersions = [];\n }\n this.createKBCallback({\n selectedKB: this.#selectedKbId,\n versionSelected: this.versionSelectedType,\n localKBName: this.localKbNameInputValue,\n kbLocation:\n this.locationMode === LOCATION_MODE_CUSTOM\n ? this.kbLocation || undefined\n : undefined,\n versionList: this.#kbVersions\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.kbsFilteredActionListModel = this.#kbsActionListModel.filter(\n (item: ActionListItemActionable) =>\n item.caption.toLowerCase().includes(this.filterValue)\n );\n };\n\n #init = async () => {\n await this.getGXserverKBsCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n }).then(result => {\n this.#kbsActionListModel = mapKbsModelToActionListModel(result);\n this.kbsFilteredActionListModel = this.#kbsActionListModel;\n this.filterValue = \"\";\n });\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#localKBNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #inputLocalKbNameHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.localKbNameInputValue = event.detail as string;\n this.#kbNameAlreadyEditedByUser = true;\n };\n\n #selectedVersionHandler = async () => {\n if (this.selectKBVersionsCallback) {\n await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n if (result?.length) {\n this.#kbVersions = result.map(kbVersion => ({\n id: kbVersion.id,\n name: kbVersion.name\n }));\n\n if (result.length === 1 && this.#kbVersions[0].id === 0) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput =\n this.#_componentLocale.kb.versionsPlaceholder;\n } else if (result.length > 1) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput = `${result.length.toString()} ${\n this.#_componentLocale.kb.versionSelectedFieldValue\n }`;\n } else {\n this.localKbNameInputValue = `${this.#selectedKbId}_${\n this.#kbVersions[0].name\n }`;\n this.versionsValueInput = `${result[0].name} ${\n this.#_componentLocale.kb.oneVersionSelectedFieldValue\n }`;\n }\n }\n });\n }\n };\n\n #selectKbChangeHandler = (\n event: ChActionListRenderCustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const item = event.detail[0]?.item as ActionListItemActionable;\n if (item === undefined) {\n this.enableSelectVersionsButton = false;\n this.#selectedKbId = undefined;\n return;\n }\n this.enableSelectVersionsButton = true;\n this.#selectedKbId = item.id;\n if (this.#kbNameAlreadyEditedByUser) {\n return;\n }\n this.localKbNameInputValue = item.caption;\n if (this.versionSelectedType === \"Select\") {\n this.versionsValueInput = \"\";\n this.#kbVersions = [];\n }\n };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #sortItems = (model: ActionListItemActionable[]): void => {\n model.sort((a, b) =>\n a.caption\n ?.toLocaleLowerCase()\n .localeCompare(b.caption?.toLocaleLowerCase())\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer dialog-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // create kb button\n class=\"button-primary\"\n onClick={this.enableSelectVersionsButton && this.#createHandler}\n disabled={!this.enableSelectVersionsButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.createKb}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header dialog-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n id=\"change-connection-button\"\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n <section class=\"main field-group spacing-body\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <Fragment>\n <ch-edit\n class=\"input search-kbs\"\n id=\"local-kb-name\"\n startImgSrc={this.#chSearchIcon}\n type=\"search\"\n onInput={this.#filterValueChangedHandler}\n placeholder={this.#_componentLocale.kb.searchKbsPlaceholder}\n ></ch-edit>\n {this.#kbsActionListModel.length === 0 ||\n this.kbsFilteredActionListModel.length === 0 ? (\n <div class=\"list-box\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyKBsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </div>\n ) : (\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n onSelectedItemsChange={this.#selectKbChangeHandler}\n model={this.kbsFilteredActionListModel}\n sortItemsCallback={this.#sortItems}\n ></ch-action-list-render>\n )}\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={(el: HTMLChRadioGroupRenderElement) => {\n this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement;\n if (this.#versionSelectedTypeEl) {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n }\n }}\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n id=\"select-version-button\"\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-m\"\n disabled={!this.enableSelectVersionsButton}\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"localKbName\">\n {this.#_componentLocale.kb.localKbNameLabel}\n </label>\n <ch-edit\n // local kb name\n class=\"input\"\n id=\"localKbName\"\n value={this.localKbNameInputValue}\n onInput={this.#inputLocalKbNameHandler}\n placeholder={\n this.#_componentLocale.kb.localKbNamePlaceholder\n }\n ref={(el: HTMLChEditElement) => {\n this.#localKBNameEl = el as HTMLChEditElement;\n if (this.#localKBNameEl) {\n this.#initializeValidatableControls();\n }\n }}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#localKBNameEl)}\n </div>\n\n {this.canSetLocation && (\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"kbLocation\">\n {this.#_componentLocale.kb.kbLocation}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n id=\"kbLocation\"\n model={this.#locationModeModel}\n value={LOCATION_MODE_DEFAULT}\n onChange={this.#locationModeChangeHandler}\n ></ch-radio-group-render>\n\n {this.locationMode === LOCATION_MODE_CUSTOM && (\n <div class=\"location-custom-wrapper\">\n <div class=\"location-field\">\n <ch-edit\n class=\"input\"\n value={this.kbLocation}\n id=\"kbLocation\"\n onInput={this.#inputKbLocationHandler}\n ></ch-edit>\n </div>\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={\n this.#_componentLocale.kb.selectLocationButton\n }\n title={this.#_componentLocale.kb.selectLocationButton}\n onClick={this.#selectLocationHandler}\n >\n <ch-image\n class=\"icon-m\"\n type=\"mask\"\n src={FOLDER_ICON}\n ></ch-image>\n </button>\n </div>\n )}\n </div>\n )}\n </Fragment>\n )}\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type KnowledgeBaseInfo = {\n selectedKB: string;\n versionSelected: VersionOption;\n localKBName: string;\n kbLocation?: string;\n versionList: KBVersion[];\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n\nexport type SelectLocationCallback = () => Promise<string>;\n"],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export declare class GxIdeNewKb {
|
|
|
5
5
|
#private;
|
|
6
6
|
el: HTMLGxIdeNewKbElement;
|
|
7
7
|
advancedTabIsVisible: boolean;
|
|
8
|
+
locationMode: string;
|
|
8
9
|
/**
|
|
9
10
|
* Allows selecting multiple generators for the front end
|
|
10
11
|
* TODO: Check if this property can be deleted, since we can call getFrontEndsCallback.
|
|
@@ -37,6 +38,12 @@ export declare class GxIdeNewKb {
|
|
|
37
38
|
* Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)
|
|
38
39
|
*/
|
|
39
40
|
readonly cancelCallback: CancelCallback;
|
|
41
|
+
/**
|
|
42
|
+
* Specifies whether the location field (and its folder-picker button) is
|
|
43
|
+
* shown in the header, allowing the user to override the default `kbLocation`
|
|
44
|
+
* path. Independent from `isAdvanced`.
|
|
45
|
+
*/
|
|
46
|
+
readonly canSetLocation: boolean;
|
|
40
47
|
/**
|
|
41
48
|
* DB Collations
|
|
42
49
|
*/
|
|
@@ -36,6 +36,17 @@ export declare class GxIdeCreateKbFromServer {
|
|
|
36
36
|
* String value to show the number of versions selected ("N versions selected")
|
|
37
37
|
*/
|
|
38
38
|
versionsValueInput: string;
|
|
39
|
+
locationMode: string;
|
|
40
|
+
/**
|
|
41
|
+
* Default suggested path to a directory where the KB will be stored/generated.
|
|
42
|
+
*/
|
|
43
|
+
kbLocation: string;
|
|
44
|
+
/**
|
|
45
|
+
* Specifies whether the location field (and its folder-picker button) is
|
|
46
|
+
* shown in the header, allowing the user to override the default `kbLocation`
|
|
47
|
+
* path. Independent from `isAdvanced`.
|
|
48
|
+
*/
|
|
49
|
+
readonly canSetLocation: boolean;
|
|
39
50
|
/**
|
|
40
51
|
* Set of data required when executing any of the callbacks that require a connection to the server.
|
|
41
52
|
*/
|
|
@@ -56,6 +67,10 @@ export declare class GxIdeCreateKbFromServer {
|
|
|
56
67
|
* Callback that must be invoked when invoking the dialog
|
|
57
68
|
*/
|
|
58
69
|
readonly getGXserverKBsCallback: (data: GXServerConnectionData) => Promise<KBData[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Callback that returns a folder path selected by the user.
|
|
72
|
+
*/
|
|
73
|
+
readonly selectLocationCallback: SelectLocationCallback;
|
|
59
74
|
/**
|
|
60
75
|
* Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.
|
|
61
76
|
*/
|
|
@@ -80,6 +95,8 @@ export type KnowledgeBaseInfo = {
|
|
|
80
95
|
selectedKB: string;
|
|
81
96
|
versionSelected: VersionOption;
|
|
82
97
|
localKBName: string;
|
|
98
|
+
kbLocation?: string;
|
|
83
99
|
versionList: KBVersion[];
|
|
84
100
|
};
|
|
85
101
|
export type VersionOption = "Trunk" | "All" | "Select";
|
|
102
|
+
export type SelectLocationCallback = () => Promise<string>;
|
|
@@ -23,7 +23,7 @@ import { ContextMenuInfo, EntityData as EntityData1, FormSubmitResult, GxOption,
|
|
|
23
23
|
import { NewServerConnectionData } from "./components/team-dev/server-selector/server-selector";
|
|
24
24
|
import { AlignItems, FooterJustify, HeadingJustify, JustifyContent, SectionsPadding } from "./components/_helpers/container/container";
|
|
25
25
|
import { GXServerConnectionData as GXServerConnectionData1 } from "./components/team-dev/connect-gx-server/connect-gx-server";
|
|
26
|
-
import { KBData, KnowledgeBaseInfo } from "./components/team-dev/create-kb-from-server/create-kb-from-server";
|
|
26
|
+
import { KBData, KnowledgeBaseInfo, SelectLocationCallback } from "./components/team-dev/create-kb-from-server/create-kb-from-server";
|
|
27
27
|
import { CommitCallback, ContextMenuCallback as ContextMenuCallback1, KBVersion, LoadLocalChangesCallback, LoadRemoteChangesCallback, PendingItemsCheckedCallback, SelectCallback, ServerDetails, UpdateCallback } from "./components/team-dev/version-control/common/types";
|
|
28
28
|
import { CurlImportData, EntityData, SelectModuleCallback } from "./components/curl-inspector/curl-inspector";
|
|
29
29
|
import { MenuAlign, Mode, UserInfo } from "./components/current-user-info/current-user-info";
|
|
@@ -47,7 +47,7 @@ import { ComboBoxModel } from "@genexus/chameleon-controls-library";
|
|
|
47
47
|
import { ContextMenuCallback, ContextMenuInfo as ContextMenuInfo1, FormSubmitResult as FormSubmitResult1 } from "./components";
|
|
48
48
|
import { CancelCallback as CancelCallback10, CloseCallback, ConfirmCallback as ConfirmCallback6, HeaderData, ItemSelectedCallback, NavigationData } from "./components/navigation-report/navigation-report";
|
|
49
49
|
import { CancelCallback as CancelCallback11, CreateCallback, GetDataSourcesCallback, GetEnvironmentNameCallback, GetFrontEndsCallback, GetLanguagesCallback } from "./components/new-environment/new-environment";
|
|
50
|
-
import { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, GetPrototypingEnvironmentsCallback, SelectLocationCallback } from "./components/new-kb/new-kb";
|
|
50
|
+
import { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, GetPrototypingEnvironmentsCallback, SelectLocationCallback as SelectLocationCallback1 } from "./components/new-kb/new-kb";
|
|
51
51
|
import { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback3, SuggestCallback, TypeCategoryData, ValidateNameCallback } from "./components/new-object/new-object";
|
|
52
52
|
import { NewVersionData } from "./components/new-version/new-version";
|
|
53
53
|
import { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as SelectModuleCallback4 } from "./components/object-selector/object-selector";
|
|
@@ -99,7 +99,7 @@ export { ContextMenuInfo, EntityData as EntityData1, FormSubmitResult, GxOption,
|
|
|
99
99
|
export { NewServerConnectionData } from "./components/team-dev/server-selector/server-selector";
|
|
100
100
|
export { AlignItems, FooterJustify, HeadingJustify, JustifyContent, SectionsPadding } from "./components/_helpers/container/container";
|
|
101
101
|
export { GXServerConnectionData as GXServerConnectionData1 } from "./components/team-dev/connect-gx-server/connect-gx-server";
|
|
102
|
-
export { KBData, KnowledgeBaseInfo } from "./components/team-dev/create-kb-from-server/create-kb-from-server";
|
|
102
|
+
export { KBData, KnowledgeBaseInfo, SelectLocationCallback } from "./components/team-dev/create-kb-from-server/create-kb-from-server";
|
|
103
103
|
export { CommitCallback, ContextMenuCallback as ContextMenuCallback1, KBVersion, LoadLocalChangesCallback, LoadRemoteChangesCallback, PendingItemsCheckedCallback, SelectCallback, ServerDetails, UpdateCallback } from "./components/team-dev/version-control/common/types";
|
|
104
104
|
export { CurlImportData, EntityData, SelectModuleCallback } from "./components/curl-inspector/curl-inspector";
|
|
105
105
|
export { MenuAlign, Mode, UserInfo } from "./components/current-user-info/current-user-info";
|
|
@@ -123,7 +123,7 @@ export { ComboBoxModel } from "@genexus/chameleon-controls-library";
|
|
|
123
123
|
export { ContextMenuCallback, ContextMenuInfo as ContextMenuInfo1, FormSubmitResult as FormSubmitResult1 } from "./components";
|
|
124
124
|
export { CancelCallback as CancelCallback10, CloseCallback, ConfirmCallback as ConfirmCallback6, HeaderData, ItemSelectedCallback, NavigationData } from "./components/navigation-report/navigation-report";
|
|
125
125
|
export { CancelCallback as CancelCallback11, CreateCallback, GetDataSourcesCallback, GetEnvironmentNameCallback, GetFrontEndsCallback, GetLanguagesCallback } from "./components/new-environment/new-environment";
|
|
126
|
-
export { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, GetPrototypingEnvironmentsCallback, SelectLocationCallback } from "./components/new-kb/new-kb";
|
|
126
|
+
export { CancelCallback as CancelCallback12, CreateCallback as CreateCallback1, GetDataSourcesCallback as GetDataSourcesCallback1, GetFrontEndsCallback as GetFrontEndsCallback1, GetPrototypingEnvironmentsCallback, SelectLocationCallback as SelectLocationCallback1 } from "./components/new-kb/new-kb";
|
|
127
127
|
export { CancelCallback as CancelCallback13, CreateCallback as CreateCallback2, NewObjectData, SelectModuleCallback as SelectModuleCallback3, SuggestCallback, TypeCategoryData, ValidateNameCallback } from "./components/new-object/new-object";
|
|
128
128
|
export { NewVersionData } from "./components/new-version/new-version";
|
|
129
129
|
export { CancelCallback as CancelCallback14, LoadCallback as LoadCallback2, NewObjectCallback, OpenSelectionCallback, SelectModuleCallback as SelectModuleCallback4 } from "./components/object-selector/object-selector";
|
|
@@ -652,6 +652,10 @@ export namespace Components {
|
|
|
652
652
|
"titleHeightAsInput": boolean;
|
|
653
653
|
}
|
|
654
654
|
interface GxIdeCreateKbFromServer {
|
|
655
|
+
/**
|
|
656
|
+
* Specifies whether the location field (and its folder-picker button) is shown in the header, allowing the user to override the default `kbLocation` path. Independent from `isAdvanced`.
|
|
657
|
+
*/
|
|
658
|
+
"canSetLocation": boolean;
|
|
655
659
|
/**
|
|
656
660
|
* Callback that is invoked when the dialog is closed
|
|
657
661
|
*/
|
|
@@ -678,12 +682,20 @@ export namespace Components {
|
|
|
678
682
|
"getGXserverKBsCallback": (
|
|
679
683
|
data: GXServerConnectionData1
|
|
680
684
|
) => Promise<KBData[]>;
|
|
685
|
+
/**
|
|
686
|
+
* Default suggested path to a directory where the KB will be stored/generated.
|
|
687
|
+
*/
|
|
688
|
+
"kbLocation": string;
|
|
681
689
|
/**
|
|
682
690
|
* Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.
|
|
683
691
|
*/
|
|
684
692
|
"selectKBVersionsCallback": (
|
|
685
693
|
selectedKB: string
|
|
686
694
|
) => Promise<KBVersion[]>;
|
|
695
|
+
/**
|
|
696
|
+
* Callback that returns a folder path selected by the user.
|
|
697
|
+
*/
|
|
698
|
+
"selectLocationCallback": SelectLocationCallback;
|
|
687
699
|
/**
|
|
688
700
|
* Suspends or reactivates the shortcuts
|
|
689
701
|
*/
|
|
@@ -1609,6 +1621,10 @@ export namespace Components {
|
|
|
1609
1621
|
* Defines the type of authentication for the connection to the previously defined database
|
|
1610
1622
|
*/
|
|
1611
1623
|
"authenticationTypes": GxOption[];
|
|
1624
|
+
/**
|
|
1625
|
+
* Specifies whether the location field (and its folder-picker button) is shown in the header, allowing the user to override the default `kbLocation` path. Independent from `isAdvanced`.
|
|
1626
|
+
*/
|
|
1627
|
+
"canSetLocation": boolean;
|
|
1612
1628
|
/**
|
|
1613
1629
|
* Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)
|
|
1614
1630
|
*/
|
|
@@ -1676,7 +1692,7 @@ export namespace Components {
|
|
|
1676
1692
|
/**
|
|
1677
1693
|
* This is a function provided by the developer that returns a string, with the location path
|
|
1678
1694
|
*/
|
|
1679
|
-
"selectLocationCallback":
|
|
1695
|
+
"selectLocationCallback": SelectLocationCallback1;
|
|
1680
1696
|
/**
|
|
1681
1697
|
* Name of the DB server where we want to persist the information of our KB
|
|
1682
1698
|
*/
|
|
@@ -4503,6 +4519,10 @@ declare namespace LocalJSX {
|
|
|
4503
4519
|
"titleHeightAsInput"?: boolean;
|
|
4504
4520
|
}
|
|
4505
4521
|
interface GxIdeCreateKbFromServer {
|
|
4522
|
+
/**
|
|
4523
|
+
* Specifies whether the location field (and its folder-picker button) is shown in the header, allowing the user to override the default `kbLocation` path. Independent from `isAdvanced`.
|
|
4524
|
+
*/
|
|
4525
|
+
"canSetLocation"?: boolean;
|
|
4506
4526
|
/**
|
|
4507
4527
|
* Callback that is invoked when the dialog is closed
|
|
4508
4528
|
*/
|
|
@@ -4529,12 +4549,20 @@ declare namespace LocalJSX {
|
|
|
4529
4549
|
"getGXserverKBsCallback": (
|
|
4530
4550
|
data: GXServerConnectionData1
|
|
4531
4551
|
) => Promise<KBData[]>;
|
|
4552
|
+
/**
|
|
4553
|
+
* Default suggested path to a directory where the KB will be stored/generated.
|
|
4554
|
+
*/
|
|
4555
|
+
"kbLocation"?: string;
|
|
4532
4556
|
/**
|
|
4533
4557
|
* Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.
|
|
4534
4558
|
*/
|
|
4535
4559
|
"selectKBVersionsCallback"?: (
|
|
4536
4560
|
selectedKB: string
|
|
4537
4561
|
) => Promise<KBVersion[]>;
|
|
4562
|
+
/**
|
|
4563
|
+
* Callback that returns a folder path selected by the user.
|
|
4564
|
+
*/
|
|
4565
|
+
"selectLocationCallback"?: SelectLocationCallback;
|
|
4538
4566
|
}
|
|
4539
4567
|
interface GxIdeCurlInspector {
|
|
4540
4568
|
/**
|
|
@@ -5506,6 +5534,10 @@ declare namespace LocalJSX {
|
|
|
5506
5534
|
* Defines the type of authentication for the connection to the previously defined database
|
|
5507
5535
|
*/
|
|
5508
5536
|
"authenticationTypes"?: GxOption[];
|
|
5537
|
+
/**
|
|
5538
|
+
* Specifies whether the location field (and its folder-picker button) is shown in the header, allowing the user to override the default `kbLocation` path. Independent from `isAdvanced`.
|
|
5539
|
+
*/
|
|
5540
|
+
"canSetLocation"?: boolean;
|
|
5509
5541
|
/**
|
|
5510
5542
|
* Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)
|
|
5511
5543
|
*/
|
|
@@ -5573,7 +5605,7 @@ declare namespace LocalJSX {
|
|
|
5573
5605
|
/**
|
|
5574
5606
|
* This is a function provided by the developer that returns a string, with the location path
|
|
5575
5607
|
*/
|
|
5576
|
-
"selectLocationCallback":
|
|
5608
|
+
"selectLocationCallback": SelectLocationCallback1;
|
|
5577
5609
|
/**
|
|
5578
5610
|
* Name of the DB server where we want to persist the information of our KB
|
|
5579
5611
|
*/
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["newKbCss","CSS_BUNDLES","WINDOWS_AUTHENTICATION_VALUE","MAIN_SECTION_CLASSES","BASIC_SECTION_PARENT_CLASSES","SYSTEM_ICON","getIconPath","category","name","colorType","BASIC_TAB_SELECTOR","ADVANCED_TAB_SELECTOR","GxIdeNewKb","_GxIdeNewKb_advancedTabHasBeenRendered","set","this","_GxIdeNewKb_componentLocale","_GxIdeNewKb_frontEndsCheckedMap","Map","_GxIdeNewKb_selectedPrototypingEnvironmentId","_GxIdeNewKb_selectedDataSourceId","_GxIdeNewKb_shortcutsSrc","getAssetPath","_GxIdeNewKb_kbSectionsModel","_GxIdeNewKb_authenticationTypeEl","_GxIdeNewKb_collationEl","_GxIdeNewKb_createDataFilesInKBFolderEl","_GxIdeNewKb_databaseNameEl","_GxIdeNewKb_dataSourceEl","_GxIdeNewKb_kbNameEl","_GxIdeNewKb_locationEl","_GxIdeNewKb_passwordEl","_GxIdeNewKb_prototypingEnvironmentEl","_GxIdeNewKb_prototypingTargetEl","_GxIdeNewKb_savePasswordEl","_GxIdeNewKb_serverNameEl","_GxIdeNewKb_userInterfaceLanguageEl","_GxIdeNewKb_userNameEl","_GxIdeNewKb_chShortcutsEl","_GxIdeNewKb_handlerAuthenticationTypeInput","e","authenticationTypeValue","detail","__classPrivateFieldGet","_GxIdeNewKb_evaluateUserInputsDisplay","call","_GxIdeNewKb_handlerServerNameInput","_GxIdeNewKb_evaluateCreateDataCheckboxEnabled","_GxIdeNewKb_prototypingEnvironmentValueChangedHandler","event","__classPrivateFieldSet","_GxIdeNewKb_getDataSources","_GxIdeNewKb_updateFrontEnds","_GxIdeNewKb_prototypingTargetValueChangedHandler","async","_GxIdeNewKb_getPrototypingEnvironments","_GxIdeNewKb_dataSourceValueChangedHandler","value","_GxIdeNewKb_renderAdvanced","h","class","tabAdvanced","tabTitle","htmlFor","serverName","label","disabled","serverNames","length","placeholder","disabledPlaceholder","serverNamesInitialValue","ref","el","model","serverNamesComboBoxModel","onInput","id","part","_GxIdeNewKb_evaluateTooltipRender","authenticationType","authenticationTypes","authenticationTypesInitialValue","authenticationTypesComboBoxModel","undefined","databaseName","userNameVisible","userName","collation","collations","collationsInitialValue","collationsComboBoxModel","passwordVisible","password","type","checkedValue","caption","createDataFilesInKbFolder","createDataInKbDisabled","savePasswordVisible","savePassword","_GxIdeNewKb_renderBasic","tabBasic","prototypingTarget","prototypingTargets","prototypingTargetsInitialValue","prototypingTargetsComboBoxModel","userInterfaceLanguage","userInterfaceLanguages","userInterfaceLanguagesInitialValue","userInterfaceLanguagesComboBoxModel","backEnd","backEndLabel","prototypingEnvironment","defaultPrototypingEnvironments","prototypingEnvironmentsComboBoxModel","dataSource","defaultDataSources","defaultDataSourcesComboBoxModel","frontEnd","frontEndLabel","renderChCheckboxItems","frontEnds","_GxIdeNewKb_frontEndCheckboxInputHandler","get","_GxIdeNewKb_cancelKbHandler","cancelCallback","_GxIdeNewKb_createKbHandler","selectedFrontEndIds","_a","createCallback","_b","_c","createDataFilesInKBFolder","_d","_e","_f","kbLocation","_g","kbName","_h","_j","_k","_l","_m","_o","_p","_q","then","formSubmitResult","validatableControls","validateControls","serverNameValue","controlReference","hasError","message","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","target","checked","_GxIdeNewKb_updateFrontEndsCheckedMap","checkboxId","currentState","push","checkboxIndex","findIndex","removeIndex","getPrototypingEnvironmentsCallback","selectedPrototypingTargetId","envs","getDataSourcesCallback","selectedPrototypingEnvironmentId","updatedDefaultDataSourcesPromise","result","setSelectedItem","getSelectedItem","catch","_GxIdeNewKb_initialSetupAdvancedTab","selectedServerNameValue","selectedAuthenticationType","watchAuthenticationTypes","watchCollations","_GxIdeNewKb_initializeValidatableControlsBasicTab","forEach","validatableControl","reference","_GxIdeNewKb_initializeValidatableControlsAdvancedTab","_GxIdeNewKb_selectLocationHandler","selectLocationCallback","_GxIdeNewKb_tabSelectionChangedHandler","newSelectedId","advancedTabIsVisible","updatedFrontEnds","getFrontEndsCallback","newValue","mapOptionsToComboBoxItemModel","watchDefaultDataSources","watchDefaultPrototypingEnvironments","watchPrototypingTargets","watchServerNames","watchUserInterfaceLanguages","componentWillLoad","Locale","getComponentStrings","tabLabel","connectedCallback","componentDidLoad","componentDidRender","suspendShortcuts","suspend","render","Host","src","isAdvanced","header","autoFocus","selectLocationButton","title","onClick","scrollable","tab","tabListPosition","selectedId","overflow","contain","onSelectedItemChange","slot","footer","btnCancel","btnCreate"],"sources":["src/components/new-kb/new-kb.scss?tag=gx-ide-new-kb&encapsulation=shadow","src/components/new-kb/new-kb.tsx"],"sourcesContent":["@import \"../../global/temporary-mercury-overrides/_button.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 &-two-cols {\n grid-template-columns: 1fr 1fr;\n }\n}\n// location appears if advanced is true\n.location-wrapper {\n display: flex;\n gap: var(--spacing-gap-xs);\n}\n.location {\n flex-grow: 1;\n grid-area: location;\n}\n\n.basic {\n display: grid;\n grid-template:\n \"basic-top basic-top\" max-content\n \"back-end front-end\" 1fr;\n grid-template-columns: 1fr 1fr;\n}\n.basic__header {\n grid-area: basic-top;\n grid-template-columns: 1fr 1fr;\n}\n.dialog-header__back-end,\n.dialog-header__front-end {\n padding-block-start: 16px;\n}\n.main__back-end {\n border-inline-end: var(--section-common-border);\n}\n.main__back-end,\n.main__front-end {\n grid-auto-rows: max-content;\n padding-block: 12px;\n overflow: auto;\n}\n// back end\n.section__back-end {\n grid-area: back-end;\n grid-auto-rows: max-content;\n}\n// front end\n.section__front-end {\n grid-area: front-end;\n}\n.section__back-end,\n.section__front-end {\n display: grid;\n grid-template-rows: max-content 1fr;\n overflow: auto;\n}\n\n// advanced\n.tab-advanced-title {\n grid-area: tab-advanced-title;\n}\n.layout-tab-advanced-left-col {\n grid-area: layout-tab-advanced-left-col;\n}\n.layout-tab-advanced-right-col {\n grid-area: layout-tab-advanced-right-col;\n}\n\n.basic,\n.advanced {\n padding-block-start: 12px;\n overflow: auto;\n block-size: 100%;\n}\n\n.tab-advanced__field-group {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: auto;\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// 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","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 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 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 #passwordEl!: HTMLChEditElement;\n #prototypingEnvironmentEl!: HTMLChComboBoxRenderElement;\n #prototypingTargetEl!: HTMLChComboBoxRenderElement;\n #savePasswordEl!: HTMLChCheckboxElement;\n #serverNameEl!: HTMLChComboBoxRenderElement;\n #userInterfaceLanguageEl!: HTMLChComboBoxRenderElement;\n #userNameEl!: HTMLChEditElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n\n @State() advancedTabIsVisible: boolean = false;\n /**\n * Allows selecting multiple generators for the front end\n * TODO: Check if this property can be deleted, since we can call getFrontEndsCallback.\n */\n @State() frontEnds: GxOption[];\n @State() validatableControls = new Map<string, ControlValidation>();\n @State() createDataInKbDisabled = false;\n @State() userNameVisible = true;\n @State() passwordVisible = true;\n @State() savePasswordVisible = true;\n // representations of GxOption[] as ComboBoxModel, and initialValue for each one.\n @State() authenticationTypesComboBoxModel: ComboBoxModel = [];\n @State() authenticationTypesInitialValue: string;\n @State() collationsComboBoxModel: ComboBoxModel = [];\n @State() collationsInitialValue: string;\n @State() defaultDataSourcesComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsComboBoxModel: ComboBoxModel = [];\n @State() prototypingTargetsInitialValue: string;\n @State() prototypingEnvironmentsComboBoxModel: ComboBoxModel = [];\n @State() prototypingEnvironmentsInitialValue: string;\n @State() serverNamesComboBoxModel: ComboBoxModel = [];\n @State() serverNamesInitialValue: string;\n @State() userInterfaceLanguagesComboBoxModel: ComboBoxModel = [];\n @State() userInterfaceLanguagesInitialValue: string;\n\n /**\n * Defines the type of authentication for the connection to the previously defined database\n */\n @Prop() readonly authenticationTypes: GxOption[] = [];\n @Watch(\"authenticationTypes\")\n watchAuthenticationTypes(newValue: GxOption[]) {\n if (newValue?.length) {\n this.authenticationTypesComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.authenticationTypesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * Callback invoked when the user wants to cancel KB creation (‘Cancel’ button)\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * DB Collations\n */\n @Prop() readonly collations!: GxOption[];\n @Watch(\"collations\")\n watchCollations(newValue: GxOption[]) {\n if (newValue?.length) {\n this.collationsComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n this.collationsInitialValue = getSelectedItem(newValue);\n }\n }\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 * Disabled if the first item of the 'Server Name' combo is selected\n */\n @Prop() readonly createDataFilesInKBFolder: boolean = false;\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 * Name of the DB server where we want to persist the information of our KB\n */\n @Prop() readonly serverNames: GxOption[] = [];\n @Watch(\"serverNames\")\n watchServerNames(newValue: GxOption[]) {\n if (newValue?.length) {\n this.serverNamesComboBoxModel = mapOptionsToComboBoxItemModel(newValue);\n this.serverNamesInitialValue = getSelectedItem(newValue);\n }\n }\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 (first item of the combo)\n */\n @Prop() readonly userName: string;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\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.watchServerNames(this.serverNames);\n this.watchUserInterfaceLanguages(this.userInterfaceLanguages);\n }\n\n componentDidLoad() {\n this.#initializeValidatableControlsBasicTab();\n }\n\n componentDidRender() {\n if (this.advancedTabIsVisible && !this.#advancedTabHasBeenRendered) {\n // just call this once.\n this.#initialSetupAdvancedTab();\n this.#initializeValidatableControlsAdvancedTab();\n this.#advancedTabHasBeenRendered = true;\n }\n }\n\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 // Uncomment when \"TODO: define button handler and logic\" is done.\n // #geminiToolsSearchPrimary = getIconPath({\n // category: \"gemini-tools\",\n // name: \"search\",\n // colorType: \"primary\"\n // });\n // #geminiToolsResetPrimary = getIconPath({\n // category: \"gemini-tools\",\n // name: \"reset\",\n // colorType: \"primary\"\n // });\n\n #handlerAuthenticationTypeInput = (e: CustomEvent<string> | InputEvent) => {\n const authenticationTypeValue = e?.detail;\n this.#evaluateUserInputsDisplay(authenticationTypeValue as string);\n };\n\n #handlerServerNameInput = (e: CustomEvent<string> | InputEvent) => {\n this.#evaluateCreateDataCheckboxEnabled(e.detail as string);\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 return [\n <h2\n // #knowledge base storage\n class=\"dialog-header subtitle-regular-xs\t text-align-center\"\n >\n {this.#componentLocale.tabAdvanced.tabTitle}\n </h2>,\n <div class=\"field-group tab-advanced__field-group\">\n <div\n // #server name\n class=\"field field-block server-name-field\"\n >\n <label class=\"label\" htmlFor=\"serverName\">\n {this.#componentLocale.tabAdvanced.serverName.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.serverNames.length === 0}\n placeholder={\n this.serverNames.length === 0\n ? this.#componentLocale.tabAdvanced.serverName\n .disabledPlaceholder\n : \"\"\n }\n value={this.serverNamesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#serverNameEl = el as HTMLChComboBoxRenderElement)\n }\n model={this.serverNamesComboBoxModel}\n onInput={\n this.serverNames.length > 0 && this.#handlerServerNameInput\n }\n id=\"serverName\"\n part=\"server-name\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#serverNameEl)}\n </div>\n\n {/* <button\n TODO: define button handler and logic\n class=\"button-tertiary button-icon-only server-name-button\"\n aria-label=\"caption\"\n part=\"search-server-name\"\n hidden\n >\n <ch-image\n class=\"icon-xs\"\n src={this.#geminiToolsSearchPrimary}\n ></ch-image>\n </button> */}\n\n <div\n // #authentication type\n class=\"field field-block authentication-type-field\"\n >\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.authenticationTypesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#authenticationTypeEl = 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 <div\n // #database\n class=\"field field-block database-field\"\n >\n <label class=\"label\" htmlFor=\"databaseName\">\n {this.#componentLocale.tabAdvanced.databaseName.label}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"input\"\n value={this.databaseName}\n id=\"databaseName\"\n part=\"database-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#databaseNameEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#databaseNameEl)}\n </div>\n\n {this.userNameVisible ? (\n <div\n // #username\n class=\"field field-block username-field\"\n >\n <label class=\"label\" htmlFor=\"userName\">\n {this.#componentLocale.tabAdvanced.userName.label}\n </label>\n <ch-edit\n // TODO add placeholder\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 ></ch-edit>\n {this.#evaluateTooltipRender(this.#userNameEl)}\n </div>\n ) : null}\n\n <div\n // #collation\n class=\"field field-block collation-field\"\n >\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={this.serverNames.length === 0}\n placeholder={\n this.collations.length === 0\n ? this.#componentLocale.tabAdvanced.collation\n .disabledPlaceholder\n : \"\"\n }\n value={this.collationsInitialValue}\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 {/* <button\n TODO: define button handler and logic \n class=\"button-tertiary button-icon-only collation-button\"\n aria-label=\"caption\"\n part=\"reset-collation\"\n >\n <ch-image\n class=\"icon-xs\"\n src={this.#geminiToolsResetPrimary}\n ></ch-image>\n </button> */}\n\n {this.passwordVisible ? (\n <div\n // #password\n class=\"field field-block password-field\"\n >\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.tabAdvanced.password.label}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"input\"\n type=\"password\"\n value={this.password}\n id=\"password\"\n part=\"password\"\n ref={(el: HTMLChEditElement) =>\n (this.#passwordEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordEl)}\n </div>\n ) : null}\n\n <ch-checkbox\n // #create data in knowledge base folder\n class=\"checkbox create-data-in-kb-checkbox\"\n checkedValue=\"createDataFilesInKBFolder\"\n caption={this.#componentLocale.tabAdvanced.createDataFilesInKbFolder}\n disabled={this.createDataInKbDisabled}\n part=\"create-data-in-kb\"\n id=\"createDataFilesInKBFolder\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#createDataFilesInKBFolderEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n\n {this.savePasswordVisible ? (\n <ch-checkbox\n // #save password\n class=\"checkbox save-password-checkbox\"\n checkedValue=\"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 ></ch-checkbox>\n ) : null}\n </div>\n ];\n };\n\n #renderBasic = (): HTMLElement[] => {\n return [\n <section class=\"basic__header field-group dialog-header-with-border spacing-body-inline\">\n <div\n // #prototyping target\n class=\"field field-block prototyping-target\"\n >\n <label class=\"label\" htmlFor=\"prototypingTarget\">\n {this.#componentLocale.tabBasic.prototypingTarget.label}\n </label>\n\n <ch-combo-box-render\n id=\"prototypingTarget\"\n class=\"combo-box\"\n part=\"prototyping-target\"\n disabled={this.prototypingTargets.length === 0}\n placeholder={\n this.prototypingTargets.length === 0\n ? this.#componentLocale.tabBasic.prototypingTarget\n .disabledPlaceholder\n : \"\"\n }\n value={this.prototypingTargetsInitialValue}\n model={this.prototypingTargetsComboBoxModel}\n onInput={\n this.prototypingTargets.length > 0\n ? this.#prototypingTargetValueChangedHandler\n : undefined\n }\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingTargetEl = el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#prototypingTargetEl)}\n </div>\n\n <div\n // #user interface\n class=\"field field-block user-interface-language\"\n >\n <label class=\"label\" htmlFor=\"userInterfaceLanguage\">\n {this.#componentLocale.tabBasic.userInterfaceLanguage.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.userInterfaceLanguages.length === 0}\n placeholder={\n this.userInterfaceLanguages.length === 0\n ? this.#componentLocale.tabBasic.userInterfaceLanguage\n .disabledPlaceholder\n : \"\"\n }\n value={this.userInterfaceLanguagesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#userInterfaceLanguageEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.userInterfaceLanguagesComboBoxModel}\n id=\"userInterfaceLanguage\"\n part=\"user-interface-language\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#userInterfaceLanguageEl)}\n </div>\n </section>,\n\n <section\n class=\"section__back-end\"\n // backend\n >\n <h2\n // back end\n class=\"dialog-header dialog-header-with-border dialog-header__back-end subtitle-regular-xs\t text-align-center spacing-body-inline\"\n >\n {this.#componentLocale.tabBasic.backEnd.backEndLabel}\n </h2>\n <div class=\"field-group main__back-end spacing-body-inline scrollable\">\n <div\n // #prototyping environment\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"prototypingEnvironment\">\n {\n this.#componentLocale.tabBasic.backEnd.prototypingEnvironment\n .label\n }\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.defaultPrototypingEnvironments.length === 0}\n placeholder={\n this.defaultPrototypingEnvironments.length === 0\n ? this.#componentLocale.tabBasic.backEnd\n .prototypingEnvironment.disabledPlaceholder\n : \"\"\n }\n value={this.#selectedPrototypingEnvironmentId}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingEnvironmentEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.prototypingEnvironmentsComboBoxModel}\n onInput={this.#prototypingEnvironmentValueChangedHandler}\n part=\"prototyping-environment\"\n id=\"prototypingEnvironment\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#prototypingEnvironmentEl)}\n </div>\n\n <div\n // #data source\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"dataSource\">\n {this.#componentLocale.tabBasic.backEnd.dataSource.label}\n </label>\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={this.defaultDataSources.length === 0}\n placeholder={\n this.defaultDataSources.length === 0\n ? this.#componentLocale.tabBasic.backEnd.dataSource\n .disabledPlaceholder\n : \"\"\n }\n value={this.#selectedDataSourceId}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#dataSourceEl = el as HTMLChComboBoxRenderElement)\n }\n onInput={this.#dataSourceValueChangedHandler}\n model={this.defaultDataSourcesComboBoxModel}\n part=\"data-source\"\n id=\"dataSource\"\n ></ch-combo-box-render>\n {this.#evaluateTooltipRender(this.#dataSourceEl)}\n </div>\n </div>\n </section>,\n\n <section\n class=\"section__front-end\"\n // front end\n >\n <h2 class=\"dialog-header dialog-header-with-border dialog-header__front-end subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.tabBasic.frontEnd.frontEndLabel}\n </h2>\n <div class=\"field-group main__front-end spacing-body-inline scrollable\">\n {renderChCheckboxItems(\n this.frontEnds,\n this.#frontEndCheckboxInputHandler,\n this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n )\n )}\n </div>\n </section>\n ];\n };\n\n // - - - - - - - - - -\n\n #cancelKbHandler = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #createKbHandler = (): void => {\n const selectedFrontEndIds =\n this.#frontEndsCheckedMap.get(this.#selectedPrototypingEnvironmentId) ??\n [];\n\n this.createCallback({\n authenticationType: this.#authenticationTypeEl?.value,\n collation: this.#collationEl?.value,\n createDataFilesInKBFolder: !!this.#createDataFilesInKBFolderEl?.value,\n dataSource: this.#dataSourceEl?.value,\n databaseName: this.#databaseNameEl?.value,\n frontEnds: selectedFrontEndIds,\n kbLocation: this.#locationEl?.value,\n kbName: this.#kbNameEl?.value,\n password: this.#passwordEl?.value,\n prototypingEnvironment: this.#prototypingEnvironmentEl?.value,\n prototypingTarget: this.#prototypingTargetEl?.value,\n savePassword: !!this.#savePasswordEl?.value,\n serverName: this.#serverNameEl?.value,\n userInterfaceLanguage: this.#userInterfaceLanguageEl?.value,\n userName: this.#userNameEl?.value\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n /**\n * Disable \"Create Data in Knowledge Base Folder\" if the first Server Name\n * option is selected.\n * */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #evaluateCreateDataCheckboxEnabled = (serverNameValue: string) => {\n if (this.serverNames[0]?.id === serverNameValue) {\n this.createDataInKbDisabled = true;\n } else {\n this.createDataInKbDisabled = false;\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 /**\n * If \"Authentication Type\" is \"Windows Authentication\", hide User Name,\n * Password, and Save Password fields.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #evaluateUserInputsDisplay = (authenticationTypeValue: string) => {\n if (authenticationTypeValue === WINDOWS_AUTHENTICATION_VALUE) {\n this.userNameVisible = false;\n this.passwordVisible = false;\n this.savePasswordVisible = false;\n } else {\n this.userNameVisible = true;\n this.passwordVisible = true;\n this.savePasswordVisible = true;\n }\n };\n\n #frontEndCheckboxInputHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n const checkedValue = (event.target as HTMLChCheckboxElement).checkedValue;\n const checked = event.detail === checkedValue;\n this.#updateFrontEndsCheckedMap(checkedValue, checked);\n };\n\n /**\n * This function updates frontEndsCheckedMap, that contains the checked\n * checkboxes for each language front ends.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #updateFrontEndsCheckedMap = (checkboxId: string, checked: boolean) => {\n let currentState = this.#frontEndsCheckedMap.get(\n this.#selectedPrototypingEnvironmentId\n );\n if (!currentState) {\n // first time\n currentState = [];\n this.#frontEndsCheckedMap.set(\n this.#selectedPrototypingEnvironmentId,\n currentState\n );\n }\n if (checked) {\n // update by adding\n currentState.push(checkboxId);\n } else {\n // update by removing\n const checkboxIndex = currentState.findIndex(id => id === checkboxId);\n removeIndex(currentState, checkboxIndex);\n }\n };\n\n #getPrototypingEnvironments = async (): Promise<void> => {\n if (this.getPrototypingEnvironmentsCallback) {\n const selectedPrototypingTargetId = this.#prototypingTargetEl\n ? this.#prototypingTargetEl.value\n : this.prototypingTargetsInitialValue;\n const envs = await this.getPrototypingEnvironmentsCallback(\n selectedPrototypingTargetId\n );\n if (envs) {\n this.defaultPrototypingEnvironments = envs;\n }\n }\n };\n\n #getDataSources = (): void => {\n if (this.getDataSourcesCallback) {\n const selectedPrototypingEnvironmentId =\n this.#prototypingEnvironmentEl.value;\n const selectedPrototypingTargetId = this.#prototypingTargetEl.value;\n const updatedDefaultDataSourcesPromise: Promise<GxOption[]> =\n this.getDataSourcesCallback(\n selectedPrototypingEnvironmentId,\n selectedPrototypingTargetId\n );\n updatedDefaultDataSourcesPromise\n .then(result => {\n if (result.length > 0) {\n result = setSelectedItem(result, this.#selectedDataSourceId);\n this.#selectedDataSourceId = getSelectedItem(result);\n this.defaultDataSources = result;\n // set first option as selected\n this.#dataSourceEl.value =\n this.#selectedDataSourceId !== undefined\n ? this.#selectedDataSourceId\n : this.defaultDataSources[0].id;\n }\n })\n .catch(() => {\n // to do\n });\n }\n };\n\n #initialSetupAdvancedTab = () => {\n const selectedServerNameValue = this.#serverNameEl.value;\n this.#evaluateCreateDataCheckboxEnabled(selectedServerNameValue);\n\n const selectedAuthenticationType = this.#authenticationTypeEl.value;\n this.#evaluateUserInputsDisplay(selectedAuthenticationType);\n\n // map all \"Advanced Tab\" GxOption[]'s to ComboBoxModel's\n this.watchAuthenticationTypes(this.authenticationTypes);\n this.watchCollations(this.collations);\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.#locationEl,\n this.#authenticationTypeEl,\n this.#createDataFilesInKBFolderEl,\n this.#serverNameEl,\n this.#authenticationTypeEl,\n this.#databaseNameEl,\n this.#userNameEl,\n this.#collationEl,\n this.#passwordEl,\n this.#savePasswordEl\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n /**\n * @description It allows defining the DBMS that will be used in the solution\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #selectLocationHandler = (): void => {\n this.selectLocationCallback().then(kbLocation => {\n if (kbLocation) {\n this.kbLocation = kbLocation;\n } else {\n // to be defined\n }\n });\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n if (event.detail.newSelectedId === ADVANCED_TAB_SELECTOR) {\n this.advancedTabIsVisible = true;\n // Some logic for advanced tab is done on componentDidRender lifecycle,\n // since the reference to the elements is needed.\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 };\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-two-cols\": this.isAdvanced,\n \"header-one-col\": !this.isAdvanced,\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 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.isAdvanced && (\n <div class=\"location-wrapper\">\n <div\n // #location\n class=\"field field-inline location\"\n >\n <label class=\"label location-label\" htmlFor=\"kbLocation\">\n {this.#componentLocale.header.kbLocation}\n </label>\n <ch-edit\n // TODO add placeholder\n class=\"input location-input\"\n value={this.kbLocation}\n ref={(el: HTMLChEditElement) =>\n (this.#locationEl = el as HTMLChEditElement)\n }\n id=\"kbLocation\"\n part=\"kb-location\"\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#locationEl)}\n </div>\n <button\n class=\"button-tertiary button-icon-only location-icon\"\n aria-label={this.#componentLocale.header.selectLocationButton}\n title={this.#componentLocale.header.selectLocationButton}\n part=\"button-select-location\"\n onClick={this.#selectLocationHandler}\n >\n <ch-image class=\"icon-m\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\n )}\n </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={\n !this.advancedTabIsVisible && this.#tabSelectionChangedHandler\n }\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 spacing-body-inline\"\n part=\"tab-button-advanced\"\n >\n {this.#renderAdvanced()}\n </div>\n )}\n </ch-tab-render>\n ) : (\n <div class={MAIN_SECTION_CLASSES}>\n <div class={BASIC_SECTION_PARENT_CLASSES}>\n {this.#renderBasic()}\n </div>\n </div>\n )}\n\n <footer\n class={{\n \"dialog-footer\": this.isAdvanced,\n \"dialog-footer-with-border\": !this.isAdvanced,\n \"spacing-body-block-end\": true,\n \"spacing-body-inline\": true\n }}\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 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}\n\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"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapKbsModelToActionListModel","kbsData","listBoxItems","forEach","kb","push","id","type","caption","name","createKbFromServerCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","colorType","GxIdeCreateKbFromServer","_GxIdeCreateKbFromServer_chSearchIcon","set","this","_GxIdeCreateKbFromServer_showMoreIcon","_GxIdeCreateKbFromServer_versionsSelect","value","_GxIdeCreateKbFromServer__componentLocale","_GxIdeCreateKbFromServer_kbsActionListModel","_GxIdeCreateKbFromServer_kbVersions","_GxIdeCreateKbFromServer_chShortcutsEl","_GxIdeCreateKbFromServer_shortcutsSrc","getAssetPath","_GxIdeCreateKbFromServer_selectedKbId","_GxIdeCreateKbFromServer_kbNameAlreadyEditedByUser","_GxIdeCreateKbFromServer_versionSelectedTypeEl","_GxIdeCreateKbFromServer_localKBNameEl","_GxIdeCreateKbFromServer_cancelHandler","cancelCallback","_GxIdeCreateKbFromServer_changeConnectionHandler","async","changeConnectionCallback","authenticationType","connectionData","serverUrl","userName","userPassword","_GxIdeCreateKbFromServer_createHandler","versionSelectedType","__classPrivateFieldSet","createKBCallback","selectedKB","__classPrivateFieldGet","versionSelected","localKBName","localKbNameInputValue","versionList","then","formSubmitResult","validatableControls","validateControls","_GxIdeCreateKbFromServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeCreateKbFromServer_filterValueChangedHandler","event","filterValue","detail","toLowerCase","kbsFilteredActionListModel","filter","item","includes","_GxIdeCreateKbFromServer_init","getGXserverKBsCallback","result","_GxIdeCreateKbFromServer_initializeValidatableControls","validatableControl","reference","undefined","_GxIdeCreateKbFromServer_inputLocalKbNameHandler","_GxIdeCreateKbFromServer_selectedVersionHandler","selectKBVersionsCallback","length","map","kbVersion","versionsValueInput","versionsPlaceholder","toString","versionSelectedFieldValue","oneVersionSelectedFieldValue","_GxIdeCreateKbFromServer_selectKbChangeHandler","enableSelectVersionsButton","_GxIdeCreateKbFromServer_versionsChangedHandler","_GxIdeCreateKbFromServer_sortItems","model","sort","a","b","toLocaleLowerCase","localeCompare","_GxIdeCreateKbFromServer_renderFooter","onClick","part","footer","cancel","disabled","createKb","Map","componentDidLoad","call","loading","componentWillLoad","Locale","getComponentStrings","el","suspendShortcuts","suspend","render","Host","src","ref","header","user","change","loaderTitle","loader","title","description","show","Fragment","startImgSrc","onInput","placeholder","searchKbsPlaceholder","stateIconSrc","stateTitle","emptyKBsText","isAnimated","selection","onSelectedItemsChange","sortItemsCallback","onChange","htmlFor","versionsLabel","readonly","versionsPlaceholderDisabled","localKbNameLabel","localKbNamePlaceholder"],"sources":["src/components/team-dev/create-kb-from-server/helpers.ts","src/components/team-dev/create-kb-from-server/create-kb-from-server.scss?tag=gx-ide-create-kb-from-server&encapsulation=shadow","src/components/team-dev/create-kb-from-server/create-kb-from-server.tsx"],"sourcesContent":["import { ActionListItemModel } from \"@genexus/chameleon-controls-library\";\nimport { KBData } from \"./create-kb-from-server\";\n\nexport const mapKbsModelToActionListModel = (\n kbsData: KBData[]\n): ActionListItemModel[] => {\n const listBoxItems: ActionListItemModel[] = [];\n kbsData.forEach(kb => {\n listBoxItems.push({\n id: kb.id,\n type: \"actionable\",\n caption: kb.name\n });\n });\n return listBoxItems;\n};\n","@import \"../../../global/temporary-mercury-overrides/_button.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - -\n// Header\n// - - - - - - - - - - -\n\nheader {\n display: grid;\n grid-template-rows: max-content;\n grid-template-columns: 1fr 1fr max-content;\n}\n\n.button-change {\n align-self: center;\n justify-self: end;\n}\n\n// - - - - - - - - - - -\n// Main\n// - - - - - - - - - - -\n\n.main {\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: max-content 1fr max-content max-content;\n position: relative;\n}\n\n.search-kbs {\n inline-size: 50%;\n}\n\n.versions-container {\n grid-auto-rows: max-content;\n\n &__input {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--spacing-gap-m);\n }\n}\n","// Stencil\nimport {\n Component,\n Element,\n Fragment,\n getAssetPath,\n h,\n Host,\n Method,\n Prop,\n State\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ActionListItemActionable,\n ActionListItemModel,\n ActionListItemModelExtended,\n ChActionListRenderCustomEvent,\n ChEditCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport { GXServerConnectionData } from \"../connect-gx-server/connect-gx-server\";\nimport { KBVersion } from \"../version-control/common/types\";\nimport { mapKbsModelToActionListModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/list-box\",\n \"components/tooltip\",\n \"chameleon/scrollbar\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-create-kb-from-server\",\n styleUrl: \"create-kb-from-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/create-kb-from-server\"]\n})\nexport class GxIdeCreateKbFromServer {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"interactive\"\n });\n\n #showMoreIcon = getIconPath({\n category: \"system\",\n name: \"more-horizontal\",\n colorType: \"interactive\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"Trunk\", caption: \"Trunk Version\" },\n { value: \"All\", caption: \"All Versions\" },\n { value: \"Select\", caption: \"Select Version\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n #kbsActionListModel: ActionListItemModel[] = [];\n #kbVersions: KBVersion[] = [];\n #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/create-kb-from-server/shortcuts.json`\n );\n #selectedKbId: string;\n #kbNameAlreadyEditedByUser: boolean = false;\n\n #versionSelectedTypeEl: HTMLChRadioGroupRenderElement;\n\n @Element() el: HTMLGxIdeCreateKbFromServerElement;\n\n #localKBNameEl!: HTMLChEditElement;\n\n /**\n * State to enable/disable the select versions button\n */\n @State() enableSelectVersionsButton: boolean = false;\n\n /**\n * The current kbn name value.\n */\n @State() localKbNameInputValue: string = \"\";\n\n /**\n * State to store the loading state of the component\n */\n @State() loading = true;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * KBs filtered\n */\n @State() kbsFilteredActionListModel: ActionListItemModel[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The version selected type\n */\n @State() versionSelectedType: VersionOption;\n\n /**\n * String value to show the number of versions selected (\"N versions selected\")\n */\n @State() versionsValueInput: string = \"\";\n\n /**\n * Set of data required when executing any of the callbacks that require a connection to the server.\n */\n @Prop() readonly connectionData: GXServerConnectionData;\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal\n */\n @Prop() readonly changeConnectionCallback: (\n data: GXServerConnectionData\n ) => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Create KB' button is pressed. Receives the user's parameter selection to create the remote KB locally and ends the dialog.\n */\n @Prop() readonly createKBCallback!: (\n kbInfo: KnowledgeBaseInfo\n ) => Promise<FormSubmitResult>;\n\n /**\n * Callback that must be invoked when invoking the dialog\n */\n @Prop() readonly getGXserverKBsCallback!: (\n data: GXServerConnectionData\n ) => Promise<KBData[]>;\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.\n */\n @Prop() readonly selectKBVersionsCallback: (\n selectedKB: string\n ) => Promise<KBVersion[]>;\n\n async componentDidLoad() {\n await this.#init();\n this.loading = false;\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #changeConnectionHandler = async (): Promise<void> => {\n this.changeConnectionCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n });\n };\n\n #createHandler = async (): Promise<void> => {\n if (this.versionSelectedType !== \"Select\") {\n this.#kbVersions = [];\n }\n this.createKBCallback({\n selectedKB: this.#selectedKbId,\n versionSelected: this.versionSelectedType,\n localKBName: this.localKbNameInputValue,\n versionList: this.#kbVersions\n }).then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n });\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.kbsFilteredActionListModel = this.#kbsActionListModel.filter(\n (item: ActionListItemActionable) =>\n item.caption.toLowerCase().includes(this.filterValue)\n );\n };\n\n #init = async () => {\n await this.getGXserverKBsCallback({\n authenticationType: this.connectionData.authenticationType,\n serverUrl: this.connectionData.serverUrl,\n userName: this.connectionData.userName,\n userPassword: this.connectionData.userPassword\n }).then(result => {\n this.#kbsActionListModel = mapKbsModelToActionListModel(result);\n this.kbsFilteredActionListModel = this.#kbsActionListModel;\n this.filterValue = \"\";\n });\n };\n\n #initializeValidatableControls = () => {\n // populate validatableControls with the controls that could have errors.\n const validatableControls: HTMLElement[] = [this.#localKBNameEl];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #inputLocalKbNameHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.localKbNameInputValue = event.detail as string;\n this.#kbNameAlreadyEditedByUser = true;\n };\n\n #selectedVersionHandler = async () => {\n if (this.selectKBVersionsCallback) {\n await this.selectKBVersionsCallback(this.#selectedKbId).then(result => {\n if (result?.length) {\n this.#kbVersions = result.map(kbVersion => ({\n id: kbVersion.id,\n name: kbVersion.name\n }));\n\n if (result.length === 1 && this.#kbVersions[0].id === 0) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput =\n this.#_componentLocale.kb.versionsPlaceholder;\n } else if (result.length > 1) {\n this.localKbNameInputValue = this.#selectedKbId;\n this.versionsValueInput = `${result.length.toString()} ${\n this.#_componentLocale.kb.versionSelectedFieldValue\n }`;\n } else {\n this.localKbNameInputValue = `${this.#selectedKbId}_${\n this.#kbVersions[0].name\n }`;\n this.versionsValueInput = `${result[0].name} ${\n this.#_componentLocale.kb.oneVersionSelectedFieldValue\n }`;\n }\n }\n });\n }\n };\n\n #selectKbChangeHandler = (\n event: ChActionListRenderCustomEvent<ActionListItemModelExtended[]>\n ): void => {\n const item = event.detail[0]?.item as ActionListItemActionable;\n if (item === undefined) {\n this.enableSelectVersionsButton = false;\n this.#selectedKbId = undefined;\n return;\n }\n this.enableSelectVersionsButton = true;\n this.#selectedKbId = item.id;\n if (this.#kbNameAlreadyEditedByUser) {\n return;\n }\n this.localKbNameInputValue = item.caption;\n if (this.versionSelectedType === \"Select\") {\n this.versionsValueInput = \"\";\n this.#kbVersions = [];\n }\n };\n\n #versionsChangedHandler = (event: CustomEvent<string>) => {\n this.versionSelectedType = event.detail as VersionOption;\n };\n\n #sortItems = (model: ActionListItemActionable[]): void => {\n model.sort((a, b) =>\n a.caption\n ?.toLocaleLowerCase()\n .localeCompare(b.caption?.toLocaleLowerCase())\n );\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"footer dialog-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"button button-cancel\"\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // create kb button\n class=\"button-primary\"\n onClick={this.enableSelectVersionsButton && this.#createHandler}\n disabled={!this.enableSelectVersionsButton}\n part=\"button button-create-kb\"\n >\n {this.#_componentLocale.footer.createKb}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"section\">\n <header class=\"header dialog-header-with-border space-body spacing-body-inline spacing-body-block-start\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.serverUrl}\n </label>\n <p>{this.connectionData.serverUrl}</p>\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\">{this.#_componentLocale.header.user}</label>\n <p>{this.connectionData.userName}</p>\n </div>\n\n <button\n id=\"change-connection-button\"\n class=\"button-tertiary button-change\"\n onClick={this.#changeConnectionHandler}\n >\n {this.#_componentLocale.header.change}\n </button>\n </header>\n <section class=\"main field-group spacing-body\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <Fragment>\n <ch-edit\n class=\"input search-kbs\"\n id=\"local-kb-name\"\n startImgSrc={this.#chSearchIcon}\n type=\"search\"\n onInput={this.#filterValueChangedHandler}\n placeholder={this.#_componentLocale.kb.searchKbsPlaceholder}\n ></ch-edit>\n {this.#kbsActionListModel.length === 0 ||\n this.kbsFilteredActionListModel.length === 0 ? (\n <div class=\"list-box\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyKBsText}\n isAnimated={true}\n ></gx-ide-empty-state>\n </div>\n ) : (\n <ch-action-list-render\n selection=\"single\"\n class=\"list-box\"\n onSelectedItemsChange={this.#selectKbChangeHandler}\n model={this.kbsFilteredActionListModel}\n sortItemsCallback={this.#sortItems}\n ></ch-action-list-render>\n )}\n <div class=\"versions-container field-group\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#versionsChangedHandler}\n value={this.#versionsSelect[0].value}\n ref={(el: HTMLChRadioGroupRenderElement) => {\n this.#versionSelectedTypeEl =\n el as HTMLChRadioGroupRenderElement;\n if (this.#versionSelectedTypeEl) {\n this.versionSelectedType = this.#versionSelectedTypeEl\n .value as VersionOption;\n }\n }}\n ></ch-radio-group-render>\n\n {this.versionSelectedType === \"Select\" && (\n <div class=\"versions-container__item field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"control-id-1\">\n {this.#_componentLocale.kb.versionsLabel}\n </label>\n <div class=\"versions-container__input\">\n <ch-edit\n class=\"input\"\n readonly\n placeholder={\n this.enableSelectVersionsButton\n ? this.#_componentLocale.kb.versionsPlaceholder\n : this.#_componentLocale.kb\n .versionsPlaceholderDisabled\n }\n value={this.versionsValueInput}\n ></ch-edit>\n <button\n id=\"select-version-button\"\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectedVersionHandler}\n disabled={!this.enableSelectVersionsButton}\n >\n <ch-image\n src={this.#showMoreIcon}\n class=\"icon-m\"\n disabled={!this.enableSelectVersionsButton}\n ></ch-image>\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"localKbName\">\n {this.#_componentLocale.kb.localKbNameLabel}\n </label>\n <ch-edit\n // local kb name\n class=\"input\"\n id=\"local-kb-name\"\n value={this.localKbNameInputValue}\n onInput={this.#inputLocalKbNameHandler}\n placeholder={\n this.#_componentLocale.kb.localKbNamePlaceholder\n }\n ref={(el: HTMLChEditElement) => {\n this.#localKBNameEl = el as HTMLChEditElement;\n if (this.#localKBNameEl) {\n this.#initializeValidatableControls();\n }\n }}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#localKBNameEl)}\n </div>\n </Fragment>\n )}\n </section>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type KBData = {\n id: string;\n name: string;\n};\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n kbs: KBData[];\n};\n\nexport type KnowledgeBaseInfo = {\n selectedKB: string;\n versionSelected: VersionOption;\n localKBName: string;\n versionList: KBVersion[];\n};\n\nexport type VersionOption = \"Trunk\" | \"All\" | \"Select\";\n"],"mappings":"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"}
|