@genexus/genexus-ide-ui 1.1.49 → 1.1.51

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 (317) hide show
  1. package/dist/cjs/{form-validation-178cf461.js → form-validation-54acc775.js} +11 -1
  2. package/dist/cjs/form-validation-54acc775.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +1 -1
  6. package/dist/cjs/gx-ide-curl-inspector.cjs.entry.js +1 -1
  7. package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
  8. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
  9. package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-name-picker.cjs.entry.js +2 -1
  11. package/dist/cjs/gx-ide-name-picker.cjs.entry.js.map +1 -1
  12. package/dist/cjs/gx-ide-new-environment.cjs.entry.js +2 -2
  13. package/dist/cjs/gx-ide-new-kb.cjs.entry.js +2 -2
  14. package/dist/cjs/gx-ide-new-version.cjs.entry.js +1 -1
  15. package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
  16. package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +1 -1
  17. package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
  18. package/dist/cjs/gx-ide-references.cjs.entry.js +2 -2
  19. package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
  20. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +17 -13
  21. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  22. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js +1 -1
  23. package/dist/cjs/gx-ide-select-user-team.cjs.entry.js.map +1 -1
  24. package/dist/cjs/gx-ide-server-selector.cjs.entry.js +59 -30
  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-start-page.cjs.entry.js +39 -20
  28. package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
  29. package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +2 -2
  30. package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +2 -2
  31. package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
  32. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +2 -2
  33. package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
  34. package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +2 -2
  35. package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
  36. package/dist/cjs/gx-ide-ww-images.cjs.entry.js +1 -1
  37. package/dist/cjs/{helpers-21c9cd02.js → helpers-263b5f4e.js} +3 -7
  38. package/dist/cjs/helpers-263b5f4e.js.map +1 -0
  39. package/dist/cjs/loader.cjs.js +1 -1
  40. package/dist/cjs/{tabular-grid-render-4350dbaf.js → tabular-grid-render-b1767da2.js} +2 -2
  41. package/dist/cjs/{tabular-grid-render-4350dbaf.js.map → tabular-grid-render-b1767da2.js.map} +1 -1
  42. package/dist/collection/collection-manifest.json +0 -4
  43. package/dist/collection/common/form-validation.js +9 -0
  44. package/dist/collection/common/form-validation.js.map +1 -1
  45. package/dist/collection/common/helpers.js +3 -7
  46. package/dist/collection/common/helpers.js.map +1 -1
  47. package/dist/collection/components/curl-inspector/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +6 -6
  48. package/dist/collection/components/details-acknowledgements/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +10 -10
  49. package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.ja.json +10 -10
  50. package/dist/collection/components/json-import/gx-ide-assets/json-import/langs/json-import.lang.zh.json +10 -10
  51. package/dist/collection/components/kb-manager-export/kb-manager-export.css +5 -1
  52. package/dist/collection/components/kb-manager-import/kb-manager-import.js +1 -1
  53. package/dist/collection/components/name-picker/gx-ide-assets/name-picker/langs/name-picker.lang.ja.json +5 -5
  54. package/dist/collection/components/name-picker/name-picker.js +2 -1
  55. package/dist/collection/components/name-picker/name-picker.js.map +1 -1
  56. package/dist/collection/components/plugin-details/plugin-details.css +3 -1
  57. package/dist/collection/components/references/references.js +2 -2
  58. package/dist/collection/components/references/references.js.map +1 -1
  59. package/dist/collection/components/select-kb-items/select-kb-items.js +36 -13
  60. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  61. package/dist/collection/components/select-user-team/select-user-team.css +0 -2
  62. package/dist/collection/components/sign-in-result/gx-ide-assets/sign-in-result/images/left-side-illustration.svg +4 -26
  63. package/dist/collection/components/sign-in-result/gx-ide-assets/sign-in-result/images/right-side-illustration.svg +12 -12
  64. package/dist/collection/components/sign-in-result/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.en.json +1 -1
  65. package/dist/collection/components/sign-in-result/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.ja.json +4 -4
  66. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.en.json +5 -0
  67. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.ja.json +5 -0
  68. package/dist/collection/components/start-page/gx-ide-assets/start-page/langs/start-page.lang.zh.json +5 -0
  69. package/dist/collection/components/start-page/start-page.css +100 -13
  70. package/dist/collection/components/start-page/start-page.js +107 -46
  71. package/dist/collection/components/start-page/start-page.js.map +1 -1
  72. package/dist/collection/components/team-dev/server-selector/gx-ide-assets/server-selector/langs/server-selector.lang.ja.json +14 -14
  73. package/dist/collection/components/team-dev/server-selector/server-selector.css +4 -0
  74. package/dist/collection/components/team-dev/server-selector/server-selector.js +70 -32
  75. package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
  76. package/dist/collection/components/team-dev/update/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.ja.json +48 -48
  77. package/dist/collection/components/team-dev/update-partial-selection/update-partial-selection.css +0 -1
  78. package/dist/collection/components/team-dev/version-control/commit/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +60 -60
  79. package/dist/collection/components/ww-files/gx-ide-assets/ww-files/langs/ww-files.lang.ja.json +5 -5
  80. package/dist/collection/pages/assets/images/plugin/python-logo.svg +16 -0
  81. package/dist/collection/testing/locale.e2e.js +0 -5
  82. package/dist/collection/testing/locale.e2e.js.map +1 -1
  83. package/dist/components/form-validation.js +10 -1
  84. package/dist/components/form-validation.js.map +1 -1
  85. package/dist/components/gx-ide-kb-manager-export.js +1 -1
  86. package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
  87. package/dist/components/gx-ide-name-picker.js +2 -1
  88. package/dist/components/gx-ide-name-picker.js.map +1 -1
  89. package/dist/components/gx-ide-plugin-details.js +1 -1
  90. package/dist/components/gx-ide-plugin-details.js.map +1 -1
  91. package/dist/components/gx-ide-references.js +2 -2
  92. package/dist/components/gx-ide-references.js.map +1 -1
  93. package/dist/components/gx-ide-select-user-team.js +1 -1
  94. package/dist/components/gx-ide-select-user-team.js.map +1 -1
  95. package/dist/components/gx-ide-server-selector.js +59 -31
  96. package/dist/components/gx-ide-server-selector.js.map +1 -1
  97. package/dist/components/gx-ide-start-page.js +44 -23
  98. package/dist/components/gx-ide-start-page.js.map +1 -1
  99. package/dist/components/gx-ide-team-dev-update-partial-selection.js +1 -1
  100. package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
  101. package/dist/components/helpers.js +2 -6
  102. package/dist/components/helpers.js.map +1 -1
  103. package/dist/components/select-kb-items.js +19 -13
  104. package/dist/components/select-kb-items.js.map +1 -1
  105. package/dist/esm/{form-validation-cd0215c6.js → form-validation-21ab3766.js} +11 -2
  106. package/dist/esm/form-validation-21ab3766.js.map +1 -0
  107. package/dist/esm/genexus-ide-ui.js +1 -1
  108. package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
  109. package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
  110. package/dist/esm/gx-ide-curl-inspector.entry.js +1 -1
  111. package/dist/esm/gx-ide-json-import.entry.js +1 -1
  112. package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
  113. package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
  114. package/dist/esm/gx-ide-name-picker.entry.js +2 -1
  115. package/dist/esm/gx-ide-name-picker.entry.js.map +1 -1
  116. package/dist/esm/gx-ide-new-environment.entry.js +2 -2
  117. package/dist/esm/gx-ide-new-kb.entry.js +2 -2
  118. package/dist/esm/gx-ide-new-version.entry.js +1 -1
  119. package/dist/esm/gx-ide-object-selector.entry.js +1 -1
  120. package/dist/esm/gx-ide-plugin-details.entry.js +1 -1
  121. package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
  122. package/dist/esm/gx-ide-references.entry.js +2 -2
  123. package/dist/esm/gx-ide-references.entry.js.map +1 -1
  124. package/dist/esm/gx-ide-select-kb-items.entry.js +17 -13
  125. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  126. package/dist/esm/gx-ide-select-user-team.entry.js +1 -1
  127. package/dist/esm/gx-ide-select-user-team.entry.js.map +1 -1
  128. package/dist/esm/gx-ide-server-selector.entry.js +59 -30
  129. package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
  130. package/dist/esm/gx-ide-share-kb.entry.js +1 -1
  131. package/dist/esm/gx-ide-start-page.entry.js +39 -20
  132. package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
  133. package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
  134. package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -2
  135. package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
  136. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +2 -2
  137. package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
  138. package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
  139. package/dist/esm/gx-ide-ww-files.entry.js +1 -1
  140. package/dist/esm/gx-ide-ww-images.entry.js +1 -1
  141. package/dist/esm/{helpers-7960f084.js → helpers-b180a2d1.js} +3 -7
  142. package/dist/esm/helpers-b180a2d1.js.map +1 -0
  143. package/dist/esm/loader.js +1 -1
  144. package/dist/esm/{tabular-grid-render-f7eb612b.js → tabular-grid-render-96d67a8c.js} +2 -2
  145. package/dist/esm/{tabular-grid-render-f7eb612b.js.map → tabular-grid-render-96d67a8c.js.map} +1 -1
  146. package/dist/genexus-ide-ui/genexus-ide-ui.css +0 -107
  147. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  148. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  149. package/dist/genexus-ide-ui/gx-ide-assets/curl-inspector/langs/curl-inspector.lang.ja.json +6 -6
  150. package/dist/genexus-ide-ui/gx-ide-assets/details-acknowledgements/langs/details-acknowledgements.lang.ja.json +10 -10
  151. package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.ja.json +10 -10
  152. package/dist/genexus-ide-ui/gx-ide-assets/json-import/langs/json-import.lang.zh.json +10 -10
  153. package/dist/genexus-ide-ui/gx-ide-assets/name-picker/langs/name-picker.lang.ja.json +5 -5
  154. package/dist/genexus-ide-ui/gx-ide-assets/server-selector/langs/server-selector.lang.ja.json +14 -14
  155. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-result/images/left-side-illustration.svg +4 -26
  156. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-result/images/right-side-illustration.svg +12 -12
  157. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.en.json +1 -1
  158. package/dist/genexus-ide-ui/gx-ide-assets/sign-in-result/langs/sign-in-result.lang.ja.json +4 -4
  159. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.en.json +5 -0
  160. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.ja.json +5 -0
  161. package/dist/genexus-ide-ui/gx-ide-assets/start-page/langs/start-page.lang.zh.json +5 -0
  162. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-commit/langs/team-dev-commit.lang.ja.json +60 -60
  163. package/dist/genexus-ide-ui/gx-ide-assets/team-dev-update/langs/team-dev-update.lang.ja.json +48 -48
  164. package/dist/genexus-ide-ui/gx-ide-assets/ww-files/langs/ww-files.lang.ja.json +5 -5
  165. package/dist/genexus-ide-ui/{p-b7aafbf6.entry.js → p-05fa08d7.entry.js} +2 -2
  166. package/dist/genexus-ide-ui/p-05fa08d7.entry.js.map +1 -0
  167. package/dist/genexus-ide-ui/{p-8c867f9a.entry.js → p-072419f9.entry.js} +2 -2
  168. package/dist/genexus-ide-ui/{p-ed87224f.entry.js → p-083d8e94.entry.js} +3 -3
  169. package/dist/genexus-ide-ui/{p-16a88fc3.entry.js → p-098a7288.entry.js} +2 -2
  170. package/dist/genexus-ide-ui/{p-b80bd861.entry.js → p-0c5b7e75.entry.js} +3 -3
  171. package/dist/genexus-ide-ui/{p-b80bd861.entry.js.map → p-0c5b7e75.entry.js.map} +1 -1
  172. package/dist/genexus-ide-ui/{p-646ddf49.entry.js → p-11a60dbe.entry.js} +2 -2
  173. package/dist/genexus-ide-ui/{p-60302626.entry.js → p-18bbaa49.entry.js} +26 -26
  174. package/dist/genexus-ide-ui/p-18bbaa49.entry.js.map +1 -0
  175. package/dist/genexus-ide-ui/{p-8c15538c.js → p-1972b953.js} +10 -13
  176. package/dist/genexus-ide-ui/p-1972b953.js.map +1 -0
  177. package/dist/genexus-ide-ui/{p-59908901.entry.js → p-24573081.entry.js} +2 -2
  178. package/dist/genexus-ide-ui/{p-198a7cce.entry.js → p-46147e3c.entry.js} +112 -106
  179. package/dist/genexus-ide-ui/p-46147e3c.entry.js.map +1 -0
  180. package/dist/genexus-ide-ui/{p-2b38e18e.entry.js → p-57ed2623.entry.js} +2 -2
  181. package/dist/genexus-ide-ui/{p-0ae0616f.entry.js → p-5f65a4bb.entry.js} +2 -2
  182. package/dist/genexus-ide-ui/{p-443fc479.entry.js → p-5fe6189e.entry.js} +11 -11
  183. package/dist/genexus-ide-ui/{p-12b563fe.entry.js → p-67cf4af1.entry.js} +3 -3
  184. package/dist/genexus-ide-ui/{p-4cc2b3e6.entry.js → p-6f5cf136.entry.js} +6 -6
  185. package/dist/genexus-ide-ui/p-6f5cf136.entry.js.map +1 -0
  186. package/dist/genexus-ide-ui/{p-4b06b578.entry.js → p-7551c2e9.entry.js} +147 -121
  187. package/dist/genexus-ide-ui/p-7551c2e9.entry.js.map +1 -0
  188. package/dist/genexus-ide-ui/{p-4e3ad78d.entry.js → p-a58048e9.entry.js} +3 -3
  189. package/dist/genexus-ide-ui/{p-e2b0ee82.entry.js → p-b25d91e5.entry.js} +577 -549
  190. package/dist/genexus-ide-ui/p-b25d91e5.entry.js.map +1 -0
  191. package/dist/genexus-ide-ui/p-b32b6b1f.js +49 -0
  192. package/dist/genexus-ide-ui/p-b32b6b1f.js.map +1 -0
  193. package/dist/genexus-ide-ui/{p-7f091892.entry.js → p-b6a75c44.entry.js} +10 -10
  194. package/dist/genexus-ide-ui/p-b6a75c44.entry.js.map +1 -0
  195. package/dist/genexus-ide-ui/{p-77c2e69d.js → p-c8270f7d.js} +2 -2
  196. package/dist/genexus-ide-ui/{p-d01bbc7a.entry.js → p-cccd6565.entry.js} +2 -2
  197. package/dist/genexus-ide-ui/{p-a7883e6b.entry.js → p-d18c51fe.entry.js} +3 -3
  198. package/dist/genexus-ide-ui/{p-b34ecbdc.entry.js → p-d24c1115.entry.js} +2 -2
  199. package/dist/genexus-ide-ui/{p-09a634fc.entry.js → p-db07c544.entry.js} +8 -8
  200. package/dist/genexus-ide-ui/{p-4b680e46.entry.js → p-eacc81c8.entry.js} +3 -3
  201. package/dist/genexus-ide-ui/{p-e3bce13e.entry.js → p-ee7232f2.entry.js} +33 -32
  202. package/dist/genexus-ide-ui/p-ee7232f2.entry.js.map +1 -0
  203. package/dist/types/common/form-validation.d.ts +1 -0
  204. package/dist/types/components/select-kb-items/select-kb-items.d.ts +8 -0
  205. package/dist/types/components/start-page/start-page.d.ts +31 -19
  206. package/dist/types/components/team-dev/server-selector/server-selector.d.ts +2 -6
  207. package/dist/types/components.d.ts +38 -372
  208. package/package.json +1 -1
  209. package/dist/cjs/form-validation-178cf461.js.map +0 -1
  210. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +0 -297
  211. package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js.map +0 -1
  212. package/dist/cjs/gx-ide-ai-message.cjs.entry.js +0 -97
  213. package/dist/cjs/gx-ide-ai-message.cjs.entry.js.map +0 -1
  214. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +0 -179
  215. package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js.map +0 -1
  216. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +0 -333
  217. package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js.map +0 -1
  218. package/dist/cjs/helpers-21c9cd02.js.map +0 -1
  219. package/dist/collection/components/ai-assistant/ai-assistant.css +0 -1024
  220. package/dist/collection/components/ai-assistant/ai-assistant.js +0 -526
  221. package/dist/collection/components/ai-assistant/ai-assistant.js.map +0 -1
  222. package/dist/collection/components/ai-assistant/ai-message.css +0 -237
  223. package/dist/collection/components/ai-assistant/ai-message.js +0 -221
  224. package/dist/collection/components/ai-assistant/ai-message.js.map +0 -1
  225. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +0 -9
  226. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +0 -9
  227. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +0 -9
  228. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +0 -4
  229. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +0 -4
  230. package/dist/collection/components/ai-assistant/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +0 -4
  231. package/dist/collection/components/dashboard-home/dashboard-home.css +0 -1069
  232. package/dist/collection/components/dashboard-home/dashboard-home.js +0 -439
  233. package/dist/collection/components/dashboard-home/dashboard-home.js.map +0 -1
  234. package/dist/collection/components/dashboard-home/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.en.json +0 -43
  235. package/dist/collection/components/dashboard-home/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.ja.json +0 -43
  236. package/dist/collection/components/dashboard-home/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.zh.json +0 -43
  237. package/dist/collection/components/modules/manage-module-references-v2/gx-ide-assets/manage-module-references-v2/langs/manage-module-references-v2.lang.en.json +0 -39
  238. package/dist/collection/components/modules/manage-module-references-v2/gx-ide-assets/manage-module-references-v2/langs/manage-module-references-v2.lang.ja.json +0 -39
  239. package/dist/collection/components/modules/manage-module-references-v2/gx-ide-assets/manage-module-references-v2/langs/manage-module-references-v2.lang.zh.json +0 -39
  240. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references-v2.js +0 -498
  241. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references-v2.js.map +0 -1
  242. package/dist/collection/components/modules/manage-module-references-v2/manage-module-references.css +0 -848
  243. package/dist/components/ai-message.js +0 -116
  244. package/dist/components/ai-message.js.map +0 -1
  245. package/dist/components/gx-ide-ai-assistant.d.ts +0 -11
  246. package/dist/components/gx-ide-ai-assistant.js +0 -336
  247. package/dist/components/gx-ide-ai-assistant.js.map +0 -1
  248. package/dist/components/gx-ide-ai-message.d.ts +0 -11
  249. package/dist/components/gx-ide-ai-message.js +0 -8
  250. package/dist/components/gx-ide-ai-message.js.map +0 -1
  251. package/dist/components/gx-ide-dashboard-home.d.ts +0 -11
  252. package/dist/components/gx-ide-dashboard-home.js +0 -215
  253. package/dist/components/gx-ide-dashboard-home.js.map +0 -1
  254. package/dist/components/gx-ide-manage-module-references-v2.d.ts +0 -11
  255. package/dist/components/gx-ide-manage-module-references-v2.js +0 -389
  256. package/dist/components/gx-ide-manage-module-references-v2.js.map +0 -1
  257. package/dist/esm/form-validation-cd0215c6.js.map +0 -1
  258. package/dist/esm/gx-ide-ai-assistant.entry.js +0 -293
  259. package/dist/esm/gx-ide-ai-assistant.entry.js.map +0 -1
  260. package/dist/esm/gx-ide-ai-message.entry.js +0 -93
  261. package/dist/esm/gx-ide-ai-message.entry.js.map +0 -1
  262. package/dist/esm/gx-ide-dashboard-home.entry.js +0 -175
  263. package/dist/esm/gx-ide-dashboard-home.entry.js.map +0 -1
  264. package/dist/esm/gx-ide-manage-module-references-v2.entry.js +0 -329
  265. package/dist/esm/gx-ide-manage-module-references-v2.entry.js.map +0 -1
  266. package/dist/esm/helpers-7960f084.js.map +0 -1
  267. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.en.json +0 -9
  268. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.ja.json +0 -9
  269. package/dist/genexus-ide-ui/gx-ide-assets/ai-assistant/langs/ai-assistant.lang.zh.json +0 -9
  270. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.en.json +0 -4
  271. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.ja.json +0 -4
  272. package/dist/genexus-ide-ui/gx-ide-assets/ai-message/langs/ai-message.lang.zh.json +0 -4
  273. package/dist/genexus-ide-ui/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.en.json +0 -43
  274. package/dist/genexus-ide-ui/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.ja.json +0 -43
  275. package/dist/genexus-ide-ui/gx-ide-assets/dashboard-home/langs/dashboard-home.lang.zh.json +0 -43
  276. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references-v2/langs/manage-module-references-v2.lang.en.json +0 -39
  277. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references-v2/langs/manage-module-references-v2.lang.ja.json +0 -39
  278. package/dist/genexus-ide-ui/gx-ide-assets/manage-module-references-v2/langs/manage-module-references-v2.lang.zh.json +0 -39
  279. package/dist/genexus-ide-ui/p-198a7cce.entry.js.map +0 -1
  280. package/dist/genexus-ide-ui/p-289c3290.js +0 -39
  281. package/dist/genexus-ide-ui/p-289c3290.js.map +0 -1
  282. package/dist/genexus-ide-ui/p-47f78f65.entry.js +0 -473
  283. package/dist/genexus-ide-ui/p-47f78f65.entry.js.map +0 -1
  284. package/dist/genexus-ide-ui/p-4b06b578.entry.js.map +0 -1
  285. package/dist/genexus-ide-ui/p-4cc2b3e6.entry.js.map +0 -1
  286. package/dist/genexus-ide-ui/p-5624d287.entry.js +0 -137
  287. package/dist/genexus-ide-ui/p-5624d287.entry.js.map +0 -1
  288. package/dist/genexus-ide-ui/p-60302626.entry.js.map +0 -1
  289. package/dist/genexus-ide-ui/p-7f091892.entry.js.map +0 -1
  290. package/dist/genexus-ide-ui/p-8c15538c.js.map +0 -1
  291. package/dist/genexus-ide-ui/p-b7aafbf6.entry.js.map +0 -1
  292. package/dist/genexus-ide-ui/p-c1ad1cc6.entry.js +0 -303
  293. package/dist/genexus-ide-ui/p-c1ad1cc6.entry.js.map +0 -1
  294. package/dist/genexus-ide-ui/p-d0c2dde3.entry.js +0 -331
  295. package/dist/genexus-ide-ui/p-d0c2dde3.entry.js.map +0 -1
  296. package/dist/genexus-ide-ui/p-e2b0ee82.entry.js.map +0 -1
  297. package/dist/genexus-ide-ui/p-e3bce13e.entry.js.map +0 -1
  298. package/dist/types/components/ai-assistant/ai-assistant.d.ts +0 -104
  299. package/dist/types/components/ai-assistant/ai-message.d.ts +0 -48
  300. package/dist/types/components/dashboard-home/dashboard-home.d.ts +0 -119
  301. package/dist/types/components/modules/manage-module-references-v2/manage-module-references-v2.d.ts +0 -108
  302. /package/dist/genexus-ide-ui/{p-8c867f9a.entry.js.map → p-072419f9.entry.js.map} +0 -0
  303. /package/dist/genexus-ide-ui/{p-ed87224f.entry.js.map → p-083d8e94.entry.js.map} +0 -0
  304. /package/dist/genexus-ide-ui/{p-16a88fc3.entry.js.map → p-098a7288.entry.js.map} +0 -0
  305. /package/dist/genexus-ide-ui/{p-646ddf49.entry.js.map → p-11a60dbe.entry.js.map} +0 -0
  306. /package/dist/genexus-ide-ui/{p-59908901.entry.js.map → p-24573081.entry.js.map} +0 -0
  307. /package/dist/genexus-ide-ui/{p-2b38e18e.entry.js.map → p-57ed2623.entry.js.map} +0 -0
  308. /package/dist/genexus-ide-ui/{p-0ae0616f.entry.js.map → p-5f65a4bb.entry.js.map} +0 -0
  309. /package/dist/genexus-ide-ui/{p-443fc479.entry.js.map → p-5fe6189e.entry.js.map} +0 -0
  310. /package/dist/genexus-ide-ui/{p-12b563fe.entry.js.map → p-67cf4af1.entry.js.map} +0 -0
  311. /package/dist/genexus-ide-ui/{p-4e3ad78d.entry.js.map → p-a58048e9.entry.js.map} +0 -0
  312. /package/dist/genexus-ide-ui/{p-77c2e69d.js.map → p-c8270f7d.js.map} +0 -0
  313. /package/dist/genexus-ide-ui/{p-d01bbc7a.entry.js.map → p-cccd6565.entry.js.map} +0 -0
  314. /package/dist/genexus-ide-ui/{p-a7883e6b.entry.js.map → p-d18c51fe.entry.js.map} +0 -0
  315. /package/dist/genexus-ide-ui/{p-b34ecbdc.entry.js.map → p-d24c1115.entry.js.map} +0 -0
  316. /package/dist/genexus-ide-ui/{p-09a634fc.entry.js.map → p-db07c544.entry.js.map} +0 -0
  317. /package/dist/genexus-ide-ui/{p-4b680e46.entry.js.map → p-eacc81c8.entry.js.map} +0 -0
@@ -4,7 +4,7 @@ import { c as config } from './config.js';
4
4
  import { L as Locale } from './locale.js';
5
5
  import { f as formatDate } from './helpers.js';
6
6
 
7
- const updatePartialSelectionCss = ":host{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content;overflow:auto}.section{display:contents}.header{justify-content:end}.tabular-grid-main{overflow:auto;block-size:100%}.tabular-grid-main ch-tabular-grid-cell:is(:nth-child(2),:nth-child(3),:nth-child(4)){padding-block:var(--grid-cell__padding-block);padding-inline:var(--grid-cell__padding-inline);align-items:start;justify-content:start;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-inline-size:0}";
7
+ const updatePartialSelectionCss = ":host{display:grid;block-size:100%;grid-template-rows:max-content 1fr max-content;overflow:auto}.section{display:contents}.header{justify-content:end}.tabular-grid-main{overflow:auto;block-size:100%}.tabular-grid-main ch-tabular-grid-cell:is(:nth-child(2),:nth-child(3),:nth-child(4)){padding-block:var(--grid-cell__padding-block);padding-inline:var(--grid-cell__padding-inline);align-items:start;justify-content:start;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-inline-size:0}";
8
8
 
9
9
  var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) {
10
10
  if (kind === "a" && !f)
@@ -1 +1 @@
1
- {"file":"gx-ide-team-dev-update-partial-selection.js","mappings":"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","names":["GxIdeTeamDevUpdatePartialSelection"],"sources":["src/components/team-dev/update-partial-selection/update-partial-selection.scss?tag=gx-ide-team-dev-update-partial-selection&encapsulation=shadow","src/components/team-dev/update-partial-selection/update-partial-selection.tsx"],"sourcesContent":["@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n justify-content: end;\n}\n\n.tabular-grid-main {\n overflow: auto;\n block-size: 100%;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-main\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n","// Stencil\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n getAssetPath,\n h\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport { Locale } from \"../../../common/locale\";\nimport { formatDate } from \"../../../common/helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/radio-group\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_ADD_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"add-circle\",\n colorType: \"primary\"\n});\n@Component({\n tag: \"gx-ide-team-dev-update-partial-selection\",\n styleUrl: \"update-partial-selection.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-update-partial-selection\"]\n})\nexport class GxIdeTeamDevUpdatePartialSelection {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/team-dev-update-partial-selection/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeTeamDevUpdatePartialSelectionElement;\n\n #chGridEl!: HTMLChTabularGridElement;\n\n /**\n * Selected objects in objects table\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * Callback invoked to return a list of new objects to populate objects table.\n */\n @Prop() readonly addCallback!: AddCallback;\n\n /**\n * Callback invoked when the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n *Callback invoked when confirm action is executed passing the selected objects ids.\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * Current objects selection in the grid\n */\n @Prop({ mutable: true }) selection: ObjectData[] = [];\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n componentDidLoad() {\n this.#listenChanges();\n }\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = (): void => {\n if (this.confirmCallback) {\n const allRowsIds: string[] = [];\n this.selection.forEach(row => {\n allRowsIds.push(row.id);\n });\n\n this.confirmCallback(allRowsIds);\n }\n };\n\n #getObjectsHandler = (): void => {\n this.addCallback().then((items: ObjectData[]) => {\n if (items?.length > 0) {\n this.selection = [...this.selection, ...items];\n this.selectedObjectsIds = [];\n }\n });\n };\n\n #listenChanges = (): void => {\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n });\n };\n\n #removeAllHandler = (): void => {\n this.selection = [];\n };\n\n #removeSelectedObjectsHandler = (): void => {\n const selection = this.selection.filter(\n item => !this.selectedObjectsIds.includes(item.id)\n );\n this.selection = selection;\n this.selectedObjectsIds = [];\n };\n\n #renderObjects = (): Element => {\n return (\n <ch-tabular-grid\n allowColumnReorder={false}\n columnResizeMode=\"single\"\n class=\"tabular-grid tabular-grid-main\"\n row-selection-mode=\"multiple\"\n keyboardNavigationMode=\"focus\"\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n part=\"ch-grid-objects\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.minContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.name}\n settingable={false}\n size=\"1fr\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.type}\n settingable={false}\n size=\"minmax(120px,auto)\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.description}\n settingable={false}\n size=\"minmax(120px,auto)\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.modifiedOn}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.selection.map((obj: ObjectData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n key={obj.id}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.typeIcon} class=\"icon-md\"></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.modifiedOn)}`}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n render(): void {\n const buttonRemoveSelectedDisabled = !(this.selectedObjectsIds.length > 0);\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group control-header header header-two-cols spacing-body-block-start spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n // remove selected button\n class=\"button-secondary\"\n onClick={\n !buttonRemoveSelectedDisabled &&\n this.#removeSelectedObjectsHandler\n }\n part=\"remove\"\n disabled={buttonRemoveSelectedDisabled}\n >\n {this.#_componentLocale.btnRemoveSelectedObjects}\n </button>\n\n <button\n // add button\n class=\"button-secondary button-icon-and-text\"\n onClick={this.#getObjectsHandler}\n part=\"add\"\n >\n <ch-image\n class=\"icon-sm\"\n src={GEMINI_TOOLS_ADD_ICON}\n ></ch-image>\n {this.#_componentLocale.btnAddObject}\n </button>\n </div>\n </header>\n {this.#renderObjects()}\n <footer class=\"control-footer control-footer-space-between spacing-body-block-end spacing-body-inline\">\n <button\n // remove all button\n class=\"button-tertiary\"\n onClick={this.#removeAllHandler}\n disabled={!(this.selection.length > 0)}\n part=\"clear\"\n >\n {this.#_componentLocale.footer.btnRemoveAll}\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"cancel\"\n >\n {this.#_componentLocale.footer.btnCancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.#confirmHandler}\n part=\"confirm\"\n >\n {this.#_componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type AddCallback = () => Promise<ObjectData[]>;\nexport type CancelCallback = () => Promise<void>;\nexport type ConfirmCallback = (ids: string[]) => Promise<void>;\n\nexport interface ObjectData {\n id: string;\n typeIcon: string;\n name: string;\n type: string;\n description: string;\n modifiedOn: Date;\n}\n"],"version":3}
1
+ {"file":"gx-ide-team-dev-update-partial-selection.js","mappings":"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","names":["GxIdeTeamDevUpdatePartialSelection"],"sources":["src/components/team-dev/update-partial-selection/update-partial-selection.scss?tag=gx-ide-team-dev-update-partial-selection&encapsulation=shadow","src/components/team-dev/update-partial-selection/update-partial-selection.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 1fr max-content;\n overflow: auto;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n justify-content: end;\n}\n\n.tabular-grid-main {\n overflow: auto;\n block-size: 100%;\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-main\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 2,\n 3,\n 4\n )\n);\n","// Stencil\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n State,\n getAssetPath,\n h\n} from \"@stencil/core\";\n\n// Other Libraries\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n\n// Custom Imports\nimport { config } from \"../../../common/config\";\nimport { Locale } from \"../../../common/locale\";\nimport { formatDate } from \"../../../common/helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/edit\",\n \"components/radio-group\",\n \"components/tabular-grid\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_ADD_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"add-circle\",\n colorType: \"primary\"\n});\n@Component({\n tag: \"gx-ide-team-dev-update-partial-selection\",\n styleUrl: \"update-partial-selection.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-update-partial-selection\"]\n})\nexport class GxIdeTeamDevUpdatePartialSelection {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/team-dev-update-partial-selection/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeTeamDevUpdatePartialSelectionElement;\n\n #chGridEl!: HTMLChTabularGridElement;\n\n /**\n * Selected objects in objects table\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * Callback invoked to return a list of new objects to populate objects table.\n */\n @Prop() readonly addCallback!: AddCallback;\n\n /**\n * Callback invoked when the user wishes to cancel the selection of objects.\n */\n @Prop() readonly cancelCallback!: CancelCallback;\n\n /**\n *Callback invoked when confirm action is executed passing the selected objects ids.\n */\n @Prop() readonly confirmCallback!: ConfirmCallback;\n\n /**\n * Current objects selection in the grid\n */\n @Prop({ mutable: true }) selection: ObjectData[] = [];\n\n /**\n * Emitted once just after the component is fully loaded and the first render() occurs.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n componentDidLoad() {\n this.#listenChanges();\n }\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n }\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n #cancelHandler = (): void => {\n this.cancelCallback();\n };\n\n #confirmHandler = (): void => {\n if (this.confirmCallback) {\n const allRowsIds: string[] = [];\n this.selection.forEach(row => {\n allRowsIds.push(row.id);\n });\n\n this.confirmCallback(allRowsIds);\n }\n };\n\n #getObjectsHandler = (): void => {\n this.addCallback().then((items: ObjectData[]) => {\n if (items?.length > 0) {\n this.selection = [...this.selection, ...items];\n this.selectedObjectsIds = [];\n }\n });\n };\n\n #listenChanges = (): void => {\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n });\n };\n\n #removeAllHandler = (): void => {\n this.selection = [];\n };\n\n #removeSelectedObjectsHandler = (): void => {\n const selection = this.selection.filter(\n item => !this.selectedObjectsIds.includes(item.id)\n );\n this.selection = selection;\n this.selectedObjectsIds = [];\n };\n\n #renderObjects = (): Element => {\n return (\n <ch-tabular-grid\n allowColumnReorder={false}\n columnResizeMode=\"single\"\n class=\"tabular-grid tabular-grid-main\"\n row-selection-mode=\"multiple\"\n keyboardNavigationMode=\"focus\"\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n part=\"ch-grid-objects\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.minContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.name}\n settingable={false}\n size=\"1fr\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.type}\n settingable={false}\n size=\"minmax(120px,auto)\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.description}\n settingable={false}\n size=\"minmax(120px,auto)\"\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this.#_componentLocale.tableHead.modifiedOn}\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.selection.map((obj: ObjectData) => (\n <ch-tabular-grid-row\n rowid={obj.id}\n key={obj.id}\n class=\"tabular-grid-row\"\n >\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.typeIcon} class=\"icon-md\"></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.type}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {`${formatDate(obj.modifiedOn)}`}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n );\n };\n\n render(): void {\n const buttonRemoveSelectedDisabled = !(this.selectedObjectsIds.length > 0);\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header field-group control-header header header-two-cols spacing-body-block-start spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n // remove selected button\n class=\"button-secondary\"\n onClick={\n !buttonRemoveSelectedDisabled &&\n this.#removeSelectedObjectsHandler\n }\n part=\"remove\"\n disabled={buttonRemoveSelectedDisabled}\n >\n {this.#_componentLocale.btnRemoveSelectedObjects}\n </button>\n\n <button\n // add button\n class=\"button-secondary button-icon-and-text\"\n onClick={this.#getObjectsHandler}\n part=\"add\"\n >\n <ch-image\n class=\"icon-sm\"\n src={GEMINI_TOOLS_ADD_ICON}\n ></ch-image>\n {this.#_componentLocale.btnAddObject}\n </button>\n </div>\n </header>\n {this.#renderObjects()}\n <footer class=\"control-footer control-footer-space-between spacing-body-block-end spacing-body-inline\">\n <button\n // remove all button\n class=\"button-tertiary\"\n onClick={this.#removeAllHandler}\n disabled={!(this.selection.length > 0)}\n part=\"clear\"\n >\n {this.#_componentLocale.footer.btnRemoveAll}\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // cancel button\n class=\"button-secondary\"\n onClick={this.#cancelHandler}\n part=\"cancel\"\n >\n {this.#_componentLocale.footer.btnCancel}\n </button>\n\n <button\n // confirm button\n class=\"button-primary\"\n onClick={this.#confirmHandler}\n part=\"confirm\"\n >\n {this.#_componentLocale.footer.btnConfirm}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type AddCallback = () => Promise<ObjectData[]>;\nexport type CancelCallback = () => Promise<void>;\nexport type ConfirmCallback = (ids: string[]) => Promise<void>;\n\nexport interface ObjectData {\n id: string;\n typeIcon: string;\n name: string;\n type: string;\n description: string;\n modifiedOn: Date;\n}\n"],"version":3}
@@ -67,14 +67,10 @@ const formatDate = (date, type = "date-time") => {
67
67
  }
68
68
  else if (type === "date-time-short") {
69
69
  // No seconds
70
- if (locale === "es-ES") {
71
- formattedDate = `${year}-${month}-${day} ${time}`;
72
- }
73
- else {
74
- formattedDate = `${month}/${day}/${year} ${time}`;
75
- }
70
+ formattedDate = `${year}/${month}/${day} ${time}`;
76
71
  }
77
72
  else {
73
+ // pretty
78
74
  const daysPassedFromToday = daysFromToday(date);
79
75
  const today = new Date();
80
76
  const currentYear = today.getFullYear();
@@ -1 +1 @@
1
- {"file":"helpers.js","mappings":"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","names":[],"sources":["src/common/helpers.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nimport { GxOption } from \"./types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n if (locale === \"es-ES\") {\n formattedDate = `${year}-${month}-${day} ${time}`;\n } else {\n formattedDate = `${month}/${day}/${year} ${time}`;\n }\n } else if (\"pretty\") {\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\n }));\n\nexport const renderChCheckboxItems = (\n options: GxOption[] | undefined,\n frontEndCheckboxInputHandler: (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => void,\n checkedIds: string[]\n): HTMLChCheckboxElement[] => {\n return options?.map(option => {\n const value = checkedIds?.find(\n id => option.value === id || option.id === id\n );\n return (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={value}\n onInput={frontEndCheckboxInputHandler}\n startImgSrc={option.iconName}\n key={option.value || option.id}\n ></ch-checkbox>\n );\n });\n};\n"],"version":3}
1
+ {"file":"helpers.js","mappings":";;AAWA,MAAM,UAAU,GAAG;IACjB,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,UAAU;CACX,CAAC;AA8EF,MAAM,aAAa,GAAG,CAAC,IAAU;IAC/B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;;IAEzB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;;IAExD,MAAM,cAAc,GAAG,cAAc,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF;AACA;AACA;AAEA,MAAM,OAAO,GAAG,CAAC,IAAU;IACzB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAU;IAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC7B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,IAAI,SAAS,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;QACpD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;MAEW,UAAU,GAAG,CACxB,IAAU,EACV,OAAuB,WAAW;;IAElC,IAAI,aAAa,CAAC;;;IAGlB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;QACvC,OAAO,EAAE,CAAC;KACX;;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,cAAc,CAAC;KACvB;IACD,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,MAAM,IAAI,GAAG,MAAA,QAAQ;SAClB,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC/B,YAAY,CAAC,MAAM,CAAC,0CACnB,OAAO,EAAE,CAAC;IACd,IAAI,IAAI,KAAK,IAAI,EAAE;QACjB,MAAM,GAAG,OAAO,CAAC;KAClB;IACD,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,OAAO,EAAE,CAAC;IACnC,IAAI,IAAI,KAAK,WAAW,EAAE;QACxB,aAAa,IAAI,KAAK,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;KACnD;SAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;;QAErC,aAAa,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;KACnD;SAAM;;QAEL,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YACjB,OAAO,SAAS,IAAI,EAAE,CAAC;SACxB;aAAM,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,aAAa,IAAI,EAAE,CAAC;SAC5B;aAAM,IAAI,mBAAmB,IAAI,CAAC,EAAE;;YAEnC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;SACzB;aAAM,IAAI,WAAW,KAAK,IAAI,EAAE;;YAE/B,IAAI,MAAM,KAAK,OAAO,EAAE;gBACtB,aAAa,GAAG,GAAG,GAAG,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;oBACxD,KAAK,EAAE,MAAM;iBACd,CAAC,IAAI,IAAI,EAAE,CAAC;aACd;iBAAM;gBACL,aAAa,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;oBAC9C,KAAK,EAAE,MAAM;iBACd,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;aACrB;SACF;aAAM;;YAEL,aAAa,GAAG,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;SACrD;KACF;IACD,OAAO,aAAa,CAAC;AACvB,EAAE;AAyCK,MAAM,YAAY,GAAG,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;;;;;;MAOa,MAAM,GAAG,UAAU,IAAY,EAAE,WAAmB;IAC/D,IAAI,IAAI,IAAI,WAAW,EAAE;QACvB,MAAM,kBAAkB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAChD,QACE,YACE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,gCAAgC,CAAC,GACvD,EACR;KACH;SAAM;QACL,OAAO,IAAI,CAAC;KACb;AACH,EAAE;MAEW,0BAA0B,GAAG,CACxC,SAAuB,EACvB,GAAgB;IAEhB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3C,OAAO,IAAI,CAAC;KACb;AACH,EAAE;MAEW,6BAA6B,GAAG,CAC3C,OAAmB,KAEnB,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK;IACrB,KAAK,EAAE,MAAM,CAAC,EAAE;IAChB,OAAO,EAAE,MAAM,CAAC,KAAK;;CAEtB,CAAC,EAAE;MAEO,qBAAqB,GAAG,CACnC,OAA+B,EAC/B,4BAES,EACT,UAAoB;IAEpB,OAAO,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,MAAM;QACxB,MAAM,KAAK,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAC5B,EAAE,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,CAC9C,CAAC;QACF,QACE,mBACE,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,KAAK,EAAC,UAAU,EAChB,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,EACvC,OAAO,EAAE,MAAM,CAAC,KAAK,EACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAC5B,GAAG,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,GACjB,EACf;KACH,CAAC,CAAC;AACL;;;;","names":[],"sources":["src/common/helpers.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nimport { GxOption } from \"./types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n formattedDate = `${year}/${month}/${day} ${time}`;\n } else {\n // pretty\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\n }));\n\nexport const renderChCheckboxItems = (\n options: GxOption[] | undefined,\n frontEndCheckboxInputHandler: (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => void,\n checkedIds: string[]\n): HTMLChCheckboxElement[] => {\n return options?.map(option => {\n const value = checkedIds?.find(\n id => option.value === id || option.id === id\n );\n return (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={value}\n onInput={frontEndCheckboxInputHandler}\n startImgSrc={option.iconName}\n key={option.value || option.id}\n ></ch-checkbox>\n );\n });\n};\n"],"version":3}
@@ -243,7 +243,7 @@ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) ||
243
243
  throw new TypeError("Cannot read private member from an object whose class did not declare it");
244
244
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
245
245
  };
246
- var _GxIdeSelectKbItems__componentLocale, _GxIdeSelectKbItems_checkedNodesIds, _GxIdeSelectKbItems_chShortcutsEl, _GxIdeSelectKbItems_selectedNodesIds, _GxIdeSelectKbItems_shortcutsSrc, _GxIdeSelectKbItems_updatedModelList, _GxIdeSelectKbItems_viewItemsAsModel, _GxIdeSelectKbItems_treeViewRenderEl, _GxIdeSelectKbItems_cancelHandler, _GxIdeSelectKbItems_checkedItemsChangeHandler, _GxIdeSelectKbItems_confirmHandler, _GxIdeSelectKbItems_contextMenuHandler, _GxIdeSelectKbItems_executeDialogAction, _GxIdeSelectKbItems_patternSearchValueChangedHandler, _GxIdeSelectKbItems_renderActionButtons, _GxIdeSelectKbItems_renderFooter, _GxIdeSelectKbItems_selectedItemsChangeHandler, _GxIdeSelectKbItems_toggleAndSelectNodesInModelItems, _GxIdeSelectKbItems_toggleCheckedNodesInModelItems, _GxIdeSelectKbItems_updateViews, _GxIdeSelectKbItems_viewItemsAsChangedHandler, _GxIdeSelectKbItems_toggleCheckboxesChangedHandler, _GxIdeSelectKbItems_scrollIntoActiveVersionNode;
246
+ var _GxIdeSelectKbItems__componentLocale, _GxIdeSelectKbItems_chShortcutsEl, _GxIdeSelectKbItems_selectedNodesIds, _GxIdeSelectKbItems_shortcutsSrc, _GxIdeSelectKbItems_updatedModelList, _GxIdeSelectKbItems_viewItemsAsModel, _GxIdeSelectKbItems_treeViewRenderEl, _GxIdeSelectKbItems_cancelHandler, _GxIdeSelectKbItems_checkedItemsChangeHandler, _GxIdeSelectKbItems_confirmHandler, _GxIdeSelectKbItems_contextMenuHandler, _GxIdeSelectKbItems_executeDialogAction, _GxIdeSelectKbItems_patternSearchValueChangedHandler, _GxIdeSelectKbItems_renderActionButtons, _GxIdeSelectKbItems_renderFooter, _GxIdeSelectKbItems_selectedItemsChangeHandler, _GxIdeSelectKbItems_toggleAndSelectNodesInModelItems, _GxIdeSelectKbItems_toggleCheckedNodesInModelItems, _GxIdeSelectKbItems_updateViews, _GxIdeSelectKbItems_viewItemsAsChangedHandler, _GxIdeSelectKbItems_toggleCheckboxesChangedHandler, _GxIdeSelectKbItems_scrollIntoActiveVersionNode;
247
247
  const CSS_BUNDLES = [
248
248
  "resets/box-sizing",
249
249
  "chameleon/scrollbar",
@@ -268,7 +268,6 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
268
268
  this.__registerHost();
269
269
  this.__attachShadow();
270
270
  _GxIdeSelectKbItems__componentLocale.set(this, void 0);
271
- _GxIdeSelectKbItems_checkedNodesIds.set(this, []);
272
271
  _GxIdeSelectKbItems_chShortcutsEl.set(this, void 0);
273
272
  _GxIdeSelectKbItems_selectedNodesIds.set(this, []);
274
273
  _GxIdeSelectKbItems_shortcutsSrc.set(this, getAssetPath(`./gx-ide-assets/select-kb-items/shortcuts.json`));
@@ -285,15 +284,15 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
285
284
  e.detail.forEach(node => {
286
285
  node.item.checked && checkedNodesIds.push(node.item.id);
287
286
  });
288
- __classPrivateFieldSet(this, _GxIdeSelectKbItems_checkedNodesIds, checkedNodesIds, "f");
289
- __classPrivateFieldSet(this, _GxIdeSelectKbItems_updatedModelList, checkItems(this.itemsList, __classPrivateFieldGet(this, _GxIdeSelectKbItems_checkedNodesIds, "f")), "f");
287
+ this.checkedNodesIds = checkedNodesIds;
288
+ __classPrivateFieldSet(this, _GxIdeSelectKbItems_updatedModelList, checkItems(this.itemsList, this.checkedNodesIds), "f");
290
289
  if (this.checkedChanged) {
291
- this.checkedChanged(__classPrivateFieldGet(this, _GxIdeSelectKbItems_checkedNodesIds, "f"));
290
+ this.checkedChanged(this.checkedNodesIds);
292
291
  }
293
292
  });
294
293
  _GxIdeSelectKbItems_confirmHandler.set(this, () => {
295
294
  if (this.confirmCallback) {
296
- this.confirmCallback(__classPrivateFieldGet(this, _GxIdeSelectKbItems_checkedNodesIds, "f"));
295
+ this.confirmCallback(this.checkedNodesIds);
297
296
  }
298
297
  });
299
298
  _GxIdeSelectKbItems_contextMenuHandler.set(this, async (e) => {
@@ -323,7 +322,7 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
323
322
  });
324
323
  _GxIdeSelectKbItems_executeDialogAction.set(this, (callback) => {
325
324
  return () => {
326
- callback(__classPrivateFieldGet(this, _GxIdeSelectKbItems_checkedNodesIds, "f"), __classPrivateFieldGet(this, _GxIdeSelectKbItems_selectedNodesIds, "f"));
325
+ callback(this.checkedNodesIds, __classPrivateFieldGet(this, _GxIdeSelectKbItems_selectedNodesIds, "f"));
327
326
  };
328
327
  });
329
328
  _GxIdeSelectKbItems_patternSearchValueChangedHandler.set(this, (event) => {
@@ -335,7 +334,8 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
335
334
  })));
336
335
  });
337
336
  _GxIdeSelectKbItems_renderFooter.set(this, () => {
338
- return (h("footer", { class: "footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between" }, __classPrivateFieldGet(this, _GxIdeSelectKbItems_renderActionButtons, "f").call(this), h("div", { class: "buttons-spacer " }, this.cancelCallback && (h("button", { class: "button-secondary", part: "cancel-button", onClick: __classPrivateFieldGet(this, _GxIdeSelectKbItems_cancelHandler, "f") }, __classPrivateFieldGet(this, _GxIdeSelectKbItems__componentLocale, "f").footer.cancel)), this.confirmCallback && (h("button", { class: "button-primary", part: "confirm-button", onClick: __classPrivateFieldGet(this, _GxIdeSelectKbItems_confirmHandler, "f"), disabled: this.loading }, __classPrivateFieldGet(this, _GxIdeSelectKbItems__componentLocale, "f").footer.select)))));
337
+ var _a;
338
+ return (h("footer", { class: "footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between" }, __classPrivateFieldGet(this, _GxIdeSelectKbItems_renderActionButtons, "f").call(this), h("div", { class: "buttons-spacer " }, this.cancelCallback && (h("button", { class: "button-secondary", part: "cancel-button", onClick: __classPrivateFieldGet(this, _GxIdeSelectKbItems_cancelHandler, "f") }, __classPrivateFieldGet(this, _GxIdeSelectKbItems__componentLocale, "f").footer.cancel)), this.confirmCallback && (h("button", { class: "button-primary", part: "confirm-button", onClick: __classPrivateFieldGet(this, _GxIdeSelectKbItems_confirmHandler, "f"), disabled: this.loading || ((_a = this.checkedNodesIds) === null || _a === void 0 ? void 0 : _a.length) === 0 }, __classPrivateFieldGet(this, _GxIdeSelectKbItems__componentLocale, "f").footer.select)))));
339
339
  });
340
340
  _GxIdeSelectKbItems_selectedItemsChangeHandler.set(this, (e) => {
341
341
  const selectedNodesIds = [];
@@ -370,7 +370,7 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
370
370
  this.nodesVersionsViewType = selectedViewType;
371
371
  if (this.nodesVersionsViewType === "tree") {
372
372
  await __classPrivateFieldGet(this, _GxIdeSelectKbItems_toggleAndSelectNodesInModelItems, "f").call(this, __classPrivateFieldGet(this, _GxIdeSelectKbItems_selectedNodesIds, "f"));
373
- await __classPrivateFieldGet(this, _GxIdeSelectKbItems_toggleCheckedNodesInModelItems, "f").call(this, __classPrivateFieldGet(this, _GxIdeSelectKbItems_checkedNodesIds, "f"));
373
+ await __classPrivateFieldGet(this, _GxIdeSelectKbItems_toggleCheckedNodesInModelItems, "f").call(this, this.checkedNodesIds);
374
374
  }
375
375
  __classPrivateFieldGet(this, _GxIdeSelectKbItems_updateViews, "f").call(this, __classPrivateFieldGet(this, _GxIdeSelectKbItems_updatedModelList, "f"));
376
376
  });
@@ -388,13 +388,14 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
388
388
  }
389
389
  });
390
390
  this.activeItemNode = undefined;
391
+ this.checkedNodesIds = [];
391
392
  this.renderFooter = false;
392
393
  this.nodeListFlattenedTreeModel = [];
393
394
  this.loading = true;
394
395
  this.nodesVersionsViewType = "tree";
395
396
  this.nodeVersionsListTreeModel = [];
396
397
  this.searchPatternValue = null;
397
- this.toggleCheckboxes = true;
398
+ this.toggleCheckboxes = undefined;
398
399
  this.activeItemCallback = undefined;
399
400
  this.cancelCallback = undefined;
400
401
  this.checkboxType = undefined;
@@ -404,6 +405,7 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
404
405
  this.dialogActions = [];
405
406
  this.itemContextMenuCallback = undefined;
406
407
  this.itemsList = [];
408
+ this.showToggleCheckboxes = true;
407
409
  this.multiSelection = false;
408
410
  this.showActiveItemLink = false;
409
411
  this.selectionChanged = undefined;
@@ -418,6 +420,7 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
418
420
  }
419
421
  async componentWillLoad() {
420
422
  __classPrivateFieldSet(this, _GxIdeSelectKbItems__componentLocale, await Locale.getComponentStrings(this.el), "f");
423
+ this.toggleCheckboxes = this.showToggleCheckboxes;
421
424
  __classPrivateFieldSet(this, _GxIdeSelectKbItems_viewItemsAsModel, [
422
425
  { value: VIEW_AS_TREE_ID, caption: __classPrivateFieldGet(this, _GxIdeSelectKbItems__componentLocale, "f").main.tree },
423
426
  { value: VIEW_AS_LIST_ID, caption: "List" }
@@ -457,16 +460,17 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
457
460
  */
458
461
  async updateCheckedItems(checkedItemsIds) {
459
462
  // first clear checks
460
- __classPrivateFieldGet(this, _GxIdeSelectKbItems_treeViewRenderEl, "f").updateItemsProperties(__classPrivateFieldGet(this, _GxIdeSelectKbItems_selectedNodesIds, "f"), {
463
+ __classPrivateFieldGet(this, _GxIdeSelectKbItems_treeViewRenderEl, "f").updateItemsProperties(this.checkedNodesIds, {
461
464
  checked: false
462
465
  });
463
466
  // then select
464
467
  __classPrivateFieldGet(this, _GxIdeSelectKbItems_treeViewRenderEl, "f").updateItemsProperties(checkedItemsIds, {
465
468
  checked: true
466
469
  });
470
+ this.checkedNodesIds = checkedItemsIds;
467
471
  }
468
472
  render() {
469
- return (h(Host, { class: { "widget": true, "has-footer": this.renderFooter } }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeSelectKbItems_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeSelectKbItems_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { part: "header", class: "header control-header field-group spacing-body-block-start spacing-body-inline" }, h("div", { class: "header__first-row" }, h("div", { class: "field field-inline" }, h("label", { class: "label", htmlFor: "view-mode" }, "Select view mode:"), h("ch-radio-group-render", { class: "radio-group dummy-control-block-size", id: "view-mode", model: __classPrivateFieldGet(this, _GxIdeSelectKbItems_viewItemsAsModel, "f"), onChange: __classPrivateFieldGet(this, _GxIdeSelectKbItems_viewItemsAsChangedHandler, "f"), value: __classPrivateFieldGet(this, _GxIdeSelectKbItems_viewItemsAsModel, "f")[0].value })), this.checkboxType !== "none" && (h("div", { class: "field field-inline" }, h("label", { class: "label", htmlFor: "toggle-checkboxes" }, "Toggle Checkboxes"), h("ch-checkbox", { class: "checkbox dummy-control-block-size", id: "toggle-checkboxes", checkedValue: TOGGLE_CHECKBOXES_CHECKED_VALUE, value: TOGGLE_CHECKBOXES_CHECKED_VALUE, onInput: __classPrivateFieldGet(this, _GxIdeSelectKbItems_toggleCheckboxesChangedHandler, "f") })))), h("div", { class: {
473
+ return (h(Host, { class: { "widget": true, "has-footer": this.renderFooter } }, h("ch-theme", { model: CSS_BUNDLES }), h("ch-shortcuts", { src: __classPrivateFieldGet(this, _GxIdeSelectKbItems_shortcutsSrc, "f"), ref: (el) => (__classPrivateFieldSet(this, _GxIdeSelectKbItems_chShortcutsEl, el, "f")) }), h("section", { class: "section" }, h("header", { part: "header", class: "header control-header field-group spacing-body-block-start spacing-body-inline" }, h("div", { class: "header__first-row" }, h("div", { class: "field field-inline" }, h("label", { class: "label", htmlFor: "view-mode" }, "Select view mode:"), h("ch-radio-group-render", { class: "radio-group dummy-control-block-size", id: "view-mode", model: __classPrivateFieldGet(this, _GxIdeSelectKbItems_viewItemsAsModel, "f"), onChange: __classPrivateFieldGet(this, _GxIdeSelectKbItems_viewItemsAsChangedHandler, "f"), value: __classPrivateFieldGet(this, _GxIdeSelectKbItems_viewItemsAsModel, "f")[0].value })), this.checkboxType !== "none" && this.showToggleCheckboxes && (h("div", { class: "field field-inline" }, h("label", { class: "label", htmlFor: "toggle-checkboxes" }, "Toggle Checkboxes"), h("ch-checkbox", { class: "checkbox dummy-control-block-size", id: "toggle-checkboxes", checkedValue: TOGGLE_CHECKBOXES_CHECKED_VALUE, value: TOGGLE_CHECKBOXES_CHECKED_VALUE, onInput: __classPrivateFieldGet(this, _GxIdeSelectKbItems_toggleCheckboxesChangedHandler, "f") })))), h("div", { class: {
470
474
  "header__second-row": true,
471
475
  "header__second-row--one-row": !this.showActiveItemLink
472
476
  } }, h("ch-edit", { class: "input", placeholder: __classPrivateFieldGet(this, _GxIdeSelectKbItems__componentLocale, "f").header.searchPatternPlaceholder, startImgSrc: SYSTEM_SEARCH_ICON, onInput: __classPrivateFieldGet(this, _GxIdeSelectKbItems_patternSearchValueChangedHandler, "f"), accessibleName: "search pattern" }), this.activeItemNode && this.showActiveItemLink && (h("div", { class: "active-item" }, h("span", { class: "active-item__icon-container" }, h("ch-image", { class: "icon-md active-item__icon", src: this.activeItemNode.iconStart ||
@@ -492,10 +496,12 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
492
496
  "dialogActions": [16],
493
497
  "itemContextMenuCallback": [16],
494
498
  "itemsList": [16],
499
+ "showToggleCheckboxes": [4, "show-toggle-checkboxes"],
495
500
  "multiSelection": [4, "multi-selection"],
496
501
  "showActiveItemLink": [4, "show-active-item-link"],
497
502
  "selectionChanged": [16],
498
503
  "activeItemNode": [32],
504
+ "checkedNodesIds": [32],
499
505
  "renderFooter": [32],
500
506
  "nodeListFlattenedTreeModel": [32],
501
507
  "loading": [32],
@@ -509,7 +515,7 @@ const GxIdeSelectKbItems = /*@__PURE__*/ proxyCustomElement(class GxIdeSelectKbI
509
515
  }, undefined, {
510
516
  "itemsList": ["watchNodeListHandler"]
511
517
  }]);
512
- _GxIdeSelectKbItems__componentLocale = new WeakMap(), _GxIdeSelectKbItems_checkedNodesIds = new WeakMap(), _GxIdeSelectKbItems_chShortcutsEl = new WeakMap(), _GxIdeSelectKbItems_selectedNodesIds = new WeakMap(), _GxIdeSelectKbItems_shortcutsSrc = new WeakMap(), _GxIdeSelectKbItems_updatedModelList = new WeakMap(), _GxIdeSelectKbItems_viewItemsAsModel = new WeakMap(), _GxIdeSelectKbItems_treeViewRenderEl = new WeakMap(), _GxIdeSelectKbItems_cancelHandler = new WeakMap(), _GxIdeSelectKbItems_checkedItemsChangeHandler = new WeakMap(), _GxIdeSelectKbItems_confirmHandler = new WeakMap(), _GxIdeSelectKbItems_contextMenuHandler = new WeakMap(), _GxIdeSelectKbItems_executeDialogAction = new WeakMap(), _GxIdeSelectKbItems_patternSearchValueChangedHandler = new WeakMap(), _GxIdeSelectKbItems_renderActionButtons = new WeakMap(), _GxIdeSelectKbItems_renderFooter = new WeakMap(), _GxIdeSelectKbItems_selectedItemsChangeHandler = new WeakMap(), _GxIdeSelectKbItems_toggleAndSelectNodesInModelItems = new WeakMap(), _GxIdeSelectKbItems_toggleCheckedNodesInModelItems = new WeakMap(), _GxIdeSelectKbItems_updateViews = new WeakMap(), _GxIdeSelectKbItems_viewItemsAsChangedHandler = new WeakMap(), _GxIdeSelectKbItems_toggleCheckboxesChangedHandler = new WeakMap(), _GxIdeSelectKbItems_scrollIntoActiveVersionNode = new WeakMap();
518
+ _GxIdeSelectKbItems__componentLocale = new WeakMap(), _GxIdeSelectKbItems_chShortcutsEl = new WeakMap(), _GxIdeSelectKbItems_selectedNodesIds = new WeakMap(), _GxIdeSelectKbItems_shortcutsSrc = new WeakMap(), _GxIdeSelectKbItems_updatedModelList = new WeakMap(), _GxIdeSelectKbItems_viewItemsAsModel = new WeakMap(), _GxIdeSelectKbItems_treeViewRenderEl = new WeakMap(), _GxIdeSelectKbItems_cancelHandler = new WeakMap(), _GxIdeSelectKbItems_checkedItemsChangeHandler = new WeakMap(), _GxIdeSelectKbItems_confirmHandler = new WeakMap(), _GxIdeSelectKbItems_contextMenuHandler = new WeakMap(), _GxIdeSelectKbItems_executeDialogAction = new WeakMap(), _GxIdeSelectKbItems_patternSearchValueChangedHandler = new WeakMap(), _GxIdeSelectKbItems_renderActionButtons = new WeakMap(), _GxIdeSelectKbItems_renderFooter = new WeakMap(), _GxIdeSelectKbItems_selectedItemsChangeHandler = new WeakMap(), _GxIdeSelectKbItems_toggleAndSelectNodesInModelItems = new WeakMap(), _GxIdeSelectKbItems_toggleCheckedNodesInModelItems = new WeakMap(), _GxIdeSelectKbItems_updateViews = new WeakMap(), _GxIdeSelectKbItems_viewItemsAsChangedHandler = new WeakMap(), _GxIdeSelectKbItems_toggleCheckboxesChangedHandler = new WeakMap(), _GxIdeSelectKbItems_scrollIntoActiveVersionNode = new WeakMap();
513
519
  function defineCustomElement() {
514
520
  if (typeof customElements === "undefined") {
515
521
  return;
@@ -1 +1 @@
1
- {"file":"select-kb-items.js","mappings":";;;;;AAIO,MAAM,wBAAwB,GAAG,WAAW,CAAC;IAClD,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,cAAc;IACpB,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEI,MAAM,4CAA4C,GAAG,CAC1D,SAAqB,EACrB,YAA0B;IAE1B,MAAM,+BAA+B,GAAwB,EAAE,CAAC;IAEhE,MAAM,WAAW,GAAG,CAAC,IAAc;;QACjC,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;cAC1B,wBAAwB;cACxB,IAAI,CAAC,SAAS,CAAC;QACrB,MAAM,IAAI,GAAG,EAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,CAAA,CAAC;QACjC,MAAM,QAAQ,GACZ,YAAY,KAAK,KAAK;aACrB,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC3C,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,+BAA+B,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,WAAW;YACxB,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;YACtB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;SACzD;KACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,OAAO,+BAA+B,CAAC;AACzC,CAAC,CAAC;AAEK,MAAM,+BAA+B,GAAG,CAC7C,SAAqB,EACrB,YAA0B;IAE1B,MAAM,sBAAsB,GAAwB,EAAE,CAAC;IACvD,SAAS,CAAC,OAAO,CAAC,IAAI;;QACpB,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS;cAC1B,wBAAwB;cACxB,IAAI,CAAC,SAAS,CAAC;QACrB,MAAM,IAAI,GAAG,EAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,CAAA,CAAC;QACjC,MAAM,QAAQ,GACZ,YAAY,KAAK,KAAK;aACrB,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC3C,YAAY,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,SAAS,GAAG,WAAW,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,sBAAsB,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,SAAS;YACtB,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,QAAQ;YAClB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;YACtB,KAAK,EAAE,CAAC,IAAI;kBACR,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;kBACzD,IAAI;YACR,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAU,EAAE,IAAc;IAC9C,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;QAClB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAI,CAAC,KAAK,EAAE;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;YACjC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,MAAM,EAAE;gBACV,OAAO,MAAM,CAAC;aACf;SACF;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,SAAS,eAAe,CAAC,UAAsB,EAAE,EAAU;IACzD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC;SACf;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD,MAAM,uBAAuB,GAAG,CAAC,SAAqB;IACpD,MAAM,OAAO,GAAG,CAAC,QAAkB;;QACjC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,IAAI,MAAA,QAAQ,CAAC,KAAK,0CAAE,MAAM,EAAE;YAC1B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;SACzD;KACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,SAAqB;IACpD,MAAM,QAAQ,GAAG,CAAC,QAAkB;;QAClC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC1B,IAAI,MAAA,QAAQ,CAAC,KAAK,0CAAE,MAAM,EAAE;YAC1B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;SAC1D;KACF,CAAC;IAEF,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,CACxB,SAAqB,EACrB,UAAoB;IAEpB,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;SACzB;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CACzB,SAAqB,EACrB,UAAoB;IAEpB,UAAU,CAAC,OAAO,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC1B;KACF,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,CACzB,SAAqB,EACrB,WAAqB;IAErB,WAAW,CAAC,OAAO,CAAC,EAAE;QACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;SAC1B;KACF,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,SAAS,YAAY,CAAC,IAAc,EAAE,EAAU;;;IAE9C,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;QAClB,OAAO,EAAE,CAAC;KACX;;IAGD,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,EAAE;QACtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,IAAI,EAAE;;gBAEpB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;aAC9B;SACF;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,MAAM,kBAAkB,GAAG,CAChC,KAAiB,EACjB,GAAa;IAEb,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;QACpB,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,OAAO,KAAK,IAAI,EAAE;gBACpB,OAAO,CAAC,OAAO,CAAC,MAAM;oBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACtB,CAAC,CAAC;aACJ;SACF;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;AAKO,MAAM,mBAAmB,GAAG,CAAC,KAAiB;;IAEnD,MAAM,kBAAkB,GAAG,CACzB,QAAoB,EACpB,cAAwB,EAAE;;QAG1B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;;QAGD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;;YAE3B,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;;YAG3C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;gBACxB,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,IAAI;oBAClB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,IAAI,EAAE,QAAQ;iBACf,CAAC;aACH;;YAGD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;;gBAExD,IAAI,MAAM,KAAK,IAAI,EAAE;oBACnB,OAAO,MAAM,CAAC;iBACf;aACF;SACF;;QAGD,OAAO,IAAI,CAAC;KACb,CAAC;;IAGF,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;;AC9QD,MAAM,gBAAgB,GAAG,+tCAA+tC;;;;;;;;;;;;;;;;;;;ACmCxvC,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,sBAAsB;IACtB,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,kBAAkB;CACnB,CAAC;AAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC;IACrC,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,YAAY;CACxB,CAAC,CAAC;AAEH,MAAM,eAAe,GAA0B,MAAM,CAAC;AACtD,MAAM,eAAe,GAA0B,MAAM,CAAC;AAEtD,MAAM,+BAA+B,GAAG,IAAI,CAAC;MAQhC,kBAAkB;;;;;QAC7B,uDAAuB;QAEvB,8CAA6B,EAAE,EAAC;QAChC,oDAAuC;QACvC,+CAA8B,EAAE,EAAC;QACjC,2CAAgB,YAAY,CAC1B,gDAAgD,CACjD,EAAC;QACF,+CAAgC,EAAE,EAAC;QAEnC,uDAAyC;QAGzC,uDAA+C;QA0K/C,4CAAiB;YACf,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF,EAAC;QAEF,wDAA6B,OAC3B,CAAsD;YAEtD,MAAM,eAAe,GAAa,EAAE,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;gBACnB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACzD,CAAC,CAAC;YACH,uBAAA,IAAI,uCAAoB,eAAe,MAAA,CAAC;YACxC,uBAAA,IAAI,wCAAqB,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAA,IAAI,2CAAiB,CAAC,MAAA,CAAC;YAE3E,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,uBAAA,IAAI,2CAAiB,CAAC,CAAC;aAC5C;SACF,EAAC;QAEF,6CAAkB;YAChB,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,uBAAA,IAAI,2CAAiB,CAAC,CAAC;aAC7C;SACF,EAAC;QAEF,iDAAsB,OACpB,CAKE;YAEF,IAAI,IAAI,CAAC,uBAAuB,EAAE;gBAChC,IAAI,IAAqB,CAAC;gBAC1B,MAAM,UAAU,GAAG,uBAAA,IAAI,4CAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzE,IAAI,CAAC,uBAAA,IAAI,4CAAkB,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE;oBACjD,MAAM,uBAAA,IAAI,4CAAkB,CAAC,qBAAqB,CAChD,uBAAA,IAAI,4CAAkB,EACtB,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;oBACF,MAAM,uBAAA,IAAI,4CAAkB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;wBAChE,QAAQ,EAAE,IAAI;qBACf,CAAC,CAAC;oBACH,IAAI,GAAG;wBACL,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;wBAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;wBAC1C,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;qBACzB,CAAC;iBACH;qBAAM;oBACL,IAAI,GAAG;wBACL,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;wBAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;wBAC1C,SAAS,EAAE,uBAAA,IAAI,4CAAkB;qBAClC,CAAC;iBACH;gBACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;aACpC;SACF,EAAC;QAEF,kDAAuB,CACrB,QAAyE;YAEzE,OAAO;gBACL,QAAQ,CAAC,uBAAA,IAAI,2CAAiB,EAAE,uBAAA,IAAI,4CAAkB,CAAC,CAAC;aACzD,CAAC;SACH,EAAC;QAEF,+DAAoC,CAClC,KAAuC;YAEvC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SACnD,EAAC;QAEF,kDAAuB;YACrB,QACE,eACG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM;gBAC5B,QACE,cACE,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,iBAAiB,MAAM,CAAC,IAAI,EAAE,EACpC,OAAO,EAAE,uBAAA,IAAI,+CAAqB,MAAzB,IAAI,EAAsB,MAAM,CAAC,QAAQ,CAAC,EACnD,QAAQ,EAAE,IAAI,CAAC,OAAO,IAErB,MAAM,CAAC,IAAI,CACL,EACT;aACH,CAAC,CACE,EACN;SACH,EAAC;QAEF,2CAAgB;YACd,QACE,cAAQ,KAAK,EAAC,2GAA2G,IACtH,uBAAA,IAAI,+CAAqB,MAAzB,IAAI,CAAuB,EAC5B,WAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,cAAc,KAClB,cACE,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,uBAAA,IAAI,yCAAe,IAE3B,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,MAAM,CAC9B,CACV,EACA,IAAI,CAAC,eAAe,KACnB,cACE,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,uBAAA,IAAI,0CAAgB,EAC7B,QAAQ,EAAE,IAAI,CAAC,OAAO,IAErB,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,MAAM,CAC9B,CACV,CACG,CACC,EACT;SACH,EAAC;QAEF,yDAA8B,CAC5B,CAA2C;YAE3C,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;gBACnB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACrC,CAAC,CAAC;YACH,uBAAA,IAAI,wCAAqB,gBAAgB,MAAA,CAAC;YAC1C,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,IAAI,CAAC,gBAAgB,CAAC,uBAAA,IAAI,4CAAkB,CAAC,CAAC;aAC/C;YAED,uBAAA,IAAI,wCAAqB,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAA,CAAC;SACxE,EAAC;QAEF,+DAAoC,OAAO,gBAA0B;YACnE,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC3E,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YACvE,MAAM,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YACtE,uBAAA,IAAI,uCAAa,MAAjB,IAAI,EAAc,gBAAgB,CAAC,CAAC;SACrC,EAAC;QAEF,6DAAkC,OAAO,gBAA0B;YACjE,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC3E,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACpE,uBAAA,IAAI,uCAAa,MAAjB,IAAI,EAAc,gBAAgB,CAAC,CAAC;SACrC,EAAC;QAEF,0CAAe,CAAC,YAAwB;YACtC,IAAI,CAAC,yBAAyB,GAAG,+BAA+B,CAC9D,YAAY,EACZ,IAAI,CAAC,YAAY,CAClB,CAAC;YAEF,IAAI,CAAC,0BAA0B;gBAC7B,4CAA4C,CAC1C,YAAY,EACZ,IAAI,CAAC,YAAY,CAClB,CAAC;SACL,EAAC;QAEF,wDAA6B,OAAO,KAA0B;YAC5D,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAA+B,CAAC;YAC/D,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;YAC9C,IAAI,IAAI,CAAC,qBAAqB,KAAK,MAAM,EAAE;gBACzC,MAAM,uBAAA,IAAI,4DAAkC,MAAtC,IAAI,EAAmC,uBAAA,IAAI,4CAAkB,CAAC,CAAC;gBACrE,MAAM,uBAAA,IAAI,0DAAgC,MAApC,IAAI,EAAiC,uBAAA,IAAI,2CAAiB,CAAC,CAAC;aACnE;YACD,uBAAA,IAAI,uCAAa,MAAjB,IAAI,EAAc,uBAAA,IAAI,4CAAkB,CAAC,CAAC;SAC3C,EAAC;QAEF,6DAAkC,CAChC,KAAiD;YAEjD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,MAAM,KAAK,+BAA+B,CAAC;SAC1E,EAAC;QAEF,0DAA+B;;YAC7B,MAAM,gBAAgB,GACpB,uBAAA,IAAI,4CAAkB,KAAI,MAAA,IAAI,CAAC,cAAc,0CAAE,IAAI,CAAA,CAAC;YACtD,IAAI,gBAAgB,EAAE;gBACpB,uBAAA,IAAI,4CAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;aACpE;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;SACF,EAAC;;4BAhW+B,KAAK;0CAKqB,EAAE;uBAKjC,IAAI;qCAKwB,MAAM;yCAKJ,EAAE;kCAKtB,IAAI;gCAKL,IAAI;;;;6BAoBC,IAAI;;;6BAeG,EAAE;;yBAYV,EAAE;8BAgBC,KAAK;kCAKD,KAAK;;;IAlBrD,oBAAoB,CAAC,YAAwB;QAC3C,uBAAA,IAAI,uCAAa,MAAjB,IAAI,EAAc,YAAY,CAAC,CAAC;;QAEhC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;KACF;IAiBD,MAAM,iBAAiB;QACrB,uBAAA,IAAI,wCAAqB,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;QACnE,uBAAA,IAAI,wCAAqB;YACvB,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,uBAAA,IAAI,4CAAkB,CAAC,IAAI,CAAC,IAAI,EAAE;YACrE,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE;SAC5C,MAAA,CAAC;QACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY;YACf,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,cAAc;gBACrB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;KAC1B;;;;IAMD,MAAM,gBAAgB,CAAC,gBAAyB;QAC9C,IAAI,gBAAgB,EAAE;YACpB,uBAAA,IAAI,yCAAe,CAAC,OAAO,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,uBAAA,IAAI,yCAAe,CAAC,OAAO,GAAG,KAAK,CAAC;SACrC;KACF;;;;IAMD,MAAM,eAAe,CAAC,gBAA0B;;QAE9C,uBAAA,IAAI,4CAAkB,CAAC,qBAAqB,CAAC,uBAAA,IAAI,4CAAkB,EAAE;YACnE,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;;QAEH,uBAAA,IAAI,4CAAkB,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;YAC7D,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;KACJ;;;;IAMD,MAAM,kBAAkB,CAAC,eAAyB;;QAEhD,uBAAA,IAAI,4CAAkB,CAAC,qBAAqB,CAAC,uBAAA,IAAI,4CAAkB,EAAE;YACnE,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;;QAEH,uBAAA,IAAI,4CAAkB,CAAC,qBAAqB,CAAC,eAAe,EAAE;YAC5D,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;KACJ;IAoMD,MAAM;QACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAC9D,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,oBACE,GAAG,EAAE,uBAAA,IAAI,wCAAc,EACvB,GAAG,EAAE,CAAC,EAA0B,MAC7B,uBAAA,IAAI,qCAAkB,EAA4B,MAAA,CAAC,GAExC,EAChB,eAAS,KAAK,EAAC,SAAS,IACtB,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,gFAAgF,IAEtF,WAAK,KAAK,EAAC,mBAAmB,IAC5B,WAAK,KAAK,EAAC,oBAAoB,IAC7B,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,wBAEhC,EACR,6BACE,KAAK,EAAC,sCAAsC,EAC5C,EAAE,EAAC,WAAW,EACd,KAAK,EAAE,uBAAA,IAAI,4CAAkB,EAC7B,QAAQ,EAAE,uBAAA,IAAI,qDAA2B,EACzC,KAAK,EAAE,uBAAA,IAAI,4CAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,GACf,CACrB,EAEL,IAAI,CAAC,YAAY,KAAK,MAAM,KAC3B,WAAK,KAAK,EAAC,oBAAoB,IAC7B,aAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,mBAAmB,wBAExC,EACR,mBACE,KAAK,EAAC,mCAAmC,EACzC,EAAE,EAAC,mBAAmB,EACtB,YAAY,EAAE,+BAA+B,EAC7C,KAAK,EAAE,+BAA+B,EACtC,OAAO,EAAE,uBAAA,IAAI,0DAAgC,GAChC,CACX,CACP,CACG,EAEN,WACE,KAAK,EAAE;gBACL,oBAAoB,EAAE,IAAI;gBAC1B,6BAA6B,EAAE,CAAC,IAAI,CAAC,kBAAkB;aACxD,IAED,eACE,KAAK,EAAC,OAAO,EACb,WAAW,EACT,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,wBAAwB,EAExD,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,uBAAA,IAAI,4DAAkC,EAC/C,cAAc,EAAC,gBAAgB,GACtB,EACV,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,KAC7C,WAAK,KAAK,EAAC,aAAa,IACtB,YACE,KAAK,EAAC,6BAA6B,IAInC,gBACE,KAAK,EAAC,2BAA2B,EACjC,GAAG,EACD,IAAI,CAAC,cAAc,CAAC,SAAS;gBAC7B,wBAAwB,EAE1B,YAAY,EAAE,IAAI,GACR,CACP,EACN,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,UAAU,EACzC,cACE,KAAK,EAAC,mBAAmB,EACzB,OAAO,EAAE,uBAAA,IAAI,uDAA6B,IAEzC,IAAI,CAAC,cAAc,CAAC,OAAO,CACrB,CACL,CACP,CACG,CACC,EAET,WAAK,KAAK,EAAC,iCAAiC,IACzC,IAAI,CAAC,OAAO,IACX,qBACE,WAAW,EAAE,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,KAAK,EAChD,WAAW,EAAE,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,WAAW,EACtD,IAAI,SACW,KAEjB,2BACE,KAAK,EAAC,WAAW,EACjB,KAAK,EACH,IAAI,CAAC,qBAAqB,KAAK,MAAM;kBACjC,IAAI,CAAC,yBAAyB;kBAC9B,IAAI,CAAC,0BAA0B,gBAGnC,IAAI,CAAC,qBAAqB,KAAK,MAAM,GAAG,KAAK,GAAG,MAAM,EAExD,gBAAgB,EACd,IAAI,CAAC,qBAAqB,KAAK,MAAM,GAAG,YAAY,GAAG,IAAI,EAE7D,iBAAiB,EAAE,uBAAA,IAAI,8CAAoB,EAC3C,oBAAoB,EAAE,uBAAA,IAAI,qDAA2B,EACrD,qBAAqB,EAAE,uBAAA,IAAI,sDAA4B,EACvD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAC/B,UAAU,EAAC,SAAS,EACpB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,GAAG,EAAE,CAAC,EAA+B;gBACnC,uBAAA,IAAI,wCAAqB,EAAiC,MAAA,CAAC;aAC5D,GACoB,CACxB,CACG,EACL,IAAI,CAAC,YAAY,IAAI,uBAAA,IAAI,wCAAc,MAAlB,IAAI,CAAgB,CAClC,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType, ActiveNode } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath } from \"@genexus/mercury\";\n\nexport const ACTIVE_ITEM_DEFAULT_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"primary\"\n});\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: startImgSrc,\n endImgSrc: item.iconEnd,\n expanded: item.expanded,\n id: item.id.toString(),\n items: null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n selected: item.selected\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const expanded = item.expanded;\n const iconStart = startImgSrc;\n const iconEnd = item.iconEnd;\n const metaData = JSON.stringify({\n versionType: item.type\n });\n const order = parseInt(item.id);\n itemsListTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: iconStart,\n endImgSrc: iconEnd,\n expanded: expanded,\n id: item.id.toString(),\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n order: order,\n selected: item.selected\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n\n/**\n * Recursively searches for the first node with the active=true property\n * @param nodes Array of nodes to search through\n * @returns An object with caption, iconStart, and path to the first active node found, or null if none is found\n */\nexport const findFirstActiveNode = (nodes: ItemNode[]): ActiveNode | null => {\n // Helper function that keeps track of the path during recursion\n const findActiveWithPath = (\n nodeList: ItemNode[],\n currentPath: string[] = []\n ): ActiveNode | null => {\n // Base case: if nodes is undefined or empty\n if (!nodeList || nodeList.length === 0) {\n return null;\n }\n\n // Iterate through each node in the array\n for (const node of nodeList) {\n // Create a new path that includes the current node\n const nodePath = [...currentPath, node.id];\n\n // Check if the current node is active\n if (node.active === true) {\n return {\n caption: node.name,\n iconStart: node.iconStart,\n path: nodePath\n };\n }\n\n // If the node has children, search through them with the updated path\n if (node.nodes && node.nodes.length > 0) {\n const result = findActiveWithPath(node.nodes, nodePath);\n // If we find an active node in this subtree, return it immediately\n if (result !== null) {\n return result;\n }\n }\n }\n\n // No active node found in any of the nodes\n return null;\n };\n\n // Start the search with an empty path\n return findActiveWithPath(nodes);\n};\n",":host {\n --search-input-max-inline-size: 400px;\n display: grid;\n block-size: 100%;\n}\n:host(:not(.has-footer)) {\n grid-template-rows: max-content 1fr;\n}\n:host(.has-footer) {\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header.has-active-item {\n grid-area: header;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n &__first-row,\n &__second-row {\n display: grid;\n grid-auto-flow: column;\n }\n &__first-row {\n column-gap: var(--field-group__column-gap);\n grid-auto-columns: max-content;\n }\n &__second-row {\n column-gap: 12px;\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size)) max-content;\n\n &--one-row {\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size));\n }\n }\n}\n\n.active-item {\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-border__radius--sm);\n padding: var(--mer-spacing--xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n}\n.active-item {\n &__icon-container {\n display: contents;\n }\n &__icon {\n pointer-events: none; // We do not want the icon to change the colors, since the clickable area is the caption only\n }\n &__link {\n text-decoration: underline;\n // TODO: There should be a class in Merucry to apply link styles\n color: var(--mer-text__primary);\n cursor: pointer;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n }\n}\n\n.dummy-control-block-size {\n // WA: Make as tall as a regular contorl (ie.: a input, a combo-box) in order to\n // make the label vertically aligned with this control.\n block-size: 32px;\n}\n\n.trees {\n position: relative;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes,\n findFirstActiveNode\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nimport { ACTIVE_ITEM_DEFAULT_ICON } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n\n #checkedNodesIds: string[] = [];\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n\n #viewItemsAsModel: RadioGroupItemModel[];\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n /**\n * Represents the active version node caption and icon (if any)\n */\n @State() activeItemNode: ActiveNode;\n\n /**\n * If true, the footer will be rendered\n */\n @State() renderFooter: boolean = false;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean = true;\n\n /**\n * Callback emitted when the user clicks on the \"Active item\"\n */\n @Prop() readonly activeItemCallback?: () => Promise<void>;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Define if a item node is expanded on click interaction. If false item-node will only be expanded on double click.\n */\n @Prop() readonly expandOnClick: boolean = true;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Represents the itemLis list model\n */\n @Prop() readonly itemsList: ItemNode[] = [];\n\n @Watch(\"itemsList\")\n watchNodeListHandler(newItemsList: ItemNode[]) {\n this.#updateViews(newItemsList);\n // Check and update activeItem\n this.activeItemNode = findFirstActiveNode(newItemsList);\n\n if (newItemsList.length > 0) {\n this.loading = false;\n }\n }\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * Used to define if the component must show the \"Active item\" link or not\n */\n @Prop() readonly showActiveItemLink?: boolean = false;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.watchNodeListHandler(this.itemsList);\n this.renderFooter =\n this.dialogActions.length > 0 ||\n !!this.cancelCallback ||\n !!this.confirmCallback;\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n /**\n * Allow to update the checked items\n */\n @Method()\n async updateCheckedItems(checkedItemsIds: string[]) {\n // first clear checks\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n checked: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(checkedItemsIds, {\n checked: true\n });\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n node.item.checked && checkedNodesIds.push(node.item.id);\n });\n this.#checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.#checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.#checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.#checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.#checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n disabled={this.loading}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n disabled={this.loading}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.#checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n #scrollIntoActiveVersionNode = () => {\n const doScrollIntoView =\n this.#treeViewRenderEl && this.activeItemNode?.path;\n if (doScrollIntoView) {\n this.#treeViewRenderEl.scrollIntoVisible(this.activeItemNode.path);\n }\n\n if (this.activeItemCallback) {\n this.activeItemCallback();\n }\n };\n\n render() {\n return (\n <Host class={{ \"widget\": true, \"has-footer\": this.renderFooter }}>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header\n part=\"header\"\n class=\"header control-header field-group spacing-body-block-start spacing-body-inline\"\n >\n <div class=\"header__first-row\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n <ch-radio-group-render\n class=\"radio-group dummy-control-block-size\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n {this.checkboxType !== \"none\" && (\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"toggle-checkboxes\">\n Toggle Checkboxes\n </label>\n <ch-checkbox\n class=\"checkbox dummy-control-block-size\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n </div>\n )}\n </div>\n\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--one-row\": !this.showActiveItemLink\n }}\n >\n <ch-edit\n class=\"input\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n accessibleName=\"search pattern\"\n ></ch-edit>\n {this.activeItemNode && this.showActiveItemLink && (\n <div class=\"active-item\">\n <span\n class=\"active-item__icon-container\"\n // make this span the icon container, to prevent icon state changes when\n // interacting with div.active-item\n >\n <ch-image\n class=\"icon-md active-item__icon\"\n src={\n this.activeItemNode.iconStart ||\n ACTIVE_ITEM_DEFAULT_ICON\n }\n containerRef={null}\n ></ch-image>\n </span>\n {this.#_componentLocale.header.activeItem}\n <button\n class=\"active-item__link\"\n onClick={this.#scrollIntoActiveVersionNode}\n >\n {this.activeItemNode.caption}\n </button>\n </div>\n )}\n </div>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n expandOnClick={this.expandOnClick}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n )}\n </div>\n {this.renderFooter && this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n active?: boolean;\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n iconStart?: string;\n iconEnd?: string;\n id: string;\n name: string;\n nodes?: ItemNode[];\n parts?: string;\n selected?: boolean;\n type: ItemType;\n};\n\nexport type ActiveNode = {\n caption: string;\n iconStart?: string;\n path: string[]; // for using the scrollIntoVisible method of the tree-view-render\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"version":3}
1
+ {"file":"select-kb-items.js","mappings":"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","names":[],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType, ActiveNode } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\nimport { getIconPath } from \"@genexus/mercury\";\n\nexport const ACTIVE_ITEM_DEFAULT_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"primary\"\n});\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: startImgSrc,\n endImgSrc: item.iconEnd,\n expanded: item.expanded,\n id: item.id.toString(),\n items: null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n selected: item.selected\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const startImgSrc =\n item.active && !item.iconStart\n ? ACTIVE_ITEM_DEFAULT_ICON\n : item.iconStart;\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const expanded = item.expanded;\n const iconStart = startImgSrc;\n const iconEnd = item.iconEnd;\n const metaData = JSON.stringify({\n versionType: item.type\n });\n const order = parseInt(item.id);\n itemsListTreeViewModel.push({\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n startImgSrc: iconStart,\n endImgSrc: iconEnd,\n expanded: expanded,\n id: item.id.toString(),\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf,\n metadata: metaData,\n parts: item.parts,\n order: order,\n selected: item.selected\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n\n/**\n * Recursively searches for the first node with the active=true property\n * @param nodes Array of nodes to search through\n * @returns An object with caption, iconStart, and path to the first active node found, or null if none is found\n */\nexport const findFirstActiveNode = (nodes: ItemNode[]): ActiveNode | null => {\n // Helper function that keeps track of the path during recursion\n const findActiveWithPath = (\n nodeList: ItemNode[],\n currentPath: string[] = []\n ): ActiveNode | null => {\n // Base case: if nodes is undefined or empty\n if (!nodeList || nodeList.length === 0) {\n return null;\n }\n\n // Iterate through each node in the array\n for (const node of nodeList) {\n // Create a new path that includes the current node\n const nodePath = [...currentPath, node.id];\n\n // Check if the current node is active\n if (node.active === true) {\n return {\n caption: node.name,\n iconStart: node.iconStart,\n path: nodePath\n };\n }\n\n // If the node has children, search through them with the updated path\n if (node.nodes && node.nodes.length > 0) {\n const result = findActiveWithPath(node.nodes, nodePath);\n // If we find an active node in this subtree, return it immediately\n if (result !== null) {\n return result;\n }\n }\n }\n\n // No active node found in any of the nodes\n return null;\n };\n\n // Start the search with an empty path\n return findActiveWithPath(nodes);\n};\n",":host {\n --search-input-max-inline-size: 400px;\n display: grid;\n block-size: 100%;\n}\n:host(:not(.has-footer)) {\n grid-template-rows: max-content 1fr;\n}\n:host(.has-footer) {\n grid-template-rows: max-content 1fr max-content;\n}\n\n.header.has-active-item {\n grid-area: header;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n &__first-row,\n &__second-row {\n display: grid;\n grid-auto-flow: column;\n }\n &__first-row {\n column-gap: var(--field-group__column-gap);\n grid-auto-columns: max-content;\n }\n &__second-row {\n column-gap: 12px;\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size)) max-content;\n\n &--one-row {\n grid-template-columns: minmax(150px, var(--search-input-max-inline-size));\n }\n }\n}\n\n.active-item {\n background-color: var(--mer-surface__elevation--01);\n border-radius: var(--mer-border__radius--sm);\n padding: var(--mer-spacing--xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--xs);\n}\n.active-item {\n &__icon-container {\n display: contents;\n }\n &__icon {\n pointer-events: none; // We do not want the icon to change the colors, since the clickable area is the caption only\n }\n &__link {\n text-decoration: underline;\n // TODO: There should be a class in Merucry to apply link styles\n color: var(--mer-text__primary);\n cursor: pointer;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n }\n}\n\n.dummy-control-block-size {\n // WA: Make as tall as a regular contorl (ie.: a input, a combo-box) in order to\n // make the label vertically aligned with this control.\n block-size: 32px;\n}\n\n.trees {\n position: relative;\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes,\n findFirstActiveNode\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nimport { ACTIVE_ITEM_DEFAULT_ICON } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n\n #viewItemsAsModel: RadioGroupItemModel[];\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n /**\n * Represents the active version node caption and icon (if any)\n */\n @State() activeItemNode: ActiveNode;\n\n /**\n * Represents the selected nodes ids\n */\n @State() checkedNodesIds: string[] = [];\n\n /**\n * If true, the footer will be rendered\n */\n @State() renderFooter: boolean = false;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * To show a loader when the component is loading\n */\n @State() loading: boolean = true;\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean;\n\n /**\n * Callback emitted when the user clicks on the \"Active item\"\n */\n @Prop() readonly activeItemCallback?: () => Promise<void>;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Define if a item node is expanded on click interaction. If false item-node will only be expanded on double click.\n */\n @Prop() readonly expandOnClick: boolean = true;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Represents the itemLis list model\n */\n @Prop() readonly itemsList: ItemNode[] = [];\n\n /**\n * Used to define if the component must show the \"Toggle Checkboxes\" option or not\n */\n @Prop() readonly showToggleCheckboxes: boolean = true;\n\n @Watch(\"itemsList\")\n watchNodeListHandler(newItemsList: ItemNode[]) {\n this.#updateViews(newItemsList);\n // Check and update activeItem\n this.activeItemNode = findFirstActiveNode(newItemsList);\n\n if (newItemsList.length > 0) {\n this.loading = false;\n }\n }\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * Used to define if the component must show the \"Active item\" link or not\n */\n @Prop() readonly showActiveItemLink?: boolean = false;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.toggleCheckboxes = this.showToggleCheckboxes;\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.watchNodeListHandler(this.itemsList);\n this.renderFooter =\n this.dialogActions.length > 0 ||\n !!this.cancelCallback ||\n !!this.confirmCallback;\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n /**\n * Allow to update the checked items\n */\n @Method()\n async updateCheckedItems(checkedItemsIds: string[]) {\n // first clear checks\n this.#treeViewRenderEl.updateItemsProperties(this.checkedNodesIds, {\n checked: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(checkedItemsIds, {\n checked: true\n });\n this.checkedNodesIds = checkedItemsIds;\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n node.item.checked && checkedNodesIds.push(node.item.id);\n });\n this.checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n disabled={this.loading}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n disabled={this.loading || this.checkedNodesIds?.length === 0}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n #scrollIntoActiveVersionNode = () => {\n const doScrollIntoView =\n this.#treeViewRenderEl && this.activeItemNode?.path;\n if (doScrollIntoView) {\n this.#treeViewRenderEl.scrollIntoVisible(this.activeItemNode.path);\n }\n\n if (this.activeItemCallback) {\n this.activeItemCallback();\n }\n };\n\n render() {\n return (\n <Host class={{ \"widget\": true, \"has-footer\": this.renderFooter }}>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header\n part=\"header\"\n class=\"header control-header field-group spacing-body-block-start spacing-body-inline\"\n >\n <div class=\"header__first-row\">\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n <ch-radio-group-render\n class=\"radio-group dummy-control-block-size\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n {this.checkboxType !== \"none\" && this.showToggleCheckboxes && (\n <div class=\"field field-inline\">\n <label class=\"label\" htmlFor=\"toggle-checkboxes\">\n Toggle Checkboxes\n </label>\n <ch-checkbox\n class=\"checkbox dummy-control-block-size\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n </div>\n )}\n </div>\n\n <div\n class={{\n \"header__second-row\": true,\n \"header__second-row--one-row\": !this.showActiveItemLink\n }}\n >\n <ch-edit\n class=\"input\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n accessibleName=\"search pattern\"\n ></ch-edit>\n {this.activeItemNode && this.showActiveItemLink && (\n <div class=\"active-item\">\n <span\n class=\"active-item__icon-container\"\n // make this span the icon container, to prevent icon state changes when\n // interacting with div.active-item\n >\n <ch-image\n class=\"icon-md active-item__icon\"\n src={\n this.activeItemNode.iconStart ||\n ACTIVE_ITEM_DEFAULT_ICON\n }\n containerRef={null}\n ></ch-image>\n </span>\n {this.#_componentLocale.header.activeItem}\n <button\n class=\"active-item__link\"\n onClick={this.#scrollIntoActiveVersionNode}\n >\n {this.activeItemNode.caption}\n </button>\n </div>\n )}\n </div>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n {this.loading ? (\n <gx-ide-loader\n loaderTitle={this.#_componentLocale.loader.title}\n description={this.#_componentLocale.loader.description}\n show\n ></gx-ide-loader>\n ) : (\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n expandOnClick={this.expandOnClick}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n )}\n </div>\n {this.renderFooter && this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n active?: boolean;\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n iconStart?: string;\n iconEnd?: string;\n id: string;\n name: string;\n nodes?: ItemNode[];\n parts?: string;\n selected?: boolean;\n type: ItemType;\n};\n\nexport type ActiveNode = {\n caption: string;\n iconStart?: string;\n path: string[]; // for using the scrollIntoVisible method of the tree-view-render\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"version":3}
@@ -30,7 +30,16 @@ const validateControls = (formSubmitResult, validatableControls) => {
30
30
  // return validatableControls updated.
31
31
  return validatableControlsUpdated;
32
32
  };
33
+ const clearControlError = (validatableControls, controlId) => {
34
+ const control = validatableControls.get(controlId);
35
+ if (control === null || control === void 0 ? void 0 : control.reference) {
36
+ toggleErrorClass(false, control.reference);
37
+ control.hasError = false;
38
+ control.message = "";
39
+ validatableControls.set(controlId, control);
40
+ }
41
+ };
33
42
 
34
- export { validateControls as v };
43
+ export { clearControlError as c, validateControls as v };
35
44
 
36
- //# sourceMappingURL=form-validation-cd0215c6.js.map
45
+ //# sourceMappingURL=form-validation-21ab3766.js.map
@@ -0,0 +1 @@
1
+ {"file":"form-validation-21ab3766.js","mappings":"AAGA;AAqBA;AACA,MAAM,kCAAkC,GAAG;IACzC,aAAa,EAAE,gBAAgB;IAC/B,qBAAqB,EAAE,iBAAiB;IACxC,SAAS,EAAE,aAAa;CAChB,CAAC;AAEX,MAAM,gBAAgB,GAAG,CAAC,QAAiB,EAAE,OAAoB;IAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,UAAU,GACd,kCAAkC,CAChC,cAAiE,CAClE,CAAC;IACJ,IAAI,QAAQ,EAAE;QACZ,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACnC;SAAM;QACL,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KACtC;AACH,CAAC,CAAC;MAEW,gBAAgB,GAAG,CAC9B,gBAAkC,EAClC,mBAAmD;IAEnD,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAChE,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC;QACjC,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC;QAC3C,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClE,IAAI,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,SAAS,EAAE;;YAE/B,gBAAgB,CAAC,aAAa,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC5D,0BAA0B,CAAC,GAAG,CAAC,QAAQ,kCAClC,gBAAgB,KACnB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,CAAC,OAAO,IAC5B,CAAC;SACJ;KACF,CAAC,CAAC;;IAEH,OAAO,0BAA0B,CAAC;AACpC,EAAE;MAEW,iBAAiB,GAAG,CAC/B,mBAAmD,EACnD,SAAiB;IAEjB,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;QACtB,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;QACzB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KAC7C;AACH;;;;","names":[],"sources":["src/common/form-validation.ts"],"sourcesContent":["import { FormSubmitResult, ConnectionResultData } from \"../common/types\";\nimport { FormComponent } from \"@genexus/gemini/dist/types/common/interfaces\";\n\n// formSubmitValidation will be deprecated. use \"validateControls\" instead.\nexport const formSubmitValidation = (\n result: FormSubmitResult | ConnectionResultData,\n ref: any\n) => {\n result.fieldErrors?.forEach(element => {\n const key = element.key;\n const message = element.message;\n const hasError = element.hasError;\n\n const reference: FormComponent = ref[`${key}El`];\n if (reference && hasError && message.trim()) {\n reference.validationStatus = \"error\";\n reference.validationMessage = message;\n } else if (reference && !hasError) {\n reference.validationStatus = \"indeterminate\";\n reference.validationMessage = null;\n }\n });\n};\n\n// TODO: Improve the way we mark components with error. We must not use error classes.\nconst formElementsErrorClassesDictionary = {\n \"ch-checkbox\": \"checkbox-error\",\n \"ch-combo-box-render\": \"combo-box-error\",\n \"ch-edit\": \"input-error\"\n} as const;\n\nconst toggleErrorClass = (hasError: boolean, element: HTMLElement) => {\n const elementTagName = element.tagName.toLowerCase();\n const errorClass =\n formElementsErrorClassesDictionary[\n elementTagName as keyof typeof formElementsErrorClassesDictionary\n ];\n if (hasError) {\n element.classList.add(errorClass);\n } else {\n element.classList.remove(errorClass);\n }\n};\n\nexport const validateControls = (\n formSubmitResult: FormSubmitResult,\n validatableControls: Map<string, ControlValidation>\n): Map<string, ControlValidation> => {\n const validatableControlsUpdated = new Map(validatableControls);\n formSubmitResult.fieldErrors.forEach(fieldResult => {\n const fieldKey = fieldResult.key;\n const fieldHasError = fieldResult.hasError;\n const controlMapRecord = validatableControlsUpdated.get(fieldKey);\n if (controlMapRecord?.reference) {\n // toggle class to add or remove error style\n toggleErrorClass(fieldHasError, controlMapRecord.reference);\n validatableControlsUpdated.set(fieldKey, {\n ...controlMapRecord,\n hasError: fieldHasError,\n message: fieldResult.message\n });\n }\n });\n // return validatableControls updated.\n return validatableControlsUpdated;\n};\n\nexport const clearControlError = (\n validatableControls: Map<string, ControlValidation>,\n controlId: string\n) => {\n const control = validatableControls.get(controlId);\n if (control?.reference) {\n toggleErrorClass(false, control.reference);\n control.hasError = false;\n control.message = \"\";\n validatableControls.set(controlId, control);\n }\n};\n\nexport type ControlValidation = {\n reference: HTMLElement;\n hasError: boolean;\n message: string;\n};\n"],"version":3}