@genexus/genexus-ide-ui 1.0.12 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/form-validation-df39cabb.js +56 -0
- package/dist/cjs/form-validation-df39cabb.js.map +1 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +11 -11
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +274 -147
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +41 -87
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-recent-news.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
- package/dist/cjs/{helpers-be14ea67.js → helpers-74cf5c16.js} +9 -35
- package/dist/cjs/helpers-74cf5c16.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/common/helpers.js +6 -18
- package/dist/collection/common/helpers.js.map +1 -1
- package/dist/collection/components/connect-gx-server/connect-gx-server.js +1 -1
- package/dist/collection/components/connect-gx-server/connect-gx-server.js.map +1 -1
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.js +1 -1
- package/dist/collection/components/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/kb-manager-export/kb-manager-export.js +11 -11
- package/dist/collection/components/kb-manager-export/kb-manager-export.js.map +1 -1
- package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.en.json +4 -1
- package/dist/collection/components/new-environment/gx-ide-assets/new-environment/langs/new-environment.lang.ja.json +5 -2
- package/dist/collection/components/new-environment/helpers.js +11 -0
- package/dist/collection/components/new-environment/helpers.js.map +1 -0
- package/dist/collection/components/new-environment/new-environment.css +37 -658
- package/dist/collection/components/new-environment/new-environment.js +316 -214
- package/dist/collection/components/new-environment/new-environment.js.map +1 -1
- package/dist/collection/components/new-kb/helpers.js +0 -5
- package/dist/collection/components/new-kb/helpers.js.map +1 -1
- package/dist/collection/components/new-kb/new-kb.css +34 -11
- package/dist/collection/components/new-kb/new-kb.js +33 -40
- package/dist/collection/components/new-kb/new-kb.js.map +1 -1
- package/dist/collection/components/share-kb/share-kb.js +1 -1
- package/dist/collection/components/share-kb/share-kb.js.map +1 -1
- package/dist/components/form-validation.js +53 -0
- package/dist/components/form-validation.js.map +1 -0
- package/dist/components/gx-ide-connect-gx-server.js +1 -1
- package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-dashboard-home.js +1 -1
- package/dist/components/gx-ide-kb-manager-export.js +11 -11
- package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
- package/dist/components/gx-ide-new-environment.js +289 -164
- package/dist/components/gx-ide-new-environment.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +35 -81
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/components/gx-ide-object-selector.js +1 -1
- package/dist/components/gx-ide-share-kb.js +1 -1
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +1 -1
- package/dist/components/gx-ide-team-dev-update.js +1 -1
- package/dist/components/gx-ide-ww-images.js +1 -1
- package/dist/components/helpers.js +7 -33
- package/dist/components/helpers.js.map +1 -1
- package/dist/esm/form-validation-8b3f527c.js +53 -0
- package/dist/esm/form-validation-8b3f527c.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-dashboard-home.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +11 -11
- package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +276 -149
- package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +35 -81
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-recent-news.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +1 -1
- package/dist/esm/{helpers-05c62775.js → helpers-97d0509d.js} +8 -34
- package/dist/esm/helpers-97d0509d.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.css +2 -0
- 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/new-environment/langs/new-environment.lang.en.json +4 -1
- package/dist/genexus-ide-ui/gx-ide-assets/new-environment/langs/new-environment.lang.ja.json +5 -2
- package/dist/genexus-ide-ui/{p-176e8d55.entry.js → p-3663c45f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ca842e11.entry.js → p-3c7371a8.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-41ea711a.js +56 -0
- package/dist/genexus-ide-ui/p-41ea711a.js.map +1 -0
- package/dist/genexus-ide-ui/{p-55304f04.entry.js → p-4a8910cd.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-4b6e1cf2.js +158 -0
- package/dist/genexus-ide-ui/p-4b6e1cf2.js.map +1 -0
- package/dist/genexus-ide-ui/{p-5c5abefc.entry.js → p-4bf55012.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-4bf55012.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-51d5cc3d.entry.js +436 -0
- package/dist/genexus-ide-ui/p-51d5cc3d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-03a88768.entry.js → p-58409610.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-0fced96c.entry.js → p-7f08a5f8.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-7f08a5f8.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-6d0037f1.entry.js → p-7f4d8db5.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-6fa9ea04.entry.js → p-7f7d93b8.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-a2dad270.entry.js → p-89a7d88f.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-89a7d88f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-e629ab16.entry.js → p-8ad301c4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-aa38604e.entry.js → p-8b9cf93c.entry.js} +62 -62
- package/dist/genexus-ide-ui/p-8b9cf93c.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-a787b331.entry.js → p-90deeaa8.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ab29274c.entry.js → p-92681e48.entry.js} +249 -295
- package/dist/genexus-ide-ui/p-92681e48.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-de18e865.entry.js → p-f9a00f85.entry.js} +2 -2
- package/dist/types/common/helpers.d.ts +4 -3
- package/dist/types/components/new-environment/helpers.d.ts +4 -0
- package/dist/types/components/new-environment/new-environment.d.ts +33 -65
- package/dist/types/components/new-kb/helpers.d.ts +0 -2
- package/dist/types/components/new-kb/new-kb.d.ts +1 -2
- package/dist/types/components.d.ts +18 -45
- package/package.json +3 -3
- package/dist/cjs/helpers-be14ea67.js.map +0 -1
- package/dist/esm/helpers-05c62775.js.map +0 -1
- package/dist/genexus-ide-ui/p-0fced96c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-14e6ef41.js +0 -171
- package/dist/genexus-ide-ui/p-14e6ef41.js.map +0 -1
- package/dist/genexus-ide-ui/p-5c5abefc.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a2dad270.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-aa38604e.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-ab29274c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-e146e456.entry.js +0 -342
- package/dist/genexus-ide-ui/p-e146e456.entry.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-176e8d55.entry.js.map → p-3663c45f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ca842e11.entry.js.map → p-3c7371a8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-55304f04.entry.js.map → p-4a8910cd.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-03a88768.entry.js.map → p-58409610.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-6d0037f1.entry.js.map → p-7f4d8db5.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-6fa9ea04.entry.js.map → p-7f7d93b8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e629ab16.entry.js.map → p-8ad301c4.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-a787b331.entry.js.map → p-90deeaa8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-de18e865.entry.js.map → p-f9a00f85.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["formElementsErrorClassesDictionary","toggleErrorClass","hasError","element","elementTagName","tagName","toLowerCase","errorClass","classList","add","remove","validateControls","formSubmitResult","validatableControls","validatableControlsUpdated","Map","fieldErrors","forEach","fieldResult","fieldKey","key","fieldHasError","controlMapRecord","get","reference","set","Object","assign","message","renderChCheckboxItems","options","group","callback","length","map","option","h","name","class","part","id","checkedValue","value","caption","label","disabled","onInput","startImgSrc","iconName","mapOptionsToComboBoxItemModel","newKbCss","CSS_BUNDLES","WINDOWS_AUTHENTICATION_VALUE","MAIN_SECTION_CLASSES","BASIC_SECTION_PARENT_CLASSES","SYSTEM_ICON","getIconPath","category","colorType","BASIC_TAB_SELECTOR","ADVANCED_TAB_SELECTOR","GxIdeNewKb","_GxIdeNewKb_advancedTabHasBeenRendered","this","_GxIdeNewKb_componentLocale","_GxIdeNewKb_selectedFrontEndsIds","_GxIdeNewKb_shortcutsSrc","getAssetPath","_GxIdeNewKb_kbSectionsModel","_GxIdeNewKb_authenticationTypeEl","_GxIdeNewKb_collationEl","_GxIdeNewKb_createDataFilesInKBFolderEl","_GxIdeNewKb_databaseNameEl","_GxIdeNewKb_dataSourceEl","_GxIdeNewKb_frontEndsEl","_GxIdeNewKb_kbNameEl","_GxIdeNewKb_locationEl","_GxIdeNewKb_passwordEl","_GxIdeNewKb_prototypingEnvironmentEl","_GxIdeNewKb_prototypingTargetEl","_GxIdeNewKb_savePasswordEl","_GxIdeNewKb_serverNameEl","_GxIdeNewKb_userInterfaceLanguageEl","_GxIdeNewKb_userNameEl","_GxIdeNewKb_chShortcutsEl","_GxIdeNewKb_handleCheckboxStatusChange","__classPrivateFieldGet","_GxIdeNewKb_updateSelectedFrontEndsIds","call","_GxIdeNewKb_handlerAuthenticationTypeInput","e","authenticationTypeValue","detail","_GxIdeNewKb_evaluateUserInputsDisplay","_GxIdeNewKb_handlerServerNameInput","_GxIdeNewKb_evaluateCreateDataCheckboxEnabled","_GxIdeNewKb_prototypingEnvironmentValueChangedHandler","_GxIdeNewKb_getDataSources","_GxIdeNewKb_updateFrontEnds","_GxIdeNewKb_prototypingTargetValueChangedHandler","_GxIdeNewKb_renderAdvanced","tabAdvanced","tabTitle","htmlFor","serverName","serverNames","placeholder","disabledPlaceholder","serverNamesInitialValue","ref","el","__classPrivateFieldSet","model","serverNamesComboBoxModel","undefined","_GxIdeNewKb_evaluateTooltipRender","authenticationType","authenticationTypes","authenticationTypesInitialValue","authenticationTypesComboBoxModel","databaseName","userNameVisible","userName","collation","collations","collationsInitialValue","collationsComboBoxModel","passwordVisible","password","type","createDataFilesInKbFolder","createDataInKbDisabled","savePasswordVisible","savePassword","_GxIdeNewKb_renderBasic","tabBasic","prototypingTarget","prototypingTargets","prototypingTargetsInitialValue","prototypingTargetsComboBoxModel","userInterfaceLanguage","userInterfaceLanguages","userInterfaceLanguagesInitialValue","userInterfaceLanguagesComboBoxModel","backEnd","backEndLabel","prototypingEnvironment","prototypingEnvironments","prototypingEnvironmentsInitialValue","prototypingEnvironmentsComboBoxModel","dataSource","defaultDataSources","defaultDataSourcesInitialValue","defaultDataSourcesComboBoxModel","frontEnd","frontEndLabel","frontEnds","_GxIdeNewKb_cancelKbHandler","cancelCallback","_GxIdeNewKb_createKbHandler","createCallback","createCallbackPromise","_a","_b","createDataFilesInKBFolder","_c","_d","_e","kbLocation","_f","kbName","_g","_h","_j","_k","_l","_m","_o","_p","then","serverNameValue","controlReference","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","getDataSourcesCallback","selectedPrototypingEnvironmentId","selectedPrototypingTargetId","updatedDefaultDataSourcesPromise","result","catch","_GxIdeNewKb_initialSetup","watchDefaultDataSources","watchPrototypingEnvironments","watchPrototypingTargets","watchServerNames","watchUserInterfaceLanguages","_GxIdeNewKb_initialSetupAdvancedTab","selectedServerNameValue","selectedAuthenticationType","watchAuthenticationTypes","watchCollations","_GxIdeNewKb_initializeValidatableControlsBasicTab","validatableControl","_GxIdeNewKb_initializeValidatableControlsAdvancedTab","_GxIdeNewKb_selectLocationHandler","selectLocationCallback","_GxIdeNewKb_tabSelectionChangedHandler","event","newSelectedId","advancedTabIsVisible","getFrontEndsCallback","updatedFrontEndsPromise","newFrontEndsOptions","updatedFrontEnds","newFrontEnd","foundActualFrontEnd","find","actualFrontEnd","checked","push","_GxIdeNewKb_instances","_GxIdeNewKb_getCheckboxValues","newValue","getSelectedItem","componentWillLoad","Locale","getComponentStrings","previousFrontEndsState","tabLabel","componentDidLoad","componentDidRender","suspendShortcuts","suspend","render","Host","src","isAdvanced","header","autoFocus","selectLocationButton","title","onClick","scrollable","tab","direction","selectedId","overflow","contain","onSelectedItemChange","slot","footer","btnCancel","btnCreate","checkboxes","querySelectorAll","values","Array","from","checkbox","filter","Boolean"],"sources":["src/common/form-validation.ts","src/components/new-kb/helpers.tsx","src/components/new-kb/new-kb.scss?tag=gx-ide-new-kb&encapsulation=shadow","src/components/new-kb/new-kb.tsx"],"sourcesContent":["import { FormSubmitResult, ConnectionResultData } from \"../common/types\";\nimport { FormComponent } from \"@genexus/gemini/dist/types/common/interfaces\";\n\n// formSubmitValidation will be deprecated. use \"validateControls\" instead.\nexport const formSubmitValidation = (\n result: FormSubmitResult | ConnectionResultData,\n ref: any\n) => {\n result.fieldErrors?.forEach(element => {\n const key = element.key;\n const message = element.message;\n const hasError = element.hasError;\n\n const reference: FormComponent = ref[`${key}El`];\n if (reference && hasError && message.trim()) {\n reference.validationStatus = \"error\";\n reference.validationMessage = message;\n } else if (reference && !hasError) {\n reference.validationStatus = \"indeterminate\";\n reference.validationMessage = null;\n }\n });\n};\n\n// TODO: Improve the way we mark components with error. We must not use error classes.\nconst formElementsErrorClassesDictionary = {\n \"ch-checkbox\": \"checkbox-error\",\n \"ch-combo-box-render\": \"combo-box-error\",\n \"ch-edit\": \"form-input-error\"\n} as const;\n\nconst toggleErrorClass = (hasError: boolean, element: HTMLElement) => {\n const elementTagName = element.tagName.toLowerCase();\n const errorClass =\n formElementsErrorClassesDictionary[\n elementTagName as keyof typeof formElementsErrorClassesDictionary\n ];\n if (hasError) {\n element.classList.add(errorClass);\n } else {\n element.classList.remove(errorClass);\n }\n};\n\nexport const validateControls = (\n formSubmitResult: FormSubmitResult,\n validatableControls: Map<string, ControlValidation>\n): Map<string, ControlValidation> => {\n const validatableControlsUpdated = new Map(validatableControls);\n formSubmitResult.fieldErrors.forEach(fieldResult => {\n const fieldKey = fieldResult.key;\n const fieldHasError = fieldResult.hasError;\n const controlMapRecord = validatableControlsUpdated.get(fieldKey);\n if (controlMapRecord?.reference) {\n // toggle class to add or remove error style\n toggleErrorClass(fieldHasError, controlMapRecord.reference);\n validatableControlsUpdated.set(fieldKey, {\n ...controlMapRecord,\n hasError: fieldHasError,\n message: fieldResult.message\n });\n }\n });\n // return validatableControls updated.\n return validatableControlsUpdated;\n};\n\nexport type ControlValidation = {\n reference: HTMLElement;\n hasError: boolean;\n message: string;\n};\n","import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\nimport { h } from \"@stencil/core\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nexport const renderChCheckboxItems = (\n options: Array<GxOption>,\n group = \"undefined-group\",\n callback?: any\n): any =>\n options?.length > 0 &&\n options.map(option => (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n part={`${group}-${option.id}`}\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={option.value}\n onInput={callback ?? null}\n startImgSrc={option.iconName}\n ></ch-checkbox>\n ));\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\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(--mer-spacing--2xs);\n}\n.location {\n flex-grow: 1;\n grid-area: location;\n}\n\n.tab::part(page) {\n // TODO: Remove this line when the ch-tab renders supports scrollbar\n // custom styling\n scrollbar-width: thin;\n}\n\n.basic {\n grid-template:\n \"prototyping-target user-interface-language\" max-content\n \"back-end front-end\" max-content;\n grid-template-columns: 1fr 1fr;\n}\n.prototyping-target {\n grid-area: prototyping-target;\n}\n.user-interface-language {\n grid-area: user-interface-language;\n}\n.back-end {\n grid-area: back-end;\n grid-auto-rows: max-content;\n}\n.front-end {\n grid-area: front-end;\n}\n\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: var(--content-block-spacing);\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","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 } from \"@genexus/mercury\";\n\nimport { config } from \"../../common/config\";\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { getSelectedItem } from \"../../common/common\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\nimport { getIconPath } from \"@genexus/mercury\";\nimport {\n mapOptionsToComboBoxItemModel,\n renderChCheckboxItems\n} from \"./helpers\";\nimport { TabModel, ComboBoxModel } from \"@genexus/chameleon-controls-library\";\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 \"chameleon/scrollbar\"\n];\n\nconst WINDOWS_AUTHENTICATION_VALUE: string = \"windows-authentication\";\nconst MAIN_SECTION_CLASSES: string = \"main\";\nconst BASIC_SECTION_PARENT_CLASSES: string =\n \"basic field-group spacing-body-inline\";\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 [key: string]: any;\n\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 #selectedFrontEndsIds: 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 #frontEndsEl!: HTMLDivElement;\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 @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() defaultDataSourcesInitialValue: string;\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 this.defaultDataSourcesInitialValue = getSelectedItem(newValue);\n }\n }\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * It allows selecting multiple generators for the front end\n */\n @Prop({ mutable: true }) frontEnds!: GxOption[];\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 * 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() readonly prototypingEnvironments!: GxOption[];\n @Watch(\"prototypingEnvironments\")\n watchPrototypingEnvironments(newValue: GxOption[]) {\n if (newValue?.length) {\n this.prototypingEnvironmentsComboBoxModel =\n mapOptionsToComboBoxItemModel(newValue);\n this.prototypingEnvironmentsInitialValue = getSelectedItem(newValue);\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 }\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.previousFrontEndsState = this.frontEnds;\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 componentDidLoad() {\n this.#initialSetup();\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 #getCheckboxValues() {\n // TODO (We shouldn't be using querySelector)\n const checkboxes = this.#frontEndsEl.querySelectorAll(\"ch-checkbox\");\n const values: Array<string> = Array.from(checkboxes)\n .map((checkbox: any) => checkbox.value)\n .filter(Boolean);\n return values;\n }\n\n #handleCheckboxStatusChange = () => {\n this.#updateSelectedFrontEndsIds();\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 = (): void => {\n this.#getDataSources();\n this.#updateFrontEnds();\n };\n\n #prototypingTargetValueChangedHandler = (): void => {\n this.#getDataSources();\n };\n\n #renderAdvanced = (): Element[] => {\n return [\n <h2\n // #knowledge base storage\n class=\"control-header heading-5 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\n ? this.#handlerServerNameInput\n : undefined\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-sm\"\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=\"form-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=\"form-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-sm\"\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=\"form-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 <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 = 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\n <div>\n <h2\n // back end\n class=\"control-header heading-5 text-align-center\"\n >\n {this.#componentLocale.tabBasic.backEnd.backEndLabel}\n </h2>\n <div class=\"field-group back-end\">\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.prototypingEnvironments.length === 0}\n placeholder={\n this.prototypingEnvironments.length === 0\n ? this.#componentLocale.tabBasic.backEnd\n .prototypingEnvironment.disabledPlaceholder\n : \"\"\n }\n value={this.prototypingEnvironmentsInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#prototypingEnvironmentEl =\n el as HTMLChComboBoxRenderElement)\n }\n model={this.prototypingEnvironmentsComboBoxModel}\n onInput={\n this.prototypingEnvironments.length > 0\n ? this.#prototypingEnvironmentValueChangedHandler\n : undefined\n }\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.defaultDataSourcesInitialValue}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#dataSourceEl = el as HTMLChComboBoxRenderElement)\n }\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 </div>,\n\n <div>\n <h2\n // front end\n class=\"control-header heading-5 text-align-center\"\n >\n {this.#componentLocale.tabBasic.frontEnd.frontEndLabel}\n </h2>\n <div\n class=\"field-group front-end\"\n ref={(el: HTMLDivElement) =>\n (this.#frontEndsEl = el as HTMLDivElement)\n }\n >\n {renderChCheckboxItems(\n this.frontEnds,\n \"front-end\",\n this.#handleCheckboxStatusChange\n )}\n </div>\n </div>\n ];\n };\n\n // - - - - - - - - - -\n\n #cancelKbHandler = (): void => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #createKbHandler = (): void => {\n if (this.createCallback) {\n const createCallbackPromise = 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: this.#selectedFrontEndsIds,\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 });\n\n createCallbackPromise.then((formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\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 #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 #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 this.defaultDataSources = result;\n // set first option as selected\n this.#dataSourceEl.value = this.defaultDataSources[0].id;\n }\n })\n .catch(() => {\n // to do\n });\n }\n };\n\n #initialSetup = () => {\n this.#updateSelectedFrontEndsIds();\n // map all \"Basic Tab\" GxOption[]'s to ComboBoxModel's\n this.watchDefaultDataSources(this.defaultDataSources);\n this.watchPrototypingEnvironments(this.prototypingEnvironments);\n this.watchPrototypingTargets(this.prototypingTargets);\n this.watchServerNames(this.serverNames);\n this.watchUserInterfaceLanguages(this.userInterfaceLanguages);\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 = () => {\n if (this.getFrontEndsCallback) {\n const selectedPrototypingEnvironmentId =\n this.#prototypingEnvironmentEl.value;\n const updatedFrontEndsPromise: Promise<GxOption[]> =\n this.getFrontEndsCallback(selectedPrototypingEnvironmentId);\n updatedFrontEndsPromise\n .then(newFrontEndsOptions => {\n const updatedFrontEnds: GxOption[] = [];\n newFrontEndsOptions.forEach(newFrontEnd => {\n const foundActualFrontEnd = this.frontEnds.find(actualFrontEnd => {\n return newFrontEnd.id === actualFrontEnd.id;\n });\n if (foundActualFrontEnd) {\n // update newFrontEnd checked status with actual frontEnd checked status\n newFrontEnd.checked = foundActualFrontEnd.checked;\n }\n updatedFrontEnds.push(newFrontEnd);\n });\n this.frontEnds = updatedFrontEnds;\n })\n .catch(() => {\n // to do\n });\n }\n };\n\n #updateSelectedFrontEndsIds = () => {\n this.#selectedFrontEndsIds = this.#getCheckboxValues();\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 <section class=\"section\">\n <header\n class={{\n \"field-group\": true,\n \"control-header-with-border\": !this.isAdvanced,\n \"control-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=\"form-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=\"form-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-md\" src={SYSTEM_ICON}></ch-image>\n </button>\n </div>\n )}\n </header>\n {this.isAdvanced ? (\n <ch-tab-render\n // #tab\n class={{\n scrollable: true,\n tab: true,\n [MAIN_SECTION_CLASSES]: true\n }}\n direction=\"block\"\n model={this.#kbSectionsModel}\n selectedId={BASIC_TAB_SELECTOR}\n overflow=\"auto scroll\"\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 \"control-footer\": this.isAdvanced,\n \"control-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 SelectLocationCallback = () => Promise<string>;\n"],"mappings":"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"}
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import { r as t, c as e, a as r, h as a, H as o, g as i } from "./p-aaed592c.js";
|
|
2
|
-
|
|
3
|
-
import { L as s } from "./p-74d59062.js";
|
|
4
|
-
|
|
5
|
-
import { f as n, s as l } from "./p-14e6ef41.js";
|
|
6
|
-
|
|
7
|
-
import { c as d } from "./p-78b90603.js";
|
|
8
|
-
|
|
9
|
-
import { r as c } from "./p-3ef5a5a6.js";
|
|
10
|
-
|
|
11
|
-
const g = ":root{--ui-animaton-speed:0.2s}.gxg-title-01{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-01--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-01-font-weight);font-size:var(--ds-title-01-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-02{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-02--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-02-font-weight);font-size:var(--ds-title-02-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--color-on-primary)}.gxg-title-03{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-03--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-03-font-weight);font-size:var(--ds-title-03-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;text-transform:uppercase;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-04{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-04--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-04-font-weight);font-size:var(--ds-title-04-font-size);letter-spacing:var(--ds-base-font-letter-spacing--comfortable);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-title-05{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable)}.gxg-title-05--negative{font-family:var(--ds-base-font-family-primary);font-weight:var(--ds-title-05-font-weight);font-size:var(--ds-title-05-font-size);letter-spacing:var(--ds-base-font-letter-spacing--regular);color:var(--ds-base-font-color);text-align:start;line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable)}.gxg-text--negative{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--negative)}.gxg-text--gray{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--dimmed)}.gxg-quote{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);font-style:italic}.gxg-quote--negative{color:var(--ds-base-font-color--negative)}.gxg-link{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block}.gxg-link:hover{color:var(--ds-base-font-color--link-hover)}.gxg-link:active{color:var(--ds-base-font-color--link-active)}.gxg-link-gray{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed)}.gxg-link-gray:hover{line-height:unset;font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--link);text-decoration:underline;cursor:pointer;display:inline-block;color:var(--ds-base-font-color--dimmed);filter:brightness(1.4)}.gxg-alert-error{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--error);display:inline-block}.gxg-alert-warning{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--warning);display:inline-block}.gxg-alert-success{font-family:var(--ds-base-font-family-primary);font-size:var(--ds-base-font-size);color:var(--ds-base-font-size-color);font-weight:var(--ds-base-font-size-weight);line-height:var(--ds-base-font-line-height--comfortable);color:var(--ds-base-font-color--success);display:inline-block}.gxg-tab--disabled{color:var(--color-primary-disabled);pointer-events:none}.gxg-tab--disabled[disabled]{color:var(--color-primary-disabled);pointer-events:none}.gxg-label{font-family:var(--ds-base-font-family-primary);font-weight:var(--gxg-label-font-weight);font-size:var(--gxg-label-font-size);color:var(--gxg-label-color);text-align:center;line-height:1.455em;display:flex;align-items:center}.gxg-label:hover{color:var(--color-primary-hover)}.gxg-label:focus{color:var(--color-primary-active)}.gxg-label:active{color:var(--color-primary-active)}.gxg-label[disabled]{color:var(--color-primary-disabled)}.gxg-label--negative{color:var(--color-on-primary)}.gxg-label--negative[disabled]{color:var(--color-on-disabled)}.gxg-scrollbar{}.gxg-scrollbar::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gxg-scrollbar::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gxg-scrollbar::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gxg-scrollbar::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}:host{display:grid;block-size:100%}.card-regular{background-color:var(--mer-surface__elevation--01);border:var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01);border-radius:var(--mer-border__radius--md);padding:var(--mer-spacing--md) var(--mer-spacing--md);display:grid}.card-small{background-color:var(--mer-surface__elevation--02);border-radius:var(--mer-border__radius--sm);padding:var(--mer-spacing--sm) var(--mer-spacing--sm)}.card-small--actionable:hover{background-color:var(--mer-color__neutral-gray--600)}.card-small--actionable:active{background-color:var(--mer-color__neutral-gray--650)}.card-small:focus-visible{outline:var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color);outline-offset:var(--focus__outline-offset)}.empty-state{block-size:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--mer-spacing--sm);text-align:center}.empty-state__title,.empty-state__button,.empty-state__link{max-inline-size:300px}.opacity-0{opacity:0}.opacity-1{opacity:1}.display-contents{display:contents}.gxi-hidden{display:none !important}.gxi-full-height{height:100%}.gxi-overflow-auto{overflow:auto}.gxi-display-flex{display:flex}.align-start{display:flex;align-items:start}.align-center{display:flex;align-items:center}.align-end{display:flex;align-items:end}.overflow-auto{overflow:auto}.justify-start{display:flex;justify-content:start}.justify-center{display:flex;justify-content:center}.justify-end{display:flex;justify-content:end}.grid{display:grid;grid-row-gap:var(--gx-ide-grid-row-gap);grid-column-gap:var(--gx-ide-grid-column-gap);grid-template-rows:auto}ch-grid-cell{display:flex}ch-grid{overflow:auto;height:100%}ch-grid-column{z-index:99;border-bottom:1px solid var(--mer-color__neutral-gray--800)}ch-grid-column:first-child{padding-inline-start:var(--gx-ide-container__padding) !important}ch-grid-column:last-child{padding-inline-end:var(--gx-ide-container__padding) !important}ch-grid-cell{--mer-spacing--xs:var(--gx-ide-container__padding)}.layout{display:grid;gap:var(--mer-spacing--lg);box-sizing:border-box}.layout--two-cols{grid-template-columns:1fr 1fr}.layout--space-above{padding-block-start:var(--mer-spacing--lg)}gxg-tabs{box-shadow:none}:host(.gx-ide-component){height:100% !important;display:flex !important;flex-direction:column !important}:host(:focus-within) gx-ide-top-bar::part(wrapper){background-color:var(--color-secondary-enabled)}.gx-ide-main-wrapper{color:var(--gx-ide-component-text-color);font-weight:var(--mer-font__weight--regular);font-size:var(--mer-font__size--xs);font-family:var(--mer-font-family--primary);height:100%;background-color:var(--gx-ide-component-background-color);display:flex;flex-direction:column;flex-grow:1;box-sizing:border-box}.gx-ide-main{flex-grow:1;overflow-y:auto;}.gx-ide-main::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-main::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-main::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-main::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-main::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.gx-ide-overflow{overflow-y:auto;}.gx-ide-overflow::-webkit-scrollbar{width:var(--gxg-scrollbar-width);height:var(--gxg-scrollbar-width)}.gx-ide-overflow::-webkit-scrollbar-track{background-color:var(--gxg-scrollbar-track-background);border-radius:var(--gxg-scrollbar-track-border-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb{background-color:var(--gxg-scrollbar-track-thumb-background);border-radius:var(--gxg-scrollbar-track-thumb-radius)}.gx-ide-overflow::-webkit-scrollbar-thumb:hover{background-color:var(--gxg-scrollbar-track-thumb-hover-background)}.gx-ide-overflow::-webkit-scrollbar-corner{background:rgba(0, 0, 0, 0)}.tree-view-primary{font-size:var(--mer-font__size--2xs)}p{margin:0;font-size:var(--mer-font__size--xxs)}.buttons-container{display:flex;gap:var(--mer-spacing--xs)}:host{display:block;border:1px solid var(--gxg-border-color--regular);background-color:var(--mer-color__surface)}.header{display:flex}.header__label{flex:none}.main{height:100%}.gxg-tabs{margin-top:0;box-shadow:none}.tab__basic__single-runtime{display:flex;align-items:center;justify-content:center;gap:var(--mer-spacing--2xs)}.basic-main{display:flex;height:100%}.basic-main__back-end{flex:1}.basic-main__front-end{flex:1}.advanced-second-row{grid-template-columns:repeat(2, 1fr);grid-template-rows:1fr}.advanced-second-row>*:nth-child(1){grid-area:1/1/2/2}.advanced-second-row>*:nth-child(2){grid-area:1/2/2/3}.advanced-second-row-col-left{grid-template-columns:repeat(2, 1fr);grid-template-rows:repeat(4, 1fr);grid-template-columns:1fr auto}.advanced-second-row-col-left>*{display:flex;align-items:self-end}.advanced-second-row-col-left>*:nth-child(1){grid-area:1/1/2/2}.advanced-second-row-col-left>*:nth-child(2){grid-area:1/2/2/3}.advanced-second-row-col-left>*:nth-child(3){grid-area:2/1/3/2}.advanced-second-row-col-left>*:nth-child(4){grid-area:2/2/3/3}.advanced-second-row-col-left>*:nth-child(5){grid-area:3/1/4/2}.advanced-second-row-col-left>*:nth-child(6){grid-area:3/2/4/3}.advanced-second-row-col-left>*:nth-child(7){grid-area:4/1/5/2}.advanced-second-row-col-left>*:nth-child(8){grid-area:4/2/5/3}.advanced-second-row-col-right{grid-template-columns:1fr;grid-template-rows:repeat(4, 1fr);grid-auto-rows:1fr}.advanced-second-row-col-right *:nth-child(1){grid-area:1/1/2/2}.advanced-second-row-col-right *:nth-child(2){grid-area:2/1/3/2}.advanced-second-row-col-right *:nth-child(3){grid-area:3/1/4/2}.advanced-second-row-col-right *:nth-child(4){grid-area:4/1/5/2}";
|
|
12
|
-
|
|
13
|
-
const f = class {
|
|
14
|
-
constructor(o) {
|
|
15
|
-
t(this, o);
|
|
16
|
-
this.componentDidRenderFirstTime = e(this, "componentDidRenderFirstTime", 7);
|
|
17
|
-
this.renderedFirstTime = false;
|
|
18
|
-
this.selectedFrontEndsIds = [];
|
|
19
|
-
this.envNameModifiedByUser = false;
|
|
20
|
-
this.shortcutsSrc = r(`./gx-ide-assets/new-environment/shortcuts.json`);
|
|
21
|
-
// 9.LOCAL METHODS //
|
|
22
|
-
// 9.LOCAL METHODS -> Helpers //
|
|
23
|
-
this.initialSetup = () => {
|
|
24
|
-
this.updateSelectedFrontEndsIds();
|
|
25
|
-
this.setInitialRuntimeId();
|
|
26
|
-
this.setInitialLanguageId();
|
|
27
|
-
this.setInitialDataStoreId();
|
|
28
|
-
};
|
|
29
|
-
this.evaluateSelectedRuntimeEnvironmentId = () => {
|
|
30
|
-
if (this.runtimes.length === 1) {
|
|
31
|
-
this.selectedRuntimeEnvironmentId = this.runtimes[0].id;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
this.setInitialRuntimeId = () => {
|
|
35
|
-
var t;
|
|
36
|
-
if ((t = this.runtimeEnvironmentEl) === null || t === void 0 ? void 0 : t.value) {
|
|
37
|
-
const t = this.runtimes.find((t => {
|
|
38
|
-
var e;
|
|
39
|
-
return t.value === ((e = this.runtimeEnvironmentEl) === null || e === void 0 ? void 0 : e.value);
|
|
40
|
-
}));
|
|
41
|
-
if (t) {
|
|
42
|
-
this.selectedRuntimeEnvironmentId = t.id;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
this.setInitialLanguageId = () => {
|
|
47
|
-
var t;
|
|
48
|
-
if ((t = this.languageEl) === null || t === void 0 ? void 0 : t.value) {
|
|
49
|
-
const t = this.languages.find((t => {
|
|
50
|
-
var e;
|
|
51
|
-
return t.id === ((e = this.languageEl) === null || e === void 0 ? void 0 : e.value);
|
|
52
|
-
}));
|
|
53
|
-
if (t) {
|
|
54
|
-
this.selectedLanguageId = t.id;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
this.setInitialDataStoreId = () => {
|
|
59
|
-
var t;
|
|
60
|
-
if ((t = this.dataStoreEl) === null || t === void 0 ? void 0 : t.value) {
|
|
61
|
-
const t = this.dataStores.find((t => {
|
|
62
|
-
var e;
|
|
63
|
-
return t.id === ((e = this.dataStoreEl) === null || e === void 0 ? void 0 : e.value);
|
|
64
|
-
}));
|
|
65
|
-
if (t) {
|
|
66
|
-
this.selectedDataStoreId = t.id;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
// 9.LOCAL METHODS -> Not Helpers //
|
|
71
|
-
this.envNameInputHandler = t => {
|
|
72
|
-
const e = (t.detail + "").trim();
|
|
73
|
-
if (e !== this.environmentName) {
|
|
74
|
-
this.environmentName = e;
|
|
75
|
-
this.envNameModifiedByUser = true;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
this.updateSelectedFrontEndsIds = () => {
|
|
79
|
-
this.selectedFrontEndsIds = [];
|
|
80
|
-
this.frontEndsEl.getValues().then((t => {
|
|
81
|
-
t.forEach((t => {
|
|
82
|
-
if (t.value) {
|
|
83
|
-
this.selectedFrontEndsIds.push(t.id);
|
|
84
|
-
}
|
|
85
|
-
}));
|
|
86
|
-
}));
|
|
87
|
-
};
|
|
88
|
-
this.setEnvironmentHandler = async () => {
|
|
89
|
-
if (this.createCallback) {
|
|
90
|
-
const t = {
|
|
91
|
-
setAsCurrent: this.setAsCurrentEnvironmentEl.checked,
|
|
92
|
-
name: this.environmentNameEl.value,
|
|
93
|
-
runtime: this.selectedRuntimeEnvironmentId,
|
|
94
|
-
language: this.languageEl.value,
|
|
95
|
-
dataStores: this.dataStoreEl.value,
|
|
96
|
-
frontEnds: this.selectedFrontEndsIds
|
|
97
|
-
};
|
|
98
|
-
const e = this.createCallback(t);
|
|
99
|
-
e.then((t => {
|
|
100
|
-
n(t, this);
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
this.cancelButtonClickedHandler = async () => {
|
|
105
|
-
if (this.cancelCallback) {
|
|
106
|
-
await this.cancelCallback();
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
this.runtimeEnvironmentChangedHandler = t => {
|
|
110
|
-
this.selectedRuntimeEnvironmentId = t.detail.id;
|
|
111
|
-
this.updateDataSources();
|
|
112
|
-
};
|
|
113
|
-
this.languageValueChangedHandler = () => {
|
|
114
|
-
/* the language item id is used for the value (they are equal)*/
|
|
115
|
-
this.selectedLanguageId = this.languageEl.value;
|
|
116
|
-
this.updateDataSources();
|
|
117
|
-
this.updateFrontEnds();
|
|
118
|
-
this.updateEnvironmentName();
|
|
119
|
-
};
|
|
120
|
-
this.dataStoreValueChangedHandler = () => {
|
|
121
|
-
/* the data store item id is used for the value (they are equal)*/
|
|
122
|
-
this.selectedDataStoreId = this.dataStoreEl.value;
|
|
123
|
-
this.updateEnvironmentName();
|
|
124
|
-
};
|
|
125
|
-
this.updateDataSources = async () => {
|
|
126
|
-
if (this.getDataSourcesCallback) {
|
|
127
|
-
const t = await this.getDataSourcesCallback(this.selectedLanguageId, this.selectedRuntimeEnvironmentId);
|
|
128
|
-
if ((t === null || t === void 0 ? void 0 : t.length) > 0) {
|
|
129
|
-
this.dataStores = t;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
this.updateFrontEnds = async () => {
|
|
134
|
-
if (this.getFrontEndsCallback) {
|
|
135
|
-
const t = await this.getFrontEndsCallback(this.selectedLanguageId);
|
|
136
|
-
if ((t === null || t === void 0 ? void 0 : t.length) > 0) {
|
|
137
|
-
this.frontEnds = t;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
this.updateEnvironmentName = async () => {
|
|
142
|
-
if (this.getEnvironmentNameCallback && this.environmentNameEl && this.envNameModifiedByUser) {
|
|
143
|
-
const t = await this.getEnvironmentNameCallback(this.selectedLanguageId, this.selectedDataStoreId);
|
|
144
|
-
if (t) {
|
|
145
|
-
this.environmentName = t;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
this.evaluateSingleRuntimeIcon = () => {
|
|
150
|
-
if (this.runtimes[0].id === "local") {
|
|
151
|
-
return "window-tools/rol";
|
|
152
|
-
} else {
|
|
153
|
-
return "window-tools/genexus-cloud";
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
// 9.LOCAL METHODS -> Renders //
|
|
157
|
-
this.renderTabBasic = () => a("gxg-tab", {
|
|
158
|
-
tab: "basic",
|
|
159
|
-
"no-padding": true,
|
|
160
|
-
flexContainer: true,
|
|
161
|
-
class: "tab tab__basic",
|
|
162
|
-
isSelected: !this.isAdvanced
|
|
163
|
-
}, a("gx-ide-container", {
|
|
164
|
-
containerTitle: this._componentLocale.runtime,
|
|
165
|
-
noContentPadding: true,
|
|
166
|
-
displayBorderBottom: true,
|
|
167
|
-
flexRow: this.runtimes.length === 1
|
|
168
|
-
}, this.runtimes.length > 1 ? a("gxg-form-radio-group", {
|
|
169
|
-
slot: "header",
|
|
170
|
-
radiosLabelSize: "large",
|
|
171
|
-
ref: t => this.runtimeEnvironmentEl = t,
|
|
172
|
-
row: true,
|
|
173
|
-
center: true,
|
|
174
|
-
onChange: this.runtimeEnvironmentChangedHandler
|
|
175
|
-
}, c("gxg-form-radio", this.runtimes, "runtime-environment")) : [ a("div", {
|
|
176
|
-
class: "tab__basic__single-runtime",
|
|
177
|
-
slot: "header"
|
|
178
|
-
}, a("gxg-icon", {
|
|
179
|
-
color: "disabled",
|
|
180
|
-
type: this.evaluateSingleRuntimeIcon()
|
|
181
|
-
}), a("gxg-text", {
|
|
182
|
-
textAlign: "center"
|
|
183
|
-
}, this.runtimes[0].label)) ], a("div", {
|
|
184
|
-
class: "basic-main"
|
|
185
|
-
}, a("gx-ide-container", {
|
|
186
|
-
"container-title": this._componentLocale.tabBasic.backEnd.backEndLabel,
|
|
187
|
-
class: "basic-main__back-end",
|
|
188
|
-
contentBorderEnd: true,
|
|
189
|
-
titleType: "secondary"
|
|
190
|
-
}, a("gxg-combo-box", {
|
|
191
|
-
"disable-filter": true,
|
|
192
|
-
label: this._componentLocale.tabBasic.backEnd.language,
|
|
193
|
-
value: l(this.languages),
|
|
194
|
-
ref: t => this.languageEl = t,
|
|
195
|
-
toolTip: d.tooltip,
|
|
196
|
-
onValueChanged: this.languageValueChangedHandler,
|
|
197
|
-
part: "language"
|
|
198
|
-
}, c("gxg-combo-box-item", this.languages)), a("gxg-combo-box", {
|
|
199
|
-
"disable-filter": true,
|
|
200
|
-
label: this._componentLocale.tabBasic.backEnd.dataStores,
|
|
201
|
-
value: l(this.dataStores),
|
|
202
|
-
ref: t => this.dataStoreEl = t,
|
|
203
|
-
onValueChanged: this.dataStoreValueChangedHandler,
|
|
204
|
-
toolTip: d.tooltip,
|
|
205
|
-
part: "data-store"
|
|
206
|
-
}, c("gxg-combo-box-item", this.dataStores))), a("gx-ide-container", {
|
|
207
|
-
"container-title": this._componentLocale.tabBasic.frontEnd.frontEndLabel,
|
|
208
|
-
class: "basic-main__front-end",
|
|
209
|
-
titleType: "secondary"
|
|
210
|
-
}, a("gxg-form-checkbox-group", {
|
|
211
|
-
checkboxesLabelSize: "large",
|
|
212
|
-
ref: t => this.frontEndsEl = t,
|
|
213
|
-
onGroupValuesChanged: this.updateSelectedFrontEndsIds
|
|
214
|
-
}, c("gxg-form-checkbox", this.frontEnds))))));
|
|
215
|
-
this.renderTabAdvanced = () => a("gxg-tab", {
|
|
216
|
-
tab: "advanced",
|
|
217
|
-
"no-padding": true
|
|
218
|
-
}, a("gx-ide-container", null, a("slot", {
|
|
219
|
-
name: "property-grid"
|
|
220
|
-
})));
|
|
221
|
-
this.displayTitle = false;
|
|
222
|
-
this.cancelCallback = undefined;
|
|
223
|
-
this.createCallback = undefined;
|
|
224
|
-
this.dataStores = undefined;
|
|
225
|
-
this.disableAdvanced = false;
|
|
226
|
-
this.environmentName = undefined;
|
|
227
|
-
this.frontEnds = undefined;
|
|
228
|
-
this.getEnvironmentNameCallback = undefined;
|
|
229
|
-
this.getFrontEndsCallback = undefined;
|
|
230
|
-
this.getDataSourcesCallback = undefined;
|
|
231
|
-
this.isAdvanced = false;
|
|
232
|
-
this.languages = undefined;
|
|
233
|
-
this.runtimes = undefined;
|
|
234
|
-
this.setAsTarget = true;
|
|
235
|
-
}
|
|
236
|
-
// 6.COMPONENT LIFECYCLE EVENTS //
|
|
237
|
-
async componentWillLoad() {
|
|
238
|
-
this._componentLocale = await s.getComponentStrings(this.el);
|
|
239
|
-
this.evaluateSelectedRuntimeEnvironmentId();
|
|
240
|
-
}
|
|
241
|
-
componentDidLoad() {
|
|
242
|
-
this.initialSetup();
|
|
243
|
-
this.environmentNameEl.focus();
|
|
244
|
-
}
|
|
245
|
-
componentDidRender() {
|
|
246
|
-
if (!this.renderedFirstTime) {
|
|
247
|
-
this.componentDidRenderFirstTime.emit(this._componentLocale.componentName);
|
|
248
|
-
this.renderedFirstTime = true;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
// 7.LISTENERS //
|
|
252
|
-
// 8.PUBLIC METHODS API //
|
|
253
|
-
/**
|
|
254
|
-
* Suspends or reactivates the shortcuts
|
|
255
|
-
*/
|
|
256
|
-
async suspendShortcuts(t) {
|
|
257
|
-
if (t) {
|
|
258
|
-
this.gxgShortcutsEl.suspend = true;
|
|
259
|
-
} else {
|
|
260
|
-
this.gxgShortcutsEl.suspend = false;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
// 10.RENDER() FUNCTION //
|
|
264
|
-
render() {
|
|
265
|
-
return a(o, {
|
|
266
|
-
class: "gx-ide-component"
|
|
267
|
-
}, a("div", {
|
|
268
|
-
class: "gx-ide-main-wrapper"
|
|
269
|
-
}, a("gx-ide-container", {
|
|
270
|
-
containerTitle: this.displayTitle ? this._componentLocale.componentName : null,
|
|
271
|
-
noContentPadding: true,
|
|
272
|
-
noBorderFooter: true,
|
|
273
|
-
slimmerFooter: d.gxIdeContainer.slimmerFooter
|
|
274
|
-
}, a("header", {
|
|
275
|
-
class: "header",
|
|
276
|
-
slot: "header"
|
|
277
|
-
}, a("gxg-label", {
|
|
278
|
-
labelPosition: "start",
|
|
279
|
-
class: "header__label"
|
|
280
|
-
}, this._componentLocale.name), a("gxg-form-text", {
|
|
281
|
-
"label-position": "start",
|
|
282
|
-
placeholder: "New Environment",
|
|
283
|
-
"max-width": "100%",
|
|
284
|
-
value: this.environmentName,
|
|
285
|
-
ref: t => this.environmentNameEl = t,
|
|
286
|
-
onInput: !this.envNameModifiedByUser && this.envNameInputHandler,
|
|
287
|
-
toolTip: d.tooltip,
|
|
288
|
-
class: "header__text",
|
|
289
|
-
part: "environment-name"
|
|
290
|
-
})), a("main", {
|
|
291
|
-
class: "main"
|
|
292
|
-
}, a("gxg-tabs", {
|
|
293
|
-
class: "gxg-tabs",
|
|
294
|
-
noBorder: true
|
|
295
|
-
}, this.isAdvanced ? a("gxg-tab-bar", {
|
|
296
|
-
slot: "tab-bar-container",
|
|
297
|
-
displayBorder: true
|
|
298
|
-
}, a("gxg-tab-button", {
|
|
299
|
-
slot: "tab-bar",
|
|
300
|
-
"tab-label": this._componentLocale.tabBasic.tabLabel,
|
|
301
|
-
tab: "basic",
|
|
302
|
-
"is-selected": true
|
|
303
|
-
}), this.isAdvanced ? a("gxg-tab-button", {
|
|
304
|
-
slot: "tab-bar",
|
|
305
|
-
"tab-label": this._componentLocale.tabAdvanced.tabLabel,
|
|
306
|
-
tab: "advanced",
|
|
307
|
-
disabled: this.disableAdvanced
|
|
308
|
-
}) : null) : null, this.renderTabBasic(), this.isAdvanced && this.renderTabAdvanced())), a("gxg-form-checkbox", {
|
|
309
|
-
label: this._componentLocale.footer.setAsCurrentEnvironment,
|
|
310
|
-
ref: t => this.setAsCurrentEnvironmentEl = t,
|
|
311
|
-
checked: this.setAsTarget,
|
|
312
|
-
part: "set-as-current-environment",
|
|
313
|
-
slot: "footer-start"
|
|
314
|
-
}), a("gxg-button", {
|
|
315
|
-
id: "button-cancel",
|
|
316
|
-
slot: "footer-end",
|
|
317
|
-
type: "outlined",
|
|
318
|
-
onClick: this.cancelButtonClickedHandler,
|
|
319
|
-
part: "gxg-button gxg-button--cancel"
|
|
320
|
-
}, this._componentLocale.footer.btnCancel), a("gxg-button", {
|
|
321
|
-
id: "button-create",
|
|
322
|
-
slot: "footer-end",
|
|
323
|
-
type: "primary-text-only",
|
|
324
|
-
onClick: this.setEnvironmentHandler,
|
|
325
|
-
part: "gxg-button gxg-button--create"
|
|
326
|
-
}, this._componentLocale.footer.btnSetNewEnvironment))), a("gxg-shortcuts", {
|
|
327
|
-
src: this.shortcutsSrc,
|
|
328
|
-
ref: t => this.gxgShortcutsEl = t
|
|
329
|
-
}));
|
|
330
|
-
}
|
|
331
|
-
static get assetsDirs() {
|
|
332
|
-
return [ "gx-ide-assets/new-environment" ];
|
|
333
|
-
}
|
|
334
|
-
get el() {
|
|
335
|
-
return i(this);
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
|
|
339
|
-
f.style = g;
|
|
340
|
-
|
|
341
|
-
export { f as gx_ide_new_environment };
|
|
342
|
-
//# sourceMappingURL=p-e146e456.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["newEnvironmentCss","GxIdeNewEnvironment","this","renderedFirstTime","selectedFrontEndsIds","envNameModifiedByUser","shortcutsSrc","getAssetPath","initialSetup","updateSelectedFrontEndsIds","setInitialRuntimeId","setInitialLanguageId","setInitialDataStoreId","evaluateSelectedRuntimeEnvironmentId","runtimes","length","selectedRuntimeEnvironmentId","id","_a","runtimeEnvironmentEl","value","initialRuntimeEnvironment","find","runtime","languageEl","initialLanguage","languages","lang","selectedLanguageId","dataStoreEl","initialDataStore","dataStores","dataStore","selectedDataStoreId","envNameInputHandler","e","newEnvName","detail","trim","environmentName","frontEndsEl","getValues","then","frontEndsCheckboxesInfo","forEach","frontEnd","push","setEnvironmentHandler","async","createCallback","newEnvData","setAsCurrent","setAsCurrentEnvironmentEl","checked","name","environmentNameEl","language","frontEnds","createCallbackPromise","formSubmitResult","formSubmitValidation","cancelButtonClickedHandler","cancelCallback","runtimeEnvironmentChangedHandler","event","updateDataSources","languageValueChangedHandler","updateFrontEnds","updateEnvironmentName","dataStoreValueChangedHandler","getDataSourcesCallback","updatedDataSources","getFrontEndsCallback","updatedFrontEnds","getEnvironmentNameCallback","updatedEnvName","evaluateSingleRuntimeIcon","renderTabBasic","h","tab","flexContainer","class","isSelected","isAdvanced","containerTitle","_componentLocale","noContentPadding","displayBorderBottom","flexRow","slot","radiosLabelSize","ref","el","row","center","onChange","renderFormItems","color","type","textAlign","label","tabBasic","backEnd","backEndLabel","contentBorderEnd","titleType","setInitialComboValue","toolTip","config","tooltip","onValueChanged","part","frontEndLabel","checkboxesLabelSize","onGroupValuesChanged","renderTabAdvanced","componentWillLoad","Locale","getComponentStrings","componentDidLoad","focus","componentDidRender","componentDidRenderFirstTime","emit","componentName","suspendShortcuts","gxgShortcutsEl","suspend","render","Host","displayTitle","noBorderFooter","slimmerFooter","gxIdeContainer","labelPosition","placeholder","onInput","noBorder","displayBorder","tabLabel","tabAdvanced","disabled","disableAdvanced","footer","setAsCurrentEnvironment","setAsTarget","onClick","btnCancel","btnSetNewEnvironment","src"],"sources":["src/components/new-environment/new-environment.scss?tag=gx-ide-new-environment&encapsulation=shadow","src/components/new-environment/new-environment.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: block;\n border: 1px solid var(--gxg-border-color--regular);\n background-color: var(--mer-color__surface);\n}\n/*Header*/\n.header {\n display: flex;\n &__label {\n flex: none;\n }\n}\n/*Main*/\n.main {\n height: 100%;\n}\n/*Main > Gxg-Tabs*/\n.gxg-tabs {\n margin-top: 0;\n box-shadow: none;\n}\n.tab {\n &__basic {\n &__single-runtime {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--mer-spacing--2xs);\n }\n }\n}\n/*Main > Gxg-Tabs > Basic*/\n.basic-main {\n display: flex;\n height: 100%;\n\n &__back-end {\n flex: 1;\n //border-inline-end: 1px solid var(--gx-ide-container-border-color);\n }\n &__front-end {\n flex: 1;\n }\n}\n/*Main > Gxg-Tabs > Advanced*/\n.advanced-second-row {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: 1fr;\n > *:nth-child(1) {\n grid-area: 1 / 1 / 2 / 2;\n }\n > *:nth-child(2) {\n grid-area: 1 / 2 / 2 / 3;\n }\n}\n.advanced-second-row-col-left {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: repeat(4, 1fr);\n grid-template-columns: 1fr auto;\n > * {\n display: flex;\n align-items: self-end;\n }\n > *:nth-child(1) {\n grid-area: 1 / 1 / 2 / 2;\n }\n > *:nth-child(2) {\n grid-area: 1 / 2 / 2 / 3;\n }\n > *:nth-child(3) {\n grid-area: 2 / 1 / 3 / 2;\n }\n > *:nth-child(4) {\n grid-area: 2 / 2 / 3 / 3;\n }\n > *:nth-child(5) {\n grid-area: 3 / 1 / 4 / 2;\n }\n > *:nth-child(6) {\n grid-area: 3 / 2 / 4 / 3;\n }\n > *:nth-child(7) {\n grid-area: 4 / 1 / 5 / 2;\n }\n > *:nth-child(8) {\n grid-area: 4 / 2 / 5 / 3;\n }\n}\n.advanced-second-row-col-right {\n grid-template-columns: 1fr;\n grid-template-rows: repeat(4, 1fr);\n grid-auto-rows: 1fr;\n *:nth-child(1) {\n grid-area: 1 / 1 / 2 / 2;\n }\n *:nth-child(2) {\n grid-area: 2 / 1 / 3 / 2;\n }\n *:nth-child(3) {\n grid-area: 3 / 1 / 4 / 2;\n }\n *:nth-child(4) {\n grid-area: 4 / 1 / 5 / 2;\n }\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { RadioData } from \"@genexus/gemini/dist/types/components/form-radio/form-radio\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { setInitialComboValue } from \"../../common/helpers\";\nimport { GxOption } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { renderFormItems } from \"../../common/common\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport { formSubmitValidation } from \"../../common/helpers\";\n@Component({\n tag: \"gx-ide-new-environment\",\n styleUrl: \"new-environment.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/new-environment\"]\n})\nexport class GxIdeNewEnvironment {\n /*\nINDEX:\n1.OWN PROPERTIES\n2.REFERENCE TO ELEMENTS\n3.STATE() VARIABLES\n4.PUBLIC PROPERTY API | WATCH'S\n5.EVENTS (EMIT)\n6.COMPONENT LIFECYCLE EVENTS\n7.LISTENERS\n8.PUBLIC METHODS API\n9.LOCAL METHODS\n10.RENDER() FUNCTION\n*/\n\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n private selectedFrontEndsIds: string[] = [];\n private selectedRuntimeEnvironmentId: string;\n private selectedLanguageId: string;\n private selectedDataStoreId: string;\n private envNameModifiedByUser = false;\n private shortcutsSrc = getAssetPath(\n `./gx-ide-assets/new-environment/shortcuts.json`\n );\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeNewEnvironmentElement;\n\n /* References needed to collect data con \"Create\" button submit*/\n private environmentNameEl!: HTMLGxgFormTextElement;\n private languageEl!: HTMLGxgComboBoxElement;\n private runtimeEnvironmentEl!: HTMLGxgFormRadioGroupElement;\n private dataStoreEl!: HTMLGxgComboBoxElement;\n private frontEndsEl!: HTMLGxgFormCheckboxGroupElement;\n private setAsCurrentEnvironmentEl: HTMLGxgFormCheckboxElement;\n private gxgShortcutsEl: HTMLGxgShortcutsElement;\n\n // 3.STATE() VARIABLES //\n\n // 4. PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback that will be invoked when user wants to cancel\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback that will be invoked when user confirms the KB creation\n */\n @Prop() readonly createCallback: CreateCallback;\n\n /**\n * It allows defining the DBMS that will be used in the solution\n */\n @Prop({ mutable: true }) dataStores!: GxOption[];\n\n /**\n * It allows selecting multiple generators for the front end\n */\n @Prop() readonly disableAdvanced: boolean = false;\n\n /**\n * Name of the new environment\n */\n @Prop({ mutable: true }) environmentName: string;\n\n /**\n * It allows selecting multiple generators for the front end\n */\n @Prop({ mutable: true }) frontEnds!: GxOption[];\n\n /**\n * Callback invoked when the user changes the language or the selected data source, if and only if the environment name was not modified\n */\n @Prop() readonly getEnvironmentNameCallback: GetEnvironmentNameCallback;\n\n /**\n * Callback invoked when the user changes the language, allows modifying the list of frontends\n */\n @Prop() readonly getFrontEndsCallback: GetFrontEndsCallback;\n\n /**\n * Callback invoked when the user changes the language or the runtime\n */\n @Prop() readonly getDataSourcesCallback: GetDataSourcesCallback;\n\n /**\n * Define if the Advanced tab should be displayed\n */\n @Prop() readonly isAdvanced: boolean = false;\n\n /**\n * Possible values for 'Language' combo\n */\n @Prop() readonly languages!: GxOption[];\n\n /**\n * Possible values for 'Runtime Environment' radio button\n */\n @Prop() readonly runtimes!: GxOption[];\n\n /**\n * Belongs to checkbox 'Set as current environment' @default true\n *\n */\n @Prop() readonly setAsTarget?: boolean = true;\n\n // 5.EVENTS (EMIT) //\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.evaluateSelectedRuntimeEnvironmentId();\n }\n\n componentDidLoad() {\n this.initialSetup();\n this.environmentNameEl.focus();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n // 8.PUBLIC METHODS API //\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.gxgShortcutsEl.suspend = true;\n } else {\n this.gxgShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n\n // 9.LOCAL METHODS -> Helpers //\n\n private initialSetup = () => {\n this.updateSelectedFrontEndsIds();\n this.setInitialRuntimeId();\n this.setInitialLanguageId();\n this.setInitialDataStoreId();\n };\n\n private evaluateSelectedRuntimeEnvironmentId = () => {\n if (this.runtimes.length === 1) {\n this.selectedRuntimeEnvironmentId = this.runtimes[0].id;\n }\n };\n\n private setInitialRuntimeId = () => {\n if (this.runtimeEnvironmentEl?.value) {\n const initialRuntimeEnvironment = this.runtimes.find(\n runtime => runtime.value === this.runtimeEnvironmentEl?.value\n );\n if (initialRuntimeEnvironment) {\n this.selectedRuntimeEnvironmentId = initialRuntimeEnvironment.id;\n }\n }\n };\n\n private setInitialLanguageId = () => {\n if (this.languageEl?.value) {\n const initialLanguage = this.languages.find(\n lang => lang.id === this.languageEl?.value\n );\n if (initialLanguage) {\n this.selectedLanguageId = initialLanguage.id;\n }\n }\n };\n\n private setInitialDataStoreId = () => {\n if (this.dataStoreEl?.value) {\n const initialDataStore = this.dataStores.find(\n dataStore => dataStore.id === this.dataStoreEl?.value\n );\n if (initialDataStore) {\n this.selectedDataStoreId = initialDataStore.id;\n }\n }\n };\n\n // 9.LOCAL METHODS -> Not Helpers //\n\n private envNameInputHandler = (e: CustomEvent<EventEmitter>) => {\n const newEnvName = (e.detail + \"\").trim();\n if (newEnvName !== this.environmentName) {\n this.environmentName = newEnvName;\n this.envNameModifiedByUser = true;\n }\n };\n\n private updateSelectedFrontEndsIds = () => {\n this.selectedFrontEndsIds = [];\n this.frontEndsEl.getValues().then(frontEndsCheckboxesInfo => {\n frontEndsCheckboxesInfo.forEach(frontEnd => {\n if (frontEnd.value) {\n this.selectedFrontEndsIds.push(frontEnd.id);\n }\n });\n });\n };\n\n private setEnvironmentHandler = async () => {\n if (this.createCallback) {\n const newEnvData: NewEnvironmentData = {\n setAsCurrent: this.setAsCurrentEnvironmentEl.checked,\n name: this.environmentNameEl.value,\n runtime: this.selectedRuntimeEnvironmentId,\n language: this.languageEl.value,\n dataStores: this.dataStoreEl.value,\n frontEnds: this.selectedFrontEndsIds\n };\n const createCallbackPromise = this.createCallback(newEnvData);\n createCallbackPromise.then(formSubmitResult => {\n formSubmitValidation(formSubmitResult, this);\n });\n }\n };\n\n private cancelButtonClickedHandler = async (): Promise<void> => {\n if (this.cancelCallback) {\n await this.cancelCallback();\n }\n };\n\n private runtimeEnvironmentChangedHandler = (\n event: CustomEvent<RadioData>\n ): void => {\n this.selectedRuntimeEnvironmentId = event.detail.id;\n this.updateDataSources();\n };\n\n private languageValueChangedHandler = () => {\n /* the language item id is used for the value (they are equal)*/\n this.selectedLanguageId = this.languageEl.value;\n this.updateDataSources();\n this.updateFrontEnds();\n this.updateEnvironmentName();\n };\n\n private dataStoreValueChangedHandler = () => {\n /* the data store item id is used for the value (they are equal)*/\n this.selectedDataStoreId = this.dataStoreEl.value;\n this.updateEnvironmentName();\n };\n\n private updateDataSources = async () => {\n if (this.getDataSourcesCallback) {\n const updatedDataSources = await this.getDataSourcesCallback(\n this.selectedLanguageId,\n this.selectedRuntimeEnvironmentId\n );\n if (updatedDataSources?.length > 0) {\n this.dataStores = updatedDataSources;\n }\n }\n };\n\n private updateFrontEnds = async () => {\n if (this.getFrontEndsCallback) {\n const updatedFrontEnds = await this.getFrontEndsCallback(\n this.selectedLanguageId\n );\n if (updatedFrontEnds?.length > 0) {\n this.frontEnds = updatedFrontEnds;\n }\n }\n };\n\n private updateEnvironmentName = async () => {\n if (\n this.getEnvironmentNameCallback &&\n this.environmentNameEl &&\n this.envNameModifiedByUser\n ) {\n const updatedEnvName = await this.getEnvironmentNameCallback(\n this.selectedLanguageId,\n this.selectedDataStoreId\n );\n if (updatedEnvName) {\n this.environmentName = updatedEnvName;\n }\n }\n };\n\n private evaluateSingleRuntimeIcon = () => {\n if (this.runtimes[0].id === \"local\") {\n return \"window-tools/rol\";\n } else {\n return \"window-tools/genexus-cloud\";\n }\n };\n\n // 9.LOCAL METHODS -> Renders //\n\n private renderTabBasic = (): Element => {\n {\n /* #basic tab*/\n }\n return (\n <gxg-tab\n tab=\"basic\"\n no-padding\n flexContainer\n class=\"tab tab__basic\"\n isSelected={!this.isAdvanced}\n >\n <gx-ide-container\n containerTitle={this._componentLocale.runtime}\n noContentPadding\n displayBorderBottom\n flexRow={this.runtimes.length === 1}\n >\n {/* #runtime environment */}\n {this.runtimes.length > 1 ? (\n <gxg-form-radio-group\n slot=\"header\"\n radiosLabelSize=\"large\"\n ref={(el: HTMLGxgFormRadioGroupElement) =>\n (this.runtimeEnvironmentEl = el as HTMLGxgFormRadioGroupElement)\n }\n row\n center\n onChange={this.runtimeEnvironmentChangedHandler}\n >\n {renderFormItems(\n \"gxg-form-radio\",\n this.runtimes,\n \"runtime-environment\"\n )}\n </gxg-form-radio-group>\n ) : (\n [\n <div class=\"tab__basic__single-runtime\" slot=\"header\">\n <gxg-icon\n color=\"disabled\"\n type={this.evaluateSingleRuntimeIcon()}\n ></gxg-icon>\n <gxg-text textAlign=\"center\">{this.runtimes[0].label}</gxg-text>\n </div>\n ]\n )}\n\n <div class=\"basic-main\">\n {/* #back end*/}\n <gx-ide-container\n container-title={\n this._componentLocale.tabBasic.backEnd.backEndLabel\n }\n class=\"basic-main__back-end\"\n contentBorderEnd\n titleType=\"secondary\"\n >\n {/* #language */}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.tabBasic.backEnd.language}\n value={setInitialComboValue(this.languages)}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.languageEl = el as HTMLGxgComboBoxElement)\n }\n toolTip={config.tooltip}\n onValueChanged={this.languageValueChangedHandler}\n part=\"language\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.languages)}\n </gxg-combo-box>\n\n {/* #data stores*/}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.tabBasic.backEnd.dataStores}\n value={setInitialComboValue(this.dataStores)}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.dataStoreEl = el as HTMLGxgComboBoxElement)\n }\n onValueChanged={this.dataStoreValueChangedHandler}\n toolTip={config.tooltip}\n part=\"data-store\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.dataStores)}\n </gxg-combo-box>\n </gx-ide-container>\n <gx-ide-container\n container-title={\n this._componentLocale.tabBasic.frontEnd.frontEndLabel\n }\n class=\"basic-main__front-end\"\n titleType=\"secondary\"\n >\n {/* #front end */}\n <gxg-form-checkbox-group\n checkboxesLabelSize=\"large\"\n ref={(el: HTMLGxgFormCheckboxGroupElement) =>\n (this.frontEndsEl = el as HTMLGxgFormCheckboxGroupElement)\n }\n onGroupValuesChanged={this.updateSelectedFrontEndsIds}\n >\n {renderFormItems(\"gxg-form-checkbox\", this.frontEnds)}\n </gxg-form-checkbox-group>\n </gx-ide-container>\n </div>\n </gx-ide-container>\n </gxg-tab>\n );\n };\n\n private renderTabAdvanced = (): Element => {\n return (\n <gxg-tab tab=\"advanced\" no-padding>\n <gx-ide-container>\n {/* #advanced tab*/}\n <slot name=\"property-grid\"></slot>\n </gx-ide-container>\n </gxg-tab>\n );\n };\n\n // 10.RENDER() FUNCTION //\n\n render() {\n return (\n <Host class=\"gx-ide-component\">\n <div class=\"gx-ide-main-wrapper\">\n {/* header (environment name)*/}\n <gx-ide-container\n containerTitle={\n this.displayTitle ? this._componentLocale.componentName : null\n }\n noContentPadding\n noBorderFooter\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <header class=\"header\" slot=\"header\">\n {/* #environment name*/}\n <gxg-label labelPosition=\"start\" class=\"header__label\">\n {this._componentLocale.name}\n </gxg-label>\n\n {/* #front end */}\n <gxg-form-text\n label-position=\"start\"\n placeholder=\"New Environment\"\n max-width=\"100%\"\n value={this.environmentName}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.environmentNameEl = el as HTMLGxgFormTextElement)\n }\n onInput={\n !this.envNameModifiedByUser &&\n (this.envNameInputHandler as any)\n }\n toolTip={config.tooltip}\n class=\"header__text\"\n part=\"environment-name\"\n ></gxg-form-text>\n </header>\n\n {/* main */}\n <main class=\"main\">\n <gxg-tabs class=\"gxg-tabs\" noBorder>\n {this.isAdvanced ? (\n <gxg-tab-bar slot=\"tab-bar-container\" displayBorder>\n {/* #basic tab-button*/}\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabBasic.tabLabel}\n tab=\"basic\"\n is-selected\n ></gxg-tab-button>\n\n {/* #advanced tab-button*/}\n {this.isAdvanced ? (\n <gxg-tab-button\n slot=\"tab-bar\"\n tab-label={this._componentLocale.tabAdvanced.tabLabel}\n tab=\"advanced\"\n disabled={this.disableAdvanced}\n ></gxg-tab-button>\n ) : null}\n </gxg-tab-bar>\n ) : null}\n\n {this.renderTabBasic()}\n {this.isAdvanced && this.renderTabAdvanced()}\n </gxg-tabs>\n </main>\n\n {/* #footer */}\n {/* #set as current environment*/}\n <gxg-form-checkbox\n label={this._componentLocale.footer.setAsCurrentEnvironment}\n ref={(el: HTMLGxgFormCheckboxElement) =>\n (this.setAsCurrentEnvironmentEl =\n el as HTMLGxgFormCheckboxElement)\n }\n checked={this.setAsTarget}\n part=\"set-as-current-environment\"\n slot=\"footer-start\"\n ></gxg-form-checkbox>\n\n {/* #cancel*/}\n <gxg-button\n id=\"button-cancel\"\n slot=\"footer-end\"\n type=\"outlined\"\n onClick={this.cancelButtonClickedHandler}\n part=\"gxg-button gxg-button--cancel\"\n >\n {this._componentLocale.footer.btnCancel}\n </gxg-button>\n\n {/* #set new environment */}\n <gxg-button\n id=\"button-create\"\n slot=\"footer-end\"\n type=\"primary-text-only\"\n onClick={this.setEnvironmentHandler}\n part=\"gxg-button gxg-button--create\"\n >\n {this._componentLocale.footer.btnSetNewEnvironment}\n </gxg-button>\n </gx-ide-container>\n </div>\n <gxg-shortcuts\n src={this.shortcutsSrc}\n ref={(el: HTMLGxgShortcutsElement) =>\n (this.gxgShortcutsEl = el as HTMLGxgShortcutsElement)\n }\n ></gxg-shortcuts>\n </Host>\n );\n }\n}\n\nexport interface NewEnvironmentData {\n setAsCurrent: boolean;\n name: string;\n runtime: string;\n language: string;\n dataStores: string;\n frontEnds: string[];\n}\n\nexport type CreateCallback = (\n data: NewEnvironmentData\n) => Promise<FormSubmitResult>;\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type ChangedCallback = (data: NewEnvironmentData) => Promise<void>;\n\nexport type GetDataSourcesCallback = (\n selectedLanguageId: string,\n selectedRuntimeId: string\n) => Promise<GxOption[]>;\n\nexport type GetFrontEndsCallback = (\n selectedLanguageId: string\n) => Promise<GxOption[]>;\n\nexport type GetEnvironmentNameCallback = (\n selectedLanguageId: string,\n selectedDataSourceId: string\n) => Promise<string | undefined>;\n"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|