@genexus/genexus-ide-ui 1.1.70 → 1.1.72
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/{utilities-25be3069.js → constants-a2ac1812.js} +70 -1
- package/dist/cjs/constants-a2ac1812.js.map +1 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +7 -8
- 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 +2 -2
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js +5 -4
- package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +28 -17
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +8 -7
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +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-team-dev-bring-all-changes-selector.cjs.entry.js +6 -5
- package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +21 -21
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +25 -78
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{tabular-grid-render-c0e0738c.js → tabular-grid-render-37b7153b.js} +12 -86
- package/dist/cjs/tabular-grid-render-37b7153b.js.map +1 -0
- package/dist/collection/components/restore-version/gx-ide-assets/restore-version/shortcuts.json +15 -0
- package/dist/collection/components/restore-version/restore-version.js +6 -5
- package/dist/collection/components/restore-version/restore-version.js.map +1 -1
- package/dist/collection/components/select-kb-items/select-kb-items.js +75 -28
- package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
- package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js +7 -6
- package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js.map +1 -1
- package/dist/collection/components/team-dev/bring-all-changes-selector/gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json +15 -0
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +8 -9
- package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -1
- package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/shortcuts.json +15 -0
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +2 -2
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +6 -1
- package/dist/collection/components/team-dev/history/history.css +3 -0
- package/dist/collection/components/team-dev/history/history.js +52 -91
- package/dist/collection/components/team-dev/history/history.js.map +1 -1
- package/dist/collection/components/team-dev/server-selector/gx-ide-assets/server-selector/shortcuts.json +15 -0
- package/dist/collection/components/team-dev/server-selector/server-selector.js +9 -7
- package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
- package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/shortcuts.json +1 -1
- package/dist/collection/components/team-dev/share-kb/share-kb.js +2 -2
- package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
- package/dist/components/{utilities.js → constants2.js} +68 -2
- package/dist/components/constants2.js.map +1 -0
- package/dist/components/gx-ide-connect-gx-server.js +8 -9
- package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +2 -2
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-restore-version.js +6 -5
- package/dist/components/gx-ide-restore-version.js.map +1 -1
- package/dist/components/gx-ide-server-selector.js +9 -8
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +2 -2
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +7 -6
- package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +2 -1
- package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +24 -85
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +1 -1
- package/dist/components/select-kb-items.js +32 -20
- package/dist/components/select-kb-items.js.map +1 -1
- package/dist/components/tabular-grid-render.js +2 -72
- package/dist/components/tabular-grid-render.js.map +1 -1
- package/dist/esm/{utilities-efeffb76.js → constants-31612239.js} +68 -2
- package/dist/esm/constants-31612239.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js +8 -9
- package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +2 -2
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-restore-version.entry.js +6 -5
- package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +28 -17
- package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +9 -8
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +2 -2
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +7 -6
- package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-commit.entry.js +5 -5
- package/dist/esm/gx-ide-team-dev-history.entry.js +25 -78
- package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{tabular-grid-render-c868fa55.js → tabular-grid-render-d06826a5.js} +3 -74
- package/dist/esm/tabular-grid-render-d06826a5.js.map +1 -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/connect-gx-server/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/shortcuts.json +6 -1
- package/dist/genexus-ide-ui/gx-ide-assets/restore-version/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/server-selector/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/share-kb/shortcuts.json +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/p-025c9aa4.entry.js +239 -0
- package/dist/genexus-ide-ui/p-025c9aa4.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-082015be.js +244 -0
- package/dist/{esm/tabular-grid-render-c868fa55.js.map → genexus-ide-ui/p-082015be.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-972dc777.entry.js → p-1351412d.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-8897c6de.entry.js → p-2d6228e8.entry.js} +201 -194
- package/dist/genexus-ide-ui/p-2d6228e8.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-32b37b3d.js +163 -0
- package/dist/genexus-ide-ui/p-32b37b3d.js.map +1 -0
- package/dist/genexus-ide-ui/{p-a543dfdb.entry.js → p-451994e8.entry.js} +104 -95
- package/dist/genexus-ide-ui/p-451994e8.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-85cf50c5.entry.js → p-74f8bd45.entry.js} +78 -132
- package/dist/genexus-ide-ui/p-74f8bd45.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-c3cc759d.entry.js → p-8dedbcd9.entry.js} +64 -58
- package/dist/genexus-ide-ui/p-8dedbcd9.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-6ee5d68e.entry.js → p-92a027bc.entry.js} +33 -33
- package/dist/genexus-ide-ui/{p-9ffa7afd.entry.js → p-941f470f.entry.js} +3 -1
- package/dist/genexus-ide-ui/{p-9ffa7afd.entry.js.map → p-941f470f.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-93e79d19.entry.js → p-ac79f7e8.entry.js} +59 -57
- package/dist/genexus-ide-ui/{p-93e79d19.entry.js.map → p-ac79f7e8.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-e2fd2c24.entry.js → p-c256dc59.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-5e56280c.entry.js → p-eeeb3d52.entry.js} +199 -192
- package/dist/genexus-ide-ui/p-eeeb3d52.entry.js.map +1 -0
- package/dist/types/components/select-kb-items/select-kb-items.d.ts +12 -3
- package/dist/types/components/team-dev/history/history.d.ts +3 -12
- package/dist/types/components.d.ts +22 -20
- package/package.json +1 -1
- package/dist/cjs/tabular-grid-render-c0e0738c.js.map +0 -1
- package/dist/cjs/utilities-25be3069.js.map +0 -1
- package/dist/components/utilities.js.map +0 -1
- package/dist/esm/utilities-efeffb76.js.map +0 -1
- package/dist/genexus-ide-ui/p-22bdcf23.js +0 -322
- package/dist/genexus-ide-ui/p-22bdcf23.js.map +0 -1
- package/dist/genexus-ide-ui/p-5e56280c.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-85cf50c5.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8897c6de.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a105f903.entry.js +0 -234
- package/dist/genexus-ide-ui/p-a105f903.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-a543dfdb.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-c3cc759d.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-db6c6085.js +0 -95
- package/dist/genexus-ide-ui/p-db6c6085.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-972dc777.entry.js.map → p-1351412d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-6ee5d68e.entry.js.map → p-92a027bc.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e2fd2c24.entry.js.map → p-c256dc59.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ACTIVE_ITEM_DEFAULT_ICON","getIconPath","category","name","colorType","convertItemsNodeListToFlattenedTreeViewModel","itemsList","checkboxType","itemsListFlattenedTreeViewModel","processNode","item","startImgSrc","active","iconStart","leaf","_a","nodes","length","checkbox","metaData","JSON","stringify","versionType","type","push","caption","checked","endImgSrc","iconEnd","expanded","id","toString","items","metadata","parts","selected","order","forEach","childNode","convertItemsListToTreeViewModel","itemsListTreeViewModel","parseInt","findItemNode","itemNode","result","findItemInArray","itemsNodes","setAllLeafsCheckedFalse","uncheck","unselectAllNodes","unselect","checkItems","idsChecked","itemFind","expandItems","selectItems","idsSelected","searchInNode","node","parents","searchParentsItems","ids","rootItem","results","findFirstActiveNode","findActiveWithPath","nodeList","currentPath","nodePath","path","selectKbItemsCss","CSS_BUNDLES","SYSTEM_SEARCH_ICON","VIEW_AS_TREE_ID","VIEW_AS_LIST_ID","TOGGLE_CHECKBOXES_CHECKED_VALUE","GxIdeSelectKbItems","_GxIdeSelectKbItems__componentLocale","set","this","_GxIdeSelectKbItems_chShortcutsEl","_GxIdeSelectKbItems_selectedNodesIds","_GxIdeSelectKbItems_shortcutsSrc","getAssetPath","_GxIdeSelectKbItems_updatedModelList","_GxIdeSelectKbItems_viewItemsAsModel","_GxIdeSelectKbItems_treeViewRenderEl","_GxIdeSelectKbItems_cancelHandler","cancelCallback","_GxIdeSelectKbItems_checkedItemsChangeHandler","async","e","checkedNodesIds","detail","singleChecks","lastCheckedId","find","includes","__classPrivateFieldGet","updateItemsProperties","Array","from","keys","filter","__classPrivateFieldSet","checkedChanged","_GxIdeSelectKbItems_confirmHandler","confirmCallback","_GxIdeSelectKbItems_contextMenuHandler","itemContextMenuCallback","info","isSelected","clientX","contextmenuEvent","clientY","selection","_GxIdeSelectKbItems_executeDialogAction","callback","_GxIdeSelectKbItems_patternSearchValueChangedHandler","event","searchPatternValue","_GxIdeSelectKbItems_renderActionButtons","h","dialogActions","map","action","class","part","onClick","call","disabled","loading","_GxIdeSelectKbItems_renderFooter","footer","cancel","select","_GxIdeSelectKbItems_selectedItemsChangeHandler","selectedNodesIds","selectionChanged","_GxIdeSelectKbItems_toggleAndSelectNodesInModelItems","selectedItemsIds","nodesToToggle","newItemsSelected","newItemsExpanded","_GxIdeSelectKbItems_updateViews","_GxIdeSelectKbItems_toggleCheckedNodesInModelItems","newItemsList","nodeVersionsListTreeModel","nodeListFlattenedTreeModel","_GxIdeSelectKbItems_viewItemsAsChangedHandler","selectedViewType","nodesVersionsViewType","_GxIdeSelectKbItems_toggleCheckboxesChangedHandler","toggleCheckboxes","_GxIdeSelectKbItems_scrollIntoActiveVersionNode","doScrollIntoView","activeItemNode","scrollIntoVisible","activeItemCallback","watchNodeListHandler","componentWillLoad","Locale","getComponentStrings","el","showToggleCheckboxes","value","main","tree","renderFooter","suspendShortcuts","suspend","updateSelection","updateCheckedItems","checkedItemsIds","render","Host","widget","model","src","ref","htmlFor","onChange","checkedValue","onInput","showActiveItemLink","placeholder","header","searchPatternPlaceholder","accessibleName","containerRef","activeItem","loaderTitle","loader","title","description","show","expandableButton","onItemContextmenu","onCheckedItemsChange","onSelectedItemsChange","expandOnClick","multiSelection","filterType"],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType, ActiveNode } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath } from \"@genexus/mercury\";\n\nexport const ACTIVE_ITEM_DEFAULT_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"primary\"\n});\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: startImgSrc,\n endImgSrc: item.iconEnd,\n expanded: item.expanded,\n id: item.id.toString(),\n items: null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n selected: item.selected,\n order: item.order\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const expanded = item.expanded;\n const iconStart = startImgSrc;\n const iconEnd = item.iconEnd;\n const metaData = JSON.stringify({\n versionType: item.type\n });\n const order = parseInt(item.id);\n itemsListTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: iconStart,\n endImgSrc: iconEnd,\n expanded: expanded,\n id: item.id.toString(),\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n order: order,\n selected: item.selected\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n\n/**\n * Recursively searches for the first node with the active=true property\n * @param nodes Array of nodes to search through\n * @returns An object with caption, iconStart, and path to the first active node found, or null if none is found\n */\nexport const findFirstActiveNode = (nodes: ItemNode[]): ActiveNode | null => {\n // Helper function that keeps track of the path during recursion\n const findActiveWithPath = (\n nodeList: ItemNode[],\n currentPath: string[] = []\n ): ActiveNode | null => {\n // Base case: if nodes is undefined or empty\n if (!nodeList || nodeList.length === 0) {\n return null;\n }\n\n // Iterate through each node in the array\n for (const node of nodeList) {\n // Create a new path that includes the current node\n const nodePath = [...currentPath, node.id];\n\n // Check if the current node is active\n if (node.active === true) {\n return {\n caption: node.name,\n iconStart: node.iconStart,\n path: nodePath\n };\n }\n\n // If the node has children, search through them with the updated path\n if (node.nodes && node.nodes.length > 0) {\n const result = findActiveWithPath(node.nodes, nodePath);\n // If we find an active node in this subtree, return it immediately\n if (result !== null) {\n return result;\n }\n }\n }\n\n // No active node found in any of the nodes\n return null;\n };\n\n // Start the search with an empty path\n return findActiveWithPath(nodes);\n};\n",":host {\n --search-input-max-inline-size: 400px;\n display: grid;\n block-size: 100%;\n}\n:host(:not(.has-footer)) {\n grid-template-rows: max-content 1fr;\n}\n:host(.has-footer) {\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header.has-active-item {\n grid-area: header;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n &__first-row,\n &__second-row {\n display: grid;\n grid-auto-flow: column;\n }\n &__first-row {\n column-gap: var(--field-group__column-gap);\n grid-auto-columns: max-content;\n }\n &__second-row {\n column-gap: 12px;\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size)) max-content;\n\n &--one-row {\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size));\n }\n }\n}\n\n.active-item {\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-border__radius--sm);\n padding: var(--mer-spacing--xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n}\n.active-item {\n &__icon-container {\n display: contents;\n }\n &__icon {\n pointer-events: none; // We do not want the icon to change the colors, since the clickable area is the caption only\n }\n &__link {\n text-decoration: underline;\n // TODO: There should be a class in Merucry to apply link styles\n color: var(--mer-text__primary);\n cursor: pointer;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n }\n}\n\n.dummy-control-block-size {\n // WA: Make as tall as a regular contorl (ie.: a input, a combo-box) in order to\n // make the label vertically aligned with this control.\n block-size: 32px;\n}\n\n.trees {\n position: relative;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes,\n findFirstActiveNode\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nimport { ACTIVE_ITEM_DEFAULT_ICON } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n #viewItemsAsModel: RadioGroupItemModel[];\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n\n /**\n * Represents the active version node caption and icon (if any)\n */\n @State() activeItemNode: ActiveNode;\n\n /**\n * Represents the selected nodes ids\n */\n @State() checkedNodesIds: string[] = [];\n\n /**\n * If true, the footer will be rendered\n */\n @State() renderFooter: boolean = false;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean;\n\n /**\n * Callback emitted when the user clicks on the \"Active item\"\n */\n @Prop() readonly activeItemCallback?: () => Promise<void>;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Define if a item node is expanded on click interaction. If false item-node will only be expanded on double click.\n */\n @Prop() readonly expandOnClick: boolean = true;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Represents the itemLis list model\n */\n @Prop() readonly itemsList: ItemNode[] = [];\n\n /**\n * Used to define if the component must show the \"Toggle Checkboxes\" option or not\n */\n @Prop() readonly showToggleCheckboxes: boolean = true;\n\n @Watch(\"itemsList\")\n watchNodeListHandler(newItemsList: ItemNode[]) {\n this.#updateViews(newItemsList);\n // Check and update activeItem\n this.activeItemNode = findFirstActiveNode(newItemsList);\n\n this.loading = false;\n }\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * This define if the checks are unique or not\n */\n @Prop() readonly singleChecks?: boolean = false;\n\n /**\n * Used to define if the component must show the \"Active item\" link or not\n */\n @Prop() readonly showActiveItemLink?: boolean = false;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.loading = true;\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.toggleCheckboxes = this.showToggleCheckboxes;\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.renderFooter =\n this.dialogActions.length > 0 ||\n !!this.cancelCallback ||\n !!this.confirmCallback;\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 /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n /**\n * Allow to update the checked items\n */\n @Method()\n async updateCheckedItems(checkedItemsIds: string[]) {\n // first clear checks\n this.#treeViewRenderEl.updateItemsProperties(this.checkedNodesIds, {\n checked: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(checkedItemsIds, {\n checked: true\n });\n this.checkedNodesIds = checkedItemsIds;\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n let checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n if (node.item.checked) {\n checkedNodesIds.push(node.item.id);\n }\n });\n\n if (this.singleChecks) {\n // Detect the last change by comparing previous and new state\n let lastCheckedId: string | null = null;\n // If there are more in the new state, it was a check; if less, it was an uncheck\n if (checkedNodesIds.length > this.checkedNodesIds.length) {\n // Find the newly checked item\n lastCheckedId =\n checkedNodesIds.find(id => !this.checkedNodesIds.includes(id)) ||\n null;\n } else if (checkedNodesIds.length < this.checkedNodesIds.length) {\n // Find the unchecked item (not used in single check, but kept for clarity)\n lastCheckedId =\n this.checkedNodesIds.find(id => !checkedNodesIds.includes(id)) ||\n null;\n }\n\n // Only allow one if multiChecks is false\n if (this.singleChecks && checkedNodesIds.length > 1) {\n // If we detected the last checked, keep it; otherwise, keep the first\n checkedNodesIds = lastCheckedId\n ? [lastCheckedId]\n : [checkedNodesIds[0]];\n // Uncheck the others\n this.#treeViewRenderEl.updateItemsProperties(\n Array.from(e.detail.keys()).filter(id => id !== checkedNodesIds[0]),\n { checked: false }\n );\n }\n }\n\n this.checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n disabled={this.loading}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n disabled={this.loading || this.checkedNodesIds?.length === 0}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n #scrollIntoActiveVersionNode = () => {\n const doScrollIntoView =\n this.#treeViewRenderEl && this.activeItemNode?.path;\n if (doScrollIntoView) {\n this.#treeViewRenderEl.scrollIntoVisible(this.activeItemNode.path);\n }\n\n if (this.activeItemCallback) {\n this.activeItemCallback();\n }\n };\n\n render() {\n return (\n <Host class={{ \"widget\": true, \"has-footer\": this.renderFooter }}>\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 part=\"header\"\n class=\"header control-header field-group spacing-body-block-start spacing-body-inline\"\n >\n <div class=\"header__first-row\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n <ch-radio-group-render\n class=\"radio-group dummy-control-block-size\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n {this.checkboxType !== \"none\" && this.showToggleCheckboxes && (\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"toggle-checkboxes\">\n Toggle Checkboxes\n </label>\n <ch-checkbox\n class=\"checkbox dummy-control-block-size\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n </div>\n )}\n </div>\n\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--one-row\": !this.showActiveItemLink\n }}\n >\n <ch-edit\n class=\"input\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n accessibleName=\"search pattern\"\n ></ch-edit>\n {this.activeItemNode && this.showActiveItemLink && (\n <div class=\"active-item\">\n <span\n class=\"active-item__icon-container\"\n // make this span the icon container, to prevent icon state changes when\n // interacting with div.active-item\n >\n <ch-image\n class=\"icon-md active-item__icon\"\n src={\n this.activeItemNode.iconStart ||\n ACTIVE_ITEM_DEFAULT_ICON\n }\n containerRef={null}\n ></ch-image>\n </span>\n {this.#_componentLocale.header.activeItem}\n <button\n class=\"active-item__link\"\n onClick={this.#scrollIntoActiveVersionNode}\n >\n {this.activeItemNode.caption}\n </button>\n </div>\n )}\n </div>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n expandOnClick={this.expandOnClick}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n )}\n </div>\n {this.renderFooter && this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n active?: boolean;\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n iconStart?: string;\n iconEnd?: string;\n id: string;\n name: string;\n nodes?: ItemNode[];\n parts?: string;\n selected?: boolean;\n type?: ItemType;\n order?: number;\n};\n\nexport type ActiveNode = {\n caption: string;\n iconStart?: string;\n path: string[]; // for using the scrollIntoVisible method of the tree-view-render\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"mappings":"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"}
|
|
@@ -1,234 +0,0 @@
|
|
|
1
|
-
import { r as e, h as t, H as i, a as s } from "./p-9b9ccd0c.js";
|
|
2
|
-
|
|
3
|
-
import { c as a } from "./p-c5196b3b.js";
|
|
4
|
-
|
|
5
|
-
import { v as n } from "./p-b32b6b1f.js";
|
|
6
|
-
|
|
7
|
-
import { L as o } from "./p-311eedf3.js";
|
|
8
|
-
|
|
9
|
-
const mapAuthenticationTypeToComboBoxModel = e => e.map((e => ({
|
|
10
|
-
value: e.id,
|
|
11
|
-
caption: e.name
|
|
12
|
-
})));
|
|
13
|
-
|
|
14
|
-
const r = ':host{display:grid;block-size:100%;overflow:auto;grid-template-rows:1fr max-content}.main{display:grid;grid-template-areas:"server-url server-url" "authentication-type ." "user-name user-password";grid-auto-rows:max-content;grid-template-columns:1fr 1fr}.section{display:contents}.authentication-type{grid-area:authentication-type}.server-url{grid-area:server-url}.user-name{grid-area:user-name}.user-password{grid-area:user-password}.tooltip{position:absolute}';
|
|
15
|
-
|
|
16
|
-
var l = undefined && undefined.__classPrivateFieldGet || function(e, t, i, s) {
|
|
17
|
-
if (i === "a" && !s) throw new TypeError("Private accessor was defined without a getter");
|
|
18
|
-
if (typeof t === "function" ? e !== t || !s : !t.has(e)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
19
|
-
return i === "m" ? s : i === "a" ? s.call(e) : s ? s.value : t.get(e);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
var d = undefined && undefined.__classPrivateFieldSet || function(e, t, i, s, a) {
|
|
23
|
-
if (s === "m") throw new TypeError("Private method is not writable");
|
|
24
|
-
if (s === "a" && !a) throw new TypeError("Private accessor was defined without a setter");
|
|
25
|
-
if (typeof t === "function" ? e !== t || !a : !t.has(e)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
26
|
-
return s === "a" ? a.call(e, i) : a ? a.value = i : t.set(e, i), i;
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
var h, c, u, p, f, v, m, w, b, y, g, k;
|
|
30
|
-
|
|
31
|
-
const M = [ "resets/box-sizing", "components/tooltip", "utils/form--full", "utils/layout", "utils/typography", "utils/spacing", "chameleon/scrollbar" ];
|
|
32
|
-
|
|
33
|
-
const W = class {
|
|
34
|
-
constructor(i) {
|
|
35
|
-
e(this, i);
|
|
36
|
-
/**
|
|
37
|
-
* The component hard-coded strings translations.
|
|
38
|
-
*/
|
|
39
|
-
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
40
|
-
h.set(this, void 0);
|
|
41
|
-
c.set(this, void 0);
|
|
42
|
-
u.set(this, void 0);
|
|
43
|
-
p.set(this, void 0);
|
|
44
|
-
f.set(this, (() => {
|
|
45
|
-
this.cancelCallback();
|
|
46
|
-
}));
|
|
47
|
-
v.set(this, (async () => {
|
|
48
|
-
this.connectCallback(this.gxServerConnectionData).then((e => {
|
|
49
|
-
this.validatableControls = n(e, this.validatableControls);
|
|
50
|
-
}));
|
|
51
|
-
}));
|
|
52
|
-
// TODO: evaluate if this should be a global helper function.
|
|
53
|
-
// It is used on other dialogs as well.
|
|
54
|
-
m.set(this, (e => {
|
|
55
|
-
var i, s, n;
|
|
56
|
-
return ((s = (i = this.validatableControls) === null || i === void 0 ? void 0 : i.get(e === null || e === void 0 ? void 0 : e.id)) === null || s === void 0 ? void 0 : s.hasError) && ((n = this.validatableControls.get(e.id)) === null || n === void 0 ? void 0 : n.message) && t("ch-tooltip", {
|
|
57
|
-
class: "tooltip",
|
|
58
|
-
actionElement: e,
|
|
59
|
-
blockAlign: a.tooltipSettings.blockAlign,
|
|
60
|
-
inlineAlign: a.tooltipSettings.inlineAlign,
|
|
61
|
-
delay: a.tooltipSettings.delay
|
|
62
|
-
}, this.validatableControls.get(e.id).message);
|
|
63
|
-
}));
|
|
64
|
-
w.set(this, (() => {
|
|
65
|
-
var e, t, i, s;
|
|
66
|
-
this.authenticationTypesChanged(this.authenticationTypes);
|
|
67
|
-
// set initial values:
|
|
68
|
-
// server url
|
|
69
|
-
this.gxServerConnectionData.serverUrl = (e = this.defaultConnectionData) === null || e === void 0 ? void 0 : e.serverUrl;
|
|
70
|
-
//server name
|
|
71
|
-
this.gxServerConnectionData.serverName = (t = this.defaultConnectionData) === null || t === void 0 ? void 0 : t.serverName;
|
|
72
|
-
// authentication type
|
|
73
|
-
this.gxServerConnectionData.authenticationType = {
|
|
74
|
-
id: (i = this.authenticationTypesComboBoxModel[0]) === null || i === void 0 ? void 0 : i.value,
|
|
75
|
-
name: (s = this.authenticationTypesComboBoxModel[0]) === null || s === void 0 ? void 0 : s.caption
|
|
76
|
-
};
|
|
77
|
-
}));
|
|
78
|
-
b.set(this, (() => {
|
|
79
|
-
// populate #controlsValidation with the controls that could have errors.
|
|
80
|
-
const e = [ l(this, c, "f"), l(this, u, "f"), l(this, p, "f") ];
|
|
81
|
-
e.forEach((e => {
|
|
82
|
-
if (e.id) {
|
|
83
|
-
this.validatableControls.set(e.id, {
|
|
84
|
-
reference: e,
|
|
85
|
-
hasError: false,
|
|
86
|
-
message: undefined
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}));
|
|
90
|
-
}));
|
|
91
|
-
y.set(this, (e => {
|
|
92
|
-
const t = e.detail;
|
|
93
|
-
const i = this.authenticationTypes.findIndex((e => e.id === t));
|
|
94
|
-
const s = this.authenticationTypes[i].name;
|
|
95
|
-
this.gxServerConnectionData.authenticationType = {
|
|
96
|
-
id: t,
|
|
97
|
-
name: s
|
|
98
|
-
};
|
|
99
|
-
}));
|
|
100
|
-
g.set(this, (e => {
|
|
101
|
-
this.gxServerConnectionData.userName = e.detail;
|
|
102
|
-
}));
|
|
103
|
-
k.set(this, (e => {
|
|
104
|
-
this.gxServerConnectionData.userPassword = e.detail;
|
|
105
|
-
}));
|
|
106
|
-
this.authenticationTypesComboBoxModel = undefined;
|
|
107
|
-
this.gxServerConnectionData = {
|
|
108
|
-
authenticationType: {
|
|
109
|
-
id: null,
|
|
110
|
-
name: null
|
|
111
|
-
},
|
|
112
|
-
serverUrl: null,
|
|
113
|
-
userName: null,
|
|
114
|
-
userPassword: null,
|
|
115
|
-
serverName: null
|
|
116
|
-
};
|
|
117
|
-
this.validatableControls = new Map;
|
|
118
|
-
this.authenticationTypes = undefined;
|
|
119
|
-
this.cancelCallback = undefined;
|
|
120
|
-
this.connectCallback = undefined;
|
|
121
|
-
this.defaultConnectionData = undefined;
|
|
122
|
-
this.enableCustomServer = false;
|
|
123
|
-
}
|
|
124
|
-
authenticationTypesChanged(e) {
|
|
125
|
-
if (e === null || e === void 0 ? void 0 : e.length) {
|
|
126
|
-
this.authenticationTypesComboBoxModel = mapAuthenticationTypeToComboBoxModel(e);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
async componentWillLoad() {
|
|
130
|
-
d(this, h, await o.getComponentStrings(this.el), "f");
|
|
131
|
-
l(this, w, "f").call(this);
|
|
132
|
-
}
|
|
133
|
-
async componentDidLoad() {
|
|
134
|
-
l(this, b, "f").call(this);
|
|
135
|
-
}
|
|
136
|
-
render() {
|
|
137
|
-
var e, s, a, n;
|
|
138
|
-
return t(i, {
|
|
139
|
-
class: "widget"
|
|
140
|
-
}, t("ch-theme", {
|
|
141
|
-
model: M
|
|
142
|
-
}), t("section", {
|
|
143
|
-
class: "section"
|
|
144
|
-
}, t("div", {
|
|
145
|
-
class: "main field-group spacing-body"
|
|
146
|
-
}, t("div", {
|
|
147
|
-
// server urls
|
|
148
|
-
class: "field field-block server-url"
|
|
149
|
-
}, t("label", {
|
|
150
|
-
class: "label",
|
|
151
|
-
htmlFor: "server-url"
|
|
152
|
-
}, l(this, h, "f").main.serverURLLabel), t("ch-edit", {
|
|
153
|
-
type: "url",
|
|
154
|
-
id: "server-url",
|
|
155
|
-
class: "input",
|
|
156
|
-
value: (e = this.gxServerConnectionData) === null || e === void 0 ? void 0 : e.serverUrl,
|
|
157
|
-
readonly: true,
|
|
158
|
-
ref: e => d(this, p, e, "f")
|
|
159
|
-
})), t("div", {
|
|
160
|
-
// authentication types
|
|
161
|
-
class: "field field-block authentication-type"
|
|
162
|
-
}, t("label", {
|
|
163
|
-
class: "label",
|
|
164
|
-
htmlFor: "authentication-type"
|
|
165
|
-
}, l(this, h, "f").main.authenticationTypeLabel), t("ch-combo-box-render", {
|
|
166
|
-
id: "authentication-type",
|
|
167
|
-
class: "combo-box",
|
|
168
|
-
accessibleName: "Authentication Types",
|
|
169
|
-
model: this.authenticationTypesComboBoxModel,
|
|
170
|
-
placeholder: "Select an authentication type",
|
|
171
|
-
value: (s = this.gxServerConnectionData) === null || s === void 0 ? void 0 : s.authenticationType.id,
|
|
172
|
-
onInput: l(this, y, "f")
|
|
173
|
-
})), t("div", {
|
|
174
|
-
// username
|
|
175
|
-
class: "field field-block user-name"
|
|
176
|
-
}, t("label", {
|
|
177
|
-
class: "label",
|
|
178
|
-
htmlFor: "username"
|
|
179
|
-
}, l(this, h, "f").main.usernameLabel), t("ch-edit", {
|
|
180
|
-
type: "text",
|
|
181
|
-
id: "username",
|
|
182
|
-
class: "input",
|
|
183
|
-
value: (a = this.gxServerConnectionData) === null || a === void 0 ? void 0 : a.userName,
|
|
184
|
-
onInput: l(this, g, "f"),
|
|
185
|
-
ref: e => d(this, c, e, "f")
|
|
186
|
-
}), l(this, m, "f").call(this, l(this, c, "f"))), t("div", {
|
|
187
|
-
// user password
|
|
188
|
-
class: "field field-block user-password"
|
|
189
|
-
}, t("label", {
|
|
190
|
-
class: "label",
|
|
191
|
-
htmlFor: "password"
|
|
192
|
-
}, l(this, h, "f").main.passwordLabel), t("ch-edit", {
|
|
193
|
-
type: "password",
|
|
194
|
-
id: "password",
|
|
195
|
-
class: "input",
|
|
196
|
-
value: (n = this.gxServerConnectionData) === null || n === void 0 ? void 0 : n.userPassword,
|
|
197
|
-
onInput: l(this, k, "f"),
|
|
198
|
-
ref: e => d(this, u, e, "f"),
|
|
199
|
-
showPasswordButton: true
|
|
200
|
-
}), l(this, m, "f").call(this, l(this, u, "f")))), t("footer", {
|
|
201
|
-
class: "control-footer-with-border spacing-body"
|
|
202
|
-
}, t("div", {
|
|
203
|
-
class: "buttons-spacer"
|
|
204
|
-
}, t("button", {
|
|
205
|
-
// cancel button
|
|
206
|
-
class: "button-secondary",
|
|
207
|
-
onClick: l(this, f, "f")
|
|
208
|
-
}, l(this, h, "f").footer.backButtonCaption), t("button", {
|
|
209
|
-
// connect button
|
|
210
|
-
class: "button-primary",
|
|
211
|
-
onClick: l(this, v, "f")
|
|
212
|
-
}, l(this, h, "f").footer.connectButtonCaption)))));
|
|
213
|
-
}
|
|
214
|
-
static get assetsDirs() {
|
|
215
|
-
return [ "gx-ide-assets/connect-gx-server" ];
|
|
216
|
-
}
|
|
217
|
-
get el() {
|
|
218
|
-
return s(this);
|
|
219
|
-
}
|
|
220
|
-
static get watchers() {
|
|
221
|
-
return {
|
|
222
|
-
authenticationTypes: [ "authenticationTypesChanged" ]
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
h = new WeakMap, c = new WeakMap, u = new WeakMap, p = new WeakMap, f = new WeakMap,
|
|
228
|
-
v = new WeakMap, m = new WeakMap, w = new WeakMap, b = new WeakMap, y = new WeakMap,
|
|
229
|
-
g = new WeakMap, k = new WeakMap;
|
|
230
|
-
|
|
231
|
-
W.style = r;
|
|
232
|
-
|
|
233
|
-
export { W as gx_ide_connect_gx_server };
|
|
234
|
-
//# sourceMappingURL=p-a105f903.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["mapAuthenticationTypeToComboBoxModel","authenticationTypes","map","authenticationType","value","id","caption","name","connectGxServerCss","CSS_BUNDLES","HTMLGxIdeConnectGxServer","_HTMLGxIdeConnectGxServer_componentLocale","set","this","_HTMLGxIdeConnectGxServer_usernameRef","_HTMLGxIdeConnectGxServer_passwordRef","_HTMLGxIdeConnectGxServer_serverUrlRef","_HTMLGxIdeConnectGxServer_cancelClickHandler","cancelCallback","_HTMLGxIdeConnectGxServer_connectClickHandler","async","connectCallback","gxServerConnectionData","then","formSubmitResult","validatableControls","validateControls","_HTMLGxIdeConnectGxServer_evaluateTooltipRender","controlReference","_b","_a","get","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_HTMLGxIdeConnectGxServer_init","authenticationTypesChanged","serverUrl","defaultConnectionData","serverName","authenticationTypesComboBoxModel","_d","_HTMLGxIdeConnectGxServer_initializeValidatableControls","__classPrivateFieldGet","forEach","validatableControl","reference","undefined","_HTMLGxIdeConnectGxServer_authenticationInputEventHandler","event","authenticationTypeId","detail","authenticationTypeIndex","findIndex","authType","authenticationTypeName","_HTMLGxIdeConnectGxServer_usernameInputEventHandler","userName","_HTMLGxIdeConnectGxServer_passwordInputEventHandler","userPassword","Map","newAuthenticationTypes","length","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","call","componentDidLoad","render","Host","model","htmlFor","main","serverURLLabel","type","readonly","ref","authenticationTypeLabel","accessibleName","placeholder","onInput","usernameLabel","passwordLabel","showPasswordButton","onClick","footer","backButtonCaption","connectButtonCaption"],"sources":["src/components/team-dev/connect-gx-server/helpers.ts","src/components/team-dev/connect-gx-server/connect-gx-server.scss?tag=gx-ide-connect-gx-server&encapsulation=shadow","src/components/team-dev/connect-gx-server/connect-gx-server.tsx"],"sourcesContent":["import { AuthenticationType } from \"./connect-gx-server\";\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\n\nexport const mapAuthenticationTypeToComboBoxModel = (\n authenticationTypes: AuthenticationType[]\n): ComboBoxModel => {\n return authenticationTypes.map(authenticationType => {\n return {\n value: authenticationType.id,\n caption: authenticationType.name\n };\n });\n};\n\nexport const mapServerUrlsToComboBoxModel = (\n serverUrls: string[]\n): ComboBoxModel => {\n return serverUrls.map(serverUrl => {\n return {\n value: serverUrl,\n caption: serverUrl\n };\n });\n};\n",":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: 1fr max-content;\n}\n\n.main {\n display: grid;\n grid-template-areas:\n \"server-url server-url\"\n \"authentication-type .\"\n \"user-name user-password\";\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr;\n}\n\n.section {\n display: contents;\n}\n\n.authentication-type {\n grid-area: authentication-type;\n}\n.server-url {\n grid-area: server-url;\n}\n.user-name {\n grid-area: user-name;\n}\n.user-password {\n grid-area: user-password;\n}\n\n.tooltip {\n position: absolute;\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\n\n// Other Libraries\nimport { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\nimport { mapAuthenticationTypeToComboBoxModel } from \"./helpers\";\nimport { NewServerConnectionData } from \"../server-selector/server-selector\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-connect-gx-server\",\n styleUrl: \"connect-gx-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/connect-gx-server\"]\n})\nexport class HTMLGxIdeConnectGxServer {\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 @Element() el: HTMLGxIdeConnectGxServerElement;\n #usernameRef!: HTMLChEditElement;\n #passwordRef!: HTMLChEditElement;\n #serverUrlRef!: HTMLChEditElement;\n\n @State() authenticationTypesComboBoxModel: ComboBoxModel;\n @State() gxServerConnectionData: GXServerConnectionData = {\n authenticationType: {\n id: null,\n name: null\n },\n serverUrl: null,\n userName: null,\n userPassword: null,\n serverName: null\n };\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * List of authentication types.\n */\n @Prop() readonly authenticationTypes!: AuthenticationType[];\n @Watch(\"authenticationTypes\")\n authenticationTypesChanged(newAuthenticationTypes: AuthenticationType[]) {\n if (newAuthenticationTypes?.length) {\n this.authenticationTypesComboBoxModel =\n mapAuthenticationTypeToComboBoxModel(newAuthenticationTypes);\n }\n }\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Connect' button is pressed.\n */\n @Prop() readonly connectCallback!: (\n data: GXServerConnectionData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Initial user values for the case in which the user returns to the\n * login modal after successful authentication.\n */\n @Prop() readonly defaultConnectionData?: NewServerConnectionData;\n\n /**\n * true if the user should be allowed to manually enter a server URL.\n */\n @Prop() readonly enableCustomServer: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#init();\n }\n\n async componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n #cancelClickHandler = () => {\n this.cancelCallback();\n };\n\n #connectClickHandler = async () => {\n this.connectCallback(this.gxServerConnectionData).then(\n (formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n }\n );\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #init = () => {\n this.authenticationTypesChanged(this.authenticationTypes);\n // set initial values:\n // server url\n this.gxServerConnectionData.serverUrl =\n this.defaultConnectionData?.serverUrl;\n //server name\n this.gxServerConnectionData.serverName =\n this.defaultConnectionData?.serverName;\n // authentication type\n this.gxServerConnectionData.authenticationType = {\n id: this.authenticationTypesComboBoxModel[0]?.value,\n name: this.authenticationTypesComboBoxModel[0]?.caption\n };\n };\n\n #initializeValidatableControls = () => {\n // populate #controlsValidation with the controls that could have errors.\n const validatableControls: HTMLElement[] = [\n this.#usernameRef,\n this.#passwordRef,\n this.#serverUrlRef\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 #authenticationInputEventHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n const authenticationTypeId = event.detail as string;\n const authenticationTypeIndex = this.authenticationTypes.findIndex(\n authType => {\n return authType.id === authenticationTypeId;\n }\n );\n const authenticationTypeName =\n this.authenticationTypes[authenticationTypeIndex].name;\n\n this.gxServerConnectionData.authenticationType = {\n id: authenticationTypeId,\n name: authenticationTypeName\n };\n };\n #usernameInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userName = event.detail as string;\n };\n #passwordInputEventHandler = (event: CustomEvent<string> | InputEvent) => {\n this.gxServerConnectionData.userPassword = event.detail as string;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <div class=\"main field-group spacing-body\">\n <div\n // server urls\n class=\"field field-block server-url\"\n >\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#componentLocale.main.serverURLLabel}\n </label>\n <ch-edit\n type=\"url\"\n id=\"server-url\"\n class=\"input\"\n value={this.gxServerConnectionData?.serverUrl}\n readonly={true}\n ref={(el: HTMLChEditElement) =>\n (this.#serverUrlRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n </div>\n\n <div\n // authentication types\n class=\"field field-block authentication-type\"\n >\n <label class=\"label\" htmlFor=\"authentication-type\">\n {this.#componentLocale.main.authenticationTypeLabel}\n </label>\n <ch-combo-box-render\n id=\"authentication-type\"\n class=\"combo-box\"\n accessibleName=\"Authentication Types\"\n model={this.authenticationTypesComboBoxModel}\n placeholder=\"Select an authentication type\"\n value={this.gxServerConnectionData?.authenticationType.id}\n onInput={this.#authenticationInputEventHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // username\n class=\"field field-block user-name\"\n >\n <label class=\"label\" htmlFor=\"username\">\n {this.#componentLocale.main.usernameLabel}\n </label>\n <ch-edit\n type=\"text\"\n id=\"username\"\n class=\"input\"\n value={this.gxServerConnectionData?.userName}\n onInput={this.#usernameInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#usernameRef = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#usernameRef)}\n </div>\n\n <div\n // user password\n class=\"field field-block user-password\"\n >\n <label class=\"label\" htmlFor=\"password\">\n {this.#componentLocale.main.passwordLabel}\n </label>\n <ch-edit\n type=\"password\"\n id=\"password\"\n class=\"input\"\n value={this.gxServerConnectionData?.userPassword}\n onInput={this.#passwordInputEventHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#passwordRef = el as HTMLChEditElement)\n }\n showPasswordButton={true}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#passwordRef)}\n </div>\n </div>\n\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelClickHandler}\n >\n {this.#componentLocale.footer.backButtonCaption}\n </button>\n\n <button\n // connect button\n class=\"button-primary\"\n onClick={this.#connectClickHandler}\n >\n {this.#componentLocale.footer.connectButtonCaption}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type GXServerConnectionData = {\n authenticationType: AuthenticationType;\n serverUrl: string;\n userName: string;\n userPassword: string;\n serverName?: string;\n};\n\nexport type AuthenticationType = {\n id: string;\n name: string;\n};\n"],"mappings":";;;;;;;;AAGO,MAAMA,uCACXC,KAEOA,EAAoBC,KAAIC,MACtB;EACLC,OAAOD,EAAmBE;EAC1BC,SAASH,EAAmBI;;;ACTlC,MAAMC,IAAqB;;;;;;;;;;;;;;;;;ACkB3B,MAAMC,IAA8B,EAClC,qBACA,sBACA,oBACA,gBACA,oBACA,iBACA;;MASWC,IAAwB;;;;;;;QAKnCC,EAAAC,IAAAC,WAAA;IAGAC,EAAAF,IAAAC,WAAA;IACAE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,WAAA;IA4DAI,EAAAL,IAAAC,OAAsB;MACpBA,KAAKK;AAAgB;IAGvBC,EAAAP,IAAAC,OAAuBO;MACrBP,KAAKQ,gBAAgBR,KAAKS,wBAAwBC,MAC/CC;QACCX,KAAKY,sBAAsBC,EACzBF,GACAX,KAAKY;AACN;AAEJ;;;QAKHE,EAAAf,IAAAC,OACEe;;MAEA,SAAAC,KAAAC,IAAAjB,KAAKY,yBAAmB,QAAAK,WAAA,aAAAA,EAAEC,IAAIH,MAAgB,QAAhBA,WAAgB,aAAhBA,EAAkBvB,SAAG,QAAAwB,WAAA,aAAAA,EAAEG,eACrDC,IAAApB,KAAKY,oBAAoBM,IAAIH,EAAiBvB,SAAG,QAAA4B,WAAA,aAAAA,EAAEC,YACjDC,EAAA;QACEC,OAAM;QACNC,eAAeT;QACfU,YAAYC,EAAOC,gBAAgBF;QACnCG,aAAaF,EAAOC,gBAAgBC;QACpCC,OAAOH,EAAOC,gBAAgBE;SAE7B7B,KAAKY,oBAAoBM,IAAIH,EAAiBvB,IAAI6B;AAEtD;IAEHS,EAAA/B,IAAAC,OAAQ;;MACNA,KAAK+B,2BAA2B/B,KAAKZ;;;YAGrCY,KAAKS,uBAAuBuB,aAC1Bf,IAAAjB,KAAKiC,2BAAqB,QAAAhB,WAAA,aAAAA,EAAEe;;YAE9BhC,KAAKS,uBAAuByB,cAC1BlB,IAAAhB,KAAKiC,2BAAqB,QAAAjB,WAAA,aAAAA,EAAEkB;;YAE9BlC,KAAKS,uBAAuBnB,qBAAqB;QAC/CE,KAAI4B,IAAApB,KAAKmC,iCAAiC,QAAE,QAAAf,WAAA,aAAAA,EAAE7B;QAC9CG,OAAM0C,IAAApC,KAAKmC,iCAAiC,QAAE,QAAAC,WAAA,aAAAA,EAAE3C;;AACjD;IAGH4C,EAAAtC,IAAAC,OAAiC;;MAE/B,MAAMY,IAAqC,EACzC0B,EAAAtC,MAAIC,GAAA,MACJqC,EAAAtC,MAAIE,GAAA,MACJoC,EAAAtC,MAAIG,GAAA;MAENS,EAAoB2B,SAAQC;QAC1B,IAAIA,EAAmBhD,IAAI;UACzBQ,KAAKY,oBAAoBb,IAAIyC,EAAmBhD,IAAI;YAClDiD,WAAWD;YACXrB,UAAU;YACVE,SAASqB;;;;AAGb;IAGJC,EAAA5C,IAAAC,OACE4C;MAEA,MAAMC,IAAuBD,EAAME;MACnC,MAAMC,IAA0B/C,KAAKZ,oBAAoB4D,WACvDC,KACSA,EAASzD,OAAOqD;MAG3B,MAAMK,IACJlD,KAAKZ,oBAAoB2D,GAAyBrD;MAEpDM,KAAKS,uBAAuBnB,qBAAqB;QAC/CE,IAAIqD;QACJnD,MAAMwD;;AACP;IAEHC,EAAApD,IAAAC,OAA8B4C;MAC5B5C,KAAKS,uBAAuB2C,WAAWR,EAAME;AAAgB;IAE/DO,EAAAtD,IAAAC,OAA8B4C;MAC5B5C,KAAKS,uBAAuB6C,eAAeV,EAAME;AAAgB;;kCAjJT;MACxDxD,oBAAoB;QAClBE,IAAI;QACJE,MAAM;;MAERsC,WAAW;MACXoB,UAAU;MACVE,cAAc;MACdpB,YAAY;;+BAEiB,IAAIqB;;;;;8BAmCY;;EA5B/C,0BAAAxB,CAA2ByB;IACzB,IAAIA,MAAsB,QAAtBA,WAAsB,aAAtBA,EAAwBC,QAAQ;MAClCzD,KAAKmC,mCACHhD,qCAAqCqE;;;EA2B3C,uBAAME;IACJC,EAAA3D,MAAIF,SAA0B8D,EAAOC,oBAAoB7D,KAAK8D,KAAG;IAEjExB,EAAAtC,MAAI8B,GAAA,KAAMiC,KAAV/D;;EAGF,sBAAMgE;IACJ1B,EAAAtC,MAAIqC,GAAA,KAA+B0B,KAAnC/D;;EA8FF,MAAAiE;;IACE,OACE3C,EAAC4C,GAAI;MAAC3C,OAAM;OACVD,EAAA;MAAU6C,OAAOvE;QAEjB0B,EAAA;MAASC,OAAM;OACbD,EAAA;MAAKC,OAAM;OACTD,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ6C,SAAQ;OAC1B9B,EAAAtC,MAAIF,GAAA,KAAkBuE,KAAKC,iBAE9BhD,EAAA;MACEiD,MAAK;MACL/E,IAAG;MACH+B,OAAM;MACNhC,QAAO0B,IAAAjB,KAAKS,4BAAsB,QAAAQ,WAAA,aAAAA,EAAEe;MACpCwC,UAAU;MACVC,KAAMX,KACHH,EAAA3D,MAAIG,GAAiB2D,GAAuB;SAKnDxC,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ6C,SAAQ;OAC1B9B,EAAAtC,MAAIF,GAAA,KAAkBuE,KAAKK,0BAE9BpD,EAAA;MACE9B,IAAG;MACH+B,OAAM;MACNoD,gBAAe;MACfR,OAAOnE,KAAKmC;MACZyC,aAAY;MACZrF,QAAOyB,IAAAhB,KAAKS,4BAAsB,QAAAO,WAAA,aAAAA,EAAE1B,mBAAmBE;MACvDqF,SAASvC,EAAAtC,MAAI2C,GAAA;SAIjBrB,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ6C,SAAQ;OAC1B9B,EAAAtC,MAAIF,GAAA,KAAkBuE,KAAKS,gBAE9BxD,EAAA;MACEiD,MAAK;MACL/E,IAAG;MACH+B,OAAM;MACNhC,QAAO6B,IAAApB,KAAKS,4BAAsB,QAAAW,WAAA,aAAAA,EAAEgC;MACpCyB,SAASvC,EAAAtC,MAAImD,GAAA;MACbsB,KAAMX,KACHH,EAAA3D,MAAIC,GAAgB6D,GAAuB;QAG/CxB,EAAAtC,MAAIc,GAAA,KAAuBiD,KAA3B/D,MAA4BsC,EAAAtC,MAAIC,GAAA,QAGnCqB,EAAA;;MAEEC,OAAM;OAEND,EAAA;MAAOC,OAAM;MAAQ6C,SAAQ;OAC1B9B,EAAAtC,MAAIF,GAAA,KAAkBuE,KAAKU,gBAE9BzD,EAAA;MACEiD,MAAK;MACL/E,IAAG;MACH+B,OAAM;MACNhC,QAAO6C,IAAApC,KAAKS,4BAAsB,QAAA2B,WAAA,aAAAA,EAAEkB;MACpCuB,SAASvC,EAAAtC,MAAIqD,GAAA;MACboB,KAAMX,KACHH,EAAA3D,MAAIE,GAAgB4D,GAAuB;MAE9CkB,oBAAoB;QAErB1C,EAAAtC,MAAIc,GAAA,KAAuBiD,KAA3B/D,MAA4BsC,EAAAtC,MAAIE,GAAA,SAIrCoB,EAAA;MAAQC,OAAM;OACZD,EAAA;MAAKC,OAAM;OACTD,EAAA;;MAEEC,OAAM;MACN0D,SAAS3C,EAAAtC,MAAII,GAAA;OAEZkC,EAAAtC,MAAIF,GAAA,KAAkBoF,OAAOC,oBAGhC7D,EAAA;;MAEEC,OAAM;MACN0D,SAAS3C,EAAAtC,MAAIM,GAAA;OAEZgC,EAAAtC,MAAIF,GAAA,KAAkBoF,OAAOE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["bringAllChangesSelectorCss","CSS_BUNDLES","MERGE_ACTION_OPTIONS","fromCommitDate","value","fromCommitNumber","GxIdeBringAllChangesSelector","_GxIdeBringAllChangesSelector_componentLocale","set","this","_GxIdeBringAllChangesSelector_revisionNumberRef","_GxIdeBringAllChangesSelector_revisionDateRef","_GxIdeBringAllChangesSelector_evaluateTooltipRender","controlReference","_b","_a","validatableControls","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeBringAllChangesSelector_initializeValidatableControls","forEach","validatableControl","has","reference","undefined","_GxIdeBringAllChangesSelector_cancelClickHandler","async","cancelCallback","_GxIdeBringAllChangesSelector_confirmClickHandler","formSubmitResult","selectedMergeActionData","operationType","selectedOption","fromDate","sinceCommitDate","fromRevision","sinceCommitNumber","confirmCallback","validateControls","_GxIdeBringAllChangesSelector_handleLastDates","lastDates","currentDate","Date","sinceDate","setDate","getDate","_GxIdeBringAllChangesSelector_handleCommitDateValueChanged","event","detail","year","month","day","split","map","Number","clearControlError","_GxIdeBringAllChangesSelector_handleCommitNumberValueChanged","_GxIdeBringAllChangesSelector_handleRadioGroupValueChange","_GxIdeBringAllChangesSelector_confirmButtonDisabled","isNaN","getTime","_GxIdeBringAllChangesSelector_renderCommitDateInput","htmlFor","__classPrivateFieldGet","labels","commitDate","input","type","toISOString","onInput","ref","el","__classPrivateFieldSet","call","_GxIdeBringAllChangesSelector_renderCommitNumberInput","commitNumber","placeholder","placeholders","mode","_GxIdeBringAllChangesSelector_renderLastDatesButtons","onClick","captions","lastSevenDays","lastThirtyDays","lastNinetyDays","Map","componentWillLoad","Locale","getComponentStrings","radioGroupModel","caption","componentDidRender","render","Host","model","selectRange","direction","onChange","buttons","cancel","disabled","confirm"],"sources":["src/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.scss?tag=gx-ide-team-dev-bring-all-changes-selector&encapsulation=shadow","src/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.commit-date-container,\n.commit-number-container {\n display: grid;\n gap: 15px;\n}\n\n.commit-date-container {\n grid-template-rows: max-content max-content max-content max-content;\n}\n\n.commit-number-container {\n grid-template-rows: max-content max-content max-content;\n}\n\n.heading {\n margin-block: 0;\n}\n\n.tooltip {\n position: absolute;\n}\n","import { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\nimport {\n ChRadioGroupRenderCustomEvent,\n RadioGroupModel\n} from \"@genexus/chameleon-controls-library\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../components\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { config } from \"../../../common/config\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/spacing\",\n \"utils/layout\",\n \"components/checkbox\",\n \"components/button\",\n \"components/edit\",\n \"components/radio-group\",\n \"components/tooltip\"\n];\n\nconst MERGE_ACTION_OPTIONS = {\n fromCommitDate: {\n value: \"fromCommitDate\"\n },\n fromCommitNumber: {\n value: \"fromCommitNumber\"\n }\n};\n\n@Component({\n tag: \"gx-ide-team-dev-bring-all-changes-selector\",\n styleUrl: \"bring-all-changes-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-all-changes-selector\"]\n})\nexport class GxIdeBringAllChangesSelector {\n #componentLocale: any;\n #revisionNumberRef: HTMLChEditElement;\n #revisionDateRef: HTMLChEditElement;\n @Element() el: HTMLGxIdeTeamDevBringAllChangesSelectorElement;\n /**\n * Date from which the commits will be merged\n */\n @State() sinceCommitDate: Date | undefined = undefined;\n\n /**\n * Number from which the commits will be merged\n */\n @State() sinceCommitNumber: number | undefined = undefined;\n\n /**\n * The selected option from the radio group.\n */\n @State() selectedOption: MergeActionTaken = MERGE_ACTION_OPTIONS\n .fromCommitDate.value as MergeActionTaken;\n\n /**\n * Model for the radio group.\n */\n @State() radioGroupModel: RadioGroupModel = [];\n\n /**\n * Map of validatable controls in the form.\n */\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the 'Cancel' button is pressed.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed.\n */\n @Prop() readonly confirmCallback!: (\n selectedMergeActionData: SelectedMergeActionData\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.radioGroupModel = [\n {\n value: MERGE_ACTION_OPTIONS.fromCommitDate.value,\n caption: this.#componentLocale.captions.commitDate\n },\n {\n value: MERGE_ACTION_OPTIONS.fromCommitNumber.value,\n caption: this.#componentLocale.captions.commitNumber\n }\n ];\n }\n\n componentDidRender() {\n if (this.selectedOption === \"fromCommitDate\" && this.#revisionDateRef) {\n this.#initializeValidatableControls([this.#revisionDateRef]);\n }\n\n if (this.selectedOption === \"fromCommitNumber\" && this.#revisionNumberRef) {\n this.#initializeValidatableControls([this.#revisionNumberRef]);\n }\n }\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #initializeValidatableControls = (validatableControls: HTMLElement[]) => {\n validatableControls.forEach(validatableControl => {\n if (\n validatableControl.id &&\n !this.validatableControls.has(validatableControl.id)\n ) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #cancelClickHandler = async () => {\n await this.cancelCallback();\n };\n\n #confirmClickHandler = async () => {\n let formSubmitResult: FormSubmitResult;\n const selectedMergeActionData: SelectedMergeActionData = {\n operationType: this.selectedOption,\n fromDate:\n this.selectedOption === \"fromCommitDate\"\n ? this.sinceCommitDate\n : undefined,\n fromRevision:\n this.selectedOption === \"fromCommitNumber\"\n ? this.sinceCommitNumber\n : undefined\n };\n formSubmitResult = await this.confirmCallback(selectedMergeActionData);\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n };\n\n #handleLastDates = (lastDates: LastDates) => {\n const currentDate = new Date();\n let sinceDate = new Date();\n switch (lastDates) {\n case \"lastSevenDays\":\n sinceDate.setDate(currentDate.getDate() - 7);\n break;\n case \"lastThirtyDays\":\n sinceDate.setDate(currentDate.getDate() - 30);\n break;\n case \"lastNinetyDays\":\n sinceDate.setDate(currentDate.getDate() - 90);\n break;\n }\n this.sinceCommitDate = sinceDate;\n };\n\n #handleCommitDateValueChanged = (event: CustomEvent<string> | InputEvent) => {\n const value = event.detail as string;\n if (value && value !== \"\") {\n const [year, month, day] = value.split(\"-\").map(Number);\n this.sinceCommitDate = new Date(year, month - 1, day);\n } else {\n this.sinceCommitDate = undefined;\n }\n clearControlError(this.validatableControls, \"commit-date\");\n };\n\n #handleCommitNumberValueChanged = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.sinceCommitNumber = Number(event.detail);\n clearControlError(this.validatableControls, \"commit-number\");\n };\n\n #handleRadioGroupValueChange = (\n event: ChRadioGroupRenderCustomEvent<string>\n ) => {\n this.selectedOption = event.detail as MergeActionTaken;\n if (this.selectedOption === \"fromCommitDate\") {\n this.sinceCommitNumber = undefined;\n clearControlError(this.validatableControls, \"commit-number\");\n } else if (this.selectedOption === \"fromCommitNumber\") {\n this.sinceCommitDate = undefined;\n clearControlError(this.validatableControls, \"commit-date\");\n }\n };\n\n #confirmButtonDisabled = (): boolean => {\n if (this.selectedOption === \"fromCommitDate\") {\n // Validate that sinceCommitDate is a valid date\n return !(\n this.sinceCommitDate instanceof Date &&\n !isNaN(this.sinceCommitDate.getTime())\n );\n } else if (this.selectedOption === \"fromCommitNumber\") {\n // Validate that sinceCommitNumber is a valid number\n return !(this.sinceCommitNumber > 0);\n }\n return true;\n };\n\n #renderCommitDateInput = () => {\n if (this.selectedOption !== \"fromCommitDate\") {\n return null;\n }\n return (\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"commit-date\">\n {this.#componentLocale.labels.commitDate}\n </label>\n <ch-edit\n class={{\n \"input\": true,\n \"input-error\":\n this.validatableControls.get(\"commit-date\")?.hasError\n }}\n id=\"commit-date\"\n type=\"date\"\n value={\n this.sinceCommitDate &&\n this.sinceCommitDate.toISOString().split(\"T\")[0]\n }\n onInput={this.#handleCommitDateValueChanged}\n ref={(el: HTMLChEditElement) =>\n (this.#revisionDateRef = el as HTMLChEditElement)\n }\n />\n {this.#evaluateTooltipRender(this.#revisionDateRef)}\n </div>\n </div>\n </div>\n );\n };\n\n #renderCommitNumberInput = () => {\n if (this.selectedOption !== \"fromCommitNumber\") {\n return null;\n }\n return (\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"commit-number\">\n {this.#componentLocale.labels.commitNumber}\n </label>\n <ch-edit\n class={{\n \"input\": true,\n \"input-error\":\n this.validatableControls.get(\"commit-number\")?.hasError\n }}\n id=\"commit-number\"\n type=\"number\"\n placeholder={this.#componentLocale.placeholders.commitNumber}\n onInput={this.#handleCommitNumberValueChanged}\n mode=\"numeric\"\n ref={(el: HTMLChEditElement) =>\n (this.#revisionNumberRef = el as HTMLChEditElement)\n }\n />\n {this.#evaluateTooltipRender(this.#revisionNumberRef)}\n </div>\n </div>\n </div>\n );\n };\n\n #renderLastDatesButtons = () => {\n if (this.selectedOption !== \"fromCommitDate\") {\n return null;\n }\n\n return (\n <div class=\"layout layout--cols-3\">\n <div class=\"layout__panel\">\n <button\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastSevenDays\")}\n >\n {this.#componentLocale.captions.lastSevenDays}\n </button>\n </div>\n <div class=\"layout__panel\">\n <button\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastThirtyDays\")}\n >\n {this.#componentLocale.captions.lastThirtyDays}\n </button>\n </div>\n <div class=\"layout__panel\">\n <button\n class=\"button-secondary\"\n onClick={() => this.#handleLastDates(\"lastNinetyDays\")}\n >\n {this.#componentLocale.captions.lastNinetyDays}\n </button>\n </div>\n </div>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div\n class={{\n \"spacing-body\": true,\n \"commit-date-container\": this.selectedOption === \"fromCommitDate\",\n \"commit-number-container\":\n this.selectedOption === \"fromCommitNumber\"\n }}\n >\n <p class=\"body-regular-m heading\">\n {this.#componentLocale.labels.selectRange}\n </p>\n <ch-radio-group-render\n class=\"radio-group\"\n direction=\"horizontal\"\n model={this.radioGroupModel}\n onChange={this.#handleRadioGroupValueChange}\n value={MERGE_ACTION_OPTIONS.fromCommitDate.value}\n />\n\n {this.#renderLastDatesButtons()}\n {this.#renderCommitDateInput()}\n {this.#renderCommitNumberInput()}\n </div>\n\n <footer class=\"control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button class=\"button-secondary\" onClick={this.#cancelClickHandler}>\n {this.#componentLocale.buttons.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n onClick={this.#confirmClickHandler}\n disabled={this.#confirmButtonDisabled()}\n >\n {this.#componentLocale.buttons.confirm}\n </button>\n </div>\n </footer>\n </Host>\n );\n }\n}\n\nexport type SelectedMergeActionData = {\n operationType: MergeActionTaken;\n fromDate?: Date;\n fromRevision?: number;\n};\n\nexport type MergeActionTaken = \"fromCommitDate\" | \"fromCommitNumber\";\n\nexport type LastDates = \"lastSevenDays\" | \"lastThirtyDays\" | \"lastNinetyDays\";\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["restoreVersionCss","CSS_BUNDLES","SHOW_MORE_ICON","getIconPath","category","name","colorType","VERSION_FROZEN_OBJECT_ICON","VERSION_OBJECT_ICON","VERSION_ICON","GxIdeRestoreVersion","_GxIdeRestoreVersion_componentLocale","set","this","_GxIdeRestoreVersion_confirmHandler","async","restoreVersionData","toVersionGuid","toVersionInfo","guid","toVersionName","fromVersionGuid","versions","find","version","selectedSourceVersionName","fromVersionName","syncEnvironments","confirmCallback","_GxIdeRestoreVersion_cancelHandler","cancelCallback","_GxIdeRestoreVersion_versionsToComboBoxItemModel","versionsComboBoxModel","map","caption","value","startImgSrc","isFrozen","_GxIdeRestoreVersion_handleComboBoxInput","event","detail","_GxIdeRestoreVersion_selectSourceVersionHandler","selectedSourceVersion","selectSourceVersionCallback","_GxIdeRestoreVersion_renderFooter","disableConfirmButton","some","v","h","class","onClick","__classPrivateFieldGet","footer","cancel","disabled","confirm","versionsChanged","call","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","render","Host","model","type","src","descriptions","pill","summary","htmlFor","labels","fromVersion","id","placeholder","placeHolders","suggest","onInput"],"sources":["src/components/restore-version/restore-version.scss?tag=gx-ide-restore-version&encapsulation=shadow","src/components/restore-version/restore-version.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: 1fr max-content;\n}\n\n.main-container {\n display: grid;\n grid-template-rows: max-content max-content max-content;\n gap: var(--mer-spacing--md);\n}\n\n.versions-container {\n display: grid;\n grid-template-columns: 1fr max-content;\n gap: var(--mer-spacing--xs);\n\n .button-icon-only {\n border-color: var(--mer-color__neutral-gray--500);\n border-width: var(--mer-border__width--sm);\n border-radius: var(--mer-border__radius--sm);\n }\n\n .button-icon-only:hover {\n border-color: var(--mer-color__neutral-gray--100);\n }\n}\n\n.giu-static-pill-icon-and-text {\n background-color: var(--mer-surface__elevation--02);\n}\n","import {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport { Locale } from \"../../common/locale\";\nimport { KBVersion } from \"../team-dev/version-control/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 \"chameleon/scrollbar\"\n];\n\nconst SHOW_MORE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"on-elevation\"\n});\n\nconst VERSION_FROZEN_OBJECT_ICON = getIconPath({\n category: \"objects\",\n name: \"version-frozen\"\n});\n\nconst VERSION_OBJECT_ICON = getIconPath({\n category: \"objects\",\n name: \"version\"\n});\n\nconst VERSION_ICON = getIconPath({\n category: \"system\",\n name: \"version\",\n colorType: \"on-surface\"\n});\n\n// Uncomment this when the sync environments feature is available\n// const CHECKBOX_CHECKED_VALUE = \"true\";\n\n@Component({\n tag: \"gx-ide-restore-version\",\n styleUrl: \"restore-version.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/restore-version\"]\n})\nexport class GxIdeRestoreVersion {\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeRestoreVersionElement;\n\n /**\n * Indicates if the environments should be synchronized.\n */\n @State() syncEnvironments: boolean = false;\n\n /**\n * Input value for the source version selector.\n */\n @State() selectedSourceVersionName: string = \"\";\n\n /**\n * Selected source version from version selector.\n */\n @State() selectedSourceVersion: KBVersion[] = [];\n\n /**\n * Combo box model for the versions selector.\n */\n @State() versionsComboBoxModel: ComboBoxModel = [];\n\n /**\n * Callback invoked by pressing the ellipsis in the version selector.\n */\n @Prop() readonly selectSourceVersionCallback!: () => Promise<KBVersion[]>;\n\n /**\n * Callback invoked by pressing the Confirm button.\n */\n @Prop() readonly confirmCallback!: (\n restoreVersionData: RestoreVersionData\n ) => Promise<void>;\n\n /**\n * Callback invoked by pressing the Cancel button.\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * The target version to which the restore will be made.\n */\n @Prop() readonly toVersionInfo!: KBVersion;\n\n /**\n * List of versions to show in the versions combo box.\n */\n @Prop() readonly versions!: KBVersion[];\n @Watch(\"versions\")\n versionsChanged() {\n this.#versionsToComboBoxItemModel(this.versions);\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#versionsToComboBoxItemModel(this.versions || []);\n }\n\n #confirmHandler = async () => {\n const restoreVersionData = {\n toVersionGuid: this.toVersionInfo.guid,\n toVersionName: this.toVersionInfo.name,\n fromVersionGuid: this.versions.find(\n version => version.name === this.selectedSourceVersionName\n ).guid,\n fromVersionName: this.selectedSourceVersionName,\n syncEnvironments: this.syncEnvironments\n };\n await this.confirmCallback(restoreVersionData);\n };\n\n #cancelHandler = async () => {\n await this.cancelCallback();\n };\n\n #versionsToComboBoxItemModel = (versions: KBVersion[]) => {\n this.versionsComboBoxModel = versions.map(version => ({\n caption: version.name,\n value: version.guid,\n startImgSrc: version.isFrozen\n ? VERSION_FROZEN_OBJECT_ICON\n : VERSION_OBJECT_ICON\n }));\n };\n\n #handleComboBoxInput = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n this.selectedSourceVersionName = event.detail as string;\n };\n // Uncomment this when the sync environments feature is available\n // #handleCheckBoxValueChange = (\n // event: ChCheckboxCustomEvent<any> | InputEvent\n // ) => {\n // this.syncEnvironments = event.detail === CHECKBOX_CHECKED_VALUE;\n // };\n\n #selectSourceVersionHandler = async () => {\n this.selectedSourceVersion = await this.selectSourceVersionCallback();\n this.selectedSourceVersionName = this.selectedSourceVersion[0].name;\n };\n\n #renderFooter = () => {\n const disableConfirmButton =\n !this.selectedSourceVersionName ||\n !this.versionsComboBoxModel.some(\n v => v.caption === this.selectedSourceVersionName\n );\n return (\n <footer class=\"footer control-footer-with-border spacing-body\">\n <div class=\"buttons-spacer\">\n <button class=\"button-secondary\" onClick={this.#cancelHandler}>\n {this.#componentLocale.footer.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n onClick={this.#confirmHandler}\n disabled={disableConfirmButton}\n >\n {this.#componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <div class=\"main-container spacing-body\">\n <div>\n <p class=\"giu-static-pill-icon-and-text\">\n <ch-image\n class=\"icon-md\"\n type=\"mask\"\n src={VERSION_ICON}\n ></ch-image>\n <span>{`${this.#componentLocale.descriptions.pill} - ${this.toVersionInfo.name}`}</span>\n </p>\n </div>\n <p class=\"body-regular-m\">\n {this.#componentLocale.descriptions.summary}\n </p>\n\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"versions-combo-box\">\n {this.#componentLocale.labels.fromVersion}\n </label>\n <div class=\"versions-container\">\n <ch-combo-box-render\n class=\"combo-box\"\n id=\"versions-combo-box\"\n model={this.versionsComboBoxModel}\n placeholder={this.#componentLocale.placeHolders.fromVersion}\n value={this.selectedSourceVersionName}\n suggest={true}\n onInput={this.#handleComboBoxInput}\n />\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#selectSourceVersionHandler}\n >\n <ch-image src={SHOW_MORE_ICON} class=\"icon-sm\"></ch-image>\n </button>\n </div>\n </div>\n\n {\n // Uncomment this when the sync environments feature is available\n /* <ch-checkbox\n class=\"checkbox\"\n caption={this.#componentLocale.buttons.syncEnvironments}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n onInput={this.#handleCheckBoxValueChange}\n /> */\n }\n </div>\n {this.#renderFooter()}\n </Host>\n );\n }\n}\n\nexport type RestoreVersionData = {\n fromVersionName: string;\n fromVersionGuid: string;\n toVersionGuid: string;\n toVersionName: string;\n syncEnvironments: boolean;\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA,MAAMA,IAAoB;;;;;;;;;;;;;;;;;ACS1B,MAAMC,IAA8B,EAClC,qBACA,oBACA,gBACA,oBACA,iBACA;;AAGF,MAAMC,IAAiBC,EAAY;EACjCC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAGb,MAAMC,IAA6BJ,EAAY;EAC7CC,UAAU;EACVC,MAAM;;;AAGR,MAAMG,IAAsBL,EAAY;EACtCC,UAAU;EACVC,MAAM;;;AAGR,MAAMI,IAAeN,EAAY;EAC/BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;MAYAI,IAAmB;;;IAC9BC,EAAAC,IAAAC,WAAA;IA4DAC,EAAAF,IAAAC,OAAkBE;MAChB,MAAMC,IAAqB;QACzBC,eAAeJ,KAAKK,cAAcC;QAClCC,eAAeP,KAAKK,cAAcb;QAClCgB,iBAAiBR,KAAKS,SAASC,MAC7BC,KAAWA,EAAQnB,SAASQ,KAAKY,4BACjCN;QACFO,iBAAiBb,KAAKY;QACtBE,kBAAkBd,KAAKc;;YAEnBd,KAAKe,gBAAgBZ;AAAmB;IAGhDa,EAAAjB,IAAAC,OAAiBE;YACTF,KAAKiB;AAAgB;IAG7BC,EAAAnB,IAAAC,OAAgCS;MAC9BT,KAAKmB,wBAAwBV,EAASW,KAAIT,MAAO;QAC/CU,SAASV,EAAQnB;QACjB8B,OAAOX,EAAQL;QACfiB,aAAaZ,EAAQa,WACjB9B,IACAC;;AACH;IAGL8B,EAAA1B,IAAAC,OACE0B;MAEA1B,KAAKY,4BAA4Bc,EAAMC;AAAgB;;;;;;;QASzDC,EAAA7B,IAAAC,OAA8BE;MAC5BF,KAAK6B,8BAA8B7B,KAAK8B;MACxC9B,KAAKY,4BAA4BZ,KAAK6B,sBAAsB,GAAGrC;AAAI;IAGrEuC,EAAAhC,IAAAC,OAAgB;MACd,MAAMgC,KACHhC,KAAKY,8BACLZ,KAAKmB,sBAAsBc,MAC1BC,KAAKA,EAAEb,YAAYrB,KAAKY;MAE5B,OACEuB,EAAA;QAAQC,OAAM;SACZD,EAAA;QAAKC,OAAM;SACTD,EAAA;QAAQC,OAAM;QAAmBC,SAASC,EAAAtC,MAAIgB,GAAA;SAC3CsB,EAAAtC,MAAIF,GAAA,KAAkByC,OAAOC,SAGhCL,EAAA;QACEC,OAAM;QACNC,SAASC,EAAAtC,MAAIC,GAAA;QACbwC,UAAUT;SAETM,EAAAtC,MAAIF,GAAA,KAAkByC,OAAOG;AAG3B;4BAtHwB;qCAKQ;iCAKC;iCAKE;;;;;;;EA6BhD,eAAAC;IACEL,EAAAtC,MAAIkB,GAAA,KAA6B0B,KAAjC5C,MAAkCA,KAAKS;;EAGzC,uBAAMoC;IACJC,EAAA9C,MAAIF,SAA0BiD,EAAOC,oBAAoBhD,KAAKiD,KAAG;IACjEX,EAAAtC,MAAIkB,GAAA,KAA6B0B,KAAjC5C,MAAkCA,KAAKS,YAAY;;EAwErD,MAAAyC;IACE,OACEf,EAACgB,GAAI;MAACf,OAAM;OACVD,EAAA;MAAUiB,OAAOhE;QAEjB+C,EAAA;MAAKC,OAAM;OACTD,EAAA,aACEA,EAAA;MAAGC,OAAM;OACPD,EAAA;MACEC,OAAM;MACNiB,MAAK;MACLC,KAAK1D;QAEPuC,EAAA,cAAO,GAAGG,EAAAtC,MAAIF,GAAA,KAAkByD,aAAaC,UAAUxD,KAAKK,cAAcb,WAG9E2C,EAAA;MAAGC,OAAM;OACNE,EAAAtC,MAAIF,GAAA,KAAkByD,aAAaE,UAGtCtB,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQsB,SAAQ;OAC1BpB,EAAAtC,MAAIF,GAAA,KAAkB6D,OAAOC,cAEhCzB,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAM;MACNyB,IAAG;MACHT,OAAOpD,KAAKmB;MACZ2C,aAAaxB,EAAAtC,MAAIF,GAAA,KAAkBiE,aAAaH;MAChDtC,OAAOtB,KAAKY;MACZoD,SAAS;MACTC,SAAS3B,EAAAtC,MAAIyB,GAAA;QAEfU,EAAA;MACEC,OAAM;MACNC,SAASC,EAAAtC,MAAI4B,GAAA;OAEbO,EAAA;MAAUmB,KAAKjE;MAAgB+C,OAAM;YAe5CE,EAAAtC,MAAI+B,GAAA,KAAca,KAAlB5C"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { h as e } from "./p-9b9ccd0c.js";
|
|
2
|
-
|
|
3
|
-
import { g as s } from "./p-d42e842b.js";
|
|
4
|
-
|
|
5
|
-
import "./p-d4ecd3bb.js";
|
|
6
|
-
|
|
7
|
-
import "lit";
|
|
8
|
-
|
|
9
|
-
import "lit/directives/when.js";
|
|
10
|
-
|
|
11
|
-
import "lit/directives/if-defined.js";
|
|
12
|
-
|
|
13
|
-
// Stencil
|
|
14
|
-
const c = s({
|
|
15
|
-
category: "system",
|
|
16
|
-
name: "add",
|
|
17
|
-
colorType: "success"
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
const t = s({
|
|
21
|
-
category: "system",
|
|
22
|
-
name: "edit",
|
|
23
|
-
colorType: "warning"
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
const r = s({
|
|
27
|
-
category: "system",
|
|
28
|
-
name: "substract",
|
|
29
|
-
colorType: "error"
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const o = s({
|
|
33
|
-
category: "system",
|
|
34
|
-
name: "warning",
|
|
35
|
-
colorType: "warning"
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Renders a visual indicator (icon and label) for a given object state.
|
|
40
|
-
*
|
|
41
|
-
* This helper function maps a fixed set of object states to corresponding icons
|
|
42
|
-
*
|
|
43
|
-
* Supported states:
|
|
44
|
-
* - "inserted": Displays a green "add" icon.
|
|
45
|
-
* - "modified": Displays a yellow "edit" icon.
|
|
46
|
-
* - "deleted": Displays a red "subtract" icon.
|
|
47
|
-
* - "conflicted": Displays a yellow "warning" icon.
|
|
48
|
-
*
|
|
49
|
-
* @param {ObjectState} objectState - The current state of the object.
|
|
50
|
-
* @returns {HTMLChImageElement} A span element containing the corresponding icon and state label.
|
|
51
|
-
*/ const renderObjectStateWithIcon = s => {
|
|
52
|
-
let a;
|
|
53
|
-
switch (s) {
|
|
54
|
-
case "inserted":
|
|
55
|
-
a = c;
|
|
56
|
-
break;
|
|
57
|
-
|
|
58
|
-
case "modified":
|
|
59
|
-
a = t;
|
|
60
|
-
break;
|
|
61
|
-
|
|
62
|
-
case "deleted":
|
|
63
|
-
a = r;
|
|
64
|
-
break;
|
|
65
|
-
|
|
66
|
-
case "conflicted":
|
|
67
|
-
a = o;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
return e("span", {
|
|
71
|
-
class: "custom-icon-text-wrapper"
|
|
72
|
-
}, e("ch-image", {
|
|
73
|
-
class: "icon-md",
|
|
74
|
-
src: a
|
|
75
|
-
}), `${s.charAt(0).toUpperCase() + s.slice(1)}`);
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Renders a GeneXus object type as a span element containing its icon and name.
|
|
80
|
-
*
|
|
81
|
-
* @param {ObjectType} objectType - The GeneXus object type to render, including its `icon` and `name` properties.
|
|
82
|
-
* @returns {JSX.Element} A span element with the object's icon and label.
|
|
83
|
-
*/ const renderObjectTypeWithIcon = s => {
|
|
84
|
-
// bring changes
|
|
85
|
-
const c = s.icon;
|
|
86
|
-
return e("span", {
|
|
87
|
-
class: "custom-icon-text-wrapper"
|
|
88
|
-
}, e("ch-image", {
|
|
89
|
-
class: "icon-md",
|
|
90
|
-
src: c
|
|
91
|
-
}), `${s.name}`);
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
export { renderObjectStateWithIcon as a, renderObjectTypeWithIcon as r };
|
|
95
|
-
//# sourceMappingURL=p-db6c6085.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["INSERTED_ICON","getIconPath","category","name","colorType","EDITED_ICON","DELETED_ICON","WARNING_ICON","renderObjectStateWithIcon","objectState","icon","h","class","src","charAt","toUpperCase","slice","renderObjectTypeWithIcon","objectType"],"sources":["src/components/team-dev/common/utilities.tsx"],"sourcesContent":["// Stencil\nimport { h, JSX } from \"@stencil/core\";\nimport { getIconPath } from \"@genexus/mercury\";\nimport { ObjectState } from \"../version-control/common/types\";\nimport { ObjectType } from \"../../../components\";\n\nconst INSERTED_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"success\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"warning\"\n});\nconst DELETED_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"error\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\n\n/**\n * Renders a visual indicator (icon and label) for a given object state.\n *\n * This helper function maps a fixed set of object states to corresponding icons\n *\n * Supported states:\n * - \"inserted\": Displays a green \"add\" icon.\n * - \"modified\": Displays a yellow \"edit\" icon.\n * - \"deleted\": Displays a red \"subtract\" icon.\n * - \"conflicted\": Displays a yellow \"warning\" icon.\n *\n * @param {ObjectState} objectState - The current state of the object.\n * @returns {HTMLChImageElement} A span element containing the corresponding icon and state label.\n */\nexport const renderObjectStateWithIcon = (\n objectState: ObjectState\n): HTMLChImageElement => {\n let icon: string;\n switch (objectState) {\n case \"inserted\":\n icon = INSERTED_ICON;\n break;\n case \"modified\":\n icon = EDITED_ICON;\n break;\n case \"deleted\":\n icon = DELETED_ICON;\n break;\n case \"conflicted\":\n icon = WARNING_ICON;\n break;\n }\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image class=\"icon-md\" src={icon}></ch-image>\n {`${objectState.charAt(0).toUpperCase() + objectState.slice(1)}`}\n </span>\n );\n};\n\n/**\n * Renders a GeneXus object type as a span element containing its icon and name.\n *\n * @param {ObjectType} objectType - The GeneXus object type to render, including its `icon` and `name` properties.\n * @returns {JSX.Element} A span element with the object's icon and label.\n */\nexport const renderObjectTypeWithIcon = (\n objectType: ObjectType\n): JSX.Element => {\n // bring changes\n const icon = objectType.icon;\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image class=\"icon-md\" src={icon}></ch-image>\n {`${objectType.name}`}\n </span>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AAMA,MAAMA,IAAgBC,EAAY;EAChCC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAMC,IAAcJ,EAAY;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAME,IAAeL,EAAY;EAC/BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAMG,IAAeN,EAAY;EAC/BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;;;;;;;;;;;;;;UAiBAI,4BACXC;EAEA,IAAIC;EACJ,QAAQD;GACN,KAAK;IACHC,IAAOV;IACP;;GACF,KAAK;IACHU,IAAOL;IACP;;GACF,KAAK;IACHK,IAAOJ;IACP;;GACF,KAAK;IACHI,IAAOH;IACP;;EAEJ,OACEI,EAAA;IAAMC,OAAM;KACVD,EAAA;IAAUC,OAAM;IAAUC,KAAKH;MAC9B,GAAGD,EAAYK,OAAO,GAAGC,gBAAgBN,EAAYO,MAAM;AACvD;;;;;;;UAUEC,2BACXC;;EAGA,MAAMR,IAAOQ,EAAWR;EAExB,OACEC,EAAA;IAAMC,OAAM;KACVD,EAAA;IAAUC,OAAM;IAAUC,KAAKH;MAC9B,GAAGQ,EAAWf;AACV"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|