@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.
Files changed (151) hide show
  1. package/dist/cjs/{utilities-25be3069.js → constants-a2ac1812.js} +70 -1
  2. package/dist/cjs/constants-a2ac1812.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +7 -8
  5. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +2 -2
  7. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-restore-version.cjs.entry.js +5 -4
  9. package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +28 -17
  11. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +8 -7
  13. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  14. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +2 -2
  15. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  16. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +6 -5
  17. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +3 -3
  19. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +21 -21
  20. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +25 -78
  22. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
  23. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
  24. package/dist/cjs/loader.cjs.js +1 -1
  25. package/dist/cjs/{tabular-grid-render-c0e0738c.js → tabular-grid-render-37b7153b.js} +12 -86
  26. package/dist/cjs/tabular-grid-render-37b7153b.js.map +1 -0
  27. package/dist/collection/components/restore-version/gx-ide-assets/restore-version/shortcuts.json +15 -0
  28. package/dist/collection/components/restore-version/restore-version.js +6 -5
  29. package/dist/collection/components/restore-version/restore-version.js.map +1 -1
  30. package/dist/collection/components/select-kb-items/select-kb-items.js +75 -28
  31. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  32. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js +7 -6
  33. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.js.map +1 -1
  34. package/dist/collection/components/team-dev/bring-all-changes-selector/gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json +15 -0
  35. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +8 -9
  36. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -1
  37. package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/shortcuts.json +15 -0
  38. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +2 -2
  39. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  40. package/dist/collection/components/team-dev/create-kb-from-server/gx-ide-assets/create-kb-from-server/shortcuts.json +6 -1
  41. package/dist/collection/components/team-dev/history/history.css +3 -0
  42. package/dist/collection/components/team-dev/history/history.js +52 -91
  43. package/dist/collection/components/team-dev/history/history.js.map +1 -1
  44. package/dist/collection/components/team-dev/server-selector/gx-ide-assets/server-selector/shortcuts.json +15 -0
  45. package/dist/collection/components/team-dev/server-selector/server-selector.js +9 -7
  46. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  47. package/dist/collection/components/team-dev/share-kb/gx-ide-assets/share-kb/shortcuts.json +1 -1
  48. package/dist/collection/components/team-dev/share-kb/share-kb.js +2 -2
  49. package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
  50. package/dist/components/{utilities.js → constants2.js} +68 -2
  51. package/dist/components/constants2.js.map +1 -0
  52. package/dist/components/gx-ide-connect-gx-server.js +8 -9
  53. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  54. package/dist/components/gx-ide-create-kb-from-server.js +2 -2
  55. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  56. package/dist/components/gx-ide-restore-version.js +6 -5
  57. package/dist/components/gx-ide-restore-version.js.map +1 -1
  58. package/dist/components/gx-ide-server-selector.js +9 -8
  59. package/dist/components/gx-ide-server-selector.js.map +1 -1
  60. package/dist/components/gx-ide-share-kb.js +2 -2
  61. package/dist/components/gx-ide-share-kb.js.map +1 -1
  62. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +7 -6
  63. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
  64. package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
  65. package/dist/components/gx-ide-team-dev-commit.js +2 -1
  66. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  67. package/dist/components/gx-ide-team-dev-history.js +24 -85
  68. package/dist/components/gx-ide-team-dev-history.js.map +1 -1
  69. package/dist/components/gx-ide-team-dev-update.js +1 -1
  70. package/dist/components/select-kb-items.js +32 -20
  71. package/dist/components/select-kb-items.js.map +1 -1
  72. package/dist/components/tabular-grid-render.js +2 -72
  73. package/dist/components/tabular-grid-render.js.map +1 -1
  74. package/dist/esm/{utilities-efeffb76.js → constants-31612239.js} +68 -2
  75. package/dist/esm/constants-31612239.js.map +1 -0
  76. package/dist/esm/genexus-ide-ui.js +1 -1
  77. package/dist/esm/gx-ide-connect-gx-server.entry.js +8 -9
  78. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  79. package/dist/esm/gx-ide-create-kb-from-server.entry.js +2 -2
  80. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  81. package/dist/esm/gx-ide-restore-version.entry.js +6 -5
  82. package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
  83. package/dist/esm/gx-ide-select-kb-items.entry.js +28 -17
  84. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  85. package/dist/esm/gx-ide-server-selector.entry.js +9 -8
  86. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  87. package/dist/esm/gx-ide-share-kb.entry.js +2 -2
  88. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  89. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +7 -6
  90. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
  91. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
  92. package/dist/esm/gx-ide-team-dev-commit.entry.js +5 -5
  93. package/dist/esm/gx-ide-team-dev-history.entry.js +25 -78
  94. package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
  95. package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
  96. package/dist/esm/loader.js +1 -1
  97. package/dist/esm/{tabular-grid-render-c868fa55.js → tabular-grid-render-d06826a5.js} +3 -74
  98. package/dist/esm/tabular-grid-render-d06826a5.js.map +1 -0
  99. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  100. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  101. package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/shortcuts.json +15 -0
  102. package/dist/genexus-ide-ui/gx-ide-assets/create-kb-from-server/shortcuts.json +6 -1
  103. package/dist/genexus-ide-ui/gx-ide-assets/restore-version/shortcuts.json +15 -0
  104. package/dist/genexus-ide-ui/gx-ide-assets/server-selector/shortcuts.json +15 -0
  105. package/dist/genexus-ide-ui/gx-ide-assets/share-kb/shortcuts.json +1 -1
  106. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-all-changes-selector/shortcuts.json +15 -0
  107. package/dist/genexus-ide-ui/p-025c9aa4.entry.js +239 -0
  108. package/dist/genexus-ide-ui/p-025c9aa4.entry.js.map +1 -0
  109. package/dist/genexus-ide-ui/p-082015be.js +244 -0
  110. package/dist/{esm/tabular-grid-render-c868fa55.js.map → genexus-ide-ui/p-082015be.js.map} +1 -1
  111. package/dist/genexus-ide-ui/{p-972dc777.entry.js → p-1351412d.entry.js} +3 -3
  112. package/dist/genexus-ide-ui/{p-8897c6de.entry.js → p-2d6228e8.entry.js} +201 -194
  113. package/dist/genexus-ide-ui/p-2d6228e8.entry.js.map +1 -0
  114. package/dist/genexus-ide-ui/p-32b37b3d.js +163 -0
  115. package/dist/genexus-ide-ui/p-32b37b3d.js.map +1 -0
  116. package/dist/genexus-ide-ui/{p-a543dfdb.entry.js → p-451994e8.entry.js} +104 -95
  117. package/dist/genexus-ide-ui/p-451994e8.entry.js.map +1 -0
  118. package/dist/genexus-ide-ui/{p-85cf50c5.entry.js → p-74f8bd45.entry.js} +78 -132
  119. package/dist/genexus-ide-ui/p-74f8bd45.entry.js.map +1 -0
  120. package/dist/genexus-ide-ui/{p-c3cc759d.entry.js → p-8dedbcd9.entry.js} +64 -58
  121. package/dist/genexus-ide-ui/p-8dedbcd9.entry.js.map +1 -0
  122. package/dist/genexus-ide-ui/{p-6ee5d68e.entry.js → p-92a027bc.entry.js} +33 -33
  123. package/dist/genexus-ide-ui/{p-9ffa7afd.entry.js → p-941f470f.entry.js} +3 -1
  124. package/dist/genexus-ide-ui/{p-9ffa7afd.entry.js.map → p-941f470f.entry.js.map} +1 -1
  125. package/dist/genexus-ide-ui/{p-93e79d19.entry.js → p-ac79f7e8.entry.js} +59 -57
  126. package/dist/genexus-ide-ui/{p-93e79d19.entry.js.map → p-ac79f7e8.entry.js.map} +1 -1
  127. package/dist/genexus-ide-ui/{p-e2fd2c24.entry.js → p-c256dc59.entry.js} +3 -3
  128. package/dist/genexus-ide-ui/{p-5e56280c.entry.js → p-eeeb3d52.entry.js} +199 -192
  129. package/dist/genexus-ide-ui/p-eeeb3d52.entry.js.map +1 -0
  130. package/dist/types/components/select-kb-items/select-kb-items.d.ts +12 -3
  131. package/dist/types/components/team-dev/history/history.d.ts +3 -12
  132. package/dist/types/components.d.ts +22 -20
  133. package/package.json +1 -1
  134. package/dist/cjs/tabular-grid-render-c0e0738c.js.map +0 -1
  135. package/dist/cjs/utilities-25be3069.js.map +0 -1
  136. package/dist/components/utilities.js.map +0 -1
  137. package/dist/esm/utilities-efeffb76.js.map +0 -1
  138. package/dist/genexus-ide-ui/p-22bdcf23.js +0 -322
  139. package/dist/genexus-ide-ui/p-22bdcf23.js.map +0 -1
  140. package/dist/genexus-ide-ui/p-5e56280c.entry.js.map +0 -1
  141. package/dist/genexus-ide-ui/p-85cf50c5.entry.js.map +0 -1
  142. package/dist/genexus-ide-ui/p-8897c6de.entry.js.map +0 -1
  143. package/dist/genexus-ide-ui/p-a105f903.entry.js +0 -234
  144. package/dist/genexus-ide-ui/p-a105f903.entry.js.map +0 -1
  145. package/dist/genexus-ide-ui/p-a543dfdb.entry.js.map +0 -1
  146. package/dist/genexus-ide-ui/p-c3cc759d.entry.js.map +0 -1
  147. package/dist/genexus-ide-ui/p-db6c6085.js +0 -95
  148. package/dist/genexus-ide-ui/p-db6c6085.js.map +0 -1
  149. /package/dist/genexus-ide-ui/{p-972dc777.entry.js.map → p-1351412d.entry.js.map} +0 -0
  150. /package/dist/genexus-ide-ui/{p-6ee5d68e.entry.js.map → p-92a027bc.entry.js.map} +0 -0
  151. /package/dist/genexus-ide-ui/{p-e2fd2c24.entry.js.map → p-c256dc59.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"gx-ide-select-kb-items.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","h","Locale","Host"],"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"],"version":3}
1
+ {"file":"gx-ide-select-kb-items.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","h","Locale","Host"],"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 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 * Represents the itemLis list model\n */\n @State() itemsList: ItemNode[] = [];\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 * Callback to load the items list model\n */\n @Prop() readonly loadItemsCallback!: () => Promise<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 /**\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 * Defines whether to show a loader while loading items\n */\n @Prop() readonly useLoader?: boolean = true;\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.#_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 this.#loadItems();\n }\n\n @Method()\n async reloadItems() {\n await this.#loadItems();\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 async #loadItems() {\n try {\n this.loading = true;\n this.itemsList = await this.loadItemsCallback();\n this.#updateViews(this.itemsList);\n // Check and update activeItem\n this.activeItemNode = findFirstActiveNode(this.itemsList);\n } catch (error) {\n console.error(\"Error loading items:\", error);\n } finally {\n this.loading = false;\n }\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 = async () => {\n const doScrollIntoView =\n this.#treeViewRenderEl && this.activeItemNode?.path;\n if (doScrollIntoView) {\n await this.#treeViewRenderEl.scrollIntoVisible(this.activeItemNode.path);\n }\n\n if (this.activeItemCallback) {\n await 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.useLoader && 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 guid?: 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"],"version":3}
@@ -31,7 +31,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
31
31
  throw new TypeError("Cannot write private member to an object whose class did not declare it");
32
32
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
33
33
  };
34
- var _GxIdeServerSelector__componentLocale, _GxIdeServerSelector_chGridAllServersEl, _GxIdeServerSelector_serverUrlEL, _GxIdeServerSelector_serverFriendlyNameEL, _GxIdeServerSelector_updatedServerName, _GxIdeServerSelector_serverNameEditElsMap, _GxIdeServerSelector_versionsSelect, _GxIdeServerSelector_cancelHandler, _GxIdeServerSelector_confirmHandler, _GxIdeServerSelector_evaluateTooltipRender, _GxIdeServerSelector_initializeValidatableControls, _GxIdeServerSelector_filterValueChangedHandler, _GxIdeServerSelector_inputHandler, _GxIdeServerSelector_handleRecentlyUsedCardClick, _GxIdeServerSelector_handleDeleteServer, _GxIdeServerSelector_onServerNameInput, _GxIdeServerSelector_onServerNameChange, _GxIdeServerSelector_enableConfirmButton, _GxIdeServerSelector_onRecentlyUsedDoubleClickHandler, _GxIdeServerSelector_onServersRowClickHandler, _GxIdeServerSelector_handleServerSelection, _GxIdeServerSelector_connectionTypeChangedHandler, _GxIdeServerSelector_sortTabularGridColumnCallback, _GxIdeServerSelector_renderTabularGridColumnSet, _GxIdeServerSelector_renderTooltip, _GxIdeServerSelector_renderServerNameErrorMessage, _GxIdeServerSelector_renderTabularGridCommonCells, _GxIdeServerSelector_renderAllServersGrid, _GxIdeServerSelector_renderIcon, _GxIdeServerSelector_renderFooter, _GxIdeServerSelector_renderRecentlyUsed, _GxIdeServerSelector_renderAllServers;
34
+ var _GxIdeServerSelector__componentLocale, _GxIdeServerSelector_chGridAllServersEl, _GxIdeServerSelector_serverUrlEL, _GxIdeServerSelector_serverFriendlyNameEL, _GxIdeServerSelector_updatedServerName, _GxIdeServerSelector_serverNameEditElsMap, _GxIdeServerSelector_versionsSelect, _GxIdeServerSelector_shortcutsSrc, _GxIdeServerSelector_cancelHandler, _GxIdeServerSelector_confirmHandler, _GxIdeServerSelector_evaluateTooltipRender, _GxIdeServerSelector_initializeValidatableControls, _GxIdeServerSelector_filterValueChangedHandler, _GxIdeServerSelector_inputHandler, _GxIdeServerSelector_handleRecentlyUsedCardClick, _GxIdeServerSelector_handleDeleteServer, _GxIdeServerSelector_onServerNameInput, _GxIdeServerSelector_onServerNameChange, _GxIdeServerSelector_enableConfirmButton, _GxIdeServerSelector_onRecentlyUsedDoubleClickHandler, _GxIdeServerSelector_onServersRowClickHandler, _GxIdeServerSelector_handleServerSelection, _GxIdeServerSelector_connectionTypeChangedHandler, _GxIdeServerSelector_sortTabularGridColumnCallback, _GxIdeServerSelector_renderTabularGridColumnSet, _GxIdeServerSelector_renderTooltip, _GxIdeServerSelector_renderServerNameErrorMessage, _GxIdeServerSelector_renderTabularGridCommonCells, _GxIdeServerSelector_renderAllServersGrid, _GxIdeServerSelector_renderIcon, _GxIdeServerSelector_renderFooter, _GxIdeServerSelector_renderRecentlyUsed, _GxIdeServerSelector_renderAllServers;
35
35
  const CSS_BUNDLES = [
36
36
  "resets/box-sizing",
37
37
  "utils/form--full",
@@ -83,6 +83,7 @@ const GxIdeServerSelector = class {
83
83
  _GxIdeServerSelector_updatedServerName.set(this, void 0);
84
84
  _GxIdeServerSelector_serverNameEditElsMap.set(this, new Map());
85
85
  _GxIdeServerSelector_versionsSelect.set(this, []);
86
+ _GxIdeServerSelector_shortcutsSrc.set(this, index.getAssetPath(`./gx-ide-assets/server-selector/shortcuts.json`));
86
87
  _GxIdeServerSelector_cancelHandler.set(this, () => {
87
88
  this.cancelCallback();
88
89
  });
@@ -231,7 +232,7 @@ const GxIdeServerSelector = class {
231
232
  } })) : (serverData.serverName)),
232
233
  index.h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, serverData.serverUrl, __classPrivateFieldGet(this, _GxIdeServerSelector_renderTooltip, "f").call(this, serverData.serverUrl)),
233
234
  index.h("ch-tabular-grid-cell", { class: "tabular-grid-cell" }, serverData.gxServerUsername),
234
- index.h("ch-tabular-grid-cell", { class: "tabular-grid-cell", onClick: () => __classPrivateFieldGet(this, _GxIdeServerSelector_handleDeleteServer, "f").call(this, serverData) }, index.h("button", { class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").actions.deleteServer, disabled: serverData.accessLevel === "public" }, index.h("ch-image", { disabled: serverData.accessLevel === "public", class: "icon-md delete-server-icon", src: DELETE_ICON })))
235
+ index.h("ch-tabular-grid-cell", { class: "tabular-grid-cell", onClick: () => __classPrivateFieldGet(this, _GxIdeServerSelector_handleDeleteServer, "f").call(this, serverData) }, index.h("button", { id: "delete-button", class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").actions.deleteServer, disabled: serverData.accessLevel === "public" }, index.h("ch-image", { disabled: serverData.accessLevel === "public", class: "icon-md delete-server-icon", src: DELETE_ICON })))
235
236
  ];
236
237
  });
237
238
  _GxIdeServerSelector_renderAllServersGrid.set(this, () => {
@@ -258,10 +259,10 @@ const GxIdeServerSelector = class {
258
259
  "spacing-body-block": true
259
260
  } }, isSelectionMode && (index.h("p", { class: "body-italic-m" }, "Selected: ", this.selectedServerName)), index.h("div", { class: "buttons-spacer" }, index.h("button", {
260
261
  // cancel button
261
- class: "button-secondary", onClick: __classPrivateFieldGet(this, _GxIdeServerSelector_cancelHandler, "f")
262
+ id: "cancel-button", class: "button-secondary", onClick: __classPrivateFieldGet(this, _GxIdeServerSelector_cancelHandler, "f")
262
263
  }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").footer.cancel), index.h("button", {
263
264
  // confirm button
264
- class: "button-primary", onClick: this.enableConfirmButton && __classPrivateFieldGet(this, _GxIdeServerSelector_confirmHandler, "f"), disabled: !this.enableConfirmButton
265
+ id: "confirm-button", class: "button-primary", onClick: this.enableConfirmButton && __classPrivateFieldGet(this, _GxIdeServerSelector_confirmHandler, "f"), disabled: !this.enableConfirmButton
265
266
  }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").footer.confirm))));
266
267
  });
267
268
  _GxIdeServerSelector_renderRecentlyUsed.set(this, () => {
@@ -271,7 +272,7 @@ const GxIdeServerSelector = class {
271
272
  "layout": true,
272
273
  "layout--cols-3": this.recentlyUsedServersData.length >= 3,
273
274
  "layout--cols-2": this.recentlyUsedServersData.length <= 2
274
- } }, this.recentlyUsedServersData.map((server) => (index.h("button", { class: {
275
+ } }, this.recentlyUsedServersData.map((server, index$1) => (index.h("button", { id: "recently-used-server-" + index$1, class: {
275
276
  "layout__panel": true,
276
277
  "recently-used-card": true,
277
278
  "recently-used-card--selected": this.selectedRecentlyUsedId === server.id
@@ -340,7 +341,7 @@ const GxIdeServerSelector = class {
340
341
  "widget elevation-1": true,
341
342
  "new-connection": this.selectedConnectionType === "new",
342
343
  "recently-used-empty": this.recentlyUsedServersData.length === 0
343
- } }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("main", { class: "section" }, index.h("header", { class: "header spacing-body-block-start spacing-body-inline" }, index.h("div", { class: "field-group" }, index.h("label", { class: "body-regular-m text-neutral-gray-400" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").header.title), index.h("ch-radio-group-render", { class: "radio-group", model: __classPrivateFieldGet(this, _GxIdeServerSelector_versionsSelect, "f"), onChange: __classPrivateFieldGet(this, _GxIdeServerSelector_connectionTypeChangedHandler, "f"), value: __classPrivateFieldGet(this, _GxIdeServerSelector_versionsSelect, "f")[0].value }), this.selectedConnectionType === "select" && (index.h("ch-edit", { class: "input search-server", id: "server-name-search", startImgSrc: SEARCH_ICON, onInput: __classPrivateFieldGet(this, _GxIdeServerSelector_filterValueChangedHandler, "f"), placeholder: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").placeholders.searchServers, accessibleName: "search server", type: "search" })))), this.selectedConnectionType === "select" && [
344
+ } }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeServerSelector_shortcutsSrc, "f") }), index.h("main", { class: "section" }, index.h("header", { class: "header spacing-body-block-start spacing-body-inline" }, index.h("div", { class: "field-group" }, index.h("label", { class: "body-regular-m text-neutral-gray-400" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").header.title), index.h("ch-radio-group-render", { class: "radio-group", model: __classPrivateFieldGet(this, _GxIdeServerSelector_versionsSelect, "f"), onChange: __classPrivateFieldGet(this, _GxIdeServerSelector_connectionTypeChangedHandler, "f"), value: __classPrivateFieldGet(this, _GxIdeServerSelector_versionsSelect, "f")[0].value }), this.selectedConnectionType === "select" && (index.h("ch-edit", { class: "input search-server", id: "server-name-search", startImgSrc: SEARCH_ICON, onInput: __classPrivateFieldGet(this, _GxIdeServerSelector_filterValueChangedHandler, "f"), placeholder: __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").placeholders.searchServers, accessibleName: "search server", type: "search" })))), this.selectedConnectionType === "select" && [
344
345
  __classPrivateFieldGet(this, _GxIdeServerSelector_renderRecentlyUsed, "f").call(this),
345
346
  __classPrivateFieldGet(this, _GxIdeServerSelector_renderAllServers, "f").call(this)
346
347
  ], this.selectedConnectionType === "new" && (index.h("section", { class: "spacing-body-inline" }, index.h("div", { class: "layout layout--cols-2" }, index.h("div", { class: "field field-block layout__panel" }, index.h("label", { class: "label", htmlFor: "server-url" }, __classPrivateFieldGet(this, _GxIdeServerSelector__componentLocale, "f").labels.serverUrl), index.h("ch-edit", {
@@ -357,7 +358,7 @@ const GxIdeServerSelector = class {
357
358
  "serversData": ["serversDataChanged"]
358
359
  }; }
359
360
  };
360
- _GxIdeServerSelector__componentLocale = new WeakMap(), _GxIdeServerSelector_chGridAllServersEl = new WeakMap(), _GxIdeServerSelector_serverUrlEL = new WeakMap(), _GxIdeServerSelector_serverFriendlyNameEL = new WeakMap(), _GxIdeServerSelector_updatedServerName = new WeakMap(), _GxIdeServerSelector_serverNameEditElsMap = new WeakMap(), _GxIdeServerSelector_versionsSelect = new WeakMap(), _GxIdeServerSelector_cancelHandler = new WeakMap(), _GxIdeServerSelector_confirmHandler = new WeakMap(), _GxIdeServerSelector_evaluateTooltipRender = new WeakMap(), _GxIdeServerSelector_initializeValidatableControls = new WeakMap(), _GxIdeServerSelector_filterValueChangedHandler = new WeakMap(), _GxIdeServerSelector_inputHandler = new WeakMap(), _GxIdeServerSelector_handleRecentlyUsedCardClick = new WeakMap(), _GxIdeServerSelector_handleDeleteServer = new WeakMap(), _GxIdeServerSelector_onServerNameInput = new WeakMap(), _GxIdeServerSelector_onServerNameChange = new WeakMap(), _GxIdeServerSelector_enableConfirmButton = new WeakMap(), _GxIdeServerSelector_onRecentlyUsedDoubleClickHandler = new WeakMap(), _GxIdeServerSelector_onServersRowClickHandler = new WeakMap(), _GxIdeServerSelector_handleServerSelection = new WeakMap(), _GxIdeServerSelector_connectionTypeChangedHandler = new WeakMap(), _GxIdeServerSelector_sortTabularGridColumnCallback = new WeakMap(), _GxIdeServerSelector_renderTabularGridColumnSet = new WeakMap(), _GxIdeServerSelector_renderTooltip = new WeakMap(), _GxIdeServerSelector_renderServerNameErrorMessage = new WeakMap(), _GxIdeServerSelector_renderTabularGridCommonCells = new WeakMap(), _GxIdeServerSelector_renderAllServersGrid = new WeakMap(), _GxIdeServerSelector_renderIcon = new WeakMap(), _GxIdeServerSelector_renderFooter = new WeakMap(), _GxIdeServerSelector_renderRecentlyUsed = new WeakMap(), _GxIdeServerSelector_renderAllServers = new WeakMap();
361
+ _GxIdeServerSelector__componentLocale = new WeakMap(), _GxIdeServerSelector_chGridAllServersEl = new WeakMap(), _GxIdeServerSelector_serverUrlEL = new WeakMap(), _GxIdeServerSelector_serverFriendlyNameEL = new WeakMap(), _GxIdeServerSelector_updatedServerName = new WeakMap(), _GxIdeServerSelector_serverNameEditElsMap = new WeakMap(), _GxIdeServerSelector_versionsSelect = new WeakMap(), _GxIdeServerSelector_shortcutsSrc = new WeakMap(), _GxIdeServerSelector_cancelHandler = new WeakMap(), _GxIdeServerSelector_confirmHandler = new WeakMap(), _GxIdeServerSelector_evaluateTooltipRender = new WeakMap(), _GxIdeServerSelector_initializeValidatableControls = new WeakMap(), _GxIdeServerSelector_filterValueChangedHandler = new WeakMap(), _GxIdeServerSelector_inputHandler = new WeakMap(), _GxIdeServerSelector_handleRecentlyUsedCardClick = new WeakMap(), _GxIdeServerSelector_handleDeleteServer = new WeakMap(), _GxIdeServerSelector_onServerNameInput = new WeakMap(), _GxIdeServerSelector_onServerNameChange = new WeakMap(), _GxIdeServerSelector_enableConfirmButton = new WeakMap(), _GxIdeServerSelector_onRecentlyUsedDoubleClickHandler = new WeakMap(), _GxIdeServerSelector_onServersRowClickHandler = new WeakMap(), _GxIdeServerSelector_handleServerSelection = new WeakMap(), _GxIdeServerSelector_connectionTypeChangedHandler = new WeakMap(), _GxIdeServerSelector_sortTabularGridColumnCallback = new WeakMap(), _GxIdeServerSelector_renderTabularGridColumnSet = new WeakMap(), _GxIdeServerSelector_renderTooltip = new WeakMap(), _GxIdeServerSelector_renderServerNameErrorMessage = new WeakMap(), _GxIdeServerSelector_renderTabularGridCommonCells = new WeakMap(), _GxIdeServerSelector_renderAllServersGrid = new WeakMap(), _GxIdeServerSelector_renderIcon = new WeakMap(), _GxIdeServerSelector_renderFooter = new WeakMap(), _GxIdeServerSelector_renderRecentlyUsed = new WeakMap(), _GxIdeServerSelector_renderAllServers = new WeakMap();
361
362
  GxIdeServerSelector.style = serverSelectorCss;
362
363
 
363
364
  exports.gx_ide_server_selector = GxIdeServerSelector;
@@ -1 +1 @@
1
- {"file":"gx-ide-server-selector.entry.cjs.js","mappings":"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","names":["getIconPath","validateControls","h","config","clearControlError","sortTabularGridColumn","Locale","Host"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n overflow: auto;\n border-inline: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// All Servers\n\n.tabular-grid {\n overflow: auto;\n border-block: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n// WA: .tabular-grid-wrapper and .border-patch is a WA. See details on Asana task:\n// https://app.asana.com/1/10206720691358/project/1207081021030105/task/1211391456974726?focus=true\n.tabular-grid-wrapper {\n position: relative;\n overflow: auto;\n}\n.border-patch {\n --tabular-grid-border-radius: 4px;\n position: absolute;\n top: 0;\n inline-size: calc(100% - var(--tabular-grid-border-radius) * 2);\n inset-inline-start: var(--tabular-grid-border-radius);\n block-size: 2px;\n background-color: var(--items-container__bg-color);\n z-index: 9999;\n border-block-start: 1px solid var(--mer-border-color__on-surface);\n}\n\n.tooltip {\n position: absolute;\n}\n\n.recently-used-card {\n border: 1px solid var(--grid-cell__border-color);\n border-radius: var(--mer-border__radius--sm);\n cursor: pointer;\n\n &:hover {\n background-color: var(--mer-color__tinted-primary--5);\n }\n\n &:focus-visible {\n @include focus-outline();\n }\n\n &--selected {\n background-color: var(--mer-color__tinted-primary--10);\n border-color: var(--mer-color__tinted-primary--30);\n }\n}\n\n.recently-used-card-content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n padding: 8px;\n gap: 2px;\n overflow: hidden;\n\n .text-decoration-line-underline {\n @include cell-ellipsis();\n max-width: 100%;\n text-decoration: underline;\n }\n}\n\n// All Severs tabular-grid\n\n.delete-server-icon {\n // WA: Getr and apply the marign inline value on the ch-image,\n // so that the button looks squared. This happens because the\n // button is \"tertiary\", which happens to have no padding-inline.\n // TODO: Investigate a solution that works without a WA.\n $cellBlockSize: 30.39px;\n margin-inline: calc((#{$cellBlockSize} - var(--ch-image-size)) / 2);\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"element\",\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX, Watch } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nimport sortTabularGridColumn from \"../../../common/chameleon/tabular-grid-column-sort\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"neutral\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst SERVER_NAME_PREFIX = \"server-name-\";\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #_componentLocale: any;\n\n #chGridAllServersEl: HTMLChTabularGridElement;\n #serverUrlEL: HTMLChEditElement;\n #serverFriendlyNameEL: HTMLChEditElement;\n #updatedServerName: string | undefined;\n #serverNameEditElsMap: Map<string, HTMLChEditElement> = new Map();\n #versionsSelect: RadioGroupItemModel[] = [];\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredServersData: ServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The selected recently used server ID\n */\n @State() selectedRecentlyUsedId: string;\n\n /**\n * The list of all GX servers.\n */\n @Prop({ mutable: true }) serversData: ServerData[] = [];\n @Watch(\"serversData\")\n serversDataChanged(newValue: ServerData[]) {\n this.filteredServersData = newValue;\n }\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin,\n connectionOption: ConnectionOption\n ) => Promise<FormSubmitResult>;\n\n /**\n * Invoked to delete a server\n */\n @Prop() readonly deleteServerCallback!: (\n serverData: ServerData\n ) => Promise<boolean>;\n\n /**\n * Invoked to update a server\n */\n @Prop() readonly updateServerCallback!: (\n serverData: ServerData\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#versionsSelect = [\n {\n value: \"select\",\n caption: this.#_componentLocale.captions.selectServer\n },\n {\n value: \"new\",\n caption: this.#_componentLocale.captions.addServer\n }\n ];\n\n this.selectedServerUri = this.serversData[0]?.serverUrl;\n this.userName = this.serversData[0]?.gxServerUsername;\n\n this.filteredServersData = this.serversData;\n }\n\n componentDidRender() {\n if (\n this.selectedConnectionType === \"new\" &&\n this.#serverUrlEL &&\n this.#serverFriendlyNameEL\n ) {\n this.#initializeValidatableControls([\n this.#serverUrlEL,\n this.#serverFriendlyNameEL\n ]);\n this.#serverNameEditElsMap.clear();\n }\n\n if (\n this.selectedConnectionType === \"select\" &&\n this.#serverNameEditElsMap.size > 0\n ) {\n this.#initializeValidatableControls([\n ...this.#serverNameEditElsMap.values()\n ]);\n }\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void> => {\n let formSubmitResult: FormSubmitResult;\n if (this.selectedConnectionType === \"select\") {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.selectedServerUri,\n name: this.selectedServerName\n },\n this.selectedConnectionType\n );\n } else {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n },\n this.selectedConnectionType\n );\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n }\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #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 #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredServersData = this.serversData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = (event.detail as string).trim();\n\n const controlId =\n field === \"serverUrlInputValue\" ? \"server-url\" : \"server-name\";\n clearControlError(this.validatableControls, controlId);\n this.#enableConfirmButton();\n };\n\n #handleRecentlyUsedCardClick = async (server: ServerData) => {\n this.selectedRecentlyUsedId = server.id;\n await this.#chGridAllServersEl?.selectRow(server.id);\n await this.#handleServerSelection(server.id);\n };\n\n #handleDeleteServer = async (serverData: ServerData) => {\n if (serverData.accessLevel === \"private\") {\n const result = await this.deleteServerCallback(serverData);\n if (result) {\n this.selectedServerName = \"None\";\n this.enableConfirmButton = false;\n }\n }\n };\n\n #onServerNameInput = async (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.#updatedServerName = event.detail as string;\n };\n\n #onServerNameChange = async (serverData: ServerData) => {\n let result: FormSubmitResult = {\n fieldErrors: [],\n success: false\n };\n if (\n serverData.serverName !== this.#updatedServerName &&\n serverData.accessLevel === \"private\"\n ) {\n result = await this.updateServerCallback({\n ...serverData,\n serverName: this.#updatedServerName\n });\n }\n\n this.validatableControls = validateControls(\n result,\n this.validatableControls\n );\n\n if (result.success || serverData.serverName === this.#updatedServerName) {\n this.selectedServerName = this.#updatedServerName;\n clearControlError(\n this.validatableControls,\n `${SERVER_NAME_PREFIX}${serverData.id}`\n );\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #onRecentlyUsedDoubleClickHandler = (serverData: ServerData) => {\n this.#handleServerSelection(serverData.id);\n this.#confirmHandler();\n };\n\n #onServersRowClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => this.#handleServerSelection(event.detail.rowId);\n\n #handleServerSelection = async (selectedRowId: string): Promise<void> => {\n if (selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n }\n\n const selectedServer = this.serversData.find(\n server => server.id === selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.selectedRecentlyUsedId = selectedServer?.id;\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n this.filteredServersData = [\n ...sortTabularGridColumn(e, this.filteredServersData, \"string\", undefined)\n ];\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n columnName=\"Connected\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"action\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Action\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delayLong}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderServerNameErrorMessage = (errorMsg: string) => {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={ERROR_ICON}\n ></ch-image>\n {errorMsg}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n };\n\n #renderTabularGridCommonCells = (serverData: ServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(serverData.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.accessLevel === \"private\" ? (\n <ch-edit\n id={`${SERVER_NAME_PREFIX}${serverData.id}`}\n value={serverData.serverName}\n onInput={this.#onServerNameInput}\n onChange={() => this.#onServerNameChange(serverData)}\n maxLength={18}\n ref={el => {\n const key = `${SERVER_NAME_PREFIX}${serverData.id}`;\n if (el) {\n this.#serverNameEditElsMap.set(key, el as HTMLChEditElement);\n } else {\n this.#serverNameEditElsMap.delete(key);\n }\n }}\n ></ch-edit>\n ) : (\n serverData.serverName\n )}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.serverUrl}\n {this.#renderTooltip(serverData.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell\"\n onClick={() => this.#handleDeleteServer(serverData)}\n >\n <button\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.actions.deleteServer}\n disabled={serverData.accessLevel === \"public\"}\n >\n <ch-image\n disabled={serverData.accessLevel === \"public\"}\n class=\"icon-md delete-server-icon\"\n src={DELETE_ICON}\n ></ch-image>\n </button>\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderAllServersGrid = (): Element => {\n return (\n <div class=\"tabular-grid-wrapper\">\n <div class=\"border-patch\"></div>\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridAllServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#onServersRowClickHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredServersData.map((serverData: ServerData) => {\n const serverNameEditKey = `${SERVER_NAME_PREFIX}${serverData.id}`;\n const hasError =\n this.validatableControls.get(serverNameEditKey)?.hasError ===\n true;\n const errorMsg =\n this.validatableControls.get(serverNameEditKey)?.message;\n\n return (\n <ch-tabular-grid-row\n rowid={serverData.id}\n class=\"tabular-grid-row\"\n >\n {this.#renderTabularGridCommonCells(serverData)}\n {hasError && this.#renderServerNameErrorMessage(errorMsg)}\n </ch-tabular-grid-row>\n );\n })}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n #renderRecentlyUsed = () => {\n const renderRecentlyUsed =\n this.selectedConnectionType === \"select\" &&\n this.recentlyUsedServersData.length > 0;\n\n return (\n renderRecentlyUsed && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n <div\n class={{\n \"layout\": true,\n \"layout--cols-3\": this.recentlyUsedServersData.length >= 3,\n \"layout--cols-2\": this.recentlyUsedServersData.length <= 2\n }}\n >\n {this.recentlyUsedServersData.map((server: ServerData) => (\n <button\n class={{\n \"layout__panel\": true,\n \"recently-used-card\": true,\n \"recently-used-card--selected\":\n this.selectedRecentlyUsedId === server.id\n }}\n onClick={() => this.#handleRecentlyUsedCardClick(server)}\n onDblClick={() =>\n this.#onRecentlyUsedDoubleClickHandler(server)\n }\n >\n <div class=\"recently-used-card-content\">\n <p class=\"body-regular-s text-neutral-gray-400\">\n {server.serverName}\n </p>\n <p class=\"body-regular-s text-neutral-gray-400 text-decoration-line-underline\">\n {server.serverUrl}\n </p>\n </div>\n {this.#renderTooltip(server.serverUrl)}\n </button>\n ))}\n </div>\n </div>\n )\n );\n };\n\n #renderAllServers = () => {\n return (\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderAllServersGrid()}\n </div>\n );\n };\n\n render(): void {\n return (\n <Host\n class={{\n \"widget elevation-1\": true,\n \"new-connection\": this.selectedConnectionType === \"new\",\n \"recently-used-empty\": this.recentlyUsedServersData.length === 0\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={SEARCH_ICON}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n\n {this.selectedConnectionType === \"select\" && [\n this.#renderRecentlyUsed(),\n this.#renderAllServers()\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class=\"input\"\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverUrlEL)}\n </div>\n\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ref={el =>\n (this.#serverFriendlyNameEL = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverFriendlyNameEL)}\n </div>\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n sessionId?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"version":3}
1
+ {"file":"gx-ide-server-selector.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","validateControls","h","config","clearControlError","sortTabularGridColumn","index","Locale","Host"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../common/styles.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n overflow: auto;\n border-inline: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// All Servers\n\n.tabular-grid {\n overflow: auto;\n border-block: 1px solid var(--grid-cell__border-color);\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n// WA: .tabular-grid-wrapper and .border-patch is a WA. See details on Asana task:\n// https://app.asana.com/1/10206720691358/project/1207081021030105/task/1211391456974726?focus=true\n.tabular-grid-wrapper {\n position: relative;\n overflow: auto;\n}\n.border-patch {\n --tabular-grid-border-radius: 4px;\n position: absolute;\n top: 0;\n inline-size: calc(100% - var(--tabular-grid-border-radius) * 2);\n inset-inline-start: var(--tabular-grid-border-radius);\n block-size: 2px;\n background-color: var(--items-container__bg-color);\n z-index: 9999;\n border-block-start: 1px solid var(--mer-border-color__on-surface);\n}\n\n.tooltip {\n position: absolute;\n}\n\n.recently-used-card {\n border: 1px solid var(--grid-cell__border-color);\n border-radius: var(--mer-border__radius--sm);\n cursor: pointer;\n\n &:hover {\n background-color: var(--mer-color__tinted-primary--5);\n }\n\n &:focus-visible {\n @include focus-outline();\n }\n\n &--selected {\n background-color: var(--mer-color__tinted-primary--10);\n border-color: var(--mer-color__tinted-primary--30);\n }\n}\n\n.recently-used-card-content {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n padding: 8px;\n gap: 2px;\n overflow: hidden;\n\n .text-decoration-line-underline {\n @include cell-ellipsis();\n max-width: 100%;\n text-decoration: underline;\n }\n}\n\n// All Severs tabular-grid\n\n.delete-server-icon {\n // WA: Getr and apply the marign inline value on the ch-image,\n // so that the button looks squared. This happens because the\n // button is \"tertiary\", which happens to have no padding-inline.\n // TODO: Investigate a solution that works without a WA.\n $cellBlockSize: 30.39px;\n margin-inline: calc((#{$cellBlockSize} - var(--ch-image-size)) / 2);\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"element\",\n $tabular-grid-affected-columns-nth-list: (\n 5\n )\n);\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { getAssetPath, JSX, Watch } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n clearControlError,\n ControlValidation,\n validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nimport sortTabularGridColumn from \"../../../common/chameleon/tabular-grid-column-sort\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"neutral\"\n});\n\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst SERVER_NAME_PREFIX = \"server-name-\";\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #_componentLocale: any;\n\n #chGridAllServersEl: HTMLChTabularGridElement;\n #serverUrlEL: HTMLChEditElement;\n #serverFriendlyNameEL: HTMLChEditElement;\n #updatedServerName: string | undefined;\n #serverNameEditElsMap: Map<string, HTMLChEditElement> = new Map();\n #versionsSelect: RadioGroupItemModel[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/server-selector/shortcuts.json`\n );\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredServersData: ServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The selected recently used server ID\n */\n @State() selectedRecentlyUsedId: string;\n\n /**\n * The list of all GX servers.\n */\n @Prop({ mutable: true }) serversData: ServerData[] = [];\n @Watch(\"serversData\")\n serversDataChanged(newValue: ServerData[]) {\n this.filteredServersData = newValue;\n }\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin,\n connectionOption: ConnectionOption\n ) => Promise<FormSubmitResult>;\n\n /**\n * Invoked to delete a server\n */\n @Prop() readonly deleteServerCallback!: (\n serverData: ServerData\n ) => Promise<boolean>;\n\n /**\n * Invoked to update a server\n */\n @Prop() readonly updateServerCallback!: (\n serverData: ServerData\n ) => Promise<FormSubmitResult>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n\n this.#versionsSelect = [\n {\n value: \"select\",\n caption: this.#_componentLocale.captions.selectServer\n },\n {\n value: \"new\",\n caption: this.#_componentLocale.captions.addServer\n }\n ];\n\n this.selectedServerUri = this.serversData[0]?.serverUrl;\n this.userName = this.serversData[0]?.gxServerUsername;\n\n this.filteredServersData = this.serversData;\n }\n\n componentDidRender() {\n if (\n this.selectedConnectionType === \"new\" &&\n this.#serverUrlEL &&\n this.#serverFriendlyNameEL\n ) {\n this.#initializeValidatableControls([\n this.#serverUrlEL,\n this.#serverFriendlyNameEL\n ]);\n this.#serverNameEditElsMap.clear();\n }\n\n if (\n this.selectedConnectionType === \"select\" &&\n this.#serverNameEditElsMap.size > 0\n ) {\n this.#initializeValidatableControls([\n ...this.#serverNameEditElsMap.values()\n ]);\n }\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void> => {\n let formSubmitResult: FormSubmitResult;\n if (this.selectedConnectionType === \"select\") {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.selectedServerUri,\n name: this.selectedServerName\n },\n this.selectedConnectionType\n );\n } else {\n formSubmitResult = await this.selectServerCallback(\n {\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n },\n this.selectedConnectionType\n );\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n }\n };\n\n // TODO: evaluate if this should be a global helper function.\n // It is used on other dialogs as well.\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #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 #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredServersData = this.serversData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = (event.detail as string).trim();\n\n const controlId =\n field === \"serverUrlInputValue\" ? \"server-url\" : \"server-name\";\n clearControlError(this.validatableControls, controlId);\n this.#enableConfirmButton();\n };\n\n #handleRecentlyUsedCardClick = async (server: ServerData) => {\n this.selectedRecentlyUsedId = server.id;\n await this.#chGridAllServersEl?.selectRow(server.id);\n await this.#handleServerSelection(server.id);\n };\n\n #handleDeleteServer = async (serverData: ServerData) => {\n if (serverData.accessLevel === \"private\") {\n const result = await this.deleteServerCallback(serverData);\n if (result) {\n this.selectedServerName = \"None\";\n this.enableConfirmButton = false;\n }\n }\n };\n\n #onServerNameInput = async (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.#updatedServerName = event.detail as string;\n };\n\n #onServerNameChange = async (serverData: ServerData) => {\n let result: FormSubmitResult = {\n fieldErrors: [],\n success: false\n };\n if (\n serverData.serverName !== this.#updatedServerName &&\n serverData.accessLevel === \"private\"\n ) {\n result = await this.updateServerCallback({\n ...serverData,\n serverName: this.#updatedServerName\n });\n }\n\n this.validatableControls = validateControls(\n result,\n this.validatableControls\n );\n\n if (result.success || serverData.serverName === this.#updatedServerName) {\n this.selectedServerName = this.#updatedServerName;\n clearControlError(\n this.validatableControls,\n `${SERVER_NAME_PREFIX}${serverData.id}`\n );\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #onRecentlyUsedDoubleClickHandler = (serverData: ServerData) => {\n this.#handleServerSelection(serverData.id);\n this.#confirmHandler();\n };\n\n #onServersRowClickHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) => this.#handleServerSelection(event.detail.rowId);\n\n #handleServerSelection = async (selectedRowId: string): Promise<void> => {\n if (selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n }\n\n const selectedServer = this.serversData.find(\n server => server.id === selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.selectedRecentlyUsedId = selectedServer?.id;\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n this.filteredServersData = [\n ...sortTabularGridColumn(e, this.filteredServersData, \"string\", undefined)\n ];\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n columnName=\"Connected\"\n settingable={false}\n columnNameHidden={hideColumnName}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n sortable={!hideColumnName}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"action\"\n class=\"tabular-grid-column tabular-grid-column-icon\"\n columnName=\"Action\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delayLong}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderServerNameErrorMessage = (errorMsg: string) => {\n return (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={ERROR_ICON}\n ></ch-image>\n {errorMsg}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n );\n };\n\n #renderTabularGridCommonCells = (serverData: ServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(serverData.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.accessLevel === \"private\" ? (\n <ch-edit\n id={`${SERVER_NAME_PREFIX}${serverData.id}`}\n value={serverData.serverName}\n onInput={this.#onServerNameInput}\n onChange={() => this.#onServerNameChange(serverData)}\n maxLength={18}\n ref={el => {\n const key = `${SERVER_NAME_PREFIX}${serverData.id}`;\n if (el) {\n this.#serverNameEditElsMap.set(key, el as HTMLChEditElement);\n } else {\n this.#serverNameEditElsMap.delete(key);\n }\n }}\n ></ch-edit>\n ) : (\n serverData.serverName\n )}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.serverUrl}\n {this.#renderTooltip(serverData.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {serverData.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell\"\n onClick={() => this.#handleDeleteServer(serverData)}\n >\n <button\n id=\"delete-button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.actions.deleteServer}\n disabled={serverData.accessLevel === \"public\"}\n >\n <ch-image\n disabled={serverData.accessLevel === \"public\"}\n class=\"icon-md delete-server-icon\"\n src={DELETE_ICON}\n ></ch-image>\n </button>\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderAllServersGrid = (): Element => {\n return (\n <div class=\"tabular-grid-wrapper\">\n <div class=\"border-patch\"></div>\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridAllServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#onServersRowClickHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredServersData.map((serverData: ServerData) => {\n const serverNameEditKey = `${SERVER_NAME_PREFIX}${serverData.id}`;\n const hasError =\n this.validatableControls.get(serverNameEditKey)?.hasError ===\n true;\n const errorMsg =\n this.validatableControls.get(serverNameEditKey)?.message;\n\n return (\n <ch-tabular-grid-row\n rowid={serverData.id}\n class=\"tabular-grid-row\"\n >\n {this.#renderTabularGridCommonCells(serverData)}\n {hasError && this.#renderServerNameErrorMessage(errorMsg)}\n </ch-tabular-grid-row>\n );\n })}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n id=\"cancel-button\"\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n id=\"confirm-button\"\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n #renderRecentlyUsed = () => {\n const renderRecentlyUsed =\n this.selectedConnectionType === \"select\" &&\n this.recentlyUsedServersData.length > 0;\n\n return (\n renderRecentlyUsed && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n <div\n class={{\n \"layout\": true,\n \"layout--cols-3\": this.recentlyUsedServersData.length >= 3,\n \"layout--cols-2\": this.recentlyUsedServersData.length <= 2\n }}\n >\n {this.recentlyUsedServersData.map(\n (server: ServerData, index: number) => (\n <button\n id={\"recently-used-server-\" + index}\n class={{\n \"layout__panel\": true,\n \"recently-used-card\": true,\n \"recently-used-card--selected\":\n this.selectedRecentlyUsedId === server.id\n }}\n onClick={() => this.#handleRecentlyUsedCardClick(server)}\n onDblClick={() =>\n this.#onRecentlyUsedDoubleClickHandler(server)\n }\n >\n <div class=\"recently-used-card-content\">\n <p class=\"body-regular-s text-neutral-gray-400\">\n {server.serverName}\n </p>\n <p class=\"body-regular-s text-neutral-gray-400 text-decoration-line-underline\">\n {server.serverUrl}\n </p>\n </div>\n {this.#renderTooltip(server.serverUrl)}\n </button>\n )\n )}\n </div>\n </div>\n )\n );\n };\n\n #renderAllServers = () => {\n return (\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderAllServersGrid()}\n </div>\n );\n };\n\n render(): void {\n return (\n <Host\n class={{\n \"widget elevation-1\": true,\n \"new-connection\": this.selectedConnectionType === \"new\",\n \"recently-used-empty\": this.recentlyUsedServersData.length === 0\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={SEARCH_ICON}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n\n {this.selectedConnectionType === \"select\" && [\n this.#renderRecentlyUsed(),\n this.#renderAllServers()\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class=\"input\"\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverUrlEL)}\n </div>\n\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n maxLength={18}\n ref={el =>\n (this.#serverFriendlyNameEL = el as HTMLChEditElement)\n }\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#serverFriendlyNameEL)}\n </div>\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n sessionId?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"version":3}
@@ -179,13 +179,13 @@ const GxIdeShareKb = class {
179
179
  __classPrivateFieldSet(this, _GxIdeShareKb__componentLocale, await locale.Locale.getComponentStrings(this.el), "f");
180
180
  }
181
181
  render() {
182
- return (index.h(index.Host, { class: "widget" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeShareKb_shortcutsSrc, "f"), ref: (el) => (this.chShortcutsEl = el) }), index.h("section", { class: "section" }, index.h("header", { class: "header control-header-with-border space-body spacing-body-inline spacing-body-block-start" }, index.h("div", { class: "field field-block" }, index.h("label", { class: "label" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").header.serverUrl), index.h("p", null, this.connectionData.serverUrl)), index.h("div", { class: "field field-block" }, index.h("label", { class: "label" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").header.user), index.h("p", null, this.connectionData.userName)), index.h("button", { class: "button-tertiary button-change", onClick: __classPrivateFieldGet(this, _GxIdeShareKb_changeConnectionHandler, "f") }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").header.change)), index.h("section", { class: "main field-group spacing-body" }, index.h("div", { class: "field field-block" }, index.h("label", { class: "label", htmlFor: "alias" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").kb.aliasLabel), index.h("ch-edit", {
182
+ return (index.h(index.Host, { class: "widget" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeShareKb_shortcutsSrc, "f"), ref: (el) => (this.chShortcutsEl = el) }), index.h("section", { class: "section" }, index.h("header", { class: "header control-header-with-border space-body spacing-body-inline spacing-body-block-start" }, index.h("div", { class: "field field-block" }, index.h("label", { class: "label" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").header.serverUrl), index.h("p", null, this.connectionData.serverUrl)), index.h("div", { class: "field field-block" }, index.h("label", { class: "label" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").header.user), index.h("p", null, this.connectionData.userName)), index.h("button", { id: "change-connection-button", class: "button-tertiary button-change", onClick: __classPrivateFieldGet(this, _GxIdeShareKb_changeConnectionHandler, "f") }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").header.change)), index.h("section", { class: "main field-group spacing-body" }, index.h("div", { class: "field field-block" }, index.h("label", { class: "label", htmlFor: "alias" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").kb.aliasLabel), index.h("ch-edit", {
183
183
  // alias
184
184
  class: "input", id: "kb-name", value: this.kbName, onInput: __classPrivateFieldGet(this, _GxIdeShareKb_kbNameInputHandler, "f"), placeholder: __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").kb.localKbNamePlaceholder, ref: (el) => (__classPrivateFieldSet(this, _GxIdeShareKb_KBNameEl, el, "f"))
185
185
  }), __classPrivateFieldGet(this, _GxIdeShareKb_evaluateTooltipRender, "f").call(this, __classPrivateFieldGet(this, _GxIdeShareKb_KBNameEl, "f"))), index.h("div", { class: "versions-container field-group" }, index.h("ch-radio-group-render", { class: "radio-group", model: __classPrivateFieldGet(this, _GxIdeShareKb_versionsSelect, "f"), onChange: __classPrivateFieldGet(this, _GxIdeShareKb_versionsChangedHandler, "f"), value: __classPrivateFieldGet(this, _GxIdeShareKb_versionsSelect, "f")[0].value, ref: (el) => (__classPrivateFieldSet(this, _GxIdeShareKb_versionSelectedTypeEl, el, "f")) }), this.versionSelectedType === "Select" && (index.h("div", { class: "versions-container__item field-group" }, index.h("div", { class: "field field-block" }, index.h("label", { class: "label", htmlFor: "control-id-1" }, __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").kb.versionsLabel), index.h("div", { class: "versions-container__input" }, index.h("ch-edit", { class: "input", readonly: true, placeholder: this.enableSelectVersionsButton
186
186
  ? __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").kb.versionsPlaceholder
187
187
  : __classPrivateFieldGet(this, _GxIdeShareKb__componentLocale, "f").kb
188
- .versionsPlaceholderDisabled, value: this.versionsValueInput }), index.h("button", { class: "button-tertiary button-icon-only", onClick: __classPrivateFieldGet(this, _GxIdeShareKb_selectedVersionHandler, "f"), disabled: !this.enableSelectVersionsButton }, index.h("ch-image", { src: __classPrivateFieldGet(this, _GxIdeShareKb_showMoreIcon, "f"), class: "icon-sm" })))))))), __classPrivateFieldGet(this, _GxIdeShareKb_renderFooter, "f").call(this))));
188
+ .versionsPlaceholderDisabled, value: this.versionsValueInput }), index.h("button", { id: "select-version-button", class: "button-tertiary button-icon-only", onClick: __classPrivateFieldGet(this, _GxIdeShareKb_selectedVersionHandler, "f"), disabled: !this.enableSelectVersionsButton }, index.h("ch-image", { src: __classPrivateFieldGet(this, _GxIdeShareKb_showMoreIcon, "f"), class: "icon-sm" })))))))), __classPrivateFieldGet(this, _GxIdeShareKb_renderFooter, "f").call(this))));
189
189
  }
190
190
  static get assetsDirs() { return ["gx-ide-assets/share-kb"]; }
191
191
  get el() { return index.getElement(this); }