@mgdis/mg-components 5.15.0 → 5.17.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 (479) hide show
  1. package/dist/cjs/{index-fede8ee2.js → index-c042e24b.js} +321 -68
  2. package/dist/cjs/index-c042e24b.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +2 -0
  4. package/dist/cjs/index.cjs.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +5 -12
  6. package/dist/cjs/loader.cjs.js.map +1 -0
  7. package/dist/cjs/{mg-action-more_32.cjs.entry.js → mg-action-more_34.cjs.entry.js} +341 -112
  8. package/dist/cjs/mg-action-more_34.cjs.entry.js.map +1 -0
  9. package/dist/cjs/mg-components.cjs.js +5 -3
  10. package/dist/cjs/mg-components.cjs.js.map +1 -0
  11. package/dist/cjs/mg-item-more.cjs.entry.js +8 -4
  12. package/dist/cjs/mg-item-more.cjs.entry.js.map +1 -0
  13. package/dist/cjs/{mg-menu.conf-f9d0ddec.js → mg-menu.conf-43aacf30.js} +2 -0
  14. package/dist/cjs/mg-menu.conf-43aacf30.js.map +1 -0
  15. package/dist/collection/assets/icons/index.js +184 -0
  16. package/dist/collection/collection-manifest.json +37 -35
  17. package/dist/collection/components/atoms/mg-badge/mg-badge.conf.js +1 -0
  18. package/dist/collection/components/atoms/mg-badge/mg-badge.conf.js.map +1 -0
  19. package/dist/collection/components/atoms/mg-badge/mg-badge.js +6 -4
  20. package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -0
  21. package/dist/collection/components/atoms/mg-badge/test/mg-badge.e2e.playwright.js +33 -0
  22. package/dist/collection/components/atoms/mg-badge/test/mg-badge.e2e.playwright.js.map +1 -0
  23. package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js +70 -0
  24. package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js.map +1 -0
  25. package/dist/collection/components/atoms/mg-button/mg-button.conf.js +1 -0
  26. package/dist/collection/components/atoms/mg-button/mg-button.conf.js.map +1 -0
  27. package/dist/collection/components/atoms/mg-button/mg-button.js +10 -6
  28. package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -0
  29. package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js +91 -0
  30. package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js.map +1 -0
  31. package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js +142 -0
  32. package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js.map +1 -0
  33. package/dist/collection/components/atoms/mg-card/mg-card.conf.js +1 -0
  34. package/dist/collection/components/atoms/mg-card/mg-card.conf.js.map +1 -0
  35. package/dist/collection/components/atoms/mg-card/mg-card.js +8 -5
  36. package/dist/collection/components/atoms/mg-card/mg-card.js.map +1 -0
  37. package/dist/collection/components/atoms/mg-card/test/mg-card.e2e.js +36 -0
  38. package/dist/collection/components/atoms/mg-card/test/mg-card.e2e.js.map +1 -0
  39. package/dist/collection/components/atoms/mg-card/test/mg-card.spec.js +43 -0
  40. package/dist/collection/components/atoms/mg-card/test/mg-card.spec.js.map +1 -0
  41. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +3 -2
  42. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js.map +1 -0
  43. package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.e2e.js +15 -0
  44. package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.e2e.js.map +1 -0
  45. package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.spec.js +42 -0
  46. package/dist/collection/components/atoms/mg-character-left/test/mg-character-left.spec.js.map +1 -0
  47. package/dist/collection/components/atoms/mg-divider/mg-divider.js +2 -1
  48. package/dist/collection/components/atoms/mg-divider/mg-divider.js.map +1 -0
  49. package/dist/collection/components/atoms/mg-divider/test/mg-divider.e2e.js +11 -0
  50. package/dist/collection/components/atoms/mg-divider/test/mg-divider.e2e.js.map +1 -0
  51. package/dist/collection/components/atoms/mg-divider/test/mg-divider.spec.js +14 -0
  52. package/dist/collection/components/atoms/mg-divider/test/mg-divider.spec.js.map +1 -0
  53. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js +1 -0
  54. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js.map +1 -0
  55. package/dist/collection/components/atoms/mg-icon/mg-icon.js +11 -7
  56. package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +1 -0
  57. package/dist/collection/components/atoms/mg-icon/test/mg-icon.e2e.js +55 -0
  58. package/dist/collection/components/atoms/mg-icon/test/mg-icon.e2e.js.map +1 -0
  59. package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js +84 -0
  60. package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js.map +1 -0
  61. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +2 -1
  62. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js.map +1 -0
  63. package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.e2e.js +18 -0
  64. package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.e2e.js.map +1 -0
  65. package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.spec.js +27 -0
  66. package/dist/collection/components/atoms/mg-input-title/test/mg-input-title.spec.js.map +1 -0
  67. package/dist/collection/components/atoms/mg-tag/mg-tag.conf.js +1 -0
  68. package/dist/collection/components/atoms/mg-tag/mg-tag.conf.js.map +1 -0
  69. package/dist/collection/components/atoms/mg-tag/mg-tag.js +6 -4
  70. package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -0
  71. package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js +37 -0
  72. package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js.map +1 -0
  73. package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js +71 -0
  74. package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js.map +1 -0
  75. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.css +43 -0
  76. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +50 -0
  77. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +1 -0
  78. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js +1 -0
  79. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js.map +1 -0
  80. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.css +0 -43
  81. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +64 -17
  82. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -0
  83. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js +132 -0
  84. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js.map +1 -0
  85. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js +264 -0
  86. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js.map +1 -0
  87. package/dist/collection/components/molecules/inputs/MgInput.conf.js +1 -0
  88. package/dist/collection/components/molecules/inputs/MgInput.conf.js.map +1 -0
  89. package/dist/collection/components/molecules/inputs/MgInput.js +3 -2
  90. package/dist/collection/components/molecules/inputs/MgInput.js.map +1 -0
  91. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js +2 -1
  92. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js.map +1 -0
  93. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +12 -7
  94. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -0
  95. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js +1 -0
  96. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js.map +1 -0
  97. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +2 -2
  98. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +18 -12
  99. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -0
  100. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js +243 -0
  101. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js.map +1 -0
  102. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js +581 -0
  103. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js.map +1 -0
  104. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js +1 -0
  105. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js.map +1 -0
  106. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +10 -8
  107. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -0
  108. package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.e2e.js +123 -0
  109. package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.e2e.js.map +1 -0
  110. package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.spec.js +324 -0
  111. package/dist/collection/components/molecules/inputs/mg-input-date/test/mg-input-date.spec.js.map +1 -0
  112. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.conf.js +1 -0
  113. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.conf.js.map +1 -0
  114. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +46 -23
  115. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -0
  116. package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.e2e.js +212 -0
  117. package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.e2e.js.map +1 -0
  118. package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.spec.js +401 -0
  119. package/dist/collection/components/molecules/inputs/mg-input-numeric/test/mg-input-numeric.spec.js.map +1 -0
  120. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +10 -7
  121. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -0
  122. package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.e2e.js +115 -0
  123. package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.e2e.js.map +1 -0
  124. package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.spec.js +234 -0
  125. package/dist/collection/components/molecules/inputs/mg-input-password/test/mg-input-password.spec.js.map +1 -0
  126. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.conf.js +1 -0
  127. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.conf.js.map +1 -0
  128. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +10 -7
  129. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +1 -0
  130. package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js +154 -0
  131. package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js.map +1 -0
  132. package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.spec.js +295 -0
  133. package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.spec.js.map +1 -0
  134. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.conf.js +1 -0
  135. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.conf.js.map +1 -0
  136. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +14 -9
  137. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -0
  138. package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.e2e.js +194 -0
  139. package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.e2e.js.map +1 -0
  140. package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.spec.js +344 -0
  141. package/dist/collection/components/molecules/inputs/mg-input-select/test/mg-input-select.spec.js.map +1 -0
  142. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +12 -8
  143. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -0
  144. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js +171 -0
  145. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js.map +1 -0
  146. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js +280 -0
  147. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js.map +1 -0
  148. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +10 -7
  149. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -0
  150. package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.e2e.js +129 -0
  151. package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.e2e.js.map +1 -0
  152. package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js +255 -0
  153. package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js.map +1 -0
  154. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js +1 -0
  155. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.conf.js.map +1 -0
  156. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +6 -4
  157. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -0
  158. package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.e2e.js +125 -0
  159. package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.e2e.js.map +1 -0
  160. package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js +203 -0
  161. package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js.map +1 -0
  162. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js +1 -0
  163. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.conf.js.map +1 -0
  164. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +9 -5
  165. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +1 -0
  166. package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.e2e.js +268 -0
  167. package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.e2e.js.map +1 -0
  168. package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.spec.js +175 -0
  169. package/dist/collection/components/molecules/menu/mg-menu/test/mg-menu.spec.js.map +1 -0
  170. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js +1 -0
  171. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js.map +1 -0
  172. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +12 -9
  173. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +1 -0
  174. package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.e2e.js +119 -0
  175. package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.e2e.js.map +1 -0
  176. package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.spec.js +295 -0
  177. package/dist/collection/components/molecules/menu/mg-menu-item/test/mg-menu-item.spec.js.map +1 -0
  178. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js +1 -0
  179. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js.map +1 -0
  180. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +27 -14
  181. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -0
  182. package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.js +128 -0
  183. package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.js.map +1 -0
  184. package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.spec.js +187 -0
  185. package/dist/collection/components/molecules/mg-action-more/test/mg-action-more.spec.js.map +1 -0
  186. package/dist/collection/components/molecules/mg-details/mg-details.js +3 -2
  187. package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -0
  188. package/dist/collection/components/molecules/mg-details/test/mg-details.e2e.playwright.js +30 -0
  189. package/dist/collection/components/molecules/mg-details/test/mg-details.e2e.playwright.js.map +1 -0
  190. package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js +42 -0
  191. package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js.map +1 -0
  192. package/dist/collection/components/molecules/mg-form/mg-form.js +17 -7
  193. package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -0
  194. package/dist/collection/components/molecules/mg-form/test/mg-form.e2e.js +169 -0
  195. package/dist/collection/components/molecules/mg-form/test/mg-form.e2e.js.map +1 -0
  196. package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js +277 -0
  197. package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js.map +1 -0
  198. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +3 -2
  199. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -0
  200. package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.e2e.js +39 -0
  201. package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.e2e.js.map +1 -0
  202. package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.spec.js +36 -0
  203. package/dist/collection/components/molecules/mg-illustrated-message/test/mg-illustrated-message.spec.js.map +1 -0
  204. package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js +1 -0
  205. package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js.map +1 -0
  206. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +15 -9
  207. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js.map +1 -0
  208. package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.e2e.playwright.js +85 -0
  209. package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.e2e.playwright.js.map +1 -0
  210. package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.spec.js +106 -0
  211. package/dist/collection/components/molecules/mg-item-more/test/mg-item-more.spec.js.map +1 -0
  212. package/dist/collection/components/molecules/mg-message/mg-message.conf.js +1 -0
  213. package/dist/collection/components/molecules/mg-message/mg-message.conf.js.map +1 -0
  214. package/dist/collection/components/molecules/mg-message/mg-message.js +7 -5
  215. package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -0
  216. package/dist/collection/components/molecules/mg-message/test/mg-message.e2e.js +64 -0
  217. package/dist/collection/components/molecules/mg-message/test/mg-message.e2e.js.map +1 -0
  218. package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js +109 -0
  219. package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js.map +1 -0
  220. package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js +5 -0
  221. package/dist/collection/components/molecules/mg-modal/mg-modal.conf.js.map +1 -0
  222. package/dist/collection/components/molecules/mg-modal/mg-modal.js +42 -8
  223. package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -0
  224. package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js +62 -0
  225. package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js.map +1 -0
  226. package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.template.js +40 -0
  227. package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.template.js.map +1 -0
  228. package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js +26 -0
  229. package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js.map +1 -0
  230. package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js +122 -0
  231. package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js.map +1 -0
  232. package/dist/collection/components/molecules/mg-pagination/mg-pagination.conf.js +1 -0
  233. package/dist/collection/components/molecules/mg-pagination/mg-pagination.conf.js.map +1 -0
  234. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +5 -4
  235. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -0
  236. package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.e2e.playwright.js +57 -0
  237. package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.e2e.playwright.js.map +1 -0
  238. package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.spec.js +121 -0
  239. package/dist/collection/components/molecules/mg-pagination/test/mg-pagination.spec.js.map +1 -0
  240. package/dist/collection/components/molecules/mg-panel/mg-panel.conf.js +1 -0
  241. package/dist/collection/components/molecules/mg-panel/mg-panel.conf.js.map +1 -0
  242. package/dist/collection/components/molecules/mg-panel/mg-panel.js +10 -7
  243. package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -0
  244. package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js +106 -0
  245. package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js.map +1 -0
  246. package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js +223 -0
  247. package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js.map +1 -0
  248. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.css +135 -0
  249. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +101 -0
  250. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +1 -0
  251. package/dist/collection/components/molecules/mg-popover/mg-popover.css +0 -111
  252. package/dist/collection/components/molecules/mg-popover/mg-popover.js +47 -46
  253. package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -0
  254. package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.js +148 -0
  255. package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.js.map +1 -0
  256. package/dist/collection/components/molecules/mg-popover/test/mg-popover.spec.js +130 -0
  257. package/dist/collection/components/molecules/mg-popover/test/mg-popover.spec.js.map +1 -0
  258. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js +1 -0
  259. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.conf.js.map +1 -0
  260. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +5 -3
  261. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js.map +1 -0
  262. package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.e2e.js +55 -0
  263. package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.e2e.js.map +1 -0
  264. package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.spec.js +55 -0
  265. package/dist/collection/components/molecules/mg-skip-links/test/mg-skip-links.spec.js.map +1 -0
  266. package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js +1 -0
  267. package/dist/collection/components/molecules/mg-tabs/mg-tabs.conf.js.map +1 -0
  268. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +8 -5
  269. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -0
  270. package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.e2e.playwright.js +76 -0
  271. package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.e2e.playwright.js.map +1 -0
  272. package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js +332 -0
  273. package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js.map +1 -0
  274. package/dist/collection/index.js +1 -0
  275. package/dist/collection/index.js.map +1 -0
  276. package/dist/collection/locales/index.js +4 -3
  277. package/dist/collection/locales/index.js.map +1 -0
  278. package/dist/collection/locales/index.spec.js +27 -0
  279. package/dist/collection/locales/index.spec.js.map +1 -0
  280. package/dist/collection/stories/icon-gallery.js +4 -3
  281. package/dist/collection/stories/icon-gallery.js.map +1 -0
  282. package/dist/collection/test/typography.e2e.playwright.js +12 -0
  283. package/dist/collection/test/typography.e2e.playwright.js.map +1 -0
  284. package/dist/collection/utils/behaviors.utils.js +1 -0
  285. package/dist/collection/utils/behaviors.utils.js.map +1 -0
  286. package/dist/collection/utils/behaviors.utils.spec.js +57 -0
  287. package/dist/collection/utils/behaviors.utils.spec.js.map +1 -0
  288. package/dist/collection/utils/components.utils.js +9 -7
  289. package/dist/collection/utils/components.utils.js.map +1 -0
  290. package/dist/collection/utils/components.utils.spec.js +120 -0
  291. package/dist/collection/utils/components.utils.spec.js.map +1 -0
  292. package/dist/collection/utils/e2e.test.utils.js +46 -0
  293. package/dist/collection/utils/e2e.test.utils.js.map +1 -0
  294. package/dist/collection/utils/locale.utils.js +1 -0
  295. package/dist/collection/utils/locale.utils.js.map +1 -0
  296. package/dist/collection/utils/locale.utils.spec.js +52 -0
  297. package/dist/collection/utils/locale.utils.spec.js.map +1 -0
  298. package/dist/collection/utils/playwright.e2e.test.utils.js +100 -0
  299. package/dist/collection/utils/playwright.e2e.test.utils.js.map +1 -0
  300. package/dist/collection/utils/stencil.e2e.test.utils.js +33 -0
  301. package/dist/collection/utils/stencil.e2e.test.utils.js.map +1 -0
  302. package/dist/collection/utils/unit.test.utils.js +8 -6
  303. package/dist/collection/utils/unit.test.utils.js.map +1 -0
  304. package/dist/components/MgInput.js +2 -0
  305. package/dist/components/MgInput.js.map +1 -0
  306. package/dist/components/components.utils.js +10 -7
  307. package/dist/components/components.utils.js.map +1 -0
  308. package/dist/components/index.d.ts +5 -35
  309. package/dist/components/index.js +3 -34
  310. package/dist/components/index.js.map +1 -0
  311. package/dist/components/index2.js +2 -0
  312. package/dist/components/index2.js.map +1 -0
  313. package/dist/components/mg-action-more.js +42 -19
  314. package/dist/components/mg-action-more.js.map +1 -0
  315. package/dist/components/mg-badge.js +2 -0
  316. package/dist/components/mg-badge.js.map +1 -0
  317. package/dist/components/mg-badge2.js +8 -1
  318. package/dist/components/mg-badge2.js.map +1 -0
  319. package/dist/components/mg-button.js +2 -0
  320. package/dist/components/mg-button.js.map +1 -0
  321. package/dist/components/mg-button2.js +8 -1
  322. package/dist/components/mg-button2.js.map +1 -0
  323. package/dist/components/mg-card.js +2 -0
  324. package/dist/components/mg-card.js.map +1 -0
  325. package/dist/components/mg-card2.js +6 -1
  326. package/dist/components/mg-card2.js.map +1 -0
  327. package/dist/components/mg-character-left.js +2 -0
  328. package/dist/components/mg-character-left.js.map +1 -0
  329. package/dist/components/mg-character-left2.js +5 -1
  330. package/dist/components/mg-character-left2.js.map +1 -0
  331. package/dist/components/mg-details.js +8 -2
  332. package/dist/components/mg-details.js.map +1 -0
  333. package/dist/components/mg-divider.js +3 -1
  334. package/dist/components/mg-divider.js.map +1 -0
  335. package/dist/components/mg-form.js +17 -4
  336. package/dist/components/mg-form.js.map +1 -0
  337. package/dist/components/mg-icon.js +2 -0
  338. package/dist/components/mg-icon.js.map +1 -0
  339. package/dist/components/mg-icon2.js +87 -17
  340. package/dist/components/mg-icon2.js.map +1 -0
  341. package/dist/components/mg-illustrated-message.js +3 -1
  342. package/dist/components/mg-illustrated-message.js.map +1 -0
  343. package/dist/components/mg-input-checkbox-paginated.js +2 -0
  344. package/dist/components/mg-input-checkbox-paginated.js.map +1 -0
  345. package/dist/components/mg-input-checkbox-paginated2.js +24 -13
  346. package/dist/components/mg-input-checkbox-paginated2.js.map +1 -0
  347. package/dist/components/mg-input-checkbox.js +48 -25
  348. package/dist/components/mg-input-checkbox.js.map +1 -0
  349. package/dist/components/mg-input-date.js +23 -8
  350. package/dist/components/mg-input-date.js.map +1 -0
  351. package/dist/components/mg-input-numeric.js +58 -22
  352. package/dist/components/mg-input-numeric.js.map +1 -0
  353. package/dist/components/mg-input-password.js +21 -8
  354. package/dist/components/mg-input-password.js.map +1 -0
  355. package/dist/components/mg-input-radio.js +22 -8
  356. package/dist/components/mg-input-radio.js.map +1 -0
  357. package/dist/components/mg-input-select.js +2 -0
  358. package/dist/components/mg-input-select.js.map +1 -0
  359. package/dist/components/mg-input-select2.js +22 -8
  360. package/dist/components/mg-input-select2.js.map +1 -0
  361. package/dist/components/mg-input-text.js +2 -0
  362. package/dist/components/mg-input-text.js.map +1 -0
  363. package/dist/components/mg-input-text2.js +24 -10
  364. package/dist/components/mg-input-text2.js.map +1 -0
  365. package/dist/components/mg-input-textarea.js +24 -10
  366. package/dist/components/mg-input-textarea.js.map +1 -0
  367. package/dist/components/mg-input-title.js +2 -0
  368. package/dist/components/mg-input-title.js.map +1 -0
  369. package/dist/components/mg-input-title2.js +6 -1
  370. package/dist/components/mg-input-title2.js.map +1 -0
  371. package/dist/components/mg-input-toggle.js +23 -7
  372. package/dist/components/mg-input-toggle.js.map +1 -0
  373. package/dist/components/mg-item-more.js +31 -17
  374. package/dist/components/mg-item-more.js.map +1 -0
  375. package/dist/components/mg-menu-item.js +2 -0
  376. package/dist/components/mg-menu-item.js.map +1 -0
  377. package/dist/components/mg-menu-item2.js +27 -13
  378. package/dist/components/mg-menu-item2.js.map +1 -0
  379. package/dist/components/mg-menu.conf.js +2 -0
  380. package/dist/components/mg-menu.conf.js.map +1 -0
  381. package/dist/components/mg-menu.js +2 -0
  382. package/dist/components/mg-menu.js.map +1 -0
  383. package/dist/components/mg-menu2.js +8 -1
  384. package/dist/components/mg-menu2.js.map +1 -0
  385. package/dist/components/mg-message.js +8 -1
  386. package/dist/components/mg-message.js.map +1 -0
  387. package/dist/components/mg-modal.js +24 -5
  388. package/dist/components/mg-modal.js.map +1 -0
  389. package/dist/components/mg-pagination.js +2 -0
  390. package/dist/components/mg-pagination.js.map +1 -0
  391. package/dist/components/mg-pagination2.js +22 -11
  392. package/dist/components/mg-pagination2.js.map +1 -0
  393. package/dist/components/mg-panel.js +30 -16
  394. package/dist/components/mg-panel.js.map +1 -0
  395. package/dist/components/mg-popover-content.d.ts +11 -0
  396. package/dist/components/mg-popover-content.js +8 -0
  397. package/dist/components/mg-popover-content.js.map +1 -0
  398. package/dist/components/mg-popover-content2.js +90 -0
  399. package/dist/components/mg-popover-content2.js.map +1 -0
  400. package/dist/components/mg-popover.js +2 -0
  401. package/dist/components/mg-popover.js.map +1 -0
  402. package/dist/components/mg-popover2.js +61 -48
  403. package/dist/components/mg-popover2.js.map +1 -0
  404. package/dist/components/mg-skip-links.js +5 -1
  405. package/dist/components/mg-skip-links.js.map +1 -0
  406. package/dist/components/mg-tabs.js +8 -1
  407. package/dist/components/mg-tabs.js.map +1 -0
  408. package/dist/components/mg-tag.js +7 -1
  409. package/dist/components/mg-tag.js.map +1 -0
  410. package/dist/components/mg-tooltip-content.d.ts +11 -0
  411. package/dist/components/mg-tooltip-content.js +8 -0
  412. package/dist/components/mg-tooltip-content.js.map +1 -0
  413. package/dist/components/mg-tooltip-content2.js +43 -0
  414. package/dist/components/mg-tooltip-content2.js.map +1 -0
  415. package/dist/components/mg-tooltip.js +2 -0
  416. package/dist/components/mg-tooltip.js.map +1 -0
  417. package/dist/components/mg-tooltip2.js +71 -16
  418. package/dist/components/mg-tooltip2.js.map +1 -0
  419. package/dist/components/popper.js +2 -0
  420. package/dist/components/popper.js.map +1 -0
  421. package/dist/esm/{index-1d40b052.js → index-ce01e63b.js} +321 -68
  422. package/dist/esm/index-ce01e63b.js.map +1 -0
  423. package/dist/esm/index.js +2 -0
  424. package/dist/esm/index.js.map +1 -0
  425. package/dist/esm/loader.js +6 -13
  426. package/dist/esm/loader.js.map +1 -0
  427. package/dist/esm/{mg-action-more_32.entry.js → mg-action-more_34.entry.js} +340 -113
  428. package/dist/esm/mg-action-more_34.entry.js.map +1 -0
  429. package/dist/esm/mg-components.js +6 -4
  430. package/dist/esm/mg-components.js.map +1 -0
  431. package/dist/esm/mg-item-more.entry.js +8 -4
  432. package/dist/esm/mg-item-more.entry.js.map +1 -0
  433. package/dist/esm/{mg-menu.conf-2cc079ae.js → mg-menu.conf-012fc9b4.js} +2 -0
  434. package/dist/esm/mg-menu.conf-012fc9b4.js.map +1 -0
  435. package/dist/mg-components/index.esm.js +2 -0
  436. package/dist/mg-components/index.esm.js.map +1 -0
  437. package/dist/mg-components/mg-components.css +1 -1
  438. package/dist/mg-components/mg-components.esm.js +2 -1
  439. package/dist/mg-components/mg-components.esm.js.map +1 -0
  440. package/dist/mg-components/p-1aa89acf.js +3 -0
  441. package/dist/mg-components/p-1aa89acf.js.map +1 -0
  442. package/dist/mg-components/p-1d7d6fa0.js +2 -0
  443. package/dist/mg-components/p-1d7d6fa0.js.map +1 -0
  444. package/dist/mg-components/p-9257e8f1.entry.js +2 -0
  445. package/dist/mg-components/p-9257e8f1.entry.js.map +1 -0
  446. package/dist/mg-components/p-caafc9cf.entry.js +2 -0
  447. package/dist/mg-components/p-caafc9cf.entry.js.map +1 -0
  448. package/dist/types/components/atoms/mg-badge/test/mg-badge.e2e.playwright.d.ts +1 -0
  449. package/dist/types/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.d.ts +14 -0
  450. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +7 -1
  451. package/dist/types/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.d.ts +1 -0
  452. package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +19 -0
  453. package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +6 -1
  454. package/dist/types/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.d.ts +2 -0
  455. package/dist/types/components/molecules/mg-details/test/mg-details.e2e.playwright.d.ts +1 -0
  456. package/dist/types/components/molecules/mg-form/mg-form.d.ts +8 -0
  457. package/dist/types/components/molecules/mg-item-more/test/mg-item-more.e2e.playwright.d.ts +1 -0
  458. package/dist/types/components/molecules/mg-modal/mg-modal.conf.d.ts +8 -0
  459. package/dist/types/components/molecules/mg-modal/mg-modal.d.ts +8 -2
  460. package/dist/types/components/molecules/mg-modal/test/mg-modal.e2e.playwright.d.ts +1 -0
  461. package/dist/types/components/molecules/mg-modal/test/mg-modal.e2e.template.d.ts +12 -0
  462. package/dist/types/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.d.ts +1 -0
  463. package/dist/types/components/molecules/mg-pagination/test/mg-pagination.e2e.playwright.d.ts +1 -0
  464. package/dist/types/components/molecules/mg-panel/test/mg-panel.e2e.playwright.d.ts +1 -0
  465. package/dist/types/components/molecules/mg-popover/mg-popover-content/mg-popover-content.d.ts +47 -0
  466. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +8 -11
  467. package/dist/types/components/molecules/mg-tabs/test/mg-tabs.e2e.playwright.d.ts +1 -0
  468. package/dist/types/components.d.ts +79 -0
  469. package/dist/types/stencil-public-runtime.d.ts +43 -17
  470. package/dist/types/test/typography.e2e.playwright.d.ts +1 -0
  471. package/dist/types/utils/e2e.test.utils.d.ts +22 -0
  472. package/dist/types/utils/stencil.e2e.test.utils.d.ts +14 -0
  473. package/loader/index.d.ts +2 -2
  474. package/package.json +7 -7
  475. package/dist/esm/polyfills/css-shim.js +0 -1
  476. package/dist/mg-components/p-067080e4.js +0 -1
  477. package/dist/mg-components/p-3bf1e2f0.js +0 -2
  478. package/dist/mg-components/p-4ae1130f.entry.js +0 -1
  479. package/dist/mg-components/p-6672f590.entry.js +0 -1
@@ -0,0 +1,128 @@
1
+ import { setPageContent, expect, describe, testEach, test } from "../../../../utils/playwright.e2e.test.utils";
2
+ import { renderAttributes, renderProperties } from "../../../../utils/e2e.test.utils";
3
+ import { createID } from "../../../../utils/components.utils";
4
+ import { Status } from "../../menu/mg-menu-item/mg-menu-item.conf";
5
+ const createHTML = (args, id = `mg-action-more-${createID()}`) => `<style>body {padding-left: 2rem;} </style><mg-action-more ${renderAttributes(args)} id="${id}"></mg-action-more><script>${renderProperties(args, `#${id}`)}</script>`;
6
+ const mouseEventHandler = () => 'hello batman';
7
+ const items = [
8
+ {
9
+ label: 'batman',
10
+ mouseEventHandler,
11
+ },
12
+ {
13
+ label: 'robin',
14
+ mouseEventHandler,
15
+ status: Status.HIDDEN,
16
+ },
17
+ {
18
+ label: 'joker',
19
+ mouseEventHandler,
20
+ badge: {
21
+ value: 2,
22
+ label: 'badge',
23
+ },
24
+ },
25
+ {
26
+ label: 'bane',
27
+ mouseEventHandler,
28
+ icon: 'user',
29
+ href: '#',
30
+ },
31
+ ];
32
+ describe('mg-action-more', () => {
33
+ describe('render', () => {
34
+ testEach([
35
+ {
36
+ items,
37
+ },
38
+ {
39
+ items,
40
+ button: {
41
+ label: 'dc-comics',
42
+ variant: 'primary',
43
+ isIcon: false,
44
+ },
45
+ icon: {
46
+ icon: 'plus',
47
+ },
48
+ },
49
+ {
50
+ items,
51
+ displayChevron: true,
52
+ icon: {
53
+ icon: 'ellipsis',
54
+ },
55
+ button: {
56
+ variant: 'flat',
57
+ isIcon: false,
58
+ },
59
+ },
60
+ {
61
+ items,
62
+ displayChevron: true,
63
+ button: {
64
+ variant: 'flat',
65
+ isIcon: false,
66
+ },
67
+ },
68
+ {
69
+ items,
70
+ displayChevron: false,
71
+ button: {
72
+ variant: 'flat',
73
+ isIcon: false,
74
+ },
75
+ },
76
+ {
77
+ items,
78
+ displayChevron: false,
79
+ icon: {
80
+ icon: 'ellipsis',
81
+ },
82
+ button: {
83
+ variant: 'flat',
84
+ isIcon: false,
85
+ },
86
+ },
87
+ ])('Should render %s', async (page, args) => {
88
+ await setPageContent(page, createHTML(args));
89
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
90
+ });
91
+ });
92
+ describe('navigation', () => {
93
+ testEach(['mouse', 'keyboard'])('should toggle button menu, case %s', async (page, navigation) => {
94
+ await setPageContent(page, createHTML({ items }), { width: 130, height: 200 });
95
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
96
+ if (navigation === 'mouse') {
97
+ const mgButton = await page.locator('mg-action-more mg-button');
98
+ await mgButton.click();
99
+ await expect(page.locator('body')).toHaveScreenshot();
100
+ const mgMenuItem = await page.locator('mg-menu-item:first-of-type');
101
+ await mgMenuItem.click();
102
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
103
+ }
104
+ else {
105
+ for (const [index, key] of ['Tab', 'Enter', 'Tab', 'Enter'].entries()) {
106
+ await page.keyboard.press(key);
107
+ await expect(page.locator([0, 3].includes(index) ? '.e2e-screenshot' : 'body')).toHaveScreenshot();
108
+ }
109
+ }
110
+ });
111
+ test('should toggle button chevron menu', async ({ page }) => {
112
+ await setPageContent(page, createHTML({
113
+ items,
114
+ displayChevron: true,
115
+ button: {
116
+ isIcon: false,
117
+ variant: 'secondary',
118
+ },
119
+ }), { width: 130, height: 200 });
120
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
121
+ const mgButton = await page.locator('mg-action-more mg-button');
122
+ await mgButton.click();
123
+ await page.waitForTimeout(300); // wait chevron animation ended
124
+ await expect(page.locator('body')).toHaveScreenshot();
125
+ });
126
+ });
127
+ });
128
+ //# sourceMappingURL=mg-action-more.e2e.playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-action-more.e2e.playwright.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-action-more/test/mg-action-more.e2e.playwright.ts"],"names":[],"mappings":"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","sourcesContent":["import { setPageContent, expect, describe, testEach, PageType, test } from '../../../../utils/playwright.e2e.test.utils';\nimport { renderAttributes, renderProperties } from '../../../../utils/e2e.test.utils';\nimport { createID } from '../../../../utils/components.utils';\nimport { Status } from '../../menu/mg-menu-item/mg-menu-item.conf';\nimport { MgActionMore } from '../mg-action-more';\n\nconst createHTML = (args: MgActionMoreType, id = `mg-action-more-${createID()}`) =>\n `<style>body {padding-left: 2rem;} </style><mg-action-more ${renderAttributes(args)} id=\"${id}\"></mg-action-more><script>${renderProperties(args, `#${id}`)}</script>`;\n\nconst mouseEventHandler = () => 'hello batman';\n\nexport type MgActionMoreType = Partial<MgActionMore>;\n\nconst items: MgActionMoreType['items'] = [\n {\n label: 'batman',\n mouseEventHandler,\n },\n {\n label: 'robin',\n mouseEventHandler,\n status: Status.HIDDEN,\n },\n {\n label: 'joker',\n mouseEventHandler,\n badge: {\n value: 2,\n label: 'badge',\n },\n },\n {\n label: 'bane',\n mouseEventHandler,\n icon: 'user',\n href: '#',\n },\n];\n\ndescribe('mg-action-more', () => {\n describe('render', () => {\n testEach([\n {\n items,\n },\n {\n items,\n button: {\n label: 'dc-comics',\n variant: 'primary',\n isIcon: false,\n },\n icon: {\n icon: 'plus',\n },\n },\n {\n items,\n displayChevron: true,\n icon: {\n icon: 'ellipsis',\n },\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: true,\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: false,\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: false,\n icon: {\n icon: 'ellipsis',\n },\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n ])('Should render %s', async (page: PageType, args: MgActionMoreType) => {\n await setPageContent(page, createHTML(args));\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n });\n\n describe('navigation', () => {\n testEach(['mouse', 'keyboard'])('should toggle button menu, case %s', async (page: PageType, navigation) => {\n await setPageContent(page, createHTML({ items }), { width: 130, height: 200 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n if (navigation === 'mouse') {\n const mgButton = await page.locator('mg-action-more mg-button');\n await mgButton.click();\n await expect(page.locator('body')).toHaveScreenshot();\n\n const mgMenuItem = await page.locator('mg-menu-item:first-of-type');\n await mgMenuItem.click();\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n } else {\n for (const [index, key] of ['Tab', 'Enter', 'Tab', 'Enter'].entries()) {\n await page.keyboard.press(key);\n await expect(page.locator([0, 3].includes(index) ? '.e2e-screenshot' : 'body')).toHaveScreenshot();\n }\n }\n });\n\n test('should toggle button chevron menu', async ({ page }) => {\n await setPageContent(\n page,\n createHTML({\n items,\n displayChevron: true,\n button: {\n isIcon: false,\n variant: 'secondary',\n },\n }),\n { width: 130, height: 200 },\n );\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n const mgButton = await page.locator('mg-action-more mg-button');\n await mgButton.click();\n\n await page.waitForTimeout(300); // wait chevron animation ended\n\n await expect(page.locator('body')).toHaveScreenshot();\n });\n });\n});\n"]}
@@ -0,0 +1,187 @@
1
+ import { h } from "@stencil/core";
2
+ import { newSpecPage } from "@stencil/core/testing";
3
+ import { forcePopoverId, mockConsoleError, setupResizeObserverMock } from "../../../../utils/unit.test.utils";
4
+ import { Status } from "../../menu/mg-menu-item/mg-menu-item.conf";
5
+ import { MgButton } from "../../../atoms/mg-button/mg-button";
6
+ import { MgPopover } from "../../mg-popover/mg-popover";
7
+ import { MgActionMore } from "../mg-action-more";
8
+ import { MgMenu } from "../../menu/mg-menu/mg-menu";
9
+ import { MgMenuItem } from "../../menu/mg-menu-item/mg-menu-item";
10
+ import { MgPopoverContent } from "../../mg-popover/mg-popover-content/mg-popover-content";
11
+ mockConsoleError();
12
+ const getPage = async (args) => {
13
+ const page = await newSpecPage({
14
+ components: [MgActionMore, MgPopover, MgPopoverContent, MgButton, MgMenu, MgMenuItem],
15
+ template: () => h("mg-action-more", Object.assign({}, args)),
16
+ });
17
+ Array.from(page.doc.querySelectorAll('mg-action-more')).forEach((item, index) => {
18
+ const mgPopoverIdentifier = `mg-popover-test_${index}`;
19
+ item.dataset.mgPopoverGuard = mgPopoverIdentifier;
20
+ forcePopoverId(item, mgPopoverIdentifier, 'mg-button');
21
+ });
22
+ return page;
23
+ };
24
+ const mouseEventHandler = jest.fn();
25
+ const items = [
26
+ {
27
+ label: 'batman',
28
+ mouseEventHandler,
29
+ },
30
+ {
31
+ label: 'robin',
32
+ mouseEventHandler,
33
+ status: Status.HIDDEN,
34
+ },
35
+ {
36
+ label: 'joker',
37
+ mouseEventHandler,
38
+ badge: {
39
+ value: 2,
40
+ label: 'badge',
41
+ },
42
+ },
43
+ {
44
+ label: 'bane',
45
+ mouseEventHandler,
46
+ icon: 'user',
47
+ href: '#',
48
+ },
49
+ ];
50
+ Object.defineProperty(window, 'frames', {
51
+ value: { length: 0 },
52
+ });
53
+ describe('mg-action-more', () => {
54
+ beforeEach(() => {
55
+ setupResizeObserverMock({
56
+ observe: () => null,
57
+ disconnect: () => null,
58
+ });
59
+ });
60
+ describe.each([
61
+ {
62
+ items,
63
+ },
64
+ {
65
+ items,
66
+ button: {
67
+ label: 'dc-comics',
68
+ variant: 'primary',
69
+ isIcon: false,
70
+ },
71
+ },
72
+ {
73
+ items,
74
+ displayChevron: true,
75
+ button: {
76
+ variant: 'flat',
77
+ isIcon: false,
78
+ },
79
+ },
80
+ {
81
+ items,
82
+ displayChevron: true,
83
+ icon: {
84
+ icon: 'ellipsis',
85
+ },
86
+ button: {
87
+ variant: 'flat',
88
+ isIcon: false,
89
+ },
90
+ },
91
+ {
92
+ items,
93
+ displayChevron: false,
94
+ icon: {
95
+ icon: 'ellipsis',
96
+ },
97
+ button: {
98
+ variant: 'flat',
99
+ isIcon: false,
100
+ },
101
+ },
102
+ {
103
+ items,
104
+ displayChevron: false,
105
+ button: {
106
+ variant: 'flat',
107
+ isIcon: false,
108
+ },
109
+ },
110
+ ])('render', args => {
111
+ test(`Should render with args ${args}`, async () => {
112
+ const { root } = await getPage(args);
113
+ expect(root).toMatchSnapshot();
114
+ });
115
+ test('Should toggle menu on click', async () => {
116
+ const page = await getPage(args);
117
+ expect(page.root).toMatchSnapshot();
118
+ const mgMoreAction = page.doc.querySelector('mg-action-more');
119
+ const mgButton = mgMoreAction.shadowRoot.querySelector('mg-button');
120
+ mgButton.dispatchEvent(new MouseEvent('click', { bubbles: true }));
121
+ await page.waitForChanges();
122
+ expect(page.root).toMatchSnapshot();
123
+ });
124
+ });
125
+ describe('errors', () => {
126
+ test.each([
127
+ { args: {}, error: `<mg-action-more> prop "items" is required and all values must be the same type, MgActionMoreItemType.` },
128
+ { args: { items: ['batman'] }, error: `<mg-action-more> prop "items" is required and all values must be the same type, MgActionMoreItemType.` },
129
+ { args: { items: [{ label: 'batman' }] }, error: `<mg-action-more> prop "items" is required and all values must be the same type, MgActionMoreItemType.` },
130
+ {
131
+ args: { items: [{ label: 'batman', mouseEventHandler: 'batman' }] },
132
+ error: `<mg-action-more> prop "items" is required and all values must be the same type, MgActionMoreItemType.`,
133
+ },
134
+ { args: { items: [{ mouseEventHandler: 'batman' }] }, error: `<mg-action-more> prop "items" is required and all values must be the same type, MgActionMoreItemType.` },
135
+ { args: { items: [{ label: 'batman', mouseEventHandler }], button: {} }, error: `<mg-action-more> prop button must match MgActionMoreButtonType.` },
136
+ { args: { items: [{ label: 'batman', mouseEventHandler }], button: { variant: 'primary' } }, error: `<mg-action-more> prop button must match MgActionMoreButtonType.` },
137
+ { args: { items: [{ label: 'batman', mouseEventHandler }], button: { isIcon: true } }, error: `<mg-action-more> prop button must match MgActionMoreButtonType.` },
138
+ { args: { items: [{ label: 'batman', mouseEventHandler }], icon: 'user' }, error: `<mg-action-more> prop icon must match MgActionMoreIconType.` },
139
+ {
140
+ args: { items: [{ label: 'batman', mouseEventHandler }], displayChevron: true },
141
+ error: `<mg-action-more> prop "displayChevron" can't be used with a 'button" prop "isIcon" attribute.`,
142
+ },
143
+ {
144
+ args: { items: [{ label: 'batman', mouseEventHandler }], button: { isIcon: true, variant: 'flat' }, displayChevron: true },
145
+ error: `<mg-action-more> prop "displayChevron" can't be used with a 'button" prop "isIcon" attribute.`,
146
+ },
147
+ ])('with args %s', async ({ args, error }) => {
148
+ expect.assertions(1);
149
+ try {
150
+ await getPage(args);
151
+ }
152
+ catch (err) {
153
+ expect(err.message).toMatch(error);
154
+ }
155
+ });
156
+ });
157
+ describe('navigation', () => {
158
+ test(`Should run item mouseEventHandler by clicking on menu-item`, async () => {
159
+ const page = await getPage({ items });
160
+ expect(page.root).toMatchSnapshot();
161
+ const mgMoreAction = page.doc.querySelector('mg-action-more');
162
+ const mgButton = mgMoreAction.shadowRoot.querySelector('mg-button');
163
+ mgButton.dispatchEvent(new MouseEvent('click', { bubbles: true }));
164
+ await page.waitForChanges();
165
+ expect(page.root).toMatchSnapshot();
166
+ const mgMenuItem = mgMoreAction.shadowRoot.querySelector('mg-menu-item');
167
+ mgMenuItem.dispatchEvent(new MouseEvent('click', { bubbles: true }));
168
+ await page.waitForChanges();
169
+ expect(mouseEventHandler).toHaveBeenCalled();
170
+ expect(page.root).toMatchSnapshot();
171
+ });
172
+ test(`Should update expanded when popover display change`, async () => {
173
+ const page = await getPage({ items, displayChevron: true, button: { variant: 'flat', isIcon: false } });
174
+ expect(page.root).toMatchSnapshot();
175
+ const mgMoreAction = page.doc.querySelector('mg-action-more');
176
+ const mgButton = mgMoreAction.shadowRoot.querySelector('mg-button');
177
+ mgButton.dispatchEvent(new MouseEvent('click', { bubbles: true }));
178
+ await page.waitForChanges();
179
+ expect(page.root).toMatchSnapshot();
180
+ const mgPopover = mgMoreAction.shadowRoot.querySelector('mg-popover');
181
+ mgPopover.dispatchEvent(new CustomEvent('display-change', { detail: false }));
182
+ await page.waitForChanges();
183
+ expect(page.root).toMatchSnapshot();
184
+ });
185
+ });
186
+ });
187
+ //# sourceMappingURL=mg-action-more.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-action-more.spec.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-action-more/test/mg-action-more.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { forcePopoverId, mockConsoleError, setupResizeObserverMock } from '../../../../utils/unit.test.utils';\nimport { Status } from '../../menu/mg-menu-item/mg-menu-item.conf';\nimport { MgButton } from '../../../atoms/mg-button/mg-button';\nimport { MgPopover } from '../../mg-popover/mg-popover';\nimport { MgActionMore } from '../mg-action-more';\nimport { MgMenu } from '../../menu/mg-menu/mg-menu';\nimport { MgMenuItem } from '../../menu/mg-menu-item/mg-menu-item';\nimport { MgPopoverContent } from '../../mg-popover/mg-popover-content/mg-popover-content';\n\nmockConsoleError();\n\nconst getPage = async args => {\n const page = await newSpecPage({\n components: [MgActionMore, MgPopover, MgPopoverContent, MgButton, MgMenu, MgMenuItem],\n template: () => <mg-action-more {...args}></mg-action-more>,\n });\n\n Array.from(page.doc.querySelectorAll('mg-action-more')).forEach((item, index) => {\n const mgPopoverIdentifier = `mg-popover-test_${index}`;\n item.dataset.mgPopoverGuard = mgPopoverIdentifier;\n forcePopoverId(item, mgPopoverIdentifier, 'mg-button');\n });\n\n return page;\n};\n\nconst mouseEventHandler = jest.fn();\n\nconst items = [\n {\n label: 'batman',\n mouseEventHandler,\n },\n {\n label: 'robin',\n mouseEventHandler,\n status: Status.HIDDEN,\n },\n {\n label: 'joker',\n mouseEventHandler,\n badge: {\n value: 2,\n label: 'badge',\n },\n },\n {\n label: 'bane',\n mouseEventHandler,\n icon: 'user',\n href: '#',\n },\n];\n\nObject.defineProperty(window, 'frames', {\n value: { length: 0 },\n});\n\ndescribe('mg-action-more', () => {\n beforeEach(() => {\n setupResizeObserverMock({\n observe: () => null,\n disconnect: () => null,\n });\n });\n describe.each([\n {\n items,\n },\n {\n items,\n button: {\n label: 'dc-comics',\n variant: 'primary',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: true,\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: true,\n icon: {\n icon: 'ellipsis',\n },\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: false,\n icon: {\n icon: 'ellipsis',\n },\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n {\n items,\n displayChevron: false,\n button: {\n variant: 'flat',\n isIcon: false,\n },\n },\n ])('render', args => {\n test(`Should render with args ${args}`, async () => {\n const { root } = await getPage(args);\n expect(root).toMatchSnapshot();\n });\n\n test('Should toggle menu on click', async () => {\n const page = await getPage(args);\n expect(page.root).toMatchSnapshot();\n\n const mgMoreAction = page.doc.querySelector('mg-action-more');\n const mgButton = mgMoreAction.shadowRoot.querySelector('mg-button');\n mgButton.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n });\n });\n\n describe('errors', () => {\n test.each([\n { args: {}, error: `<mg-action-more> prop \"items\" is required and all values must be the same type, MgActionMoreItemType.` },\n { args: { items: ['batman'] }, error: `<mg-action-more> prop \"items\" is required and all values must be the same type, MgActionMoreItemType.` },\n { args: { items: [{ label: 'batman' }] }, error: `<mg-action-more> prop \"items\" is required and all values must be the same type, MgActionMoreItemType.` },\n {\n args: { items: [{ label: 'batman', mouseEventHandler: 'batman' }] },\n error: `<mg-action-more> prop \"items\" is required and all values must be the same type, MgActionMoreItemType.`,\n },\n { args: { items: [{ mouseEventHandler: 'batman' }] }, error: `<mg-action-more> prop \"items\" is required and all values must be the same type, MgActionMoreItemType.` },\n { args: { items: [{ label: 'batman', mouseEventHandler }], button: {} }, error: `<mg-action-more> prop button must match MgActionMoreButtonType.` },\n { args: { items: [{ label: 'batman', mouseEventHandler }], button: { variant: 'primary' } }, error: `<mg-action-more> prop button must match MgActionMoreButtonType.` },\n { args: { items: [{ label: 'batman', mouseEventHandler }], button: { isIcon: true } }, error: `<mg-action-more> prop button must match MgActionMoreButtonType.` },\n { args: { items: [{ label: 'batman', mouseEventHandler }], icon: 'user' }, error: `<mg-action-more> prop icon must match MgActionMoreIconType.` },\n {\n args: { items: [{ label: 'batman', mouseEventHandler }], displayChevron: true },\n error: `<mg-action-more> prop \"displayChevron\" can't be used with a 'button\" prop \"isIcon\" attribute.`,\n },\n {\n args: { items: [{ label: 'batman', mouseEventHandler }], button: { isIcon: true, variant: 'flat' }, displayChevron: true },\n error: `<mg-action-more> prop \"displayChevron\" can't be used with a 'button\" prop \"isIcon\" attribute.`,\n },\n ])('with args %s', async ({ args, error }) => {\n expect.assertions(1);\n try {\n await getPage(args);\n } catch (err) {\n expect(err.message).toMatch(error);\n }\n });\n });\n\n describe('navigation', () => {\n test(`Should run item mouseEventHandler by clicking on menu-item`, async () => {\n const page = await getPage({ items });\n expect(page.root).toMatchSnapshot();\n\n const mgMoreAction = page.doc.querySelector('mg-action-more');\n const mgButton = mgMoreAction.shadowRoot.querySelector('mg-button');\n mgButton.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n const mgMenuItem = mgMoreAction.shadowRoot.querySelector('mg-menu-item');\n mgMenuItem.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n await page.waitForChanges();\n\n expect(mouseEventHandler).toHaveBeenCalled();\n expect(page.root).toMatchSnapshot();\n });\n\n test(`Should update expanded when popover display change`, async () => {\n const page = await getPage({ items, displayChevron: true, button: { variant: 'flat', isIcon: false } });\n expect(page.root).toMatchSnapshot();\n\n const mgMoreAction = page.doc.querySelector('mg-action-more');\n const mgButton = mgMoreAction.shadowRoot.querySelector('mg-button');\n mgButton.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n const mgPopover = mgMoreAction.shadowRoot.querySelector('mg-popover');\n\n mgPopover.dispatchEvent(new CustomEvent('display-change', { detail: false }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n });\n });\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { h } from '@stencil/core';
1
+ import { h } from "@stencil/core";
2
2
  export class MgDetails {
3
3
  constructor() {
4
4
  /**
@@ -35,7 +35,7 @@ export class MgDetails {
35
35
  * @returns HTML Element
36
36
  */
37
37
  render() {
38
- return (h("details", { class: "mg-details", onToggle: this.handleToggle, open: this.expanded, ref: el => (this.details = el) }, h("summary", null, h("slot", { name: "summary" }), h("span", { class: "mg-details__toggle" }, h("mg-icon", { icon: "chevron-up", size: "small", class: { 'mg-details__toggle-icon': true, 'mg-details__toggle-icon--reverse': !this.expanded } }), h("span", { class: { 'sr-only': this.hideSummary } }, this.expanded ? this.toggleOpened : this.toggleClosed))), h("div", { class: "mg-details__details" }, h("slot", { name: "details" }))));
38
+ return (h("details", { class: "mg-details", onToggle: this.handleToggle, open: this.expanded, ref: (el) => (this.details = el) }, h("summary", null, h("slot", { name: "summary" }), h("span", { class: "mg-details__toggle" }, h("mg-icon", { icon: "chevron-up", size: "small", class: { 'mg-details__toggle-icon': true, 'mg-details__toggle-icon--reverse': !this.expanded } }), h("span", { class: { 'sr-only': this.hideSummary } }, this.expanded ? this.toggleOpened : this.toggleClosed))), h("div", { class: "mg-details__details" }, h("slot", { name: "details" }))));
39
39
  }
40
40
  static get is() { return "mg-details"; }
41
41
  static get encapsulation() { return "shadow"; }
@@ -154,3 +154,4 @@ export class MgDetails {
154
154
  }];
155
155
  }
156
156
  }
157
+ //# sourceMappingURL=mg-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-details.js","sourceRoot":"","sources":["../../../../src/components/molecules/mg-details/mg-details.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAO/E,MAAM,OAAO,SAAS;;IAgDpB;;OAEG;IACK,iBAAY,GAAG,GAAS,EAAE;MAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IACpC,CAAC,CAAC;;;uBArBoB,KAAK;oBAKS,KAAK;;EAdzC,cAAc,CAAC,QAAgB;IAC7B,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;MACpD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;KACzF;EACH,CAAC;EAYD,cAAc,CAAC,QAAiB;IAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;EACrC,CAAC;EAcD;;iBAEe;EAEf;;KAEG;EACH,iBAAiB;IACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;EACzC,CAAC;EAED;;;KAGG;EACH,MAAM;IACJ,OAAO,CACL,eAAS,KAAK,EAAC,YAAY,EAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;MAChI;QACE,YAAM,IAAI,EAAC,SAAS,GAAQ;QAC5B,YAAM,KAAK,EAAC,oBAAoB;UAC9B,eAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,yBAAyB,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAY;UAClJ,YAAM,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAQ,CACvG,CACC;MACV,WAAK,KAAK,EAAC,qBAAqB;QAC9B,YAAM,IAAI,EAAC,SAAS,GAAQ,CACxB,CACE,CACX,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, Watch } from '@stencil/core';\n\n@Component({\n tag: 'mg-details',\n styleUrl: 'mg-details.scss',\n shadow: true,\n})\nexport class MgDetails {\n /************\n * Internal *\n ************/\n\n // HTML selector\n private details: HTMLDetailsElement;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Displayed title when details are closed\n */\n @Prop() toggleClosed!: string;\n\n /**\n * Displayed title when details are opened\n */\n @Prop() toggleOpened!: string;\n @Watch('toggleClosed')\n @Watch('toggleOpened')\n validateTitles(newValue: string): void {\n if (newValue === undefined || newValue.trim() === '') {\n throw new Error('<mg-details> prop \"toggleClosed\" and \"toggleOpened\" must be defined.');\n }\n }\n\n /**\n * Hide summary element\n */\n @Prop() hideSummary = false;\n\n /**\n * Define if details are diplayed\n */\n @Prop({ mutable: true }) expanded = false;\n @Watch('expanded')\n handleExpanded(newValue: boolean): void {\n this.expandedChange.emit(newValue);\n }\n\n /**\n * Emmited event when expanded change\n */\n @Event({ eventName: 'expanded-change' }) expandedChange: EventEmitter<boolean>;\n\n /**\n * Handle details toggle\n */\n private handleToggle = (): void => {\n this.expanded = this.details.open;\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are well configured on init\n */\n componentWillLoad(): void {\n this.validateTitles(this.toggleClosed);\n this.validateTitles(this.toggleOpened);\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <details class=\"mg-details\" onToggle={this.handleToggle} open={this.expanded} ref={(el: HTMLDetailsElement) => (this.details = el)}>\n <summary>\n <slot name=\"summary\"></slot>\n <span class=\"mg-details__toggle\">\n <mg-icon icon=\"chevron-up\" size=\"small\" class={{ 'mg-details__toggle-icon': true, 'mg-details__toggle-icon--reverse': !this.expanded }}></mg-icon>\n <span class={{ 'sr-only': this.hideSummary }}>{this.expanded ? this.toggleOpened : this.toggleClosed}</span>\n </span>\n </summary>\n <div class=\"mg-details__details\">\n <slot name=\"details\"></slot>\n </div>\n </details>\n );\n }\n}\n"]}
@@ -0,0 +1,30 @@
1
+ import { setPageContent, describe, testEach, expect, test } from "../../../../utils/playwright.e2e.test.utils";
2
+ import { renderAttributes } from "../../../../utils/e2e.test.utils";
3
+ const content = '<span slot="summary">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </span><p slot="details">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>';
4
+ const baseArgs = { toggleClosed: 'Show details', toggleOpened: 'Hide details' };
5
+ const htmlContent = (args, style) => `<style>*, *:before, *:after { box-sizing: border-box; } .e2e-screenshot { width: 100%; } ${style}</style><mg-details ${renderAttributes(args)}>${content}</mg-details>`;
6
+ describe('mg-details', () => {
7
+ testEach([{}, { 'hide-summary': '' }])('Should toggle details %s', async (page, args) => {
8
+ await setPageContent(page, htmlContent(Object.assign(Object.assign({}, baseArgs), args)));
9
+ await page.setViewportSize({ width: 700, height: 100 });
10
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
11
+ await page.keyboard.press('Tab');
12
+ await page.keyboard.press('Space');
13
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
14
+ });
15
+ test('Should not render toggle text when window size is under 700px', async ({ page }) => {
16
+ await setPageContent(page, htmlContent(Object.assign({}, baseArgs)));
17
+ await page.setViewportSize({ width: 650, height: 100 });
18
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
19
+ });
20
+ testEach([0, 5])('Should update space (%s) between summary and details', async (page, args) => {
21
+ await setPageContent(page, htmlContent(Object.assign({}, baseArgs), `mg-details {
22
+ --mg-details-spacing: ${args}rem;
23
+ })`));
24
+ await page.setViewportSize({ width: 700, height: 100 });
25
+ await page.keyboard.press('Tab');
26
+ await page.keyboard.press('Space');
27
+ await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();
28
+ });
29
+ });
30
+ //# sourceMappingURL=mg-details.e2e.playwright.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-details.e2e.playwright.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-details/test/mg-details.e2e.playwright.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAY,IAAI,EAAE,MAAM,6CAA6C,CAAC;AACzH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,MAAM,OAAO,GACX,ifAAif,CAAC;AAEpf,MAAM,QAAQ,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AAEhF,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,KAAM,EAAE,EAAE,CACnC,4FAA4F,KAAK,uBAAuB,gBAAgB,CAAC,IAAI,CAAC,IAAI,OAAO,eAAe,CAAC;AAE3K,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;EAC1B,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAc,EAAE,IAAY,EAAE,EAAE;IACxG,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,iCAAM,QAAQ,GAAK,IAAI,EAAG,CAAC,CAAC;IAElE,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAExD,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEjE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;EACnE,CAAC,CAAC,CAAC;EAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACvF,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,mBAAM,QAAQ,EAAG,CAAC,CAAC;IAEzD,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAExD,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;EACnE,CAAC,CAAC,CAAC;EAEH,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sDAAsD,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC5F,MAAM,cAAc,CAClB,IAAI,EACJ,WAAW,mBACJ,QAAQ,GACb;gCACwB,IAAI;SAC3B,CACF,CACF,CAAC;IAEF,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAExD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;EACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { setPageContent, describe, testEach, expect, PageType, test } from '../../../../utils/playwright.e2e.test.utils';\nimport { renderAttributes } from '../../../../utils/e2e.test.utils';\n\nconst content =\n '<span slot=\"summary\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. </span><p slot=\"details\">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>';\n\nconst baseArgs = { toggleClosed: 'Show details', toggleOpened: 'Hide details' };\n\nconst htmlContent = (args, style?) =>\n `<style>*, *:before, *:after { box-sizing: border-box; } .e2e-screenshot { width: 100%; } ${style}</style><mg-details ${renderAttributes(args)}>${content}</mg-details>`;\n\ndescribe('mg-details', () => {\n testEach([{}, { 'hide-summary': '' }])('Should toggle details %s', async (page: PageType, args: object) => {\n await setPageContent(page, htmlContent({ ...baseArgs, ...args }));\n\n await page.setViewportSize({ width: 700, height: 100 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n\n await page.keyboard.press('Tab');\n await page.keyboard.press('Space');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n test('Should not render toggle text when window size is under 700px', async ({ page }) => {\n await setPageContent(page, htmlContent({ ...baseArgs }));\n\n await page.setViewportSize({ width: 650, height: 100 });\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n\n testEach([0, 5])('Should update space (%s) between summary and details', async (page, args) => {\n await setPageContent(\n page,\n htmlContent(\n { ...baseArgs },\n `mg-details {\n --mg-details-spacing: ${args}rem;\n })`,\n ),\n );\n\n await page.setViewportSize({ width: 700, height: 100 });\n\n await page.keyboard.press('Tab');\n await page.keyboard.press('Space');\n\n await expect(page.locator('.e2e-screenshot')).toHaveScreenshot();\n });\n});\n"]}
@@ -0,0 +1,42 @@
1
+ import { h } from "@stencil/core";
2
+ import { newSpecPage } from "@stencil/core/testing";
3
+ import { MgDetails } from "../mg-details";
4
+ const getPage = args => newSpecPage({
5
+ components: [MgDetails],
6
+ template: () => (h("mg-details", Object.assign({}, args), h("span", { slot: "summary" }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."), h("p", { slot: "details" }, "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."))),
7
+ });
8
+ describe('mg-details', () => {
9
+ test.each([
10
+ { toggleClosed: 'Show details', toggleOpened: 'Hide details' },
11
+ { toggleClosed: 'Show details', toggleOpened: 'Hide details', expanded: true },
12
+ { toggleClosed: 'Show details', toggleOpened: 'Hide details', hideSummary: true },
13
+ ])('with args %s', async (args) => {
14
+ const { root } = await getPage(args);
15
+ expect(root).toMatchSnapshot();
16
+ });
17
+ test.each([
18
+ {},
19
+ { toggleClosed: 'Show details' },
20
+ { toggleOpened: 'Hide details' },
21
+ { toggleClosed: ' ', toggleOpened: 'Hide details' },
22
+ { toggleClosed: 'Show details', toggleOpened: ' ' },
23
+ ])('Should throw error when missing toogle messages: %s', async (args) => {
24
+ expect.assertions(1);
25
+ try {
26
+ await getPage(args);
27
+ }
28
+ catch (err) {
29
+ expect(err.message).toMatch('<mg-details> prop "toggleClosed" and "toggleOpened" must be defined.');
30
+ }
31
+ });
32
+ test('Should toggle details on click', async () => {
33
+ const page = await getPage({ toggleClosed: 'Show details', toggleOpened: 'Hide details' });
34
+ const element = page.doc.querySelector('mg-details');
35
+ const summary = element.shadowRoot.querySelector('summary');
36
+ jest.spyOn(page.rootInstance.expandedChange, 'emit');
37
+ summary.dispatchEvent(new CustomEvent('toggle', { bubbles: true }));
38
+ await page.waitForChanges();
39
+ expect(page.rootInstance.expandedChange.emit).toHaveBeenCalledTimes(1);
40
+ });
41
+ });
42
+ //# sourceMappingURL=mg-details.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-details.spec.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-details/test/mg-details.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CACrB,WAAW,CAAC;EACV,UAAU,EAAE,CAAC,SAAS,CAAC;EACvB,QAAQ,EAAE,GAAG,EAAE,CAAC,CACd,kCAAgB,IAAI;IAClB,YAAM,IAAI,EAAC,SAAS,kIAAmI;IACvJ,SAAG,IAAI,EAAC,SAAS,wUAGb,CACO,CACd;CACF,CAAC,CAAC;AAEL,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;EAC1B,IAAI,CAAC,IAAI,CAAC;IACR,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE;IAC9D,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9E,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE;GAClF,CAAC,CAAC,cAAc,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;IAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;EACjC,CAAC,CAAC,CAAC;EAEH,IAAI,CAAC,IAAI,CAAC;IACR,EAAE;IACF,EAAE,YAAY,EAAE,cAAc,EAAE;IAChC,EAAE,YAAY,EAAE,cAAc,EAAE;IAChC,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,cAAc,EAAE;IACnD,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,EAAE;GACpD,CAAC,CAAC,qDAAqD,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;IACrE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI;MACF,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KACrB;IAAC,OAAO,GAAG,EAAE;MACZ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,sEAAsE,CAAC,CAAC;KACrG;EACH,CAAC,CAAC,CAAC;EAEH,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;IAChD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;IAE3F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAE5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAErD,OAAO,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;EACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { MgDetails } from '../mg-details';\n\nconst getPage = args =>\n newSpecPage({\n components: [MgDetails],\n template: () => (\n <mg-details {...args}>\n <span slot=\"summary\">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</span>\n <p slot=\"details\">\n Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n </p>\n </mg-details>\n ),\n });\n\ndescribe('mg-details', () => {\n test.each([\n { toggleClosed: 'Show details', toggleOpened: 'Hide details' },\n { toggleClosed: 'Show details', toggleOpened: 'Hide details', expanded: true },\n { toggleClosed: 'Show details', toggleOpened: 'Hide details', hideSummary: true },\n ])('with args %s', async args => {\n const { root } = await getPage(args);\n expect(root).toMatchSnapshot();\n });\n\n test.each([\n {},\n { toggleClosed: 'Show details' },\n { toggleOpened: 'Hide details' },\n { toggleClosed: ' ', toggleOpened: 'Hide details' },\n { toggleClosed: 'Show details', toggleOpened: ' ' },\n ])('Should throw error when missing toogle messages: %s', async args => {\n expect.assertions(1);\n try {\n await getPage(args);\n } catch (err) {\n expect(err.message).toMatch('<mg-details> prop \"toggleClosed\" and \"toggleOpened\" must be defined.');\n }\n });\n\n test('Should toggle details on click', async () => {\n const page = await getPage({ toggleClosed: 'Show details', toggleOpened: 'Hide details' });\n\n const element = page.doc.querySelector('mg-details');\n const summary = element.shadowRoot.querySelector('summary');\n\n jest.spyOn(page.rootInstance.expandedChange, 'emit');\n\n summary.dispatchEvent(new CustomEvent('toggle', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.rootInstance.expandedChange.emit).toHaveBeenCalledTimes(1);\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
- import { h } from '@stencil/core';
2
- import { createID, ClassList } from '../../../utils/components.utils';
3
- import { initLocales } from '../../../locales';
1
+ import { h } from "@stencil/core";
2
+ import { createID, ClassList } from "../../../utils/components.utils";
3
+ import { initLocales } from "../../../locales";
4
4
  export class MgForm {
5
5
  constructor() {
6
6
  // Classes
@@ -25,15 +25,23 @@ export class MgForm {
25
25
  // All inputs are required
26
26
  if ([requiredInputs.length, editableInputs.length].every(length => length === 1) ||
27
27
  (requiredInputs.length > 1 && requiredInputs.length === editableInputs.filter(input => !isMgInputToggle(input)).length)) {
28
- this.requiredMessage = this.messages.form[requiredInputs.length === 1 ? 'allRequiredSingle' : 'allRequired'];
28
+ this.requiredMessage = this.getRequiredMessageBasedOnCount(requiredInputs, 'allRequiredSingle', 'allRequired');
29
29
  this.classCollection.add(this.classAllRequired);
30
30
  }
31
31
  // Some fields are required
32
32
  else if (requiredInputs.length > 0) {
33
- this.requiredMessage = this.messages.form[requiredInputs.length === 1 ? 'requiredSingle' : 'required'];
33
+ this.requiredMessage = this.getRequiredMessageBasedOnCount(requiredInputs, 'requiredSingle', 'required');
34
34
  }
35
35
  }
36
36
  };
37
+ /**
38
+ * Returns a required message based on the count of required inputs.
39
+ * @param requiredInputs - An array of required input elements.
40
+ * @param keySingle - The key for the singular message format.
41
+ * @param keyPlural - The key for the plural message format.
42
+ * @returns The appropriate required message based on the count of required inputs.
43
+ */
44
+ this.getRequiredMessageBasedOnCount = (requiredInputs, keySingle, keyPlural) => this.messages.form[requiredInputs.length === 1 ? keySingle : keyPlural];
37
45
  /**
38
46
  * Check if form is valid
39
47
  */
@@ -145,7 +153,7 @@ export class MgForm {
145
153
  * @returns HTML Element
146
154
  */
147
155
  render() {
148
- return (h("form", { class: this.classCollection.join(), id: this.identifier, name: this.name, ref: el => (this.form = el), onSubmit: this.handleFormSubmit }, this.requiredMessage && h("p", { innerHTML: this.requiredMessage }), h("slot", null), !this.readonly && !this.disabled && h("slot", { name: "actions" })));
156
+ return (h("form", { class: this.classCollection.join(), id: this.identifier, name: this.name, ref: (el) => (this.form = el), onSubmit: this.handleFormSubmit }, this.requiredMessage && h("p", { innerHTML: this.requiredMessage }), h("slot", null), !this.readonly && !this.disabled && h("slot", { name: "actions" })));
149
157
  }
150
158
  static get is() { return "mg-form"; }
151
159
  static get encapsulation() { return "shadow"; }
@@ -316,7 +324,8 @@ export class MgForm {
316
324
  "parameters": [],
317
325
  "references": {
318
326
  "Promise": {
319
- "location": "global"
327
+ "location": "global",
328
+ "id": "global::Promise"
320
329
  }
321
330
  },
322
331
  "return": "Promise<void>"
@@ -339,3 +348,4 @@ export class MgForm {
339
348
  }];
340
349
  }
341
350
  }
351
+ //# sourceMappingURL=mg-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-form.js","sourceRoot":"","sources":["../../../../src/components/molecules/mg-form/mg-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { createID, ClassList } from '../../../utils/components.utils';\nimport { initLocales } from '../../../locales';\nimport { HTMLMgInputsElement } from '../inputs/MgInput.conf';\n\n@Component({\n tag: 'mg-form',\n styleUrl: 'mg-form.scss',\n shadow: true,\n})\nexport class MgForm {\n /************\n * Internal *\n ************/\n\n private mgInputs: HTMLMgInputsElement[];\n private mgButtons: HTMLMgButtonElement[];\n\n // Classes\n private readonly classAllRequired = 'mg-form--all-required';\n\n // HTML selector\n private form: HTMLFormElement;\n\n // Locales\n private messages;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgFormElement;\n\n /**\n * Identifier is used for the element ID (id is a reserved prop in Stencil.js)\n * If not set, it will be created.\n */\n @Prop() identifier: string = createID('mg-form');\n\n /**\n * Input name\n * If not set the value equals the identifier\n */\n @Prop() name: string = this.identifier;\n\n /**\n * Define if form is readonly\n */\n @Prop() readonly = false;\n\n /**\n * Define if form is disabled\n */\n @Prop() disabled = false;\n @Watch('readonly')\n @Watch('disabled')\n handleAttributeChange(): void {\n this.setMgInputs();\n this.setRequiredMessage();\n }\n\n /**\n * Define form valid state\n */\n @Prop({ mutable: true }) valid: boolean;\n\n /**\n * Define form invalid state\n */\n @Prop({ mutable: true }) invalid: boolean;\n\n /**\n * Component classes\n */\n @State() classCollection: ClassList = new ClassList(['mg-form']);\n\n /**\n * Required message\n */\n @State() requiredMessage: string;\n\n /**\n * Emitted event on form validity check\n * Tells if form is valid or not\n */\n @Event({ eventName: 'form-valid' }) formValid: EventEmitter<boolean>;\n\n /**\n * Emitted event on form submit\n */\n @Event({ eventName: 'form-submit' }) formSubmit: EventEmitter<boolean>;\n\n /**\n * Public method to display errors\n */\n @Method()\n async displayError(): Promise<void> {\n if (!this.readonly) {\n this.mgInputs.forEach(input => {\n input.displayError && input.displayError();\n });\n this.checkValidity();\n }\n }\n\n /**\n * Define required message based on mg-inputs required elements\n */\n private setRequiredMessage = (): void => {\n // init required message\n this.requiredMessage = null;\n this.classCollection.delete(this.classAllRequired);\n // If the form is disabled or readonly none of them are required\n // Check if all fields are not editable (readonly or disabled)\n const isEditable = input => !(input.disabled || input.readonly);\n const isMgInputToggle = input => input.nodeName === 'MG-INPUT-TOGGLE';\n if (!this.disabled && !this.readonly && this.mgInputs.some(input => isEditable(input) && !isMgInputToggle(input))) {\n // Get editable inputs\n const editableInputs: HTMLMgInputsElement[] = this.mgInputs.filter(isEditable);\n // Get required inputs\n // mg-input-toggle can not be required\n const requiredInputs: HTMLMgInputsElement[] = editableInputs.filter(input => !isMgInputToggle(input) && input.required);\n // All inputs are required\n if (\n [requiredInputs.length, editableInputs.length].every(length => length === 1) ||\n (requiredInputs.length > 1 && requiredInputs.length === editableInputs.filter(input => !isMgInputToggle(input)).length)\n ) {\n this.requiredMessage = this.getRequiredMessageBasedOnCount(requiredInputs, 'allRequiredSingle', 'allRequired');\n this.classCollection.add(this.classAllRequired);\n }\n // Some fields are required\n else if (requiredInputs.length > 0) {\n this.requiredMessage = this.getRequiredMessageBasedOnCount(requiredInputs, 'requiredSingle', 'required');\n }\n }\n };\n\n /**\n * Returns a required message based on the count of required inputs.\n * @param requiredInputs - An array of required input elements.\n * @param keySingle - The key for the singular message format.\n * @param keyPlural - The key for the plural message format.\n * @returns The appropriate required message based on the count of required inputs.\n */\n private getRequiredMessageBasedOnCount = (requiredInputs: HTMLMgInputsElement[], keySingle: string, keyPlural: string) =>\n this.messages.form[requiredInputs.length === 1 ? keySingle : keyPlural];\n\n /**\n * Check if form is valid\n */\n private checkValidity = (): void => {\n // Update required on input event\n this.setRequiredMessage();\n\n this.valid = !this.mgInputs.some(input => input.invalid);\n this.invalid = !this.valid;\n // We need to send valid event if it is the same value\n this.formValid.emit(this.valid);\n };\n\n /**\n * Handle Form Submit\n * @param event - submit event\n */\n private handleFormSubmit = (event: SubmitEvent): void => {\n event.preventDefault();\n this.formSubmit.emit();\n };\n\n /**\n * Set mgInputs\n */\n private setMgInputs = (): void => {\n // Get slotted mgInputs\n this.mgInputs = Array.from(this.element.querySelectorAll('*')).filter((node: Node) => node.nodeName.startsWith('MG-INPUT-')) as HTMLMgInputsElement[];\n // Set inputs readonly or disabled based on form configuration\n // Othewise listen to events\n this.mgInputs.forEach(input => {\n if (this.readonly) input.readonly = true;\n else if (this.disabled) input.disabled = true;\n else input.addEventListener('input-valid', this.checkValidity);\n });\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\n // Get slotted mgButtons\n this.mgButtons = Array.from(this.element.querySelectorAll('mg-button'));\n\n // Set button form identifier\n this.mgButtons.forEach(mgButton => {\n mgButton.setAttribute('form', this.identifier);\n });\n\n // Set mgInputs\n this.setMgInputs();\n\n // Define required message\n this.setRequiredMessage();\n\n // Check validity when slotted mgInputs are ready\n Promise.all(\n this.mgInputs.map(async input => {\n try {\n await input.componentOnReady();\n } catch {} // prevent error with VueJS first render\n }),\n ).then(() => {\n this.checkValidity();\n });\n }\n\n /**\n * Add slot listeners\n */\n componentDidLoad(): void {\n this.mgButtons.forEach(mgButton => {\n // submit buttons should trigger form submition;\n if (['submit', null].includes(mgButton.getAttribute('type'))) {\n mgButton.addEventListener('click', () => {\n this.form.dispatchEvent(new SubmitEvent('submit', { bubbles: true, cancelable: true }));\n });\n }\n });\n // Update mgInputs when mgForm content change\n new MutationObserver(() => {\n this.setMgInputs();\n }).observe(this.element, { childList: true });\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <form class={this.classCollection.join()} id={this.identifier} name={this.name} ref={(el: HTMLFormElement) => (this.form = el)} onSubmit={this.handleFormSubmit}>\n {this.requiredMessage && <p innerHTML={this.requiredMessage}></p>}\n <slot></slot>\n {!this.readonly && !this.disabled && <slot name=\"actions\"></slot>}\n </form>\n );\n }\n}\n"]}