@mgdis/mg-components 6.8.0 → 6.10.0

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 (372) hide show
  1. package/README.md +17 -78
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js +8 -0
  3. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -0
  4. package/dist/cjs/events.utils-D5SAtkpQ.js +28 -0
  5. package/dist/cjs/events.utils-D5SAtkpQ.js.map +1 -0
  6. package/dist/cjs/{index-1a5a1081.js → index-CATFkm3O.js} +248 -196
  7. package/dist/cjs/index-CATFkm3O.js.map +1 -0
  8. package/dist/cjs/{index-234e834a.js → index-CfIlskRh.js} +34 -11
  9. package/dist/cjs/index-CfIlskRh.js.map +1 -0
  10. package/dist/cjs/index.cjs.js +1 -0
  11. package/dist/cjs/index.cjs.js.map +1 -1
  12. package/dist/cjs/index.es-BCLy9yYb.js +250 -0
  13. package/dist/cjs/index.es-BCLy9yYb.js.map +1 -0
  14. package/dist/cjs/loader.cjs.js +4 -5
  15. package/dist/cjs/loader.cjs.js.map +1 -1
  16. package/dist/cjs/mg-action-more_37.cjs.entry.js +573 -934
  17. package/dist/cjs/mg-action-more_37.cjs.entry.js.map +1 -1
  18. package/dist/cjs/mg-alert.cjs.entry.js +21 -15
  19. package/dist/cjs/mg-alert.cjs.entry.js.map +1 -1
  20. package/dist/cjs/mg-alert.entry.cjs.js.map +1 -0
  21. package/dist/cjs/mg-components.cjs.js +8 -7
  22. package/dist/cjs/mg-components.cjs.js.map +1 -1
  23. package/dist/cjs/mg-input-combobox.cjs.entry.js +774 -0
  24. package/dist/cjs/mg-input-combobox.cjs.entry.js.map +1 -0
  25. package/dist/cjs/mg-input-combobox.entry.cjs.js.map +1 -0
  26. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js +21526 -6868
  27. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js.map +1 -1
  28. package/dist/cjs/mg-input-rich-text-editor.entry.cjs.js.map +1 -0
  29. package/dist/cjs/{mg-input.conf-5bbcea79.js → mg-input.conf-WTsvDfpC.js} +2 -1
  30. package/dist/cjs/mg-input.conf-WTsvDfpC.js.map +1 -0
  31. package/dist/cjs/mg-loader.cjs.entry.js +12 -10
  32. package/dist/cjs/mg-loader.cjs.entry.js.map +1 -1
  33. package/dist/cjs/mg-loader.entry.cjs.js.map +1 -0
  34. package/dist/cjs/mg-progress.cjs.entry.js +14 -16
  35. package/dist/cjs/mg-progress.cjs.entry.js.map +1 -1
  36. package/dist/cjs/mg-progress.entry.cjs.js.map +1 -0
  37. package/dist/collection/collection-manifest.json +4 -3
  38. package/dist/collection/components/atoms/mg-badge/mg-badge.js +9 -4
  39. package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -1
  40. package/dist/collection/components/atoms/mg-button/mg-button.js +7 -6
  41. package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
  42. package/dist/collection/components/atoms/mg-tag/mg-tag.js +17 -7
  43. package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -1
  44. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +47 -58
  45. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
  46. package/dist/collection/components/molecules/inputs/mg-input/mg-input.js +12 -8
  47. package/dist/collection/components/molecules/inputs/mg-input/mg-input.js.map +1 -1
  48. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +19 -6
  49. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -1
  50. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +16 -5
  51. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -1
  52. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.js +2 -0
  53. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.js.map +1 -0
  54. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js +1443 -0
  55. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js.map +1 -0
  56. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +8 -3
  57. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -1
  58. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +9 -4
  59. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -1
  60. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +12 -7
  61. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -1
  62. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +1 -1
  63. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/editor/editor.scss +1 -0
  64. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js +46 -41
  65. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js.map +1 -1
  66. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +8 -3
  67. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -1
  68. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +49 -44
  69. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -1
  70. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +28 -23
  71. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -1
  72. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +8 -3
  73. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -1
  74. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.conf.js.map +1 -1
  75. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.js +2 -2
  76. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.js.map +1 -1
  77. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.conf.js.map +1 -0
  78. package/dist/collection/components/molecules/{menu → menus}/mg-menu/mg-menu.js +10 -10
  79. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.js.map +1 -0
  80. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.conf.js.map +1 -0
  81. package/dist/collection/components/molecules/{menu → menus}/mg-menu-item/mg-menu-item.js +9 -9
  82. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.js.map +1 -0
  83. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js.map +1 -1
  84. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +11 -6
  85. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
  86. package/dist/collection/components/molecules/mg-alert/mg-alert.js +13 -3
  87. package/dist/collection/components/molecules/mg-alert/mg-alert.js.map +1 -1
  88. package/dist/collection/components/molecules/mg-details/mg-details.js +3 -2
  89. package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -1
  90. package/dist/collection/components/molecules/mg-form/mg-form.js +8 -3
  91. package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -1
  92. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +1 -1
  93. package/dist/collection/components/molecules/mg-loader/mg-loader.js +10 -3
  94. package/dist/collection/components/molecules/mg-loader/mg-loader.js.map +1 -1
  95. package/dist/collection/components/molecules/mg-message/mg-message.js +2 -2
  96. package/dist/collection/components/molecules/mg-modal/mg-modal.js +4 -4
  97. package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -1
  98. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +17 -7
  99. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -1
  100. package/dist/collection/components/molecules/mg-panel/mg-panel.js +12 -7
  101. package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -1
  102. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +1 -1
  103. package/dist/collection/components/molecules/mg-popover/mg-popover.js +56 -81
  104. package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
  105. package/dist/collection/components/molecules/mg-progress/mg-progress.js +1 -1
  106. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +1 -1
  107. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +6 -5
  108. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -1
  109. package/dist/collection/locales/en/messages.json +14 -3
  110. package/dist/collection/locales/fr/messages.json +14 -3
  111. package/dist/collection/utils/behaviors.utils.js +3 -3
  112. package/dist/collection/utils/behaviors.utils.js.map +1 -1
  113. package/dist/collection/utils/events.utils.js +22 -0
  114. package/dist/collection/utils/events.utils.js.map +1 -0
  115. package/dist/collection/utils/floating-ui.utils.js +46 -2
  116. package/dist/collection/utils/floating-ui.utils.js.map +1 -1
  117. package/dist/collection/utils/playwright.fixture.js +2 -3
  118. package/dist/collection/utils/playwright.fixture.js.map +1 -1
  119. package/dist/components/events.utils.js +26 -0
  120. package/dist/components/events.utils.js.map +1 -0
  121. package/dist/components/floating-ui.utils.js +48 -423
  122. package/dist/components/floating-ui.utils.js.map +1 -1
  123. package/dist/components/index.es.js +161 -67
  124. package/dist/components/index.es.js.map +1 -1
  125. package/dist/components/index.js +1 -0
  126. package/dist/components/index2.js +33 -10
  127. package/dist/components/index2.js.map +1 -1
  128. package/dist/components/mg-action-more.js +15 -11
  129. package/dist/components/mg-action-more.js.map +1 -1
  130. package/dist/components/mg-alert.js +16 -8
  131. package/dist/components/mg-alert.js.map +1 -1
  132. package/dist/components/mg-badge.js +1 -0
  133. package/dist/components/mg-badge2.js +14 -10
  134. package/dist/components/mg-badge2.js.map +1 -1
  135. package/dist/components/mg-button.js +1 -0
  136. package/dist/components/mg-button2.js +13 -12
  137. package/dist/components/mg-button2.js.map +1 -1
  138. package/dist/components/mg-card.js +1 -0
  139. package/dist/components/mg-card2.js +2 -2
  140. package/dist/components/mg-card2.js.map +1 -1
  141. package/dist/components/mg-character-left.js +1 -0
  142. package/dist/components/mg-character-left2.js +6 -6
  143. package/dist/components/mg-character-left2.js.map +1 -1
  144. package/dist/components/mg-details.js +8 -7
  145. package/dist/components/mg-details.js.map +1 -1
  146. package/dist/components/mg-divider.js +1 -0
  147. package/dist/components/mg-divider2.js +2 -2
  148. package/dist/components/mg-divider2.js.map +1 -1
  149. package/dist/components/mg-form.js +14 -10
  150. package/dist/components/mg-form.js.map +1 -1
  151. package/dist/components/mg-icon.js +1 -0
  152. package/dist/components/mg-icon2.js +8 -8
  153. package/dist/components/mg-icon2.js.map +1 -1
  154. package/dist/components/mg-illustrated-message.js +8 -8
  155. package/dist/components/mg-illustrated-message.js.map +1 -1
  156. package/dist/components/mg-input-checkbox-paginated.js +2 -1
  157. package/dist/components/mg-input-checkbox-paginated2.js +15 -3
  158. package/dist/components/mg-input-checkbox-paginated2.js.map +1 -1
  159. package/dist/components/mg-input-checkbox.js +23 -14
  160. package/dist/components/mg-input-checkbox.js.map +1 -1
  161. package/dist/components/mg-input-combobox.d.ts +11 -0
  162. package/dist/components/mg-input-combobox.js +897 -0
  163. package/dist/components/mg-input-combobox.js.map +1 -0
  164. package/dist/components/mg-input-date.js +25 -21
  165. package/dist/components/mg-input-date.js.map +1 -1
  166. package/dist/components/mg-input-numeric.js +23 -19
  167. package/dist/components/mg-input-numeric.js.map +1 -1
  168. package/dist/components/mg-input-password.js +13 -9
  169. package/dist/components/mg-input-password.js.map +1 -1
  170. package/dist/components/mg-input-radio.js +11 -11
  171. package/dist/components/mg-input-radio.js.map +1 -1
  172. package/dist/components/mg-input-rich-text-editor.js +21527 -6867
  173. package/dist/components/mg-input-rich-text-editor.js.map +1 -1
  174. package/dist/components/mg-input-select.js +1 -0
  175. package/dist/components/mg-input-select2.js +16 -12
  176. package/dist/components/mg-input-select2.js.map +1 -1
  177. package/dist/components/mg-input-text.js +1 -0
  178. package/dist/components/mg-input-text2.js +24 -20
  179. package/dist/components/mg-input-text2.js.map +1 -1
  180. package/dist/components/mg-input-textarea.js +17 -13
  181. package/dist/components/mg-input-textarea.js.map +1 -1
  182. package/dist/components/mg-input-title.js +1 -0
  183. package/dist/components/mg-input-title2.js +6 -6
  184. package/dist/components/mg-input-title2.js.map +1 -1
  185. package/dist/components/mg-input-toggle.js +14 -10
  186. package/dist/components/mg-input-toggle.js.map +1 -1
  187. package/dist/components/mg-input.js +1 -0
  188. package/dist/components/mg-input2.js +20 -14
  189. package/dist/components/mg-input2.js.map +1 -1
  190. package/dist/components/mg-item-more.js +2 -1
  191. package/dist/components/mg-item-more2.js +22 -23
  192. package/dist/components/mg-item-more2.js.map +1 -1
  193. package/dist/components/mg-loader.js +2 -67
  194. package/dist/components/mg-loader.js.map +1 -1
  195. package/dist/components/mg-loader2.js +75 -0
  196. package/dist/components/mg-loader2.js.map +1 -0
  197. package/dist/components/mg-menu-item.js +1 -0
  198. package/dist/components/mg-menu-item2.js +18 -18
  199. package/dist/components/mg-menu-item2.js.map +1 -1
  200. package/dist/components/mg-menu.js +2 -1
  201. package/dist/components/mg-message.js +1 -0
  202. package/dist/components/mg-message2.js +8 -8
  203. package/dist/components/mg-message2.js.map +1 -1
  204. package/dist/components/mg-modal.js +13 -13
  205. package/dist/components/mg-modal.js.map +1 -1
  206. package/dist/components/mg-pagination.js +1 -0
  207. package/dist/components/mg-pagination2.js +19 -11
  208. package/dist/components/mg-pagination2.js.map +1 -1
  209. package/dist/components/mg-panel.js +18 -14
  210. package/dist/components/mg-panel.js.map +1 -1
  211. package/dist/components/mg-popover-content.js +1 -0
  212. package/dist/components/mg-popover-content2.js +7 -7
  213. package/dist/components/mg-popover-content2.js.map +1 -1
  214. package/dist/components/mg-popover.js +1 -0
  215. package/dist/components/mg-popover2.js +62 -88
  216. package/dist/components/mg-popover2.js.map +1 -1
  217. package/dist/components/mg-progress.js +13 -13
  218. package/dist/components/mg-progress.js.map +1 -1
  219. package/dist/components/mg-skip-links.js +5 -5
  220. package/dist/components/mg-skip-links.js.map +1 -1
  221. package/dist/components/mg-table.js +8 -8
  222. package/dist/components/mg-table.js.map +1 -1
  223. package/dist/components/mg-tabs.js +20 -19
  224. package/dist/components/mg-tabs.js.map +1 -1
  225. package/dist/components/mg-tag.js +16 -8
  226. package/dist/components/mg-tag.js.map +1 -1
  227. package/dist/components/mg-tooltip-content.js +1 -0
  228. package/dist/components/mg-tooltip-content2.js +3 -3
  229. package/dist/components/mg-tooltip-content2.js.map +1 -1
  230. package/dist/components/mg-tooltip.js +1 -0
  231. package/dist/components/mg-tooltip2.js +58 -68
  232. package/dist/components/mg-tooltip2.js.map +1 -1
  233. package/dist/esm/app-globals-DQuL1Twl.js +6 -0
  234. package/dist/esm/app-globals-DQuL1Twl.js.map +1 -0
  235. package/dist/esm/events.utils-yMGqY8YG.js +26 -0
  236. package/dist/esm/events.utils-yMGqY8YG.js.map +1 -0
  237. package/dist/esm/{index-5059254f.js → index-CAuxALt5.js} +246 -174
  238. package/dist/esm/index-CAuxALt5.js.map +1 -0
  239. package/dist/esm/{index-544778a7.js → index-DmsGewMC.js} +34 -11
  240. package/dist/esm/index-DmsGewMC.js.map +1 -0
  241. package/dist/esm/index.es-rLV3KFPd.js +223 -0
  242. package/dist/esm/index.es-rLV3KFPd.js.map +1 -0
  243. package/dist/esm/index.js +1 -0
  244. package/dist/esm/index.js.map +1 -1
  245. package/dist/esm/loader.js +5 -4
  246. package/dist/esm/loader.js.map +1 -1
  247. package/dist/esm/mg-action-more_37.entry.js +573 -932
  248. package/dist/esm/mg-action-more_37.entry.js.map +1 -1
  249. package/dist/esm/mg-alert.entry.js +21 -13
  250. package/dist/esm/mg-alert.entry.js.map +1 -1
  251. package/dist/esm/mg-components.js +7 -5
  252. package/dist/esm/mg-components.js.map +1 -1
  253. package/dist/esm/mg-input-combobox.entry.js +772 -0
  254. package/dist/esm/mg-input-combobox.entry.js.map +1 -0
  255. package/dist/esm/mg-input-rich-text-editor.entry.js +21529 -6869
  256. package/dist/esm/mg-input-rich-text-editor.entry.js.map +1 -1
  257. package/dist/esm/{mg-input.conf-712c7bb6.js → mg-input.conf-CNgv8hc5.js} +3 -2
  258. package/dist/esm/mg-input.conf-CNgv8hc5.js.map +1 -0
  259. package/dist/esm/mg-loader.entry.js +12 -8
  260. package/dist/esm/mg-loader.entry.js.map +1 -1
  261. package/dist/esm/mg-progress.entry.js +14 -14
  262. package/dist/esm/mg-progress.entry.js.map +1 -1
  263. package/dist/mg-components/index.esm.js.map +1 -1
  264. package/dist/mg-components/loader.esm.js.map +1 -0
  265. package/dist/mg-components/locales/en/messages.json +14 -3
  266. package/dist/mg-components/locales/fr/messages.json +14 -3
  267. package/dist/mg-components/mg-alert.entry.esm.js.map +1 -0
  268. package/dist/mg-components/mg-components.esm.js +1 -1
  269. package/dist/mg-components/mg-components.esm.js.map +1 -1
  270. package/dist/mg-components/mg-input-combobox.entry.esm.js.map +1 -0
  271. package/dist/mg-components/mg-input-rich-text-editor.entry.esm.js.map +1 -0
  272. package/dist/mg-components/mg-loader.entry.esm.js.map +1 -0
  273. package/dist/mg-components/mg-progress.entry.esm.js.map +1 -0
  274. package/dist/mg-components/p-0f761c6c.entry.js +2 -0
  275. package/dist/mg-components/p-0f761c6c.entry.js.map +1 -0
  276. package/dist/mg-components/p-73099ed7.entry.js +11 -0
  277. package/dist/mg-components/p-73099ed7.entry.js.map +1 -0
  278. package/dist/mg-components/p-88f77de2.entry.js +2 -0
  279. package/dist/mg-components/p-88f77de2.entry.js.map +1 -0
  280. package/dist/mg-components/p-CAuxALt5.js +3 -0
  281. package/dist/mg-components/p-CAuxALt5.js.map +1 -0
  282. package/dist/mg-components/p-CNgv8hc5.js +2 -0
  283. package/dist/mg-components/p-CNgv8hc5.js.map +1 -0
  284. package/dist/mg-components/p-DK9teKTo.js +2 -0
  285. package/dist/mg-components/p-DK9teKTo.js.map +1 -0
  286. package/dist/mg-components/p-DQuL1Twl.js +2 -0
  287. package/dist/mg-components/p-DQuL1Twl.js.map +1 -0
  288. package/dist/mg-components/p-ad66e7b3.entry.js +2 -0
  289. package/dist/mg-components/p-ad66e7b3.entry.js.map +1 -0
  290. package/dist/mg-components/p-cdbe689e.entry.js +2 -0
  291. package/dist/mg-components/p-cdbe689e.entry.js.map +1 -0
  292. package/dist/mg-components/p-d3a868f0.entry.js +2 -0
  293. package/dist/mg-components/p-d3a868f0.entry.js.map +1 -0
  294. package/dist/mg-components/p-rLV3KFPd.js +2 -0
  295. package/dist/mg-components/p-rLV3KFPd.js.map +1 -0
  296. package/dist/mg-components/p-yMGqY8YG.js +2 -0
  297. package/dist/mg-components/p-yMGqY8YG.js.map +1 -0
  298. package/dist/types/components/atoms/mg-tag/mg-tag.d.ts +2 -2
  299. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +6 -6
  300. package/dist/types/components/molecules/inputs/mg-input/mg-input.d.ts +1 -4
  301. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.d.ts +2 -2
  302. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.d.ts +2 -2
  303. package/dist/types/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.d.ts +24 -0
  304. package/dist/types/components/molecules/inputs/mg-input-combobox/mg-input-combobox.d.ts +340 -0
  305. package/dist/types/components/molecules/inputs/mg-input-date/mg-input-date.d.ts +1 -1
  306. package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +1 -1
  307. package/dist/types/components/molecules/inputs/mg-input-password/mg-input-password.d.ts +2 -2
  308. package/dist/types/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.d.ts +9 -9
  309. package/dist/types/components/molecules/inputs/mg-input-select/mg-input-select.d.ts +1 -1
  310. package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.d.ts +8 -8
  311. package/dist/types/components/molecules/inputs/mg-input-textarea/mg-input-textarea.d.ts +5 -5
  312. package/dist/types/components/molecules/inputs/mg-input-toggle/mg-input-toggle.d.ts +1 -1
  313. package/dist/types/components/molecules/internals/mg-item-more/mg-item-more.conf.d.ts +1 -1
  314. package/dist/types/components/molecules/mg-action-more/mg-action-more.conf.d.ts +1 -1
  315. package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +1 -1
  316. package/dist/types/components/molecules/mg-form/mg-form.d.ts +1 -1
  317. package/dist/types/components/molecules/mg-loader/mg-loader.d.ts +1 -1
  318. package/dist/types/components/molecules/mg-pagination/mg-pagination.d.ts +2 -2
  319. package/dist/types/components/molecules/mg-panel/mg-panel.d.ts +1 -1
  320. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +6 -9
  321. package/dist/types/components.d.ts +274 -29
  322. package/dist/types/stencil-public-runtime.d.ts +1 -0
  323. package/dist/types/utils/events.utils.d.ts +4 -0
  324. package/dist/types/utils/floating-ui.utils.d.ts +9 -1
  325. package/ide/intellij/web-types.json +488 -45
  326. package/ide/vscode/html-custom-data.json +358 -26
  327. package/package.json +26 -26
  328. package/dist/cjs/app-globals-3a1e7e63.js +0 -7
  329. package/dist/cjs/app-globals-3a1e7e63.js.map +0 -1
  330. package/dist/cjs/index-1a5a1081.js.map +0 -1
  331. package/dist/cjs/index-234e834a.js.map +0 -1
  332. package/dist/cjs/index.es-b90f74d4.js +0 -151
  333. package/dist/cjs/index.es-b90f74d4.js.map +0 -1
  334. package/dist/cjs/mg-input.conf-5bbcea79.js.map +0 -1
  335. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js.map +0 -1
  336. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +0 -1
  337. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js.map +0 -1
  338. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +0 -1
  339. package/dist/esm/app-globals-0f993ce5.js +0 -5
  340. package/dist/esm/app-globals-0f993ce5.js.map +0 -1
  341. package/dist/esm/index-5059254f.js.map +0 -1
  342. package/dist/esm/index-544778a7.js.map +0 -1
  343. package/dist/esm/index.es-517b1bf2.js +0 -129
  344. package/dist/esm/index.es-517b1bf2.js.map +0 -1
  345. package/dist/esm/mg-input.conf-712c7bb6.js.map +0 -1
  346. package/dist/mg-components/p-12a1edee.js +0 -2
  347. package/dist/mg-components/p-12a1edee.js.map +0 -1
  348. package/dist/mg-components/p-2884f369.js +0 -2
  349. package/dist/mg-components/p-2884f369.js.map +0 -1
  350. package/dist/mg-components/p-9bc53279.js +0 -2
  351. package/dist/mg-components/p-9bc53279.js.map +0 -1
  352. package/dist/mg-components/p-ad98f3d8.entry.js +0 -2
  353. package/dist/mg-components/p-ad98f3d8.entry.js.map +0 -1
  354. package/dist/mg-components/p-c10433db.entry.js +0 -2
  355. package/dist/mg-components/p-c10433db.entry.js.map +0 -1
  356. package/dist/mg-components/p-c67e4934.entry.js +0 -2
  357. package/dist/mg-components/p-c67e4934.entry.js.map +0 -1
  358. package/dist/mg-components/p-e1255160.js +0 -2
  359. package/dist/mg-components/p-e1255160.js.map +0 -1
  360. package/dist/mg-components/p-e39791fa.js +0 -3
  361. package/dist/mg-components/p-e39791fa.js.map +0 -1
  362. package/dist/mg-components/p-f72efb64.entry.js +0 -2
  363. package/dist/mg-components/p-f72efb64.entry.js.map +0 -1
  364. package/dist/mg-components/p-fd4a7980.entry.js +0 -2
  365. package/dist/mg-components/p-fd4a7980.entry.js.map +0 -1
  366. package/loader/package.json +0 -11
  367. /package/dist/collection/components/molecules/{menu → menus}/mg-menu/mg-menu.conf.js +0 -0
  368. /package/dist/collection/components/molecules/{menu → menus}/mg-menu-item/mg-menu-item.conf.js +0 -0
  369. /package/dist/types/components/molecules/{menu → menus}/mg-menu/mg-menu.conf.d.ts +0 -0
  370. /package/dist/types/components/molecules/{menu → menus}/mg-menu/mg-menu.d.ts +0 -0
  371. /package/dist/types/components/molecules/{menu → menus}/mg-menu-item/mg-menu-item.conf.d.ts +0 -0
  372. /package/dist/types/components/molecules/{menu → menus}/mg-menu-item/mg-menu-item.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-loader.entry.esm.js","sources":["../styles/dist/components/mg-loader.css?tag=mg-loader&encapsulation=shadow","src/components/molecules/mg-loader/mg-loader.tsx"],"sourcesContent":[".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host{display:block}.mg-c-loader{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--mg-b-size-4);text-align:center}/*# sourceMappingURL=mg-loader.css.map */\n","import { Component, Element, h, Prop, Watch } from '@stencil/core';\nimport { initLocales } from '../../../locales';\nimport { isValidString, toString } from '@mgdis/stencil-helpers';\n\n@Component({\n tag: 'mg-loader',\n styleUrl: '../../../../node_modules/@mgdis/styles/dist/components/mg-loader.css',\n shadow: true,\n})\nexport class MgLoader {\n /************\n * Internal *\n ************/\n\n // Locales\n private messages;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgLoaderElement;\n\n /**\n * Override loader message\n */\n @Prop() message?: string;\n @Watch('message')\n watchMessage(newValue: MgLoader['message']): void {\n if (newValue && !isValidString(newValue)) throw new Error(`<mg-loader> prop \"message\" must be a valid string. Passed value: ${toString(newValue)}.`);\n }\n\n /**\n * Hide message\n */\n @Prop() messageHide = false;\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n */\n componentWillLoad(): void {\n // Get locales\n this.messages = initLocales(this.element).messages;\n\n // validate props\n this.watchMessage(this.message);\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <div class=\"mg-c-loader\" aria-live=\"polite\">\n <mg-icon icon=\"loader\" spin></mg-icon>\n <span class={{ 'mg-u-visually-hidden': this.messageHide }}>{this.message || this.messages.loader.inProgress}</span>\n </div>\n );\n }\n}\n"],"names":["isValidString","toString"],"mappings":";;;;AAAA,MAAM,WAAW,GAAG,skBAAskB;;MCS7kB,QAAQ,GAAA,MAAA;AALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;AA+BE;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK;AA6B5B;AApCC,IAAA,YAAY,CAAC,QAA6B,EAAA;AACxC,QAAA,IAAI,QAAQ,IAAI,CAACA,EAAa,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,CAAoE,iEAAA,EAAAC,EAAQ,CAAC,QAAQ,CAAC,CAAG,CAAA,CAAA,CAAC;;AAQtJ;;AAEe;AAEf;;AAEG;IACH,iBAAiB,GAAA;;QAEf,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ;;AAGlD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGjC;;;AAGG;IACH,MAAM,GAAA;AACJ,QAAA,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,aAAa,eAAW,QAAQ,EAAA,EACzC,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAW,IAAA,EAAA,CAAA,EACtC,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,EAAE,sBAAsB,EAAE,IAAI,CAAC,WAAW,EAAE,EAAA,EAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAQ,CAC/G;;;;;;;;;;;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-progress.entry.esm.js","sources":["src/components/molecules/mg-progress/mg-progress.conf.ts","../styles/dist/components/mg-progress.css?tag=mg-progress&encapsulation=shadow","src/components/molecules/mg-progress/mg-progress.tsx"],"sourcesContent":["import { AriaRole } from '../../../types';\n\n/**\n * List of all possibles roles\n */\nexport const roles = ['progressbar', 'meter'] as const;\n\n/**\n * Aria Role type from roles\n */\nexport type AriaRoleType = AriaRole & (typeof roles)[number];\n","/*!\n * @prop --mg-c-progress-size: Defines the size of the progress bar. Default value is `--mg-b-size-8`.\n * @prop --mg-c-progress-border-color: Defines the color of the progress bar border. Default value is `--mg-b-color-neutral-80`.\n * @prop --mg-c-progress-bar-color-background: Defines the color of the progress bar. Default value is `--mg-b-color-neutral-30`.\n * @prop --mg-c-progress-fill-color-background: Defines the color of the progress bar fill background. Default value is `--mg-b-color-app`.\n */.mg-c-progress{min-width:calc(var(--mg-b-size-16)*4)}.mg-c-progress__bar{position:relative;overflow:hidden;height:var(--mg-c-progress-size);border-width:var(--mg-b-size-border);border-style:solid;border-color:var(--mg-c-progress-border-color);border-radius:calc((var(--mg-c-progress-size) + var(--mg-b-size-border)*2)/2);background-color:var(--mg-c-progress-bar-color-background)}.mg-c-progress__fill{height:100%;border-radius:calc((var(--mg-c-progress-size) + var(--mg-b-size-border)*2)/2);transition:width 300ms ease-in-out}.mg-c-progress__bar.mg-c-progress__bar--active .mg-c-progress__fill{background-color:var(--mg-c-progress-fill-color-background)}/*# sourceMappingURL=mg-progress.css.map */\n","import { Component, h, Host, Prop, Watch } from '@stencil/core';\nimport { isValidNumber, isValidString, toString } from '@mgdis/stencil-helpers';\nimport { AriaRoleType, roles } from './mg-progress.conf';\n\n@Component({\n tag: 'mg-progress',\n styleUrl: '../../../../node_modules/@mgdis/styles/dist/components/mg-progress.css',\n shadow: true,\n})\nexport class MgProgress {\n /**************\n * Decorators *\n **************/\n\n /**\n * Define label\n */\n @Prop() label!: string;\n @Watch('label')\n watchLabel(newValue: MgProgress['label']): void {\n if (!isValidString(newValue)) {\n throw new Error(`<mg-progress> prop \"label\" must be a valid string. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Define progress role\n * - `progressbar` to indicate a progress, such as loading or percent completion of a task\n * - `meter` to indicate a graphical display of a numeric value that varies within a defined range\n */\n @Prop() ariaRole?: AriaRoleType = 'progressbar';\n @Watch('ariaRole')\n watchAriaRole(newValue: MgProgress['ariaRole']): void {\n if (newValue && !roles.includes(newValue)) {\n throw new Error(`<mg-progress> prop \"ariaRole\" must be one of: ${roles.join(', ')}. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Define current value\n * By default, it will be displayed as a percentage value.\n * If you don’t specify the min and max props, the value should be a number within the range of 0 to 100.\n */\n @Prop() value?: number = 0;\n @Watch('value')\n watchValue(newValue: MgProgress['value']): void {\n if (newValue !== undefined && (!isValidNumber(newValue) || !(newValue >= this.min && newValue <= this.max)))\n throw new Error(`<mg-progress> prop “value” must be a number within the range ${this.min} to ${this.max}. Passed value: ${toString(newValue)}.`);\n }\n\n /**\n * Define the minimum value in the range\n */\n @Prop() min?: number = 0;\n @Watch('min')\n watchMin(newValue: MgProgress['min']): void {\n if (newValue !== 0 && newValue !== undefined && (!isValidNumber(newValue) || newValue >= this.max))\n throw new Error(`<mg-progress> prop “min” must be a number lower than: ${this.max}. Passed value: ${toString(newValue)}.`);\n }\n\n /**\n * Define the maximum value in the range\n */\n @Prop() max?: number = 100;\n @Watch('max')\n watchMax(newValue: MgProgress['max']): void {\n if (newValue !== 100 && newValue !== undefined && (!isValidNumber(newValue) || newValue <= this.min))\n throw new Error(`<mg-progress> prop “max” must be a number greater than: ${this.min}. Passed value: ${toString(newValue)}.`);\n }\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n */\n componentWillLoad(): void {\n // validate props\n this.watchLabel(this.label);\n this.watchAriaRole(this.ariaRole);\n this.watchMin(this.min);\n this.watchMax(this.max);\n this.watchValue(this.value);\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <Host role={this.ariaRole} aria-label={this.label} aria-valuenow={this.value} aria-valuemin={this.min} aria-valuemax={this.max}>\n <div class=\"mg-c-progress\">\n <div class={{ 'mg-c-progress__bar': true, 'mg-c-progress__bar--active': this.value > this.min }}>\n <div\n class=\"mg-c-progress__fill\"\n style={{\n width: `${Math.round(((this.value - this.min) / (this.max - this.min)) * 100)}%`,\n }}\n ></div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["isValidString","toString","isValidNumber"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as e,g as s}from"./p-CAuxALt5.js";import{Y as n,Z as o,K as a,X as r,q as h,G as c,D as p,i as u,a as m,H as l}from"./p-rLV3KFPd.js";import{c as g,a as d,w as b}from"./p-CNgv8hc5.js";import{i as f}from"./p-DK9teKTo.js";import{K as v}from"./p-yMGqY8YG.js";const w=".mg-c-input__box{height:var(--mg-b-size-min-height);box-sizing:border-box;padding:calc((var(--mg-b-size-min-height) - var(--mg-b-font-size)*var(--mg-b-line-height))/2) var(--mg-b-size-8);border-width:var(--mg-c-input-border-width);border-style:solid;border-color:var(--mg-c-input-color-border);border-radius:var(--mg-c-input-border-radius);background-color:var(--mg-b-color-light);color:var(--mg-b-color-dark);font-family:inherit;font-size:var(--mg-b-font-size);text-align:var(--mg-c-input-text-align, left)}.mg-c-input__box::placeholder{color:var(--mg-c-input-placeholder-color-text);font-style:italic}.mg-c-input__box:focus{box-shadow:0 0 var(--mg-b-size-4) var(--mg-c-input-color-box-shadow-focus)}.mg-c-input__box:disabled{opacity:var(--mg-b-opacity-element-disabled)}.mg-c-input.mg-c-input--has-error .mg-c-input__box{border-color:var(--mg-b-color-danger)}.mg-c-input.mg-c-input--is-input-group-append{--mg-c-button-border-radius-top-left:0;--mg-c-button-border-radius-bottom-left:0}.mg-c-input.mg-c-input--is-input-group-append .mg-c-input__box{margin-right:calc(-1*var(--mg-b-size-border));border-bottom-right-radius:0;border-top-right-radius:0}.mg-c-input.mg-c-input--is-input-group-append .mg-c-input__box:focus-visible{outline-offset:-0.2rem;outline-style:solid;outline-width:.2rem}.mg-c-input.mg-c-input--has-buttons-group-append ::slotted([slot=append-input]){--mg-c-button-border-radius-top-right:0;--mg-c-button-border-radius-bottom-right:0}.mg-c-input.mg-c-input--has-buttons-group-append ::slotted([slot=append-input]:not(:last-of-type)){--mg-c-button-border-right-width:0}.mg-c-input.mg-c-input--has-buttons-group-append ::slotted([slot=append-input]:last-of-type){--mg-c-button-border-radius-top-right:var(--mg-c-input-border-radius);--mg-c-button-border-radius-bottom-right:var(--mg-c-input-border-radius)}.mg-c-input.mg-c-input--is-append-input-slot-content:not(.mg-c-input--readonly) ::slotted([slot=append-input]){align-self:start;padding-top:calc((var(--mg-b-size-min-height) - var(--mg-b-size-16))/2)}.mg-c-input.mg-c-input--has-icon .mg-c-input__with-character-left>mg-icon:first-of-type,.mg-c-input.mg-c-input--has-icon .mg-c-input__input-group-container>mg-icon:first-of-type{position:absolute;top:50%;left:var(--mg-b-size-8);color:var(--mg-c-input-color-icon);transform:translateY(-50%)}.mg-c-input.mg-c-input--has-icon .mg-c-input__with-character-left .mg-c-input__box,.mg-c-input.mg-c-input--has-icon .mg-c-input__input-group-container .mg-c-input__box{padding-left:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2)}.mg-c-input__input-container{width:100%;flex:1 auto}.mg-c-input.mg-c-input--width-full .mg-c-input__box{width:100%}.mg-c-input.mg-c-input--width-2 .mg-c-input__with-character-left,.mg-c-input.mg-c-input--width-4 .mg-c-input__with-character-left,.mg-c-input.mg-c-input--width-16 .mg-c-input__with-character-left{width:max-content}.mg-c-input.mg-c-input--width-2 .mg-c-input__with-character-left:has(textarea),.mg-c-input.mg-c-input--width-4 .mg-c-input__with-character-left:has(textarea),.mg-c-input.mg-c-input--width-16 .mg-c-input__with-character-left:has(textarea){flex-grow:inherit}.mg-c-input.mg-c-input--width-2 .mg-c-input__box{width:var(--mg-b-size-48)}.mg-c-input.mg-c-input--width-2 .mg-c-input__with-character-left:not(:has(textarea)) .mg-c-input__box{width:calc(var(--mg-b-size-48) + var(--mg-c-character-left-message-length)*(.35ch + .3rem))}.mg-c-input.mg-c-input--width-4 .mg-c-input__box{width:var(--mg-b-size-72)}.mg-c-input.mg-c-input--width-4 .mg-c-input__with-character-left:not(:has(textarea)) .mg-c-input__box{width:calc(var(--mg-b-size-72) + var(--mg-c-character-left-message-length)*(.35ch + .3rem))}.mg-c-input.mg-c-input--width-16 .mg-c-input__box{width:calc(26*var(--mg-b-size-8))}.mg-c-input.mg-c-input--width-16 .mg-c-input__with-character-left:not(:has(textarea)) .mg-c-input__box{width:calc(calc(26 * var(--mg-b-size-8)) + var(--mg-c-character-left-message-length)*(.35ch + .3rem))}.mg-c-input.mg-c-input--width-full:not(.mg-c-input--label-on-top){justify-content:stretch}.mg-c-input.mg-c-input--is-input-group-append ::slotted([slot=append-input]),.mg-c-input.mg-c-input--is-append-input-slot-content ::slotted([slot=append-input]){width:auto}:host(.mg-c-input.mg-c-input--width-full) ::slotted(*:not(mg-input-title)){width:100%;max-width:100%}.mg-c-input__readonly-value{min-height:var(--mg-b-font-size);align-self:flex-start;margin-top:calc((var(--mg-b-size-min-height) - var(--mg-b-font-size)*var(--mg-b-line-height))/2);word-break:break-word}.mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){*{animation:none !important;transition:none !important}}.mg-c-input.mg-c-input--combobox mg-popover{--mg-c-popover-padding-vertical:0;--mg-c-popover-padding-horizontal:0}.mg-c-input.mg-c-input--combobox .mg-c-input__input-group-container{position:relative}.mg-c-input.mg-c-input--combobox .mg-c-input__box{cursor:pointer}.mg-c-input.mg-c-input--combobox .mg-c-input__popover-container{display:flex;min-width:var(--mg-c-input-list-width);max-height:calc(50*var(--mg-b-size-8) - var(--mg-b-size-32));flex-direction:column;gap:var(--mg-b-size-4);overflow-y:scroll}.mg-c-input.mg-c-input--combobox .mg-c-input__popover-info{padding:var(--mg-b-size-8);margin:0;text-align:center}.mg-c-input.mg-c-input--combobox .mg-c-input__load-more{padding:0 var(--mg-b-size-8) var(--mg-b-size-4)}.mg-c-input.mg-c-input--combobox .mg-c-input__reset{padding-right:var(--mg-b-size-min-height)}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list{padding:0;margin:0;cursor:pointer;list-style:none}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item{display:flex;padding:var(--mg-b-size-8)}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item:hover,.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item.mg-c-input__input-list-item--focus-visible{background-color:var(--mg-b-color-neutral-20)}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item.mg-c-input__input-list-item--selected{font-weight:700}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item.mg-c-input__input-list-item--selected mg-icon{margin-left:auto}.mg-c-input.mg-c-input--combobox.mg-c-input--width-2 .mg-c-input__box{width:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2 + var(--mg-b-size-24) + var(--mg-b-size-min-height)*2 + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-4 .mg-c-input__box{width:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2 + var(--mg-b-size-48) + var(--mg-b-size-min-height)*2 + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-16 .mg-c-input__box{width:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2 + calc(23 * var(--mg-b-size-8)) + var(--mg-b-size-min-height)*2 + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-full mg-popover{--mg-c-popover-max-width:var(--mg-c-input-list-width, var(--mg-c-popover-max-width))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-full .mg-c-input__input-group-container{display:flex;width:100%}.mg-c-input.mg-c-input--combobox.mg-c-input--width-full .mg-c-input__box{flex:1}.mg-c-input.mg-c-input--combobox.mg-c-input--input-append .mg-c-input__box{padding-right:calc(var(--mg-b-size-min-height)*var(--mg-c-input-append-x) + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--input-append .mg-c-input__box-append{position:absolute;top:0;right:0}";const _=t=>t&&typeof t==="object"&&typeof t.title==="string"&&t.value!==undefined;const x=t=>Array.isArray(t)&&t.every(_);const y=t=>{const i=u(t)&&Object.hasOwn(t,"request")&&Object.hasOwn(t,"response");if(i){const{request:i,response:e}=t;if([i,e].some((t=>!u(t))))return false;const s=typeof i.filter==="string";const n=typeof e==="object"&&typeof e.total==="string"&&typeof e.items==="string"&&typeof e.next==="string"&&typeof e.itemTitle==="string"&&typeof e.itemValue==="string";return s&&n}else{return i}};const z=(t,i)=>{if(!Boolean(t))return;else if(URL.canParse(t)){return t}const e=t.includes("?")&&t.split("?").pop();if(Boolean(e)){const{origin:t,pathname:s}=new URL(i);return`${t}${s}?${e}`}else{return t}};const k=class{constructor(e){t(this,e);this.valueChange=i(this,"value-change");this.filterChange=i(this,"filter-change");this.loadMore=i(this,"load-more");this.inputValid=i(this,"input-valid");this.classFocus="mg-u-is-focused";this.hasDisplayedError=false;this.name=this.identifier;this.labelOnTop=false;this.labelHide=false;this.required=false;this.readonly=false;this.disabled=false;this.mgWidth="full";this.tooltipPosition="input";this.options=new n([]);this.filter="";this.classCollection=new o(["mg-c-input--combobox","mg-c-input--has-icon","mg-c-input--input-append"]);this.popoverDisplay=false;this.handleOptionClick=t=>{this.setValue(this.options.items.find((i=>i.value===t.target.id)));this.popoverDisplay=false};this.handleResetButton=t=>{t.stopPropagation();this.reset().then((()=>{this.input.focus()}))};this.handlePopoverDisplay=t=>{this.popoverDisplay=t.detail};this.handleFilterInput=()=>{this.checkValidity();if(this.hasDisplayedError)this.setErrorMessage();if(!this.popoverDisplay)this.popoverDisplay=true;this.filter=this.input.value};this.handleFilterBlur=()=>{if(this.popoverDisplay)return;this.handlerInProgress="blur";this.displayError().finally((()=>{this.handlerInProgress=undefined}))};this.handleFilterFocus=()=>{if(!this.isLoading){this.option=null}};this.handleLoadMoreButton=()=>{this.loadingWrapper({name:"load-more",cursor:a.NEXT}).then((()=>{this.input.focus()}))};this.handleFilterKeydown=t=>{if(this.disabled||t.ctrlKey||t.shiftKey)return;let i=false;switch(t.key){case v.TAB:case v.ENTER:i=t.key===v.ENTER;const e=this.option||this.options.items.find(this.isCurrentOption);if(this.popoverDisplay)this.setValue(this.page.total>0?e:null);this.popoverDisplay=false;break;case v.DOWN:case v.ARROWDOWN:case v.UP:case v.ARROWUP:i=true;if(this.isLoading||!(this.page.total>0)){this.popoverDisplay=true;break}if(Boolean(t.altKey)&&[v.DOWN,v.ARROWDOWN].includes(t.key)){this.popoverDisplay=true;break}let s;const n=this.popoverDisplay&&_(this.option);if([v.DOWN,v.ARROWDOWN].includes(t.key)){s=n?a.NEXT:a.FIRST}else if([v.UP,v.ARROWUP].includes(t.key)){s=n?a.PREVIOUS:a.LAST}this.loadingWrapper({name:"scroll",cursor:s});this.popoverDisplay=true;break;case v.LEFT:case v.ARROWLEFT:case v.HOME:case v.RIGHT:case v.ARROWRIGHT:case v.END:if(!_(this.option))break;i=true;this.option=null;let o;if(v.HOME===t.key){o=0}else if(v.END===t.key){o=this.filter.length}if(typeof o==="number"){this.input.setSelectionRange(o,o)}break;case v.ESC:case v.ESCAPE:i=true;if(this.popoverDisplay){this.popoverDisplay=false}else{this.setValue(null);this.filter="";this.option=null}break;default:this.option=null;break}if(i){t.stopPropagation();t.preventDefault()}};this.scrollToIndex=t=>{var i;(i=this.element.shadowRoot.querySelector(`li:nth-of-type(${(t||0)+this.page.baseIndex})`))===null||i===void 0?void 0:i.scrollIntoView()};this.isCurrentOption=t=>(_(this.value)?this.value.value:this.value)===t.value;this.getValueTitle=()=>{if(this.value&&_(this.value))return this.value.title;else if(typeof this.value==="string")return this.value;else return""};this.checkValidity=()=>{this.setValidity(this.readonly||this.disabled||this.input.checkValidity())};this.setErrorMessage=t=>{this.errorMessage=undefined;if(!this.valid&&t!==undefined){this.errorMessage=t}else if(!this.valid&&this.input.validity.valueMissing){this.errorMessage=this.messages.errors.required}};this.optionsFilter=t=>this.filter===""?true:t.title.toLocaleLowerCase().includes(this.filter.toLocaleLowerCase());this.loadingWrapper=t=>{let i;let e;if(!Boolean(this.loadingAction)){this.loadingAction=t.name}if(Boolean(this.option)&&this.loadingAction!=="load-more"){e=this.page.items.findIndex((t=>t.value.toString()===this.option.value.toString()))}else if(this.loadingAction==="load-more"){e=this.page.items.length-this.page.baseIndex}if(t.name==="load-more"){this.isLoading=true;i=this.goToNextPage}else if(t.cursor===a.NEXT&&this.page.items.length<=this.page.total&&e+this.page.baseIndex===this.page.items.length&&e+this.page.baseIndex<this.page.total){this.loadMoreElement.click();return}else if(t.name==="scroll"){i=r}else{i=this.updatePage}return i().then((()=>{const i=this.options.items.filter(this.optionsFilter);if(t.name!=="load-data"){e=this.page.getIndexFromCursor(t.cursor,this.loadingAction==="load-more"&&e>=0?i[e]:this.option)}this.option=i[e];this.scrollToIndex(e)})).finally((()=>{requestAnimationFrame((()=>{this.isLoading=false;this.loadingAction=undefined}))}))};this.goToNextPage=()=>{this.loadMore.emit();if(Boolean(this.fetchurl)){return this.getOptions(typeof this.page.next==="string"?this.page.next:undefined).then((t=>{if(!Boolean(t))return;const i=[...this.page.items,...t.items];this.options=new n(i,{total:t.total,next:t.next,top:i.length})}))}else{return r((()=>{if(typeof this.page.next==="function"){const t=this.page.next();this.page=new l(Object.assign(Object.assign({},t),{items:[...this.page.items,...t.items]}))}}))}};this.updatePage=async()=>{if(Boolean(this.fetchurl)){return this.getOptions().then((t=>{if(!Boolean(t))return;this.options=new n(t.items,{total:t.total,next:t.next,top:t.top})}))}else{this.page=this.options.getPage(0,this.optionsFilter)}};this.getOptions=async(t=this.fetchurl)=>{const i=(typeof t==="string"?t:t.toString()).replaceAll(this.fetchmappings.request.filter,encodeURIComponent(this.filter));try{const t=await fetch(i,this.fetchoptions).then((t=>t.json()));if(!t)return null;const e=h(t,this.fetchmappings.response.items).map((t=>({title:h(t,this.fetchmappings.response.itemTitle),value:h(t,this.fetchmappings.response.itemValue)})));const s=Number(h(t,this.fetchmappings.response.total,0));const n=z(h(t,this.fetchmappings.response.next),this.fetchurl.toString());return{items:e,total:s,next:n,top:e.length}}catch(t){}}}watchValue(t){this.filter=this.getValueTitle();this.valueChange.emit(t)}watchItems(t){if(Boolean(this.fetchurl)&&!Boolean(t)){return}else if(Boolean(this.fetchurl)&&Boolean(t)){throw new Error(`<mg-input-combobox> prop "items" values cannot be use with "fetchurl" prop defined. Passed value: ${c(t)}.`)}else if(Array.isArray(t)&&t.length===0){this.options=new n([])}else if(p(t)){this.options=new n(t.map((t=>({title:t,value:t}))),{total:t.length})}else if(x(t)){this.options=new n(t,{total:t.length})}else{throw new Error(`<mg-input-combobox> prop "items" values must be the same type, string or Option. Passed value: ${c(t)}.`)}}watchIdentifier(t){if(Boolean(t)){this.popoverId=`${t}-popover`;this.element.dataset.mgPopoverGuard=this.popoverId}}watchReadonly(t){if(t)this.classCollection.add(g);else this.classCollection.delete(g)}watchValidityChange(t,i,e){if(this.input===undefined)return;this.input[e]=t;this.checkValidity();if(this.hasDisplayedError){this.setErrorMessage();this.hasDisplayedError=false}}watchDisabled(t){if(t){this.classCollection.add(d)}else{this.classCollection.delete(d)}}watchMgWidth(t){b.forEach((t=>{this.classCollection.delete(`mg-c-input--width-${t}`)}));if(t!==undefined)this.classCollection.add(`mg-c-input--width-${this.mgWidth}`);this.classCollection=new o(this.classCollection.classes)}watchFetchUrl(t){if(t&&!URL.canParse(t)){throw new Error(`<mg-input-combobox> prop "fetchurl" value must be URL or string. Passed value: ${c(t)}.`)}}watchFetchOptions(t){if(this.fetchurl&&t&&!u(t)){throw new Error(`<mg-input-combobox> prop "fetchoptions" value must be a valid RequestInit. Passed value: ${c(t)}.`)}else{new Request(this.fetchurl,t)}}watchFetchMappings(t){if(Boolean(this.fetchurl)&&!Boolean(t)){throw new Error(`<mg-input-combobox> prop "fetchmappings" is required with "fetchurl" prop.`)}else if(Boolean(t)&&!y(t)){throw new Error(`<mg-input-combobox> prop "fetchmappings" value must be { request: RequestMappingType, response: ResponseMappingType }. Passed value: ${c(t)}.`)}}watchOptions(t){this.page=t.getPage(0,Boolean(this.filter)?this.optionsFilter:undefined)}watchFilter(t){this.loadingWrapper({name:"load-data"});this.filterChange.emit(t)}watchPopoverDisplay(t){if(t){this.classCollection.add(this.classFocus);this.input.focus();this.scrollToIndex(0)}else{this.option=null;this.filter=this.getValueTitle();this.classCollection.delete(this.classFocus);this.handlerInProgress="blur";this.displayError().finally((()=>{this.handlerInProgress=undefined}))}}async setFocus(){this.input.focus()}displayError(){return new Promise((t=>{requestAnimationFrame((()=>{this.checkValidity();this.setErrorMessage();this.hasDisplayedError=this.invalid;t()}))}))}async setError(t,i){if(typeof t!=="boolean"){throw new Error('<mg-input-combobox> method "setError()" param "valid" must be a boolean.')}else if(!m(i)){throw new Error('<mg-input-combobox> method "setError()" param "errorMessage" must be a string.')}else{this.setValidity(t);this.setErrorMessage(t?undefined:i);this.hasDisplayedError=this.invalid}}async reset(){if(this.readonly)return;this.setValue(null);this.option=null;this.filter="";this.checkValidity();this.errorMessage=undefined;this.hasDisplayedError=false}setValue(t){if(!_(t)){this.value=""}else{this.value=p(this.items||this.options.items)?t.title:Object.assign({},t)}}setValidity(t){const i=this.valid;this.valid=t;this.invalid=!this.valid;if(this.handlerInProgress===undefined||this.handlerInProgress==="blur"&&this.valid!==i)this.inputValid.emit(this.valid)}componentWillLoad(){this.messages=f(this.element).messages;this.watchIdentifier(this.identifier);this.watchItems(this.items);if(Boolean(this.fetchurl)){this.watchFetchUrl(this.fetchurl);this.watchFetchOptions(this.fetchoptions);this.watchFetchMappings(this.fetchmappings);this.loadingWrapper({name:"load-data"})}this.watchValue(this.value);this.watchOptions(this.options);this.watchMgWidth(this.mgWidth);this.watchReadonly(this.readonly);this.watchDisabled(this.disabled);return setTimeout((()=>{this.checkValidity()}),0)}render(){var t,i,s,n,o,a;const r=`${this.identifier}-list`;const h=this.getValueTitle();const c=this.value&&!this.disabled;let p;if(((t=this.page)===null||t===void 0?void 0:t.items.length)>0)p="list";else if(((i=this.page)===null||i===void 0?void 0:i.items.length)===0&&Boolean(this.filter))p="notfound";else if(((s=this.page)===null||s===void 0?void 0:s.items.length)===0)p="notavailable";return e("mg-input",{key:"b8c4c6d18bb1d16ff0a8494ddb698cb4e0198e43",label:this.label,identifier:this.identifier,class:this.classCollection.classes.join(" "),ariaDescribedbyIDs:p&&p!=="list"?[p]:[],labelOnTop:this.labelOnTop,labelHide:this.labelHide,required:this.required,tooltip:this.tooltip,tooltipPosition:this.readonly&&this.value===undefined?"label":this.tooltipPosition,helpText:this.helpText,errorMessage:this.errorMessage},this.readonly?h&&e("b",{class:"mg-c-input__readonly-value"},h):e("mg-popover",{identifier:this.popoverId,placement:"bottom-start",display:this.popoverDisplay,"arrow-hide":true,style:{"--mg-c-input-list-width":Boolean((n=this.input)===null||n===void 0?void 0:n.offsetWidth)?`${this.input.offsetWidth}px`:undefined,"--mg-c-input-append-x":c?"2":"1"},"data-fallback-placement":"bottom-end","onDisplay-change":this.handlePopoverDisplay},e("div",{class:"mg-c-input__input-group-container"},e("mg-icon",{icon:"magnifying-glass"}),e("input",{type:"text",role:"combobox",class:"mg-c-input__box mg-c-input__box--width",value:this.filter,id:this.identifier,name:this.name,placeholder:this.placeholder,title:this.placeholder,disabled:this.disabled,required:this.required,autocomplete:"off","aria-autocomplete":"list","aria-expanded":this.popoverDisplay.toString(),"aria-controls":r,"aria-invalid":(this.invalid===true).toString(),"aria-activedescendant":Boolean((o=this.option)===null||o===void 0?void 0:o.value)?this.option.value:typeof this.value==="string"?this.value:(a=this.value)===null||a===void 0?void 0:a.value,onInput:this.handleFilterInput,onBlur:this.handleFilterBlur,onFocus:this.handleFilterFocus,onKeyDown:this.handleFilterKeydown,ref:t=>{if(t!==null)this.input=t}}),c&&e("mg-button",{class:"mg-c-input__box-append mg-c-input__reset",variant:"flat","is-icon":true,label:this.messages.general.reset,"aria-controls":this.identifier,tabindex:"-1",onClick:this.handleResetButton},e("mg-icon",{icon:"cross"})),e("mg-button",{class:"mg-c-input__box-append",variant:"flat","is-icon":true,label:this.itemsLabel,tabindex:"-1",disabled:this.disabled},e("mg-icon",{icon:`chevron-${this.popoverDisplay?"up":"down"}`}))),e("div",{slot:"content",class:"mg-c-input__popover-container"},p==="list"&&[e("ul",{key:"list",class:"mg-c-input__input-list",role:"listbox",id:r,"aria-label":this.itemsLabel,"aria-setsize":this.page.total},this.page.items.map((t=>e("li",{role:"option",class:{"mg-c-input__input-list-item":true,"mg-c-input__input-list-item--focus-visible":this.option===t,"mg-c-input__input-list-item--selected":this.isCurrentOption(t)},key:t.title,id:t.value.toString(),"aria-selected":this.isCurrentOption(t).toString(),onClick:this.handleOptionClick},t.title,this.isCurrentOption(t)&&e("mg-icon",{icon:"check"}))))),this.isLoading&&e("mg-loader",{key:"loader",message:this.messages.input.combobox.search,class:{"mg-u-visually-hidden":Boolean(this.page.next)}}),this.page.next&&e("mg-button",{key:"load-more",variant:"flat",class:"mg-c-input__load-more",tabIndex:-1,disabled:this.isLoading,"full-width":true,"disable-on-click":true,onClick:this.handleLoadMoreButton,"aria-controls":r,ref:t=>{if(t!==null)this.loadMoreElement=t}},e("mg-icon",{icon:"chevron-down"}),this.messages.input.combobox.loadMore)],p==="notfound"&&e("p",{id:p,class:"mg-c-input__popover-info"},this.messages.input.combobox.notFound),p==="notavailable"&&e("p",{id:p,class:"mg-c-input__popover-info"},this.messages.input.combobox.notAvailable))))}get element(){return s(this)}static get watchers(){return{value:["watchValue"],items:["watchItems"],identifier:["watchIdentifier"],readonly:["watchReadonly","watchValidityChange"],required:["watchValidityChange"],disabled:["watchValidityChange","watchDisabled"],mgWidth:["watchMgWidth"],fetchurl:["watchFetchUrl"],fetchoptions:["watchFetchOptions"],fetchmappings:["watchFetchMappings"],options:["watchOptions"],filter:["watchFilter"],popoverDisplay:["watchPopoverDisplay"]}}};k.style=w;export{k as mg_input_combobox};
2
+ //# sourceMappingURL=p-0f761c6c.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mgInputComboboxCss","isItem","item","title","value","undefined","isItems","items","Array","isArray","every","isFetchmappings","isValidRoot","isObject","Object","hasOwn","request","response","some","property","isValidRequest","filter","isValidResponse","total","next","itemTitle","itemValue","mapUrl","newValue","oldValue","Boolean","URL","canParse","params","includes","split","pop","origin","pathname","MgInputCombobox","constructor","hostRef","this","classFocus","hasDisplayedError","name","identifier","labelOnTop","labelHide","required","readonly","disabled","mgWidth","tooltipPosition","options","Paginate","classCollection","ClassList","popoverDisplay","handleOptionClick","event","setValue","find","option","target","id","handleResetButton","stopPropagation","reset","then","input","focus","handlePopoverDisplay","detail","handleFilterInput","checkValidity","setErrorMessage","handleFilterBlur","handlerInProgress","displayError","finally","handleFilterFocus","isLoading","handleLoadMoreButton","loadingWrapper","cursor","Cursor","NEXT","handleFilterKeydown","ctrlKey","shiftKey","guard","key","Keys","TAB","ENTER","isCurrentOption","page","DOWN","ARROWDOWN","UP","ARROWUP","altKey","isNavigationStart","FIRST","PREVIOUS","LAST","LEFT","ARROWLEFT","HOME","RIGHT","ARROWRIGHT","END","index","length","setSelectionRange","ESC","ESCAPE","preventDefault","scrollToIndex","_a","element","shadowRoot","querySelector","baseIndex","scrollIntoView","getValueTitle","setValidity","errorMessage","valid","validity","valueMissing","messages","errors","optionsFilter","toLocaleLowerCase","action","promise","loadingAction","findIndex","toString","goToNextPage","loadMoreElement","click","nextTick","updatePage","getIndexFromCursor","requestAnimationFrame","loadMore","emit","fetchurl","getOptions","nextPage","top","Page","assign","async","getPage","url","updateUrl","replaceAll","fetchmappings","encodeURIComponent","fetch","fetchoptions","json","getObjectValueFromKey","map","Number","watchValue","valueChange","watchItems","Error","allItemsAreString","watchIdentifier","popoverId","dataset","mgPopoverGuard","watchReadonly","add","classReadonly","delete","watchValidityChange","_oldValue","prop","watchDisabled","classDisabled","watchMgWidth","widths","forEach","width","classes","watchFetchUrl","watchFetchOptions","Request","watchFetchMappings","watchOptions","watchFilter","filterChange","watchPopoverDisplay","setFocus","Promise","resolve","invalid","setError","isValidString","oldValidValue","inputValid","componentWillLoad","initLocales","setTimeout","render","listId","readonlyValue","withResetButton","popoverContent","_b","_c","h","label","class","join","ariaDescribedbyIDs","tooltip","helpText","placement","display","style","_d","offsetWidth","icon","type","role","placeholder","autocomplete","_e","_f","onInput","onBlur","onFocus","onKeyDown","ref","el","variant","general","tabindex","onClick","itemsLabel","slot","message","combobox","search","tabIndex","notFound","notAvailable"],"sources":["../styles/dist/components/mg-input-combobox.css?tag=mg-input-combobox&encapsulation=shadow","src/components/molecules/inputs/mg-input-combobox/mg-input-combobox.tsx"],"sourcesContent":[".mg-c-input__box{height:var(--mg-b-size-min-height);box-sizing:border-box;padding:calc((var(--mg-b-size-min-height) - var(--mg-b-font-size)*var(--mg-b-line-height))/2) var(--mg-b-size-8);border-width:var(--mg-c-input-border-width);border-style:solid;border-color:var(--mg-c-input-color-border);border-radius:var(--mg-c-input-border-radius);background-color:var(--mg-b-color-light);color:var(--mg-b-color-dark);font-family:inherit;font-size:var(--mg-b-font-size);text-align:var(--mg-c-input-text-align, left)}.mg-c-input__box::placeholder{color:var(--mg-c-input-placeholder-color-text);font-style:italic}.mg-c-input__box:focus{box-shadow:0 0 var(--mg-b-size-4) var(--mg-c-input-color-box-shadow-focus)}.mg-c-input__box:disabled{opacity:var(--mg-b-opacity-element-disabled)}.mg-c-input.mg-c-input--has-error .mg-c-input__box{border-color:var(--mg-b-color-danger)}.mg-c-input.mg-c-input--is-input-group-append{--mg-c-button-border-radius-top-left: 0;--mg-c-button-border-radius-bottom-left: 0}.mg-c-input.mg-c-input--is-input-group-append .mg-c-input__box{margin-right:calc(-1*var(--mg-b-size-border));border-bottom-right-radius:0;border-top-right-radius:0}.mg-c-input.mg-c-input--is-input-group-append .mg-c-input__box:focus-visible{outline-offset:-0.2rem;outline-style:solid;outline-width:.2rem}.mg-c-input.mg-c-input--has-buttons-group-append ::slotted([slot=append-input]){--mg-c-button-border-radius-top-right: 0;--mg-c-button-border-radius-bottom-right: 0}.mg-c-input.mg-c-input--has-buttons-group-append ::slotted([slot=append-input]:not(:last-of-type)){--mg-c-button-border-right-width: 0}.mg-c-input.mg-c-input--has-buttons-group-append ::slotted([slot=append-input]:last-of-type){--mg-c-button-border-radius-top-right: var(--mg-c-input-border-radius);--mg-c-button-border-radius-bottom-right: var(--mg-c-input-border-radius)}.mg-c-input.mg-c-input--is-append-input-slot-content:not(.mg-c-input--readonly) ::slotted([slot=append-input]){align-self:start;padding-top:calc((var(--mg-b-size-min-height) - var(--mg-b-size-16))/2)}.mg-c-input.mg-c-input--has-icon .mg-c-input__with-character-left>mg-icon:first-of-type,.mg-c-input.mg-c-input--has-icon .mg-c-input__input-group-container>mg-icon:first-of-type{position:absolute;top:50%;left:var(--mg-b-size-8);color:var(--mg-c-input-color-icon);transform:translateY(-50%)}.mg-c-input.mg-c-input--has-icon .mg-c-input__with-character-left .mg-c-input__box,.mg-c-input.mg-c-input--has-icon .mg-c-input__input-group-container .mg-c-input__box{padding-left:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2)}.mg-c-input__input-container{width:100%;flex:1 auto}.mg-c-input.mg-c-input--width-full .mg-c-input__box{width:100%}.mg-c-input.mg-c-input--width-2 .mg-c-input__with-character-left,.mg-c-input.mg-c-input--width-4 .mg-c-input__with-character-left,.mg-c-input.mg-c-input--width-16 .mg-c-input__with-character-left{width:max-content}.mg-c-input.mg-c-input--width-2 .mg-c-input__with-character-left:has(textarea),.mg-c-input.mg-c-input--width-4 .mg-c-input__with-character-left:has(textarea),.mg-c-input.mg-c-input--width-16 .mg-c-input__with-character-left:has(textarea){flex-grow:inherit}.mg-c-input.mg-c-input--width-2 .mg-c-input__box{width:var(--mg-b-size-48)}.mg-c-input.mg-c-input--width-2 .mg-c-input__with-character-left:not(:has(textarea)) .mg-c-input__box{width:calc(var(--mg-b-size-48) + var(--mg-c-character-left-message-length)*(.35ch + .3rem))}.mg-c-input.mg-c-input--width-4 .mg-c-input__box{width:var(--mg-b-size-72)}.mg-c-input.mg-c-input--width-4 .mg-c-input__with-character-left:not(:has(textarea)) .mg-c-input__box{width:calc(var(--mg-b-size-72) + var(--mg-c-character-left-message-length)*(.35ch + .3rem))}.mg-c-input.mg-c-input--width-16 .mg-c-input__box{width:calc(26*var(--mg-b-size-8))}.mg-c-input.mg-c-input--width-16 .mg-c-input__with-character-left:not(:has(textarea)) .mg-c-input__box{width:calc(calc(26 * var(--mg-b-size-8)) + var(--mg-c-character-left-message-length)*(.35ch + .3rem))}.mg-c-input.mg-c-input--width-full:not(.mg-c-input--label-on-top){justify-content:stretch}.mg-c-input.mg-c-input--is-input-group-append ::slotted([slot=append-input]),.mg-c-input.mg-c-input--is-append-input-slot-content ::slotted([slot=append-input]){width:auto}:host(.mg-c-input.mg-c-input--width-full) ::slotted(*:not(mg-input-title)){width:100%;max-width:100%}.mg-c-input__readonly-value{min-height:var(--mg-b-font-size);align-self:flex-start;margin-top:calc((var(--mg-b-size-min-height) - var(--mg-b-font-size)*var(--mg-b-line-height))/2);word-break:break-word}.mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion){*{animation:none !important;transition:none !important}}.mg-c-input.mg-c-input--combobox mg-popover{--mg-c-popover-padding-vertical: 0;--mg-c-popover-padding-horizontal: 0}.mg-c-input.mg-c-input--combobox .mg-c-input__input-group-container{position:relative}.mg-c-input.mg-c-input--combobox .mg-c-input__box{cursor:pointer}.mg-c-input.mg-c-input--combobox .mg-c-input__popover-container{display:flex;min-width:var(--mg-c-input-list-width);max-height:calc(50*var(--mg-b-size-8) - var(--mg-b-size-32));flex-direction:column;gap:var(--mg-b-size-4);overflow-y:scroll}.mg-c-input.mg-c-input--combobox .mg-c-input__popover-info{padding:var(--mg-b-size-8);margin:0;text-align:center}.mg-c-input.mg-c-input--combobox .mg-c-input__load-more{padding:0 var(--mg-b-size-8) var(--mg-b-size-4)}.mg-c-input.mg-c-input--combobox .mg-c-input__reset{padding-right:var(--mg-b-size-min-height)}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list{padding:0;margin:0;cursor:pointer;list-style:none}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item{display:flex;padding:var(--mg-b-size-8)}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item:hover,.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item.mg-c-input__input-list-item--focus-visible{background-color:var(--mg-b-color-neutral-20)}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item.mg-c-input__input-list-item--selected{font-weight:700}.mg-c-input.mg-c-input--combobox .mg-c-input__input-list-item.mg-c-input__input-list-item--selected mg-icon{margin-left:auto}.mg-c-input.mg-c-input--combobox.mg-c-input--width-2 .mg-c-input__box{width:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2 + var(--mg-b-size-24) + var(--mg-b-size-min-height)*2 + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-4 .mg-c-input__box{width:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2 + var(--mg-b-size-48) + var(--mg-b-size-min-height)*2 + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-16 .mg-c-input__box{width:calc(var(--mg-b-size-16) + var(--mg-b-size-8)*2 + calc(23 * var(--mg-b-size-8)) + var(--mg-b-size-min-height)*2 + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-full mg-popover{--mg-c-popover-max-width: var(--mg-c-input-list-width, var(--mg-c-popover-max-width))}.mg-c-input.mg-c-input--combobox.mg-c-input--width-full .mg-c-input__input-group-container{display:flex;width:100%}.mg-c-input.mg-c-input--combobox.mg-c-input--width-full .mg-c-input__box{flex:1}.mg-c-input.mg-c-input--combobox.mg-c-input--input-append .mg-c-input__box{padding-right:calc(var(--mg-b-size-min-height)*var(--mg-c-input-append-x) + var(--mg-b-size-4))}.mg-c-input.mg-c-input--combobox.mg-c-input--input-append .mg-c-input__box-append{position:absolute;top:0;right:0}/*# sourceMappingURL=mg-input-combobox.css.map */\n","import { Component, Event, h, Prop, EventEmitter, State, Element, Method, Watch } from '@stencil/core';\nimport { allItemsAreString, ClassList, getObjectValueFromKey, isValidString, nextTick, Page, Paginate, Cursor, type CursorType, toString, isObject } from '@mgdis/stencil-helpers';\nimport { type ActionType, type RequestMappingType, type ResponseMappingType } from './mg-input-combobox.conf';\nimport { type TooltipPosition, type Width, type EventType, widths, classReadonly, classDisabled } from '../mg-input/mg-input.conf';\nimport type { Option } from '../../../../types';\nimport { initLocales } from '../../../../locales';\nimport { Keys } from '../../../../utils/events.utils';\n\n/**\n * Check if object is an item\n * @param item - object to check\n * @returns True if object is an item\n */\nconst isItem = (item: unknown): item is Option => item && typeof item === 'object' && typeof (item as Option).title === 'string' && (item as Option).value !== undefined;\n\n/**\n * Check if objects are items\n * @param items - items to check\n * @returns True if objects are items\n */\nconst isItems = (items: unknown[]): items is Option[] => Array.isArray(items) && items.every(isItem);\n\n/**\n * Check if object is valid combobox fetchmappings\n * @param value - to validate\n * @returns truthy if mapping is valid\n */\nconst isFetchmappings = (value: unknown): value is MgInputCombobox['fetchmappings'] => {\n const isValidRoot = isObject<Record<string, unknown>>(value) && Object.hasOwn(value, 'request') && Object.hasOwn(value, 'response');\n if (isValidRoot) {\n const { request, response } = value as MgInputCombobox['fetchmappings'];\n if ([request, response].some(property => !isObject(property))) return false;\n const isValidRequest = typeof request.filter === 'string';\n const isValidResponse =\n typeof response === 'object' &&\n typeof response.total === 'string' &&\n typeof response.items === 'string' &&\n typeof response.next === 'string' &&\n typeof response.itemTitle === 'string' &&\n typeof response.itemValue === 'string';\n return isValidRequest && isValidResponse;\n } else {\n return isValidRoot;\n }\n};\n\n/**\n * Map new URL from old url\n * @param newValue - new URL value\n * @param oldValue - previous URL value\n * @returns updated url\n */\nconst mapUrl = (newValue: string, oldValue: string): string => {\n if (!Boolean(newValue)) return;\n else if (URL.canParse(newValue)) {\n return newValue;\n }\n\n // build new URL\n const params = newValue.includes('?') && newValue.split('?').pop();\n if (Boolean(params)) {\n const { origin, pathname } = new URL(oldValue);\n return `${origin}${pathname}?${params}`;\n } else {\n return newValue;\n }\n};\n\n@Component({\n tag: 'mg-input-combobox',\n styleUrl: '../../../../../node_modules/@mgdis/styles/dist/components/mg-input-combobox.css',\n shadow: true,\n})\nexport class MgInputCombobox {\n /************\n * Internal *\n ************/\n\n // Classes\n private readonly classFocus = 'mg-u-is-focused';\n\n // HTML selector\n private input: HTMLInputElement;\n private loadMoreElement: HTMLMgButtonElement;\n private popoverId: string;\n\n // Locales\n private messages;\n\n // hasDisplayedError (triggered by blur event)\n private hasDisplayedError = false;\n\n private handlerInProgress: EventType;\n private loadingAction: ActionType['name'];\n\n private page: Page<Option>;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgInputComboboxElement;\n\n /**\n * Define component value\n */\n @Prop({ mutable: true, reflect: true }) value: string | Option;\n @Watch('value')\n watchValue(newValue: MgInputCombobox['value']): void {\n this.filter = this.getValueTitle();\n this.valueChange.emit(newValue);\n }\n\n /**\n * Define components items\n */\n @Prop() items: (string | Option)[];\n @Watch('items')\n watchItems(newValue: MgInputCombobox['items']) {\n if (Boolean(this.fetchurl) && !Boolean(newValue)) {\n // skip newValue check\n return;\n } else if (Boolean(this.fetchurl) && Boolean(newValue)) {\n throw new Error(`<mg-input-combobox> prop \"items\" values cannot be use with \"fetchurl\" prop defined. Passed value: ${toString(newValue)}.`);\n }\n // Empty options\n else if (Array.isArray(newValue) && newValue.length === 0) {\n this.options = new Paginate([]);\n }\n // String array\n else if (allItemsAreString(newValue)) {\n this.options = new Paginate(\n newValue.map(item => ({ title: item, value: item })),\n { total: newValue.length },\n );\n }\n // Object array\n else if (isItems(newValue)) {\n this.options = new Paginate(newValue, { total: newValue.length });\n } else {\n throw new Error(`<mg-input-combobox> prop \"items\" values must be the same type, string or Option. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Define items label\n * Include short description. Required for accessibility.\n * @example\n * ```\n * Countries\n * ```\n */\n @Prop() itemsLabel!: string;\n\n /**\n * Identifier is used for the element ID (id is a reserved prop in Stencil.js)\n */\n @Prop() identifier!: string;\n @Watch('identifier')\n watchIdentifier(newValue: MgInputCombobox['identifier']): void {\n if (Boolean(newValue)) {\n this.popoverId = `${newValue}-popover`;\n this.element.dataset.mgPopoverGuard = this.popoverId;\n }\n }\n\n /**\n * Input name\n * If not set the value equals the identifier\n */\n @Prop() name: string = this.identifier;\n\n /**\n * Input label\n */\n @Prop() label!: string;\n\n /**\n * Define if label is displayed on top\n */\n @Prop() labelOnTop = false;\n\n /**\n * Define if label is visible\n */\n @Prop() labelHide = false;\n\n /**\n * Define input placeholder.\n * It should be a word or short phrase that demonstrates the expected type of data, not a replacement for labels or help combobox.\n */\n @Prop() placeholder?: string;\n\n /**\n * Define if input is required\n */\n @Prop() required = false;\n\n /**\n * Define if input is readonly\n */\n @Prop() readonly = false;\n @Watch('readonly')\n watchReadonly(newValue: MgInputCombobox['readonly']): void {\n if (newValue) this.classCollection.add(classReadonly);\n else this.classCollection.delete(classReadonly);\n }\n\n /**\n * Define if input is disabled\n */\n @Prop() disabled = false;\n @Watch('required')\n @Watch('readonly')\n @Watch('disabled')\n watchValidityChange(newValue: boolean, _oldValue: boolean, prop: string): void {\n if (this.input === undefined) return;\n this.input[prop] = newValue;\n this.checkValidity();\n if (this.hasDisplayedError) {\n this.setErrorMessage();\n this.hasDisplayedError = false;\n }\n }\n\n @Watch('disabled')\n watchDisabled(newValue: MgInputCombobox['disabled']): void {\n if (newValue) {\n this.classCollection.add(classDisabled);\n } else {\n this.classCollection.delete(classDisabled);\n }\n }\n\n /**\n * Define input width\n */\n @Prop() mgWidth: Width = 'full';\n @Watch('mgWidth')\n watchMgWidth(newValue: MgInputCombobox['mgWidth']): void {\n // reset width class\n widths.forEach(width => {\n this.classCollection.delete(`mg-c-input--width-${width}`);\n });\n\n // apply new width\n if (newValue !== undefined) this.classCollection.add(`mg-c-input--width-${this.mgWidth}`);\n this.classCollection = new ClassList(this.classCollection.classes);\n }\n\n /**\n * Add a tooltip message next to the input\n */\n @Prop() tooltip?: string;\n\n /**\n * Define tooltip position\n */\n @Prop() tooltipPosition: TooltipPosition = 'input';\n\n /**\n * Add a help text under the input, usually expected data format and example\n */\n @Prop() helpText?: string;\n\n /**\n * Define API url to fetch\n * @example\n * ```\n * {\n * url: \"http://myapi.com?$select='href,name'&my-custom-param='my-custom-value'\", // url to fetch\n * }\n * ```\n */\n @Prop() fetchurl?: string | URL;\n @Watch('fetchurl')\n watchFetchUrl(newValue: MgInputCombobox['fetchurl']): void {\n if (newValue && !URL.canParse(newValue)) {\n throw new Error(`<mg-input-combobox> prop \"fetchurl\" value must be URL or string. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Define fetch options object\n * Require `fetchurl` prop to be defined otherwith it will be ignored if defined\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RequestInit}\n * @example JSON headers:\n * ```json\n * {\n * \"headers\": {\n * \"authorization\": \"my-token\"\n * }\n * }\n * ```\n */\n @Prop() fetchoptions?: RequestInit;\n @Watch('fetchoptions')\n watchFetchOptions(newValue: MgInputCombobox['fetchoptions']): void {\n if (this.fetchurl && newValue && !isObject(newValue)) {\n throw new Error(`<mg-input-combobox> prop \"fetchoptions\" value must be a valid RequestInit. Passed value: ${toString(newValue)}.`);\n } else {\n new Request(this.fetchurl, newValue);\n }\n }\n\n /**\n * Define fetch request mappings.\n * Required with `fetchurl`\n * @example\n * ```\n * {\n * request: {\n * filter: 'name', // `filter` key\n * },\n * response: {\n * total: 'body.data.total', // response object mapping to get `total` value\n * items: 'body.data.results' // response object mapping to get `items` value\n * next: 'body.next' // response object mapping to get `next` items\n * itemTitle: 'name', // item property to map on item['title']\n * itemValue: 'href', // item property to map on item['value']\n * }\n * }\n * ```\n */\n @Prop() fetchmappings?: { request: RequestMappingType; response: ResponseMappingType };\n @Watch('fetchmappings')\n watchFetchMappings(newValue: MgInputCombobox['fetchmappings']): void {\n if (Boolean(this.fetchurl) && !Boolean(newValue)) {\n throw new Error(`<mg-input-combobox> prop \"fetchmappings\" is required with \"fetchurl\" prop.`);\n } else if (Boolean(newValue) && !isFetchmappings(newValue)) {\n throw new Error(\n `<mg-input-combobox> prop \"fetchmappings\" value must be { request: RequestMappingType, response: ResponseMappingType }. Passed value: ${toString(newValue)}.`,\n );\n }\n }\n\n /**\n * Define input valid state\n */\n @Prop({ mutable: true }) valid: boolean;\n\n /**\n * Define input invalid state\n */\n @Prop({ mutable: true }) invalid: boolean;\n\n /**\n * Define if items are loading\n */\n @State() isLoading: boolean;\n\n /**\n * Formated items for display\n */\n @State() options: Paginate<Option> = new Paginate([]);\n @Watch('options')\n watchOptions(newValue: Paginate<Option>): void {\n this.page = newValue.getPage(0, Boolean(this.filter) ? this.optionsFilter : undefined);\n }\n\n /**\n * Active option\n */\n @State() option: Option;\n\n /**\n * Option filter\n */\n @State() filter: string = '';\n @Watch('filter')\n watchFilter(newValue: MgInputCombobox['filter']): void {\n this.loadingWrapper({ name: 'load-data' });\n this.filterChange.emit(newValue);\n }\n\n /**\n * Component classes\n */\n @State() classCollection: ClassList = new ClassList(['mg-c-input--combobox', 'mg-c-input--has-icon', 'mg-c-input--input-append']);\n\n /**\n * Error message to display\n */\n @State() errorMessage: string;\n\n /**\n * Popover display state\n */\n @State() popoverDisplay = false;\n @Watch('popoverDisplay')\n watchPopoverDisplay(newValue: MgInputCombobox['popoverDisplay']): void {\n if (newValue) {\n this.classCollection.add(this.classFocus);\n this.input.focus();\n this.scrollToIndex(0);\n } else {\n // remove visual focus\n this.option = null;\n // reset filter with value\n this.filter = this.getValueTitle();\n this.classCollection.delete(this.classFocus);\n this.handlerInProgress = 'blur';\n this.displayError().finally(() => {\n // reset guard\n this.handlerInProgress = undefined;\n });\n }\n }\n\n /**\n * Emited event when value change\n */\n @Event({ eventName: 'value-change' }) valueChange: EventEmitter<HTMLMgInputComboboxElement['value']>;\n\n /**\n * Emited event when filter change\n */\n @Event({ eventName: 'filter-change' }) filterChange: EventEmitter<string>;\n\n /**\n * Emited event when `load-more` is called\n */\n @Event({ eventName: 'load-more' }) loadMore: EventEmitter<void>;\n\n /**\n * Emited event when checking validity\n */\n @Event({ eventName: 'input-valid' }) inputValid: EventEmitter<HTMLMgInputComboboxElement['valid']>;\n\n /**\n * Public method to play input focus\n */\n @Method()\n async setFocus(): Promise<void> {\n this.input.focus();\n }\n\n /**\n * Display input error if it exists.\n */\n @Method()\n displayError(): Promise<void> {\n // Use `Promise` as requested for stencil method\n // Use `requestAnimationFrame` to ensure:\n // - DOM is fully updated before validation\n // - Async operations are completed\n // - No timing issues with Stencil's render cycle\n // - Keep everything in sync both inside and outside the component\n return new Promise(resolve => {\n requestAnimationFrame(() => {\n this.checkValidity();\n this.setErrorMessage();\n this.hasDisplayedError = this.invalid;\n resolve();\n });\n });\n }\n\n /**\n * Set an error and display a custom error message.\n * This method can be used to set the component's error state from its concombobox by passing a boolean value to the `valid` parameter.\n * It must be paired with an error message to display for the given concombobox.\n * When used to set validity to `false`, you should use this method again to reset the validity to `true`.\n * @param valid - value indicating the validity\n * @param errorMessage - the error message to display\n */\n @Method()\n async setError(valid: MgInputCombobox['valid'], errorMessage: string): Promise<void> {\n if (typeof valid !== 'boolean') {\n throw new Error('<mg-input-combobox> method \"setError()\" param \"valid\" must be a boolean.');\n } else if (!isValidString(errorMessage)) {\n throw new Error('<mg-input-combobox> method \"setError()\" param \"errorMessage\" must be a string.');\n } else {\n this.setValidity(valid);\n this.setErrorMessage(valid ? undefined : errorMessage);\n this.hasDisplayedError = this.invalid;\n }\n }\n\n /**\n * Reset value, validity and error state\n */\n @Method()\n async reset(): Promise<void> {\n if (this.readonly) return;\n this.setValue(null);\n this.option = null;\n this.filter = '';\n this.checkValidity();\n this.errorMessage = undefined;\n this.hasDisplayedError = false;\n }\n\n /**\n * Handle `click` event on option\n * @param event - option element click event\n */\n private handleOptionClick = (event: MouseEvent & { target: HTMLLIElement }) => {\n this.setValue(this.options.items.find(option => option.value === event.target.id));\n this.popoverDisplay = false;\n };\n\n /**\n * Handle `click` event on reset button\n * @param event - click event\n */\n private handleResetButton = (event: MouseEvent): void => {\n event.stopPropagation();\n this.reset().then(() => {\n this.input.focus();\n });\n };\n\n /**\n * Handle `display-change` event on mg-popover\n */\n private handlePopoverDisplay = (event: CustomEvent): void => {\n this.popoverDisplay = event.detail;\n };\n\n /**\n * Handle input event\n */\n private handleFilterInput = (): void => {\n this.checkValidity();\n if (this.hasDisplayedError) this.setErrorMessage();\n if (!this.popoverDisplay) this.popoverDisplay = true;\n this.filter = this.input.value;\n };\n\n /**\n * Handle `blur` event\n */\n private handleFilterBlur = (): void => {\n // skip process if popover is displayed\n if (this.popoverDisplay) return;\n\n // Display Error\n this.handlerInProgress = 'blur';\n this.displayError().finally(() => {\n // reset guard\n this.handlerInProgress = undefined;\n });\n };\n\n /**\n * Handle `focus` event\n */\n private handleFilterFocus = (): void => {\n // ensure visual focus is always clear on focus when component isn't in loading state\n if (!this.isLoading) {\n this.option = null;\n }\n };\n\n /**\n * Handle load-more <mg-button> `click`\n */\n private handleLoadMoreButton = (): void => {\n this.loadingWrapper({ name: 'load-more', cursor: Cursor.NEXT }).then(() => {\n this.input.focus();\n });\n };\n\n /**\n * Handle `keypress` event\n * @param event - keyboard event\n */\n private handleFilterKeydown = (event: KeyboardEvent): void => {\n if (this.disabled || event.ctrlKey || event.shiftKey) return;\n\n let guard = false;\n\n // override keys actions\n switch (event.key) {\n case Keys.TAB:\n case Keys.ENTER:\n guard = event.key === Keys.ENTER;\n const option = this.option || this.options.items.find(this.isCurrentOption);\n // Sets the value to the content of the focused option in the listbox.\n if (this.popoverDisplay) this.setValue(this.page.total > 0 ? option : null);\n // Closes the popover.\n this.popoverDisplay = false;\n break;\n\n case Keys.DOWN:\n case Keys.ARROWDOWN:\n case Keys.UP:\n case Keys.ARROWUP:\n guard = true;\n if (this.isLoading || !(this.page.total > 0)) {\n this.popoverDisplay = true;\n break;\n }\n\n if (Boolean(event.altKey) && [Keys.DOWN, Keys.ARROWDOWN].includes(event.key)) {\n // Opens the popover without moving focus or changing selection.\n this.popoverDisplay = true;\n break;\n }\n\n // define cursor\n let cursor: CursorType;\n const isNavigationStart = this.popoverDisplay && isItem(this.option);\n if ([Keys.DOWN, Keys.ARROWDOWN].includes(event.key)) {\n // If the filter is not empty and the popover is displayed, moves visual focus to the first suggested value.\n // If the filter is empty and the popover is not displayed, opens the popover and moves visual focus to the first option.\n // Moves visual focus to the next option.\n // If visual focus is on the last option, moves visual focus to the first option.\n cursor = isNavigationStart ? Cursor.NEXT : Cursor.FIRST;\n } else if ([Keys.UP, Keys.ARROWUP].includes(event.key)) {\n // If the filter is not empty and the popover is displayed, moves visual focus to the last suggested value.\n // If the filter is empty, first opens the popover if it is not already displayed and then moves visual focus to the last option.\n // Moves visual focus to the previous option.\n // If visual focus is on the first option, moves visual focus to the last option.\n cursor = isNavigationStart ? Cursor.PREVIOUS : Cursor.LAST;\n }\n\n // update scroll and visual focused option in wrapper\n this.loadingWrapper({ name: 'scroll', cursor });\n\n // open popover\n this.popoverDisplay = true;\n break;\n\n case Keys.LEFT:\n case Keys.ARROWLEFT:\n case Keys.HOME:\n case Keys.RIGHT:\n case Keys.ARROWRIGHT:\n case Keys.END:\n // skip process if visual focus is not in popover\n if (!isItem(this.option)) break;\n guard = true;\n\n // Remove visual focus from popover options\n this.option = null;\n\n let index;\n if (Keys.HOME === event.key) {\n // Moves visual focus to the textbox and places the editing cursor at the beginning of the field.\n index = 0;\n } else if (Keys.END === event.key) {\n // Moves visual focus to the textbox and places the editing cursor at the end of the field.\n index = this.filter.length;\n }\n if (typeof index === 'number') {\n this.input.setSelectionRange(index, index);\n }\n break;\n\n case Keys.ESC:\n case Keys.ESCAPE:\n guard = true;\n\n if (this.popoverDisplay) {\n // If the popover is displayed, closes it.\n this.popoverDisplay = false;\n } else {\n // If the popover is not displayed, clears the filter.\n this.setValue(null);\n this.filter = '';\n // Sets visual focus on the textbox.\n this.option = null;\n }\n break;\n\n default:\n // Remove visual focus from popover options\n this.option = null;\n break;\n }\n\n if (guard) {\n event.stopPropagation();\n event.preventDefault();\n }\n };\n\n /**\n * Scroll to next option from cursor\n * @param index - targeted option index to scroll into\n */\n private scrollToIndex = (index: number): void => {\n this.element.shadowRoot.querySelector(`li:nth-of-type(${(index || 0) + this.page.baseIndex})`)?.scrollIntoView();\n };\n\n /**\n * Is option the current value\n * @param option - option to match with\n * @returns true if option is the current value\n */\n private isCurrentOption = (option: Option) => (isItem(this.value) ? this.value.value : this.value) === option.value;\n\n /**\n * Set value prop\n * @param newValue - slected option item\n */\n private setValue(newValue: MgInputCombobox['option'] | null): void {\n if (!isItem(newValue)) {\n this.value = '';\n } else {\n this.value = allItemsAreString(this.items || this.options.items) ? newValue.title : { ...newValue };\n }\n }\n\n /**\n * get value prop title\n * @returns value title\n */\n private getValueTitle = (): Option['title'] => {\n if (this.value && isItem(this.value)) return this.value.title;\n else if (typeof this.value === 'string') return this.value;\n else return '';\n };\n\n /**\n * Method to set validity values\n * @param newValue - valid new value\n */\n private setValidity(newValue: MgInputCombobox['valid']) {\n const oldValidValue = this.valid;\n this.valid = newValue;\n this.invalid = !this.valid;\n // We need to send valid event even if it is the same value\n if (this.handlerInProgress === undefined || (this.handlerInProgress === 'blur' && this.valid !== oldValidValue)) this.inputValid.emit(this.valid);\n }\n\n /**\n * Check if input is valid\n */\n private checkValidity = (): void => {\n this.setValidity(this.readonly || this.disabled || this.input.checkValidity());\n };\n\n /**\n * Set input error message\n * @param errorMessage - errorMessage override\n */\n private setErrorMessage = (errorMessage?: string): void => {\n // Set error message\n this.errorMessage = undefined;\n // Does have a custom error message\n if (!this.valid && errorMessage !== undefined) {\n this.errorMessage = errorMessage;\n }\n // required\n else if (!this.valid && this.input.validity.valueMissing) {\n this.errorMessage = this.messages.errors.required;\n }\n };\n\n /**\n * Get filtered options from `filter` input value\n * @returns filtered options\n */\n private optionsFilter = (option): boolean => (this.filter === '' ? true : option.title.toLocaleLowerCase().includes(this.filter.toLocaleLowerCase()));\n\n /**\n * Loading wrapper with a given action\n * @param action - wrapped loading action\n * @returns promisified action\n */\n private loadingWrapper = (action: ActionType): Promise<void> => {\n let promise;\n let index: number;\n\n // cache initial loading action if not defined\n if (!Boolean(this.loadingAction)) {\n this.loadingAction = action.name;\n }\n\n // update index\n if (Boolean(this.option) && this.loadingAction !== 'load-more') {\n index = this.page.items.findIndex(option => option.value.toString() === this.option.value.toString());\n } else if (this.loadingAction === 'load-more') {\n index = this.page.items.length - this.page.baseIndex;\n }\n // when action require a loadMore we fetch the API else we report action to next tick\n // Set \"load more\" if action match OR if next item not available in the current page\n if (action.name === 'load-more') {\n // wait for new element render and update scroll position\n // set component loading\n this.isLoading = true;\n promise = this.goToNextPage;\n } else if (\n action.cursor === Cursor.NEXT &&\n this.page.items.length <= this.page.total &&\n index + this.page.baseIndex === this.page.items.length &&\n index + this.page.baseIndex < this.page.total\n ) {\n // trigger load-more from button to benefit from `disabled-on-click`\n this.loadMoreElement.click();\n return;\n } else if (action.name === 'scroll') {\n promise = nextTick;\n } else {\n promise = this.updatePage;\n }\n\n return promise()\n .then(() => {\n // parse full items list from options\n const options = this.options.items.filter(this.optionsFilter);\n\n // update visual focus\n if (action.name !== 'load-data') {\n index = this.page.getIndexFromCursor(action.cursor, this.loadingAction === 'load-more' && index >= 0 ? options[index] : this.option);\n }\n this.option = options[index];\n\n // update scroll position\n this.scrollToIndex(index);\n })\n .finally(() => {\n // reset loading after next render\n requestAnimationFrame(() => {\n this.isLoading = false;\n this.loadingAction = undefined;\n });\n });\n };\n\n /**\n * Go to next page\n * @returns promise\n */\n private goToNextPage = (): Promise<void> => {\n this.loadMore.emit();\n if (Boolean(this.fetchurl)) {\n return this.getOptions(typeof this.page.next === 'string' ? this.page.next : undefined).then(nextPage => {\n if (!Boolean(nextPage)) return;\n // merge items from current page and next page\n const items = [...this.page.items, ...nextPage.items];\n // create new options pagination withe merged items\n this.options = new Paginate(items, { total: nextPage.total, next: nextPage.next, top: items.length });\n });\n } else {\n return nextTick(() => {\n if (typeof this.page.next === 'function') {\n const nextPage = this.page.next();\n this.page = new Page({\n ...nextPage,\n items: [...this.page.items, ...nextPage.items],\n });\n }\n });\n }\n };\n\n /**\n * Go to next page\n * @returns promise\n */\n private updatePage = async (): Promise<void> => {\n if (Boolean(this.fetchurl)) {\n return this.getOptions().then(page => {\n if (!Boolean(page)) return;\n // reset current options pagination from API response\n this.options = new Paginate(page.items, { total: page.total, next: page.next, top: page.top });\n });\n } else {\n this.page = this.options.getPage(0, this.optionsFilter);\n }\n };\n\n /**\n * Fetch request\n * @param url - to fetch\n * @returns new page from url\n */\n private getOptions = async (url = this.fetchurl): Promise<Pick<Page<Option>, 'items' | 'top'> & Partial<Page<Option>>> => {\n // add text filter\n const updateUrl = (typeof url === 'string' ? url : url.toString()).replaceAll(this.fetchmappings.request.filter, encodeURIComponent(this.filter));\n\n try {\n const response = await fetch(updateUrl, this.fetchoptions).then(response => response.json());\n if (!response) return null;\n const items = getObjectValueFromKey<Response, Option[]>(response, this.fetchmappings.response.items).map(\n (item): Option => ({\n title: getObjectValueFromKey<unknown, Option['title']>(item, this.fetchmappings.response.itemTitle),\n value: getObjectValueFromKey<unknown, Option['value']>(item, this.fetchmappings.response.itemValue),\n }),\n );\n const total = Number(getObjectValueFromKey<Response, number>(response, this.fetchmappings.response.total, 0));\n const next = mapUrl(getObjectValueFromKey<Response, string>(response, this.fetchmappings.response.next), this.fetchurl.toString());\n return { items, total, next, top: items.length };\n } catch {}\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n * @returns timeout\n */\n componentWillLoad(): ReturnType<typeof setTimeout> {\n // Get locales\n this.messages = initLocales(this.element).messages;\n // Validate\n this.watchIdentifier(this.identifier);\n this.watchItems(this.items);\n if (Boolean(this.fetchurl)) {\n this.watchFetchUrl(this.fetchurl);\n this.watchFetchOptions(this.fetchoptions);\n this.watchFetchMappings(this.fetchmappings);\n this.loadingWrapper({ name: 'load-data' });\n }\n this.watchValue(this.value);\n this.watchOptions(this.options);\n this.watchMgWidth(this.mgWidth);\n this.watchReadonly(this.readonly);\n this.watchDisabled(this.disabled);\n // Check validity when component is ready\n // return a promise to process action only in the FIRST render().\n // https://stenciljs.com/docs/component-lifecycle#componentwillload\n return setTimeout(() => {\n this.checkValidity();\n }, 0);\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n const listId = `${this.identifier}-list`;\n const readonlyValue = this.getValueTitle();\n const withResetButton = this.value && !this.disabled;\n\n let popoverContent: 'list' | 'notfound' | 'notavailable';\n if (this.page?.items.length > 0) popoverContent = 'list';\n else if (this.page?.items.length === 0 && Boolean(this.filter)) popoverContent = 'notfound';\n else if (this.page?.items.length === 0) popoverContent = 'notavailable';\n\n return (\n <mg-input\n label={this.label}\n identifier={this.identifier}\n class={this.classCollection.classes.join(' ')}\n ariaDescribedbyIDs={popoverContent && popoverContent !== 'list' ? [popoverContent] : []}\n labelOnTop={this.labelOnTop}\n labelHide={this.labelHide}\n required={this.required}\n tooltip={this.tooltip}\n tooltipPosition={this.readonly && this.value === undefined ? 'label' : this.tooltipPosition}\n helpText={this.helpText}\n errorMessage={this.errorMessage}\n >\n {this.readonly ? (\n readonlyValue && <b class=\"mg-c-input__readonly-value\">{readonlyValue}</b>\n ) : (\n <mg-popover\n identifier={this.popoverId}\n placement=\"bottom-start\"\n display={this.popoverDisplay}\n arrow-hide\n style={{\n '--mg-c-input-list-width': Boolean(this.input?.offsetWidth) ? `${this.input.offsetWidth}px` : undefined,\n '--mg-c-input-append-x': withResetButton ? '2' : '1',\n }}\n data-fallback-placement=\"bottom-end\"\n onDisplay-change={this.handlePopoverDisplay}\n >\n <div class=\"mg-c-input__input-group-container\">\n <mg-icon icon=\"magnifying-glass\"></mg-icon>\n <input\n type=\"text\"\n role=\"combobox\"\n class=\"mg-c-input__box mg-c-input__box--width\"\n value={this.filter}\n id={this.identifier}\n name={this.name}\n placeholder={this.placeholder}\n title={this.placeholder}\n disabled={this.disabled}\n required={this.required}\n autocomplete=\"off\"\n aria-autocomplete=\"list\"\n aria-expanded={this.popoverDisplay.toString()}\n aria-controls={listId}\n aria-invalid={(this.invalid === true).toString()}\n aria-activedescendant={Boolean(this.option?.value) ? this.option.value : typeof this.value === 'string' ? this.value : this.value?.value}\n onInput={this.handleFilterInput}\n onBlur={this.handleFilterBlur}\n onFocus={this.handleFilterFocus}\n onKeyDown={this.handleFilterKeydown}\n ref={(el: HTMLInputElement) => {\n if (el !== null) this.input = el;\n }}\n />\n {withResetButton && (\n <mg-button\n class=\"mg-c-input__box-append mg-c-input__reset\"\n variant=\"flat\"\n is-icon\n label={this.messages.general.reset}\n aria-controls={this.identifier}\n tabindex=\"-1\"\n onClick={this.handleResetButton}\n >\n <mg-icon icon=\"cross\"></mg-icon>\n </mg-button>\n )}\n <mg-button class=\"mg-c-input__box-append\" variant=\"flat\" is-icon label={this.itemsLabel} tabindex=\"-1\" disabled={this.disabled}>\n <mg-icon icon={`chevron-${this.popoverDisplay ? 'up' : 'down'}`}></mg-icon>\n </mg-button>\n </div>\n <div slot=\"content\" class=\"mg-c-input__popover-container\">\n {popoverContent === 'list' && [\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <ul key=\"list\" class=\"mg-c-input__input-list\" role=\"listbox\" id={listId} aria-label={this.itemsLabel} aria-setsize={this.page.total}>\n {this.page.items.map(option => {\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <li\n role=\"option\"\n class={{\n 'mg-c-input__input-list-item': true,\n 'mg-c-input__input-list-item--focus-visible': this.option === option,\n 'mg-c-input__input-list-item--selected': this.isCurrentOption(option),\n }}\n key={option.title}\n id={option.value.toString()}\n aria-selected={this.isCurrentOption(option).toString()}\n onClick={this.handleOptionClick}\n >\n {option.title}\n {this.isCurrentOption(option) && <mg-icon icon=\"check\"></mg-icon>}\n </li>\n );\n })}\n </ul>,\n this.isLoading && <mg-loader key=\"loader\" message={this.messages.input.combobox.search} class={{ 'mg-u-visually-hidden': Boolean(this.page.next) }}></mg-loader>,\n this.page.next && (\n <mg-button\n key=\"load-more\"\n variant=\"flat\"\n class=\"mg-c-input__load-more\"\n tabIndex={-1}\n disabled={this.isLoading}\n full-width\n disable-on-click\n onClick={this.handleLoadMoreButton}\n aria-controls={listId}\n ref={(el: HTMLMgButtonElement) => {\n if (el !== null) this.loadMoreElement = el;\n }}\n >\n <mg-icon icon=\"chevron-down\"></mg-icon>\n {this.messages.input.combobox.loadMore}\n </mg-button>\n ),\n ]}\n {popoverContent === 'notfound' && (\n <p id={popoverContent} class=\"mg-c-input__popover-info\">\n {this.messages.input.combobox.notFound}\n </p>\n )}\n {popoverContent === 'notavailable' && (\n <p id={popoverContent} class=\"mg-c-input__popover-info\">\n {this.messages.input.combobox.notAvailable}\n </p>\n )}\n </div>\n </mg-popover>\n )}\n </mg-input>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}