@mgdis/mg-components 6.13.0 → 6.14.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 (419) hide show
  1. package/dist/cjs/events.utils-D5SAtkpQ.js +0 -3
  2. package/dist/cjs/{index-DyUB3KmT.js → index-CwjAofQ1.js} +1 -4
  3. package/dist/cjs/index-DUJwxnoi.js +0 -3
  4. package/dist/cjs/{index-CATFkm3O.js → index-DzBkSgSK.js} +224 -122
  5. package/dist/cjs/index.cjs.js +0 -3
  6. package/dist/cjs/loader.cjs.js +3 -7
  7. package/dist/cjs/mg-action-more_37.cjs.entry.js +160 -88
  8. package/dist/cjs/mg-alert.cjs.entry.js +6 -9
  9. package/dist/cjs/mg-components.cjs.js +4 -8
  10. package/dist/cjs/mg-input-combobox.cjs.entry.js +9 -12
  11. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js +5 -8
  12. package/dist/cjs/mg-input.conf-WTsvDfpC.js +0 -3
  13. package/dist/cjs/mg-loader.cjs.entry.js +2 -5
  14. package/dist/cjs/mg-progress.cjs.entry.js +1 -4
  15. package/dist/collection/assets/icons/index.js +0 -1
  16. package/dist/collection/collection-manifest.json +1 -1
  17. package/dist/collection/components/atoms/internals/mg-character-left/mg-character-left.js +3 -4
  18. package/dist/collection/components/atoms/internals/mg-input-title/mg-input-title.js +4 -5
  19. package/dist/collection/components/atoms/mg-badge/mg-badge.conf.js +0 -1
  20. package/dist/collection/components/atoms/mg-badge/mg-badge.js +4 -5
  21. package/dist/collection/components/atoms/mg-button/mg-button.conf.js +0 -1
  22. package/dist/collection/components/atoms/mg-button/mg-button.js +9 -10
  23. package/dist/collection/components/atoms/mg-card/mg-card.conf.js +4 -0
  24. package/dist/collection/components/atoms/mg-card/mg-card.js +104 -2
  25. package/dist/collection/components/atoms/mg-divider/mg-divider.js +1 -2
  26. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +0 -1
  27. package/dist/collection/components/atoms/mg-icon/mg-icon.js +6 -7
  28. package/dist/collection/components/atoms/mg-tag/mg-tag.conf.js +0 -1
  29. package/dist/collection/components/atoms/mg-tag/mg-tag.js +3 -4
  30. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +1 -2
  31. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js +0 -1
  32. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +5 -6
  33. package/dist/collection/components/molecules/inputs/mg-input/mg-input.conf.js +0 -1
  34. package/dist/collection/components/molecules/inputs/mg-input/mg-input.js +33 -18
  35. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js +0 -1
  36. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +7 -6
  37. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js +0 -1
  38. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +28 -22
  39. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.js +0 -1
  40. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js +22 -20
  41. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js +0 -1
  42. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +17 -18
  43. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.conf.js +0 -1
  44. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +26 -27
  45. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +18 -19
  46. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.conf.js +0 -1
  47. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +17 -17
  48. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/editor/index.js +0 -1
  49. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js +18 -18
  50. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.conf.js +0 -1
  51. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +38 -32
  52. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.conf.js +0 -1
  53. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +25 -25
  54. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +23 -24
  55. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js +0 -1
  56. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +15 -15
  57. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.conf.js +0 -1
  58. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.js +4 -3
  59. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.conf.js +0 -1
  60. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.js +4 -4
  61. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.conf.js +0 -1
  62. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.js +5 -6
  63. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js +0 -1
  64. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +5 -3
  65. package/dist/collection/components/molecules/mg-alert/mg-alert.conf.js +0 -1
  66. package/dist/collection/components/molecules/mg-alert/mg-alert.js +7 -8
  67. package/dist/collection/components/molecules/mg-details/mg-details.js +4 -5
  68. package/dist/collection/components/molecules/mg-form/mg-form.conf.js +0 -1
  69. package/dist/collection/components/molecules/mg-form/mg-form.js +9 -10
  70. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.conf.js +0 -1
  71. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +2 -3
  72. package/dist/collection/components/molecules/mg-loader/mg-loader.js +2 -3
  73. package/dist/collection/components/molecules/mg-message/mg-message.conf.js +0 -1
  74. package/dist/collection/components/molecules/mg-message/mg-message.js +4 -5
  75. package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js +0 -1
  76. package/dist/collection/components/molecules/mg-modal/mg-modal.js +6 -7
  77. package/dist/collection/components/molecules/mg-pagination/mg-pagination.conf.js +0 -1
  78. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +7 -7
  79. package/dist/collection/components/molecules/mg-panel/mg-panel.conf.js +0 -1
  80. package/dist/collection/components/molecules/mg-panel/mg-panel.js +34 -11
  81. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +2 -3
  82. package/dist/collection/components/molecules/mg-popover/mg-popover.js +6 -7
  83. package/dist/collection/components/molecules/mg-progress/mg-progress.conf.js +0 -1
  84. package/dist/collection/components/molecules/mg-progress/mg-progress.js +5 -6
  85. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js +0 -1
  86. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +5 -4
  87. package/dist/collection/components/molecules/mg-table/mg-table.conf.js +0 -1
  88. package/dist/collection/components/molecules/mg-table/mg-table.js +4 -4
  89. package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js +0 -1
  90. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +6 -6
  91. package/dist/collection/index.js +0 -1
  92. package/dist/collection/locales/index.conf.js +0 -1
  93. package/dist/collection/locales/index.js +0 -1
  94. package/dist/collection/types/index.js +0 -1
  95. package/dist/collection/utils/behaviors.utils.js +0 -1
  96. package/dist/collection/utils/events.utils.js +0 -1
  97. package/dist/collection/utils/playwright.fixture.js +0 -1
  98. package/dist/collection/utils/unit.test.utils.js +0 -1
  99. package/dist/components/events.utils.js +0 -3
  100. package/dist/components/index.js +1 -4
  101. package/dist/components/index2.js +0 -3
  102. package/dist/components/index3.js +1 -4
  103. package/dist/components/mg-action-more.js +0 -3
  104. package/dist/components/mg-alert.js +4 -7
  105. package/dist/components/mg-badge.js +0 -3
  106. package/dist/components/mg-badge2.js +0 -3
  107. package/dist/components/mg-button.js +0 -3
  108. package/dist/components/mg-button2.js +0 -3
  109. package/dist/components/mg-card.js +0 -3
  110. package/dist/components/mg-card2.js +55 -6
  111. package/dist/components/mg-character-left.js +0 -3
  112. package/dist/components/mg-character-left2.js +0 -3
  113. package/dist/components/mg-details.js +0 -3
  114. package/dist/components/mg-divider.js +0 -3
  115. package/dist/components/mg-divider2.js +0 -3
  116. package/dist/components/mg-form.js +0 -3
  117. package/dist/components/mg-icon.js +0 -3
  118. package/dist/components/mg-icon2.js +0 -3
  119. package/dist/components/mg-illustrated-message.js +0 -3
  120. package/dist/components/mg-input-checkbox-paginated.js +0 -3
  121. package/dist/components/mg-input-checkbox-paginated2.js +0 -3
  122. package/dist/components/mg-input-checkbox.js +9 -6
  123. package/dist/components/mg-input-combobox.js +2 -5
  124. package/dist/components/mg-input-date.js +2 -5
  125. package/dist/components/mg-input-numeric.js +2 -5
  126. package/dist/components/mg-input-password.js +2 -5
  127. package/dist/components/mg-input-radio.js +2 -5
  128. package/dist/components/mg-input-rich-text-editor.js +1 -4
  129. package/dist/components/mg-input-select.js +0 -3
  130. package/dist/components/mg-input-select2.js +19 -16
  131. package/dist/components/mg-input-text.js +0 -3
  132. package/dist/components/mg-input-text2.js +2 -5
  133. package/dist/components/mg-input-textarea.js +2 -5
  134. package/dist/components/mg-input-title.js +0 -3
  135. package/dist/components/mg-input-title2.js +0 -3
  136. package/dist/components/mg-input-toggle.js +2 -5
  137. package/dist/components/mg-input.js +0 -3
  138. package/dist/components/mg-input2.js +16 -6
  139. package/dist/components/mg-item-more.js +0 -3
  140. package/dist/components/mg-item-more2.js +0 -3
  141. package/dist/components/mg-loader.js +0 -3
  142. package/dist/components/mg-loader2.js +0 -3
  143. package/dist/components/mg-menu-item.js +0 -3
  144. package/dist/components/mg-menu-item2.js +0 -3
  145. package/dist/components/mg-menu.js +0 -3
  146. package/dist/components/mg-message.js +0 -3
  147. package/dist/components/mg-message2.js +2 -5
  148. package/dist/components/mg-modal.js +1 -4
  149. package/dist/components/mg-pagination.js +0 -3
  150. package/dist/components/mg-pagination2.js +0 -3
  151. package/dist/components/mg-panel.js +7 -5
  152. package/dist/components/mg-popover-content.js +0 -3
  153. package/dist/components/mg-popover-content2.js +2 -5
  154. package/dist/components/mg-popover.js +0 -3
  155. package/dist/components/mg-popover2.js +0 -3
  156. package/dist/components/mg-progress.js +0 -3
  157. package/dist/components/mg-skip-links.js +4 -6
  158. package/dist/components/mg-table.js +2 -5
  159. package/dist/components/mg-tabs.js +1 -4
  160. package/dist/components/mg-tag.js +0 -3
  161. package/dist/components/mg-tooltip-content.js +0 -3
  162. package/dist/components/mg-tooltip-content2.js +0 -3
  163. package/dist/components/mg-tooltip.js +0 -3
  164. package/dist/components/mg-tooltip2.js +0 -3
  165. package/dist/components/popper.js +0 -3
  166. package/dist/esm/events.utils-yMGqY8YG.js +0 -3
  167. package/dist/esm/{index-CwZ2wzxw.js → index-Bv7NHR-W.js} +1 -4
  168. package/dist/esm/{index-CAuxALt5.js → index-Degtjvph.js} +205 -122
  169. package/dist/esm/index-Dr7GYvIz.js +0 -3
  170. package/dist/esm/index.js +0 -3
  171. package/dist/esm/loader.js +3 -7
  172. package/dist/esm/mg-action-more_37.entry.js +160 -88
  173. package/dist/esm/mg-alert.entry.js +6 -9
  174. package/dist/esm/mg-components.js +4 -8
  175. package/dist/esm/mg-input-combobox.entry.js +9 -12
  176. package/dist/esm/mg-input-rich-text-editor.entry.js +5 -8
  177. package/dist/esm/mg-input.conf-CNgv8hc5.js +0 -3
  178. package/dist/esm/mg-loader.entry.js +2 -5
  179. package/dist/esm/mg-progress.entry.js +1 -4
  180. package/dist/mg-components/index.esm.js +0 -2
  181. package/dist/mg-components/mg-components.css +1 -1
  182. package/dist/mg-components/mg-components.esm.js +1 -2
  183. package/dist/mg-components/p-056ba467.entry.js +1 -0
  184. package/dist/mg-components/p-625c463c.entry.js +1 -0
  185. package/dist/mg-components/p-Bv7NHR-W.js +1 -0
  186. package/dist/mg-components/p-CNgv8hc5.js +1 -2
  187. package/dist/mg-components/p-Degtjvph.js +2 -0
  188. package/dist/mg-components/p-Dr7GYvIz.js +1 -2
  189. package/dist/mg-components/p-c522f3c1.entry.js +1 -0
  190. package/dist/mg-components/p-cac23bd7.entry.js +1 -0
  191. package/dist/mg-components/p-d13a6fdc.entry.js +1 -0
  192. package/dist/mg-components/p-e75f5383.entry.js +10 -0
  193. package/dist/mg-components/p-yMGqY8YG.js +1 -2
  194. package/dist/types/components/atoms/mg-card/mg-card.conf.d.ts +9 -0
  195. package/dist/types/components/atoms/mg-card/mg-card.d.ts +20 -0
  196. package/dist/types/components/molecules/inputs/mg-input/mg-input.d.ts +1 -1
  197. package/dist/types/components/molecules/inputs/mg-input-select/mg-input-select.d.ts +5 -4
  198. package/dist/types/components/molecules/mg-panel/mg-panel.d.ts +4 -0
  199. package/dist/types/components.d.ts +406 -3
  200. package/dist/types/stencil-public-runtime.d.ts +34 -6
  201. package/ide/intellij/web-types.json +263 -35
  202. package/ide/vscode/css-custom-data.json +3 -3
  203. package/ide/vscode/html-custom-data.json +88 -34
  204. package/package.json +17 -22
  205. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -8
  206. package/dist/cjs/app-globals-V2Kpy_OQ.js.map +0 -1
  207. package/dist/cjs/events.utils-D5SAtkpQ.js.map +0 -1
  208. package/dist/cjs/index-CATFkm3O.js.map +0 -1
  209. package/dist/cjs/index-DUJwxnoi.js.map +0 -1
  210. package/dist/cjs/index-DyUB3KmT.js.map +0 -1
  211. package/dist/cjs/index.cjs.js.map +0 -1
  212. package/dist/cjs/loader.cjs.js.map +0 -1
  213. package/dist/cjs/mg-action-more_37.cjs.entry.js.map +0 -1
  214. package/dist/cjs/mg-alert.cjs.entry.js.map +0 -1
  215. package/dist/cjs/mg-alert.entry.cjs.js.map +0 -1
  216. package/dist/cjs/mg-components.cjs.js.map +0 -1
  217. package/dist/cjs/mg-input-combobox.cjs.entry.js.map +0 -1
  218. package/dist/cjs/mg-input-combobox.entry.cjs.js.map +0 -1
  219. package/dist/cjs/mg-input-rich-text-editor.cjs.entry.js.map +0 -1
  220. package/dist/cjs/mg-input-rich-text-editor.entry.cjs.js.map +0 -1
  221. package/dist/cjs/mg-input.conf-WTsvDfpC.js.map +0 -1
  222. package/dist/cjs/mg-loader.cjs.entry.js.map +0 -1
  223. package/dist/cjs/mg-loader.entry.cjs.js.map +0 -1
  224. package/dist/cjs/mg-progress.cjs.entry.js.map +0 -1
  225. package/dist/cjs/mg-progress.entry.cjs.js.map +0 -1
  226. package/dist/collection/assets/icons/index.js.map +0 -1
  227. package/dist/collection/components/atoms/internals/mg-character-left/mg-character-left.js.map +0 -1
  228. package/dist/collection/components/atoms/internals/mg-input-title/mg-input-title.js.map +0 -1
  229. package/dist/collection/components/atoms/mg-badge/mg-badge.conf.js.map +0 -1
  230. package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +0 -1
  231. package/dist/collection/components/atoms/mg-button/mg-button.conf.js.map +0 -1
  232. package/dist/collection/components/atoms/mg-button/mg-button.js.map +0 -1
  233. package/dist/collection/components/atoms/mg-card/mg-card.js.map +0 -1
  234. package/dist/collection/components/atoms/mg-divider/mg-divider.js.map +0 -1
  235. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js.map +0 -1
  236. package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +0 -1
  237. package/dist/collection/components/atoms/mg-tag/mg-tag.conf.js.map +0 -1
  238. package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +0 -1
  239. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +0 -1
  240. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js.map +0 -1
  241. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +0 -1
  242. package/dist/collection/components/molecules/inputs/mg-input/mg-input.conf.js.map +0 -1
  243. package/dist/collection/components/molecules/inputs/mg-input/mg-input.js.map +0 -1
  244. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js.map +0 -1
  245. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +0 -1
  246. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js.map +0 -1
  247. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +0 -1
  248. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.conf.js.map +0 -1
  249. package/dist/collection/components/molecules/inputs/mg-input-combobox/mg-input-combobox.js.map +0 -1
  250. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js.map +0 -1
  251. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +0 -1
  252. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.conf.js.map +0 -1
  253. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +0 -1
  254. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +0 -1
  255. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.conf.js.map +0 -1
  256. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +0 -1
  257. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/editor/index.js.map +0 -1
  258. package/dist/collection/components/molecules/inputs/mg-input-rich-text-editor/mg-input-rich-text-editor.js.map +0 -1
  259. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.conf.js.map +0 -1
  260. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +0 -1
  261. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.conf.js.map +0 -1
  262. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +0 -1
  263. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +0 -1
  264. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js.map +0 -1
  265. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +0 -1
  266. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.conf.js.map +0 -1
  267. package/dist/collection/components/molecules/internals/mg-item-more/mg-item-more.js.map +0 -1
  268. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.conf.js.map +0 -1
  269. package/dist/collection/components/molecules/menus/mg-menu/mg-menu.js.map +0 -1
  270. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.conf.js.map +0 -1
  271. package/dist/collection/components/molecules/menus/mg-menu-item/mg-menu-item.js.map +0 -1
  272. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js.map +0 -1
  273. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +0 -1
  274. package/dist/collection/components/molecules/mg-alert/mg-alert.conf.js.map +0 -1
  275. package/dist/collection/components/molecules/mg-alert/mg-alert.js.map +0 -1
  276. package/dist/collection/components/molecules/mg-details/mg-details.js.map +0 -1
  277. package/dist/collection/components/molecules/mg-form/mg-form.conf.js.map +0 -1
  278. package/dist/collection/components/molecules/mg-form/mg-form.js.map +0 -1
  279. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.conf.js.map +0 -1
  280. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +0 -1
  281. package/dist/collection/components/molecules/mg-loader/mg-loader.js.map +0 -1
  282. package/dist/collection/components/molecules/mg-message/mg-message.conf.js.map +0 -1
  283. package/dist/collection/components/molecules/mg-message/mg-message.js.map +0 -1
  284. package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js.map +0 -1
  285. package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +0 -1
  286. package/dist/collection/components/molecules/mg-pagination/mg-pagination.conf.js.map +0 -1
  287. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +0 -1
  288. package/dist/collection/components/molecules/mg-panel/mg-panel.conf.js.map +0 -1
  289. package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +0 -1
  290. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +0 -1
  291. package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +0 -1
  292. package/dist/collection/components/molecules/mg-progress/mg-progress.conf.js.map +0 -1
  293. package/dist/collection/components/molecules/mg-progress/mg-progress.js.map +0 -1
  294. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js.map +0 -1
  295. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js.map +0 -1
  296. package/dist/collection/components/molecules/mg-table/mg-table.conf.js.map +0 -1
  297. package/dist/collection/components/molecules/mg-table/mg-table.js.map +0 -1
  298. package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js.map +0 -1
  299. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +0 -1
  300. package/dist/collection/index.js.map +0 -1
  301. package/dist/collection/locales/index.conf.js.map +0 -1
  302. package/dist/collection/locales/index.js.map +0 -1
  303. package/dist/collection/types/index.js.map +0 -1
  304. package/dist/collection/utils/behaviors.utils.js.map +0 -1
  305. package/dist/collection/utils/events.utils.js.map +0 -1
  306. package/dist/collection/utils/playwright.fixture.js.map +0 -1
  307. package/dist/collection/utils/unit.test.utils.js.map +0 -1
  308. package/dist/components/events.utils.js.map +0 -1
  309. package/dist/components/index.js.map +0 -1
  310. package/dist/components/index2.js.map +0 -1
  311. package/dist/components/index3.js.map +0 -1
  312. package/dist/components/mg-action-more.js.map +0 -1
  313. package/dist/components/mg-alert.js.map +0 -1
  314. package/dist/components/mg-badge.js.map +0 -1
  315. package/dist/components/mg-badge2.js.map +0 -1
  316. package/dist/components/mg-button.js.map +0 -1
  317. package/dist/components/mg-button2.js.map +0 -1
  318. package/dist/components/mg-card.js.map +0 -1
  319. package/dist/components/mg-card2.js.map +0 -1
  320. package/dist/components/mg-character-left.js.map +0 -1
  321. package/dist/components/mg-character-left2.js.map +0 -1
  322. package/dist/components/mg-details.js.map +0 -1
  323. package/dist/components/mg-divider.js.map +0 -1
  324. package/dist/components/mg-divider2.js.map +0 -1
  325. package/dist/components/mg-form.js.map +0 -1
  326. package/dist/components/mg-icon.js.map +0 -1
  327. package/dist/components/mg-icon2.js.map +0 -1
  328. package/dist/components/mg-illustrated-message.js.map +0 -1
  329. package/dist/components/mg-input-checkbox-paginated.js.map +0 -1
  330. package/dist/components/mg-input-checkbox-paginated2.js.map +0 -1
  331. package/dist/components/mg-input-checkbox.js.map +0 -1
  332. package/dist/components/mg-input-combobox.js.map +0 -1
  333. package/dist/components/mg-input-date.js.map +0 -1
  334. package/dist/components/mg-input-numeric.js.map +0 -1
  335. package/dist/components/mg-input-password.js.map +0 -1
  336. package/dist/components/mg-input-radio.js.map +0 -1
  337. package/dist/components/mg-input-rich-text-editor.js.map +0 -1
  338. package/dist/components/mg-input-select.js.map +0 -1
  339. package/dist/components/mg-input-select2.js.map +0 -1
  340. package/dist/components/mg-input-text.js.map +0 -1
  341. package/dist/components/mg-input-text2.js.map +0 -1
  342. package/dist/components/mg-input-textarea.js.map +0 -1
  343. package/dist/components/mg-input-title.js.map +0 -1
  344. package/dist/components/mg-input-title2.js.map +0 -1
  345. package/dist/components/mg-input-toggle.js.map +0 -1
  346. package/dist/components/mg-input.js.map +0 -1
  347. package/dist/components/mg-input2.js.map +0 -1
  348. package/dist/components/mg-item-more.js.map +0 -1
  349. package/dist/components/mg-item-more2.js.map +0 -1
  350. package/dist/components/mg-loader.js.map +0 -1
  351. package/dist/components/mg-loader2.js.map +0 -1
  352. package/dist/components/mg-menu-item.js.map +0 -1
  353. package/dist/components/mg-menu-item2.js.map +0 -1
  354. package/dist/components/mg-menu.js.map +0 -1
  355. package/dist/components/mg-message.js.map +0 -1
  356. package/dist/components/mg-message2.js.map +0 -1
  357. package/dist/components/mg-modal.js.map +0 -1
  358. package/dist/components/mg-pagination.js.map +0 -1
  359. package/dist/components/mg-pagination2.js.map +0 -1
  360. package/dist/components/mg-panel.js.map +0 -1
  361. package/dist/components/mg-popover-content.js.map +0 -1
  362. package/dist/components/mg-popover-content2.js.map +0 -1
  363. package/dist/components/mg-popover.js.map +0 -1
  364. package/dist/components/mg-popover2.js.map +0 -1
  365. package/dist/components/mg-progress.js.map +0 -1
  366. package/dist/components/mg-skip-links.js.map +0 -1
  367. package/dist/components/mg-table.js.map +0 -1
  368. package/dist/components/mg-tabs.js.map +0 -1
  369. package/dist/components/mg-tag.js.map +0 -1
  370. package/dist/components/mg-tooltip-content.js.map +0 -1
  371. package/dist/components/mg-tooltip-content2.js.map +0 -1
  372. package/dist/components/mg-tooltip.js.map +0 -1
  373. package/dist/components/mg-tooltip2.js.map +0 -1
  374. package/dist/components/popper.js.map +0 -1
  375. package/dist/esm/app-globals-DQuL1Twl.js +0 -6
  376. package/dist/esm/app-globals-DQuL1Twl.js.map +0 -1
  377. package/dist/esm/events.utils-yMGqY8YG.js.map +0 -1
  378. package/dist/esm/index-CAuxALt5.js.map +0 -1
  379. package/dist/esm/index-CwZ2wzxw.js.map +0 -1
  380. package/dist/esm/index-Dr7GYvIz.js.map +0 -1
  381. package/dist/esm/index.js.map +0 -1
  382. package/dist/esm/loader.js.map +0 -1
  383. package/dist/esm/mg-action-more_37.entry.js.map +0 -1
  384. package/dist/esm/mg-alert.entry.js.map +0 -1
  385. package/dist/esm/mg-components.js.map +0 -1
  386. package/dist/esm/mg-input-combobox.entry.js.map +0 -1
  387. package/dist/esm/mg-input-rich-text-editor.entry.js.map +0 -1
  388. package/dist/esm/mg-input.conf-CNgv8hc5.js.map +0 -1
  389. package/dist/esm/mg-loader.entry.js.map +0 -1
  390. package/dist/esm/mg-progress.entry.js.map +0 -1
  391. package/dist/mg-components/index.esm.js.map +0 -1
  392. package/dist/mg-components/loader.esm.js.map +0 -1
  393. package/dist/mg-components/mg-alert.entry.esm.js.map +0 -1
  394. package/dist/mg-components/mg-components.esm.js.map +0 -1
  395. package/dist/mg-components/mg-input-combobox.entry.esm.js.map +0 -1
  396. package/dist/mg-components/mg-input-rich-text-editor.entry.esm.js.map +0 -1
  397. package/dist/mg-components/mg-loader.entry.esm.js.map +0 -1
  398. package/dist/mg-components/mg-progress.entry.esm.js.map +0 -1
  399. package/dist/mg-components/p-3e92299a.entry.js +0 -2
  400. package/dist/mg-components/p-3e92299a.entry.js.map +0 -1
  401. package/dist/mg-components/p-CAuxALt5.js +0 -3
  402. package/dist/mg-components/p-CAuxALt5.js.map +0 -1
  403. package/dist/mg-components/p-CNgv8hc5.js.map +0 -1
  404. package/dist/mg-components/p-CwZ2wzxw.js +0 -2
  405. package/dist/mg-components/p-CwZ2wzxw.js.map +0 -1
  406. package/dist/mg-components/p-DQuL1Twl.js +0 -2
  407. package/dist/mg-components/p-DQuL1Twl.js.map +0 -1
  408. package/dist/mg-components/p-Dr7GYvIz.js.map +0 -1
  409. package/dist/mg-components/p-c907ddac.entry.js +0 -2
  410. package/dist/mg-components/p-c907ddac.entry.js.map +0 -1
  411. package/dist/mg-components/p-d711941b.entry.js +0 -2
  412. package/dist/mg-components/p-d711941b.entry.js.map +0 -1
  413. package/dist/mg-components/p-da1e7950.entry.js +0 -2
  414. package/dist/mg-components/p-da1e7950.entry.js.map +0 -1
  415. package/dist/mg-components/p-e7a7c651.entry.js +0 -11
  416. package/dist/mg-components/p-e7a7c651.entry.js.map +0 -1
  417. package/dist/mg-components/p-fea46548.entry.js +0 -2
  418. package/dist/mg-components/p-fea46548.entry.js.map +0 -1
  419. package/dist/mg-components/p-yMGqY8YG.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"p-CwZ2wzxw.js","sources":["../helpers/dist/locale/index.js","src/locales/index.ts"],"sourcesContent":["/**\n * Date RegExp, usefull to test if string is a follow the date pattern\n * @example\n * ```ts\n * dateRegExp.test('mystring') // false\n * dateRegExp.test('2020-12-31') // true\n * ```\n */\nconst dateRegExp = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$/;\n\n/**\n * Gets the date pattern based on the specified locale.\n * @param locale - the locale to refer to\n * @returns date pattern\n * @example\n * ```ts\n * localeDatePattern('fr') // 'dd/mm/yyyy'\n * ```\n */\nconst localeDatePattern = (locale) => {\n const year = { value: '2023', pattern: 'yyyy' };\n const month = { value: '12', pattern: 'mm' };\n const day = { value: '24', pattern: 'dd' };\n return localeDate([year.value, month.value, day.value].join('-'), locale, { timeZone: 'UTC' })\n .replace(year.value, year.pattern)\n .replace(month.value, month.pattern)\n .replace(day.value, day.pattern);\n};\n/**\n * Get locale and messages\n * We load the defined locale but for now we only support the first subtag for messages\n * @param element - element we need to get the language\n * @param messages - messages to use\n * @param defaultLocale - default messages locale\n * @returns messages object\n */\nconst localeMessages = (element, messages, defaultLocale) => {\n // Get local\n const closestLangAttribute = element.closest('[lang]');\n const closestLang = Intl.NumberFormat.supportedLocalesOf(closestLangAttribute?.lang);\n const locale = closestLang.length > 0 && typeof closestLang[0] === 'string' ? closestLang[0] : navigator.language || defaultLocale;\n // Only keep first subtag\n const localeSubtag = locale.split('-').shift();\n // If messages is empty, return a default object\n if (Object.keys(messages).length === 0) {\n return {\n locale,\n messages: { lang: defaultLocale },\n };\n }\n // Return\n return {\n locale,\n messages: (messages[localeSubtag] || messages[defaultLocale] || { lang: defaultLocale }),\n };\n};\n/**\n * Format number to the locale currency\n * @param number - number to format\n * @param locale - locale to apply\n * @param currency - currency to apply\n * @returns formatted currency\n * @example\n * ```ts\n * localeCurrency(1234567890.12, 'fr', 'EUR') // '1 234 567 890,12\\xa0€'\n * ```\n */\nconst localeCurrency = (number, locale, currency) => new Intl.NumberFormat(locale, { style: 'currency', currency }).format(number);\n/**\n * Format number to locale\n * @param number - number to format\n * @param locale - locale to apply\n * @param decimalLength - decimal length to apply\n * @returns formatted number\n * @example\n * ```ts\n * localeNumber(1234567890.12, 'fr') // 1 234 567 890,12\n * ```\n */\nconst localeNumber = (number, locale, decimalLength = 0) => new Intl.NumberFormat(locale, { minimumFractionDigits: decimalLength }).format(Number(number));\n/**\n * Format number as percentage based on locale\n * @param number - number to format\n * @param locale - locale to apply\n * @param decimalLength - decimal length to apply\n * @returns formatted percentage\n * @example\n * ```ts\n * localePercent(0.42, 'fr', 2) // '42,00 %'\n * localePercent(0.42, 'en', 2) // '42.00%'\n * ```\n */\nconst localePercent = (number, locale, decimalLength = 0) => {\n return new Intl.NumberFormat(locale, {\n style: 'percent',\n minimumFractionDigits: decimalLength,\n maximumFractionDigits: decimalLength,\n }).format(number);\n};\n/**\n * Format number with standardized unit based on locale using Intl unit formatting\n * @param number - number to format\n * @param locale - locale to apply\n * @param unit - standardized unit (e.g., 'kilometer', 'kilogram', 'celsius')\n * @param unitDisplay - how to display the unit ('short', 'long', 'narrow')\n * @param decimalLength - decimal length to apply\n * @returns formatted number with localized unit\n * @example\n * ```ts\n * localeUnit(1234567890.12, 'fr', 'kilometer') // '1 234 567 890,12 km'\n * localeUnit(23, 'fr', 'celsius') // '23 °C'\n * localeUnit(10, 'fr', 'kilometer', 0, 'long') // '10 kilomètres'\n * ```\n */\nconst localeUnit = (number, locale, unit, unitDisplay = 'short', decimalLength = 0) => {\n return new Intl.NumberFormat(locale, {\n style: 'unit',\n unit,\n unitDisplay,\n minimumFractionDigits: decimalLength,\n maximumFractionDigits: decimalLength,\n }).format(number);\n};\n/**\n * Locale date format\n * @param date - date to format\n * @param locale - locale to apply\n * @param config - DateTimeFormatOptions object to apply\n * @returns formatted date\n * @example\n * ```ts\n * localeDate('2022-06-02', 'fr') // '02/06/2022'\n * ```\n */\nconst localeDate = (date, locale, config) => typeof date !== 'string' || date === '' || !dateRegExp.test(date) ? '' : new Intl.DateTimeFormat(locale, config).format(new Date(date));\n/**\n * Get Intl object\n * @param messages - locales to render in object format. `ex: { en: { porp: \"test\" }, fr: { porp: \"test\" }}`.\n * @param defaultLocale - fallback locale to render. `ex: 'en'`.\n * @returns from the element passed in return function you will get the matching messages object\n * @example\n * ```ts\n * import en from './en/messages.json';\n * import fr from './fr/messages.json';\n * import { defineLocales } from '@mgdis/core-ui-helpers/dist/utils';\n *\n * const defaultLocale = 'en';\n * const messages = { en, fr };\n *\n * export const initLocales = defineLocales(messages, defaultLocale);\n * ```\n */\nconst defineLocales = (messages, defaultLocale) => (element) => localeMessages(element, messages, defaultLocale);\n\nexport { defineLocales, localeCurrency, localeDate, localeDatePattern, localeNumber, localePercent, localeUnit };\n//# sourceMappingURL=index.js.map\n","import en from './en/messages.json';\nimport fr from './fr/messages.json';\nimport { defineLocales } from '@mgdis/core-ui-helpers/dist/locale';\n\nconst defaultLocale = 'en';\nconst messages = { en, fr };\n\n/**\n * Get Intl object\n * @param element - element we need to get the language\n * @returns messages object\n */\nexport const initLocales = defineLocales(messages, defaultLocale);\n"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- const o=()=>{};export{o as g};
2
- //# sourceMappingURL=p-DQuL1Twl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"p-DQuL1Twl.js","sources":["@stencil/core/internal/app-globals"],"sourcesContent":["export const globalScripts = () => {};\n"],"names":[],"mappings":"AAAY,MAAC,aAAa,GAAG,MAAM;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"p-Dr7GYvIz.js","sources":["../helpers/dist/utils/index.js"],"sourcesContent":["/**\n * Class to manage component classlist\n */\nclass ClassList {\n /**\n * Available classes\n */\n classes;\n constructor(classlist = []) {\n this.classes = classlist;\n }\n /**\n * Add class\n * @param className - class name to add\n */\n add = (className) => {\n if (!this.has(className)) {\n this.classes.push(className);\n }\n };\n /**\n * Delete class\n * @param className - class name to delete\n */\n delete = (className) => {\n const index = this.classes.indexOf(className);\n if (index > -1) {\n this.classes.splice(index, 1);\n }\n };\n /**\n * Check if class exist in list\n * @param className - class name to check\n * @returns class name is in the list\n */\n has = (className) => {\n return this.classes.includes(className);\n };\n /**\n * Join classes seperated by spaces\n * @returns joined values\n */\n join = () => {\n return this.classes.join(' ');\n };\n}\n\n/**\n * Check if a value is of object type.\n * @param object - The value to validate.\n * @returns `true` if the value is a valid object (non-null and not an array), otherwise `false`.\n */\nconst isObject = (object) => typeof object === 'object' && !Array.isArray(object) && object !== null;\n/**\n * Get object value from key\n * @param object - object to query\n * @param path - path of the property to get. Nested keys are allowed with `.` separators (eg: 'key0.key1.key2' = object[key0][key1][key2])\n * @param defaultValue - The value returned for `undefined` resolved values\n * @returns object value\n */\nconst getObjectValueFromKey = (object, path, defaultValue) => {\n const separator = '.';\n if (!isObject(object) || typeof path !== 'string') {\n return defaultValue;\n }\n const [current, ...next] = path.split(separator);\n if (next.length) {\n return getObjectValueFromKey(object[current], next.join(separator));\n }\n else {\n return object[current];\n }\n};\n\n/**\n * Typeguard function to check if all array items are strings.\n * @param items - items to check\n * @returns `true` if all items are strings\n */\nconst allItemsAreString = (items) => Array.isArray(items) && items.every(item => typeof item === 'string');\n/**\n * Validate string\n * @param value - value to check\n * @returns `true` if string is valid\n */\nconst isValidString = (value) => typeof value === 'string' && value.trim() !== '';\n/**\n * Stringify value\n * @param value - value to stringify\n * @returns stringified value\n */\nconst toString = (value) => (typeof value === 'object' ? JSON.stringify(value) : String(value));\n/**\n * Cleans string characters by removing special characters and converting to lowercase.\n * @param text - text to clean\n * @returns cleaned string\n * @example\n * ```ts\n * cleanString('âäàçéèêñù') // 'aaaceeenu'\n * cleanString('BATMAN') // 'batman'\n * ```\n */\nconst cleanString = (text) => typeof text === 'string'\n ? text\n .toLocaleLowerCase()\n .normalize('NFD')\n .replaceAll(/[\\u0300-\\u036f]/g, '')\n : text;\n\n/**\n * Convert a string to kebab-case.\n *\n * This function ensures:\n * - All characters are converted to lowercase. Based on : https://stackoverflow.com/questions/63116039/camelcase-to-kebab-case\n * - Non-alphabetic characters (except numbers and hyphens) are replaced with hyphens.\n * - Consecutive hyphens are replaced with a single hyphen.\n * - Leading and trailing hyphens are removed.\n *\n * @param str - The input string to convert.\n * @returns The kebab-case formatted string.\n *\n * @example\n * ```typescript\n * toKebabCase('XMLHttpRequest'); // 'xml-http-request'\n * ```\n */\nconst toKebabCase = (str) => str\n .replace(/[A-Z]+(?![a-z])|[A-Z]/g, (match, offset) => (offset > 0 ? '-' : '') + match.toLowerCase())\n .replace(/[^a-z0-9-]+/g, '-') // Replace non a-z, 0-9, or hyphen characters with a hyphen\n .replace(/--+/g, '-') // Replace multiple consecutive hyphens with a single hyphen\n .replace(/(?:^-)|(?:-$)/g, ''); // Remove leading hyphens or number or trailing hyphens\n\n/**\n * Create random ID\n * @param prefix - add prefix to created ID\n * @param length - ID length\n * @returns ID\n */\nconst createID = (prefix = '', length = 10) => {\n const randomBytes = new Uint8Array(length);\n crypto.getRandomValues(randomBytes);\n const hexString = Array.from(randomBytes)\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('')\n .slice(0, length);\n return prefix !== '' ? `${prefix}-${hexString}` : hexString;\n};\n/**\n * Validate html `id` format\n * @param newValue - id value to validate\n * @returns true if `id` is valid\n */\nconst isValideID = (newValue) => isValidString(newValue) && /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/.exec(newValue) !== null;\n/**\n * Format id from value\n * @param value - id to transforme\n * @returns valid id\n */\nconst formatID = (value) => {\n let id;\n if (typeof value === 'string') {\n id = value;\n }\n else if (Boolean(value) && typeof value === 'object' && (isObject(value) || Array.isArray(value))) {\n id = JSON.stringify(value);\n }\n else if (value !== null && value !== undefined && typeof value !== 'boolean' && typeof value !== 'object') {\n id = String(value);\n }\n return id ? toKebabCase(id) : id;\n};\n\n/**\n * Use to process code next tick in the event loop\n * @param callback - code to excute on next tick\n * @returns differed code excution\n */\nconst nextTick = async (callback) => {\n if (callback)\n return callback();\n};\n/**\n * Cursor possible values\n */\nconst Cursor = {\n FIRST: 'first',\n NEXT: 'next',\n PREVIOUS: 'previous',\n LAST: 'last',\n};\nconst DEFAULT_TOP = 10;\n/**\n * Define a valid Page object and navigate throw page items with cursor.\n * Page object entries follow the REST API page practices.\n */\nclass Page {\n /**\n * Define items\n */\n items = [];\n /**\n * Define total\n */\n total;\n /**\n * Define top\n */\n top = DEFAULT_TOP;\n /**\n * Define next\n */\n next;\n /**\n * Define base index\n */\n baseIndex = 1;\n constructor(init) {\n if (!isObject(init)) {\n throw new Error('Page - init must match IPage type.');\n }\n else {\n if (Array.isArray(init.items))\n this.items = init.items;\n if (typeof init.top === 'number')\n this.top = init.top;\n this.total = typeof init.total === 'number' ? init.total : this.items.length;\n this.next = init.next;\n }\n }\n /**\n * Get index of items from cursor\n * @param cursor - cursor to find\n * @param oldItem - previous item\n * @returns item index\n */\n getIndexFromCursor = (cursor = 'first', oldItem) => {\n const startIndex = 0;\n if (!Array.isArray(this.items) || !this.items.length)\n return null;\n const lastIndex = this.items.length - this.baseIndex;\n let newIndex;\n let oldIndex = startIndex;\n if (['previous', 'next'].includes(cursor) && oldItem) {\n const findedIndex = this.items.findIndex(item => JSON.stringify(item) === JSON.stringify(oldItem));\n if (findedIndex === -1)\n return startIndex;\n oldIndex = findedIndex;\n }\n // Update index from cursor\n if (cursor === 'first') {\n newIndex = startIndex;\n }\n else if (cursor === 'last') {\n newIndex = lastIndex;\n }\n else if (cursor === 'previous') {\n newIndex = JSON.stringify(this.items[oldIndex]) === JSON.stringify(this.items[startIndex]) ? lastIndex : oldIndex - this.baseIndex;\n }\n else if (cursor === 'next') {\n newIndex = JSON.stringify(this.items[oldIndex]) === JSON.stringify(this.items[lastIndex]) ? startIndex : oldIndex + this.baseIndex;\n }\n else {\n newIndex = startIndex;\n }\n return newIndex;\n };\n}\n/**\n * Paginate an items array to navigate into with pages.\n * It follow REST standard and allow to navigate in items array with a similar format.\n */\nclass Paginate {\n /**\n * Define paginated items\n */\n items = [];\n /* Privates */\n #top = DEFAULT_TOP;\n #next;\n #total;\n constructor(items, options) {\n if (Array.isArray(items))\n this.items = items;\n if (options && (['string', 'function'].includes(typeof options.next) || (isObject(options.next) && URL.canParse(options.next))))\n this.#next = options.next;\n if (typeof options?.top === 'number')\n this.#top = options.top;\n if (typeof options?.total === 'number')\n this.#total = options.total;\n }\n /**\n * Get page\n * @param offset - pagiantion offset\n * @param filter - filter methode\n * @returns formated page\n */\n getPage = (offset = 0, filter) => {\n const items = typeof filter === 'function' ? this.items.filter(filter) : this.items;\n let next;\n if (this.#next)\n next = this.#next;\n else if (items.length > offset + this.#top)\n next = () => this.getPage(offset + this.#top, filter);\n return new Page({\n items: items.slice(offset, offset + this.#top),\n total: this.#total,\n top: this.#top,\n next,\n });\n };\n}\n\n/**\n * Date RegExp, usefull to test if string is a follow the date pattern\n * @example\n * ```ts\n * dateRegExp.test('mystring') // false\n * dateRegExp.test('2020-12-31') // true\n * ```\n */\nconst dateRegExp = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$/;\n/**\n * Formats a date object to a string with the pattern 'YYYY-MM-DD'.\n * @param date - date to parse\n * @returns string date with pattern 'YYYY-MM-DD'\n * @example\n * ```ts\n * dateToString(new Date('2023-12-24')) // '2023-12-24'\n * ```\n */\nconst dateToString = (date) => date.toISOString().split('T')[0];\n\n/**\n * Check if element belongs to the given tagNames list\n * @param element - element to check\n * @param tagNames - allowed tag names list\n * @returns `true` if element tagName is in the tagNames list\n */\nconst isTagName = (element, tagNames) => tagNames.includes(element?.tagName.toLowerCase());\n/**\n * CSS selector to select focusable elements.\n * @example\n * ```ts\n * const allFocusableElements: HTMLElement[] = Array.from(this.element.querySelectorAll(focusableElements));\n * ```\n */\nconst focusableElements = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), [identifier], mg-button';\n\n/**\n * Validate number\n * @param value - value to check\n * @returns `true` if number is valid\n */\nconst isValidNumber = (value) => typeof value === 'number' && !Number.isNaN(value);\n\n/**\n * Get windows\n * @param localWindow - the window we are lookink for other windows\n * @returns The list of windows found\n */\nconst getWindows = (localWindow) => {\n const parentWindows = getParentWindows(localWindow);\n const childWindows = getChildWindows(localWindow);\n return [localWindow, ...parentWindows, ...childWindows];\n};\n/**\n * Get parent windows\n * @param localWindow - the window we are lookink for parents\n * @param windows - The list of allready found windows\n * @returns The list of windows found\n */\nconst getParentWindows = (localWindow, windows = []) => {\n // Check if is in iframe\n if (localWindow.self !== localWindow.top) {\n // Check if we have permission to access parent\n try {\n const parentWindow = localWindow.parent;\n if (parentWindow) {\n windows.push(parentWindow);\n return getParentWindows(parentWindow, windows);\n }\n else\n return windows;\n }\n catch (err) {\n console.error('Different hosts between iframes:', err);\n return windows;\n }\n }\n return windows;\n};\n/**\n * Get child windows\n * @param localWindow - the window we are lookink for children\n * @param windows - The list of allready found windows\n * @returns The list of windows found\n */\nconst getChildWindows = (localWindow, windows = []) => {\n if (localWindow.frames.length > 0) {\n for (const childWindow of Array.from(localWindow.frames)) {\n windows.push(childWindow);\n getChildWindows(childWindow, windows);\n }\n }\n return windows;\n};\n\nexport { ClassList, Cursor, Page, Paginate, allItemsAreString, cleanString, createID, dateRegExp, dateToString, focusableElements, formatID, getChildWindows, getObjectValueFromKey, getParentWindows, getWindows, isObject, isTagName, isValidNumber, isValidString, isValideID, nextTick, toKebabCase, toString };\n//# sourceMappingURL=index.js.map\n"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as i,h as e,g as s}from"./p-CAuxALt5.js";import{P as n,C as o,f as a,a as h,n as r,g as c,t as p,b as u,i as m,c as l,d as g}from"./p-Dr7GYvIz.js";import{c as d,a as b,w as f}from"./p-CNgv8hc5.js";import{i as v}from"./p-CwZ2wzxw.js";import{K as w}from"./p-yMGqY8YG.js";const _=".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-card-overflow:hidden;--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__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) + 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) + 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) + 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-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 x=t=>t&&typeof t==="object"&&typeof t.title==="string"&&t.value!==undefined;const y=t=>Array.isArray(t)&&t.every(x);const z=t=>{const i=m(t)&&Object.hasOwn(t,"request")&&Object.hasOwn(t,"response");if(i){const{request:i,response:e}=t;if([i,e].some((t=>!m(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"||e.itemValue===undefined);return s&&n}else{return i}};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.fetchError=i(this,"fetch-error");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=>a(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;if(!this.debounce){this.debounce=true;setTimeout((()=>{this.filter=this.input.value;this.debounce=false}),250)}};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:h.NEXT}).then((()=>{this.input.focus()}))};this.handleFilterKeydown=t=>{if(this.disabled||t.ctrlKey||t.shiftKey)return;let i=false;switch(t.key){case w.TAB:case w.ENTER:i=t.key===w.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 w.DOWN:case w.ARROWDOWN:case w.UP:case w.ARROWUP:i=true;if(this.isLoading||!(this.page.total>0)){this.popoverDisplay=true;break}if(Boolean(t.altKey)&&[w.DOWN,w.ARROWDOWN].includes(t.key)){this.popoverDisplay=true;break}let s;const n=this.popoverDisplay&&x(this.option);if([w.DOWN,w.ARROWDOWN].includes(t.key)){s=n?h.NEXT:h.FIRST}else if([w.UP,w.ARROWUP].includes(t.key)){s=n?h.PREVIOUS:h.LAST}this.loadingWrapper({name:"scroll",cursor:s});this.popoverDisplay=true;break;case w.LEFT:case w.ARROWLEFT:case w.HOME:case w.RIGHT:case w.ARROWRIGHT:case w.END:if(!x(this.option))break;i=true;this.option=null;let o;if(w.HOME===t.key){o=0}else if(w.END===t.key){o=this.filter.length}if(typeof o==="number"){this.input.setSelectionRange(o,o)}break;case w.ESC:case w.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=>{requestAnimationFrame((()=>{var i;if(!this.popoverDisplay)return;(i=this.element.shadowRoot.querySelector(`li:nth-of-type(${(t||0)+this.page.baseIndex})`))===null||i===void 0?void 0:i.scrollIntoView({block:"nearest"})}))};this.isCurrentOption=t=>(x(this.value)?this.value.value:this.value)===t.value;this.getValueTitle=()=>{if(this.value&&x(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===h.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 g(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);if(!t.ok){this.fetchError.emit(new Error(`${t.status} - ${t.statusText}`));return}const e=await t.json();const s=c(e,this.fetchmappings.response.items).map((t=>({title:c(t,this.fetchmappings.response.itemTitle),value:this.fetchmappings.response.itemValue!==undefined?c(t,this.fetchmappings.response.itemValue):t})));const n=Number(c(e,this.fetchmappings.response.total,0));let o=c(e,this.fetchmappings.response.next);if(URL.canParse(i)&&Boolean(o)&&!URL.canParse(o)){const t=new URL(i);if(t.pathname.endsWith(o.split("?")[0])){o=new URL(o,t).toString()}}return{items:s,total:n,next:o,top:s.length}}catch(t){this.fetchError.emit(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: ${p(t)}.`)}else if(Array.isArray(t)&&t.length===0){this.options=new n([])}else if(u(t)){this.options=new n(t.map((t=>({title:t,value:t}))),{total:t.length})}else if(y(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: ${p(t)}.`)}}watchIdentifier(t){if(Boolean(t)){this.popoverId=`${t}-popover`;this.element.dataset.mgPopoverGuard=this.popoverId}}watchReadonly(t){if(t)this.classCollection.add(d);else this.classCollection.delete(d)}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(b)}else{this.classCollection.delete(b)}}watchMgWidth(t){f.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(Boolean(t)){this.loadingWrapper({name:"load-data"})}}watchFetchOptions(t){if(this.fetchurl&&t&&!m(t)){throw new Error(`<mg-input-combobox> prop "fetchoptions" value must be a valid RequestInit. Passed value: ${p(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)&&!z(t)){throw new Error(`<mg-input-combobox> prop "fetchmappings" value must be { request: RequestMappingType, response: ResponseMappingType }. Passed value: ${p(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()}else{this.option=null;this.filter=this.getValueTitle();this.classCollection.delete(this.classFocus);this.handlerInProgress="blur";this.displayError().finally((()=>{this.handlerInProgress=undefined}))}}async setFocus(){var t;(t=this.input)===null||t===void 0?void 0:t.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(!l(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){this.setValue(null);this.option=null;this.filter="";return new Promise((t=>{requestAnimationFrame((()=>{this.checkValidity();this.errorMessage=undefined;this.hasDisplayedError=false;t()}))}))}}setValue(t){if(!x(t)){this.value=""}else if(u(this.items||this.options.items)){this.value=t.title}else{this.value=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=v(this.element).messages;this.watchIdentifier(this.identifier);this.watchItems(this.items);if(Boolean(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,h;const r=`${this.identifier}-list`;const c=this.getValueTitle();const p=this.value&&!this.disabled;let u;if(((t=this.page)===null||t===void 0?void 0:t.items.length)>0)u="list";else if(((i=this.page)===null||i===void 0?void 0:i.items.length)===0&&Boolean(this.filter))u="notfound";else if(((s=this.page)===null||s===void 0?void 0:s.items.length)===0)u="notavailable";let m;if(Boolean((n=this.option)===null||n===void 0?void 0:n.value)){m=this.option.value}else if(typeof this.value==="string"){m=this.value}else{m=(o=this.value)===null||o===void 0?void 0:o.value}return e("mg-input",{key:"d11ca521c7f2400edd4fa006a929cf6b2d19ef80",label:this.label,identifier:this.identifier,class:this.classCollection.classes.join(" "),ariaDescribedbyIDs:u&&u!=="list"?[u]:[],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?c&&e("b",{class:"mg-c-input__readonly-value"},c):e("mg-popover",{identifier:this.popoverId,placement:"bottom-start",display:this.popoverDisplay,"arrow-hide":true,style:{"--mg-c-input-list-width":Boolean((h=this.input)===null||h===void 0?void 0:h.offsetWidth)?`${this.input.offsetWidth}px`:undefined},"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":a(m),onInput:this.handleFilterInput,onBlur:this.handleFilterBlur,onFocus:this.handleFilterFocus,onKeyDown:this.handleFilterKeydown,ref:t=>{if(t!==null)this.input=t}}),p?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"},u==="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=>{var i;return e("li",{role:"option",class:{"mg-c-input__input-list-item":true,"mg-c-input__input-list-item--focus-visible":JSON.stringify((i=this.option)===null||i===void 0?void 0:i.value)===JSON.stringify(t.value),"mg-c-input__input-list-item--selected":this.isCurrentOption(t)},key:t.title,id:a(t.value),"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)],u==="notfound"&&e("p",{id:u,class:"mg-c-input__popover-info"},this.messages.input.combobox.notFound),u==="notavailable"&&e("p",{id:u,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=_;export{k as mg_input_combobox};
2
- //# sourceMappingURL=p-c907ddac.entry.js.map
@@ -1 +0,0 @@
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","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","formatID","target","id","handleResetButton","stopPropagation","reset","then","input","focus","handlePopoverDisplay","detail","handleFilterInput","checkValidity","setErrorMessage","debounce","setTimeout","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","Boolean","altKey","includes","isNavigationStart","FIRST","PREVIOUS","LAST","LEFT","ARROWLEFT","HOME","RIGHT","ARROWRIGHT","END","index","length","setSelectionRange","ESC","ESCAPE","preventDefault","scrollToIndex","requestAnimationFrame","_a","element","shadowRoot","querySelector","baseIndex","scrollIntoView","block","getValueTitle","setValidity","errorMessage","valid","validity","valueMissing","messages","errors","optionsFilter","toLocaleLowerCase","action","promise","loadingAction","findIndex","toString","goToNextPage","loadMoreElement","click","nextTick","updatePage","getIndexFromCursor","loadMore","emit","fetchurl","getOptions","nextPage","top","Page","assign","async","getPage","url","updateUrl","replaceAll","fetchmappings","encodeURIComponent","fetch","fetchoptions","ok","fetchError","Error","status","statusText","json","getObjectValueFromKey","map","Number","URL","canParse","previousUrl","pathname","endsWith","split","error","watchValue","newValue","valueChange","watchItems","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","render","listId","readonlyValue","withResetButton","popoverContent","_b","_c","activeDescendant","_d","_e","h","label","class","join","ariaDescribedbyIDs","tooltip","helpText","placement","display","style","_f","offsetWidth","icon","type","role","placeholder","autocomplete","onInput","onBlur","onFocus","onKeyDown","ref","el","variant","general","tabindex","onClick","itemsLabel","slot","JSON","stringify","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-card-overflow: hidden;--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__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) + 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) + 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) + 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-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 {\n allItemsAreString,\n ClassList,\n getObjectValueFromKey,\n isValidString,\n nextTick,\n Page,\n Paginate,\n Cursor,\n type CursorType,\n toString,\n isObject,\n formatID,\n} from '@mgdis/core-ui-helpers/dist/utils';\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' || response.itemValue === undefined);\n return isValidRequest && isValidResponse;\n } else {\n return isValidRoot;\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 private debounce: boolean;\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 (Boolean(newValue)) {\n this.loadingWrapper({ name: 'load-data' });\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 } 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 * Emited event when fetch API throw an error\n */\n @Event({ eventName: 'fetch-error' }) fetchError: EventEmitter<Error>;\n\n /**\n * Set focus on input.\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) {\n this.setValue(null);\n this.option = null;\n this.filter = '';\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.errorMessage = undefined;\n this.hasDisplayedError = false;\n resolve();\n });\n });\n }\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 => formatID(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\n // update filter with debounce to prevent filter update overload\n if (!this.debounce) {\n this.debounce = true;\n setTimeout(() => {\n this.filter = this.input.value;\n this.debounce = false;\n }, 250);\n }\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 // ensure we have an opened popover element on screen when the scrollIntiView is called\n requestAnimationFrame(() => {\n if (!this.popoverDisplay) return;\n this.element.shadowRoot.querySelector(`li:nth-of-type(${(index || 0) + this.page.baseIndex})`)?.scrollIntoView({ block: 'nearest' });\n });\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 if (allItemsAreString(this.items || this.options.items)) {\n this.value = newValue.title;\n } else {\n this.value = { ...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);\n if (!response.ok) {\n this.fetchError.emit(new Error(`${response.status} - ${response.statusText}`));\n return;\n }\n const json = await response.json();\n const items = getObjectValueFromKey<Response, Option[]>(json, this.fetchmappings.response.items).map(\n (item): Option => ({\n title: getObjectValueFromKey<unknown, Option['title']>(item, this.fetchmappings.response.itemTitle),\n value: this.fetchmappings.response.itemValue !== undefined ? getObjectValueFromKey<unknown, Option['value']>(item, this.fetchmappings.response.itemValue) : item,\n }),\n );\n const total = Number(getObjectValueFromKey<Response, number>(json, this.fetchmappings.response.total, 0));\n let next = getObjectValueFromKey<Response, string>(json, this.fetchmappings.response.next);\n if (URL.canParse(updateUrl) && Boolean(next) && !URL.canParse(next)) {\n const previousUrl = new URL(updateUrl);\n if (previousUrl.pathname.endsWith(next.split('?')[0])) {\n next = new URL(next, previousUrl).toString();\n }\n }\n return { items, total, next, top: items.length };\n } catch (error) {\n this.fetchError.emit(error);\n }\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.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 let activeDescendant;\n if (Boolean(this.option?.value)) {\n activeDescendant = this.option.value;\n } else if (typeof this.value === 'string') {\n activeDescendant = this.value;\n } else {\n activeDescendant = this.value?.value;\n }\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 }}\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={formatID(activeDescendant)}\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 )}\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': JSON.stringify(this.option?.value) === JSON.stringify(option.value),\n 'mg-c-input__input-list-item--selected': this.isCurrentOption(option),\n }}\n key={option.title}\n id={formatID(option.value)}\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":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as s,f as e,h as i,g as a}from"./p-CAuxALt5.js";import{C as h,t as o}from"./p-Dr7GYvIz.js";import{i as r}from"./p-CwZ2wzxw.js";const n=["info","warning","success","danger"];const c=["bar-left","background"];const l=".mg-c-alert__close-button{position:absolute;top:0;right:0}.mg-c-alert.mg-c-alert--close-button{--mg-c-card-spacing:0 var(--mg-b-size-min-height) 0 0}";const u=class{constructor(e){t(this,e);this.componentShow=s(this,"component-show");this.componentHide=s(this,"component-hide");this.componentClose=s(this,"component-close");this.classCloseButton="mg-c-alert--close-button";this.storedTimer=null;this.isFocused=false;this.isHovered=false;this.variant="info";this.variantStyle="bar-left";this.classCollection=new h(["mg-c-alert"]);this.hasActions=false;this.setTimer=()=>{this.storedTimer=setTimeout((()=>this.element.hidden=true),this.delay*1e3)};this.clearTimer=()=>{clearTimeout(this.storedTimer)};this.timerEvents=t=>{this.clearTimer();const s=t.type==="mouseenter";this[s?"isHovered":"isFocused"]=true;this.element.addEventListener(s?"mouseleave":"focusout",(t=>{this[t.type==="mouseleave"?"isHovered":"isFocused"]=false;if(!this.isFocused&&!this.isHovered)this.setTimer()}),{once:true})};this.handleClose=()=>{this.element.hidden=true;this.componentClose.emit()}}watchDelay(t){if(t!==undefined&&t<2){throw new Error(`<mg-alert> prop "delay" must be greater than 2 seconds. Passed value: ${o(t)}.`)}}watchVariant(t){if(t&&!n.includes(t)){throw new Error(`<mg-alert> prop "variant" must be one of: ${n.join(", ")}. Passed value: ${o(t)}.`)}}watchVariantStyle(t){if(t&&!c.includes(t)){throw new Error(`<mg-alert> prop "variantStyle" must be one of: ${c.join(", ")}. Passed value: ${o(t)}.`)}}watchHidden(t){if(typeof t==="string"&&t===""){t=true}if(t){this.componentHide.emit();["focusin","mouseenter"].forEach((t=>{this.element.removeEventListener(t,this.timerEvents)}));this.clearTimer()}else{this.componentShow.emit();if(this.delay>1){this.setTimer();["focusin","mouseenter"].forEach((t=>{this.element.addEventListener(t,this.timerEvents)}))}}e(this)}componentWillLoad(){this.messages=r(this.element).messages;this.watchVariant(this.variant);this.watchVariantStyle(this.variantStyle);this.watchDelay(this.delay);this.watchHidden(this.element.hidden);this.hasActions=this.element.querySelector('[slot="actions"]')!==null;if(!this.hasActions){this.classCollection.add(this.classCloseButton)}}render(){return i("mg-message",{key:"12216af414367fc3eea31cffb2d7e38c724038a3",class:this.classCollection.join(),role:["info","success"].includes(this.variant)?"status":"alert",variant:this.variant,variantStyle:this.variantStyle},i("slot",{key:"bdab00611363a879e8d2bd23442e62ab5e7238e3"}),this.hasActions?i("span",{slot:"actions"},i("slot",{name:"actions"})):i("span",{class:"mg-c-alert__close-button"},i("mg-button",{"is-icon":true,variant:"flat",label:this.messages.alert.closeButton,onClick:this.handleClose},i("mg-icon",{icon:"cross"}))))}get element(){return a(this)}static get watchers(){return{delay:["watchDelay"],variant:["watchVariant"],variantStyle:["watchVariantStyle"],hidden:["watchHidden"]}}};u.style=l;export{u as mg_alert};
2
- //# sourceMappingURL=p-d711941b.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["variants","variantStyles","mgAlertCss","MgAlert","constructor","hostRef","this","classCloseButton","storedTimer","isFocused","isHovered","variant","variantStyle","classCollection","ClassList","hasActions","setTimer","setTimeout","element","hidden","delay","clearTimer","clearTimeout","timerEvents","event","isMouseEvent","type","addEventListener","eventOut","once","handleClose","componentClose","emit","watchDelay","newValue","undefined","Error","toString","watchVariant","includes","join","watchVariantStyle","watchHidden","componentHide","forEach","removeEventListener","componentShow","forceUpdate","componentWillLoad","messages","initLocales","querySelector","add","render","h","key","class","role","slot","name","label","alert","closeButton","onClick","icon"],"sources":["src/components/molecules/mg-alert/mg-alert.conf.ts","../styles/dist/components/mg-alert.css?tag=mg-alert&encapsulation=shadow","src/components/molecules/mg-alert/mg-alert.tsx"],"sourcesContent":["import type { Variant, VariantStyle } from '../../../types';\n\n/**\n * List available variants\n */\nexport const variants = ['info', 'warning', 'success', 'danger'] as const;\n\n/**\n * Variant type\n */\nexport type VariantType = Variant & (typeof variants)[number];\n\n/**\n * List available variant styles\n */\nexport const variantStyles = ['bar-left', 'background'] as const;\n\n/**\n * VariantStyle type\n */\nexport type VariantStyleType = VariantStyle & (typeof variantStyles)[number];\n",".mg-c-alert__close-button{position:absolute;top:0;right:0}.mg-c-alert.mg-c-alert--close-button{--mg-c-card-spacing: 0 var(--mg-b-size-min-height) 0 0}/*# sourceMappingURL=mg-alert.css.map */\n","import { Component, Element, Event, EventEmitter, h, Prop, State, Watch, forceUpdate } from '@stencil/core';\nimport { ClassList, toString } from '@mgdis/core-ui-helpers/dist/utils';\nimport { variants, variantStyles, VariantStyleType, VariantType } from './mg-alert.conf';\nimport { initLocales } from '../../../locales';\n\n/**\n * @slot - Alert content\n * @slot actions - Actions content\n */\n@Component({\n tag: 'mg-alert',\n styleUrl: '../../../../node_modules/@mgdis/styles/dist/components/mg-alert.css',\n shadow: true,\n})\nexport class MgAlert {\n /************\n * Internal *\n ************/\n\n // Classes\n private readonly classCloseButton = 'mg-c-alert--close-button';\n\n // Stored timer setted when hide action is run from setTimeOut\n private storedTimer: ReturnType<typeof setTimeout> = null;\n\n // Manage hover\n private isFocused = false;\n private isHovered = false;\n\n // Locales\n private messages;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgAlertElement;\n\n /**\n * Add a delay to hide/close message when it passed\n * Value is defined in seconds and must greater than 2 seconds\n */\n @Prop() delay?: number;\n @Watch('delay')\n watchDelay(newValue: MgAlert['delay']): void {\n if (newValue !== undefined && newValue < 2) {\n throw new Error(`<mg-alert> prop \"delay\" must be greater than 2 seconds. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Define variant\n */\n @Prop() variant?: VariantType = 'info';\n @Watch('variant')\n watchVariant(newValue: MgAlert['variant']): void {\n if (newValue && !variants.includes(newValue)) {\n throw new Error(`<mg-alert> prop \"variant\" must be one of: ${variants.join(', ')}. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Define variant style\n */\n @Prop() variantStyle?: VariantStyleType = 'bar-left';\n @Watch('variantStyle')\n watchVariantStyle(newValue: MgAlert['variantStyle']): void {\n if (newValue && !variantStyles.includes(newValue)) {\n throw new Error(`<mg-alert> prop \"variantStyle\" must be one of: ${variantStyles.join(', ')}. Passed value: ${toString(newValue)}.`);\n }\n }\n\n /**\n * Watch hidden prop\n */\n // eslint-disable-next-line @stencil-community/no-unused-watch\n @Watch('hidden')\n watchHidden(newValue: boolean): void {\n if (typeof newValue === 'string' && newValue === '') {\n newValue = true;\n }\n if (newValue) {\n this.componentHide.emit();\n // Remove event Listener\n ['focusin', 'mouseenter'].forEach(event => {\n this.element.removeEventListener(event, this.timerEvents);\n });\n // Clear Timer\n this.clearTimer();\n } else {\n this.componentShow.emit();\n // If delay is set\n if (this.delay > 1) {\n // Start timer\n this.setTimer();\n // Stop timer when get focus or mouse enter\n ['focusin', 'mouseenter'].forEach(event => {\n this.element.addEventListener(event, this.timerEvents);\n });\n }\n }\n forceUpdate(this);\n }\n\n /**\n * Component classes\n */\n @State() classCollection: ClassList = new ClassList(['mg-c-alert']);\n\n /**\n * Define if component is using actions slot\n */\n @State() hasActions = false;\n\n /**\n * Emited event when alert is diplayed\n */\n @Event({ eventName: 'component-show' }) componentShow: EventEmitter<void>;\n\n /**\n * Emited event when alert is hidden\n */\n @Event({ eventName: 'component-hide' }) componentHide: EventEmitter<void>;\n\n /**\n * Emmited event when alert is closed\n */\n @Event({ eventName: 'component-close' }) componentClose: EventEmitter<void>;\n\n /**\n * Set timer\n */\n private setTimer = (): void => {\n this.storedTimer = setTimeout(() => (this.element.hidden = true), this.delay * 1000);\n };\n\n /**\n * Clear timer\n */\n private clearTimer = (): void => {\n clearTimeout(this.storedTimer);\n };\n\n /**\n * Event to add on element\n * @param event - event\n */\n private timerEvents = (event: MouseEvent | FocusEvent): void => {\n this.clearTimer();\n const isMouseEvent: boolean = event.type === 'mouseenter';\n // Needed to ensure we don't start the timer\n this[isMouseEvent ? 'isHovered' : 'isFocused'] = true;\n\n // Restart timer when loose focus AND mouse leave\n this.element.addEventListener(\n isMouseEvent ? 'mouseleave' : 'focusout',\n eventOut => {\n this[eventOut.type === 'mouseleave' ? 'isHovered' : 'isFocused'] = false;\n // Start timer if needed\n if (!this.isFocused && !this.isHovered) this.setTimer();\n },\n { once: true },\n );\n };\n\n /**\n * Handle close button\n */\n private handleClose = (): void => {\n this.element.hidden = true;\n this.componentClose.emit();\n };\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 // Validate\n this.watchVariant(this.variant);\n this.watchVariantStyle(this.variantStyle);\n this.watchDelay(this.delay);\n this.watchHidden(this.element.hidden);\n // Check if component has actions slot\n this.hasActions = this.element.querySelector('[slot=\"actions\"]') !== null;\n if (!this.hasActions) {\n this.classCollection.add(this.classCloseButton);\n }\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <mg-message\n class={this.classCollection.join()}\n role={['info', 'success'].includes(this.variant) ? 'status' : 'alert'}\n variant={this.variant}\n variantStyle={this.variantStyle}\n >\n <slot></slot>\n {this.hasActions ? (\n <span slot=\"actions\">\n <slot name=\"actions\"></slot>\n </span>\n ) : (\n <span class=\"mg-c-alert__close-button\">\n <mg-button is-icon variant=\"flat\" label={this.messages.alert.closeButton} onClick={this.handleClose}>\n <mg-icon icon=\"cross\"></mg-icon>\n </mg-button>\n </span>\n )}\n </mg-message>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,h as t,g as a}from"./p-CAuxALt5.js";import{i}from"./p-CwZ2wzxw.js";import{c as r,t as s}from"./p-Dr7GYvIz.js";const o=".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}";const n=class{constructor(t){e(this,t);this.messageHide=false}watchMessage(e){if(e&&!r(e))throw new Error(`<mg-loader> prop "message" must be a valid string. Passed value: ${s(e)}.`)}componentWillLoad(){this.messages=i(this.element).messages;this.watchMessage(this.message)}render(){return t("div",{key:"ad7aa5e4fa0704cf2fa174ae1ed960f72deb79e3",class:"mg-c-loader","aria-live":"polite"},t("mg-icon",{key:"47e6df1e459a74851bf370e460438b7bdc2ed3d0",icon:"loader",spin:true}),t("span",{key:"44d36e8492401cacb911f21fc707c1de03ae7a5d",class:{"mg-u-visually-hidden":this.messageHide}},this.message||this.messages.loader.inProgress))}get element(){return a(this)}static get watchers(){return{message:["watchMessage"]}}};n.style=o;export{n as mg_loader};
2
- //# sourceMappingURL=p-da1e7950.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["mgLoaderCss","MgLoader","constructor","hostRef","this","messageHide","watchMessage","newValue","isValidString","Error","toString","componentWillLoad","messages","initLocales","element","message","render","h","key","class","icon","spin","loader","inProgress"],"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/core-ui-helpers/dist/utils';\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"],"mappings":"4HAAA,MAAMA,EAAc,ukB,MCSPC,EAAQ,MALrB,WAAAC,CAAAC,G,UAkCUC,KAAWC,YAAG,KA6BvB,CApCC,YAAAC,CAAaC,GACX,GAAIA,IAAaC,EAAcD,GAAW,MAAM,IAAIE,MAAM,oEAAoEC,EAASH,M,CAezI,iBAAAI,GAEEP,KAAKQ,SAAWC,EAAYT,KAAKU,SAASF,SAG1CR,KAAKE,aAAaF,KAAKW,Q,CAOzB,MAAAC,GACE,OACEC,EAAK,OAAAC,IAAA,2CAAAC,MAAM,cAAa,YAAW,UACjCF,EAAA,WAAAC,IAAA,2CAASE,KAAK,SAASC,KAAe,OACtCJ,EAAM,QAAAC,IAAA,2CAAAC,MAAO,CAAE,uBAAwBf,KAAKC,cAAgBD,KAAKW,SAAWX,KAAKQ,SAASU,OAAOC,Y","ignoreList":[]}