@genexus/genexus-ide-ui 1.1.34 → 1.1.35

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 (262) hide show
  1. package/dist/cjs/{config-140f58fe.js → config-df6ba4e9.js} +2 -2
  2. package/dist/cjs/config-df6ba4e9.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
  10. package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
  11. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +2 -2
  12. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js.map +1 -1
  13. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  14. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  18. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +1 -1
  19. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
  20. package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
  21. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  22. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  23. package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +1 -1
  24. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +5 -3
  25. package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
  26. package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
  27. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +18 -29
  28. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
  29. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +6 -15
  30. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
  31. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +1 -1
  33. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +92 -53
  34. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  35. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +111 -36
  36. package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js.map +1 -1
  37. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +497 -234
  38. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
  39. package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
  40. package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
  41. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
  42. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  43. package/dist/cjs/helpers-456ecc75.js +16 -0
  44. package/dist/cjs/helpers-456ecc75.js.map +1 -0
  45. package/dist/cjs/loader.cjs.js +1 -1
  46. package/dist/collection/common/config.js +1 -1
  47. package/dist/collection/common/config.js.map +1 -1
  48. package/dist/collection/components/data-type-selector/gx-ide-assets/data-type-selector/langs/data-type-selector.lang.en.json +1 -1
  49. package/dist/collection/components/plugin-explorer/gx-ide-assets/plugin-explorer/langs/plugin-explorer.lang.en.json +1 -1
  50. package/dist/collection/components/plugin-explorer/gx-ide-assets/plugin-explorer/langs/plugin-explorer.lang.zh.json +1 -1
  51. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.en.json +1 -1
  52. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.zh.json +1 -1
  53. package/dist/collection/components/team-dev/bring-changes/bring-changes.css +3 -3
  54. package/dist/collection/components/team-dev/bring-changes/bring-changes.js +43 -49
  55. package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
  56. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +1 -1
  57. package/dist/collection/components/team-dev/bring-changes/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +1 -1
  58. package/dist/collection/components/team-dev/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.en.json +2 -2
  59. package/dist/collection/components/team-dev/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +1 -1
  60. package/dist/collection/components/team-dev/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.zh.json +2 -2
  61. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js +1 -1
  62. package/dist/collection/components/team-dev/connect-gx-server/connect-gx-server.js.map +1 -1
  63. package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +1 -1
  64. package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +1 -1
  65. package/dist/collection/components/team-dev/connect-gx-server/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.zh.json +1 -1
  66. package/dist/collection/components/team-dev/server-selector/server-selector.js +4 -2
  67. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  68. package/dist/collection/components/team-dev/update/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.en.json +49 -28
  69. package/dist/collection/components/team-dev/update/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.ja.json +58 -37
  70. package/dist/collection/components/team-dev/update/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.zh.json +49 -28
  71. package/dist/collection/components/team-dev/update/types.js +2 -0
  72. package/dist/collection/components/team-dev/update/types.js.map +1 -0
  73. package/dist/collection/components/team-dev/update/update.css +268 -606
  74. package/dist/collection/components/team-dev/update/update.js +566 -411
  75. package/dist/collection/components/team-dev/update/update.js.map +1 -1
  76. package/dist/collection/components/team-dev/update/utilities/actions-combo-box-model.js +2 -0
  77. package/dist/collection/components/team-dev/update/utilities/actions-combo-box-model.js.map +1 -0
  78. package/dist/collection/components/team-dev/update-partial-selection/gx-ide-assets/team-dev-update-partial-selection/langs/team-dev-update-partial-selection.lang.zh.json +11 -11
  79. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +16 -590
  80. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.js +100 -78
  81. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.js.map +1 -1
  82. package/dist/collection/components/team-dev/update-to-revision/gx-ide-assets/team-dev-update-to-revision/langs/team-dev-update-to-revision.lang.zh.json +5 -5
  83. package/dist/collection/components/team-dev/update-to-revision/gx-ide-assets/team-dev-update-to-revision/shortcuts.json +3 -3
  84. package/dist/collection/components/team-dev/update-to-revision/helpers.js +6 -0
  85. package/dist/collection/components/team-dev/update-to-revision/helpers.js.map +1 -0
  86. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.css +11 -596
  87. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.js +133 -56
  88. package/dist/collection/components/team-dev/update-to-revision/update-to-revision.js.map +1 -1
  89. package/dist/components/config.js +1 -1
  90. package/dist/components/config.js.map +1 -1
  91. package/dist/components/gx-ide-connect-gx-server.js +1 -1
  92. package/dist/components/gx-ide-connect-gx-server.js.map +1 -1
  93. package/dist/components/gx-ide-server-selector.js +4 -2
  94. package/dist/components/gx-ide-server-selector.js.map +1 -1
  95. package/dist/components/gx-ide-team-dev-bring-changes.js +20 -32
  96. package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
  97. package/dist/components/gx-ide-team-dev-commit.js +1 -10
  98. package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
  99. package/dist/components/gx-ide-team-dev-update-partial-selection.js +93 -67
  100. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  101. package/dist/components/gx-ide-team-dev-update-to-revision.js +115 -51
  102. package/dist/components/gx-ide-team-dev-update-to-revision.js.map +1 -1
  103. package/dist/components/gx-ide-team-dev-update.js +528 -267
  104. package/dist/components/gx-ide-team-dev-update.js.map +1 -1
  105. package/dist/components/helpers2.js +13 -0
  106. package/dist/components/helpers2.js.map +1 -0
  107. package/dist/esm/{config-73a57a22.js → config-9eaeb14b.js} +2 -2
  108. package/dist/esm/config-9eaeb14b.js.map +1 -0
  109. package/dist/esm/genexus-ide-ui.js +1 -1
  110. package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
  111. package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
  112. package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
  113. package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
  114. package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
  115. package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
  116. package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
  117. package/dist/esm/gx-ide-connect-gx-server.entry.js +2 -2
  118. package/dist/esm/gx-ide-connect-gx-server.entry.js.map +1 -1
  119. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  120. package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
  121. package/dist/esm/gx-ide-data-selector.entry.js +1 -1
  122. package/dist/esm/gx-ide-design-import.entry.js +1 -1
  123. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  124. package/dist/esm/gx-ide-new-environment.entry.js +1 -1
  125. package/dist/esm/gx-ide-new-kb.entry.js +1 -1
  126. package/dist/esm/gx-ide-new-object.entry.js +1 -1
  127. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  128. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  129. package/dist/esm/gx-ide-plugin-explorer.entry.js +1 -1
  130. package/dist/esm/gx-ide-server-selector.entry.js +5 -3
  131. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  132. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  133. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +18 -29
  134. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
  135. package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -11
  136. package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
  137. package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
  138. package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +1 -1
  139. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +92 -53
  140. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  141. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +111 -36
  142. package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js.map +1 -1
  143. package/dist/esm/gx-ide-team-dev-update.entry.js +498 -235
  144. package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
  145. package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
  146. package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
  147. package/dist/esm/gx-ide-ww-files.entry.js +1 -1
  148. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  149. package/dist/esm/helpers-e1db579e.js +13 -0
  150. package/dist/esm/helpers-e1db579e.js.map +1 -0
  151. package/dist/esm/loader.js +1 -1
  152. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  153. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  154. package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.en.json +1 -1
  155. package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.ja.json +1 -1
  156. package/dist/genexus-ide-ui/gx-ide-assets/connect-gx-server/langs/connect-gx-server.lang.zh.json +1 -1
  157. package/dist/genexus-ide-ui/gx-ide-assets/data-type-selector/langs/data-type-selector.lang.en.json +1 -1
  158. package/dist/genexus-ide-ui/gx-ide-assets/plugin-explorer/langs/plugin-explorer.lang.en.json +1 -1
  159. package/dist/genexus-ide-ui/gx-ide-assets/plugin-explorer/langs/plugin-explorer.lang.zh.json +1 -1
  160. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.en.json +1 -1
  161. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.zh.json +1 -1
  162. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.en.json +1 -1
  163. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-bring-changes/langs/team-dev-bring-changes.lang.zh.json +1 -1
  164. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.en.json +2 -2
  165. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +1 -1
  166. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.zh.json +2 -2
  167. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.en.json +49 -28
  168. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.ja.json +58 -37
  169. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.zh.json +49 -28
  170. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update-partial-selection/langs/team-dev-update-partial-selection.lang.zh.json +11 -11
  171. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update-to-revision/langs/team-dev-update-to-revision.lang.zh.json +5 -5
  172. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update-to-revision/shortcuts.json +3 -3
  173. package/dist/genexus-ide-ui/p-08d90282.entry.js +178 -0
  174. package/dist/genexus-ide-ui/p-08d90282.entry.js.map +1 -0
  175. package/dist/genexus-ide-ui/{p-dc1a9bd5.entry.js → p-09a634fc.entry.js} +3 -3
  176. package/dist/genexus-ide-ui/p-09a634fc.entry.js.map +1 -0
  177. package/dist/genexus-ide-ui/{p-8c125495.entry.js → p-0ae0616f.entry.js} +2 -2
  178. package/dist/genexus-ide-ui/{p-00e51225.entry.js → p-1056dfe7.entry.js} +2 -2
  179. package/dist/genexus-ide-ui/{p-bf176329.entry.js → p-12b563fe.entry.js} +2 -2
  180. package/dist/genexus-ide-ui/{p-a5b30dc7.entry.js → p-13f4b647.entry.js} +2 -2
  181. package/dist/genexus-ide-ui/{p-54946b5e.entry.js → p-159164d6.entry.js} +2 -2
  182. package/dist/genexus-ide-ui/{p-6945a7ad.entry.js → p-16a88fc3.entry.js} +6 -6
  183. package/dist/genexus-ide-ui/{p-2c6ab8f4.entry.js → p-1d044bf5.entry.js} +2 -2
  184. package/dist/genexus-ide-ui/p-1f7ef8ba.entry.js +603 -0
  185. package/dist/genexus-ide-ui/p-1f7ef8ba.entry.js.map +1 -0
  186. package/dist/genexus-ide-ui/{p-e1d947d7.entry.js → p-2ce60f4c.entry.js} +2 -2
  187. package/dist/genexus-ide-ui/{p-38f135a5.entry.js → p-3b955964.entry.js} +2 -2
  188. package/dist/genexus-ide-ui/{p-4da77239.entry.js → p-3dc5d62e.entry.js} +2 -2
  189. package/dist/genexus-ide-ui/{p-56308ae7.entry.js → p-443fc479.entry.js} +2 -2
  190. package/dist/genexus-ide-ui/{p-952d84f8.entry.js → p-49f765ef.entry.js} +163 -172
  191. package/dist/genexus-ide-ui/p-49f765ef.entry.js.map +1 -0
  192. package/dist/genexus-ide-ui/{p-68ff4ac9.entry.js → p-4ef96726.entry.js} +2 -2
  193. package/dist/genexus-ide-ui/{p-e06cfa27.entry.js → p-59908901.entry.js} +2 -2
  194. package/dist/genexus-ide-ui/{p-57b8dd3d.entry.js → p-5a328be1.entry.js} +2 -2
  195. package/dist/genexus-ide-ui/{p-3817c664.entry.js → p-646ddf49.entry.js} +2 -2
  196. package/dist/genexus-ide-ui/{p-3d7ed559.entry.js → p-730f0cd3.entry.js} +2 -2
  197. package/dist/genexus-ide-ui/{p-4c37ff28.entry.js → p-7836028c.entry.js} +2 -2
  198. package/dist/genexus-ide-ui/{p-f94cb936.entry.js → p-7adb9d1f.entry.js} +2 -2
  199. package/dist/genexus-ide-ui/p-7f091892.entry.js +222 -0
  200. package/dist/genexus-ide-ui/p-7f091892.entry.js.map +1 -0
  201. package/dist/genexus-ide-ui/p-821431b4.js +13 -0
  202. package/dist/genexus-ide-ui/p-821431b4.js.map +1 -0
  203. package/dist/genexus-ide-ui/{p-44e5e972.js → p-9a03ac9f.js} +2 -2
  204. package/dist/genexus-ide-ui/{p-44e5e972.js.map → p-9a03ac9f.js.map} +1 -1
  205. package/dist/genexus-ide-ui/{p-9b1550be.entry.js → p-9ad85231.entry.js} +2 -2
  206. package/dist/genexus-ide-ui/{p-bb0cdfe6.entry.js → p-b5d8589f.entry.js} +2 -2
  207. package/dist/genexus-ide-ui/{p-7fe4387b.entry.js → p-be84e15b.entry.js} +2 -2
  208. package/dist/genexus-ide-ui/{p-923744e7.entry.js → p-bee71b20.entry.js} +25 -23
  209. package/dist/genexus-ide-ui/p-bee71b20.entry.js.map +1 -0
  210. package/dist/genexus-ide-ui/{p-4dd3af73.entry.js → p-d01bbc7a.entry.js} +2 -2
  211. package/dist/genexus-ide-ui/p-d1374a00.entry.js +728 -0
  212. package/dist/genexus-ide-ui/p-d1374a00.entry.js.map +1 -0
  213. package/dist/genexus-ide-ui/{p-833ae3bf.entry.js → p-da7df3dc.entry.js} +2 -2
  214. package/dist/genexus-ide-ui/{p-9d1316d4.entry.js → p-e7738191.entry.js} +2 -2
  215. package/dist/genexus-ide-ui/{p-212ca306.entry.js → p-f242ae04.entry.js} +2 -2
  216. package/dist/types/components/team-dev/bring-changes/bring-changes.d.ts +6 -9
  217. package/dist/types/components/team-dev/update/types.d.ts +1 -0
  218. package/dist/types/components/team-dev/update/update.d.ts +98 -110
  219. package/dist/types/components/team-dev/update/utilities/actions-combo-box-model.d.ts +0 -0
  220. package/dist/types/components/team-dev/update-partial-selection/update-partial-selection.d.ts +8 -25
  221. package/dist/types/components/team-dev/update-to-revision/helpers.d.ts +1 -0
  222. package/dist/types/components/team-dev/update-to-revision/update-to-revision.d.ts +8 -25
  223. package/dist/types/components.d.ts +68 -144
  224. package/package.json +1 -1
  225. package/dist/cjs/config-140f58fe.js.map +0 -1
  226. package/dist/esm/config-73a57a22.js.map +0 -1
  227. package/dist/genexus-ide-ui/p-0391a478.entry.js +0 -119
  228. package/dist/genexus-ide-ui/p-0391a478.entry.js.map +0 -1
  229. package/dist/genexus-ide-ui/p-69da0cd9.entry.js +0 -201
  230. package/dist/genexus-ide-ui/p-69da0cd9.entry.js.map +0 -1
  231. package/dist/genexus-ide-ui/p-8c1ee4d9.entry.js +0 -643
  232. package/dist/genexus-ide-ui/p-8c1ee4d9.entry.js.map +0 -1
  233. package/dist/genexus-ide-ui/p-923744e7.entry.js.map +0 -1
  234. package/dist/genexus-ide-ui/p-952d84f8.entry.js.map +0 -1
  235. package/dist/genexus-ide-ui/p-b2854730.entry.js +0 -641
  236. package/dist/genexus-ide-ui/p-b2854730.entry.js.map +0 -1
  237. package/dist/genexus-ide-ui/p-dc1a9bd5.entry.js.map +0 -1
  238. /package/dist/genexus-ide-ui/{p-8c125495.entry.js.map → p-0ae0616f.entry.js.map} +0 -0
  239. /package/dist/genexus-ide-ui/{p-00e51225.entry.js.map → p-1056dfe7.entry.js.map} +0 -0
  240. /package/dist/genexus-ide-ui/{p-bf176329.entry.js.map → p-12b563fe.entry.js.map} +0 -0
  241. /package/dist/genexus-ide-ui/{p-a5b30dc7.entry.js.map → p-13f4b647.entry.js.map} +0 -0
  242. /package/dist/genexus-ide-ui/{p-54946b5e.entry.js.map → p-159164d6.entry.js.map} +0 -0
  243. /package/dist/genexus-ide-ui/{p-6945a7ad.entry.js.map → p-16a88fc3.entry.js.map} +0 -0
  244. /package/dist/genexus-ide-ui/{p-2c6ab8f4.entry.js.map → p-1d044bf5.entry.js.map} +0 -0
  245. /package/dist/genexus-ide-ui/{p-e1d947d7.entry.js.map → p-2ce60f4c.entry.js.map} +0 -0
  246. /package/dist/genexus-ide-ui/{p-38f135a5.entry.js.map → p-3b955964.entry.js.map} +0 -0
  247. /package/dist/genexus-ide-ui/{p-4da77239.entry.js.map → p-3dc5d62e.entry.js.map} +0 -0
  248. /package/dist/genexus-ide-ui/{p-56308ae7.entry.js.map → p-443fc479.entry.js.map} +0 -0
  249. /package/dist/genexus-ide-ui/{p-68ff4ac9.entry.js.map → p-4ef96726.entry.js.map} +0 -0
  250. /package/dist/genexus-ide-ui/{p-e06cfa27.entry.js.map → p-59908901.entry.js.map} +0 -0
  251. /package/dist/genexus-ide-ui/{p-57b8dd3d.entry.js.map → p-5a328be1.entry.js.map} +0 -0
  252. /package/dist/genexus-ide-ui/{p-3817c664.entry.js.map → p-646ddf49.entry.js.map} +0 -0
  253. /package/dist/genexus-ide-ui/{p-3d7ed559.entry.js.map → p-730f0cd3.entry.js.map} +0 -0
  254. /package/dist/genexus-ide-ui/{p-4c37ff28.entry.js.map → p-7836028c.entry.js.map} +0 -0
  255. /package/dist/genexus-ide-ui/{p-f94cb936.entry.js.map → p-7adb9d1f.entry.js.map} +0 -0
  256. /package/dist/genexus-ide-ui/{p-9b1550be.entry.js.map → p-9ad85231.entry.js.map} +0 -0
  257. /package/dist/genexus-ide-ui/{p-bb0cdfe6.entry.js.map → p-b5d8589f.entry.js.map} +0 -0
  258. /package/dist/genexus-ide-ui/{p-7fe4387b.entry.js.map → p-be84e15b.entry.js.map} +0 -0
  259. /package/dist/genexus-ide-ui/{p-4dd3af73.entry.js.map → p-d01bbc7a.entry.js.map} +0 -0
  260. /package/dist/genexus-ide-ui/{p-833ae3bf.entry.js.map → p-da7df3dc.entry.js.map} +0 -0
  261. /package/dist/genexus-ide-ui/{p-9d1316d4.entry.js.map → p-e7738191.entry.js.map} +0 -0
  262. /package/dist/genexus-ide-ui/{p-212ca306.entry.js.map → p-f242ae04.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","comment","mergedComment","map","commit","i","isLast","afterCommentBreakline","id","_GxIdeTeamDevBringChanges_mergeCheckedClickedHandler","async","merging","newobjectsStatesMap","Map","objectsStatesMap","__classPrivateFieldGet","forEach","checkedObjectId","operationType","mergeObjectsCallback","_GxIdeTeamDevBringChanges_mergeSingleObject","objectId","_GxIdeTeamDevBringChanges_renderActionCellContent","actionTaken","icon","caption","iconColor","objects","actions","delete","insert","modify","h","class","type","src","style","backgroundColor","_GxIdeTeamDevBringChanges_renderCommitsNumbers","onlyNumbers","_a","_b","loading","_GxIdeTeamDevBringChanges_renderFormatedDate","date","dateObject","Date","lang","navigator","languages","language","toLocaleDateString","toLocaleTimeString","hour","minute","hour12","_GxIdeTeamDevBringChanges_renderObjectActions","openDisabled","compareWithCurrentRevisionDisabled","menuContextAction","revisionChangesDisabled","previewMergeDisabled","disabled","objectActions","open","compareWithCurrentRevision","revisionChanges","previewMerge","_GxIdeTeamDevBringChanges_renderObjectStateWithIcon","objectType","states","reverting","classes","mergePillAsButton","onClick","call","statesForButton","_GxIdeTeamDevBringChanges_renderObjectsRows","objectsFiltered","commitObject","marked","markedObjectsSet","has","alreadyMerged","alreadyMergedObjectsIdsArray","find","errorOrWarningMessage","commitObjectsMessagesMap","get","state","MESSAGE_ICON","key","rowid","ref","el","setAttribute","size","renderObjectTypeWithIcon","description","_GxIdeTeamDevBringChanges_rowContextMenuHandler","event","rowId","detail","_GxIdeTeamDevBringChanges_updateMenuContextActions","_GxIdeTeamDevBringChanges_rowMarkingChangedHandler","newobjectsMarkedSet","Set","markedRowsIds","rowsId","checkedObjectsIgnoringAlreadyMerged","filter","markedObjectId","includes","__classPrivateFieldSet","add","atLeastOneObjectIsChecked","objectCurrentState","markedRowIndex","findIndex","splice","_GxIdeTeamDevBringChanges_searchInputHandler","searchValue","toLowerCase","_GxIdeTeamDevBringChanges_updateFilteredObjects","_GxIdeTeamDevBringChanges_stateChangedHandler","stateFilterValue","currentObjectContextMenuId","object","commitObjects","filteredObjects","objectState","includesName","includesType","includesDescription","objectsStatesMapChanged","newCommitObjectsStateMap","someObjectIsMerging","entries","commitObjectsChanged","newCommitObjects","componentWillLoad","Locale","getComponentStrings","commmits","commmit","all","value","warning","error","reverted","merged","updateObjectState","newState","message","checkedObject","push","tabularGridEl","markRow","render","enableRichRowSelector","disableControls","Host","model","commitDetail","revertChangesDetail","bringChangesDetail","genexusServer","href","target","knowledgeBase","currentVersion","mergeFromVersion","title","ids","from","to","htmlFor","comments","multiline","readonly","hideFilters","startImgSrc","placeholder","searchPlaceholder","onInput","statePlaceholder","revertSelected","mergeSelected","keyboardNavigationMode","rowSelectionMode","onRowMarkingChanged","onRowContextMenu","columnId","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","action","status","columnNameHidden","richRowActions","enableRowOptions","showOnRowActions","showOnRowContext","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: 8px;\n --pill-padding-block: 2px;\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: 24px;\n$header-item-common-separator-border: 1px solid\n var(--mer-border-color__on-elevation--01);\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: 24px;\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: 16px;\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(--mer-color__neutral-gray--400);\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(--mer-text__primary);\n text-decoration: underline;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\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: 10px;\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 64px;\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: 24px;\n @extend %header-item-common-start;\n}\n.information__col-2 {\n display: grid;\n grid-area: information-col-2;\n @extend %header-item-common-end;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: 24px;\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n gap: 12px;\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(--mer-surface__elevation--01);\n}\n\n.warning-error-description {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n max-inline-size: 800px;\n line-height: 1.5; // WA. Line height looks too tight.\n}\n.warning-error-icon {\n flex-shrink: 0;\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// - - - - - - - - - - - - - -\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(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-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(--mer-surface__elevation--01);\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 font-weight: var(--font-weight-semi-bold);\n\n &--to-merge,\n &--to-revert {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n }\n &--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n }\n &--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n }\n &--merged,\n &--reverted {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\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: 6px;\n $size: 14px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--mer-color__primary--300),\n var(--mer-color__tinted-primary--50)\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 --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n\n // --grid-cell__padding-inline: 0;\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 --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\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(--mer-surface__elevation--02) !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 TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../components\";\n\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\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];\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-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\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 * The current search filter value\n */\n @State() menuContextAction: ObjectActionTaken;\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 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 row options are enabled or not.\n */\n @Prop() readonly enableRowOptions: boolean = false;\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 mergePillAsButton: boolean;\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 = (): string => {\n if (this.commitInformation.length === 1) {\n // return comment without revison number\n return this.commitInformation[0].comment;\n }\n\n // return comments with revison number\n let mergedComment = \"\";\n this.commitInformation.map((commit, i) => {\n const isLast = i === this.commitInformation.length - 1;\n const afterCommentBreakline = isLast ? \"\" : \"\\n\\n\";\n mergedComment += `Commit ${commit.id}:\\n${commit.comment}${afterCommentBreakline}`;\n });\n\n return mergedComment;\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 = \"--mer-icon__error\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--mer-icon__warning\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\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 #renderObjectActions = (): JSX.Element[] => {\n const openDisabled = false;\n const compareWithCurrentRevisionDisabled =\n this.menuContextAction === \"Inserted\";\n const revisionChangesDisabled = this.menuContextAction === \"Inserted\";\n const previewMergeDisabled = false;\n\n return [\n <button type=\"button\" class=\"button-tertiary\" disabled={openDisabled}>\n {this.#componentLocale.objectActions.open}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={compareWithCurrentRevisionDisabled}\n >\n {this.#componentLocale.objectActions.compareWithCurrentRevision}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={revisionChangesDisabled}\n >\n {this.#componentLocale.objectActions.revisionChanges}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={previewMergeDisabled}\n >\n {this.#componentLocale.objectActions.previewMerge}\n </button>\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}`;\n if (\n this.mergePillAsButton &&\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 <ch-tabular-grid-cell\n class=\"tabular-grid-cell tabular-grid-cell--settings-custom-selector\"\n cell-type=\"rich\"\n row-actions=\"true\"\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-md 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 = (\n event: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n const rowId = event.detail.rowId;\n this.#updateMenuContextActions(rowId);\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 #updateMenuContextActions = (currentObjectContextMenuId: string): void => {\n const object = this.commitObjects.find(\n commitObject => commitObject.id === currentObjectContextMenuId\n );\n this.menuContextAction = object.actionTaken;\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 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-xs\">\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-s\">\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 <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 ]\n )}\n </div>\n\n <div\n // header information (col-2)\n class=\"information__col-2\"\n >\n <div\n // To\n class=\"field field-block\"\n >\n <label class={DETAIL_LABEL_CLASSES} htmlFor=\"commit-comments\">\n {this.commitInformation.length > 1\n ? this.#componentLocale.commitInformation.comments\n : this.#componentLocale.commitInformation.comment}\n </label>\n <div class=\"input-comments-container\">\n <ch-edit\n id=\"commit-comments\"\n class=\"input scrollable input-comments body-regular-s\"\n type=\"text\"\n multiline\n readonly\n value={this.#formatComments()}\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\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=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size=\"auto\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={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=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column tabular-grid-column--settings-custom-selector\"\n columnId=\"actions\"\n columnName=\"Actions\"\n columnNameHidden\n size=\"min-content\"\n columnType=\"rich\"\n richRowActions\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowActions\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowContext\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\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\";\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":["serverSelectorCss","CSS_BUNDLES","INFO_ICON","getIconPath","category","name","colorType","LOCK_ICON","LANGUAGE_ICON","GxIdeServerSelector","_GxIdeServerSelector_chSearchIcon","set","this","_GxIdeServerSelector_versionsSelect","value","caption","_GxIdeServerSelector__componentLocale","_GxIdeServerSelector_chGridRecentlyUsedServersEl","_GxIdeServerSelector_chGridConnectedServersEl","_GxIdeServerSelector_previousSelectedRowId","_GxIdeServerSelector_selectedRowId","_GxIdeServerSelector_serverUrlEL","_GxIdeServerSelector_cancelHandler","cancelCallback","_GxIdeServerSelector_confirmHandler","async","selectedConnectionType","selectServerCallback","uri","selectedServerUri","selectedServerName","isValidUrl","__classPrivateFieldGet","_GxIdeServerSelector_validateUrl","call","serverUrlInputValue","serverNameInputValue","_GxIdeServerSelector_filterValueChangedHandler","event","filterValue","detail","toLowerCase","filteredConnectedServersData","connectedServersData","filter","item","serverName","includes","_GxIdeServerSelector_inputHandler","field","enableConfirmButton","_GxIdeServerSelector_enableConfirmButton","url","serverUrl","URL","protocol","ex","length","_GxIdeServerSelector_selectConnectedServersHandler","_GxIdeServerSelector_handleServerSelection","_GxIdeServerSelector_selectRecentlyUsedServersHandler","recentlyUsedServersData","serversData","otherGridEl","isFirstSelection","__classPrivateFieldSet","rowId","undefined","selectedServer","find","server","id","userName","gxServerUsername","selectRow","_GxIdeServerSelector_connectionTypeChangedHandler","_GxIdeServerSelector_renderTabularGridColumnSet","hideColumnName","h","class","columnId","columnName","settingable","columnNameHidden","size","config","tabularGrid","colSize","maxContent","resizable","sortable","onColumnSortChanged","_GxIdeServerSelector_handleColumnSortChanged","auto","_GxIdeServerSelector_renderTooltip","text","actionElement","blockAlign","inlineAlign","tooltipSettings","delay","_GxIdeServerSelector_renderTabularGridCommonCells","_GxIdeServerSelector_renderIcon","accessLevel","isConnected","_GxIdeServerSelector_renderRecentlyUsedServersGrid","rowSelectionMode","ref","el","allowColumnReorder","onRowClicked","map","rowid","stateIconSrc","stateTitle","emptyConnectedServers","isAnimated","_GxIdeServerSelector_renderConnectedServersGrid","e","sortDirection","aux","sort","a","b","icon","src","_GxIdeServerSelector_renderFooter","isSelectionMode","onClick","footer","cancel","disabled","confirm","Map","componentWillLoad","Locale","getComponentStrings","_a","_b","render","connectionTypeClass","recentlyUsedEmptyClass","Host","model","header","title","onChange","startImgSrc","onInput","placeholder","placeholders","searchServers","accessibleName","type","htmlFor","recentlyUsed","allServers","labels","input","errors","serverUrlInvalid"],"sources":["src/components/team-dev/server-selector/server-selector.scss?tag=gx-ide-server-selector&encapsulation=shadow","src/components/team-dev/server-selector/server-selector.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content max-content 1fr max-content;\n row-gap: var(--mer-spacing--md);\n overflow: auto;\n}\n\n:host(.new-connection) {\n grid-template-rows: max-content 1fr;\n}\n\n:host(.recently-used-empty) {\n grid-template-rows: max-content 1fr;\n}\n\n.section {\n display: contents;\n}\n\n// General\n\n.tabular-grid {\n border-radius: var(--mer-border__radius--sm);\n overflow: hidden;\n border-inline: 1px solid var(--grid-cell__border-color);\n --grid-cell__box-shadow-inline-block:\n inset 0 0px var(--grid-cell__border-color),\n inset 0 -1px var(--grid-cell__border-color);\n overflow: auto;\n}\n\n.tabular-grid-rowset-empty {\n border-block-end: 1px solid var(--grid-cell__border-color);\n overflow: hidden;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n\n.text-neutral-gray-400,\n.tabular-grid-cell.text-neutral-gray-400 {\n // WA: colors for text should be defined in Mercury\n color: var(--mer-color__neutral-gray--400);\n}\n// Header\n\n.search-server {\n inline-size: 50%;\n}\n\n// Recently Used\n\n.tabular-grid-recently-used .tabular-grid-column::part(bar) {\n --grid-cell__padding-block: 0;\n --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.tabular-grid-recently-used {\n border-block-end: 1px solid var(--grid-cell__border-color);\n max-block-size: 100px;\n}\n\n// All Servers\n\n.tabular-grid-all-servers {\n overflow: auto;\n}\n\n.field-block-all-servers {\n overflow: auto;\n}\n\n.tabular-grid-all-servers {\n border-block: 1px solid var(--grid-cell__border-color);\n\n .tabular-grid-column:first-child::part(bar-name-icon) {\n background-image: var(\n --icon__system_order-alphabetically_on-elevation--enabled\n );\n block-size: var(--mer-icon__box--md);\n inline-size: var(--mer-icon__box--md);\n background-size: var(--mer-icon__size--md);\n }\n .tabular-grid-rowset-empty {\n border-block-end: none;\n overflow: hidden;\n }\n}\n\n.tabular-grid-all-servers .tabular-grid-column:first-child::part(bar) {\n --grid-common__gap: 0;\n}\n","// Stencil\nimport { Component, Element, h, Host, Prop, State } from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport {\n ChEditCustomEvent,\n TabularGridRowClickedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport { JSX } from \"@stencil/core/internal\";\nimport { config } from \"../../../common/config\";\nimport {\n ControlValidation\n // validateControls\n} from \"../../../common/form-validation\";\nimport { Locale } from \"../../../common/locale\";\nimport { FormSubmitResult } from \"../../../common/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"components/tabular-grid\"\n];\n\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-surface\"\n});\n\nconst LOCK_ICON = getIconPath({\n category: \"system\",\n name: \"lock\",\n colorType: \"on-surface\"\n});\n\nconst LANGUAGE_ICON = getIconPath({\n category: \"system\",\n name: \"language\",\n colorType: \"on-surface\"\n});\n\n@Component({\n tag: \"gx-ide-server-selector\",\n styleUrl: \"server-selector.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/server-selector\"]\n})\nexport class GxIdeServerSelector {\n #chSearchIcon = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n });\n\n #versionsSelect: RadioGroupItemModel[] = [\n { value: \"select\", caption: \"Select a server from the list below\" },\n { value: \"new\", caption: \"Enter a server URL manually\" }\n ];\n\n [key: string]: any;\n\n #_componentLocale: any;\n\n #chGridRecentlyUsedServersEl: HTMLChTabularGridElement;\n #chGridConnectedServersEl: HTMLChTabularGridElement;\n #previousSelectedRowId: string | undefined;\n #selectedRowId: string | undefined;\n #serverUrlEL: HTMLChEditElement;\n\n @Element() el: HTMLGxIdeServerSelectorElement;\n\n /**\n * State to enable/disable confirm button.\n */\n @State() enableConfirmButton: boolean = false;\n\n /**\n * State to track if this is the first selection made by the user.\n */\n @State() isFirstSelection: boolean = true;\n\n /**\n * State to track if the server URL is valid.\n */\n @State() isValidUrl: boolean = true;\n\n /**\n * The current server URL input value.\n */\n @State() serverUrlInputValue: string = \"\";\n\n /**\n * The current server URL input value.\n */\n @State() serverNameInputValue: string = \"\";\n\n /**\n * The selected server URI.\n */\n @State() selectedServerUri: string | undefined;\n\n /**\n * The selected server name.\n */\n @State() selectedServerName: string | undefined = \"None\";\n\n /**\n * The user name of the selected server.\n */\n @State() userName: string;\n\n /**\n * State to store the filter input value to filter the list-box\n */\n @State() filterValue: string = \"\";\n\n /**\n * Servers filtered\n */\n @State() filteredConnectedServersData: ConnectedGXServerData[] = [];\n\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * The selected connection type\n */\n @State() selectedConnectionType: ConnectionOption = \"select\";\n\n /**\n * The list of connected GX servers.\n */\n @Prop({ mutable: true }) connectedServersData: ConnectedGXServerData[] = [];\n\n /**\n * The list of recently used servers.\n */\n @Prop() readonly recentlyUsedServersData: ConnectedGXServerData[] = [];\n\n /**\n * Callback that is invoked when the dialog is closed\n */\n @Prop() readonly cancelCallback!: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.\n */\n @Prop() readonly selectServerCallback!: (\n authenticationSessionOrigin: AuthenticationSessionOrigin\n ) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.selectedServerUri = this.connectedServersData[0]?.serverUrl;\n this.userName = this.connectedServersData[0]?.gxServerUsername;\n\n this.filteredConnectedServersData = this.connectedServersData;\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = async (): Promise<void | ServerType> => {\n if (this.selectedConnectionType === \"select\") {\n await this.selectServerCallback({\n uri: this.selectedServerUri,\n name: this.selectedServerName\n });\n } else if (this.selectedConnectionType === \"new\") {\n this.isValidUrl = this.#validateUrl(this.serverUrlInputValue);\n if (this.isValidUrl) {\n await this.selectServerCallback({\n uri: this.serverUrlInputValue,\n name: this.serverNameInputValue\n });\n }\n }\n };\n\n #filterValueChangedHandler = (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n this.filterValue = (event.detail as string).toLowerCase();\n this.filteredConnectedServersData = this.connectedServersData.filter(item =>\n item.serverName.toLowerCase().includes(this.filterValue)\n );\n };\n\n #inputHandler = (\n event: ChEditCustomEvent<string> | InputEvent,\n field: \"serverUrlInputValue\" | \"serverNameInputValue\"\n ) => {\n this.enableConfirmButton = false;\n this[field] = event.detail as string;\n this.#enableConfirmButton();\n };\n\n #validateUrl = (url: string): boolean => {\n try {\n const serverUrl = new URL(url);\n return serverUrl.protocol === \"http:\" || serverUrl.protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n };\n\n #enableConfirmButton = () => {\n if (\n this.serverUrlInputValue &&\n this.serverUrlInputValue.length > 0 &&\n this.serverNameInputValue &&\n this.serverNameInputValue.length > 0\n ) {\n this.enableConfirmButton = true;\n } else {\n this.enableConfirmButton = false;\n }\n };\n\n #selectConnectedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.connectedServersData,\n this.#chGridRecentlyUsedServersEl\n );\n\n #selectRecentlyUsedServersHandler = (\n event: CustomEvent<TabularGridRowClickedEvent>\n ) =>\n this.#handleServerSelection(\n event,\n this.recentlyUsedServersData,\n this.#chGridConnectedServersEl\n );\n\n #handleServerSelection = async (\n event: CustomEvent<TabularGridRowClickedEvent>,\n serversData: ConnectedGXServerData[],\n otherGridEl: HTMLChTabularGridElement\n ): Promise<void> => {\n if (!this.isFirstSelection) {\n this.#previousSelectedRowId = this.#selectedRowId;\n }\n this.#selectedRowId = event.detail.rowId;\n if (this.#selectedRowId === undefined) {\n this.enableConfirmButton = false;\n this.selectedServerUri = undefined;\n this.selectedServerName = undefined;\n return;\n } else {\n const selectedServer = serversData.find(\n server => server.id === this.#selectedRowId\n );\n this.enableConfirmButton = true;\n this.selectedServerName = selectedServer?.serverName;\n this.selectedServerUri = selectedServer?.serverUrl;\n this.userName = selectedServer?.gxServerUsername || \"\";\n this.isFirstSelection = false;\n await otherGridEl?.selectRow(this.#previousSelectedRowId, false);\n }\n };\n\n #connectionTypeChangedHandler = (event: CustomEvent<string>) => {\n this.selectedConnectionType = event.detail as ConnectionOption;\n if (this.selectedConnectionType === \"new\") {\n this.enableConfirmButton = false;\n this.serverUrlInputValue = \"\";\n }\n this.selectedServerName = \"None\";\n };\n\n #renderTabularGridColumnSet = (\n hideColumnName: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n class=\"tabular-grid-column\"\n columnName=\"Icon\"\n settingable={false}\n columnNameHidden={true}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Name\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.serverName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"serverUrl\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Server Url\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.auto}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"userName\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Username\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.userName}\n resizable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"status\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Status\"\n settingable={false}\n columnNameHidden={hideColumnName}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n resizable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTooltip = (text: string): JSX.Element | null => {\n return text !== \"\" ? (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={null}\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {text}\n </ch-tooltip>\n ) : null;\n };\n\n #renderTabularGridCommonCells = (server: ConnectedGXServerData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderIcon(server.accessLevel)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-name\">\n {server.serverName}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-server-url\">\n {server.serverUrl}\n {this.#renderTooltip(server.serverUrl)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {server.gxServerUsername}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell text-neutral-gray-400 body-italic-s\">\n {server.isConnected && \"Connected\"}\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderRecentlyUsedServersGrid = (hideColumnName: boolean): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid-recently-used tabular-grid\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridRecentlyUsedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectRecentlyUsedServersHandler}\n id=\"recently-used-servers\"\n >\n {this.#renderTabularGridColumnSet(hideColumnName)}\n {this.recentlyUsedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.recentlyUsedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderConnectedServersGrid = (): Element => {\n return (\n <ch-tabular-grid\n class={\"tabular-grid tabular-grid-all-servers\"}\n rowSelectionMode=\"single\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridConnectedServersEl = el)\n }\n allowColumnReorder={false}\n onRowClicked={this.#selectConnectedServersHandler}\n id=\"all-servers\"\n >\n {this.#renderTabularGridColumnSet()}\n {this.filteredConnectedServersData.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.filteredConnectedServersData.map(\n (server: ConnectedGXServerData) => (\n <ch-tabular-grid-row rowid={server.id} class=\"tabular-grid-row\">\n {this.#renderTabularGridCommonCells(server)}\n </ch-tabular-grid-row>\n )\n )}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty class=\"tabular-grid-rowset-empty\">\n <gx-ide-empty-state\n stateIconSrc={INFO_ICON}\n stateTitle={this.#_componentLocale.emptyConnectedServers}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n\n const aux = this.connectedServersData;\n aux.sort((a: any, b: any) => {\n if (a[columnId] < b[columnId]) {\n return sortDirection === \"asc\" ? -1 : 1;\n }\n if (a[columnId] > b[columnId]) {\n return sortDirection === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n this.connectedServersData = [...aux];\n };\n\n #renderIcon = (accessLevel: string): JSX.Element => {\n const icon = accessLevel === \"private\" ? LOCK_ICON : LANGUAGE_ICON;\n return <ch-image class=\"icon-md\" src={icon}></ch-image>;\n };\n\n #renderFooter = () => {\n const isSelectionMode = this.selectedConnectionType === \"select\";\n return (\n <footer\n class={{\n \"control-footer-with-border\": true,\n \"control-footer-space-between\":\n this.selectedConnectionType === \"select\",\n \"space-between\": isSelectionMode,\n \"spacing-body-inline\": true,\n \"spacing-body-block\": true\n }}\n >\n {isSelectionMode && (\n <p class=\"body-italic-m\">Selected: {this.selectedServerName}</p>\n )}\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.enableConfirmButton && this.#confirmHandler}\n disabled={!this.enableConfirmButton}\n >\n {this.#_componentLocale.footer.confirm}\n </button>\n </div>\n </footer>\n );\n };\n\n render(): void {\n const connectionTypeClass =\n this.selectedConnectionType === \"new\" && \"new-connection\";\n const recentlyUsedEmptyClass =\n this.recentlyUsedServersData.length === 0 && \"recently-used-empty\";\n return (\n <Host\n class={`widget elevation-1 ${connectionTypeClass} ${recentlyUsedEmptyClass}`}\n >\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <main class=\"section\">\n <header class=\"header spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group\">\n <label class=\"body-regular-m text-neutral-gray-400\">\n {this.#_componentLocale.header.title}\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n model={this.#versionsSelect}\n onChange={this.#connectionTypeChangedHandler}\n value={this.#versionsSelect[0].value}\n ></ch-radio-group-render>\n\n {this.selectedConnectionType === \"select\" && (\n <ch-edit\n class=\"input search-server\"\n id=\"server-name-search\"\n startImgSrc={this.#chSearchIcon}\n onInput={this.#filterValueChangedHandler}\n placeholder={\n this.#_componentLocale.placeholders.searchServers\n }\n accessibleName=\"search server\"\n type=\"search\"\n ></ch-edit>\n )}\n </div>\n </header>\n {this.selectedConnectionType === \"select\" && [\n this.recentlyUsedServersData.length > 0 && (\n <div class=\"field field-block spacing-body-inline\">\n <label class=\"label\" htmlFor=\"recently-used-servers\">\n {this.#_componentLocale.recentlyUsed.title}\n </label>\n {this.#renderRecentlyUsedServersGrid(true)}\n </div>\n ),\n <div class=\"field field-block field-block-all-servers spacing-body-inline\">\n <label class=\"label\" htmlFor=\"all-servers\">\n {this.#_componentLocale.allServers.title}\n </label>\n {this.#renderConnectedServersGrid()}\n </div>\n ]}\n\n {this.selectedConnectionType === \"new\" && (\n <section class=\"spacing-body-inline\">\n <div class=\"layout layout--cols-2\">\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-url\">\n {this.#_componentLocale.labels.serverUrl}\n </label>\n <ch-edit\n // server url\n class={{ \"input\": true, \"input-error\": !this.isValidUrl }}\n id=\"server-url\"\n value={this.serverUrlInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverUrlInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverUrl}\n ref={el => (this.#serverUrlEL = el as HTMLChEditElement)}\n ></ch-edit>\n </div>\n <div class=\"field field-block layout__panel\">\n <label class=\"label\" htmlFor=\"server-name\">\n {this.#_componentLocale.labels.serverName}\n </label>\n <ch-edit\n // server friendly name\n class=\"input\"\n id=\"server-name\"\n value={this.serverNameInputValue}\n onInput={event =>\n this.#inputHandler(event, \"serverNameInputValue\")\n }\n placeholder={this.#_componentLocale.placeholders.serverName}\n ></ch-edit>\n </div>\n {!this.isValidUrl && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#serverUrlEL as unknown as HTMLButtonElement\n }\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#_componentLocale.errors.serverUrlInvalid}\n </ch-tooltip>\n )}\n </div>\n </section>\n )}\n\n {this.#renderFooter()}\n </main>\n </Host>\n );\n }\n}\n\nexport type ConnectionResultData = {\n formResult: FormSubmitResult;\n};\n\nexport type ConnectionOption = \"select\" | \"new\";\n\nexport type ServerType = \"legacy\" | \"next\";\n\nexport type ServerAccessLevel = \"public\" | \"private\";\n\nexport type AuthenticationSessionOrigin = {\n uri: string;\n name: string;\n};\n\nexport type ConnectedGXServerData = {\n id: string;\n serverUrl: string;\n accessLevel: ServerAccessLevel;\n masterSessionUsername: string;\n serverName?: string;\n gxServerUsername: string;\n isConnected: boolean;\n};\n\nexport type NewServerConnectionData = {\n serverUrl: string;\n serverName: string;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["mapObjectTypeToComboBoxItemModel","objectTypeModel","map","objectType","value","id","caption","name","startImgSrc","icon","mapGxOptionsToComboBoxItemModel","categoryModel","category","label","commitCss","FILTER_ICON","getIconPath","colorType","FILTER_ICON_EMPTY","FILTER_WITH_CONDITIONS_ICON","RESET_ICON","ALL_OPTION","CSS_BUNDLES","GxIdeTeamDevCommit","_GxIdeTeamDevCommit_componentLocale","set","this","_GxIdeTeamDevCommit_loadDataCalledFirstTime","_GxIdeTeamDevCommit_renderedFirstTime","_GxIdeTeamDevCommit_commitsTabModel","_GxIdeTeamDevCommit_categoriesEl","_GxIdeTeamDevCommit_changeSetEl","_GxIdeTeamDevCommit_commitCommentEl","_GxIdeTeamDevCommit_foldersEl","_GxIdeTeamDevCommit_patternEl","_GxIdeTeamDevCommit_typesEl","_GxIdeTeamDevCommit_chGridIgnoredObjectsEl","_GxIdeTeamDevCommit_chGridPendingCommitsEl","_GxIdeTeamDevCommit_initializeComboBoxModels","foldersChangedHandler","folders","typesChangedHandler","types","changeSetChangedHandler","changeSet","categoriesChangedHandler","categories","_GxIdeTeamDevCommit_commitCallbackHandler","async","comment","__classPrivateFieldGet","length","commentInputHasError","commitingObjects","pendingCommitsCheckedIds","getMarkedRows","commitCallback","_GxIdeTeamDevCommit_evaluateFilterConditions","filterHasConditions","_GxIdeTeamDevCommit_getRecentCommentHandler","getRecentCommentCallback","response","_GxIdeTeamDevCommit_gridOnSelectionChangedCallbackHandler","grid","ev","selectCallback","detail","rowsId","_GxIdeTeamDevCommit_handleColumnSortChanged","e","columnId","sortDirection","aux","pendingCommits","sort","a","b","_GxIdeTeamDevCommit_loadData","loading","filtersData","pattern","folder","type","call","loadCallback","then","pending","ignored","ignoredObjects","_GxIdeTeamDevCommit_updateTabModel","_GxIdeTeamDevCommit_markAllPendingCommitsRows","markAllRows","_GxIdeTeamDevCommit_objectsOnContextMenuCallbackHandler","preventDefault","stopPropagation","selection","selectedRowsId","getSelectedRows","objectsContextMenuCallback","clientX","clientY","_GxIdeTeamDevCommit_pendingCommitsRowMarkingChangedHandler","removeEventListener","addedRowsIds","addedRowsId","removedRowsId","pendingItemCheckedResult","pendingItemsCheckedCallback","itemsChecked","itemsUnchecked","undefined","_GxIdeTeamDevCommit_revertPendingCommitsCheckboxes","_GxIdeTeamDevCommit_togglePendingCommitsCheckboxes","addEventListener","_GxIdeTeamDevCommit_renderTabularGridColumnSet","withCheckboxes","h","class","columnType","richRowSelector","richRowSelectorMode","settingable","sortable","size","config","tabularGrid","colSize","maxContent","columnName","onColumnSortChanged","auto","_GxIdeTeamDevCommit_renderTabularGridCommonCells","object","renderObjectTypeWithIcon","description","formatDate","modifiedOn","module","renderObjectStateWithIcon","localState","lastSynchronized","_GxIdeTeamDevCommit_renderIgnoredObjectsGrid","tabularGridEmpty","_a","rowSelectionMode","ref","el","__classPrivateFieldSet","allowColumnReorder","part","onRowContextMenu","onSelectionChanged","loaderTitle","loader","title","show","obj","rowid","selected","stateIconSrc","stateTitle","emptyIgnoredObjects","isAnimated","_GxIdeTeamDevCommit_renderPendingCommitsGrid","objectsLoader","emptyPendingCommitsObjects","rowId","markRow","itemsToToggle","itemsToCheck","itemsToUncheck","tabs","_GxIdeTeamDevCommit_commentInputHandler","event","_GxIdeTeamDevCommit_toggleFiltersHandler","filtersHidden","_GxIdeTeamDevCommit_onTabActivated","evt","stopImmediatePropagation","newCategoriesOptions","newChangeSetOptions","changeSetOptionsModel","newFolderOptions","folderOptionsModel","newTypesOptions","typeOptionsModel","componentDidLoad","componentDidLoadEvent","emit","focus","componentDidRender","componentDidRenderFirstTime","componentName","componentWillLoad","Locale","getComponentStrings","reload","render","filterIcon","Host","model","htmlFor","header","commentLabel","input","scrollable","placeholder","commentPlaceholder","onInput","filterAriaLabel","onClick","src","reloadAriaLabel","actionElement","blockAlign","inlineAlign","tooltipSettings","delay","commentEmptyError","recentCommentsButton","disabled","inert","hidden","slot","filtersMenu","patternLabel","debounce","inputDebounce","folderLabel","typeLabel","changesetLabel","categoryLabel","categoryOptionsModel","tabListPosition","selectedId","showTabListEnd","overflow","contain","onSelectedItemChange","footer","commitButton"],"sources":["src/components/team-dev/commit/helpers.ts","src/components/team-dev/commit/commit.scss?tag=gx-ide-team-dev-commit&encapsulation=shadow","src/components/team-dev/commit/commit.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { ObjectType, GxOption } from \"../../../common/types\";\n\nexport const mapObjectTypeToComboBoxItemModel = (\n objectTypeModel: ObjectType[]\n): ComboBoxModel =>\n objectTypeModel.map(objectType => ({\n value: objectType.id,\n caption: objectType.name,\n startImgSrc: objectType.icon\n }));\n\nexport const mapGxOptionsToComboBoxItemModel = (\n categoryModel: GxOption[]\n): ComboBoxModel =>\n categoryModel.map(category => ({\n value: category.id,\n caption: category.label || category.name || \"\"\n }));\n","@import \"../common/styles.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n\nsection {\n display: contents;\n}\n\n// header\n.header {\n &__first-row {\n grid-template-columns: 1fr max-content;\n }\n}\n.field-comment {\n flex: 1;\n}\n\n// filter\n.filters-container {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows var(--mer-timing--fast);\n}\n.filters-container-visible {\n grid-template-rows: 1fr;\n}\n.filters-container > div {\n overflow: hidden;\n}\n.filter {\n grid-template-areas:\n \"field-pattern field-folder field-type\"\n \"field-changeset field-changeset field-category\";\n padding-block-start: var(--mer-spacing--sm);\n}\n.field-pattern {\n grid-area: field-pattern;\n}\n.field-folder {\n grid-area: field-folder;\n}\n.field-type {\n grid-area: field-type;\n}\n.field-changeset {\n grid-area: field-changeset;\n}\n.field-category {\n grid-area: field-category;\n}\n\n.ch-tab-slot {\n inline-size: 100%;\n overflow: auto;\n}\n\n// tab\n.tab {\n // WA / TODO: Mercury should provide an additional class to remove tab border\n border: none !important;\n}\n\n// tabular grid\n.tabular-grid {\n block-size: 100%;\n position: relative;\n overflow: auto;\n}\n.tabular-grid-cell.tabular-grid-cell-description {\n max-inline-size: 600px;\n}\n\ngx-ide-loader {\n position: absolute;\n inline-size: 100%;\n block-size: 100%;\n}\n\nch-tabular-grid-rowset-empty {\n position: relative; // makes this the bounder element for the loader\n}\n\nch-tabular-grid.tabular-grid--empty::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n.tooltip {\n position: absolute;\n}\n","// Stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n Method,\n State,\n Watch\n} from \"@stencil/core\";\n\n// Other Libraries\nimport {\n ChEditCustomEvent,\n ComboBoxModel,\n TabModel,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\nimport {\n renderObjectStateWithIcon,\n renderObjectTypeWithIcon\n} from \"../common/utilities\";\nimport { ObjectState } from \"../common/types\";\n\n// Custom Imports\nimport { Locale } from \"../../../common/locale\";\nimport { config } from \"../../../common/config\";\nimport {\n GxOption,\n ContextMenuInfo,\n ObjectType,\n ItemsCheckedState,\n ItemsCheckedResult\n} from \"../../../common/types\";\n\nimport { formatDate } from \"../../../common/helpers\";\nimport {\n mapGxOptionsToComboBoxItemModel,\n mapObjectTypeToComboBoxItemModel\n} from \"./helpers\";\n\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"primary\"\n});\n\nconst FILTER_ICON_EMPTY = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-surface\"\n});\n\nconst FILTER_WITH_CONDITIONS_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter-conditions\",\n colorType: \"primary\"\n});\n\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"primary\"\n});\n\nconst ALL_OPTION = \"All\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/edit\",\n \"components/tab\",\n \"components/icon\",\n \"components/tabular-grid\",\n \"components/tooltip\",\n \"chameleon/scrollbar\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\"\n];\n@Component({\n tag: \"gx-ide-team-dev-commit\",\n styleUrl: \"commit.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-commit\"]\n})\nexport class GxIdeTeamDevCommit {\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 #loadDataCalledFirstTime = false; // pending commits grid checkboxes, should be checked, after loadData has loaded commits for the first time.\n #renderedFirstTime = false;\n #commitsTabModel: TabModel = [\n { id: \"pending-commits\", name: \"Pending Commits\" },\n { id: \"ignored-objects\", name: \"Ignored Objects\" }\n ];\n\n @Element() el: HTMLGxIdeTeamDevCommitElement;\n\n // filters\n #categoriesEl!: HTMLChComboBoxRenderElement;\n #changeSetEl!: HTMLChComboBoxRenderElement;\n #commitCommentEl!: HTMLChEditElement;\n #foldersEl!: HTMLChComboBoxRenderElement;\n #patternEl!: HTMLChEditElement;\n #typesEl!: HTMLChComboBoxRenderElement;\n // other\n #chGridIgnoredObjectsEl!: HTMLChTabularGridElement;\n #chGridPendingCommitsEl!: HTMLChTabularGridElement;\n\n @State() comment = \"\";\n @State() filterHasConditions = false;\n @State() ignoredObjects: ModifiedObjectData[] = [];\n @State() pendingCommits: ModifiedObjectData[] = [];\n @State() commentInputHasError: boolean = false;\n @State() commitingObjects: boolean = false;\n @State() filtersHidden = true;\n // Combo box models\n @State() folderOptionsModel: ComboBoxModel;\n @State() typeOptionsModel: ComboBoxModel;\n @State() changeSetOptionsModel: ComboBoxModel;\n @State() categoryOptionsModel: ComboBoxModel;\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * Possible values for Categories filter\n */\n @Prop() readonly categories: GxOption[];\n @Watch(\"categories\")\n categoriesChangedHandler(newCategoriesOptions: GxOption[]) {\n mapGxOptionsToComboBoxItemModel(newCategoriesOptions);\n }\n\n /**\n * Possible values for ChangeSet filter\n */\n @Prop() readonly changeSet: GxOption[];\n @Watch(\"changeSet\")\n changeSetChangedHandler(newChangeSetOptions: GxOption[]) {\n this.changeSetOptionsModel =\n mapGxOptionsToComboBoxItemModel(newChangeSetOptions);\n }\n\n /**\n * Callback invoked when user starts the commit process\n */\n @Prop() readonly commitCallback: CommitCallback;\n\n /**\n * Possible values for Folders filter\n */\n @Prop() readonly folders: GxOption[];\n @Watch(\"folders\")\n foldersChangedHandler(newFolderOptions: GxOption[]) {\n this.folderOptionsModel = mapGxOptionsToComboBoxItemModel(newFolderOptions);\n }\n\n /**\n * Callback invoked when user press Recent Comments button.\n */\n @Prop() readonly getRecentCommentCallback: GetRecentComment;\n\n /**\n * Callback invoked when user wants to reload the grid\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked when the user activates the context menu in any grid\n */\n @Prop() readonly objectsContextMenuCallback: ObjectsContextMenuCallback;\n\n /**\n * Callback invoked when user check/uncheck any item from the 'Pending to Commit' grid\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Callback invoked when the user selects rows from the grid\n */\n @Prop() readonly selectCallback: CommitSelectCallback;\n\n /**\n * Possible values for Type filter\n */\n @Prop() readonly types: ObjectType[];\n @Watch(\"types\")\n typesChangedHandler(newTypesOptions: ObjectType[]) {\n this.typeOptionsModel = mapObjectTypeToComboBoxItemModel(newTypesOptions);\n }\n\n /**\n * Emitted once after the component fully loads and the first render occurs\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs\n */\n @Event() componentDidRenderFirstTime: EventEmitter<boolean>;\n\n async componentDidLoad() {\n await this.#loadData();\n this.#loadDataCalledFirstTime = true;\n this.componentDidLoadEvent.emit(true);\n this.#commitCommentEl.focus();\n }\n\n async componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n\n if (this.#loadDataCalledFirstTime) {\n // call this method only once\n await this.#markAllPendingCommitsRows();\n // attach \"rowMarkingChanged\" after rows have been checked for the first time.\n this.#chGridPendingCommitsEl.addEventListener(\n \"rowMarkingChanged\",\n this.#pendingCommitsRowMarkingChangedHandler\n );\n this.#loadDataCalledFirstTime = false;\n }\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#initializeComboBoxModels();\n }\n\n #initializeComboBoxModels = () => {\n this.foldersChangedHandler(this.folders);\n this.typesChangedHandler(this.types);\n this.changeSetChangedHandler(this.changeSet);\n this.categoriesChangedHandler(this.categories);\n };\n\n /**\n * Method used by the Host to force a data refresh in the grids\n */\n @Method()\n async reload(): Promise<void> {\n this.#loadData();\n }\n\n #commitCallbackHandler = async () => {\n const comment = this.#commitCommentEl.value;\n if (!comment.length) {\n // A comment is required to commit.\n this.commentInputHasError = true;\n return;\n }\n\n this.commitingObjects = true;\n this.commentInputHasError = false;\n const pendingCommitsCheckedIds =\n await this.#chGridPendingCommitsEl.getMarkedRows();\n\n await this.commitCallback(pendingCommitsCheckedIds, comment);\n this.commitingObjects = false;\n };\n\n #evaluateFilterConditions = () => {\n // TODO: This should update\n if (\n this.#patternEl.value !== \"\" ||\n this.#changeSetEl.value !== ALL_OPTION ||\n this.#typesEl.value !== ALL_OPTION ||\n this.#foldersEl.value !== ALL_OPTION ||\n this.#categoriesEl.value !== ALL_OPTION\n ) {\n this.filterHasConditions = true;\n } else {\n this.filterHasConditions = false;\n }\n };\n\n #getRecentCommentHandler = async () => {\n if (this.getRecentCommentCallback) {\n const response = await this.getRecentCommentCallback();\n if (response) {\n this.#commitCommentEl.value = response;\n }\n }\n };\n\n #gridOnSelectionChangedCallbackHandler =\n (grid: CommitSourceType) =>\n async (ev: CustomEvent<TabularGridSelectionChangedEvent>) => {\n if (this.selectCallback) {\n await this.selectCallback(grid, ev.detail.rowsId);\n }\n };\n\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n\n const aux = this.pendingCommits;\n aux.sort((a: any, b: any) => {\n if (a[columnId] < b[columnId]) {\n return sortDirection === \"asc\" ? -1 : 1;\n }\n if (a[columnId] > b[columnId]) {\n return sortDirection === \"asc\" ? 1 : -1;\n }\n return 0;\n });\n\n this.pendingCommits = [...aux];\n };\n\n #loadData = async () => {\n this.loading = true;\n const filtersData: FiltersData = {\n pattern: this.#patternEl.value,\n changeSet: this.#changeSetEl.value,\n folder: this.#foldersEl.value,\n category: this.#categoriesEl.value,\n type: this.#typesEl.value\n };\n\n this.#evaluateFilterConditions();\n\n await this.loadCallback(filtersData).then(async ({ pending, ignored }) => {\n this.pendingCommits = [...pending];\n this.ignoredObjects = [...ignored];\n });\n this.loading = false;\n this.#updateTabModel();\n };\n\n #markAllPendingCommitsRows = async () => {\n await this.#chGridPendingCommitsEl.markAllRows();\n };\n\n #objectsOnContextMenuCallbackHandler =\n (grid: CommitSourceType) =>\n async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n let selection: string[] = [];\n if (grid === \"commit\") {\n selection = ev.detail.selectedRowsId;\n } else if (grid === \"ignored\") {\n selection = await this.#chGridIgnoredObjectsEl.getSelectedRows();\n }\n if (this.objectsContextMenuCallback) {\n await this.objectsContextMenuCallback(grid, {\n selection: selection,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n }\n };\n\n #pendingCommitsRowMarkingChangedHandler = async (\n e: CustomEvent<TabularGridMarkingChangedEvent>\n ): Promise<void> => {\n // remove \"rowMarkingChanged\" until checkboxes have been added/removed on #togglePendingCommitsCheckboxes, to prevent loops.\n this.#chGridPendingCommitsEl.removeEventListener(\n \"rowMarkingChanged\",\n this.#pendingCommitsRowMarkingChangedHandler\n );\n if (this.#chGridPendingCommitsEl) {\n const addedRowsIds = e.detail.addedRowsId;\n const removedRowsId = e.detail.removedRowsId;\n\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n this.#chGridPendingCommitsEl.addEventListener(\n \"rowMarkingChanged\",\n this.#pendingCommitsRowMarkingChangedHandler\n );\n }\n };\n\n #renderTabularGridColumnSet = (\n withCheckboxes: boolean = false\n ): HTMLChTabularGridColumnsetElement => {\n return (\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n {withCheckboxes && (\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnType=\"rich\"\n richRowSelector\n richRowSelectorMode=\"mark\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n )}\n <ch-tabular-grid-column\n columnId=\"name\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Name\"\n settingable={false}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"type\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Type\"\n settingable={false}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"description\"\n class=\"tabular-grid-column\"\n columnName=\"Description\"\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"modifiedOn\"\n class=\"tabular-grid-column\"\n sortable\n columnName=\"Modified On\"\n settingable={false}\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"module\"\n class=\"tabular-grid-column\"\n columnName=\"Module\"\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"localState\"\n class=\"tabular-grid-column\"\n columnName=\"Local State\"\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.maxContent}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"lastSynchronized\"\n class=\"tabular-grid-column\"\n columnName=\"Last Synchronized\"\n settingable={false}\n sortable\n onColumnSortChanged={this.#handleColumnSortChanged}\n size={config.tabularGrid.colSize.auto}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n );\n };\n\n #renderTabularGridCommonCells = (object: ModifiedObjectData) => {\n return [\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.name}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(object.type)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {object.description}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(object.modifiedOn)}`}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.module}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectStateWithIcon(object.localState)}\n </ch-tabular-grid-cell>,\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(object.lastSynchronized)}`}\n </ch-tabular-grid-cell>\n ];\n };\n\n #renderIgnoredObjectsGrid = (): Element => {\n const tabularGridEmpty =\n this.ignoredObjects?.length === 0 || !this.ignoredObjects;\n return (\n <ch-tabular-grid\n // ignored objects grid render\n class={{\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n rowSelectionMode=\"multiple\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridIgnoredObjectsEl = el)\n }\n allowColumnReorder={false}\n part=\"ch-grid-pending-commits\"\n onRowContextMenu={this.#objectsOnContextMenuCallbackHandler(\"ignored\")}\n onSelectionChanged={this.#gridOnSelectionChangedCallbackHandler(\n \"ignored\"\n )}\n >\n {this.commitingObjects && (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n )}\n\n {this.#renderTabularGridColumnSet()}\n {this.ignoredObjects.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.ignoredObjects.map((obj: ModifiedObjectData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n selected\n class=\"tabular-grid-row\"\n >\n {this.#renderTabularGridCommonCells(obj)}\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 <gx-ide-empty-state\n stateIconSrc={FILTER_ICON_EMPTY}\n stateTitle={this.#componentLocale.emptyIgnoredObjects}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #renderPendingCommitsGrid = (): Element => {\n const withCheckboxes = true;\n const tabularGridEmpty =\n this.pendingCommits?.length === 0 || !this.pendingCommits;\n\n if (this.loading) {\n return (\n <div class=\"tabular-grid\">\n <gx-ide-loader\n loaderTitle={this.#componentLocale.objectsLoader.title}\n description={this.#componentLocale.objectsLoader.description}\n show\n ></gx-ide-loader>\n </div>\n );\n }\n return (\n <ch-tabular-grid\n // pending commits grid render\n class={{\n \"tabular-grid\": true,\n \"tabular-grid--empty\": tabularGridEmpty\n }}\n rowSelectionMode=\"multiple\"\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingCommitsEl = el)\n }\n allowColumnReorder={false}\n part=\"ch-grid-pending-commits\"\n onRowContextMenu={this.#objectsOnContextMenuCallbackHandler(\"commit\")}\n onSelectionChanged={this.#gridOnSelectionChangedCallbackHandler(\n \"commit\"\n )}\n >\n {this.commitingObjects && (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n ></gx-ide-loader>\n )}\n\n {this.#renderTabularGridColumnSet(withCheckboxes)}\n\n {this.pendingCommits.length > 0 ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.pendingCommits.map((obj: ModifiedObjectData) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector\n class=\"tabular-grid-cell\"\n ></ch-tabular-grid-cell>\n {this.#renderTabularGridCommonCells(obj)}\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 <gx-ide-empty-state\n stateIconSrc={FILTER_ICON_EMPTY}\n stateTitle={this.#componentLocale.emptyPendingCommitsObjects}\n isAnimated={true}\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n );\n };\n\n #revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.#chGridPendingCommitsEl) {\n for (const rowId of addedRowsIds) {\n await this.#chGridPendingCommitsEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.#chGridPendingCommitsEl.markRow(rowId, true);\n }\n }\n };\n\n #togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.#chGridPendingCommitsEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.#chGridPendingCommitsEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.#chGridPendingCommitsEl.markRow(rowId, false);\n }\n }\n };\n\n #updateTabModel = () => {\n this.#commitsTabModel = [\n {\n id: \"pending-commits\",\n name: `${this.#componentLocale.tabs.pendingCommits} (${\n this.pendingCommits.length\n })`\n },\n {\n id: \"ignored-objects\",\n name: `${this.#componentLocale.tabs.ignoredObjects} (${\n this.ignoredObjects.length\n })`\n }\n ];\n };\n\n #commentInputHandler = async (\n event: ChEditCustomEvent<string> | InputEvent\n ) => {\n const comment = event.detail as string;\n if (comment.length && this.commentInputHasError) {\n // remove error style and tooltip\n this.commentInputHasError = false;\n }\n };\n\n #toggleFiltersHandler = () => {\n this.filtersHidden = !this.filtersHidden;\n };\n\n #onTabActivated = (evt: CustomEvent) => {\n evt.stopImmediatePropagation();\n };\n\n render() {\n const filterIcon = this.filterHasConditions\n ? FILTER_WITH_CONDITIONS_ICON\n : FILTER_ICON;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body\">\n <div class=\"header__first-row field-group\">\n <div class=\"buttons-spacer\">\n <div\n // pattern\n class=\"field field-inline field-comment\"\n >\n <label class=\"label\" htmlFor=\"pattern-form-text\">\n {this.#componentLocale.header.commentLabel}\n </label>\n <ch-edit\n // commit comment\n id=\"comment\"\n class={{\n \"input\": true,\n \"commit-input\": true,\n \"scrollable\": true,\n \"input-error\": this.commentInputHasError\n }}\n placeholder={\n this.#componentLocale.header.commentPlaceholder\n }\n onInput={this.#commentInputHandler}\n value={this.comment}\n ref={(el: HTMLChEditElement) =>\n (this.#commitCommentEl = el as HTMLChEditElement)\n }\n part=\"comment\"\n ></ch-edit>\n </div>\n <button\n id=\"filter-toggle-button\"\n class=\"button-teritary button-icon-only\"\n aria-label={this.#componentLocale.header.filterAriaLabel}\n aria-expanded={this.filtersHidden ? \"false\" : \"true\"}\n aria-controls=\"filters-container\"\n onClick={this.#toggleFiltersHandler}\n title={this.#componentLocale.header.filterAriaLabel}\n >\n <ch-image class=\"icon-md\" src={filterIcon}></ch-image>\n </button>\n\n <button\n class=\"button-teritary button-icon-only\"\n aria-label={this.#componentLocale.header.reloadAriaLabel}\n title={this.#componentLocale.header.reloadAriaLabel}\n onClick={this.#loadData}\n part={this.#componentLocale.header.reloadAriaLabel}\n >\n <ch-image class=\"icon-md\" src={RESET_ICON}></ch-image>\n </button>\n </div>\n {this.commentInputHasError && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={\n this.#commitCommentEl as unknown as HTMLButtonElement\n }\n blockAlign=\"outside-end\"\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.#componentLocale.header.commentEmptyError}\n </ch-tooltip>\n )}\n\n <div class=\"buttons-spacer\">\n <button\n type=\"button\"\n class=\"button-secondary recent-comments-btn\"\n part=\"button button-location\"\n onClick={this.#getRecentCommentHandler}\n aria-label={this.#componentLocale.header.recentCommentsButton}\n disabled={this.commitingObjects}\n >\n {this.#componentLocale.header.recentCommentsButton}\n </button>\n </div>\n </div>\n\n <div\n id=\"filters-container\"\n aria-labelledby=\"filter-toggle-button\"\n class={{\n \"filters-container-visible\": !this.filtersHidden,\n \"filters-container\": true\n }}\n inert={this.filtersHidden}\n hidden={this.filtersHidden}\n >\n <div>\n <div slot=\"filter\" class=\"filter field-group\">\n <div\n // pattern\n class=\"field field-block field-pattern\"\n >\n <label class=\"label\" htmlFor=\"pattern-form-text\">\n {this.#componentLocale.filtersMenu.patternLabel}\n </label>\n <ch-edit\n id=\"pattern-form-text\"\n class=\"input\"\n value=\"\"\n ref={(el: HTMLChEditElement) =>\n (this.#patternEl = el as HTMLChEditElement)\n }\n debounce={config.inputDebounce}\n onInput={this.#loadData}\n part=\"pattern-form-text\"\n ></ch-edit>\n </div>\n\n <div\n // folder\n class=\"field field-block field-folder\"\n >\n <label class=\"label\" htmlFor=\"folder-combo\">\n {this.#componentLocale.filtersMenu.folderLabel}\n </label>\n <ch-combo-box-render\n id=\"folder-combo\"\n class=\"combo-box\"\n value={this.folders[0].id}\n model={this.folderOptionsModel}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#foldersEl = el as HTMLChComboBoxRenderElement)\n }\n onInput={this.#loadData}\n part=\"folder-combo\"\n ></ch-combo-box-render>\n </div>\n\n <div\n // type\n class=\"field field-block field-type\"\n >\n <label class=\"label\" htmlFor=\"type-combo\">\n {this.#componentLocale.filtersMenu.typeLabel}\n </label>\n <ch-combo-box-render\n id=\"type-combo\"\n class=\"combo-box\"\n value={this.types[0].id}\n model={this.typeOptionsModel}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#typesEl = el as HTMLChComboBoxRenderElement)\n }\n onInput={this.#loadData}\n part=\"type-combo\"\n ></ch-combo-box-render>\n </div>\n\n <div\n // changeset\n class=\"field field-block field-changeset\"\n >\n <label class=\"label\" htmlFor=\"changeset-combo\">\n {this.#componentLocale.filtersMenu.changesetLabel}\n </label>\n <ch-combo-box-render\n id=\"changeset-combo\"\n class=\"combo-box\"\n value={this.changeSet[0].id}\n model={this.changeSetOptionsModel}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#changeSetEl = el as HTMLChComboBoxRenderElement)\n }\n onInput={this.#loadData}\n part=\"changeset-combo\"\n ></ch-combo-box-render>\n </div>\n\n <div\n // category\n class=\"field field-block field-category\"\n >\n <label class=\"label\" htmlFor=\"category-combo\">\n {this.#componentLocale.filtersMenu.categoryLabel}\n </label>\n <ch-combo-box-render\n id=\"category-combo\"\n class=\"combo-box\"\n value={this.categories[0].id}\n model={this.categoryOptionsModel}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#categoriesEl = el as HTMLChComboBoxRenderElement)\n }\n onInput={this.#loadData}\n part=\"category-combo\"\n ></ch-combo-box-render>\n </div>\n </div>\n </div>\n </div>\n </header>\n\n <ch-tab-render\n class=\"tab scrollable\"\n tabListPosition=\"block-start\"\n model={this.#commitsTabModel}\n selectedId=\"pending-commits\"\n showTabListEnd\n overflow=\"auto auto\"\n contain=\"size\"\n onSelectedItemChange={this.#onTabActivated}\n >\n <div\n class=\"ch-tab-slot\"\n slot=\"pending-commits\"\n part=\"pending-commits\"\n >\n {this.#renderPendingCommitsGrid()}\n </div>\n <div\n class=\"ch-tab-slot\"\n slot=\"ignored-objects\"\n part=\"ignored-objects\"\n >\n {this.#renderIgnoredObjectsGrid()}\n </div>\n </ch-tab-render>\n\n <footer class=\"control-footer control-footer-with-border spacing-body-inline spacing-body-block-end\">\n <button\n class=\"button-primary\"\n onClick={this.#commitCallbackHandler}\n part=\"commit-button\"\n disabled={this.commitingObjects}\n >\n {this.#componentLocale.footer.commitButton}\n </button>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type CommitCallback = (\n selection: string[],\n commitCommentEl: string\n) => Promise<boolean>;\n\nexport type CommitData = {\n pending: ModifiedObjectData[];\n ignored: ModifiedObjectData[];\n};\n\nexport type CommitSelectCallback = (\n grid: CommitSourceType,\n selectionIds: string[]\n) => Promise<void>;\n\nexport type CommitSourceType = \"commit\" | \"ignored\";\n\nexport type FiltersData = {\n pattern: string;\n changeSet: string;\n type: string;\n folder: string;\n category: string;\n};\n\nexport type GetRecentComment = () => Promise<string | undefined>;\n\nexport type ItemCheckedCallback = (\n checkedItemIds: string[]\n) => Promise<ItemsCheckedResult | undefined>;\n\nexport type LoadCallback = (filters: FiltersData) => Promise<CommitData>;\n\nexport type ModifiedObjectData = {\n id: string;\n name: string;\n iconType: string;\n state: ObjectState;\n type: ObjectType;\n description: string;\n modifiedOn: Date;\n module: string;\n localState: ObjectState;\n lastSynchronized: Date;\n user: string;\n};\n\nexport type ObjectsContextMenuCallback = (\n grid: CommitSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type PendingItemsCheckedCallback = (\n pendingItemsCheckedState: ItemsCheckedState\n) => Promise<ItemsCheckedResult | undefined>;\n"],"mappings":"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"}