@genexus/genexus-ide-ui 2.1.1 → 2.1.3

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 (594) hide show
  1. package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
  2. package/dist/cjs/gx-ide-about.cjs.entry.js.map +1 -1
  3. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  4. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
  5. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js.map +1 -1
  7. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js.map +1 -1
  9. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
  11. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  12. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
  15. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-bpm-sync-gam-roles.cjs.entry.js.map +1 -1
  17. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
  19. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  20. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js.map +1 -1
  21. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js.map +1 -1
  23. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  25. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  26. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  27. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
  28. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js.map +1 -1
  29. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  30. package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
  31. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
  33. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js +1 -1
  34. package/dist/cjs/gx-ide-deployment-tool.cjs.entry.js.map +1 -1
  35. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
  37. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +1 -1
  38. package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
  39. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
  40. package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js.map +1 -1
  41. package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
  42. package/dist/cjs/gx-ide-empty-state.cjs.entry.js.map +1 -1
  43. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
  44. package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
  45. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +1 -1
  46. package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js.map +1 -1
  47. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  48. package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
  49. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  50. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  51. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +1 -1
  52. package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
  53. package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js +1 -1
  54. package/dist/cjs/gx-ide-launchpad-apis_3.cjs.entry.js.map +1 -1
  55. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
  56. package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js.map +1 -1
  57. package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
  58. package/dist/cjs/gx-ide-loader.cjs.entry.js.map +1 -1
  59. package/dist/cjs/gx-ide-name-picker.cjs.entry.js +1 -1
  60. package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -1
  61. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
  62. package/dist/cjs/gx-ide-navigation-report.cjs.entry.js.map +1 -1
  63. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  64. package/dist/cjs/gx-ide-new-environment.cjs.entry.js.map +1 -1
  65. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  66. package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
  67. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  68. package/dist/cjs/gx-ide-new-object.cjs.entry.js.map +1 -1
  69. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  70. package/dist/cjs/gx-ide-new-version.cjs.entry.js.map +1 -1
  71. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  72. package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
  73. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +1 -1
  74. package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
  75. package/dist/cjs/gx-ide-references.cjs.entry.js +1 -1
  76. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  77. package/dist/cjs/gx-ide-restore-version.cjs.entry.js +5 -4
  78. package/dist/cjs/gx-ide-restore-version.cjs.entry.js.map +1 -1
  79. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
  80. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  81. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  82. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  83. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +1 -1
  84. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  85. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  86. package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
  87. package/dist/cjs/gx-ide-sign-in-result.cjs.entry.js +5 -3
  88. package/dist/cjs/gx-ide-sign-in-result.cjs.entry.js.map +1 -1
  89. package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
  90. package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
  91. package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
  92. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  93. package/dist/cjs/gx-ide-starting-template.cjs.entry.js +1 -1
  94. package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
  95. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js +1 -1
  96. package/dist/cjs/gx-ide-team-dev-bring-all-changes-selector.cjs.entry.js.map +1 -1
  97. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +1 -1
  98. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  99. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +1 -1
  100. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  101. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
  102. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
  103. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js +2 -2
  104. package/dist/cjs/gx-ide-team-dev-preview.cjs.entry.js.map +1 -1
  105. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  106. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js.map +1 -1
  107. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
  108. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  109. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
  110. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js.map +1 -1
  111. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +1 -1
  112. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  113. package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
  114. package/dist/cjs/gx-ide-test.cjs.entry.js.map +1 -1
  115. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  116. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js.map +1 -1
  117. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
  118. package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
  119. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  120. package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
  121. package/dist/collection/components/_helpers/comments-viewer/comments-viewer.css +1 -1
  122. package/dist/collection/components/_helpers/empty-state/gx-ide-empty-state.css +1 -0
  123. package/dist/collection/components/_helpers/ide-loader/ide-loader.css +4 -0
  124. package/dist/collection/components/_helpers/list-selector/list-selector.css +1 -0
  125. package/dist/collection/components/_starting-template/starting-template.css +4 -0
  126. package/dist/collection/components/_test/test.css +1 -0
  127. package/dist/collection/components/about/about.css +4 -0
  128. package/dist/collection/components/bpm/application-declaration/bpm-app-declaration.css +5 -0
  129. package/dist/collection/components/bpm/assign-roles/bpm-assign-roles.css +1 -0
  130. package/dist/collection/components/bpm/export-xpdl/bpm-export-xpdl.css +1 -0
  131. package/dist/collection/components/bpm/import-files/bpm-import-files.css +1 -0
  132. package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.css +1 -0
  133. package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.css +1 -0
  134. package/dist/collection/components/bpm/sync-gam-roles/bpm-sync-gam-roles.css +4 -0
  135. package/dist/collection/components/bpm/task-documents/task-documents.css +4 -0
  136. package/dist/collection/components/bpm/timer-duration/bpm-timer-duration.css +1 -0
  137. package/dist/collection/components/curl-inspector/curl-inspector.css +4 -0
  138. package/dist/collection/components/data-selector/data-selector.css +4 -0
  139. package/dist/collection/components/data-type-selector/data-type-selector.css +4 -0
  140. package/dist/collection/components/deployment-tool/deployment-tool.css +1 -0
  141. package/dist/collection/components/design-import/design-import.css +5 -0
  142. package/dist/collection/components/details-acknowledgements/details-acknowledgements.css +4 -0
  143. package/dist/collection/components/file-uploader/file-uploader.css +5 -0
  144. package/dist/collection/components/gam-installation-settings/gam-installation-settings.css +5 -0
  145. package/dist/collection/components/json-import/json-import.css +4 -0
  146. package/dist/collection/components/kb-manager-export/kb-manager-export.css +4 -0
  147. package/dist/collection/components/kb-manager-import/kb-manager-import.css +4 -0
  148. package/dist/collection/components/launchpad/native-apps/launchpad-native-apps.css +4 -0
  149. package/dist/collection/components/modules/edit-module-server/edit-module-server.css +4 -0
  150. package/dist/collection/components/name-picker/name-picker.css +4 -0
  151. package/dist/collection/components/navigation-report/navigation-report.css +4 -0
  152. package/dist/collection/components/new-environment/new-environment.css +4 -0
  153. package/dist/collection/components/new-kb/new-kb.css +4 -0
  154. package/dist/collection/components/new-object/new-object.css +4 -0
  155. package/dist/collection/components/new-version/new-version.css +4 -0
  156. package/dist/collection/components/object-selector/object-selector.css +4 -0
  157. package/dist/collection/components/open-api-import/open-api-import.css +4 -0
  158. package/dist/collection/components/references/references.css +1 -0
  159. package/dist/collection/components/restore-version/restore-version.css +7 -14
  160. package/dist/collection/components/restore-version/restore-version.js +4 -3
  161. package/dist/collection/components/restore-version/restore-version.js.map +1 -1
  162. package/dist/collection/components/select-kb-items/select-kb-items.css +4 -0
  163. package/dist/collection/components/select-user-team/select-user-team.css +4 -0
  164. package/dist/collection/components/sign-in-result/sign-in-result.css +5 -2
  165. package/dist/collection/components/sign-in-result/sign-in-result.js +4 -2
  166. package/dist/collection/components/sign-in-result/sign-in-result.js.map +1 -1
  167. package/dist/collection/components/splash/splash.css +4 -0
  168. package/dist/collection/components/start-page/start-page.css +4 -0
  169. package/dist/collection/components/team-dev/bring-all-changes-selector/bring-all-changes-selector.css +4 -0
  170. package/dist/collection/components/team-dev/bring-changes/bring-changes.css +4 -0
  171. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.css +4 -0
  172. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.css +4 -0
  173. package/dist/collection/components/team-dev/history/history.css +4 -0
  174. package/dist/collection/components/team-dev/preview/team-dev-preview.css +1 -0
  175. package/dist/collection/components/team-dev/preview/team-dev-preview.js +1 -1
  176. package/dist/collection/components/team-dev/preview/team-dev-preview.js.map +1 -1
  177. package/dist/collection/components/team-dev/select-recent-comment/select-recent-comment.css +5 -0
  178. package/dist/collection/components/team-dev/server-selector/server-selector.css +4 -0
  179. package/dist/collection/components/team-dev/share-kb/share-kb.css +4 -0
  180. package/dist/collection/components/team-dev/update/update.css +4 -0
  181. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +4 -0
  182. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +4 -0
  183. package/dist/collection/components/team-dev/version-control/commit/commit.css +4 -0
  184. package/dist/collection/components/wf-settings/wf-settings.css +1 -0
  185. package/dist/collection/components/ww-files/ww-files.css +4 -0
  186. package/dist/collection/components/ww-images/ww-images.css +4 -0
  187. package/dist/components/bpm-objects-selector.js +1 -1
  188. package/dist/components/bpm-objects-selector.js.map +1 -1
  189. package/dist/components/gx-ide-about.js +1 -1
  190. package/dist/components/gx-ide-about.js.map +1 -1
  191. package/dist/components/gx-ide-bpm-app-declaration.js +1 -1
  192. package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
  193. package/dist/components/gx-ide-bpm-assign-roles.js +1 -1
  194. package/dist/components/gx-ide-bpm-assign-roles.js.map +1 -1
  195. package/dist/components/gx-ide-bpm-export-xpdl.js +1 -1
  196. package/dist/components/gx-ide-bpm-export-xpdl.js.map +1 -1
  197. package/dist/components/gx-ide-bpm-import-files.js +1 -1
  198. package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
  199. package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
  200. package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
  201. package/dist/components/gx-ide-bpm-sync-gam-roles.js +1 -1
  202. package/dist/components/gx-ide-bpm-sync-gam-roles.js.map +1 -1
  203. package/dist/components/gx-ide-bpm-task-documents.js +1 -1
  204. package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
  205. package/dist/components/gx-ide-bpm-timer-duration.js +1 -1
  206. package/dist/components/gx-ide-bpm-timer-duration.js.map +1 -1
  207. package/dist/components/gx-ide-comments-viewer.js +1 -1
  208. package/dist/components/gx-ide-comments-viewer.js.map +1 -1
  209. package/dist/components/gx-ide-connect-gx-server.js +1 -1
  210. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  211. package/dist/components/gx-ide-create-kb-from-server.js +1 -1
  212. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  213. package/dist/components/gx-ide-curl-inspector.js +1 -1
  214. package/dist/components/gx-ide-curl-inspector.js.map +1 -1
  215. package/dist/components/gx-ide-data-selector.js +1 -1
  216. package/dist/components/gx-ide-data-selector.js.map +1 -1
  217. package/dist/components/gx-ide-data-type-selector.js +1 -1
  218. package/dist/components/gx-ide-data-type-selector.js.map +1 -1
  219. package/dist/components/gx-ide-deployment-tool.js +1 -1
  220. package/dist/components/gx-ide-deployment-tool.js.map +1 -1
  221. package/dist/components/gx-ide-design-import.js +1 -1
  222. package/dist/components/gx-ide-design-import.js.map +1 -1
  223. package/dist/components/gx-ide-details-acknowledgements.js +1 -1
  224. package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
  225. package/dist/components/gx-ide-edit-module-server.js +1 -1
  226. package/dist/components/gx-ide-edit-module-server.js.map +1 -1
  227. package/dist/components/gx-ide-empty-state2.js +1 -1
  228. package/dist/components/gx-ide-empty-state2.js.map +1 -1
  229. package/dist/components/gx-ide-file-uploader.js +1 -1
  230. package/dist/components/gx-ide-file-uploader.js.map +1 -1
  231. package/dist/components/gx-ide-gam-installation-settings.js +1 -1
  232. package/dist/components/gx-ide-gam-installation-settings.js.map +1 -1
  233. package/dist/components/gx-ide-json-import.js +1 -1
  234. package/dist/components/gx-ide-json-import.js.map +1 -1
  235. package/dist/components/gx-ide-kb-manager-export.js +1 -1
  236. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  237. package/dist/components/gx-ide-kb-manager-import.js +1 -1
  238. package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
  239. package/dist/components/gx-ide-name-picker.js +1 -1
  240. package/dist/components/gx-ide-name-picker.js.map +1 -1
  241. package/dist/components/gx-ide-navigation-report.js +1 -1
  242. package/dist/components/gx-ide-navigation-report.js.map +1 -1
  243. package/dist/components/gx-ide-new-environment.js +1 -1
  244. package/dist/components/gx-ide-new-environment.js.map +1 -1
  245. package/dist/components/gx-ide-new-kb.js +1 -1
  246. package/dist/components/gx-ide-new-kb.js.map +1 -1
  247. package/dist/components/gx-ide-new-object.js +1 -1
  248. package/dist/components/gx-ide-new-object.js.map +1 -1
  249. package/dist/components/gx-ide-new-version.js +1 -1
  250. package/dist/components/gx-ide-new-version.js.map +1 -1
  251. package/dist/components/gx-ide-object-selector.js +1 -1
  252. package/dist/components/gx-ide-object-selector.js.map +1 -1
  253. package/dist/components/gx-ide-open-api-import.js +1 -1
  254. package/dist/components/gx-ide-open-api-import.js.map +1 -1
  255. package/dist/components/gx-ide-references.js +1 -1
  256. package/dist/components/gx-ide-references.js.map +1 -1
  257. package/dist/components/gx-ide-restore-version.js +5 -4
  258. package/dist/components/gx-ide-restore-version.js.map +1 -1
  259. package/dist/components/gx-ide-select-user-team.js +1 -1
  260. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  261. package/dist/components/gx-ide-server-selector.js +1 -1
  262. package/dist/components/gx-ide-server-selector.js.map +1 -1
  263. package/dist/components/gx-ide-share-kb.js +1 -1
  264. package/dist/components/gx-ide-share-kb.js.map +1 -1
  265. package/dist/components/gx-ide-sign-in-result.js +5 -3
  266. package/dist/components/gx-ide-sign-in-result.js.map +1 -1
  267. package/dist/components/gx-ide-splash.js +1 -1
  268. package/dist/components/gx-ide-splash.js.map +1 -1
  269. package/dist/components/gx-ide-start-page.js +1 -1
  270. package/dist/components/gx-ide-start-page.js.map +1 -1
  271. package/dist/components/gx-ide-starting-template.js +1 -1
  272. package/dist/components/gx-ide-starting-template.js.map +1 -1
  273. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js +1 -1
  274. package/dist/components/gx-ide-team-dev-bring-all-changes-selector.js.map +1 -1
  275. package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
  276. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  277. package/dist/components/gx-ide-team-dev-commit.js +1 -1
  278. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  279. package/dist/components/gx-ide-team-dev-history.js +1 -1
  280. package/dist/components/gx-ide-team-dev-history.js.map +1 -1
  281. package/dist/components/gx-ide-team-dev-preview.js +2 -2
  282. package/dist/components/gx-ide-team-dev-preview.js.map +1 -1
  283. package/dist/components/gx-ide-team-dev-select-recent-comment.js +1 -1
  284. package/dist/components/gx-ide-team-dev-select-recent-comment.js.map +1 -1
  285. package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
  286. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  287. package/dist/components/gx-ide-team-dev-update-to-revision.js +1 -1
  288. package/dist/components/gx-ide-team-dev-update-to-revision.js.map +1 -1
  289. package/dist/components/gx-ide-team-dev-update.js +1 -1
  290. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  291. package/dist/components/gx-ide-test.js +1 -1
  292. package/dist/components/gx-ide-test.js.map +1 -1
  293. package/dist/components/gx-ide-wf-settings.js +1 -1
  294. package/dist/components/gx-ide-wf-settings.js.map +1 -1
  295. package/dist/components/gx-ide-ww-files.js +1 -1
  296. package/dist/components/gx-ide-ww-files.js.map +1 -1
  297. package/dist/components/gx-ide-ww-images.js +1 -1
  298. package/dist/components/gx-ide-ww-images.js.map +1 -1
  299. package/dist/components/ide-loader.js +1 -1
  300. package/dist/components/ide-loader.js.map +1 -1
  301. package/dist/components/launchpad-native-apps.js +1 -1
  302. package/dist/components/launchpad-native-apps.js.map +1 -1
  303. package/dist/components/list-selector.js +1 -1
  304. package/dist/components/list-selector.js.map +1 -1
  305. package/dist/components/select-kb-items.js +1 -1
  306. package/dist/components/select-kb-items.js.map +1 -1
  307. package/dist/esm/gx-ide-about.entry.js +1 -1
  308. package/dist/esm/gx-ide-about.entry.js.map +1 -1
  309. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  310. package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
  311. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  312. package/dist/esm/gx-ide-bpm-assign-roles.entry.js.map +1 -1
  313. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  314. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js.map +1 -1
  315. package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
  316. package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
  317. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  318. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
  319. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
  320. package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
  321. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js +1 -1
  322. package/dist/esm/gx-ide-bpm-sync-gam-roles.entry.js.map +1 -1
  323. package/dist/esm/gx-ide-bpm-task-documents.entry.js +1 -1
  324. package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
  325. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  326. package/dist/esm/gx-ide-bpm-timer-duration.entry.js.map +1 -1
  327. package/dist/esm/gx-ide-comments-viewer.entry.js +1 -1
  328. package/dist/esm/gx-ide-comments-viewer.entry.js.map +1 -1
  329. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  330. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  331. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  332. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  333. package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
  334. package/dist/esm/gx-ide-curl-inspector.entry.js.map +1 -1
  335. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  336. package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
  337. package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
  338. package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
  339. package/dist/esm/gx-ide-deployment-tool.entry.js +1 -1
  340. package/dist/esm/gx-ide-deployment-tool.entry.js.map +1 -1
  341. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  342. package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
  343. package/dist/esm/gx-ide-details-acknowledgements.entry.js +1 -1
  344. package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
  345. package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
  346. package/dist/esm/gx-ide-edit-module-server.entry.js.map +1 -1
  347. package/dist/esm/gx-ide-empty-state.entry.js +1 -1
  348. package/dist/esm/gx-ide-empty-state.entry.js.map +1 -1
  349. package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
  350. package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
  351. package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
  352. package/dist/esm/gx-ide-gam-installation-settings.entry.js.map +1 -1
  353. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  354. package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
  355. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  356. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  357. package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
  358. package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
  359. package/dist/esm/gx-ide-launchpad-apis_3.entry.js +1 -1
  360. package/dist/esm/gx-ide-launchpad-apis_3.entry.js.map +1 -1
  361. package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
  362. package/dist/esm/gx-ide-list-selector_2.entry.js.map +1 -1
  363. package/dist/esm/gx-ide-loader.entry.js +1 -1
  364. package/dist/esm/gx-ide-loader.entry.js.map +1 -1
  365. package/dist/esm/gx-ide-name-picker.entry.js +1 -1
  366. package/dist/esm/gx-ide-name-picker.entry.js.map +1 -1
  367. package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
  368. package/dist/esm/gx-ide-navigation-report.entry.js.map +1 -1
  369. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  370. package/dist/esm/gx-ide-new-environment.entry.js.map +1 -1
  371. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  372. package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
  373. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  374. package/dist/esm/gx-ide-new-object.entry.js.map +1 -1
  375. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  376. package/dist/esm/gx-ide-new-version.entry.js.map +1 -1
  377. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  378. package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
  379. package/dist/esm/gx-ide-open-api-import.entry.js +1 -1
  380. package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
  381. package/dist/esm/gx-ide-references.entry.js +1 -1
  382. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  383. package/dist/esm/gx-ide-restore-version.entry.js +5 -4
  384. package/dist/esm/gx-ide-restore-version.entry.js.map +1 -1
  385. package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
  386. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  387. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  388. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  389. package/dist/esm/gx-ide-server-selector.entry.js +1 -1
  390. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  391. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  392. package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
  393. package/dist/esm/gx-ide-sign-in-result.entry.js +5 -3
  394. package/dist/esm/gx-ide-sign-in-result.entry.js.map +1 -1
  395. package/dist/esm/gx-ide-splash.entry.js +1 -1
  396. package/dist/esm/gx-ide-splash.entry.js.map +1 -1
  397. package/dist/esm/gx-ide-start-page.entry.js +1 -1
  398. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  399. package/dist/esm/gx-ide-starting-template.entry.js +1 -1
  400. package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
  401. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js +1 -1
  402. package/dist/esm/gx-ide-team-dev-bring-all-changes-selector.entry.js.map +1 -1
  403. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +1 -1
  404. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  405. package/dist/esm/gx-ide-team-dev-commit.entry.js +1 -1
  406. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  407. package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
  408. package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
  409. package/dist/esm/gx-ide-team-dev-preview.entry.js +2 -2
  410. package/dist/esm/gx-ide-team-dev-preview.entry.js.map +1 -1
  411. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  412. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js.map +1 -1
  413. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
  414. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  415. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
  416. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js.map +1 -1
  417. package/dist/esm/gx-ide-team-dev-update.entry.js +1 -1
  418. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  419. package/dist/esm/gx-ide-test.entry.js +1 -1
  420. package/dist/esm/gx-ide-test.entry.js.map +1 -1
  421. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  422. package/dist/esm/gx-ide-wf-settings.entry.js.map +1 -1
  423. package/dist/esm/gx-ide-ww-files.entry.js +1 -1
  424. package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
  425. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  426. package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
  427. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  428. package/dist/genexus-ide-ui/{p-5929f575.entry.js → p-00705e1c.entry.js} +2 -2
  429. package/dist/genexus-ide-ui/p-00705e1c.entry.js.map +1 -0
  430. package/dist/genexus-ide-ui/{p-18c3c961.entry.js → p-056955be.entry.js} +17 -17
  431. package/dist/genexus-ide-ui/p-056955be.entry.js.map +1 -0
  432. package/dist/genexus-ide-ui/{p-3ff33154.entry.js → p-0620e8f2.entry.js} +33 -33
  433. package/dist/genexus-ide-ui/p-0620e8f2.entry.js.map +1 -0
  434. package/dist/genexus-ide-ui/{p-4af50a00.entry.js → p-06c31f23.entry.js} +2 -2
  435. package/dist/genexus-ide-ui/p-06c31f23.entry.js.map +1 -0
  436. package/dist/genexus-ide-ui/{p-76fdea52.entry.js → p-0be24413.entry.js} +2 -2
  437. package/dist/genexus-ide-ui/p-0be24413.entry.js.map +1 -0
  438. package/dist/genexus-ide-ui/{p-8019e064.entry.js → p-0e4daeb7.entry.js} +11 -11
  439. package/dist/genexus-ide-ui/p-0e4daeb7.entry.js.map +1 -0
  440. package/dist/genexus-ide-ui/{p-840c09d2.entry.js → p-123ef674.entry.js} +2 -2
  441. package/dist/genexus-ide-ui/{p-70cd77bc.entry.js → p-217bd2d7.entry.js} +2 -2
  442. package/dist/genexus-ide-ui/p-217bd2d7.entry.js.map +1 -0
  443. package/dist/genexus-ide-ui/{p-d6e7a813.entry.js → p-24247ec3.entry.js} +11 -11
  444. package/dist/genexus-ide-ui/p-24247ec3.entry.js.map +1 -0
  445. package/dist/genexus-ide-ui/{p-af2f9983.entry.js → p-2b3f161f.entry.js} +21 -21
  446. package/dist/genexus-ide-ui/p-2b3f161f.entry.js.map +1 -0
  447. package/dist/genexus-ide-ui/{p-750eb88a.entry.js → p-34577955.entry.js} +9 -9
  448. package/dist/genexus-ide-ui/p-34577955.entry.js.map +1 -0
  449. package/dist/genexus-ide-ui/{p-bdaae26a.entry.js → p-35c2a2f9.entry.js} +2 -2
  450. package/dist/genexus-ide-ui/p-35c2a2f9.entry.js.map +1 -0
  451. package/dist/genexus-ide-ui/{p-ee77b260.entry.js → p-37812762.entry.js} +8 -8
  452. package/dist/genexus-ide-ui/p-37812762.entry.js.map +1 -0
  453. package/dist/genexus-ide-ui/{p-0a7cbbd0.entry.js → p-3bbdad29.entry.js} +2 -2
  454. package/dist/genexus-ide-ui/p-3bbdad29.entry.js.map +1 -0
  455. package/dist/genexus-ide-ui/{p-f05a137a.entry.js → p-42860e7e.entry.js} +71 -71
  456. package/dist/genexus-ide-ui/p-42860e7e.entry.js.map +1 -0
  457. package/dist/genexus-ide-ui/{p-168d3c83.entry.js → p-4431f46f.entry.js} +2 -2
  458. package/dist/genexus-ide-ui/{p-24cf1cd2.entry.js → p-4bafe061.entry.js} +39 -39
  459. package/dist/genexus-ide-ui/p-4bafe061.entry.js.map +1 -0
  460. package/dist/genexus-ide-ui/{p-e4116b36.entry.js → p-4d7433e0.entry.js} +2 -2
  461. package/dist/genexus-ide-ui/p-4d7433e0.entry.js.map +1 -0
  462. package/dist/genexus-ide-ui/{p-dcfae3da.entry.js → p-4f58397f.entry.js} +53 -53
  463. package/dist/genexus-ide-ui/p-4f58397f.entry.js.map +1 -0
  464. package/dist/genexus-ide-ui/{p-2567883a.entry.js → p-508c4bee.entry.js} +2 -2
  465. package/dist/genexus-ide-ui/{p-8cee1076.entry.js → p-55cb0614.entry.js} +14 -14
  466. package/dist/genexus-ide-ui/p-55cb0614.entry.js.map +1 -0
  467. package/dist/genexus-ide-ui/{p-6b430ac1.entry.js → p-5727fce7.entry.js} +2 -2
  468. package/dist/genexus-ide-ui/p-5727fce7.entry.js.map +1 -0
  469. package/dist/genexus-ide-ui/{p-520c3763.entry.js → p-572fdc25.entry.js} +2 -2
  470. package/dist/genexus-ide-ui/p-572fdc25.entry.js.map +1 -0
  471. package/dist/genexus-ide-ui/{p-a50c520c.entry.js → p-5864a82d.entry.js} +18 -18
  472. package/dist/genexus-ide-ui/p-5864a82d.entry.js.map +1 -0
  473. package/dist/genexus-ide-ui/{p-2a59b523.entry.js → p-60db2f02.entry.js} +2 -2
  474. package/dist/genexus-ide-ui/p-60db2f02.entry.js.map +1 -0
  475. package/dist/genexus-ide-ui/{p-178805d6.entry.js → p-632d3a74.entry.js} +2 -2
  476. package/dist/genexus-ide-ui/p-632d3a74.entry.js.map +1 -0
  477. package/dist/genexus-ide-ui/{p-36462e51.entry.js → p-63abf7e8.entry.js} +41 -41
  478. package/dist/genexus-ide-ui/p-63abf7e8.entry.js.map +1 -0
  479. package/dist/genexus-ide-ui/{p-bb5a5c23.entry.js → p-69e7d46b.entry.js} +12 -12
  480. package/dist/genexus-ide-ui/p-69e7d46b.entry.js.map +1 -0
  481. package/dist/genexus-ide-ui/{p-1d3da80d.entry.js → p-7b76b0e4.entry.js} +2 -2
  482. package/dist/genexus-ide-ui/p-7b76b0e4.entry.js.map +1 -0
  483. package/dist/genexus-ide-ui/{p-875b8615.entry.js → p-83a7e6fb.entry.js} +6 -6
  484. package/dist/genexus-ide-ui/p-83a7e6fb.entry.js.map +1 -0
  485. package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js → p-886dc9c1.entry.js} +2 -2
  486. package/dist/genexus-ide-ui/{p-79d4490e.entry.js → p-90a50197.entry.js} +58 -58
  487. package/dist/genexus-ide-ui/p-90a50197.entry.js.map +1 -0
  488. package/dist/genexus-ide-ui/{p-49c1d667.entry.js → p-90b2307f.entry.js} +7 -7
  489. package/dist/genexus-ide-ui/p-90b2307f.entry.js.map +1 -0
  490. package/dist/genexus-ide-ui/{p-38d3adf1.entry.js → p-944a589f.entry.js} +21 -21
  491. package/dist/genexus-ide-ui/p-944a589f.entry.js.map +1 -0
  492. package/dist/genexus-ide-ui/{p-ca47bb29.entry.js → p-98820155.entry.js} +2 -2
  493. package/dist/genexus-ide-ui/{p-ca47bb29.entry.js.map → p-98820155.entry.js.map} +1 -1
  494. package/dist/genexus-ide-ui/{p-27786355.entry.js → p-98dbb43d.entry.js} +25 -25
  495. package/dist/genexus-ide-ui/p-98dbb43d.entry.js.map +1 -0
  496. package/dist/genexus-ide-ui/{p-b167052a.entry.js → p-9a10fa97.entry.js} +2 -2
  497. package/dist/genexus-ide-ui/{p-d0e61bdc.entry.js → p-9ca0c042.entry.js} +2 -2
  498. package/dist/genexus-ide-ui/p-9ca0c042.entry.js.map +1 -0
  499. package/dist/genexus-ide-ui/{p-c31f9478.entry.js → p-aad714a5.entry.js} +31 -31
  500. package/dist/genexus-ide-ui/p-aad714a5.entry.js.map +1 -0
  501. package/dist/genexus-ide-ui/{p-f61bde09.entry.js → p-af267991.entry.js} +49 -49
  502. package/dist/genexus-ide-ui/p-af267991.entry.js.map +1 -0
  503. package/dist/genexus-ide-ui/{p-22c0058b.entry.js → p-b5f2603f.entry.js} +11 -11
  504. package/dist/genexus-ide-ui/p-b5f2603f.entry.js.map +1 -0
  505. package/dist/genexus-ide-ui/{p-0dfa813a.entry.js → p-b6d59827.entry.js} +16 -16
  506. package/dist/genexus-ide-ui/p-b6d59827.entry.js.map +1 -0
  507. package/dist/genexus-ide-ui/{p-885e5d1c.entry.js → p-c2f2d79f.entry.js} +2 -2
  508. package/dist/genexus-ide-ui/p-c2f2d79f.entry.js.map +1 -0
  509. package/dist/genexus-ide-ui/{p-14c82d16.entry.js → p-c3a355c6.entry.js} +48 -48
  510. package/dist/genexus-ide-ui/p-c3a355c6.entry.js.map +1 -0
  511. package/dist/genexus-ide-ui/{p-38ae0c55.entry.js → p-ca1b9b8a.entry.js} +11 -10
  512. package/dist/genexus-ide-ui/p-ca1b9b8a.entry.js.map +1 -0
  513. package/dist/genexus-ide-ui/{p-1356ec09.entry.js → p-cd9e9e2b.entry.js} +2 -2
  514. package/dist/genexus-ide-ui/p-cd9e9e2b.entry.js.map +1 -0
  515. package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js → p-cdd2e79d.entry.js} +2 -2
  516. package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js → p-d68412ac.entry.js} +8 -8
  517. package/dist/genexus-ide-ui/{p-a8465dff.entry.js → p-d761587f.entry.js} +4 -4
  518. package/dist/genexus-ide-ui/{p-a8465dff.entry.js.map → p-d761587f.entry.js.map} +1 -1
  519. package/dist/genexus-ide-ui/{p-b2966a6b.entry.js → p-d7964c12.entry.js} +2 -2
  520. package/dist/genexus-ide-ui/{p-8735d37c.entry.js → p-dbf9a97d.entry.js} +2 -2
  521. package/dist/genexus-ide-ui/{p-14823abe.entry.js → p-e0fb6257.entry.js} +9 -9
  522. package/dist/genexus-ide-ui/p-e0fb6257.entry.js.map +1 -0
  523. package/dist/genexus-ide-ui/{p-734d5fa1.entry.js → p-e32f5b19.entry.js} +2 -2
  524. package/dist/genexus-ide-ui/{p-af3cc463.entry.js → p-e3ff125f.entry.js} +2 -2
  525. package/dist/genexus-ide-ui/{p-899ec74e.entry.js → p-e883cd82.entry.js} +35 -35
  526. package/dist/genexus-ide-ui/p-e883cd82.entry.js.map +1 -0
  527. package/dist/genexus-ide-ui/{p-e4c250eb.entry.js → p-ebb56b65.entry.js} +23 -23
  528. package/dist/genexus-ide-ui/p-ebb56b65.entry.js.map +1 -0
  529. package/dist/genexus-ide-ui/{p-b44a875d.entry.js → p-f1b452fb.entry.js} +2 -2
  530. package/dist/genexus-ide-ui/p-f1b452fb.entry.js.map +1 -0
  531. package/dist/genexus-ide-ui/{p-ebfc64a5.entry.js → p-fb5dd0a2.entry.js} +10 -10
  532. package/dist/genexus-ide-ui/p-fb5dd0a2.entry.js.map +1 -0
  533. package/dist/genexus-ide-ui/{p-392bdfaa.entry.js → p-fb64e0b1.entry.js} +20 -20
  534. package/dist/genexus-ide-ui/p-fb64e0b1.entry.js.map +1 -0
  535. package/dist/genexus-ide-ui/{p-747fbbd8.entry.js → p-fdaeb19a.entry.js} +2 -2
  536. package/package.json +1 -1
  537. package/dist/genexus-ide-ui/p-0a7cbbd0.entry.js.map +0 -1
  538. package/dist/genexus-ide-ui/p-0dfa813a.entry.js.map +0 -1
  539. package/dist/genexus-ide-ui/p-1356ec09.entry.js.map +0 -1
  540. package/dist/genexus-ide-ui/p-14823abe.entry.js.map +0 -1
  541. package/dist/genexus-ide-ui/p-14c82d16.entry.js.map +0 -1
  542. package/dist/genexus-ide-ui/p-178805d6.entry.js.map +0 -1
  543. package/dist/genexus-ide-ui/p-18c3c961.entry.js.map +0 -1
  544. package/dist/genexus-ide-ui/p-1d3da80d.entry.js.map +0 -1
  545. package/dist/genexus-ide-ui/p-22c0058b.entry.js.map +0 -1
  546. package/dist/genexus-ide-ui/p-24cf1cd2.entry.js.map +0 -1
  547. package/dist/genexus-ide-ui/p-27786355.entry.js.map +0 -1
  548. package/dist/genexus-ide-ui/p-2a59b523.entry.js.map +0 -1
  549. package/dist/genexus-ide-ui/p-36462e51.entry.js.map +0 -1
  550. package/dist/genexus-ide-ui/p-38ae0c55.entry.js.map +0 -1
  551. package/dist/genexus-ide-ui/p-38d3adf1.entry.js.map +0 -1
  552. package/dist/genexus-ide-ui/p-392bdfaa.entry.js.map +0 -1
  553. package/dist/genexus-ide-ui/p-3ff33154.entry.js.map +0 -1
  554. package/dist/genexus-ide-ui/p-49c1d667.entry.js.map +0 -1
  555. package/dist/genexus-ide-ui/p-4af50a00.entry.js.map +0 -1
  556. package/dist/genexus-ide-ui/p-520c3763.entry.js.map +0 -1
  557. package/dist/genexus-ide-ui/p-5929f575.entry.js.map +0 -1
  558. package/dist/genexus-ide-ui/p-6b430ac1.entry.js.map +0 -1
  559. package/dist/genexus-ide-ui/p-70cd77bc.entry.js.map +0 -1
  560. package/dist/genexus-ide-ui/p-750eb88a.entry.js.map +0 -1
  561. package/dist/genexus-ide-ui/p-76fdea52.entry.js.map +0 -1
  562. package/dist/genexus-ide-ui/p-79d4490e.entry.js.map +0 -1
  563. package/dist/genexus-ide-ui/p-8019e064.entry.js.map +0 -1
  564. package/dist/genexus-ide-ui/p-875b8615.entry.js.map +0 -1
  565. package/dist/genexus-ide-ui/p-885e5d1c.entry.js.map +0 -1
  566. package/dist/genexus-ide-ui/p-899ec74e.entry.js.map +0 -1
  567. package/dist/genexus-ide-ui/p-8cee1076.entry.js.map +0 -1
  568. package/dist/genexus-ide-ui/p-a50c520c.entry.js.map +0 -1
  569. package/dist/genexus-ide-ui/p-af2f9983.entry.js.map +0 -1
  570. package/dist/genexus-ide-ui/p-b44a875d.entry.js.map +0 -1
  571. package/dist/genexus-ide-ui/p-bb5a5c23.entry.js.map +0 -1
  572. package/dist/genexus-ide-ui/p-bdaae26a.entry.js.map +0 -1
  573. package/dist/genexus-ide-ui/p-c31f9478.entry.js.map +0 -1
  574. package/dist/genexus-ide-ui/p-d0e61bdc.entry.js.map +0 -1
  575. package/dist/genexus-ide-ui/p-d6e7a813.entry.js.map +0 -1
  576. package/dist/genexus-ide-ui/p-dcfae3da.entry.js.map +0 -1
  577. package/dist/genexus-ide-ui/p-e4116b36.entry.js.map +0 -1
  578. package/dist/genexus-ide-ui/p-e4c250eb.entry.js.map +0 -1
  579. package/dist/genexus-ide-ui/p-ebfc64a5.entry.js.map +0 -1
  580. package/dist/genexus-ide-ui/p-ee77b260.entry.js.map +0 -1
  581. package/dist/genexus-ide-ui/p-f05a137a.entry.js.map +0 -1
  582. package/dist/genexus-ide-ui/p-f61bde09.entry.js.map +0 -1
  583. /package/dist/genexus-ide-ui/{p-840c09d2.entry.js.map → p-123ef674.entry.js.map} +0 -0
  584. /package/dist/genexus-ide-ui/{p-168d3c83.entry.js.map → p-4431f46f.entry.js.map} +0 -0
  585. /package/dist/genexus-ide-ui/{p-2567883a.entry.js.map → p-508c4bee.entry.js.map} +0 -0
  586. /package/dist/genexus-ide-ui/{p-dbac8ae2.entry.js.map → p-886dc9c1.entry.js.map} +0 -0
  587. /package/dist/genexus-ide-ui/{p-b167052a.entry.js.map → p-9a10fa97.entry.js.map} +0 -0
  588. /package/dist/genexus-ide-ui/{p-fa8cb0d8.entry.js.map → p-cdd2e79d.entry.js.map} +0 -0
  589. /package/dist/genexus-ide-ui/{p-60bbf1b4.entry.js.map → p-d68412ac.entry.js.map} +0 -0
  590. /package/dist/genexus-ide-ui/{p-b2966a6b.entry.js.map → p-d7964c12.entry.js.map} +0 -0
  591. /package/dist/genexus-ide-ui/{p-8735d37c.entry.js.map → p-dbf9a97d.entry.js.map} +0 -0
  592. /package/dist/genexus-ide-ui/{p-734d5fa1.entry.js.map → p-e32f5b19.entry.js.map} +0 -0
  593. /package/dist/genexus-ide-ui/{p-af3cc463.entry.js.map → p-e3ff125f.entry.js.map} +0 -0
  594. /package/dist/genexus-ide-ui/{p-747fbbd8.entry.js.map → p-fdaeb19a.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["bringChangesCss","CSS_BUNDLES","COMBO_BOX_ALL_VALUE","DETAIL_LABEL_CLASSES","ADD_ICON","getIconPath","category","name","colorType","EDITED_ICON","FILTER_ICON","SEARCH_ICON","SUBSTRACT_ICON","WARNING_ICON","ERROR_ICON","GxIdeTeamDevBringChanges","_GxIdeTeamDevBringChanges_componentLocale","set","this","_GxIdeTeamDevBringChanges_commitLabel","_GxIdeTeamDevBringChanges_comboBoxStatesModel","_GxIdeTeamDevBringChanges_checkedObjectsIdsArray","_GxIdeTeamDevBringChanges_formatComments","commitInformation","length","h","comment","firstComment","__classPrivateFieldGet","latest","_GxIdeTeamDevBringChanges_mergeCheckedClickedHandler","async","merging","newobjectsStatesMap","Map","objectsStatesMap","forEach","checkedObjectId","operationType","mergeObjectsCallback","_GxIdeTeamDevBringChanges_mergeSingleObject","objectId","_GxIdeTeamDevBringChanges_renderActionCellContent","actionTaken","icon","caption","iconColor","objects","actions","delete","insert","modify","class","type","src","style","backgroundColor","_GxIdeTeamDevBringChanges_renderCommitsNumbers","onlyNumbers","_a","id","_b","loading","_GxIdeTeamDevBringChanges_renderFormatedDate","date","dateObject","Date","lang","navigator","languages","language","toLocaleDateString","toLocaleTimeString","hour","minute","hour12","_GxIdeTeamDevBringChanges_renderObjectStateWithIcon","objectType","states","reverting","classes","revertPillAsButton","onClick","call","statesForButton","_GxIdeTeamDevBringChanges_renderObjectsRows","objectsFiltered","map","commitObject","marked","markedObjectsSet","has","alreadyMerged","alreadyMergedObjectsIdsArray","find","errorOrWarningMessage","commitObjectsMessagesMap","get","state","MESSAGE_ICON","key","rowid","ref","el","setAttribute","size","renderObjectTypeWithIcon","description","_GxIdeTeamDevBringChanges_rowContextMenuHandler","ev","preventDefault","selectedRowsIds","tabularGridEl","getSelectedRows","contextMenuCallback","selection","clientX","detail","clientY","_GxIdeTeamDevBringChanges_rowMarkingChangedHandler","event","newobjectsMarkedSet","Set","markedRowsIds","rowsId","checkedObjectsIgnoringAlreadyMerged","filter","markedObjectId","includes","__classPrivateFieldSet","add","atLeastOneObjectIsChecked","objectCurrentState","markedRowIndex","findIndex","splice","_GxIdeTeamDevBringChanges_searchInputHandler","searchValue","toLowerCase","_GxIdeTeamDevBringChanges_updateFilteredObjects","_GxIdeTeamDevBringChanges_stateChangedHandler","stateFilterValue","filteredObjects","commitObjects","object","objectState","includesName","includesType","includesDescription","_GxIdeTeamDevBringChanges_sortTabularGridColumnCallback","e","columnId","objectProperty","dateType","COLUMNS_IDS","sortTabularGridColumn","_GxIdeTeamDevBringChanges_viewAllCommentsHandler","viewAllCommentsCallback","_GxIdeTeamDevBringChanges_editRangeHandler","editRangeCallback","objectsStatesMapChanged","newCommitObjectsStateMap","someObjectIsMerging","entries","commitObjectsChanged","newCommitObjects","componentWillLoad","Locale","getComponentStrings","commmits","commmit","all","value","warning","error","reverted","merged","updateObjectState","newState","message","checkedObject","push","markRow","render","enableRichRowSelector","disableControls","Host","model","commitDetail","revertChangesDetail","bringChangesDetail","genexusServer","href","target","knowledgeBase","currentVersion","mergeFromVersion","title","ids","from","to","buttons","editRange","htmlFor","comments","viewAllComments","replace","toString","viewComment","hideFilters","disabled","startImgSrc","placeholder","searchPlaceholder","onInput","statePlaceholder","revertSelected","mergeSelected","keyboardNavigationMode","rowSelectionMode","onRowMarkingChanged","onRowContextMenu","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","sortable","onColumnSortChanged","config","tabularGrid","colSize","action","status","isAnimated","stateIconSrc","stateTitle","cancelLabel","loader","loaderTitle","show"],"sources":["src/components/team-dev/bring-changes/bring-changes.scss?tag=gx-ide-team-dev-bring-changes&encapsulation=shadow","src/components/team-dev/bring-changes/bring-changes.tsx"],"sourcesContent":["@import \"../common/styles.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: var(--spacing-padding-m);\n --pill-padding-block: var(--spacing-padding-xxs);\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: var(--spacing-padding-xxl);\n$header-item-common-separator-border: 1px solid\n var(--color-border-surface-on-elevation-1);\n\n%header-item-common-inline-sizes {\n max-inline-size: 250px;\n min-inline-size: 180px;\n}\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n @extend %header-item-common-inline-sizes;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n gap: var(--spacing-gap-xxl);\n}\n\n// header detail\n.header__detail {\n display: grid;\n grid-template-areas:\n \"detail-title detail-title detail-title detail-title\"\n // \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\"\n \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";\n row-gap: var(--spacing-gap-xl);\n // grid-auto-columns: max-content;\n // grid-template-columns: max-content auto auto auto;\n // grid-template-columns: minmax(250px, 350px) repeat(3, minmax(180px, 250px));\n}\n.detail__label {\n color: var(--color-text-neutral-disabled);\n}\n.detail__title {\n grid-area: detail-title;\n}\n.detail__commit-name {\n grid-area: detail-commit-name;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--color-text-primary-default);\n text-decoration: underline;\n &:hover {\n color: var(--color-text-primary-hover);\n }\n &:active {\n color: var(--color-text-primary-pressed);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__current-version {\n grid-area: detail-current-version;\n @extend %header-item-common;\n}\n.detail__merge-from-version {\n grid-area: detail-merge-from-version;\n @extend %header-item-common-end;\n}\n\n// header information\n.header__information {\n display: grid;\n row-gap: var(--spacing-gap-m);\n grid-template-areas:\n \"information-title information-title\"\n \"information-col-1 information-col-2\";\n grid-template-columns: max-content 1fr;\n grid-template-rows: max-content max-content;\n}\n.information__title {\n grid-area: information-title;\n}\n.information__col-1 {\n grid-area: information-col-1;\n display: flex;\n gap: var(--spacing-gap-xxl);\n @extend %header-item-common-start;\n}\n\n//header comments\n.header__comments .layout__panel {\n justify-items: start;\n text-align: left;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: var(--spacing-padding-xxl);\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n}\n.button-merge-checked {\n margin-inline-start: auto;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--color-accent-surface-elevation-1);\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n.comments-container {\n @include ellipsis;\n}\n\n.button-tertiary.edit-range-button {\n padding-block: 0;\n align-content: flex-end;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control-border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--color-accent-surface-surface);\n transition:\n var(--timing-super-fast) block-size,\n var(--timing-super-fast) background-color,\n var(--timing-super-fast) padding-block,\n var(--timing-super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--color-accent-surface-elevation-1);\n padding-block: var(--control-padding-block) !important;\n padding-inline: var(--control-padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n\n &--to-merge,\n &--to-revert {\n --pill-background-color: var(--color-accent-neutral-contrast);\n --pill-color: var(--color-border-primary-default);\n --pill-border-color: var(--color-accent-primary-pressed);\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--color-border-primary-default);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--color-accent-neutral-contrast);\n --pill-color: var(--color-border-primary-default);\n --pill-border-color: var(--color-accent-primary-pressed);\n }\n &--warning {\n --pill-background-color: var(--color-accent-warning-contrast);\n --pill-color: var(--color-border-warning-default);\n --pill-border-color: var(--color-border-warning-default);\n }\n &--error {\n --pill-background-color: var(--color-accent-error-contrast);\n --pill-color: var(--color-border-error-default);\n --pill-border-color: var(--color-border-error-light);\n }\n &--merged,\n &--reverted {\n --pill-background-color: var(--color-accent-success-contrast);\n --pill-color: var(--color-border-success-default);\n --pill-border-color: var(--color-accent-success-default);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.merging-spinner-caption {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n $size: 16px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 16px;\n --pill-color: var(--color-border-primary-default);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--color-accent-primary-default),\n var(--color-accent-primary-pressed)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control-padding-block: var(--pill-padding-block);\n --control-padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n padding-block: 0;\n align-items: center;\n justify-content: center;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n padding: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: var(--spacing-padding-m);\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 16px;\n padding-inline: var(--spacing-padding-xl);\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--color-accent-surface-elevation-2) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 400px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChEditCustomEvent,\n TabularGridMarkingChangedEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../components\";\n\nimport { config } from \"../../../common/config\";\n\nimport { ContextMenuCallback } from \"../../../components\";\n\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\n\nimport { COLUMNS_IDS } from \"../version-control/common/tabular-grid-render\";\nimport sortTabularGridColumn, {\n type SortTabularGridColumnDataType\n} from \"../../../common/chameleon/tabular-grid-column-sort\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\"\n];\n\nconst COMBO_BOX_ALL_VALUE = \"all\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-surface\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-surface\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-surface\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-bring-changes\",\n styleUrl: \"bring-changes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-changes\"]\n})\nexport class GxIdeTeamDevBringChanges {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #commitLabel: string;\n #comboBoxStatesModel: { caption: string; value: ObjectStateForFilter }[];\n #checkedObjectsIdsArray: string[] = [];\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n private tabularGridEl!: HTMLChTabularGridElement;\n\n /**\n * An array that holds the id's of the objects that have been merged already.\n */\n @State() alreadyMergedObjectsIdsArray: string[] = [];\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() objectsFiltered: CommitObject[] = [];\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() stateFilterValue: ObjectStateForFilter = COMBO_BOX_ALL_VALUE;\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>();\n\n /**\n * A map that holds the current commit objects states (\"pending\" | \"warning\" | \"error\" | \"merged\" | \"reverted\")\n */\n @State() objectsStatesMap: Map<string, ObjectState> = new Map();\n @Watch(\"objectsStatesMap\")\n objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>) {\n const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(\n ([, state]) => state === \"merging\" || state === \"reverting\"\n );\n\n if (!someObjectIsMerging) {\n this.merging = false;\n }\n }\n\n /**\n * A map that holds object messages, if any, for objects that could not be merged (these objects are in a \"warning\" or \"error\" state)\n */\n @State() commitObjectsMessagesMap: Map<string, string> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() merging: boolean = false;\n\n /**\n * Detail about the commit\n */\n @Prop() readonly commitDetail: CommitDetail;\n\n /**\n * Commit information\n */\n @Prop() readonly commitInformation: CommitInformation[] = [];\n\n /**\n * Array of commit\n */\n @Prop() readonly commitObjects: CommitObject[] = [];\n @Watch(\"commitObjects\")\n commitObjectsChanged(newCommitObjects: CommitObject[]) {\n this.loading = true;\n if (newCommitObjects.length) {\n // This is the first and only objects asignment\n this.loading = false;\n\n // All commit objects begin as \"pending to merge\"\n newCommitObjects.forEach(commitObject => {\n this.objectsStatesMap.set(\n commitObject.id,\n this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n );\n });\n\n this.objectsFiltered = this.commitObjects;\n }\n }\n\n /**\n * Determines whether the filters are rendered or not.\n */\n @Prop() readonly hideFilters: boolean = false;\n\n /**\n * The type of operation to perform: \"merge\" or \"revert\".\n */\n @Prop() readonly operationType: OperationType = \"merge\";\n\n /**\n * The callback that is triggered when the user wants to merge more than one commit.\n */\n @Prop() readonly mergeObjectsCallback!: MergeObjectsCallback;\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly revertPillAsButton: boolean = false;\n\n /**\n * Invoked when user activates the context menu on th grid.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Callback to be executed when the user wants to view all comments.\n */\n @Prop() readonly viewAllCommentsCallback!: () => Promise<void>;\n\n /**\n * Callback to be executed when the user wants to edit the range.\n */\n @Prop() readonly editRangeCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#commitLabel =\n this.commitInformation.length > 1\n ? this.#componentLocale.commmits\n : this.#componentLocale.commmit;\n\n // Initiate \"states\" combo box filter\n this.#comboBoxStatesModel = [\n {\n caption: this.#componentLocale.states.all,\n value: COMBO_BOX_ALL_VALUE\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states[\"to-revert\"]\n : this.#componentLocale.states[\"to-merge\"],\n value: this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n },\n {\n caption: this.#componentLocale.states.warning,\n value: \"warning\"\n },\n {\n caption: this.#componentLocale.states.error,\n value: \"error\"\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states.reverted\n : this.#componentLocale.states.merged,\n value: this.operationType === \"revert\" ? \"reverted\" : \"merged\"\n }\n ];\n\n if (this.commitObjects?.length) {\n // if commitObjects already set...\n this.commitObjectsChanged(this.commitObjects);\n }\n }\n\n #formatComments = (): JSX.Element => {\n if (this.commitInformation.length === 1) {\n return <span>{this.commitInformation[0].comment}</span>;\n }\n const firstComment =\n this.commitInformation[this.commitInformation.length - 1].comment;\n return <span>{`${this.#componentLocale.latest}: ${firstComment}...`}</span>;\n };\n\n #mergeCheckedClickedHandler = async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsStatesMap.set(\n checkedObjectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback(this.#checkedObjectsIdsArray);\n };\n\n #mergeSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(\n objectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback([objectId]);\n };\n\n #renderActionCellContent = (\n actionTaken: ObjectActionTaken\n ): JSX.Element[] => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (actionTaken === \"Deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.objects.actions.delete;\n iconColor = \"--color-icon-error-default\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--color-icon-success-default\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--color-icon-warning-default\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-s\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #renderCommitsNumbers = (onlyNumbers: boolean = false): string => {\n if (this.commitInformation?.length > 1) {\n // more than one commit\n return onlyNumbers\n ? `${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`\n : `${this.#commitLabel} ${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`;\n } else if (this.commitInformation?.length === 1) {\n // just one commit\n return onlyNumbers\n ? this.commitInformation[0].id\n : `${this.#commitLabel} ${this.commitInformation[0].id}`;\n } else {\n // Probably commits have not been loaded yet (loading state)\n return onlyNumbers\n ? `${this.#componentLocale.loading}`\n : `${this.#commitLabel} ${this.#componentLocale.loading}`;\n }\n };\n\n #renderFormatedDate = (date: Date): string => {\n const dateObject = new Date(date);\n const lang = navigator.languages?.[0] || navigator.language;\n\n return `${dateObject.toLocaleDateString(\n lang\n )} ${dateObject.toLocaleTimeString(lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false\n })}`;\n };\n\n #renderObjectStateWithIcon = (\n objectType: ObjectState,\n objectId: string\n ): JSX.Element[] => {\n if (objectType === \"merging\" || objectType === \"reverting\") {\n return (\n <span class=\"merging-spinner-caption\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.states.reverting\n : this.#componentLocale.states.merging}\n </span>\n );\n }\n const classes = `pill pill--${objectType} body-semi-bold-s`;\n if (\n this.revertPillAsButton &&\n (objectType === \"to-merge\" ||\n objectType === \"to-merge-marked\" ||\n objectType === \"to-revert\")\n ) {\n return (\n <button\n class={{ [classes]: true, \"button-secondary\": true }}\n onClick={this.#mergeSingleObject(objectId)}\n >\n {this.#componentLocale.statesForButton[objectType]}\n </button>\n );\n } else {\n return (\n <span class={classes}>{this.#componentLocale.states[objectType]}</span>\n );\n }\n };\n\n #renderObjectsRows = (): JSX.Element[] => {\n return this.objectsFiltered.map(commitObject => {\n const marked = this.markedObjectsSet.has(commitObject.id);\n\n const alreadyMerged = this.alreadyMergedObjectsIdsArray.find(\n checkedObjectId => checkedObjectId === commitObject.id\n );\n const errorOrWarningMessage = this.commitObjectsMessagesMap.get(\n commitObject.id\n );\n const state = this.objectsStatesMap.get(commitObject.id);\n\n let MESSAGE_ICON;\n if (state === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (state === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n }\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={commitObject.id}\n rowid={commitObject.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": alreadyMerged\n }}\n size=\"max-content\"\n >\n {commitObject.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(commitObject.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {commitObject.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(commitObject.actionTaken)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectStateWithIcon(\n this.objectsStatesMap.get(commitObject.id),\n commitObject.id\n )}\n </ch-tabular-grid-cell>\n {errorOrWarningMessage && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{ \"tabular-grid-rowset-empty\": true, [state]: true }}\n >\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-s warning-error-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {errorOrWarningMessage}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowContextMenuHandler = async (\n ev: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n ev.preventDefault();\n const selectedRowsIds = await this.tabularGridEl.getSelectedRows();\n\n await this.contextMenuCallback({\n selection: selectedRowsIds,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #rowMarkingChangedHandler = (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const newobjectsMarkedSet = new Set<string>();\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n const markedRowsIds = event.detail.rowsId;\n const checkedObjectsIgnoringAlreadyMerged = markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyMergedObjectsIdsArray.includes(markedObjectId)\n );\n this.#checkedObjectsIdsArray = [...checkedObjectsIgnoringAlreadyMerged];\n\n // Update markedObjectsSet\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsMarkedSet.add(checkedObjectId);\n });\n this.markedObjectsSet = newobjectsMarkedSet;\n\n this.atLeastOneObjectIsChecked = markedRowsIds.length > 0;\n\n newobjectsStatesMap.forEach(objectId => {\n const objectCurrentState = this.objectsStatesMap.get(objectId);\n if (\n objectCurrentState !== \"to-merge\" &&\n objectCurrentState !== \"to-merge-marked\"\n ) {\n return;\n }\n\n const markedRowIndex = markedRowsIds.findIndex(id => id === objectId);\n if (markedRowIndex !== -1) {\n newobjectsStatesMap.set(objectId, \"to-merge-marked\");\n markedRowsIds.splice(markedRowIndex, 1);\n markedRowsIds;\n } else {\n newobjectsStatesMap.set(objectId, \"to-merge\");\n }\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).toLowerCase();\n this.#updateFilteredObjects();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.stateFilterValue = event.detail as ObjectStateForFilter;\n this.#updateFilteredObjects();\n };\n\n #updateFilteredObjects = () => {\n let filteredObjects = [...this.commitObjects];\n\n // filter by state (ch-combo-box-render) ...\n if (this.stateFilterValue !== \"all\") {\n filteredObjects = filteredObjects.filter(object => {\n const objectState = this.objectsStatesMap.get(object.id);\n return objectState === this.stateFilterValue;\n });\n }\n\n // and filter by value (ch-edit) as well\n filteredObjects = filteredObjects.filter(object => {\n const includesName = object.name.toLowerCase().includes(this.searchValue);\n\n const includesType = object.type.name\n .toLowerCase()\n .includes(this.searchValue);\n\n const includesDescription = object.description\n .toLowerCase()\n .includes(this.searchValue);\n\n if (includesName || includesType || includesDescription) {\n return true;\n }\n return false;\n });\n\n this.objectsFiltered = filteredObjects;\n };\n\n /**\n * It allows the host updating an object state, by providing the object id.\n * @param objectId The ID of the object to update.\n * @param newState The new state to set on the object.\n * @param message Optional message explaining the change.\n *\n * @example\n * bringChanges.updateObjectState('obj-24', \"merging\", null);\n * bringChanges.updateObjectState('obj-27', \"error\", \"The server did not respond.\");\n */\n @Method()\n async updateObjectState(\n objectId: string,\n newState: ObjectState,\n message: string\n ) {\n // update object state\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, newState);\n this.objectsStatesMap = newobjectsStatesMap;\n\n // add message if state is \"warning\" or \"error\"\n if (message?.length > 0) {\n this.commitObjectsMessagesMap.set(objectId, message);\n }\n\n if (newState === \"merged\" || newState === \"reverted\") {\n // remove from checked\n this.#checkedObjectsIdsArray = this.#checkedObjectsIdsArray.filter(\n checkedObject => checkedObject !== objectId\n );\n\n // add to \"already merged\". This will hide the checkbox\n this.alreadyMergedObjectsIdsArray.push(objectId);\n\n // unmark checkbox:\n this.tabularGridEl.markRow(objectId, false);\n\n // remove message if any\n this.commitObjectsMessagesMap.delete(objectId);\n }\n }\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n const columnId = e.detail.columnId;\n\n let objectProperty;\n let dateType: SortTabularGridColumnDataType = \"string\";\n if (columnId === COLUMNS_IDS.type) {\n objectProperty = \"name\"; // the type name\n dateType = \"object\";\n }\n\n this.objectsFiltered = [\n ...sortTabularGridColumn(\n e,\n this.objectsFiltered,\n dateType,\n objectProperty\n )\n ];\n };\n\n #viewAllCommentsHandler = async () => {\n await this.viewAllCommentsCallback();\n };\n\n #editRangeHandler = async () => {\n await this.editRangeCallback();\n };\n\n render() {\n const enableRichRowSelector =\n this.alreadyMergedObjectsIdsArray.length !== this.commitObjects.length;\n\n const disableControls = this.merging || this.loading;\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail\"\n >\n <p class=\"detail__title subtitle-semi-bold-s\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.commitDetail.revertChangesDetail\n : this.#componentLocale.commitDetail.bringChangesDetail}\n </p>\n {/* <p class=\"detail__commit-name subtitle-semi-bold-xs\">\n {this.#renderCommitsNumbers()}\n </p> */}\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <a\n class=\"detail__link body-regular-s\"\n href={this.commitDetail.genexusServer}\n target=\"_blank\"\n >\n {this.commitDetail.genexusServer}\n </a>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">{this.commitDetail.knowledgeBase}</p>\n </div>\n\n <div\n // current version\n class=\"detail__current-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.currentVersion}\n </span>\n <a class=\"body-regular-s\">{this.commitDetail.currentVersion}</a>\n </div>\n {(this.operationType === \"merge\" ||\n this.operationType === \"merge-all\") && (\n <div\n // merge from version\n class=\"detail__merge-from-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.mergeFromVersion}\n </span>\n <p class=\"body-regular-s\">\n {this.commitDetail.mergeFromVersion}\n </p>\n </div>\n )}\n </div>\n <div\n // header information\n class=\"header__information\"\n >\n <p class=\"information__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitInformation.title}\n </p>\n <div\n // header information (col-1)\n class=\"information__col-1\"\n >\n <div\n // IDs\n class=\"field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.commitInformation.length === 1\n ? this.#componentLocale.commitInformation.id\n : this.#componentLocale.commitInformation.ids}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderCommitsNumbers(true)}\n </p>\n </div>\n {this.commitInformation.length === 1 ? (\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.date}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(this.commitInformation[0].date)}\n </p>\n </div>\n ) : (\n [\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.from}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[0].date\n )}\n </p>\n </div>,\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.to}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[\n this.commitInformation.length - 1\n ].date\n )}\n </p>\n </div>,\n this.operationType === \"merge-all\" && (\n <button\n class=\"button-tertiary button-icon-and-text body-semi-bold-s edit-range-button\"\n type=\"button\"\n onClick={this.#editRangeHandler}\n >\n <ch-image\n class=\"icon-m\"\n src={EDITED_ICON}\n type=\"mask\"\n />\n {this.#componentLocale.buttons.editRange}\n </button>\n )\n ]\n )}\n </div>\n </div>\n <div class=\"header__comments\">\n <div class=\"layout layout--cols-2-1\">\n <div class=\"layout__panel\">\n <div class=\"field field-block\">\n <label\n class={DETAIL_LABEL_CLASSES}\n htmlFor=\"commit-comments\"\n >\n {this.commitInformation.length > 1\n ? `${this.#componentLocale.commitInformation.comments} (${this.commitInformation.length})`\n : this.#componentLocale.commitInformation.comment}\n </label>\n <p class=\"body-regular-s comments-container\">\n {this.#formatComments()}\n </p>\n </div>\n <button\n class=\"button-tertiary body-semi-bold-s\"\n type=\"button\"\n onClick={this.#viewAllCommentsHandler}\n >\n {this.commitInformation.length > 1\n ? this.#componentLocale.buttons.viewAllComments.replace(\n \"{{commentsCount}}\",\n this.commitInformation.length.toString()\n )\n : this.#componentLocale.buttons.viewComment}\n </button>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\n \"field-group\": true,\n \"controls-container\": true,\n \"filter\": !this.hideFilters,\n \"spacing-body-inline\": true\n }}\n >\n {!this.hideFilters && [\n <ch-edit\n class=\"input\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>,\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={disableControls}\n model={this.#comboBoxStatesModel}\n value={this.stateFilterValue}\n onInput={this.#stateChangedHandler}\n placeholder={this.#componentLocale.filter.statePlaceholder}\n ></ch-combo-box-render>\n ]}\n\n <button\n class=\"button-primary button-merge-checked\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#mergeCheckedClickedHandler}\n >\n {this.operationType === \"revert\"\n ? this.#componentLocale.filter.revertSelected\n : this.#componentLocale.filter.mergeSelected}\n </button>\n </div>\n <div class=\"main spacing-body\">\n {this.commitObjects.length ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.merging,\n \"empty-result\": this.objectsFiltered.length === 0\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#rowContextMenuHandler}\n ref={(el: HTMLChTabularGridElement) =>\n (this.tabularGridEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.name}\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.type}\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.description}\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size={config.tabularGrid.colSize.description}\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.action}\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n sortable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.status}\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n sortable={false}\n size=\"100px\"\n />\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objectsFiltered.length === 0 && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type OperationType = \"merge\" | \"revert\" | \"merge-all\";\n\nexport type CommitDetail = {\n genexusServer: string;\n knowledgeBase: string;\n currentVersion: string;\n mergeFromVersion: string;\n};\n\nexport type CommitInformation = {\n id: string;\n comment: string;\n date: Date;\n};\n\nexport type CommitObject = {\n id: string;\n date: Date;\n name: string;\n type: ObjectType;\n description: string;\n actionTaken: ObjectActionTaken;\n};\n\nexport type ObjectActionTaken =\n | \"Inserted\"\n | \"Deleted\"\n | \"Modified\"\n | \"Unchanged\"\n | \"Unknown\";\n\nexport type ObjectState =\n | \"to-merge\"\n | \"to-merge-marked\"\n | \"to-revert\"\n | \"merging\"\n | \"pending\"\n | \"warning\"\n | \"error\"\n | \"merged\"\n | \"reverted\"\n | \"reverting\";\n\ntype ObjectStateForFilter =\n | Extract<\n ObjectState,\n \"to-merge\" | \"to-revert\" | \"warning\" | \"error\" | \"merged\" | \"reverted\"\n >\n | \"all\";\n\nexport type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapTypesToComboBoxItemModel","synchronizationTypes","syncTypes","forEach","synchronizationType","newSynchType","value","caption","push","bpmSyncGamRolesCss","CSS_BUNDLES","GxIdeBpmSyncGamRoles","_GxIdeBpmSyncGamRoles__componentLocale","set","this","_GxIdeBpmSyncGamRoles_shortcutsSrc","getAssetPath","_GxIdeBpmSyncGamRoles_synchronizationTypes","_GxIdeBpmSyncGamRoles_automaticBackupCheckBoxEl","_GxIdeBpmSyncGamRoles_chShortcutsEl","_GxIdeBpmSyncGamRoles_synchTypeComboBoxEl","_GxIdeBpmSyncGamRoles_cancelButtonHandler","cancelCallback","_GxIdeBpmSyncGamRoles_okButtonHandler","async","saveCallback","syncData","automaticBackup","_a","__classPrivateFieldGet","syncType","_GxIdeBpmSyncGamRoles_renderFooter","h","class","id","onClick","part","footer","cancelButtonText","okButtonText","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","main","synchronizationTypeOptions","suspendShortcuts","suspend","render","Host","model","src","ref","htmlFor","synchronizationTypeLabel","accessibleName","checkBoxLabel","checkedValue","call"],"sources":["src/components/bpm/sync-gam-roles/helpers.tsx","src/components/bpm/sync-gam-roles/bpm-sync-gam-roles.scss?tag=gx-ide-bpm-sync-gam-roles&encapsulation=shadow","src/components/bpm/sync-gam-roles/bpm-sync-gam-roles.tsx"],"sourcesContent":["import { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\nexport const mapTypesToComboBoxItemModel = (\n synchronizationTypes: any[]\n): ComboBoxItemModel[] => {\n const syncTypes: ComboBoxItemModel[] = [];\n\n synchronizationTypes.forEach(synchronizationType => {\n const newSynchType: ComboBoxItemModel = {\n value: synchronizationType.value,\n caption: synchronizationType.caption\n };\n syncTypes.push(newSynchType);\n });\n return syncTypes;\n};\n",":host {\n display: grid;\n block-size: 100%;\n overflow: hidden;\n grid-template-rows: 1fr max-content;\n}\n\n.checkbox {\n // WA to prevent focus take 100%\n // Should ne fixed on a next Mercury version\n inline-size: max-content;\n}\n","import {\n Component,\n Host,\n h,\n Element,\n getAssetPath,\n Method,\n Prop\n} from \"@stencil/core\";\nimport { Locale } from \"../../../common/locale\";\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\nimport { mapTypesToComboBoxItemModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-bpm-sync-gam-roles\",\n styleUrl: \"bpm-sync-gam-roles.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/bpm-sync-gam-roles\"]\n})\nexport class GxIdeBpmSyncGamRoles {\n #_componentLocale: any;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/bpm-sync-gam-roles/shortcuts.json`\n );\n #synchronizationTypes: ComboBoxItemModel[] = [];\n\n @Element() el: HTMLGxIdeBpmSyncGamRolesElement;\n #automaticBackupCheckBoxEl: HTMLChCheckboxElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #synchTypeComboBoxEl: HTMLChComboBoxRenderElement;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#synchronizationTypes = mapTypesToComboBoxItemModel(\n this.#_componentLocale.main.synchronizationTypeOptions\n );\n }\n\n /**\n * Callback invoked when the user press the 'Cancel' button\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback invoked when the user press the 'Ok' button\n */\n @Prop() readonly saveCallback: (syncData: SyncData) => Promise<boolean>;\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 #cancelButtonHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n #okButtonHandler = async () => {\n if (this.saveCallback) {\n const syncData: SyncData = {\n automaticBackup: !!this.#automaticBackupCheckBoxEl?.value,\n syncType: this.#synchTypeComboBoxEl.value as SyncType\n };\n\n await this.saveCallback(syncData);\n }\n };\n\n #renderFooter = () => {\n return (\n <footer class=\"dialog-footer dialog-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.#cancelButtonHandler}\n part=\"button-cancel\"\n >\n {this.#_componentLocale.footer.cancelButtonText}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-create\"\n onClick={this.#okButtonHandler}\n part=\"button-ok\"\n >\n {this.#_componentLocale.footer.okButtonText}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section spacing-body\">\n <div class=\"main field-group\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"synch-type\">\n {this.#_componentLocale.main.synchronizationTypeLabel}\n </label>\n <ch-combo-box-render\n accessibleName=\"Synchronization types\"\n class=\"combo-box\"\n id=\"synch-type\"\n value={this.#synchronizationTypes[0].caption}\n model={this.#synchronizationTypes}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#synchTypeComboBoxEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <ch-checkbox\n class=\"checkbox\"\n caption={this.#_componentLocale.main.checkBoxLabel}\n checkedValue=\"true\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#automaticBackupCheckBoxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n </section>\n {this.#renderFooter()}\n </Host>\n );\n }\n}\n\nexport type SyncType = \"From GAM\" | \"To GAM\" | \"Both\";\n\nexport type SyncData = {\n syncType: SyncType;\n automaticBackup: boolean;\n};\n"],"mappings":";;;;AAEO,MAAMA,8BACXC;EAEA,MAAMC,IAAiC;EAEvCD,EAAqBE,SAAQC;IAC3B,MAAMC,IAAkC;MACtCC,OAAOF,EAAoBE;MAC3BC,SAASH,EAAoBG;;IAE/BL,EAAUM,KAAKH;AAAa;EAE9B,OAAOH;AAAS;;ACdlB,MAAMO,IAAqB;;;;;;;;;;;;;;;;;ACc3B,MAAMC,IAA8B,EAClC,qBACA,sBACA,oBACA,gBACA,oBACA,iBACA;;MASWC,IAAoB;;;IAC/BC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAAgBE,EACd;IAEFC,EAAAJ,IAAAC,MAA6C;IAG7CI,EAAAL,IAAAC,WAAA;IACAK,EAAAN,IAAAC,WAAA;IACAM,EAAAP,IAAAC,WAAA;IA+BAO,EAAAR,IAAAC,OAAuB;MACrB,IAAIA,KAAKQ,gBAAgB;QACvBR,KAAKQ;;;IAGTC,EAAAV,IAAAC,OAAmBU;;MACjB,IAAIV,KAAKW,cAAc;QACrB,MAAMC,IAAqB;UACzBC,qBAAmBC,IAAAC,EAAAf,MAAII,GAAA,UAA2B,QAAAU,WAAA,aAAAA,EAAEtB;UACpDwB,UAAUD,EAAAf,MAAIM,GAAA,KAAsBd;;cAGhCQ,KAAKW,aAAaC;;;IAI5BK,EAAAlB,IAAAC,OAAgB,MAEZkB,EAAA;MAAQC,OAAM;OACZD,EAAA;MAAKC,OAAM;OACTD,EAAA;MACEC,OAAM;MACNC,IAAG;MACHC,SAASN,EAAAf,MAAIO,GAAA;MACbe,MAAK;OAEJP,EAAAf,MAAIF,GAAA,KAAmByB,OAAOC,mBAEjCN,EAAA;MACEC,OAAM;MACNC,IAAG;MACHC,SAASN,EAAAf,MAAIS,GAAA;MACba,MAAK;OAEJP,EAAAf,MAAIF,GAAA,KAAmByB,OAAOE;;;;EA/DzC,uBAAMC;IACJC,EAAA3B,MAAIF,SAA2B8B,EAAOC,oBAAoB7B,KAAK8B,KAAG;IAClEH,EAAA3B,MAAIG,GAAyBjB,4BAC3B6B,EAAAf,MAAIF,GAAA,KAAmBiC,KAAKC,6BAC7B;;;;SAiBH,sBAAMC,CAAiBA;IACrB,IAAIA,GAAkB;MACpBlB,EAAAf,MAAIK,GAAA,KAAgB6B,UAAU;WACzB;MACLnB,EAAAf,MAAIK,GAAA,KAAgB6B,UAAU;;;EA6ClC,MAAAC;IACE,OACEjB,EAACkB,GAAI;MAACjB,OAAM;OACVD,EAAA;MAAUmB,OAAOzC;QACjBsB,EAAA;MACEoB,KAAKvB,EAAAf,MAAIC,GAAA;MACTsC,KAAMT,KACHH,EAAA3B,MAAIK,GAAkByB,GAA4B;QAGvDZ,EAAA;MAASC,OAAM;OACbD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAKC,OAAM;OACTD,EAAA;MAAOC,OAAM;MAAQqB,SAAQ;OAC1BzB,EAAAf,MAAIF,GAAA,KAAmBiC,KAAKU,2BAE/BvB,EAAA;MACEwB,gBAAe;MACfvB,OAAM;MACNC,IAAG;MACH5B,OAAOuB,EAAAf,MAAIG,GAAA,KAAuB,GAAGV;MACrC4C,OAAOtB,EAAAf,MAAIG,GAAA;MACXoC,KAAMT,KACHH,EAAA3B,MAAIM,GACHwB,GAAiC;SAKzCZ,EAAA;MACEC,OAAM;MACN1B,SAASsB,EAAAf,MAAIF,GAAA,KAAmBiC,KAAKY;MACrCC,cAAa;MACbL,KAAMT,KACHH,EAAA3B,MAAII,GAA8B0B,GAA2B;UAKrEf,EAAAf,MAAIiB,GAAA,KAAc4B,KAAlB7C"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["stringIsNumber","stringToCheck","isNumber","isNaN","toString","length","updateToRevisionCss","CSS_BUNDLES","RD_BTN_LATEST_REVISION_VALUE","RD_BTN_UPDATE_TO_REVISION_VALUE","GxIdeTeamDevUpdateToRevision","_GxIdeTeamDevUpdateToRevision__componentLocale","set","this","_GxIdeTeamDevUpdateToRevision_chShortcutsEl","_GxIdeTeamDevUpdateToRevision_radioGroupOptions","value","caption","_GxIdeTeamDevUpdateToRevision_renderedFirstTime","_GxIdeTeamDevUpdateToRevision_shortcutsSrc","getAssetPath","_GxIdeTeamDevUpdateToRevision_radioGroupEl","_GxIdeTeamDevUpdateToRevision_revisionNumberEl","_GxIdeTeamDevUpdateToRevision_cancel","cancelCallback","_GxIdeTeamDevUpdateToRevision_confirm","revision","undefined","__classPrivateFieldGet","confirmCallback","_GxIdeTeamDevUpdateToRevision_inputChangeHandler","event","isValid","detail","_GxIdeTeamDevUpdateToRevision_radioGroupChangeHandler","disabled","setTimeout","focus","_GxIdeTeamDevUpdateToRevision_renderFooter","h","class","onClick","part","footer","btnCancel","btnUpdate","_GxIdeTeamDevUpdateToRevision_setInitialCheckedRadio","currentRevision","componentDidLoad","componentDidLoadEvent","emit","call","componentDidRender","componentDidRenderFirstTime","componentName","__classPrivateFieldSet","find","rg","options","updateToLatest","updateToRevision","componentWillLoad","Locale","getComponentStrings","el","validate","suspendShortcuts","suspend","render","Host","model","src","ref","direction","onChange","autoFocus","onInput"],"sources":["src/components/team-dev/update-to-revision/helpers.ts","src/components/team-dev/update-to-revision/update-to-revision.scss?tag=gx-ide-team-dev-update-to-revision&encapsulation=shadow","src/components/team-dev/update-to-revision/update-to-revision.tsx"],"sourcesContent":["export const stringIsNumber = (stringToCheck: string | number): boolean => {\n let isNumber = false;\n isNumber = !isNaN(+stringToCheck) && stringToCheck.toString().length !== 0;\n return isNumber;\n};\n",":host {\n display: grid;\n overflow: auto;\n grid-template-areas:\n \"radio-group revision-number\"\n \"footer footer\";\n grid-template-columns: max-content minmax(200px, 1fr);\n grid-template-rows: max-content max-content;\n}\n\n.main {\n display: contents;\n}\n\n.radio-group {\n grid-area: radio-group;\n}\n.revision-number {\n grid-area: revision-number;\n}\n.footer {\n grid-area: footer;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n Method,\n getAssetPath,\n State\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { Locale } from \"../../../common/locale\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { stringIsNumber } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\",\n \"components/radio-group\",\n \"components/button\",\n \"components/edit\"\n];\n\nconst RD_BTN_LATEST_REVISION_VALUE = \"latestRevision\";\nconst RD_BTN_UPDATE_TO_REVISION_VALUE = \"updateToRevision\";\n\n@Component({\n tag: \"gx-ide-team-dev-update-to-revision\",\n styleUrl: \"update-to-revision.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-update-to-revision\"]\n})\nexport class GxIdeTeamDevUpdateToRevision {\n #_componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #radioGroupOptions: RadioGroupItemModel[] = [\n { value: RD_BTN_LATEST_REVISION_VALUE, caption: \"\" },\n { value: RD_BTN_UPDATE_TO_REVISION_VALUE, caption: \"\" }\n ];\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/team-dev-update-to-revision/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeTeamDevUpdateToRevisionElement;\n\n #radioGroupEl!: HTMLChRadioGroupRenderElement;\n #revisionNumberEl!: HTMLChEditElement;\n\n /**\n * To check if the status of the information is valid\n */\n @State() isValid: boolean;\n\n /**\n * This is a function provided by the developer for execute when cancel button is pressed.\n */\n @Prop() readonly cancelCallback!: cancelCallbackFn;\n\n /**\n * This is a function provided by the developer and is invoked when the action confirm is executed passing the selected objects of the grid\n */\n @Prop() readonly confirmCallback!: confirmCallbackFn;\n\n /**\n * Set an initial value for the review\n */\n @Prop() readonly currentRevision: string | undefined;\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n componentDidLoad() {\n this.componentDidLoadEvent.emit(true);\n this.#setInitialCheckedRadio();\n }\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n\n this.#radioGroupOptions.find(\n rg => rg.value === RD_BTN_LATEST_REVISION_VALUE\n ).caption = this.#_componentLocale.options.updateToLatest;\n\n this.#radioGroupOptions.find(\n rg => rg.value === RD_BTN_UPDATE_TO_REVISION_VALUE\n ).caption = this.#_componentLocale.options.updateToRevision;\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.isValid = true;\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\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 #cancel = (): void => {\n this.cancelCallback();\n };\n\n #confirm = (): void => {\n let revision = undefined;\n if (this.#radioGroupEl.value === RD_BTN_UPDATE_TO_REVISION_VALUE) {\n revision = this.#revisionNumberEl.value;\n }\n this.confirmCallback(revision);\n };\n\n #inputChangeHandler = (event: CustomEvent<string> | InputEvent) => {\n this.isValid = stringIsNumber(event.detail);\n };\n\n #radioGroupChangeHandler = (event: CustomEvent<string>) => {\n this.#revisionNumberEl.disabled =\n event.detail !== RD_BTN_UPDATE_TO_REVISION_VALUE;\n this.isValid = true;\n if (event.detail === RD_BTN_LATEST_REVISION_VALUE) {\n this.isValid = true;\n } else if (\n event.detail === RD_BTN_UPDATE_TO_REVISION_VALUE &&\n !stringIsNumber(this.#revisionNumberEl.value)\n ) {\n this.isValid = false;\n setTimeout(() => {\n this.#revisionNumberEl.focus();\n }, 2000);\n }\n };\n\n #renderFooter = (): Element => {\n return (\n <footer class=\"footer dialog-footer spacing-body-block-start\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n onClick={this.#cancel}\n part=\"button-cancel\"\n >\n {this.#_componentLocale.footer.btnCancel}\n </button>\n\n <button\n class=\"button-primary\"\n onClick={this.#confirm}\n part=\"button-update\"\n disabled={!this.isValid}\n >\n {this.#_componentLocale.footer.btnUpdate}\n </button>\n </div>\n </footer>\n );\n };\n\n #setInitialCheckedRadio = () => {\n if (this.currentRevision === undefined) {\n this.#radioGroupEl.value = RD_BTN_LATEST_REVISION_VALUE;\n this.isValid = true;\n this.#revisionNumberEl.disabled = true;\n } else {\n this.#revisionNumberEl.disabled = false;\n this.#revisionNumberEl.value = this.currentRevision;\n this.#radioGroupEl.value = RD_BTN_UPDATE_TO_REVISION_VALUE;\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget scrollable field-group spacing-body\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n\n <section class=\"main\">\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#radioGroupOptions}\n direction=\"horizontal\"\n onChange={this.#radioGroupChangeHandler}\n ref={(el: HTMLChRadioGroupRenderElement) => {\n this.#radioGroupEl = el as HTMLChRadioGroupRenderElement;\n }}\n ></ch-radio-group-render>\n\n <ch-edit\n autoFocus\n class=\"input revision-number\"\n onInput={this.#inputChangeHandler}\n ref={(el: HTMLChEditElement) =>\n (this.#revisionNumberEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type cancelCallbackFn = () => Promise<void>;\nexport type confirmCallbackFn = (revision: string | undefined) => Promise<void>;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["splashCss","COPYRIGHTS_ILLUSTRATION","getAssetPath","LOGO_NEXT","CSS_BUNDLES","OPEN_LOG_ICON","getIconPath","category","name","colorType","GxIdeUiSplash","_GxIdeUiSplash_componentLocale","set","this","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","render","renderOpenLogLink","showOpenLogLink","openLogCallback","renderInstallationErrorMessage","showQuitButton","quitCallback","messages","length","renderInitializingMessage","_a","renderErrorMessage","showDockerMissingError","installationErrorMessage","__classPrivateFieldGet","warnings","installationFailed","checkTheLog","h","Host","model","class","scrollable","wrapper","style","backgroundImage","role","src","alt","illustrationAlternativeText","title","appVersion","nextVersion","allRightsReserved","copyright","initializingServices","ANIMATION_DOTS","ariaBusy","_b","reverse","map","message","i","log__message","type","key","text","dockerMissing","onClick","downloadDockerCallback","downloadDocker","openLog","quitGenexus"],"sources":["src/components/splash/splash.scss?tag=gx-ide-splash&encapsulation=shadow","src/components/splash/splash.tsx"],"sourcesContent":["@import \"../../global/components/splash-and-welcome-page\";\n\n:host {\n --wrapper-copacity: 0;\n --wrapper-min-inline-size: 700px;\n --wrapper-max-inline-size: 1040px;\n --wrapper-block-size: 640px;\n transition: var(--timing-regular) opacity;\n\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n block-size: 100%;\n padding: var(--spacing-padding-xl);\n\n overflow: auto;\n}\n\n.wrapper {\n flex: 1;\n display: grid;\n grid-template-columns: 1fr var(--wrapper-block-size);\n block-size: var(--wrapper-block-size);\n // min-inline-size: var(--wrapper-min-inline-size);\n max-inline-size: var(--wrapper-max-inline-size);\n\n background-color: var(--color-accent-surface-elevation-1);\n border-radius: 12px;\n\n overflow: auto;\n transform: translateY(4px);\n}\n\n// Side inline-start (the illustration)\n.side-inline-start {\n background-size: cover;\n}\n\n// Side inline-end (the content)\n.side-inline-end {\n position: relative;\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n padding-block: 64px;\n padding-inline: 80px;\n\n transition: var(--timing-slow) grid-template-rows;\n overflow: auto;\n}\n\n.close-button {\n position: absolute;\n inset-inline-end: 0;\n inset-block-start: 0;\n}\n\n// header\n.header {\n display: grid;\n gap: var(--spacing-gap-xl);\n margin-block-end: 92px; // Specific layout spacing - no exact token available\n}\n.header__logo__close-button {\n display: flex;\n justify-content: space-between;\n}\n.title {\n color: var(--color-text-neutral-strawberry);\n letter-spacing: 0.02em;\n}\n.next-version {\n color: var(--color-text-neutral-strawberry);\n}\n.header__description {\n color: var(--color-text-neutral-disabled);\n line-height: 1.45 !important;\n // TODO: Discuss with Design Team about line-height.\n // Mercury line-heights looks tight to me.\n}\n\n.main {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-gap-l);\n // margin-block-start: auto;\n\n overflow: auto;\n}\n.log__container {\n --logVisibleLines: 7;\n --logFontSize: var(\n --font-size-body-s\n ); // 12px is the font size of .caption-regular-l\n --logLineHeight: var(\n --line-height-relaxed\n ); // 1.2 is the line-height of .caption-regular-l\n --logGap: 4px;\n --logContainerBlockSize: calc(\n var(--logFontSize) * var(--logLineHeight) * var(--logVisibleLines) +\n calc(var(--logGap) * (var(--logVisibleLines) - 1))\n );\n block-size: var(--logContainerBlockSize);\n // TODO: Add/include on Mercury a monospaced font, and then use it here.\n font-family: var(--font-family-code);\n color: var(--color-text-neutral-disabled);\n display: flex;\n flex-direction: column-reverse;\n gap: var(--logGap);\n overflow: hidden;\n // margin-block-start: auto;\n\n &:hover {\n overflow: auto;\n }\n\n > p {\n // WA: This overrides the font family of the typographic style applied on the p tag\n font-family: inherit;\n }\n}\n.log__message {\n opacity: 0;\n transition: var(--timing-regular) opacity;\n animation: fadeInLogMessage 0.45s ease-out forwards;\n\n &--error {\n color: var(--color-text-error-default);\n }\n}\n\n// footer\n.footer {\n display: grid;\n grid-auto-rows: max-content;\n gap: var(--spacing-gap-l);\n margin-block-start: 24px;\n}\n.error-message {\n color: var(--color-text-error-default);\n margin-block-start: auto;\n // TODO: Use clamp from a helper mixin\n display: -webkit-box;\n -webkit-line-clamp: 2;\n}\n\n// helpers\n.status--processing {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n gap: var(--spacing-gap-xs);\n}\n\n@keyframes fadeInLogMessage {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath\n} from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { ANIMATION_DOTS } from \"../../common/common\";\n\nconst COPYRIGHTS_ILLUSTRATION = getAssetPath(\n `./gx-ide-assets/splash/images/copyrights-illustration.svg`\n);\nconst LOGO_NEXT = getAssetPath(\n `./gx-ide-assets/welcome-page/images/icon-next.svg`\n);\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"components/button\",\n \"components/icon\",\n \"chameleon/scrollbar\"\n];\n\nconst OPEN_LOG_ICON = getIconPath({\n category: \"system\",\n name: \"launch\",\n colorType: \"primary\"\n});\n\n@Component({\n tag: \"gx-ide-splash\",\n styleUrl: \"splash.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/splash\"]\n})\nexport class GxIdeUiSplash {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n @Element() el: HTMLGxIdeSplashElement;\n\n /**\n * Set this to true if installation is in process\n */\n @State() ariaBusy: boolean = true;\n\n /**\n * The application version to display in the dialog.\n */\n @Prop() readonly appVersion: string;\n\n /**\n * Callback invoked when the user clicks the 'Download Docker' button.\n */\n @Prop() readonly downloadDockerCallback: () => void;\n\n /**\n * Callback invoked when the user clicks the quit button.\n */\n @Prop() readonly quitCallback: () => void;\n\n /**\n * Array of messages to display in the text box.\n * This property updates whenever a message is added,\n * and the scroll should position itself at the bottom to keep the last message visible.\n */\n @Prop() readonly messages: MessageType[] = [];\n\n /**\n * Callback invoked when the user clicks the 'Open log' link.\n */\n @Prop() readonly openLogCallback: () => void;\n\n /**\n * Set to `true` to display the quit button.\n */\n @Prop() readonly showQuitButton: boolean = false;\n\n /**\n * Set to `true` to display the 'Open log' link.\n */\n @Prop() readonly showOpenLogLink: boolean = false;\n\n /**\n * Set to `true` to display \"Docker is not installed\" error message and to display \"Download Docker\" button.\n */\n @Prop() readonly showDockerMissingError: boolean = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n render() {\n const renderOpenLogLink = this.showOpenLogLink && this.openLogCallback;\n const renderInstallationErrorMessage =\n this.showQuitButton && this.quitCallback && this.messages.length > 0;\n const renderInitializingMessage =\n !(this.showQuitButton && this.quitCallback) && this.messages?.length > 0;\n const renderErrorMessage =\n this.showDockerMissingError || !renderInitializingMessage;\n\n let installationErrorMessage =\n this.#componentLocale.warnings.installationFailed;\n if (renderOpenLogLink) {\n installationErrorMessage = `${installationErrorMessage} ${\n this.#componentLocale.warnings.checkTheLog\n }`;\n }\n\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div\n class={{\n scrollable: true,\n wrapper: true\n }}\n >\n <div\n class=\"side-inline-start\"\n style={{ backgroundImage: `url(${COPYRIGHTS_ILLUSTRATION})` }}\n role=\"img\"\n ></div>\n\n <section class=\"side-inline-end scrollable\">\n <header class=\"header\">\n <img\n src={LOGO_NEXT}\n alt={this.#componentLocale.illustrationAlternativeText}\n />\n <h2 class=\"title heading-2\">{this.#componentLocale.title}</h2>\n {this.appVersion && (\n <p class=\"body-regular-m next-version\">\n {this.#componentLocale.nextVersion} {this.appVersion}\n </p>\n )}\n <p class=\"body-italic-m header__description\">\n {this.#componentLocale.allRightsReserved}\n </p>\n <p class=\"body-italic-m header__description\">\n {this.#componentLocale.copyright}\n </p>\n </header>\n\n <main class=\"main\">\n {renderInitializingMessage && (\n <p\n class={{\n \"body-regular-m\": true,\n \"status--processing\": true\n }}\n >\n {this.#componentLocale.initializingServices}\n {ANIMATION_DOTS(\"tiny\", \"on-surface\")}\n </p>\n )}\n\n <code\n class=\"log__container scrollable\"\n role=\"status\"\n aria-live=\"polite\"\n aria-busy={this.ariaBusy}\n >\n {this.messages?.reverse().map((message, i) => {\n return (\n <p\n class={{\n \"caption-regular-l\": true,\n \"log__message\": true,\n \"log__message--error\": message.type === \"error\"\n }}\n key={this.messages.length - i}\n >\n {message.text}\n </p>\n );\n })}\n </code>\n\n {renderErrorMessage && (\n <p class=\"error-message status--error body-regular-m\">\n {renderInstallationErrorMessage && (\n <span>{installationErrorMessage}</span>\n )}\n\n {renderInstallationErrorMessage &&\n this.showDockerMissingError && <span> - </span>}\n\n {this.showDockerMissingError && (\n <span>{this.#componentLocale.warnings.dockerMissing}</span>\n )}\n </p>\n )}\n </main>\n\n <footer class=\"footer\">\n <div class=\"buttons-spacer\">\n {this.showDockerMissingError && (\n <button\n key=\"download-docker\"\n class=\"button-secondary button-icon-and-text download-docker-button\"\n onClick={this.downloadDockerCallback}\n >\n {this.#componentLocale.downloadDocker}\n </button>\n )}\n\n {renderOpenLogLink && (\n <button\n key=\"open-log\"\n class=\"button-tertiary button-icon-and-text\"\n onClick={this.openLogCallback}\n >\n <ch-image class=\"icon-m\" src={OPEN_LOG_ICON}></ch-image>\n {this.#componentLocale.openLog}\n </button>\n )}\n\n {this.quitCallback && this.showQuitButton && (\n <button class=\"button-secondary\" onClick={this.quitCallback}>\n {this.#componentLocale.quitGenexus}\n </button>\n )}\n </div>\n </footer>\n </section>\n </div>\n </Host>\n );\n }\n}\n\nexport type MessageType = {\n type: \"info\" | \"error\";\n text: string;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["wwFilesCss","CSS_BUNDLES","CLEAR_ICON","getIconPath","category","name","colorType","FILTER_ICON","INFO_ICON","ACCORDION_FILTER_ID","FILTER_AFTER_DATE_TIME","FILTER_AFTER_LAST_BUILD","FILTER_AFTER_IMPORT","CHECKBOX_CHECKED_VALUE","CHECKBOX_UNCHECKED_VALUE","GxIdeWWFiles","_GxIdeWWFiles_componentLocale","set","this","_GxIdeWWFiles_ACCORDION_MODEL","_GxIdeWWFiles_nameValue","_GxIdeWWFiles_moduleValue","_GxIdeWWFiles_searchContentsValue","_GxIdeWWFiles_categoryValue","_GxIdeWWFiles_allDescendants","_GxIdeWWFiles_userValue","_GxIdeWWFiles_selectedObjectsIds","_GxIdeWWFiles_chGridEl","_GxIdeWWFiles_filterModuleEl","_GxIdeWWFiles_setFilterDefaultValues","__classPrivateFieldSet","Object","assign","defaultModule","defaultCategory","categoriesComboBoxModel","length","value","afterValue","filterAfterComboBoxModel","dateTimeValue","undefined","_GxIdeWWFiles_allDescendantsCheckboxHandler","event","detail","__classPrivateFieldGet","_GxIdeWWFiles_getObjects","call","_GxIdeWWFiles_handleSelectionChanged","ev","rowsId","selectionChangeCallback","_GxIdeWWFiles_handleRowDoubleClicked","_GxIdeWWFiles_openSelectionCallbackHandler","_GxIdeWWFiles_handleRowContextMenu","preventDefault","stopPropagation","contextMenuCallback","selection","selectedRowsId","clientX","clientY","_GxIdeWWFiles_attachGridListeners","addEventListener","_GxIdeWWFiles_categoryInputHandler","async","_GxIdeWWFiles_clearDateTimeValue","_GxIdeWWFiles_dateTimeInputHandler","_GxIdeWWFiles_deleteSelectionCallbackHandler","deleteSelectionCallback","_GxIdeWWFiles_deselectAll","selectAllRows","_GxIdeWWFiles_evaluateModifiedDates","objectModifiedDate","filterSelectedModifiedDate","filterSelectedModifiedDateAsDate","Date","h","class","_GxIdeWWFiles_formatDate","_GxIdeWWFiles_filterAfterTypeCallbackHandler","date","formatDate","_GxIdeWWFiles_setLoadingState","parentId","id","filtersValues","searchContents","parent","allDescendants","modifiedAfter","showModified","modifiedBy","modifiedDate","loadCallback","then","items","objects","isLoading","_GxIdeWWFiles_renderHeader","htmlFor","filter","onInput","_GxIdeWWFiles_nameInputHandler","part","debounce","config","inputDebounce","disabled","moduleFolder","labelPosition","defaultValue","selectEntityCallback","selectModuleCallback","ref","el","onValueChanged","_GxIdeWWFiles_moduleValueChangedHandler","model","slot","showSearchContents","content","_GxIdeWWFiles_searchContentsInputHandler","categories","caption","checkedValue","unCheckedValue","modified","_GxIdeWWFiles_showModifiedCheckboxHandler","after","user","_GxIdeWWFiles_userInputHandler","hide","dateTime","src","actionElement","blockAlign","inlineAlign","delay","tooltipSettings","dateTimeTooltip","type","onClick","_GxIdeWWFiles_renderObjects","gridIsEmpty","loading","empty","rowSelectionMode","columnName","columnNameHidden","settingable","sortable","size","tabularGrid","colSize","maxContent","tableHead","module","gridColumnsVisibility","description","auto","lastUser","importDate","lastBuildDate","_a","map","object","rowid","icon","hiChar","toLowerCase","loaderTitle","loader","title","show","isAnimated","stateIconSrc","stateTitle","emptyState","_GxIdeWWFiles_newFileCallbackHandler","newFileCallback","openSelectionCallback","_GxIdeWWFiles_selectAll","dateTimeValueChanged","categoriesChanged","newCategories","mapOptionsToComboBoxItemModel","componentWillLoad","Locale","getComponentStrings","accordionCaption","expanded","componentDidLoad","keyDownHandler","eventInfo","document","activeElement","key","reload","error","console","fallbackError","render","Host","objCount","matching","footer","btnSelectAll","btnNew"],"sources":["src/components/ww-files/ww-files.scss?tag=gx-ide-ww-files&encapsulation=shadow","src/components/ww-files/ww-files.tsx"],"sourcesContent":["@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter advanced-filter\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter {\n grid-area: advanced-filter;\n}\n\n// Advanced Filter\n.advanced-filter {\n &__container {\n display: grid;\n grid-auto-rows: max-content;\n }\n &__first-row {\n grid-template-columns: 1fr 1fr;\n }\n &__second-row {\n grid-template-columns: 1fr 1fr 1fr;\n }\n .all-descendants__modified {\n display: flex;\n flex-direction: row;\n align-items: center;\n block-size: 32px;\n gap: var(--spacing-gap-xl);\n align-self: self-end;\n }\n}\n// date/time\n.field-date {\n grid-template-areas:\n \"label-date-time label-date-time\"\n \"input-date-time icon-clear-date-time\";\n grid-template-columns: 1fr max-content;\n column-gap: var(--spacing-gap-xs);\n}\n.label-date-time {\n // WA: There is no official way to use an icon (ch-image) within a label\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n .icon-s {\n // WA: Icon looks so small that it is not recognizable\n }\n grid-area: label-date-time;\n}\n.input-date-time {\n block-size: 32px;\n grid-area: input-date-time;\n}\n.icon-clear-date-time {\n grid-area: icon-clear-date-time;\n}\n\n// - - - - - - - - - - - -\n// Grid\n// - - - - - - - - - - - -\n\n.tabular-grid {\n overflow: auto;\n inline-size: 100%;\n border-inline-end: var(--section-common-border);\n}\n.tabular-grid.empty::part(main),\n.tabular-grid.loading::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\nch-tabular-grid-rowset-empty {\n position: relative;\n}\n.main__files-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--spacing-gap-m);\n position: relative;\n z-index: 1;\n}\n\n@include hiChar;\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 4\n )\n);\n.tabular-grid-cell-description {\n min-inline-size: max-content !important; // TODO: See how to remove the !important\n}\n\n@include hiChar();\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n// @container (max-width: 992px) {\n// .main__files-container {\n// grid-template-columns: repeat(3, 1fr);\n// }\n// }\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Listen,\n Watch\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { EntityData, ContextMenuInfo } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { mapOptionsToComboBoxItemModel, hiChar } from \"./helpers\";\nimport {\n AccordionModel,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { formatDate } from \"../../common/helpers\";\nimport { GxIdeEntitySelectorCustomEvent } from \"../..\";\n\ninterface TabularGridWithSelection extends HTMLChTabularGridElement {\n selectAllRows: (select?: boolean) => Promise<void>;\n}\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/accordion\",\n \"components/edit\",\n \"components/icon\",\n \"components/tooltip\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\nconst CLEAR_ICON = getIconPath({\n category: \"system\",\n name: \"close\",\n colorType: \"interactive\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst ACCORDION_FILTER_ID = \"advanced-filter\";\nconst FILTER_AFTER_DATE_TIME = \"afterDateTime\";\nconst FILTER_AFTER_LAST_BUILD = \"afterLastBuild\";\nconst FILTER_AFTER_IMPORT = \"afterImport\";\n\nconst CHECKBOX_CHECKED_VALUE = \"checked\";\nconst CHECKBOX_UNCHECKED_VALUE = \"unchecked\";\n\n@Component({\n tag: \"gx-ide-ww-files\",\n styleUrl: \"ww-files.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-files\"]\n})\nexport class GxIdeWWFiles {\n #componentLocale: any;\n #ACCORDION_MODEL: AccordionModel = [];\n\n // Filter Values\n #nameValue: string;\n #moduleValue: EntityData;\n // Advanced Filter Values\n #searchContentsValue: string;\n #categoryValue: string;\n #allDescendants: CheckboxState;\n #userValue: string;\n // Other\n #selectedObjectsIds: string[] = [];\n\n @Element() el: HTMLGxIdeWwFilesElement;\n #chGridEl!: HTMLChTabularGridElement;\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n /**\n * The \"After\" control value. Controls the visibility of the \"Date/Time\" control.\n */\n @State() afterValue: string;\n\n /**\n * The \"Category\" options as combo box model\n */\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n\n /**\n * Value of the Date/Time control\n */\n @State() dateTimeValue: string;\n @Watch(\"dateTimeValue\")\n dateTimeValueChanged() {\n this.#getObjects();\n }\n\n /**\n * A loader that is shown when the filter changes and the server has to retrieve new data.\n */\n @State() isLoading: boolean = true;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterComboBoxModel: ComboBoxModel;\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() showModified: CheckboxState = CHECKBOX_CHECKED_VALUE;\n\n /**\n * The files rendered in the table\n */\n @State() objects: ObjectData[] = [];\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n }\n\n /**\n * This is a function provided by the developer for show the context menu of the selected files.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * The default value for the category filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * This is a function provided by the developer for delete the selected files.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Controls the visibility of the tabular grid cell columns, and respective cells.\n */\n @Prop() readonly gridColumnsVisibility: GridColumnsVisibility = {\n description: true,\n importDate: true,\n lastBuildDate: true,\n lastUser: true,\n modifiedDate: true\n };\n\n /**\n * This is a function provided by the developer that return a list of files to populate the table of files.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n *\n */\n @Prop() readonly newFileCallback!: NewFileCallback;\n\n /**\n * This is a function provided by the developer to expand the data of files that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of files that is double-clicked or entered.\n */\n @Prop() readonly selectionChangeCallback!: SelectionChangeCallback;\n\n /**\n * Controls whether to show the Search contents field in the advanced filter section (Not available at the time of writting, since the server is not handling this feature yet.)\n */\n @Prop() readonly showSearchContents = false;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models∂\n this.categoriesChanged(this.categories);\n\n // initialize \"After\" combo-box options\n this.filterAfterComboBoxModel = [\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_DATE_TIME],\n value: FILTER_AFTER_DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_LAST_BUILD],\n value: FILTER_AFTER_LAST_BUILD\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER_IMPORT],\n value: FILTER_AFTER_IMPORT\n }\n ];\n\n // initialize accordion model with proper configuration\n this.#ACCORDION_MODEL = [\n {\n id: ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n\n this.#setFilterDefaultValues();\n }\n #setFilterDefaultValues = () => {\n this.#nameValue = \"\";\n this.#moduleValue = { ...this.defaultModule };\n this.#searchContentsValue = \"\";\n\n this.#categoryValue =\n this.defaultCategory ||\n (this.categoriesComboBoxModel && this.categoriesComboBoxModel.length > 0\n ? this.categoriesComboBoxModel[0].value\n : \"\");\n\n this.#allDescendants = CHECKBOX_UNCHECKED_VALUE;\n\n this.afterValue =\n this.filterAfterComboBoxModel && this.filterAfterComboBoxModel.length > 0\n ? this.filterAfterComboBoxModel[0].value\n : FILTER_AFTER_DATE_TIME;\n\n this.#userValue = \"\";\n this.dateTimeValue = undefined;\n };\n\n componentDidLoad() {\n this.#attachGridListeners();\n this.#getObjects();\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n eventInfo.preventDefault();\n this.#openSelectionCallbackHandler();\n break;\n case \"Delete\":\n eventInfo.preventDefault();\n this.#deleteSelectionCallbackHandler();\n break;\n case \"Escape\":\n eventInfo.preventDefault();\n this.#deselectAll();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the table of files.\n */\n @Method()\n async reload(): Promise<void> {\n try {\n if (this.#componentLocale && this.filterAfterComboBoxModel) {\n this.#setFilterDefaultValues();\n this.#getObjects();\n }\n } catch (error) {\n console.error(\"Error in reload method:\");\n // Fallback: try only getObjects if setFilterDefaultValues fails\n try {\n this.#getObjects();\n } catch (fallbackError) {\n console.error(\"Fallback also failed:\");\n }\n }\n }\n\n #allDescendantsCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.#allDescendants =\n event.detail === CHECKBOX_CHECKED_VALUE\n ? CHECKBOX_CHECKED_VALUE\n : CHECKBOX_UNCHECKED_VALUE;\n this.#getObjects();\n };\n\n #handleSelectionChanged = (ev: CustomEvent<{ rowsId: string[] }>): void => {\n this.#selectedObjectsIds = ev.detail.rowsId;\n this.selectionChangeCallback(this.#selectedObjectsIds);\n };\n\n #handleRowDoubleClicked = (): void => {\n this.#openSelectionCallbackHandler();\n };\n\n #handleRowContextMenu = (\n ev: CustomEvent<TabularGridRowContextMenuEvent>\n ): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #attachGridListeners = (): void => {\n this.#chGridEl.addEventListener(\n \"selectionChanged\",\n this.#handleSelectionChanged\n );\n this.#chGridEl.addEventListener(\n \"rowDoubleClicked\",\n this.#handleRowDoubleClicked\n );\n this.#chGridEl.addEventListener(\n \"rowContextMenu\",\n this.#handleRowContextMenu\n );\n };\n\n #categoryInputHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.#categoryValue = event.detail as string;\n this.#getObjects();\n };\n\n #clearDateTimeValue = () => {\n this.dateTimeValue = undefined;\n };\n\n #dateTimeInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.dateTimeValue = event.detail;\n this.#getObjects();\n };\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.#selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows ===\n \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows(false);\n }\n };\n\n #evaluateModifiedDates = (\n objectModifiedDate: Date,\n filterSelectedModifiedDate: string\n ) => {\n const filterSelectedModifiedDateAsDate = new Date(\n filterSelectedModifiedDate\n );\n if (filterSelectedModifiedDateAsDate >= objectModifiedDate) {\n // Object modifed date matches with filter date, or was modified after that date.\n // Highlight to show that it matches.\n return <span class=\"hiChar\">{this.#formatDate(objectModifiedDate)}</span>;\n } else {\n return this.#formatDate(objectModifiedDate);\n }\n };\n\n #filterAfterTypeCallbackHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.afterValue = event.detail as string;\n this.#getObjects();\n };\n\n #formatDate = (date: Date): string => {\n return formatDate(date, \"date-time-short\");\n };\n\n #getObjects = () => {\n this.#setLoadingState();\n\n const parentId =\n this.#filterModuleEl && this.#filterModuleEl.value\n ? this.#filterModuleEl.value.id\n : this.defaultModule\n ? this.defaultModule.id\n : \"\";\n\n const filtersValues: ObjectFiltersData = {\n name: this.#nameValue,\n searchContents: this.#searchContentsValue,\n category: this.#categoryValue,\n parent: parentId,\n allDescendants: this.#allDescendants === CHECKBOX_CHECKED_VALUE,\n modifiedAfter: this.showModified ? this.afterValue : undefined,\n modifiedBy: this.showModified ? this.#userValue : undefined,\n modifiedDate: this.showModified ? new Date(this.dateTimeValue) : undefined\n };\n\n this.loadCallback(filtersValues).then((items: ObjectData[]) => {\n this.objects = items;\n this.#selectedObjectsIds = [];\n\n if (this.#chGridEl) {\n this.#deselectAll();\n }\n\n this.isLoading = false;\n });\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // Name\n class=\"field field-block field-name\"\n >\n <label class=\"label\" htmlFor=\"name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"name\"\n class=\"input\"\n value={this.#nameValue}\n onInput={this.#nameInputHandler}\n part=\"filter-files\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>,\n\n <div\n // Module\n class=\"field field-block field-module-folder\"\n >\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n <gx-ide-entity-selector\n part=\"filter-module-folder\"\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.#moduleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n onValueChanged={this.#moduleValueChangedHandler}\n disabled={this.isLoading}\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n class=\"accordion-outlined advanced-filter\"\n model={this.#ACCORDION_MODEL}\n >\n <div\n slot={ACCORDION_FILTER_ID}\n class=\"spacing-body field-group advanced-filter__container\"\n >\n {this.showSearchContents && (\n <div\n // Search contents\n class=\"field field-block field-search-contents\"\n >\n <label class=\"label\" htmlFor=\"filter-content\">\n {this.#componentLocale.filter.content}\n </label>\n <ch-edit\n id=\"filter-content\"\n class=\"input\"\n onInput={this.#searchContentsInputHandler}\n part=\"filter-content\"\n ></ch-edit>\n </div>\n )}\n\n <div class=\"field-group advanced-filter__first-row\">\n <div\n // Category\n class=\"field field-block field-category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box disabled\"\n value={this.#categoryValue}\n disabled={!this.categories || this.isLoading}\n model={this.categoriesComboBoxModel}\n part=\"filter-category\"\n onInput={this.#categoryInputHandler}\n ></ch-combo-box-render>\n </div>\n\n <div\n // All descendants / Modified\n class=\"all-descendants__modified field field-inline\"\n >\n <ch-checkbox\n // All descendants\n class=\"checkbox\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.#allDescendants}\n onInput={this.#allDescendantsCheckboxHandler}\n part=\"filter-all-descendants\"\n disabled={this.isLoading}\n ></ch-checkbox>\n\n <ch-checkbox\n // Modified\n class=\"checkbox align-center\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_UNCHECKED_VALUE}\n value={this.showModified}\n onInput={this.#showModifiedCheckboxHandler}\n part=\"filter-modified\"\n ></ch-checkbox>\n </div>\n </div>\n\n {this.showModified === CHECKBOX_CHECKED_VALUE && (\n <div class=\"field-group advanced-filter__second-row\">\n <div\n // After\n class=\"field field-block field-after\"\n >\n <label class=\"label\" htmlFor=\"filter-after-type\">\n {this.#componentLocale.filter.after}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.afterValue}\n model={this.filterAfterComboBoxModel}\n onInput={this.#filterAfterTypeCallbackHandler}\n part=\"filter-after-type\"\n disabled={this.isLoading}\n ></ch-combo-box-render>\n </div>\n\n <div\n // User\n class=\"field field-block field-user\"\n >\n <label class=\"label\" htmlFor=\"filter-user\">\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n class=\"input\"\n value={this.#userValue}\n onInput={this.#userInputHandler}\n part=\"filter-user\"\n debounce={config.inputDebounce}\n disabled={this.isLoading}\n ></ch-edit>\n </div>\n\n {this.afterValue === FILTER_AFTER_DATE_TIME && (\n <div\n // Date/Time\n class={{\n \"field field-block field-date\": true,\n \"hide\": this.afterValue !== FILTER_AFTER_DATE_TIME\n }}\n >\n <label\n class=\"label label-date-time\"\n htmlFor=\"filter-date-time\"\n >\n {this.#componentLocale.filter.dateTime}\n <ch-image\n class=\"icon-s icon-clear-date-time\"\n src={INFO_ICON}\n ></ch-image>\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-start\"\n inlineAlign=\"inside-start\"\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.filter.dateTimeTooltip}\n </ch-tooltip>\n </label>\n\n <ch-edit\n id=\"filter-date-time\"\n type=\"datetime-local\"\n class=\"input input-date-time\"\n value={this.dateTimeValue}\n onInput={this.#dateTimeInputHandler}\n part=\"filter-date-time\"\n disabled={this.isLoading}\n ></ch-edit>\n\n <button\n class=\"button-tertiary button-icon-only\"\n onClick={this.#clearDateTimeValue}\n disabled={this.isLoading}\n >\n <ch-image class=\"icon-m\" src={CLEAR_ICON} type=\"mask\" />\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderObjects = (): Element => {\n const gridIsEmpty = !this.objects.length;\n\n return (\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n class={{\n \"tabular-grid\": true,\n \"loading\": this.isLoading,\n \"empty\": this.objects.length === 0\n }}\n rowSelectionMode=\"multiple\"\n part=\"ch-grid-files\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.name}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.module}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.description}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.auto}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.modifiedDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastUser}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.importDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-column\n columnName={this.#componentLocale.tableHead.lastBuildDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n )}\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objects?.map((object: ObjectData) => (\n <ch-tabular-grid-row rowid={object.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={object.icon}></ch-image>\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.name.toLowerCase(),\n this.#nameValue.toLowerCase()\n )}\n </ch-tabular-grid-cell>\n\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.parent}\n </ch-tabular-grid-cell>\n\n {this.gridColumnsVisibility.description && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {object.description}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.modifiedDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#evaluateModifiedDates(\n object.modifiedDate,\n this.dateTimeValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastUser && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(object.lastUser?.toLowerCase(), this.#userValue)}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.importDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.importDate\n ? this.#formatDate(object.importDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n\n {this.gridColumnsVisibility.lastBuildDate && (\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n object.lastBuildDate\n ? this.#formatDate(object.lastBuildDate)\n : \"\",\n this.#nameValue\n )}\n </ch-tabular-grid-cell>\n )}\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n {this.isLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <gx-ide-empty-state\n isAnimated={true}\n stateIconSrc={FILTER_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n ></gx-ide-empty-state>\n )}\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #moduleValueChangedHandler = (\n event: GxIdeEntitySelectorCustomEvent<EntityData>\n ) => {\n this.#moduleValue = event.detail;\n this.#getObjects();\n };\n\n #nameInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#nameValue = event.detail;\n this.#getObjects();\n };\n\n #newFileCallbackHandler = (): void => {\n this.newFileCallback();\n };\n\n #openSelectionCallbackHandler = (): void => {\n this.openSelectionCallback(this.#selectedObjectsIds);\n };\n\n #searchContentsInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#searchContentsValue = event.detail;\n this.#getObjects();\n };\n\n #setLoadingState = () => {\n // Only clear if no objects or first load\n if (!this.objects || this.objects.length === 0) {\n this.objects = [];\n }\n this.isLoading = true;\n };\n\n #userInputHandler = (event: CustomEvent<any> | InputEvent) => {\n this.#userValue = event.detail;\n this.#getObjects();\n };\n\n #showModifiedCheckboxHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.showModified = event.detail;\n };\n\n #selectAll = (): void => {\n if (\n this.#chGridEl &&\n typeof (this.#chGridEl as TabularGridWithSelection).selectAllRows ===\n \"function\"\n ) {\n (this.#chGridEl as TabularGridWithSelection).selectAllRows();\n }\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header dialog-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n {this.#renderObjects()}\n\n <footer class=\"dialog-footer-with-border dialog-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n part=\"objects-matching\"\n >\n {`${this.objects?.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n part=\"button button--select-all\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new file button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newFileCallbackHandler}\n part=\"button button--new-file\"\n disabled={this.isLoading}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type SelectionChangeCallback = (ids: string[]) => Promise<void>;\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n// export type ContextMenuCallback = (ids: string[]) => Promise<void>;\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport type NewFileCallback = () => Promise<void>;\nexport type LoadCallback = (\n filters: ObjectFiltersData\n) => Promise<ObjectData[]>;\n\nexport interface ObjectFiltersData {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n}\nexport interface ObjectData {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n lastBuildDate: Date;\n}\n\nexport type GridColumnsVisibility = {\n description: boolean;\n importDate: boolean;\n lastBuildDate: boolean;\n lastUser: boolean;\n modifiedDate: boolean;\n};\n\ntype CheckboxState =\n | typeof CHECKBOX_CHECKED_VALUE\n | typeof CHECKBOX_UNCHECKED_VALUE;\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["detailsAcknowledgementsCss","OPEN_WINDOW_ICON","getIconPath","category","name","colorType","IMAGES_PATH","BACKGROUND_SIZE","GENEXUS_NEXT_LOGO_SRC","getAssetPath","BG_IMAGE_TOP_START","BG_IMAGE_BOTTOM_START","BG_IMAGE_BOTTOM_END","CSS_BUNDLES","GxIdeDetailsAcknowledgements","_GxIdeDetailsAcknowledgements_getFormatedDate","set","this","date","toISOString","split","_GxIdeDetailsAcknowledgements_renderLicenseInfo","license","type","packageData","licenseId","__classPrivateFieldGet","_GxIdeDetailsAcknowledgements_getLicenseId","call","showDescription","expandedLicenseId","h","class","key","description","_GxIdeDetailsAcknowledgements_renderLicensesViewButtons","visibleLicenseButton","viewLicenseButtonLabel","_componentLocale","detailsCard","hide","show","onClick","_GxIdeDetailsAcknowledgements_viewLicenseClickedHandler","licenseName","packageName","packageVersion","undefined","_GxIdeDetailsAcknowledgements_openLinkClickedHandler","url","e","openPackageUrlCallback","preventDefault","componentWillLoad","Locale","getComponentStrings","el","render","formatedDate","dateGenerated","Host","style","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","model","mask","title","mainDescription","secondaryDescription","dateTime","_a","packages","map","packageItem","headingContent","packageURL","href","target","src","packageCard","declaredLicenses","declaredLicense"],"sources":["src/components/details-acknowledgements/details-acknowledgements.scss?tag=gx-ide-details-acknowledgements&encapsulation=shadow","src/components/details-acknowledgements/details-acknowledgements.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-auto-rows: max-content;\n justify-content: center;\n padding: 95px 24px 95px 24px;\n overflow: auto;\n}\n\n%resetList {\n // TODO: Use mixin from common\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.main-wrapper {\n max-inline-size: 1000px;\n display: grid;\n gap: var(--spacing-gap-xxxl);\n}\n\n.logo {\n inline-size: 201px;\n block-size: 41px;\n margin: 0 auto;\n margin-block-end: 40px;\n opacity: 0;\n transform: translateY(4px);\n animation: showLogo var(--timing-regular) ease-out forwards;\n animation-delay: var(--timing-regular);\n background-color: var(--color-icon-neutral-default);\n}\n@keyframes showLogo {\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n// general\n\n.card {\n display: grid;\n border-radius: 4px;\n border-width: 1px;\n border-color: var(--elevation-border-color);\n border-style: solid;\n padding: var(--spacing-padding-xxl);\n gap: var(--spacing-gap-xl);\n opacity: 0;\n animation: showCard var(--timing-fast) ease-out forwards;\n animation-delay: calc(var(--timing-regular) * 2);\n}\n@keyframes showCard {\n 100% {\n opacity: 1;\n }\n}\n\n// details card\n\nh1.title {\n font-weight: var(--font-style-semi-bold);\n}\n\n.intro-container {\n display: grid;\n gap: var(--spacing-gap-xl);\n}\n\n.date-container {\n display: grid;\n gap: var(--spacing-gap-l);\n}\n\n// package card\n\n.card-package {\n opacity: 0;\n transition: opacity var(--timing-fast);\n}\n\n.package-name {\n --package-name-color: var(--color-text-primary-default);\n color: var(--package-name-color);\n\n a {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-m);\n }\n\n &.has-link {\n // TODO: This should be a class in Mercury\n &:hover {\n --package-name-color: var(--color-text-primary-hover);\n }\n &:active {\n --package-name-color: var(--color-text-primary-pressed);\n }\n }\n}\n.package-link {\n display: inline-block;\n}\n\n.licenses-names-list {\n @extend %resetList;\n display: flex;\n align-items: center;\n}\n.licenses-names-item:not(:first-child)::before {\n content: \"•\";\n padding-inline: 8px;\n}\n\n.licenses-descriptions-list {\n @extend %resetList;\n}\n.licenses-descriptions-description {\n white-space: break-spaces;\n max-block-size: 940px;\n overflow: auto;\n line-height: var(--line-height-spacious);\n}\n.licenses-descriptions-item {\n display: grid;\n gap: var(--spacing-gap-xl);\n}\n\n.code-box {\n border-radius: 4px;\n background-color: var(--color-accent-surface-surface);\n border: 1px solid var(--color-border-surface-on-elevation-1);\n padding: var(--spacing-padding-xl);\n font-family: var(--font-family-code);\n font-size: var(--font-size-body-s);\n display: grid;\n gap: var(--spacing-gap-xxl);\n}\n\n.description-list {\n display: grid;\n gap: var(--spacing-gap-m);\n max-inline-size: 400px;\n margin: 0 auto;\n}\n\n.show-more-button {\n justify-self: start;\n}\n\n// utilities\n.color-neutral {\n color: var(\n --color-text-neutral-on-disabled\n ); // TODO: This token does not seem to be the correct one, because this text is not over disabled.\n}\n.color-primary {\n color: var(--color-text-primary-default);\n}\n\np {\n // TODO: Update line-height values on Mercury\n --line-height-tight: 1.5;\n --font-weight-regular: var(\n --font-style-regular\n ); // WA: 300 -> 400 (closest available)\n}\n\nhr {\n // WA/TODO: A style for hr should be defined on Mercury\n border-block-start: 0;\n border-color: var(--color-border-surface-on-elevation-1);\n inline-size: 100%;\n margin: 0;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\n\nimport type { PackageData, License, OpenPackageURLCallback } from \"./types\";\n\nconst OPEN_WINDOW_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"open-window\",\n colorType: \"primary\"\n});\n\nconst IMAGES_PATH = \"./gx-ide-assets/details-acknowledgements/images\";\nconst BACKGROUND_SIZE = \"300px\";\n\nconst GENEXUS_NEXT_LOGO_SRC = getAssetPath(\n `${IMAGES_PATH}/genexus-next-logo.svg`\n);\nconst BG_IMAGE_TOP_START = getAssetPath(`${IMAGES_PATH}/top-start.svg`);\nconst BG_IMAGE_BOTTOM_START = getAssetPath(`${IMAGES_PATH}/bottom-start.svg`);\nconst BG_IMAGE_BOTTOM_END = getAssetPath(`${IMAGES_PATH}/bottom-end.svg`);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/elevation\",\n \"components/button\",\n \"components/icon\",\n \"chameleon/scrollbar\"\n];\n\n@Component({\n tag: \"gx-ide-details-acknowledgements\",\n styleUrl: \"details-acknowledgements.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/details-acknowledgements\"]\n})\nexport class GxIdeDetailsAcknowledgements {\n /**\n * The component hard-coded strings translations.\n */\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeDetailsAcknowledgementsElement;\n\n /**\n * Identifier of the currently expanded license. Should combine:\n * packageName + packageVersion + license.name. Example:\n * @sentry/core-6.7.1-mit\n */\n @State() expandedLicenseId?: string;\n\n /** The date when the current release was published */\n @Prop() readonly dateGenerated?: Date;\n\n /** The version of the current release*/\n @Prop() readonly release?: string;\n\n /** The list of packages that the current release contains*/\n @Prop() readonly packages: PackageData[];\n\n /**\n * Callback invoked when the user clicks a package with a packageURL.\n * If openPackageUrlCallback is defined, the default link action is\n * prevented and the URL is passed to the host via the callback.\n * Otherwise, the link opens in a new tab as usual.\n */\n @Prop() readonly openPackageUrlCallback: OpenPackageURLCallback;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n #getFormatedDate = (date: Date) => {\n return date?.toISOString().split(\"T\")[0];\n };\n\n #renderLicenseInfo = (\n license: License,\n type: \"name\" | \"description\" = \"name\",\n packageData: PackageData\n ): JSX.Element => {\n const licenseId = this.#getLicenseId(packageData, license.name);\n const showDescription = licenseId === this.expandedLicenseId;\n return type === \"name\" ? (\n <ul class=\"licenses-names-list\">\n <li class=\"body-regular-m licenses-names-item\">{license.name}</li>\n </ul>\n ) : (\n <ul class=\"licenses-descriptions-list\">\n <li class=\"licenses-descriptions-item\" key={license.name}>\n {showDescription ? (\n <p class=\"code-box color-neutral licenses-descriptions-description scrollable\">\n {license.description}\n </p>\n ) : null}\n </li>\n </ul>\n );\n };\n\n #renderLicensesViewButtons = (\n license: License,\n packageData?: PackageData\n ): JSX.Element => {\n const licenseId = this.#getLicenseId(packageData, license.name);\n const visibleLicenseButton = licenseId === this.expandedLicenseId;\n const viewLicenseButtonLabel = visibleLicenseButton\n ? this._componentLocale.detailsCard.hide\n : this._componentLocale.detailsCard.show;\n return (\n <div class=\"licenses-buttons-container buttons-spacer\">\n {\n <button\n class={{\n \"button-icon-and-text\": true,\n \"button-primary\": !visibleLicenseButton,\n \"button-secondary\": visibleLicenseButton,\n \"show-more-button\": true\n }}\n onClick={this.#viewLicenseClickedHandler(licenseId)}\n >\n {viewLicenseButtonLabel}\n </button>\n }\n </div>\n );\n };\n\n #getLicenseId = (packageData: PackageData, licenseName: string): string => {\n return `${packageData.packageName}-${packageData.packageVersion}-${licenseName}`;\n };\n\n #viewLicenseClickedHandler = (licenseId: string) => () => {\n if (licenseId === this.expandedLicenseId) {\n // collapse\n this.expandedLicenseId = undefined;\n } else {\n // expand collapse\n this.expandedLicenseId = licenseId;\n }\n };\n\n #openLinkClickedHandler = (url: string) => (e: MouseEvent) => {\n if (this.openPackageUrlCallback) {\n e.preventDefault();\n this.openPackageUrlCallback(url);\n }\n };\n\n render() {\n const formatedDate = this.#getFormatedDate(this.dateGenerated);\n return (\n <Host\n class=\"scrollable\"\n style={{\n backgroundImage: `url(${BG_IMAGE_TOP_START}), url(${BG_IMAGE_BOTTOM_START}), url(${BG_IMAGE_BOTTOM_END})`,\n backgroundPosition: \"left top, left bottom, right bottom\",\n backgroundRepeat: \"no-repeat, no-repeat, no-repeat\",\n backgroundSize: `${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}, ${BACKGROUND_SIZE}`\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"main-wrapper\">\n <div\n style={{\n mask: `url(${GENEXUS_NEXT_LOGO_SRC}) no-repeat center`\n }}\n class=\"logo\"\n ></div>\n <div class=\"card card-details elevation-1\">\n <div class=\"intro-container\">\n <h1 class=\"title heading-3\">\n {this._componentLocale.detailsCard.title}\n </h1>\n <p class=\"body-regular-m\">\n {this._componentLocale.detailsCard.mainDescription}\n </p>\n <p class=\"color-neutral body-italic-s\">\n {this._componentLocale.detailsCard.secondaryDescription}\n </p>\n </div>\n\n <hr />\n\n <div class=\"date-container\">\n <p class=\"color-neutral\">\n {this._componentLocale.detailsCard.dateGenerated}\n </p>\n <time dateTime={formatedDate}>{formatedDate}</time>\n </div>\n </div>\n\n {this.packages?.map(packageItem => {\n let packageName = `${packageItem.packageName} ${packageItem.packageVersion}`;\n const headingContent = packageItem.packageURL ? (\n <a\n href={packageItem.packageURL}\n target=\"_blank\"\n onClick={this.#openLinkClickedHandler(packageItem.packageURL)}\n class=\"package-link\"\n >\n {packageName}\n <ch-image\n src={OPEN_WINDOW_ICON}\n class=\"package-icon icon-s\"\n ></ch-image>\n </a>\n ) : (\n packageName\n );\n\n return (\n <article class=\"card card-package elevation-1\">\n <h2\n class={{\n \"subtitle-semi-bold-s\": true,\n \"package-name\": true,\n \"has-link\": !!packageItem.packageURL\n }}\n >\n {headingContent}\n </h2>\n <p class=\"subtitle-semi-bold-s\">\n {this._componentLocale.packageCard.declaredLicenses}\n </p>\n {this.#renderLicenseInfo(\n packageItem.declaredLicense,\n \"name\",\n packageItem\n )}\n\n {this.#renderLicenseInfo(\n packageItem.declaredLicense,\n \"description\",\n packageItem\n )}\n\n {this.#renderLicensesViewButtons(\n packageItem.declaredLicense,\n packageItem\n )}\n </article>\n );\n })}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["signInResultCss","ASSETS_DIR","LEFT_SIDE_ILLUSTRATION","getAssetPath","RIGHT_SIDE_ILLUSTRATION","GENEXUS_NEXT_LOGO","CSS_BUNDLES","GxIdeSignInResult","componentWillLoad","this","_componentLocale","Locale","getComponentStrings","el","componentDidLoad","render","h","Host","class","style","backgroundImage","backgroundRepeat","backgroundPosition","backgroundSize","model","title","description","src","alt"],"sources":["src/components/sign-in-result/sign-in-result.scss?tag=gx-ide-sign-in-result&encapsulation=shadow","src/components/sign-in-result/sign-in-result.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.content {\n display: flex;\n align-items: center;\n flex-direction: column;\n color: var(--color-neutral-300);\n gap: var(--spacing-gap-xl);\n text-align: center;\n padding: var(--spacing-padding-xxl);\n}\n\n.check-icon {\n $checkIconSize: 64px;\n block-size: $checkIconSize;\n inline-size: $checkIconSize;\n border-radius: 50%;\n background-color: var(--color-accent-success-pressed);\n background-image: var(--icon__system_check_on-surface--enabled);\n background-repeat: no-repeat;\n background-position: center center;\n background-size: 32px;\n margin-block-end: 16px;\n}\n\n.genexus-next-logo {\n inline-size: 140px;\n margin-block-start: 108px;\n}\n","// This is a starting template. Do not edit this file directly.\n// Dupicate it and modify the new file as needed.\n\nimport { Component, Host, Element, getAssetPath, h } from \"@stencil/core\";\n\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\n\nconst ASSETS_DIR = \"gx-ide-assets/sign-in-result\";\n\nconst LEFT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/left-side-illustration.svg`\n);\nconst RIGHT_SIDE_ILLUSTRATION = getAssetPath(\n `./${ASSETS_DIR}/images/right-side-illustration.svg`\n);\nconst GENEXUS_NEXT_LOGO = getAssetPath(\n `./${ASSETS_DIR}/images/genexus-next-logo.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n // Use only the bundles that are needed for this component.\n \"resets/box-sizing\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n\n@Component({\n tag: \"gx-ide-sign-in-result\",\n styleUrl: \"sign-in-result.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/sign-in-result\"]\n})\nexport class GxIdeSignInResult {\n _componentLocale: any;\n\n @Element() el: HTMLGxIdeSignInResultElement;\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n componentDidLoad() {}\n\n render() {\n return (\n <Host\n class=\"widget spacing-body\"\n style={{\n backgroundImage: `url('${LEFT_SIDE_ILLUSTRATION}'), url('${RIGHT_SIDE_ILLUSTRATION}')`,\n backgroundRepeat: \"no-repeat, no-repeat\",\n backgroundPosition: \"left, right bottom\",\n backgroundSize: \"auto 100%, auto 55%\"\n }}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"content\">\n <span class=\"check-icon\"></span>\n <h1 class=\"heading-3\">{this._componentLocale.title}</h1>\n <p class=\"subtitle-regular-s\">{this._componentLocale.description}</p>\n <img src={GENEXUS_NEXT_LOGO} alt=\"\" class=\"genexus-next-logo\" />\n </div>\n </Host>\n );\n }\n}\n\nexport type CancelCallback = () => Promise<void>;\n\nexport type SaveCallback = () => Promise<string>;\n"],"mappings":";;;;AAAA,MAAMA,IAAkB;;ACSxB,MAAMC,IAAa;;AAEnB,MAAMC,IAAyBC,EAC7B,KAAKF;;AAEP,MAAMG,IAA0BD,EAC9B,KAAKF;;AAEP,MAAMI,IAAoBF,EACxB,KAAKF;;AAGP,MAAMK,IAA8B;;AAElC,qBACA,oBACA;;MASWC,IAAiB;;;;EAK5B,uBAAMC;IACJC,KAAKC,yBAAyBC,EAAOC,oBAAoBH,KAAKI;;EAGhE,gBAAAC,IAAgB;EAEhB,MAAAC;IACE,OACEC,EAACC,GAAI;MACHC,OAAM;MACNC,OAAO;QACLC,iBAAiB,QAAQlB,aAAkCE;QAC3DiB,kBAAkB;QAClBC,oBAAoB;QACpBC,gBAAgB;;OAGlBP,EAAA;MAAUQ,OAAOlB;QACjBU,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAME,OAAM;QACZF,EAAA;MAAIE,OAAM;OAAaT,KAAKC,iBAAiBe,QAC7CT,EAAA;MAAGE,OAAM;OAAsBT,KAAKC,iBAAiBgB,cACrDV,EAAA;MAAKW,KAAKtB;MAAmBuB,KAAI;MAAGV,OAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["serverSelectorCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","name","colorType","LOCK_ICON","LANGUAGE_ICON","DELETE_ICON","ERROR_ICON","SEARCH_ICON","SERVER_NAME_PREFIX","GxIdeServerSelector","_GxIdeServerSelector__componentLocale","set","this","_GxIdeServerSelector_chGridAllServersEl","_GxIdeServerSelector_serverUrlEL","_GxIdeServerSelector_serverFriendlyNameEL","_GxIdeServerSelector_updatedServerName","_GxIdeServerSelector_serverNameEditElsMap","Map","_GxIdeServerSelector_versionsSelect","_GxIdeServerSelector_shortcutsSrc","getAssetPath","_GxIdeServerSelector_cancelHandler","cancelCallback","_GxIdeServerSelector_confirmHandler","async","formSubmitResult","selectedConnectionType","selectServerCallback","uri","selectedServerUri","selectedServerName","serverUrlInputValue","serverNameInputValue","validatableControls","validateControls","_GxIdeServerSelector_evaluateTooltipRender","controlReference","_b","_a","get","id","hasError","_c","message","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeServerSelector_initializeValidatableControls","forEach","validatableControl","has","reference","undefined","_GxIdeServerSelector_filterValueChangedHandler","event","filterValue","detail","toLowerCase","filteredServersData","serversData","filter","item","serverName","includes","_GxIdeServerSelector_inputHandler","field","enableConfirmButton","trim","controlId","clearControlError","__classPrivateFieldGet","_GxIdeServerSelector_enableConfirmButton","call","_GxIdeServerSelector_handleRecentlyUsedCardClick","server","selectedRecentlyUsedId","selectRow","_GxIdeServerSelector_handleServerSelection","_GxIdeServerSelector_handleDeleteServer","serverData","accessLevel","result","deleteServerCallback","_GxIdeServerSelector_onServerNameInput","__classPrivateFieldSet","_GxIdeServerSelector_onServerNameChange","fieldErrors","success","updateServerCallback","Object","assign","length","_GxIdeServerSelector_onRecentlyUsedDoubleClickHandler","_GxIdeServerSelector_onServersRowClickHandler","rowId","selectedRowId","selectedServer","find","serverUrl","userName","gxServerUsername","_GxIdeServerSelector_connectionTypeChangedHandler","_GxIdeServerSelector_sortTabularGridColumnCallback","e","sortTabularGridColumn","_GxIdeServerSelector_renderTabularGridColumnSet","hideColumnName","columnId","columnName","settingable","columnNameHidden","size","tabularGrid","colSize","maxContent","resizable","sortable","onColumnSortChanged","auto","_GxIdeServerSelector_renderTooltip","text","delayLong","_GxIdeServerSelector_renderServerNameErrorMessage","errorMsg","src","_GxIdeServerSelector_renderTabularGridCommonCells","_GxIdeServerSelector_renderIcon","value","onInput","onChange","maxLength","ref","el","key","delete","onClick","actions","deleteServer","disabled","_GxIdeServerSelector_renderAllServersGrid","rowSelectionMode","allowColumnReorder","onRowClicked","map","serverNameEditKey","rowid","stateIconSrc","stateTitle","emptyConnectedServers","isAnimated","icon","_GxIdeServerSelector_renderFooter","isSelectionMode","footer","cancel","confirm","_GxIdeServerSelector_renderRecentlyUsed","renderRecentlyUsed","recentlyUsedServersData","htmlFor","recentlyUsed","title","layout","index","layout__panel","onDblClick","_GxIdeServerSelector_renderAllServers","allServers","serversDataChanged","newValue","componentWillLoad","Locale","getComponentStrings","caption","captions","selectServer","addServer","componentDidRender","clear","values","render","Host","model","header","startImgSrc","placeholder","placeholders","searchServers","accessibleName","type","labels"],"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 \"../../../global/gx-ide-mixins.scss\";\n@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(--spacing-gap-xl);\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\nch-tabular-grid.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n overflow: auto;\n border: 1px solid var(--color-border-surface-on-elevation-1); // WA: The tabular-grid should provide a class for displaying border\n}\n\nch-tabular-grid-rowset-empty {\n position: relative;\n border-block-end: 1px solid var(--grid-cell-border-color);\n overflow: hidden;\n min-block-size: 200px;\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(--color-text-neutral-disabled);\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 inset-block-start: 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(--color-border-surface-on-surface);\n}\n\n.tooltip {\n position: absolute;\n}\n\n.recently-used-card {\n border: 1px solid var(--color-border-surface-on-elevation-1);\n border-radius: 4px;\n cursor: pointer;\n\n &:hover {\n background-color: var(--color-accent-item-hover);\n }\n\n &:focus-visible {\n @include focus-outline();\n }\n\n &--selected {\n background-color: var(--color-accent-neutral-contrast);\n border-color: var(--color-border-item-pressed);\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: var(--spacing-padding-m);\n gap: var(--spacing-gap-xxs);\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: \"interactive\"\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>\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-m 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-m 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>\n <gx-ide-empty-state\n class=\"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-m\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"dialog-footer-with-border\": true,\n \"dialog-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"],"mappings":"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"}