@genexus/genexus-ide-ui 1.1.36 → 1.1.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +9 -3
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +19 -34
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +59 -17
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +12 -4
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/details-acknowledgements/details-acknowledgements.js +19 -34
- package/dist/collection/components/details-acknowledgements/details-acknowledgements.js.map +1 -1
- package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +3 -1
- package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +3 -1
- package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +3 -1
- package/dist/collection/components/kb-manager-import/helpers.js +6 -3
- package/dist/collection/components/kb-manager-import/helpers.js.map +1 -1
- package/dist/collection/components/kb-manager-import/kb-manager-import.css +5 -0
- package/dist/collection/components/kb-manager-import/kb-manager-import.js +56 -12
- package/dist/collection/components/kb-manager-import/kb-manager-import.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +9 -3
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/team-dev/server-selector/server-selector.js +12 -4
- package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +9 -3
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-details-acknowledgements.js +19 -34
- package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +59 -18
- package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
- package/dist/components/gx-ide-server-selector.js +12 -4
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +9 -3
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js +19 -34
- package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +59 -17
- package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +12 -4
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.en.json +3 -1
- package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +3 -1
- package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.zh.json +3 -1
- package/dist/genexus-ide-ui/{p-56c0c556.entry.js → p-48e87e4f.entry.js} +180 -145
- package/dist/genexus-ide-ui/p-48e87e4f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-bee71b20.entry.js → p-970e89ac.entry.js} +55 -45
- package/dist/genexus-ide-ui/p-970e89ac.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-9ad85231.entry.js → p-b34ecbdc.entry.js} +35 -28
- package/dist/genexus-ide-ui/p-b34ecbdc.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-5e2f9545.entry.js → p-bd0ffc08.entry.js} +56 -72
- package/dist/genexus-ide-ui/p-bd0ffc08.entry.js.map +1 -0
- package/dist/types/components/details-acknowledgements/types.d.ts +1 -1
- package/dist/types/components/kb-manager-import/helpers.d.ts +2 -1
- package/dist/types/components/kb-manager-import/kb-manager-import.d.ts +0 -1
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-56c0c556.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-5e2f9545.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-9ad85231.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-bee71b20.entry.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MAX_CATEGORY_ITEMS_FIRST_RENDER","KB_OBJECT","KB_CATEGORY","STATUS_REGEXP_KEY","convertImportCategoryItemToTreeItem","importCatIcon","importItems","importTreeItems","forEach","importItem","push","id","caption","name","expanded","leaf","startImgSrc","metadata","convertImportCategoryDataToTreeView","importCategoryData","treeData","importCategory","importCategoryTreeItem","items","length","lazy","icon","createImportResultDataMessages","importItemId","messagesArray","status","messages","message","i","JSON","stringify","createImportResultItem","categoryData","importItemResultData","resultItemId","importResultItem","parts","addImportItemResultDataItem","categoryItemMap","objectCategoryItemMap","importTreeActualState","updatedImportTreeModel","objectCategoryId","get","categoryIndex","findIndex","treeItem","category","resultItem","newItemsLength","kbManagerImportCss","CSS_BUNDLES","NOTICE_ICON","getIconPath","colorType","FILE_ICON","GEMINI_TOOLS_SETTINGS","MENU_DELETE","CHECKBOX_ALL_CHECKED_VALUE","CHECKBOX_ALL_UNCHECKED_VALUE","GxIdeKbManagerImport","_GxIdeKbManagerImport_componentLocale","set","this","_GxIdeKbManagerImport_selectedObjectsInFileIds","_GxIdeKbManagerImport_fileInputEl","_GxIdeKbManagerImport_fileInputHiddenEl","_GxIdeKbManagerImport_objectsTreeEl","_GxIdeKbManagerImport_successItemsIds","Set","_GxIdeKbManagerImport_warningItemsIds","_GxIdeKbManagerImport_errorItemsIds","_GxIdeKbManagerImport_categoryItemMap","Map","_GxIdeKbManagerImport_objectCategoryItemMap","_GxIdeKbManagerImport_importedCategoryData","_GxIdeKbManagerImport_cancelImportHandler","cancelCallback","_GxIdeKbManagerImport_clearStatusHandler","importTreeState","statusInfo","error","number","warning","success","_GxIdeKbManagerImport_evaluateImport","noImport","_a","_GxIdeKbManagerImport_evaluateImportStatusMessage","someStatusVisible","display","_GxIdeKbManagerImport_importObjectsHandler","async","__classPrivateFieldGet","call","importingIsInProcess","checkedObjectsIds","model","obj","checked","find","cat","importCallback","then","_GxIdeKbManagerImport_loadFileHandler","file","__classPrivateFieldSet","loadCallback","clear","object","importCategoryTreeData","objectsTreeModel","_GxIdeKbManagerImport_lazyLoadTreeItems","treeItemId","_GxIdeKbManagerImport_objectsTreeCheckedItemsChangedHandler","event","allItems","detail","checkedItemIds","pendingCheckedItemIds","item","pendingCheckedItemId","size","selectAllCheckboxValue","selectAllCheckboxIndeterminate","_GxIdeKbManagerImport_objectsTreeContextMenuHandler","objectContextMenuCallback","selection","clientX","contextmenuEvent","screenX","clientY","screenY","_GxIdeKbManagerImport_objectsTreeSelectedItemsChangedHandler","map","_GxIdeKbManagerImport_optionsHandler","optionsCallback","_GxIdeKbManagerImport_removeFileSelection","selectedFile","value","_GxIdeKbManagerImport_selectFileInputHandler","click","_GxIdeKbManagerImport_selectFileInputChangedHandler","target","files","_GxIdeKbManagerImport_statusButtonsSelectionChangedHandler","activeStates","statuses","errorIndex","state","itemId","warningIndex","successIndex","pattern","statusOptions","join","importedTreeFilterRegExp","RegExp","_GxIdeKbManagerImport_toggleSelectionClickHandler","updateAllItemsProperties","_GxIdeKbManagerImport_updateStatusItemsState","child","add","importTreeStateChanged","watchImportTreeStateHandler","importStatusMessage","main","importStatus","noImportedFiles","importedButHidden","watchObjectsTreeModelHandler","newState","noObjects","selectedFileChanged","newFile","componentDidLoad","focus","componentDidRender","componentWillLoad","Locale","getComponentStrings","el","componentDidLoadEvent","emit","addResultItem","render","h","Host","class","slot","htmlFor","header","fileNameLabel","autoFocus","part","type","readonly","placeholder","fileNamePlaceholder","ref","hidden","accept","onChange","removeFileSelection","title","onClick","src","disabled","selectFileButton","objectsInFile","showLines","dragDisabled","dropDisabled","toggleCheckboxes","checkbox","lazyLoadTreeItemsCallback","onCheckedItemsChange","onSelectedItemsChange","onItemContextmenu","isAnimated","stateTitle","key","selectFile","checkedValue","unCheckedValue","selectUnselect","onInput","_b","importButton","cancelButton","filter","filterType","filterOptions","autoExpand","hideMatchesAndShowNonMatches","stateIconSrc","clearButton","errors","warnings","successes","hideMessage","compact","minimal","statusMinimal","onSelectionChanged"],"sources":["src/components/kb-manager-import/helpers.ts","src/components/kb-manager-import/kb-manager-import.scss?tag=gx-ide-kb-manager-import&encapsulation=shadow","src/components/kb-manager-import/kb-manager-import.tsx"],"sourcesContent":["/* Tree View */\nimport {\n TreeViewItemModel,\n TreeViewModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* Kb Manager Import Types*/\nimport {\n ImportItemData,\n CategoryItemMap,\n CategoryItemMapValue,\n ObjectCategoryItemMap,\n Status\n} from \"./kb-manager-import\";\nimport { ImportCategoryData, ImportItemResultData } from \"../../common/types\";\n\nconst MAX_CATEGORY_ITEMS_FIRST_RENDER = 30;\n\n/* objects in file metadata*/\nexport const KB_OBJECT = \"object\";\nexport const KB_CATEGORY = \"category\";\n\nexport const STATUS_REGEXP_KEY = \"status\";\n\n// - - - - - - - - - - - - - - - - -\n// Objects In File Tree Model\n// - - - - - - - - - - - - - - - - -\n\nexport const convertImportCategoryItemToTreeItem = (\n importCatIcon: string,\n importItems: ImportItemData[]\n) => {\n const importTreeItems: TreeViewItemModel[] = [];\n importItems.forEach(importItem => {\n importTreeItems.push({\n id: importItem.id,\n caption: importItem.name,\n expanded: true,\n leaf: true,\n startImgSrc: importCatIcon,\n metadata: KB_OBJECT\n });\n });\n return importTreeItems;\n};\n\nexport const convertImportCategoryDataToTreeView = (\n importCategoryData: ImportCategoryData[]\n): TreeViewModel => {\n const treeData: TreeViewModel = [];\n if (!importCategoryData) {\n return treeData;\n }\n importCategoryData.forEach(importCategory => {\n const importCategoryTreeItem: TreeViewItemModel = {\n id: importCategory.id,\n caption: `${importCategory.name} (${importCategory.items.length})`,\n expanded: importCategory.items.length <= MAX_CATEGORY_ITEMS_FIRST_RENDER,\n lazy: importCategory.items.length > MAX_CATEGORY_ITEMS_FIRST_RENDER,\n leaf: false,\n startImgSrc: importCategory.icon,\n metadata: KB_CATEGORY,\n items: importCategory.items.length <= MAX_CATEGORY_ITEMS_FIRST_RENDER ? \n convertImportCategoryItemToTreeItem(\n importCategory.icon,\n importCategory.items\n ) : []\n };\n treeData.push(importCategoryTreeItem);\n });\n return treeData;\n};\n\n// - - - - - - - - - - - - - - - - -\n// Import Status Tree Model\n// - - - - - - - - - - - - - - - - -\n\nconst createImportResultDataMessages = (\n importItemId: string,\n messagesArray: string[],\n status: Status\n): TreeViewItemModel[] => {\n const messages: TreeViewItemModel[] = [];\n messagesArray.forEach((message, i) => {\n messages.push({\n id: `${importItemId}-message-${i}`,\n caption: message,\n startImgSrc: \"gemini-tools/list-view/on-surface\",\n leaf: true,\n metadata: JSON.stringify({\n [STATUS_REGEXP_KEY]: status\n })\n });\n });\n return messages;\n};\n\nconst createImportResultItem = (\n categoryData: CategoryItemMapValue,\n importItemResultData: ImportItemResultData\n): TreeViewItemModel => {\n const resultItemId = `${importItemResultData.id}-${importItemResultData.name}`;\n const importResultItem: TreeViewItemModel = {\n id: resultItemId,\n startImgSrc: categoryData.icon,\n caption: importItemResultData.name,\n parts: `tree-view-item tree-view-item--status tree-view-item--${importItemResultData.status}`,\n expanded: true,\n leaf: importItemResultData.messages.length === 0,\n metadata: JSON.stringify({\n [STATUS_REGEXP_KEY]: importItemResultData.status\n }),\n items: createImportResultDataMessages(\n resultItemId,\n importItemResultData.messages,\n importItemResultData.status\n )\n };\n return importResultItem;\n};\n\n// This functions updates the \"Import Status\" model, by adding a new result item.\nexport const addImportItemResultDataItem = (\n importItemResultData: ImportItemResultData,\n categoryItemMap: CategoryItemMap,\n objectCategoryItemMap: ObjectCategoryItemMap,\n importTreeActualState: TreeViewItemModel[]\n) => {\n const updatedImportTreeModel: TreeViewModel = [...importTreeActualState];\n\n // Use the resultItem.id to find the corresponding category in the categoryMap\n const objectCategoryId = objectCategoryItemMap.get(importItemResultData.id);\n const categoryData = categoryItemMap.get(objectCategoryId);\n\n const categoryIndex: number = updatedImportTreeModel.findIndex(\n treeItem => treeItem.id === objectCategoryId\n );\n\n if (categoryIndex === -1) {\n // category does not exists yet.\n const category: TreeViewItemModel = {\n id: objectCategoryId,\n caption: `${categoryData.name} (1)`,\n startImgSrc: `${categoryData.icon}`,\n expanded: true,\n items: [createImportResultItem(categoryData, importItemResultData)]\n };\n\n updatedImportTreeModel.push(category);\n return updatedImportTreeModel;\n }\n\n // else category already exists. Just insert the result item in the category.\n const resultItem: TreeViewItemModel = createImportResultItem(\n categoryData,\n importItemResultData\n );\n updatedImportTreeModel[categoryIndex].items = [\n ...updatedImportTreeModel[categoryIndex].items,\n resultItem\n ];\n\n // update category caption length\n const newItemsLength = updatedImportTreeModel[categoryIndex].items.length;\n updatedImportTreeModel[\n categoryIndex\n ].caption = `${categoryData.name} (${newItemsLength})`;\n\n return updatedImportTreeModel;\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template:\n \"header header\" max-content\n \"objects-in-file import-status\" 1fr\n \"footer footer\" max-content;\n grid-template-columns: 1fr 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n grid-template-columns: 1fr max-content;\n grid-area: header;\n}\n\n// objects in file\n.objects-in-file__section {\n grid-area: objects-in-file;\n}\n.objects-in-file__main {\n border-inline-end: var(--section-common-border);\n grid-template-rows: 1fr max-content;\n}\n.objects-in-file__footer {\n display: grid;\n}\n\n// import status\n.import-status__section {\n grid-area: import-status;\n}\n.import-status__main {\n grid-template-rows: 1fr max-content;\n}\n.import-status__footer {\n display: flex;\n}\n.import-clear-status-btn {\n margin-inline-start: auto;\n}\n\n// objects in file & import status\n.objects-in-file__section,\n.import-status__section {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__objects-in-file,\n.control-header__import-status {\n padding-block-start: var(--mer-spacing--md);\n}\n.objects-in-file__main,\n.import-status__main {\n grid-auto-rows: max-content;\n padding-block: var(--content-block-spacing);\n overflow: auto;\n}\n\n// footer\n.footer {\n display: flex;\n grid-area: footer;\n border-block-start: var(--section-common-border);\n}\n\n// WA / TODO: Add a helper class in Mercury to justify text.\n.text-align-center {\n text-align: center; // should be resolved on mercury\n}\n\n.tree-view::part(item__action tree-view-item--status) {\n grid-template: \"first-img left-img text right-img\" / max-content max-content 1fr max-content;\n &::before {\n grid-area: first-img;\n content: \"\";\n width: var(--mer-spacing--xs);\n height: var(--mer-spacing--xs);\n border-radius: 50%;\n background-color: var(--gray-03);\n margin-inline-end: var(--mer-spacing--xxs);\n }\n}\n\n.tree-view::part(item__action tree-view-item--success) {\n @include tree-item-status(\"success\");\n}\n.tree-view::part(item__action tree-view-item--warning) {\n @include tree-item-status(\"warning\");\n}\n.tree-view::part(item__action tree-view-item--error) {\n @include tree-item-status(\"error\");\n}\n\n// WA: prevent crashes when the items collection contains too many elements\n.tree-view-import::part(item) {\n content-visibility: auto;\n contain-intrinsic-size: auto 22px;\n // TODO: Check if 22px can be calculated. Not \"secure\" since font-size\n // (body-regular-s) defines the total height. If the typographic style\n // changes, this calculation will break. Ideally, tree item font-size\n // should use a variable like \"--tree-item-font-size\".\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n h,\n Method,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n // ChEditCustomEvent,\n TreeViewItemContextMenu\n} from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { TreeViewItemModelExtended } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nimport {\n ImportCategoryData,\n ImportItemResultData,\n ContextMenuInfo\n} from \"../../common/types\";\nimport {\n convertImportCategoryDataToTreeView,\n addImportItemResultDataItem,\n convertImportCategoryItemToTreeItem\n} from \"./helpers\";\nimport { CheckedItemsInfo } from \"../_helpers/list-selector/list-selector\";\n\nimport { KB_OBJECT, STATUS_REGEXP_KEY } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-elevation\"\n});\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst GEMINI_TOOLS_SETTINGS = getIconPath({\n category: \"gemini-tools\",\n name: \"settings\",\n colorType: \"primary\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-kb-manager-import\",\n styleUrl: \"kb-manager-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/kb-manager-import\"]\n})\nexport class GxIdeKbManagerImport {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #selectedObjectsInFileIds: string[] = [];\n\n @Element() el: HTMLGxIdeKbManagerImportElement;\n\n #fileInputEl!: HTMLChEditElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n #successItemsIds: Set<string> = new Set();\n #warningItemsIds: Set<string> = new Set();\n #errorItemsIds: Set<string> = new Set();\n // #categoryItemMap maps a category id, with the name and icon.\n // required for the \"import status\" tree.\n #categoryItemMap: CategoryItemMap = new Map();\n #objectCategoryItemMap: ObjectCategoryItemMap = new Map();\n #importedCategoryData: ImportCategoryData[];\n\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n @State() importStatusMessage: string;\n @State() importTreeState: TreeViewItemModel[] = [];\n @State() importedTreeFilterRegExp: RegExp;\n @Watch(\"importTreeState\")\n importTreeStateChanged() {\n // this.#filterImportedHandler();\n }\n @State() importingIsInProcess = false;\n @State() importTreeFilterList: string[] = [];\n @State() noImport: boolean;\n @State() noObjects: boolean = true;\n @State() objectsTreeModel: TreeViewItemModel[] = [];\n @State() showHiddenImportsMessage = false;\n @State() someStatusVisible: boolean;\n @State() statusInfo: StatusInfo = {\n error: {\n display: true,\n number: 0\n },\n warning: {\n display: true,\n number: 0\n },\n success: {\n display: true,\n number: 0\n }\n };\n\n @Watch(\"importTreeState\")\n watchImportTreeStateHandler() {\n this.#evaluateImport();\n if (this.noImport) {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n } else {\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.importedButHidden;\n }\n }\n @Watch(\"objectsTreeModel\")\n watchObjectsTreeModelHandler(newState: TreeViewItemModel[]) {\n this.noObjects = !newState || newState.length === 0;\n }\n\n /**\n * Callback invoked when user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n * Callback invoked when user wants to initiate the import process.\n */\n @Prop() readonly importCallback!: ImportCallback;\n\n /**\n * Callback invoked when user wants to load the xpz information\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Displays status buttons (errors, warning, succeeded) with minimal UI (no captions)\n */\n @Prop() readonly objectContextMenuCallback!: ObjectContextMenuCallback;\n\n /**\n * Callback invoked when user wants to access the export options.\n */\n @Prop() readonly optionsCallback!: OptionsCallback;\n\n /**\n * Imported xml or xps file name\n */\n @Prop({ mutable: true }) selectedFile: File;\n @Watch(\"selectedFile\")\n selectedFileChanged(newFile: File) {\n if (newFile) {\n this.#loadFileHandler(newFile);\n }\n }\n\n /**\n * Displays status buttons (error, warning, success) with minimal UI (no captions).\n */\n @Prop() readonly statusMinimal = false;\n\n /**\n * Emitted once just after the component is fully loaded.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n componentDidLoad() {\n this.#fileInputEl.focus();\n }\n\n componentDidRender() {}\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n // this.#evaluateObjects();\n this.#evaluateImport();\n this.importStatusMessage =\n this.#componentLocale.main.importStatus.noImportedFiles;\n this.#evaluateImportStatusMessage();\n }\n\n /**\n * Add the result of importing an item\n */\n @Method()\n async addResultItem(item: ImportItemResultData) {\n this.importTreeState = addImportItemResultDataItem(\n item,\n this.#categoryItemMap,\n this.#objectCategoryItemMap,\n this.importTreeState\n );\n this.statusInfo[item.status].number++;\n this.#updateStatusItemsState();\n }\n\n #cancelImportHandler = () => {\n this.cancelCallback();\n };\n\n #clearStatusHandler = () => {\n this.importTreeState = [];\n this.statusInfo.error.number = 0;\n this.statusInfo.warning.number = 0;\n this.statusInfo.success.number = 0;\n };\n\n #evaluateImport = () => {\n this.noImport = !!(\n this.importTreeState?.length === 0 || !this.importTreeState\n );\n };\n\n #evaluateImportStatusMessage = () => {\n this.someStatusVisible =\n this.statusInfo.error.display ||\n this.statusInfo.warning.display ||\n this.statusInfo.success.display;\n };\n\n #importObjectsHandler = async () => {\n /* first clear imported objects (this clears errors/warnings/success counts as well)*/\n this.#clearStatusHandler();\n /* then do the import*/\n this.importingIsInProcess = true;\n\n /*\n Process checked objects manually, considering lazy loading. \n Example: \n 1. The \"Attributes\" category is lazy-loaded and marked as checked. \n 2. The user runs the import without expanding the node. \n 3. No attribute objects appear as checked, since lazy load was not triggered. \n 4. Still, all attribute objects must be included, because the category itself is checked. \n\n This avoids forcing users to expand nodes just to select objects. \n Large categories are not expanded by default to improve performance, which is crucial \n for very large imports (1000+ objects). \n */\n const checkedObjectsIds:string[] = [];\n for(let category of this.#objectsTreeEl.model) {\n if (category.items?.length > 0) {\n for(let obj of category.items) {\n if (obj.checked)\n checkedObjectsIds.push(obj.id);\n }\n }\n else if (category.lazy && category.checked) {\n const categoryData = this.#importedCategoryData.find(cat => cat.id == category.id);\n for(let obj of categoryData.items) {\n checkedObjectsIds.push(obj.id);\n }\n }\n }\n this.importCallback(checkedObjectsIds).then(() => {\n this.importingIsInProcess = false;\n });\n };\n\n #loadFileHandler = async (file: File) => {\n this.#importedCategoryData = await this.loadCallback(file);\n this.#categoryItemMap.clear();\n this.#objectCategoryItemMap.clear();\n\n this.#importedCategoryData.forEach(category => {\n this.#categoryItemMap.set(category.id, {\n name: category.name,\n icon: category.icon\n });\n category.items.forEach(object => {\n this.#objectCategoryItemMap.set(object.id, category.id);\n });\n });\n\n const importCategoryTreeData =\n convertImportCategoryDataToTreeView(this.#importedCategoryData);\n this.objectsTreeModel = importCategoryTreeData;\n };\n\n #lazyLoadTreeItems = async (treeItemId: string) => {\n const category = this.#importedCategoryData.find(cat => cat.id === treeItemId);\n return category && category.items.length > 0 ? \n convertImportCategoryItemToTreeItem(category.icon, category.items) : \n [];\n }\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const allItems = event.detail;\n const checkedItemIds: string[] = [];\n const pendingCheckedItemIds: string[] = [];\n const checkedObjectsIds: string[] = [];\n allItems.forEach(item => {\n if (item.item.checked) {\n checkedItemIds.push(item.item.id);\n if (item.item.lazy && !item.item.items)\n pendingCheckedItemIds.push(item.item.id);\n }\n if (item.item.checked && item.item.metadata === KB_OBJECT) {\n checkedObjectsIds.push(item.item.id);\n }\n });\n\n for(let pendingCheckedItemId of pendingCheckedItemIds) {\n const category = this.#importedCategoryData.find(cat => cat.id === pendingCheckedItemId);\n if (category) {\n for(let item of category.items) {\n if (checkedObjectsIds.indexOf(item.id) < 0)\n checkedObjectsIds.push(item.id);\n }\n }\n }\n\n // Evaluate \"Select All / Unselect All\" checkbox state\n if (allItems.size === checkedItemIds.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItemIds.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #objectsTreeContextMenuHandler = (\n event: CustomEvent<TreeViewItemContextMenu>\n ) => {\n if (event.detail.metadata === KB_OBJECT) {\n this.objectContextMenuCallback(\"imported\", {\n selection: this.#selectedObjectsInFileIds,\n clientX: event.detail.contextmenuEvent.screenX,\n clientY: event.detail.contextmenuEvent.screenY\n });\n }\n };\n\n #objectsTreeSelectedItemsChangedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.#selectedObjectsInFileIds = event.detail.map(item => item.item.id);\n };\n\n #optionsHandler = () => {\n if (this.optionsCallback) {\n this.optionsCallback();\n // returns boolean\n }\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n }\n };\n\n #statusButtonsSelectionChangedHandler = (\n event: CustomEvent<CheckedItemsInfo>\n ) => {\n const activeStates = event.detail;\n const statuses: Status[] = [];\n\n const errorIndex = activeStates.findIndex(\n state => state.itemId === \"errors\"\n );\n const warningIndex = activeStates.findIndex(\n state => state.itemId === \"warnings\"\n );\n const successIndex = activeStates.findIndex(\n state => state.itemId === \"successes\"\n );\n\n if (errorIndex !== -1) {\n statuses.push(\"error\");\n }\n if (warningIndex !== -1) {\n statuses.push(\"warning\");\n }\n if (successIndex !== -1) {\n statuses.push(\"success\");\n }\n\n let pattern = `\"${STATUS_REGEXP_KEY}\":\"\"`;\n if (statuses.length) {\n const statusOptions = statuses.join(\"|\");\n pattern = `\"${STATUS_REGEXP_KEY}\":\"(${statusOptions})\"`;\n }\n this.importedTreeFilterRegExp = new RegExp(pattern, \"i\");\n\n // Update statusInfo for the status-buttons\n this.statusInfo = {\n error: {\n display: errorIndex !== -1,\n number: this.statusInfo.error.number\n },\n warning: {\n display: warningIndex !== -1,\n number: this.statusInfo.warning.number\n },\n success: {\n display: successIndex !== -1,\n number: this.statusInfo.success.number\n }\n };\n\n this.#evaluateImportStatusMessage();\n };\n\n #toggleSelectionClickHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n if (this.#objectsTreeEl) {\n const checked = event.detail === CHECKBOX_ALL_CHECKED_VALUE;\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n }\n };\n\n #updateStatusItemsState = () => {\n this.#errorItemsIds.clear();\n this.#warningItemsIds.clear();\n this.#successItemsIds.clear();\n this.importTreeState.forEach(item => {\n const items = item.items;\n items.forEach(child => {\n if (child.metadata === \"error\") {\n this.#errorItemsIds.add(child.id);\n }\n if (child.metadata === \"warning\") {\n this.#warningItemsIds.add(child.id);\n }\n if (child.metadata === \"success\") {\n this.#successItemsIds.add(child.id);\n }\n });\n });\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header\n // header\n class=\"field-group control-header-with-border header header-two-cols spacing-body-block-start spacing-body-inline\"\n slot=\"header\"\n >\n <div\n // select a file\n class=\"field field-inline\"\n >\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#componentLocale.header.fileNameLabel}\n </label>\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={this.#componentLocale.header.fileNamePlaceholder}\n startImgSrc={FILE_ICON}\n ref={(el: HTMLChEditElement) =>\n (this.#fileInputEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".xpz, .xml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n\n <div class=\"buttons-spacer\">\n <button\n // remove file selection\n aria-label={this.#componentLocale.header.removeFileSelection}\n title={this.#componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n\n <button\n // select file\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#componentLocale.header.selectFileButton}\n </button>\n </div>\n </header>\n\n <section\n // objects in file\n class=\"objects-in-file__section\"\n >\n <h2 class=\"control-header control-header-with-border control-header__objects-in-file subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.objectsInFile.title}\n </h2>\n\n <div class=\"field-group objects-in-file__main\">\n {!this.noObjects ? (\n <ch-tree-view-render\n // objects in file tree\n showLines=\"last\"\n class=\"tree-view tree-view-import\"\n model={this.objectsTreeModel}\n dragDisabled={true}\n dropDisabled={true}\n toggleCheckboxes={true}\n checkbox={true}\n checked={true}\n lazyLoadTreeItemsCallback={this.#lazyLoadTreeItems}\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={\n this.#objectsTreeSelectedItemsChangedHandler\n }\n onItemContextmenu={this.#objectsTreeContextMenuHandler}\n ref={(el: HTMLChTreeViewRenderElement) =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateTitle={\n this.#componentLocale.main.objectsInFile.noObjects\n }\n key=\"no-objects-empty-state\"\n >\n <button\n // begin by selecting a file\n class=\"button-secondary\"\n onClick={this.#selectFileInputHandler}\n >\n {this.#componentLocale.main.objectsInFile.selectFile}\n </button>\n </gx-ide-empty-state>\n )}\n\n <footer class=\"field-group objects-in-file__footer spacing-body-inline\">\n <ch-checkbox\n // select all / unselect all checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox create-data-in-kb\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={\n this.#componentLocale.main.objectsInFile.selectUnselect\n }\n value={this.selectAllCheckboxValue}\n onInput={this.#toggleSelectionClickHandler}\n disabled={\n this.importingIsInProcess ||\n this.objectsTreeModel.length === 0\n }\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n\n <div class=\"buttons-spacer\">\n <button\n // import objects button\n id=\"import-btn\"\n class=\"button-primary \"\n onClick={this.#importObjectsHandler}\n disabled={\n this.objectsTreeModel?.length === 0 ||\n this.importingIsInProcess\n }\n >\n {this.#componentLocale.main.objectsInFile.importButton}\n </button>\n\n <button\n // cancel-import button\n id=\"cancel-import-btn\"\n class=\"button-secondary \"\n onClick={this.#cancelImportHandler}\n disabled={!this.importingIsInProcess}\n part=\"cancel-import-button\"\n >\n {this.#componentLocale.main.objectsInFile.cancelButton}\n </button>\n\n <button\n // settings/options button\n id=\"select-kb-btn\"\n class=\"button-tertiary button-icon-only\"\n part=\"select-kb-btn\"\n onClick={this.#optionsHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SETTINGS}\n ></ch-image>\n </button>\n </div>\n </footer>\n </div>\n </section>\n\n <section\n // import status\n class=\"import-status__section\"\n >\n <h2 class=\"control-header control-header-with-border control-header__import-status subtitle-regular-xs\t text-align-center spacing-body-inline\">\n {this.#componentLocale.main.importStatus.title}\n </h2>\n\n <div class=\"field-group import-status__main\">\n {!this.noImport && this.someStatusVisible ? (\n <ch-tree-view-render\n // import status tree\n model={this.importTreeState}\n toggleCheckboxes={true}\n showLines=\"last\"\n class=\"tree-view tree-view-import\"\n filter={this.importedTreeFilterRegExp}\n filterType=\"metadata\"\n filterOptions={{\n autoExpand: true,\n hideMatchesAndShowNonMatches: false\n }}\n ></ch-tree-view-render>\n ) : (\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.importStatusMessage}\n key=\"no-objects-empty-state\"\n ></gx-ide-empty-state>\n )}\n\n <footer class=\"import-status__footer spacing-body-inline\">\n <button\n // clear status button\n class=\"button-secondary import-clear-status-btn\"\n onClick={this.#clearStatusHandler}\n disabled={this.noImport || this.importingIsInProcess}\n part=\"clear-status-btn\"\n >\n {this.#componentLocale.main.importStatus.clearButton}\n </button>\n </footer>\n </div>\n </section>\n\n <footer\n // footer\n class=\"footer\"\n >\n <gx-ide-status-buttons\n errors={this.statusInfo.error.number}\n warnings={this.statusInfo.warning.number}\n successes={this.statusInfo.success.number}\n hideMessage\n compact\n minimal={this.statusMinimal}\n onSelectionChanged={this.#statusButtonsSelectionChangedHandler}\n ></gx-ide-status-buttons>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type CancelCallback = () => Promise<boolean>;\n\nexport type ImportCallback = (itemIds: string[]) => Promise<boolean>;\n\nexport type ImportItemData = {\n id: string;\n name: string;\n};\n\nexport type LoadCallback = (file: File) => Promise<ImportCategoryData[]>;\n\nexport type ObjectContextMenuCallback = (\n tree: ObjectsSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type ObjectsSourceType = \"in-file\" | \"imported\";\n\nexport type OptionsCallback = () => Promise<void>;\n\nexport interface SelectedObject {\n itemId: string;\n subItemsIds: string[];\n}\n\nexport type StatusItemsState = {\n error: string[];\n warning: string[];\n success: string[];\n};\n\ntype StatusInfo = {\n error: {\n display: boolean;\n number: number;\n };\n warning: {\n display: boolean;\n number: number;\n };\n success: {\n display: boolean;\n number: number;\n };\n};\n\nexport type CategoryItemMap = Map<string, CategoryItemMapValue>;\nexport type CategoryItemMapValue = { name: string; icon: string };\nexport type ObjectCategoryItemMap = Map<string, string>;\nexport type Status = \"success\" | \"error\" | \"warning\";\n"],"mappings":";;;;;;AAgBA,MAAMA,IAAkC;;6BAGjC,OAAMC,IAAY;;AAClB,MAAMC,IAAc;;AAEpB,MAAMC,IAAoB;;;;oCAM1B;MAAMC,sCAAsC,CACjDC,GACAC;EAEA,MAAMC,IAAuC;EAC7CD,EAAYE,SAAQC;IAClBF,EAAgBG,KAAK;MACnBC,IAAIF,EAAWE;MACfC,SAASH,EAAWI;MACpBC,UAAU;MACVC,MAAM;MACNC,aAAaX;MACbY,UAAUhB;;AACV;EAEJ,OAAOM;AAAe;;AAGjB,MAAMW,sCACXC;EAEA,MAAMC,IAA0B;EAChC,KAAKD,GAAoB;IACvB,OAAOC;;EAETD,EAAmBX,SAAQa;IACzB,MAAMC,IAA4C;MAChDX,IAAIU,EAAeV;MACnBC,SAAS,GAAGS,EAAeR,SAASQ,EAAeE,MAAMC;MACzDV,UAAUO,EAAeE,MAAMC,UAAUxB;MACzCyB,MAAMJ,EAAeE,MAAMC,SAASxB;MACpCe,MAAM;MACNC,aAAaK,EAAeK;MAC5BT,UAAUf;MACVqB,OAAOF,EAAeE,MAAMC,UAAUxB,IACpCI,oCACEiB,EAAeK,MACfL,EAAeE,SACb;;IAERH,EAASV,KAAKY;AAAuB;EAEvC,OAAOF;AAAQ;;;;oCAOjB;MAAMO,iCAAiC,CACrCC,GACAC,GACAC;EAEA,MAAMC,IAAgC;EACtCF,EAAcrB,SAAQ,CAACwB,GAASC;IAC9BF,EAASrB,KAAK;MACZC,IAAI,GAAGiB,aAAwBK;MAC/BrB,SAASoB;MACThB,aAAa;MACbD,MAAM;MACNE,UAAUiB,KAAKC,UAAU;QACvBhC,CAACA,IAAoB2B;;;AAEvB;EAEJ,OAAOC;AAAQ;;AAGjB,MAAMK,yBAAyB,CAC7BC,GACAC;EAEA,MAAMC,IAAe,GAAGD,EAAqB3B,MAAM2B,EAAqBzB;EACxE,MAAM2B,IAAsC;IAC1C7B,IAAI4B;IACJvB,aAAaqB,EAAaX;IAC1Bd,SAAS0B,EAAqBzB;IAC9B4B,OAAO,yDAAyDH,EAAqBR;IACrFhB,UAAU;IACVC,MAAMuB,EAAqBP,SAASP,WAAW;IAC/CP,UAAUiB,KAAKC,UAAU;MACvBhC,CAACA,IAAoBmC,EAAqBR;;IAE5CP,OAAOI,+BACLY,GACAD,EAAqBP,UACrBO,EAAqBR;;EAGzB,OAAOU;AAAgB;;iFAIlB;MAAME,8BAA8B,CACzCJ,GACAK,GACAC,GACAC;EAEA,MAAMC,IAAwC,KAAID;;IAGlD,MAAME,IAAmBH,EAAsBI,IAAIV,EAAqB3B;EACxE,MAAM0B,IAAeM,EAAgBK,IAAID;EAEzC,MAAME,IAAwBH,EAAuBI,WACnDC,KAAYA,EAASxC,OAAOoC;EAG9B,IAAIE,OAAmB,GAAG;;IAExB,MAAMG,IAA8B;MAClCzC,IAAIoC;MACJnC,SAAS,GAAGyB,EAAaxB;MACzBG,aAAa,GAAGqB,EAAaX;MAC7BZ,UAAU;MACVS,OAAO,EAACa,uBAAuBC,GAAcC;;IAG/CQ,EAAuBpC,KAAK0C;IAC5B,OAAON;;;IAIT,MAAMO,IAAgCjB,uBACpCC,GACAC;EAEFQ,EAAuBG,GAAe1B,QAAQ,KACzCuB,EAAuBG,GAAe1B,OACzC8B;;IAIF,MAAMC,IAAiBR,EAAuBG,GAAe1B,MAAMC;EACnEsB,EACEG,GACArC,UAAU,GAAGyB,EAAaxB,SAASyC;EAErC,OAAOR;AAAsB;;ACxK/B,MAAMS,IAAqB;;;;;;;;;;;;;;;;;ACsC3B,MAAMC,IAA8B,EAClC,qBACA,qBACA,uBACA,mBACA,mBACA,wBACA,cACA,gBACA,oBACA;;AAGF,MAAMC,IAAcC,EAAY;EAC9BN,UAAU;EACVvC,MAAM;EACN8C,WAAW;;;AAGb,MAAMC,IAAYF,EAAY;EAC5BN,UAAU;EACVvC,MAAM;EACN8C,WAAW;;;AAGb,MAAME,IAAwBH,EAAY;EACxCN,UAAU;EACVvC,MAAM;EACN8C,WAAW;;;AAGb,MAAMG,IAAcJ,EAAY;EAC9BN,UAAU;EACVvC,MAAM;EACN8C,WAAW;;;AAGb,MAAMI,IAA6B;;AACnC,MAAMC,IAA+B;;MAQxBC,IAAoB;;;;;;;;;QAK/BC,EAAAC,IAAAC,WAAA;IAEAC,EAAAF,IAAAC,MAAsC;IAItCE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,WAAA;IACAI,EAAAL,IAAAC,WAAA;IACAK,EAAAN,IAAAC,MAAgC,IAAIM;IACpCC,EAAAR,IAAAC,MAAgC,IAAIM;IACpCE,EAAAT,IAAAC,MAA8B,IAAIM;;;QAGlCG,EAAAV,IAAAC,MAAoC,IAAIU;IACxCC,EAAAZ,IAAAC,MAAgD,IAAIU;IACpDE,EAAAb,IAAAC,WAAA;IAmIAa,EAAAd,IAAAC,OAAuB;MACrBA,KAAKc;AAAgB;IAGvBC,EAAAhB,IAAAC,OAAsB;MACpBA,KAAKgB,kBAAkB;MACvBhB,KAAKiB,WAAWC,MAAMC,SAAS;MAC/BnB,KAAKiB,WAAWG,QAAQD,SAAS;MACjCnB,KAAKiB,WAAWI,QAAQF,SAAS;AAAC;IAGpCG,EAAAvB,IAAAC,OAAkB;;MAChBA,KAAKuB,gBACHC,IAAAxB,KAAKgB,qBAAe,QAAAQ,WAAA,aAAAA,EAAEpE,YAAW,MAAM4C,KAAKgB;AAC7C;IAGHS,EAAA1B,IAAAC,OAA+B;MAC7BA,KAAK0B,oBACH1B,KAAKiB,WAAWC,MAAMS,WACtB3B,KAAKiB,WAAWG,QAAQO,WACxB3B,KAAKiB,WAAWI,QAAQM;AAAO;IAGnCC,EAAA7B,IAAAC,OAAwB6B;;kGAEtBC,EAAA9B,MAAIe,GAAA,KAAoBgB,KAAxB/B;mCAEAA,KAAKgC,uBAAuB;;;;;;;;;;;;oBAc5B,MAAMC,IAA6B;MACnC,KAAI,IAAIjD,KAAY8C,EAAA9B,MAAII,GAAA,KAAgB8B,OAAO;QAC7C,MAAIV,IAAAxC,EAAS7B,WAAK,QAAAqE,WAAA,aAAAA,EAAEpE,UAAS,GAAG;UAC9B,KAAI,IAAI+E,KAAOnD,EAAS7B,OAAO;YAC7B,IAAIgF,EAAIC,SACNH,EAAkB3F,KAAK6F,EAAI5F;;eAG5B,IAAIyC,EAAS3B,QAAQ2B,EAASoD,SAAS;UAC1C,MAAMnE,IAAe6D,EAAA9B,MAAIY,GAAA,KAAuByB,MAAKC,KAAOA,EAAI/F,MAAMyC,EAASzC;UAC/E,KAAI,IAAI4F,KAAOlE,EAAad,OAAO;YACjC8E,EAAkB3F,KAAK6F,EAAI5F;;;;MAIjCyD,KAAKuC,eAAeN,GAAmBO,MAAK;QAC1CxC,KAAKgC,uBAAuB;AAAK;AACjC;IAGJS,EAAA1C,IAAAC,OAAmB6B,MAAOa;MACxBC,EAAA3C,MAAIY,SAA+BZ,KAAK4C,aAAaF,IAAK;MAC1DZ,EAAA9B,MAAIS,GAAA,KAAkBoC;MACtBf,EAAA9B,MAAIW,GAAA,KAAwBkC;MAE5Bf,EAAA9B,MAAIY,GAAA,KAAuBxE,SAAQ4C;QACjC8C,EAAA9B,MAAIS,GAAA,KAAkBV,IAAIf,EAASzC,IAAI;UACrCE,MAAMuC,EAASvC;UACfa,MAAM0B,EAAS1B;;QAEjB0B,EAAS7B,MAAMf,SAAQ0G;UACrBhB,EAAA9B,MAAIW,GAAA,KAAwBZ,IAAI+C,EAAOvG,IAAIyC,EAASzC;AAAG;AACvD;MAGJ,MAAMwG,IACJjG,oCAAoCgF,EAAA9B,MAAIY,GAAA;MAC1CZ,KAAKgD,mBAAmBD;AAAsB;IAGhDE,EAAAlD,IAAAC,OAAqB6B,MAAOqB;MAC1B,MAAMlE,IAAW8C,EAAA9B,MAAIY,GAAA,KAAuByB,MAAKC,KAAOA,EAAI/F,OAAO2G;MACnE,OAAOlE,KAAYA,EAAS7B,MAAMC,SAAS,IACzCpB,oCAAoCgD,EAAS1B,MAAM0B,EAAS7B,SAC5D;AAAE;IAGNgG,EAAApD,IAAAC,OACEoD;MAEA,MAAMC,IAAWD,EAAME;MACvB,MAAMC,IAA2B;MACjC,MAAMC,IAAkC;MAExCH,EAASjH,SAAQqH;QACf,IAAIA,EAAKA,KAAKrB,SAAS;UACrBmB,EAAejH,KAAKmH,EAAKA,KAAKlH;UAC9B,IAAIkH,EAAKA,KAAKpG,SAASoG,EAAKA,KAAKtG,OAC/BqG,EAAsBlH,KAAKmH,EAAKA,KAAKlH;;;MAO3C,KAAI,IAAImH,KAAwBF,GAAuB;QACrD,MAAMxE,IAAW8C,EAAA9B,MAAIY,GAAA,KAAuByB,MAAKC,KAAOA,EAAI/F,OAAOmH;QACnE,IAAI1E,GAAU;UACZ,KAAI,IAAIyE,KAAQzE,EAAS7B,OAAO,C;;;;YAQpC,IAAIkG,EAASM,SAASJ,EAAenG,QAAQ;QAC3C4C,KAAK4D,yBAAyBjE;QAC9BK,KAAK6D,iCAAiC;aACjC,IAAIN,EAAenG,WAAW,GAAG;QACtC4C,KAAK4D,yBAAyBhE;QAC9BI,KAAK6D,iCAAiC;aACjC;QACL7D,KAAK6D,iCAAiC;;;IAI1CC,EAAA/D,IAAAC,OACEoD;MAEA,IAAIA,EAAME,OAAOzG,aAAahB,GAAW;QACvCmE,KAAK+D,0BAA0B,YAAY;UACzCC,WAAWlC,EAAA9B,MAAIC,GAAA;UACfgE,SAASb,EAAME,OAAOY,iBAAiBC;UACvCC,SAAShB,EAAME,OAAOY,iBAAiBG;;;;IAK7CC,EAAAvE,IAAAC,OACEoD;MAEAT,EAAA3C,MAAIC,GAA6BmD,EAAME,OAAOiB,KAAId,KAAQA,EAAKA,KAAKlH,MAAG;AAAA;IAGzEiI,EAAAzE,IAAAC,OAAkB;MAChB,IAAIA,KAAKyE,iBAAiB;QACxBzE,KAAKyE;;;;IAKTC,EAAA3E,IAAAC,OAAuB;MACrBA,KAAK2E,eAAe;MACpB7C,EAAA9B,MAAIG,GAAA,KAAoByE,QAAQ;AAAI;IAGtCC,EAAA9E,IAAAC,OAA0B;MACxB8B,EAAA9B,MAAIG,GAAA,KAAoB2E;AAAO;IAGjCC,EAAAhF,IAAAC,OAAkCoD;;MAChC,MAAM4B,IAAS5B,EAAM4B;MACrB,MAAIxD,IAAAwD,EAAOC,WAAK,QAAAzD,WAAA,aAAAA,EAAEpE,UAAS,GAAG;QAC5B4C,KAAK2E,eAAeK,EAAOC,MAAM;;;IAIrCC,EAAAnF,IAAAC,OACEoD;MAEA,MAAM+B,IAAe/B,EAAME;MAC3B,MAAM8B,IAAqB;MAE3B,MAAMC,IAAaF,EAAarG,WAC9BwG,KAASA,EAAMC,WAAW;MAE5B,MAAMC,IAAeL,EAAarG,WAChCwG,KAASA,EAAMC,WAAW;MAE5B,MAAME,IAAeN,EAAarG,WAChCwG,KAASA,EAAMC,WAAW;MAG5B,IAAIF,OAAgB,GAAG;QACrBD,EAAS9I,KAAK;;MAEhB,IAAIkJ,OAAkB,GAAG;QACvBJ,EAAS9I,KAAK;;MAEhB,IAAImJ,OAAkB,GAAG;QACvBL,EAAS9I,KAAK;;MAGhB,IAAIoJ,IAAU,IAAI3J;MAClB,IAAIqJ,EAAShI,QAAQ;QACnB,MAAMuI,IAAgBP,EAASQ,KAAK;QACpCF,IAAU,IAAI3J,QAAwB4J;;MAExC3F,KAAK6F,2BAA2B,IAAIC,OAAOJ,GAAS;;YAGpD1F,KAAKiB,aAAa;QAChBC,OAAO;UACLS,SAAS0D,OAAgB;UACzBlE,QAAQnB,KAAKiB,WAAWC,MAAMC;;QAEhCC,SAAS;UACPO,SAAS6D,OAAkB;UAC3BrE,QAAQnB,KAAKiB,WAAWG,QAAQD;;QAElCE,SAAS;UACPM,SAAS8D,OAAkB;UAC3BtE,QAAQnB,KAAKiB,WAAWI,QAAQF;;;MAIpCW,EAAA9B,MAAIyB,GAAA,KAA6BM,KAAjC/B;AAAmC;IAGrC+F,EAAAhG,IAAAC,OACEoD;MAEA,IAAItB,EAAA9B,MAAII,GAAA,MAAiB;QACvB,MAAMgC,IAAUgB,EAAME,WAAW3D;QACjCmC,EAAA9B,MAAII,GAAA,KAAgB4F,yBAAyB;UAAE5D,SAASA;;;;IAI5D6D,EAAAlG,IAAAC,OAA0B;MACxB8B,EAAA9B,MAAIQ,GAAA,KAAgBqC;MACpBf,EAAA9B,MAAIO,GAAA,KAAkBsC;MACtBf,EAAA9B,MAAIK,GAAA,KAAkBwC;MACtB7C,KAAKgB,gBAAgB5E,SAAQqH;QAC3B,MAAMtG,IAAQsG,EAAKtG;QACnBA,EAAMf,SAAQ8J;UACZ,IAAIA,EAAMrJ,aAAa,SAAS;YAC9BiF,EAAA9B,MAAIQ,GAAA,KAAgB2F,IAAID,EAAM3J;;UAEhC,IAAI2J,EAAMrJ,aAAa,WAAW;YAChCiF,EAAA9B,MAAIO,GAAA,KAAkB4F,IAAID,EAAM3J;;UAElC,IAAI2J,EAAMrJ,aAAa,WAAW;YAChCiF,EAAA9B,MAAIK,GAAA,KAAkB8F,IAAID,EAAM3J;;;AAElC;AACF;;0CAxX+C;;2BAEH;;gCAMhB;gCACU;;qBAEZ;4BACmB;oCACb;;sBAEF;MAChC2E,OAAO;QACLS,SAAS;QACTR,QAAQ;;MAEVC,SAAS;QACPO,SAAS;QACTR,QAAQ;;MAEVE,SAAS;QACPM,SAAS;QACTR,QAAQ;;;;;;;;;yBA2DqB;;EAhFjC,sBAAAiF;;;EA0BA,2BAAAC;IACEvE,EAAA9B,MAAIsB,GAAA,KAAgBS,KAApB/B;IACA,IAAIA,KAAKuB,UAAU;MACjBvB,KAAKsG,sBACHxE,EAAA9B,MAAIF,GAAA,KAAkByG,KAAKC,aAAaC;WACrC;MACLzG,KAAKsG,sBACHxE,EAAA9B,MAAIF,GAAA,KAAkByG,KAAKC,aAAaE;;;EAI9C,4BAAAC,CAA6BC;IAC3B5G,KAAK6G,aAAaD,KAAYA,EAASxJ,WAAW;;EAiCpD,mBAAA0J,CAAoBC;IAClB,IAAIA,GAAS;MACXjF,EAAA9B,MAAIyC,GAAA,KAAiBV,KAArB/B,MAAsB+G;;;EAmB1B,gBAAAC;IACElF,EAAA9B,MAAIE,GAAA,KAAc+G;;EAGpB,kBAAAC,IAAkB;EAElB,uBAAMC;IACJxE,EAAA3C,MAAIF,SAA0BsH,EAAOC,oBAAoBrH,KAAKsH,KAAG;IACjEtH,KAAKuH,sBAAsBC,KAAK;;QAEhC1F,EAAA9B,MAAIsB,GAAA,KAAgBS,KAApB/B;IACAA,KAAKsG,sBACHxE,EAAA9B,MAAIF,GAAA,KAAkByG,KAAKC,aAAaC;IAC1C3E,EAAA9B,MAAIyB,GAAA,KAA6BM,KAAjC/B;;;;SAOF,mBAAMyH,CAAchE;IAClBzD,KAAKgB,kBAAkB1C,4BACrBmF,GACA3B,EAAA9B,MAAIS,GAAA,MACJqB,EAAA9B,MAAIW,GAAA,MACJX,KAAKgB;IAEPhB,KAAKiB,WAAWwC,EAAK/F,QAAQyD;IAC7BW,EAAA9B,MAAIiG,GAAA,KAAwBlE,KAA5B/B;;EA8PF,MAAA0H;;IACE,OACEC,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAUzF,OAAO9C;QAEjBuI,EAAA;MAASE,OAAM;OACbF,EAAA;;MAEEE,OAAM;MACNC,MAAK;OAELH,EAAA;;MAEEE,OAAM;OAENF,EAAA;MAAOE,OAAM;MAAQE,SAAQ;OAC1BjG,EAAA9B,MAAIF,GAAA,KAAkBkI,OAAOC,gBAEhCN,EAAA;MACEO,WAAS;MACT3L,IAAG;MACHsL,OAAM;MACNM,MAAK;MACLC,MAAK;MACLC,UAAQ;MACRzD,QAAOpD,IAAAxB,KAAK2E,kBAAY,QAAAnD,WAAA,aAAAA,EAAE/E;MAC1B6L,aAAaxG,EAAA9B,MAAIF,GAAA,KAAkBkI,OAAOO;MAC1C3L,aAAa4C;MACbgJ,KAAMlB,KACH3E,EAAA3C,MAAIE,GAAgBoH,GAAuB;QAGhDK,EAAA;MACEc,QAAM;MACNL,MAAK;MACLM,QAAO;MACPC,UAAU7G,EAAA9B,MAAI+E,GAAA;MACdyD,KAAMlB,KACH3E,EAAA3C,MAAIG,GAAsBmH,GAAsB;SAKvDK,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAA,cAEc7F,EAAA9B,MAAIF,GAAA,KAAkBkI,OAAOY;MACzCC,OAAO/G,EAAA9B,MAAIF,GAAA,KAAkBkI,OAAOY;MACpCrM,IAAG;MACHsL,OAAM;MACNM,MAAK;MACLW,SAAShH,EAAA9B,MAAI0E,GAAA;OAEbiD,EAAA;MAAUE,OAAM;MAAUkB,KAAKrJ;SAGjCiI,EAAA;;MAEEpL,IAAG;MACHsL,OAAM;MACNM,MAAK;MACLW,SAAShH,EAAA9B,MAAI6E,GAAA;MACbmE,UAAUhJ,KAAKgC;OAEdF,EAAA9B,MAAIF,GAAA,KAAkBkI,OAAOiB,qBAKpCtB,EAAA;;MAEEE,OAAM;OAENF,EAAA;MAAIE,OAAM;OACP/F,EAAA9B,MAAIF,GAAA,KAAkByG,KAAK2C,cAAcL,QAG5ClB,EAAA;MAAKE,OAAM;QACP7H,KAAK6G,YACLc,EAAA;;MAEEwB,WAAU;MACVtB,OAAM;MACN3F,OAAOlC,KAAKgD;MACZoG,cAAc;MACdC,cAAc;MACdC,kBAAkB;MAClBC,UAAU;MACVnH,SAAS;MACToH,2BAA2B1H,EAAA9B,MAAIiD,GAAA;MAC/BwG,sBACE3H,EAAA9B,MAAImD,GAAA;MAENuG,uBACE5H,EAAA9B,MAAIsE,GAAA;MAENqF,mBAAmB7H,EAAA9B,MAAI8D,GAAA;MACvB0E,KAAMlB,KACH3E,EAAA3C,MAAII,GAAkBkH,GAAiC;SAI5DK,EAAA;MACEiC,YAAY;MACZC,YACE/H,EAAA9B,MAAIF,GAAA,KAAkByG,KAAK2C,cAAcrC;MAE3CiD,KAAI;OAEJnC,EAAA;;MAEEE,OAAM;MACNiB,SAAShH,EAAA9B,MAAI6E,GAAA;OAEZ/C,EAAA9B,MAAIF,GAAA,KAAkByG,KAAK2C,cAAca,cAKhDpC,EAAA;MAAQE,OAAM;OACZF,EAAA;;MAEEpL,IAAG;MACHsL,OAAM;MACNmC,cAAcrK;MACdsK,gBAAgBrK;MAChBpD,SACEsF,EAAA9B,MAAIF,GAAA,KAAkByG,KAAK2C,cAAcgB;MAE3CtF,OAAO5E,KAAK4D;MACZuG,SAASrI,EAAA9B,MAAI+F,GAAA;MACbiD,UACEhJ,KAAKgC,wBACLhC,KAAKgD,iBAAiB5F,WAAW;MAEnC+K,MAAK;QAGPR,EAAA;MAAKE,OAAM;OACTF,EAAA;;MAEEpL,IAAG;MACHsL,OAAM;MACNiB,SAAShH,EAAA9B,MAAI4B,GAAA;MACboH,YACEoB,IAAApK,KAAKgD,sBAAgB,QAAAoH,WAAA,aAAAA,EAAEhN,YAAW,KAClC4C,KAAKgC;OAGNF,EAAA9B,MAAIF,GAAA,KAAkByG,KAAK2C,cAAcmB,eAG5C1C,EAAA;;MAEEpL,IAAG;MACHsL,OAAM;MACNiB,SAAShH,EAAA9B,MAAIa,GAAA;MACbmI,WAAWhJ,KAAKgC;MAChBmG,MAAK;OAEJrG,EAAA9B,MAAIF,GAAA,KAAkByG,KAAK2C,cAAcoB,eAG5C3C,EAAA;;MAEEpL,IAAG;MACHsL,OAAM;MACNM,MAAK;MACLW,SAAShH,EAAA9B,MAAIwE,GAAA;OAEbmD,EAAA;MACEE,OAAM;MACNkB,KAAKtJ;aAQjBkI,EAAA;;MAEEE,OAAM;OAENF,EAAA;MAAIE,OAAM;OACP/F,EAAA9B,MAAIF,GAAA,KAAkByG,KAAKC,aAAaqC,QAG3ClB,EAAA;MAAKE,OAAM;QACP7H,KAAKuB,YAAYvB,KAAK0B,oBACtBiG,EAAA;;MAEEzF,OAAOlC,KAAKgB;MACZsI,kBAAkB;MAClBH,WAAU;MACVtB,OAAM;MACN0C,QAAQvK,KAAK6F;MACb2E,YAAW;MACXC,eAAe;QACbC,YAAY;QACZC,8BAA8B;;SAIlChD,EAAA;MACEiC,YAAY;MACZgB,cAAcvL;MACdwK,YAAY7J,KAAKsG;MACjBwD,KAAI;QAIRnC,EAAA;MAAQE,OAAM;OACZF,EAAA;;MAEEE,OAAM;MACNiB,SAAShH,EAAA9B,MAAIe,GAAA;MACbiI,UAAUhJ,KAAKuB,YAAYvB,KAAKgC;MAChCmG,MAAK;OAEJrG,EAAA9B,MAAIF,GAAA,KAAkByG,KAAKC,aAAaqE,iBAMjDlD,EAAA;;MAEEE,OAAM;OAENF,EAAA;MACEmD,QAAQ9K,KAAKiB,WAAWC,MAAMC;MAC9B4J,UAAU/K,KAAKiB,WAAWG,QAAQD;MAClC6J,WAAWhL,KAAKiB,WAAWI,QAAQF;MACnC8J,aAAW;MACXC,SAAO;MACPC,SAASnL,KAAKoL;MACdC,oBAAoBvJ,EAAA9B,MAAIkF,GAAA"}
|
|
@@ -21,29 +21,29 @@ var c = undefined && undefined.__classPrivateFieldSet || function(e, t, s, i, a)
|
|
|
21
21
|
return i === "a" ? a.call(e, s) : a ? a.value = s : t.set(e, s), s;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
var d, h, u, b, f, m, g, p, w, v, y, k, _, M, x,
|
|
24
|
+
var d, h, u, b, f, m, g, p, w, v, y, k, _, M, W, x, C, z, N, I, S, T, E, R, j, A, H, U;
|
|
25
25
|
|
|
26
|
-
const
|
|
26
|
+
const L = [ "resets/box-sizing", "utils/form--full", "utils/layout", "utils/typography", "utils/spacing", "components/tooltip", "chameleon/scrollbar", "components/tabular-grid" ];
|
|
27
27
|
|
|
28
|
-
const
|
|
28
|
+
const D = a({
|
|
29
29
|
category: "system",
|
|
30
30
|
name: "information",
|
|
31
31
|
colorType: "on-surface"
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
const
|
|
34
|
+
const F = a({
|
|
35
35
|
category: "system",
|
|
36
36
|
name: "lock",
|
|
37
37
|
colorType: "on-surface"
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
const
|
|
40
|
+
const P = a({
|
|
41
41
|
category: "system",
|
|
42
42
|
name: "language",
|
|
43
43
|
colorType: "on-surface"
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
const
|
|
46
|
+
const $ = class {
|
|
47
47
|
constructor(s) {
|
|
48
48
|
e(this, s);
|
|
49
49
|
d.set(this, a({
|
|
@@ -108,9 +108,17 @@ const P = class {
|
|
|
108
108
|
this.enableConfirmButton = false;
|
|
109
109
|
}
|
|
110
110
|
}));
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
W.set(this, (e => {
|
|
112
|
+
n(this, C, "f").call(this, e);
|
|
113
|
+
n(this, v, "f").call(this);
|
|
114
|
+
}));
|
|
115
|
+
x.set(this, (e => {
|
|
116
|
+
n(this, z, "f").call(this, e);
|
|
117
|
+
n(this, v, "f").call(this);
|
|
118
|
+
}));
|
|
119
|
+
C.set(this, (e => n(this, N, "f").call(this, e, this.connectedServersData, n(this, b, "f"))));
|
|
120
|
+
z.set(this, (e => n(this, N, "f").call(this, e, this.recentlyUsedServersData, n(this, f, "f"))));
|
|
121
|
+
N.set(this, (async (e, t, s) => {
|
|
114
122
|
if (!this.isFirstSelection) {
|
|
115
123
|
c(this, m, n(this, g, "f"), "f");
|
|
116
124
|
}
|
|
@@ -130,7 +138,7 @@ const P = class {
|
|
|
130
138
|
await (s === null || s === void 0 ? void 0 : s.selectRow(n(this, m, "f"), false));
|
|
131
139
|
}
|
|
132
140
|
}));
|
|
133
|
-
|
|
141
|
+
I.set(this, (e => {
|
|
134
142
|
this.selectedConnectionType = e.detail;
|
|
135
143
|
if (this.selectedConnectionType === "new") {
|
|
136
144
|
this.enableConfirmButton = false;
|
|
@@ -138,7 +146,7 @@ const P = class {
|
|
|
138
146
|
}
|
|
139
147
|
this.selectedServerName = "None";
|
|
140
148
|
}));
|
|
141
|
-
|
|
149
|
+
S.set(this, ((e = false) => t("ch-tabular-grid-columnset", {
|
|
142
150
|
class: "tabular-grid-column-set"
|
|
143
151
|
}, t("ch-tabular-grid-column", {
|
|
144
152
|
columnId: "icon",
|
|
@@ -155,7 +163,7 @@ const P = class {
|
|
|
155
163
|
columnName: "Server Name",
|
|
156
164
|
settingable: false,
|
|
157
165
|
columnNameHidden: e,
|
|
158
|
-
onColumnSortChanged: n(this,
|
|
166
|
+
onColumnSortChanged: n(this, A, "f"),
|
|
159
167
|
size: r.tabularGrid.colSize.serverName,
|
|
160
168
|
resizable: false
|
|
161
169
|
}), t("ch-tabular-grid-column", {
|
|
@@ -165,7 +173,7 @@ const P = class {
|
|
|
165
173
|
columnName: "Server Url",
|
|
166
174
|
settingable: false,
|
|
167
175
|
columnNameHidden: e,
|
|
168
|
-
onColumnSortChanged: n(this,
|
|
176
|
+
onColumnSortChanged: n(this, A, "f"),
|
|
169
177
|
size: r.tabularGrid.colSize.auto,
|
|
170
178
|
resizable: false
|
|
171
179
|
}), t("ch-tabular-grid-column", {
|
|
@@ -175,7 +183,7 @@ const P = class {
|
|
|
175
183
|
columnName: "Username",
|
|
176
184
|
settingable: false,
|
|
177
185
|
columnNameHidden: e,
|
|
178
|
-
onColumnSortChanged: n(this,
|
|
186
|
+
onColumnSortChanged: n(this, A, "f"),
|
|
179
187
|
size: r.tabularGrid.colSize.userName,
|
|
180
188
|
resizable: false
|
|
181
189
|
}), t("ch-tabular-grid-column", {
|
|
@@ -185,69 +193,71 @@ const P = class {
|
|
|
185
193
|
columnName: "Status",
|
|
186
194
|
settingable: false,
|
|
187
195
|
columnNameHidden: e,
|
|
188
|
-
onColumnSortChanged: n(this,
|
|
196
|
+
onColumnSortChanged: n(this, A, "f"),
|
|
189
197
|
size: r.tabularGrid.colSize.maxContent,
|
|
190
198
|
resizable: false
|
|
191
199
|
}))));
|
|
192
|
-
|
|
200
|
+
T.set(this, (e => e !== "" ? t("ch-tooltip", {
|
|
193
201
|
class: "tooltip",
|
|
194
202
|
actionElement: null,
|
|
195
203
|
blockAlign: "outside-end",
|
|
196
204
|
inlineAlign: r.tooltipSettings.inlineAlign,
|
|
197
205
|
delay: r.tooltipSettings.delay
|
|
198
206
|
}, e) : null));
|
|
199
|
-
|
|
207
|
+
E.set(this, (e => [ t("ch-tabular-grid-cell", {
|
|
200
208
|
class: "tabular-grid-cell"
|
|
201
|
-
}, n(this,
|
|
209
|
+
}, n(this, H, "f").call(this, e.accessLevel)), t("ch-tabular-grid-cell", {
|
|
202
210
|
class: "tabular-grid-cell tabular-grid-cell-server-name"
|
|
203
211
|
}, e.serverName), t("ch-tabular-grid-cell", {
|
|
204
212
|
class: "tabular-grid-cell tabular-grid-cell-server-url"
|
|
205
|
-
}, e.serverUrl, n(this,
|
|
213
|
+
}, e.serverUrl, n(this, T, "f").call(this, e.serverUrl)), t("ch-tabular-grid-cell", {
|
|
206
214
|
class: "tabular-grid-cell"
|
|
207
215
|
}, e.gxServerUsername), t("ch-tabular-grid-cell", {
|
|
208
216
|
class: "tabular-grid-cell text-neutral-gray-400 body-italic-s"
|
|
209
217
|
}, e.isConnected && "Connected") ]));
|
|
210
|
-
|
|
218
|
+
R.set(this, (e => t("ch-tabular-grid", {
|
|
211
219
|
class: "tabular-grid-recently-used tabular-grid",
|
|
212
220
|
rowSelectionMode: "single",
|
|
213
221
|
ref: e => c(this, b, e, "f"),
|
|
214
222
|
allowColumnReorder: false,
|
|
215
|
-
onRowClicked: n(this,
|
|
223
|
+
onRowClicked: n(this, z, "f"),
|
|
224
|
+
onRowDoubleClicked: n(this, x, "f"),
|
|
216
225
|
id: "recently-used-servers"
|
|
217
|
-
}, n(this,
|
|
226
|
+
}, n(this, S, "f").call(this, e), this.recentlyUsedServersData.length > 0 ? t("ch-tabular-grid-rowset", {
|
|
218
227
|
class: "tabular-grid-rowset"
|
|
219
228
|
}, this.recentlyUsedServersData.map((e => t("ch-tabular-grid-row", {
|
|
220
229
|
rowid: e.id,
|
|
221
230
|
class: "tabular-grid-row"
|
|
222
|
-
}, n(this,
|
|
231
|
+
}, n(this, E, "f").call(this, e))))) : t("ch-tabular-grid-rowset", {
|
|
223
232
|
class: "tabular-grid-rowset"
|
|
224
233
|
}, t("ch-tabular-grid-rowset-empty", null, t("gx-ide-empty-state", {
|
|
225
|
-
stateIconSrc:
|
|
234
|
+
stateIconSrc: D,
|
|
226
235
|
stateTitle: n(this, u, "f").emptyConnectedServers,
|
|
227
236
|
isAnimated: true
|
|
228
237
|
}))))));
|
|
229
|
-
|
|
238
|
+
j.set(this, (() => t("ch-tabular-grid", {
|
|
230
239
|
class: "tabular-grid tabular-grid-all-servers",
|
|
231
240
|
rowSelectionMode: "single",
|
|
232
241
|
ref: e => c(this, f, e, "f"),
|
|
233
242
|
allowColumnReorder: false,
|
|
234
|
-
onRowClicked: n(this,
|
|
243
|
+
onRowClicked: n(this, C, "f"),
|
|
244
|
+
onRowDoubleClicked: n(this, W, "f"),
|
|
235
245
|
id: "all-servers"
|
|
236
|
-
}, n(this,
|
|
246
|
+
}, n(this, S, "f").call(this), this.filteredConnectedServersData.length > 0 ? t("ch-tabular-grid-rowset", {
|
|
237
247
|
class: "tabular-grid-rowset"
|
|
238
248
|
}, this.filteredConnectedServersData.map((e => t("ch-tabular-grid-row", {
|
|
239
249
|
rowid: e.id,
|
|
240
250
|
class: "tabular-grid-row"
|
|
241
|
-
}, n(this,
|
|
251
|
+
}, n(this, E, "f").call(this, e))))) : t("ch-tabular-grid-rowset", {
|
|
242
252
|
class: "tabular-grid-rowset"
|
|
243
253
|
}, t("ch-tabular-grid-rowset-empty", {
|
|
244
254
|
class: "tabular-grid-rowset-empty"
|
|
245
255
|
}, t("gx-ide-empty-state", {
|
|
246
|
-
stateIconSrc:
|
|
256
|
+
stateIconSrc: D,
|
|
247
257
|
stateTitle: n(this, u, "f").emptyConnectedServers,
|
|
248
258
|
isAnimated: true
|
|
249
259
|
}))))));
|
|
250
|
-
|
|
260
|
+
A.set(this, (e => {
|
|
251
261
|
const {columnId: t, sortDirection: s} = e.detail;
|
|
252
262
|
const i = this.connectedServersData;
|
|
253
263
|
i.sort(((e, i) => {
|
|
@@ -261,14 +271,14 @@ const P = class {
|
|
|
261
271
|
}));
|
|
262
272
|
this.connectedServersData = [ ...i ];
|
|
263
273
|
}));
|
|
264
|
-
|
|
265
|
-
const s = e === "private" ?
|
|
274
|
+
H.set(this, (e => {
|
|
275
|
+
const s = e === "private" ? F : P;
|
|
266
276
|
return t("ch-image", {
|
|
267
277
|
class: "icon-md",
|
|
268
278
|
src: s
|
|
269
279
|
});
|
|
270
280
|
}));
|
|
271
|
-
|
|
281
|
+
U.set(this, (() => {
|
|
272
282
|
const e = this.selectedConnectionType === "select";
|
|
273
283
|
return t("footer", {
|
|
274
284
|
class: {
|
|
@@ -323,7 +333,7 @@ const P = class {
|
|
|
323
333
|
return t(s, {
|
|
324
334
|
class: `widget elevation-1 ${e} ${i}`
|
|
325
335
|
}, t("ch-theme", {
|
|
326
|
-
model:
|
|
336
|
+
model: L
|
|
327
337
|
}), t("main", {
|
|
328
338
|
class: "section"
|
|
329
339
|
}, t("header", {
|
|
@@ -335,7 +345,7 @@ const P = class {
|
|
|
335
345
|
}, n(this, u, "f").header.title), t("ch-radio-group-render", {
|
|
336
346
|
class: "radio-group",
|
|
337
347
|
model: n(this, h, "f"),
|
|
338
|
-
onChange: n(this,
|
|
348
|
+
onChange: n(this, I, "f"),
|
|
339
349
|
value: n(this, h, "f")[0].value
|
|
340
350
|
}), this.selectedConnectionType === "select" && t("ch-edit", {
|
|
341
351
|
class: "input search-server",
|
|
@@ -350,12 +360,12 @@ const P = class {
|
|
|
350
360
|
}, t("label", {
|
|
351
361
|
class: "label",
|
|
352
362
|
htmlFor: "recently-used-servers"
|
|
353
|
-
}, n(this, u, "f").recentlyUsed.title), n(this,
|
|
363
|
+
}, n(this, u, "f").recentlyUsed.title), n(this, R, "f").call(this, true)), t("div", {
|
|
354
364
|
class: "field field-block field-block-all-servers spacing-body-inline"
|
|
355
365
|
}, t("label", {
|
|
356
366
|
class: "label",
|
|
357
367
|
htmlFor: "all-servers"
|
|
358
|
-
}, n(this, u, "f").allServers.title), n(this,
|
|
368
|
+
}, n(this, u, "f").allServers.title), n(this, j, "f").call(this)) ], this.selectedConnectionType === "new" && t("section", {
|
|
359
369
|
class: "spacing-body-inline"
|
|
360
370
|
}, t("div", {
|
|
361
371
|
class: "layout layout--cols-2"
|
|
@@ -394,7 +404,7 @@ const P = class {
|
|
|
394
404
|
blockAlign: "outside-end",
|
|
395
405
|
inlineAlign: r.tooltipSettings.inlineAlign,
|
|
396
406
|
delay: r.tooltipSettings.delay
|
|
397
|
-
}, n(this, u, "f").errors.serverUrlInvalid))), n(this,
|
|
407
|
+
}, n(this, u, "f").errors.serverUrlInvalid))), n(this, U, "f").call(this)));
|
|
398
408
|
}
|
|
399
409
|
static get assetsDirs() {
|
|
400
410
|
return [ "gx-ide-assets/server-selector" ];
|
|
@@ -406,12 +416,12 @@ const P = class {
|
|
|
406
416
|
|
|
407
417
|
d = new WeakMap, h = new WeakMap, u = new WeakMap, b = new WeakMap, f = new WeakMap,
|
|
408
418
|
m = new WeakMap, g = new WeakMap, p = new WeakMap, w = new WeakMap, v = new WeakMap,
|
|
409
|
-
y = new WeakMap, k = new WeakMap, _ = new WeakMap, M = new WeakMap,
|
|
410
|
-
|
|
411
|
-
S = new WeakMap, T = new WeakMap, E = new WeakMap,
|
|
412
|
-
H = new WeakMap;
|
|
419
|
+
y = new WeakMap, k = new WeakMap, _ = new WeakMap, M = new WeakMap, W = new WeakMap,
|
|
420
|
+
x = new WeakMap, C = new WeakMap, z = new WeakMap, N = new WeakMap, I = new WeakMap,
|
|
421
|
+
S = new WeakMap, T = new WeakMap, E = new WeakMap, R = new WeakMap, j = new WeakMap,
|
|
422
|
+
A = new WeakMap, H = new WeakMap, U = new WeakMap;
|
|
413
423
|
|
|
414
|
-
|
|
424
|
+
$.style = o;
|
|
415
425
|
|
|
416
|
-
export {
|
|
417
|
-
//# sourceMappingURL=p-
|
|
426
|
+
export { $ as gx_ide_server_selector };
|
|
427
|
+
//# sourceMappingURL=p-970e89ac.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["serverSelectorCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","name","colorType","LOCK_ICON","LANGUAGE_ICON","GxIdeServerSelector","_GxIdeServerSelector_chSearchIcon","set","this","_GxIdeServerSelector_versionsSelect","value","caption","_GxIdeServerSelector__componentLocale","_GxIdeServerSelector_chGridRecentlyUsedServersEl","_GxIdeServerSelector_chGridConnectedServersEl","_GxIdeServerSelector_previousSelectedRowId","_GxIdeServerSelector_selectedRowId","_GxIdeServerSelector_serverUrlEL","_GxIdeServerSelector_cancelHandler","cancelCallback","_GxIdeServerSelector_confirmHandler","async","selectedConnectionType","selectServerCallback","uri","selectedServerUri","selectedServerName","isValidUrl","__classPrivateFieldGet","_GxIdeServerSelector_validateUrl","call","serverUrlInputValue","serverNameInputValue","_GxIdeServerSelector_filterValueChangedHandler","event","filterValue","detail","toLowerCase","filteredConnectedServersData","connectedServersData","filter","item","serverName","includes","_GxIdeServerSelector_inputHandler","field","enableConfirmButton","_GxIdeServerSelector_enableConfirmButton","url","serverUrl","URL","protocolValid","protocol","startsWith","ex","length","_GxIdeServerSelector_onConnectedServersRowDoubleClickHandler","_GxIdeServerSelector_selectConnectedServersHandler","_GxIdeServerSelector_onRecentlyUsedRowDoubleClickHandler","_GxIdeServerSelector_selectRecentlyUsedServersHandler","_GxIdeServerSelector_handleServerSelection","recentlyUsedServersData","serversData","otherGridEl","isFirstSelection","__classPrivateFieldSet","rowId","undefined","selectedServer","find","server","id","userName","gxServerUsername","selectRow","_GxIdeServerSelector_connectionTypeChangedHandler","_GxIdeServerSelector_renderTabularGridColumnSet","hideColumnName","h","class","columnId","columnName","settingable","columnNameHidden","size","config","tabularGrid","colSize","maxContent","resizable","sortable","onColumnSortChanged","_GxIdeServerSelector_handleColumnSortChanged","auto","_GxIdeServerSelector_renderTooltip","text","actionElement","blockAlign","inlineAlign","tooltipSettings","delay","_GxIdeServerSelector_renderTabularGridCommonCells","_GxIdeServerSelector_renderIcon","accessLevel","isConnected","_GxIdeServerSelector_renderRecentlyUsedServersGrid","rowSelectionMode","ref","el","allowColumnReorder","onRowClicked","onRowDoubleClicked","map","rowid","stateIconSrc","stateTitle","emptyConnectedServers","isAnimated","_GxIdeServerSelector_renderConnectedServersGrid","e","sortDirection","aux","sort","a","b","icon","src","_GxIdeServerSelector_renderFooter","isSelectionMode","onClick","footer","cancel","disabled","confirm","Map","componentWillLoad","Locale","getComponentStrings","_a","_b","render","connectionTypeClass","recentlyUsedEmptyClass","Host","model","header","title","onChange","startImgSrc","onInput","placeholder","placeholders","searchServers","accessibleName","type","htmlFor","recentlyUsed","allServers","labels","input","maxLength","errors","serverUrlInvalid"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n border-inline: 1px solid var(--grid-cell__border-color);\n --grid-cell__box-shadow-inline-block:\n inset 0 0px var(--grid-cell__border-color),\n inset 0 -1px var(--grid-cell__border-color);\n overflow: auto;\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// Recently Used\n\n.tabular-grid-recently-used .tabular-grid-column::part(bar) {\n --grid-cell__padding-block: 0;\n --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.tabular-grid-recently-used {\n border-block-end: 1px solid var(--grid-cell__border-color);\n max-block-size: 100px;\n}\n\n// All Servers\n\n.tabular-grid-all-servers {\n overflow: auto;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n.tabular-grid-all-servers {\n border-block: 1px solid var(--grid-cell__border-color);\n\n .tabular-grid-column:first-child::part(bar-name-icon) {\n background-image: var(\n --icon__system_order-alphabetically_on-elevation--enabled\n );\n block-size: var(--mer-icon__box--md);\n inline-size: var(--mer-icon__box--md);\n background-size: var(--mer-icon__size--md);\n }\n .tabular-grid-rowset-empty {\n border-block-end: none;\n overflow: hidden;\n }\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation\n // validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"select\", caption: \"Select a server from the list below\" },\n { value: \"new\", caption: \"Enter a server URL manually\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n\n #chGridRecentlyUsedServersEl: HTMLChTabularGridElement;\n #chGridConnectedServersEl: HTMLChTabularGridElement;\n #previousSelectedRowId: string | undefined;\n #selectedRowId: string | undefined;\n #serverUrlEL: HTMLChEditElement;\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * State to track if this is the first selection made by the user.\n */\n @State() isFirstSelection: boolean = true;\n\n /**\n * State to track if the server URL is valid.\n */\n @State() isValidUrl: boolean = true;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredConnectedServersData: ConnectedGXServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The list of connected GX servers.\n */\n @Prop({ mutable: true }) connectedServersData: ConnectedGXServerData[] = [];\n\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ConnectedGXServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin\n ) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.selectedServerUri = this.connectedServersData[0]?.serverUrl;\n this.userName = this.connectedServersData[0]?.gxServerUsername;\n\n this.filteredConnectedServersData = this.connectedServersData;\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void | ServerType> => {\n if (this.selectedConnectionType === \"select\") {\n await this.selectServerCallback({\n uri: this.selectedServerUri,\n name: this.selectedServerName\n });\n } else if (this.selectedConnectionType === \"new\") {\n this.isValidUrl = this.#validateUrl(this.serverUrlInputValue);\n if (this.isValidUrl) {\n await this.selectServerCallback({\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n });\n }\n }\n };\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredConnectedServersData = this.connectedServersData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = event.detail as string;\n this.#enableConfirmButton();\n };\n\n #validateUrl = (url: string): boolean => {\n try {\n const serverUrl = new URL(url);\n const protocolValid =\n (serverUrl.protocol === \"http:\" || serverUrl.protocol === \"https:\") &&\n url.startsWith(`${serverUrl.protocol}//`);\n return protocolValid;\n } catch (ex) {\n return false;\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #onConnectedServersRowDoubleClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => {\n this.#selectConnectedServersHandler(event);\n this.#confirmHandler();\n };\n\n #onRecentlyUsedRowDoubleClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => {\n this.#selectRecentlyUsedServersHandler(event);\n this.#confirmHandler();\n };\n\n #selectConnectedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.connectedServersData,\n this.#chGridRecentlyUsedServersEl\n );\n\n #selectRecentlyUsedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.recentlyUsedServersData,\n this.#chGridConnectedServersEl\n );\n\n #handleServerSelection = async (\n event: CustomEvent<TabularGridRowClickedEvent>,\n serversData: ConnectedGXServerData[],\n otherGridEl: HTMLChTabularGridElement\n ): Promise<void> => {\n if (!this.isFirstSelection) {\n this.#previousSelectedRowId = this.#selectedRowId;\n }\n this.#selectedRowId = event.detail.rowId;\n if (this.#selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n } else {\n const selectedServer = serversData.find(\n server => server.id === this.#selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.isFirstSelection = false;\n await otherGridEl?.selectRow(this.#previousSelectedRowId, false);\n }\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Username\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"status\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Status\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderTabularGridCommonCells = (server: ConnectedGXServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(server.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-name\">\n {server.serverName}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-url\">\n {server.serverUrl}\n {this.#renderTooltip(server.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {server.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell text-neutral-gray-400 body-italic-s\">\n {server.isConnected && \"Connected\"}\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderRecentlyUsedServersGrid = (hideColumnName: boolean): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid-recently-used tabular-grid\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridRecentlyUsedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectRecentlyUsedServersHandler}\n onRowDoubleClicked={this.#onRecentlyUsedRowDoubleClickHandler}\n id=\"recently-used-servers\"\n >\n {this.#renderTabularGridColumnSet(hideColumnName)}\n {this.recentlyUsedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.recentlyUsedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderConnectedServersGrid = (): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridConnectedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectConnectedServersHandler}\n onRowDoubleClicked={this.#onConnectedServersRowDoubleClickHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredConnectedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredConnectedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n\n const aux = this.connectedServersData;\n aux.sort((a: any, b: any) => {\n if (a[columnId] < b[columnId]) {\n return sortDirection === \"asc\" ? -1 : 1;\n }\n if (a[columnId] > b[columnId]) {\n return sortDirection === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n this.connectedServersData = [...aux];\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n const connectionTypeClass =\n this.selectedConnectionType === \"new\" && \"new-connection\";\n const recentlyUsedEmptyClass =\n this.recentlyUsedServersData.length === 0 && \"recently-used-empty\";\n return (\n <Host\n class={`widget elevation-1 ${connectionTypeClass} ${recentlyUsedEmptyClass}`}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n {this.selectedConnectionType === \"select\" && [\n this.recentlyUsedServersData.length > 0 && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n {this.#renderRecentlyUsedServersGrid(true)}\n </div>\n ),\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderConnectedServersGrid()}\n </div>\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class={{ \"input\": true, \"input-error\": !this.isValidUrl }}\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n </div>\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ></ch-edit>\n </div>\n {!this.isValidUrl && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#serverUrlEL as unknown as HTMLButtonElement\n }\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#_componentLocale.errors.serverUrlInvalid}\n </ch-tooltip>\n )}\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerType = \"legacy\" | \"next\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ConnectedGXServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"mappings":"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"}
|