@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,223 @@
1
+ import { h } from "@stencil/core";
2
+ import { newSpecPage } from "@stencil/core/testing";
3
+ import { MgPanel } from "../mg-panel";
4
+ import { MgButton } from "../../../atoms/mg-button/mg-button";
5
+ import { MgInputText } from "../../inputs/mg-input-text/mg-input-text";
6
+ import { expandToggleDisplays, titlePositions } from "../mg-panel.conf";
7
+ const getPage = (args, slot) => {
8
+ const page = newSpecPage({
9
+ components: [MgPanel, MgButton, MgInputText],
10
+ template: () => h("mg-panel", Object.assign({}, args), slot),
11
+ });
12
+ jest.runAllTimers();
13
+ return page;
14
+ };
15
+ describe('mg-panel', () => {
16
+ beforeAll(() => (global.HTMLInputElement.prototype.focus = jest.fn()));
17
+ afterAll(() => delete global.HTMLInputElement.prototype.focus);
18
+ beforeEach(() => jest.useFakeTimers());
19
+ afterEach(() => jest.runOnlyPendingTimers());
20
+ test.each([
21
+ { identifier: 'identifier', panelTitle: 'panel title' },
22
+ { identifier: 'identifier', panelTitle: 'panel title', expanded: true },
23
+ { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true },
24
+ { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, titlePattern: /joker/, titlePatternErrorMessage: "You can't enter a bad guy !" },
25
+ { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, lang: 'fr' },
26
+ { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, lang: 'xx' },
27
+ ...titlePositions.map(titlePosition => ({ identifier: 'identifier', panelTitle: 'panel title', titlePosition })),
28
+ ...expandToggleDisplays.map(expandToggleDisplay => ({ identifier: 'identifier', panelTitle: 'panel title', expandToggleDisplay })),
29
+ ...expandToggleDisplays.map(expandToggleDisplay => ({ identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, expandToggleDisplay })),
30
+ ])('Should render with args %s:', async (args) => {
31
+ const { root } = await getPage(args);
32
+ expect(root).toMatchSnapshot();
33
+ });
34
+ describe('errors', () => {
35
+ test.each([
36
+ { props: { identifier: 'identifier', panelTitle: 'panel title', titlePattern: /joker/ }, error: '<mg-panel> prop "titleEditable" must be set to `true`.' },
37
+ {
38
+ props: { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, titlePattern: '^(?!(joker)$)[a-z A-Z0-9s]+$' },
39
+ error: '<mg-panel> prop "titlePattern" must be paired with the prop "titlePatternErrorMessage".',
40
+ },
41
+ {
42
+ props: { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, titlePattern: '^(?!(joker)$)[a-z A-Z0-9s]+$', titlePatternErrorMessage: '' },
43
+ error: '<mg-panel> prop "titlePattern" must be paired with the prop "titlePatternErrorMessage".',
44
+ },
45
+ ])('Should throw error when props association are unauthorized %s:', async ({ props, error }) => {
46
+ expect.assertions(1);
47
+ try {
48
+ await getPage(props);
49
+ }
50
+ catch (err) {
51
+ expect(err.message).toBe(error);
52
+ }
53
+ });
54
+ test.each(['', ' ', undefined])('Should not render with invalid panelTitle property: %s', async (panelTitle) => {
55
+ expect.assertions(1);
56
+ try {
57
+ await getPage({ panelTitle });
58
+ }
59
+ catch (err) {
60
+ expect(err.message).toMatch('<mg-panel> prop "panelTitle" is required.');
61
+ }
62
+ });
63
+ test.each(['', ' ', 'batman'].map(titlePosition => ({ panelTitle: 'panel title', titlePosition })))('Should throw an error when prop "titlePosition" is invalid', async (props) => {
64
+ try {
65
+ await getPage(props);
66
+ }
67
+ catch (err) {
68
+ expect(err.message).toMatch(`<mg-panel> prop "titlePosition" must be one of: ${titlePositions.join(', ')}.`);
69
+ }
70
+ });
71
+ test.each(['', ' ', 'batman'].map(expandToggleDisplay => ({ panelTitle: 'panel title', expandToggleDisplay })))('Should throw an error when prop "expandToggleDisplay" is invalid', async (props) => {
72
+ try {
73
+ await getPage(props);
74
+ }
75
+ catch (err) {
76
+ expect(err.message).toMatch(`<mg-panel> prop "expandToggleDisplay" must be one of: ${expandToggleDisplays.join(', ')}.`);
77
+ }
78
+ });
79
+ });
80
+ describe('navigation', () => {
81
+ test.each([true, false])('Should toggle collapse panel, expanded %s', async (expanded) => {
82
+ const page = await getPage({ identifier: 'identifier', panelTitle: 'panel title', expanded });
83
+ const mgPanel = page.doc.querySelector('mg-panel');
84
+ const collapseButton = mgPanel.shadowRoot.querySelector('mg-button:first-of-type');
85
+ const spy = jest.spyOn(page.rootInstance.expandedChange, 'emit');
86
+ expect(page.root).toMatchSnapshot();
87
+ collapseButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
88
+ await page.waitForChanges();
89
+ expect(page.root).toMatchSnapshot();
90
+ collapseButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
91
+ await page.waitForChanges();
92
+ expect(page.root).toMatchSnapshot();
93
+ expect(spy).toBeCalledTimes(2);
94
+ });
95
+ test.each([true, false])('Should NOT collapse panel, case expandToggleDisabled = true', async (expanded) => {
96
+ const page = await getPage({ identifier: 'identifier', panelTitle: 'panel title', expanded, expandToggleDisabled: true });
97
+ const mgPanel = page.doc.querySelector('mg-panel');
98
+ const collapseButton = mgPanel.shadowRoot.querySelector('mg-button:first-of-type');
99
+ expect(page.root).toMatchSnapshot();
100
+ collapseButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
101
+ await page.waitForChanges();
102
+ expect(page.root).toMatchSnapshot();
103
+ });
104
+ test.each([true, false])('Should toggle edit panel title', async (titleEditable) => {
105
+ const page = await getPage({ identifier: 'identifier', panelTitle: 'panel title', titleEditable });
106
+ const mgPanel = page.doc.querySelector('mg-panel');
107
+ const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');
108
+ expect(page.root).toMatchSnapshot();
109
+ if (titleEditable) {
110
+ editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
111
+ await page.waitForChanges();
112
+ expect(page.root).toMatchSnapshot();
113
+ editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
114
+ jest.runOnlyPendingTimers();
115
+ await page.waitForChanges();
116
+ expect(page.root).toMatchSnapshot();
117
+ }
118
+ });
119
+ test.each(['first-of-type', 'last-of-type'])('should update panel title, case %s', async (lastAction) => {
120
+ const updatedPanelTitle = 'Updated panel title';
121
+ const args = { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true };
122
+ const page = await getPage(args);
123
+ const mgPanel = page.doc.querySelector('mg-panel');
124
+ const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');
125
+ expect(page.root).toMatchSnapshot();
126
+ jest.spyOn(page.rootInstance.titleChange, 'emit');
127
+ editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
128
+ await page.waitForChanges();
129
+ expect(page.root).toMatchSnapshot();
130
+ const mgInputText = mgPanel.shadowRoot.querySelector('mg-input-text');
131
+ const input = mgInputText.shadowRoot.querySelector('input');
132
+ input.value = updatedPanelTitle;
133
+ input.dispatchEvent(new CustomEvent('input', { bubbles: true }));
134
+ await page.waitForChanges();
135
+ input.dispatchEvent(new CustomEvent('blur', { bubbles: true }));
136
+ await page.waitForChanges();
137
+ const afterInputAction = mgPanel.shadowRoot.querySelector(`.mg-panel__header-title mg-input-text mg-button:${lastAction}`);
138
+ afterInputAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));
139
+ jest.runOnlyPendingTimers();
140
+ await page.waitForChanges();
141
+ expect(page.root).toMatchSnapshot();
142
+ if (lastAction === 'last-of-type') {
143
+ expect(mgPanel.panelTitle).toBe(updatedPanelTitle);
144
+ expect(page.rootInstance.titleChange.emit).toHaveBeenCalledWith(updatedPanelTitle);
145
+ }
146
+ else {
147
+ expect(mgPanel.panelTitle).toBe(args.panelTitle);
148
+ expect(page.rootInstance.titleChange.emit).not.toHaveBeenCalled();
149
+ }
150
+ });
151
+ test('should NOT update panel title, case no enter in input', async () => {
152
+ const updatedPanelTitle = 'Updated panel title';
153
+ const args = { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true };
154
+ const page = await getPage(args);
155
+ const mgPanel = page.doc.querySelector('mg-panel');
156
+ const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');
157
+ expect(page.root).toMatchSnapshot();
158
+ jest.spyOn(page.rootInstance.titleChange, 'emit');
159
+ editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
160
+ await page.waitForChanges();
161
+ expect(page.root).toMatchSnapshot();
162
+ const mgInputText = mgPanel.shadowRoot.querySelector('mg-input-text');
163
+ const input = mgInputText.shadowRoot.querySelector('input');
164
+ input.dispatchEvent(new CustomEvent('blur', { bubbles: true }));
165
+ await page.waitForChanges();
166
+ const afterInputAction = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-input-text mg-button:last-of-type');
167
+ afterInputAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));
168
+ jest.runOnlyPendingTimers();
169
+ await page.waitForChanges();
170
+ expect(page.root).toMatchSnapshot();
171
+ expect(mgPanel.panelTitle).toBe(args.panelTitle);
172
+ expect(page.rootInstance.titleChange.emit).not.toHaveBeenCalledWith(updatedPanelTitle);
173
+ });
174
+ test('Should NOT update panel title, case input new value does NOT match pattern', async () => {
175
+ const updatedPanelTitle = 'joker';
176
+ const args = {
177
+ identifier: 'identifier',
178
+ panelTitle: 'panel title',
179
+ titleEditable: true,
180
+ titlePattern: '^(?!(joker)$)[a-z A-Z0-9s]+$',
181
+ titlePatternErrorMessage: "You can't enter a bad guy !",
182
+ };
183
+ const page = await getPage(args);
184
+ const mgPanel = page.doc.querySelector('mg-panel');
185
+ const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');
186
+ expect(page.root).toMatchSnapshot();
187
+ jest.spyOn(page.rootInstance.titleChange, 'emit');
188
+ // first switch to title edition
189
+ editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));
190
+ await page.waitForChanges();
191
+ expect(page.root).toMatchSnapshot();
192
+ const mgInputText = mgPanel.shadowRoot.querySelector('mg-input-text');
193
+ const input = mgInputText.shadowRoot.querySelector('input');
194
+ input.checkValidity = jest.fn(() => false);
195
+ Object.defineProperty(input, 'validity', {
196
+ get: jest.fn(() => ({
197
+ patternMismatch: false,
198
+ })),
199
+ });
200
+ // second update title with a falsy update title
201
+ input.value = updatedPanelTitle;
202
+ input.dispatchEvent(new CustomEvent('input', { bubbles: true }));
203
+ await page.waitForChanges();
204
+ input.dispatchEvent(new CustomEvent('blur', { bubbles: true }));
205
+ await page.waitForChanges();
206
+ // and click on validate button
207
+ const afterInputAction = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-input-text mg-button:last-of-type');
208
+ afterInputAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));
209
+ jest.runOnlyPendingTimers();
210
+ await page.waitForChanges();
211
+ expect(page.root).toMatchSnapshot();
212
+ expect(mgPanel.panelTitle).toBe(args.panelTitle);
213
+ expect(page.rootInstance.titleChange.emit).not.toHaveBeenCalledWith(updatedPanelTitle);
214
+ // finaly return to default view by clicking on cancel button
215
+ const cancelAction = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-input-text mg-button:last-of-type');
216
+ cancelAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));
217
+ jest.runOnlyPendingTimers();
218
+ await page.waitForChanges();
219
+ expect(page.root).toMatchSnapshot();
220
+ });
221
+ });
222
+ });
223
+ //# sourceMappingURL=mg-panel.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-panel.spec.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-panel/test/mg-panel.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { MgPanel } from '../mg-panel';\n\nimport { MgButton } from '../../../atoms/mg-button/mg-button';\nimport { MgInputText } from '../../inputs/mg-input-text/mg-input-text';\nimport { expandToggleDisplays, titlePositions } from '../mg-panel.conf';\n\nconst getPage = (args, slot?) => {\n const page = newSpecPage({\n components: [MgPanel, MgButton, MgInputText],\n template: () => <mg-panel {...args}>{slot}</mg-panel>,\n });\n jest.runAllTimers();\n\n return page;\n};\n\ndescribe('mg-panel', () => {\n beforeAll(() => (global.HTMLInputElement.prototype.focus = jest.fn()));\n afterAll(() => delete global.HTMLInputElement.prototype.focus);\n\n beforeEach(() => jest.useFakeTimers());\n afterEach(() => jest.runOnlyPendingTimers());\n\n test.each([\n { identifier: 'identifier', panelTitle: 'panel title' },\n { identifier: 'identifier', panelTitle: 'panel title', expanded: true },\n { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true },\n { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, titlePattern: /joker/, titlePatternErrorMessage: \"You can't enter a bad guy !\" },\n { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, lang: 'fr' },\n { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, lang: 'xx' },\n ...titlePositions.map(titlePosition => ({ identifier: 'identifier', panelTitle: 'panel title', titlePosition })),\n ...expandToggleDisplays.map(expandToggleDisplay => ({ identifier: 'identifier', panelTitle: 'panel title', expandToggleDisplay })),\n ...expandToggleDisplays.map(expandToggleDisplay => ({ identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, expandToggleDisplay })),\n ])('Should render with args %s:', async args => {\n const { root } = await getPage(args);\n expect(root).toMatchSnapshot();\n });\n\n describe('errors', () => {\n test.each([\n { props: { identifier: 'identifier', panelTitle: 'panel title', titlePattern: /joker/ }, error: '<mg-panel> prop \"titleEditable\" must be set to `true`.' },\n {\n props: { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, titlePattern: '^(?!(joker)$)[a-z A-Z0-9s]+$' },\n error: '<mg-panel> prop \"titlePattern\" must be paired with the prop \"titlePatternErrorMessage\".',\n },\n {\n props: { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true, titlePattern: '^(?!(joker)$)[a-z A-Z0-9s]+$', titlePatternErrorMessage: '' },\n error: '<mg-panel> prop \"titlePattern\" must be paired with the prop \"titlePatternErrorMessage\".',\n },\n ])('Should throw error when props association are unauthorized %s:', async ({ props, error }) => {\n expect.assertions(1);\n try {\n await getPage(props);\n } catch (err) {\n expect(err.message).toBe(error);\n }\n });\n\n test.each(['', ' ', undefined])('Should not render with invalid panelTitle property: %s', async panelTitle => {\n expect.assertions(1);\n try {\n await getPage({ panelTitle });\n } catch (err) {\n expect(err.message).toMatch('<mg-panel> prop \"panelTitle\" is required.');\n }\n });\n\n test.each(['', ' ', 'batman'].map(titlePosition => ({ panelTitle: 'panel title', titlePosition })))(\n 'Should throw an error when prop \"titlePosition\" is invalid',\n async props => {\n try {\n await getPage(props);\n } catch (err) {\n expect(err.message).toMatch(`<mg-panel> prop \"titlePosition\" must be one of: ${titlePositions.join(', ')}.`);\n }\n },\n );\n\n test.each(['', ' ', 'batman'].map(expandToggleDisplay => ({ panelTitle: 'panel title', expandToggleDisplay })))(\n 'Should throw an error when prop \"expandToggleDisplay\" is invalid',\n async props => {\n try {\n await getPage(props);\n } catch (err) {\n expect(err.message).toMatch(`<mg-panel> prop \"expandToggleDisplay\" must be one of: ${expandToggleDisplays.join(', ')}.`);\n }\n },\n );\n });\n\n describe('navigation', () => {\n test.each([true, false])('Should toggle collapse panel, expanded %s', async expanded => {\n const page = await getPage({ identifier: 'identifier', panelTitle: 'panel title', expanded });\n const mgPanel = page.doc.querySelector('mg-panel');\n const collapseButton = mgPanel.shadowRoot.querySelector('mg-button:first-of-type');\n\n const spy = jest.spyOn(page.rootInstance.expandedChange, 'emit');\n\n expect(page.root).toMatchSnapshot();\n\n collapseButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n collapseButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n expect(spy).toBeCalledTimes(2);\n });\n\n test.each([true, false])('Should NOT collapse panel, case expandToggleDisabled = true', async expanded => {\n const page = await getPage({ identifier: 'identifier', panelTitle: 'panel title', expanded, expandToggleDisabled: true });\n const mgPanel = page.doc.querySelector('mg-panel');\n const collapseButton = mgPanel.shadowRoot.querySelector('mg-button:first-of-type');\n\n expect(page.root).toMatchSnapshot();\n\n collapseButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n });\n\n test.each([true, false])('Should toggle edit panel title', async titleEditable => {\n const page = await getPage({ identifier: 'identifier', panelTitle: 'panel title', titleEditable });\n const mgPanel = page.doc.querySelector('mg-panel');\n const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');\n\n expect(page.root).toMatchSnapshot();\n\n if (titleEditable) {\n editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n jest.runOnlyPendingTimers();\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n }\n });\n\n test.each(['first-of-type', 'last-of-type'])('should update panel title, case %s', async lastAction => {\n const updatedPanelTitle = 'Updated panel title';\n const args = { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true };\n const page = await getPage(args);\n const mgPanel = page.doc.querySelector('mg-panel');\n const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');\n\n expect(page.root).toMatchSnapshot();\n\n jest.spyOn(page.rootInstance.titleChange, 'emit');\n\n editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n const mgInputText = mgPanel.shadowRoot.querySelector('mg-input-text');\n const input = mgInputText.shadowRoot.querySelector('input');\n\n input.value = updatedPanelTitle;\n input.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n await page.waitForChanges();\n\n input.dispatchEvent(new CustomEvent('blur', { bubbles: true }));\n await page.waitForChanges();\n\n const afterInputAction = mgPanel.shadowRoot.querySelector(`.mg-panel__header-title mg-input-text mg-button:${lastAction}`);\n\n afterInputAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n jest.runOnlyPendingTimers();\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n if (lastAction === 'last-of-type') {\n expect(mgPanel.panelTitle).toBe(updatedPanelTitle);\n expect(page.rootInstance.titleChange.emit).toHaveBeenCalledWith(updatedPanelTitle);\n } else {\n expect(mgPanel.panelTitle).toBe(args.panelTitle);\n expect(page.rootInstance.titleChange.emit).not.toHaveBeenCalled();\n }\n });\n\n test('should NOT update panel title, case no enter in input', async () => {\n const updatedPanelTitle = 'Updated panel title';\n const args = { identifier: 'identifier', panelTitle: 'panel title', titleEditable: true };\n const page = await getPage(args);\n const mgPanel = page.doc.querySelector('mg-panel');\n const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');\n\n expect(page.root).toMatchSnapshot();\n\n jest.spyOn(page.rootInstance.titleChange, 'emit');\n\n editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n const mgInputText = mgPanel.shadowRoot.querySelector('mg-input-text');\n const input = mgInputText.shadowRoot.querySelector('input');\n\n input.dispatchEvent(new CustomEvent('blur', { bubbles: true }));\n await page.waitForChanges();\n\n const afterInputAction = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-input-text mg-button:last-of-type');\n\n afterInputAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n jest.runOnlyPendingTimers();\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n expect(mgPanel.panelTitle).toBe(args.panelTitle);\n expect(page.rootInstance.titleChange.emit).not.toHaveBeenCalledWith(updatedPanelTitle);\n });\n\n test('Should NOT update panel title, case input new value does NOT match pattern', async () => {\n const updatedPanelTitle = 'joker';\n const args = {\n identifier: 'identifier',\n panelTitle: 'panel title',\n titleEditable: true,\n titlePattern: '^(?!(joker)$)[a-z A-Z0-9s]+$',\n titlePatternErrorMessage: \"You can't enter a bad guy !\",\n };\n const page = await getPage(args);\n const mgPanel = page.doc.querySelector('mg-panel');\n const editButton = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-button[is-icon]');\n\n expect(page.root).toMatchSnapshot();\n\n jest.spyOn(page.rootInstance.titleChange, 'emit');\n\n // first switch to title edition\n editButton.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n const mgInputText = mgPanel.shadowRoot.querySelector('mg-input-text');\n const input = mgInputText.shadowRoot.querySelector('input');\n input.checkValidity = jest.fn(() => false);\n Object.defineProperty(input, 'validity', {\n get: jest.fn(() => ({\n patternMismatch: false,\n })),\n });\n\n // second update title with a falsy update title\n input.value = updatedPanelTitle;\n input.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n await page.waitForChanges();\n\n input.dispatchEvent(new CustomEvent('blur', { bubbles: true }));\n await page.waitForChanges();\n\n // and click on validate button\n const afterInputAction = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-input-text mg-button:last-of-type');\n\n afterInputAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n jest.runOnlyPendingTimers();\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n expect(mgPanel.panelTitle).toBe(args.panelTitle);\n expect(page.rootInstance.titleChange.emit).not.toHaveBeenCalledWith(updatedPanelTitle);\n\n // finaly return to default view by clicking on cancel button\n const cancelAction = mgPanel.shadowRoot.querySelector('.mg-panel__header-title mg-input-text mg-button:last-of-type');\n\n cancelAction.dispatchEvent(new CustomEvent('click', { bubbles: true }));\n jest.runOnlyPendingTimers();\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n });\n });\n});\n"]}
@@ -0,0 +1,135 @@
1
+ :host {
2
+ display: none;
3
+ padding: 1rem;
4
+ z-index: 2000;
5
+ color: hsl(var(--mg-popover-font-color));
6
+ position: relative;
7
+ }
8
+
9
+ :host([data-show]) {
10
+ display: block;
11
+ }
12
+
13
+ :host([data-popper-placement^=left-start]),
14
+ :host([data-popper-placement^=left-end]),
15
+ :host([data-popper-placement^=right-start]),
16
+ :host([data-popper-placement^=right-end]) {
17
+ padding: 0 1rem;
18
+ }
19
+
20
+ .mg-popover-content {
21
+ --mg-card-max-width: var(--mg-popover-max-width);
22
+ --mg-card-min-width: var(--mg-popover-min-width);
23
+ }
24
+ .mg-popover-content mg-button {
25
+ float: right;
26
+ margin-right: calc(0rem - (var(--default-size) - var(--mg-icon-regular-size)) / 2);
27
+ margin-top: calc(0rem - (var(--default-size) - var(--mg-popover-title-font-size) * var(--line-height)) / 2);
28
+ margin-left: 3rem;
29
+ }
30
+ .mg-popover-content__title ::slotted([slot=title]) {
31
+ margin: 0 0 1rem !important;
32
+ font-size: var(--mg-popover-title-font-size) !important;
33
+ font-weight: 600;
34
+ }
35
+ .mg-popover-content ::slotted(*) {
36
+ --mg-card-border: var(--mg-card-border-default);
37
+ --mg-card-padding: var(--mg-card-padding-default);
38
+ --mg-card-border-radius: var(--mg-card-border-radius-default);
39
+ --mg-card-background: var(--mg-card-background-default);
40
+ --mg-card-box-shadow: var(--mg-card-box-shadow-default);
41
+ --mg-card-max-width: unset;
42
+ --mg-card-min-width: unset;
43
+ }
44
+
45
+ /**
46
+ * Arrow hide
47
+ */
48
+ :host([data-popper-placement^=top][data-arrow-hide]) {
49
+ padding-bottom: 0;
50
+ }
51
+
52
+ :host([data-popper-placement^=bottom][data-arrow-hide]) {
53
+ padding-top: 0;
54
+ }
55
+
56
+ :host([data-popper-placement$=end][data-arrow-hide]),
57
+ :host([data-popper-placement^=left][data-arrow-hide]) {
58
+ padding-right: 0;
59
+ }
60
+
61
+ :host([data-popper-placement$=start][data-arrow-hide]),
62
+ :host([data-popper-placement^=right][data-arrow-hide]) {
63
+ padding-left: 0;
64
+ }
65
+
66
+ /**
67
+ * Arrow style
68
+ */
69
+ ::slotted([slot=arrow]) {
70
+ position: absolute;
71
+ visibility: hidden;
72
+ width: calc(3rem + 2 * var(--mg-card-border-radius) + 2rem);
73
+ height: calc(3rem + 2 * var(--mg-card-border-radius) + 2rem);
74
+ /**
75
+ * Arrow position
76
+ */
77
+ }
78
+ ::slotted([slot=arrow]):before {
79
+ visibility: visible;
80
+ content: "";
81
+ position: absolute;
82
+ }
83
+ :host([data-arrow-hide]) ::slotted([slot=arrow]) {
84
+ display: none;
85
+ }
86
+ :host([data-popper-placement^=top]) ::slotted([slot=arrow]), :host([data-popper-placement^=bottom]) ::slotted([slot=arrow]) {
87
+ height: 1rem;
88
+ }
89
+ :host([data-popper-placement^=top]) ::slotted([slot=arrow]):before, :host([data-popper-placement^=bottom]) ::slotted([slot=arrow]):before {
90
+ left: calc(var(--mg-card-border-radius) + 1rem);
91
+ border-right: calc(3rem / 2) solid transparent;
92
+ border-left: calc(3rem / 2) solid transparent;
93
+ }
94
+ :host([data-popper-placement^=top]) ::slotted([slot=arrow]) {
95
+ bottom: 0.1rem;
96
+ filter: drop-shadow(0 0.5rem 0.25rem hsl(var(--color-dark), 0.15));
97
+ }
98
+ :host([data-popper-placement^=top]) ::slotted([slot=arrow]):before {
99
+ border-top: 1rem solid hsl(var(--mg-popover-background-color));
100
+ }
101
+ :host([data-popper-placement^=bottom]) ::slotted([slot=arrow]) {
102
+ top: 0.1rem;
103
+ filter: drop-shadow(0 -0.5rem 0.25rem hsl(var(--color-dark), 0.15));
104
+ }
105
+ :host([data-popper-placement^=bottom]) ::slotted([slot=arrow]):before {
106
+ border-bottom: 1rem solid hsl(var(--mg-popover-background-color));
107
+ }
108
+ :host([data-popper-placement^=left]) ::slotted([slot=arrow]), :host([data-popper-placement^=right]) ::slotted([slot=arrow]) {
109
+ width: 1rem;
110
+ }
111
+ :host([data-popper-placement^=left]) ::slotted([slot=arrow]):before, :host([data-popper-placement^=right]) ::slotted([slot=arrow]):before {
112
+ top: calc(var(--mg-card-border-radius) + 1rem);
113
+ border-top: calc(3rem / 2) solid transparent;
114
+ border-bottom: calc(3rem / 2) solid transparent;
115
+ }
116
+ :host([data-popper-placement^=left]) ::slotted([slot=arrow]) {
117
+ right: 0.1rem;
118
+ filter: drop-shadow(0.5rem 0 0.25rem hsl(var(--color-dark), 0.15));
119
+ }
120
+ :host([data-popper-placement^=left]) ::slotted([slot=arrow]):before {
121
+ border-left: 1rem solid hsl(var(--mg-popover-background-color));
122
+ }
123
+ :host([data-popper-placement^=right]) ::slotted([slot=arrow]) {
124
+ left: 0.1rem;
125
+ filter: drop-shadow(-0.5rem 0 0.25rem hsl(var(--color-dark), 0.15));
126
+ }
127
+ :host([data-popper-placement^=right]) ::slotted([slot=arrow]):before {
128
+ border-right: 1rem solid hsl(var(--mg-popover-background-color));
129
+ }
130
+ :host([data-popper-placement^=left-start]) ::slotted([slot=arrow]), :host([data-popper-placement^=left-end]) ::slotted([slot=arrow]), :host([data-popper-placement^=right-start]) ::slotted([slot=arrow]), :host([data-popper-placement^=right-end]) ::slotted([slot=arrow]) {
131
+ height: calc(3rem + 2 * var(--mg-card-border-radius));
132
+ }
133
+ :host([data-popper-placement^=left-start]) ::slotted([slot=arrow]):before, :host([data-popper-placement^=left-end]) ::slotted([slot=arrow]):before, :host([data-popper-placement^=right-start]) ::slotted([slot=arrow]):before, :host([data-popper-placement^=right-end]) ::slotted([slot=arrow]):before {
134
+ top: var(--mg-card-border-radius);
135
+ }
@@ -0,0 +1,101 @@
1
+ import { Host, h } from "@stencil/core";
2
+ import { isTagName, ClassList } from "../../../../utils/components.utils";
3
+ import { initLocales } from "../../../../locales";
4
+ export class MgPopoverContent {
5
+ constructor() {
6
+ /**
7
+ * Handle action for close button
8
+ */
9
+ this.handleCloseButton = () => {
10
+ this.hideContent.emit();
11
+ };
12
+ this.closeButton = false;
13
+ this.classCollection = new ClassList(['mg-popover-content']);
14
+ }
15
+ /*************
16
+ * Lifecycle *
17
+ *************/
18
+ /**
19
+ * Check if component props are valide
20
+ */
21
+ componentWillLoad() {
22
+ // Get locales
23
+ this.messages = initLocales(this.element).messages;
24
+ }
25
+ /**
26
+ * Check if component slots are valide
27
+ */
28
+ componentDidLoad() {
29
+ const headingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
30
+ const slottedTitleElement = this.element.querySelector('[slot="title"]');
31
+ if (slottedTitleElement && !isTagName(slottedTitleElement, headingTags)) {
32
+ throw new Error(`<mg-popover> Slotted title must be a heading: ${headingTags.join(', ')}`);
33
+ }
34
+ }
35
+ /**
36
+ * Render
37
+ * @returns HTML Element
38
+ */
39
+ render() {
40
+ return (h(Host, null, h("mg-card", { class: this.classCollection.join() }, this.closeButton && (h("mg-button", { "is-icon": true, variant: "flat", label: this.messages.general.close, onClick: this.handleCloseButton }, h("mg-icon", { icon: "cross" }))), h("div", { class: "mg-popover-content__title" }, h("slot", { name: "title" })), h("slot", { name: "content" })), h("slot", { name: "arrow" })));
41
+ }
42
+ static get is() { return "mg-popover-content"; }
43
+ static get encapsulation() { return "shadow"; }
44
+ static get originalStyleUrls() {
45
+ return {
46
+ "$": ["mg-popover-content.scss"]
47
+ };
48
+ }
49
+ static get styleUrls() {
50
+ return {
51
+ "$": ["mg-popover-content.css"]
52
+ };
53
+ }
54
+ static get properties() {
55
+ return {
56
+ "closeButton": {
57
+ "type": "boolean",
58
+ "mutable": false,
59
+ "complexType": {
60
+ "original": "boolean",
61
+ "resolved": "boolean",
62
+ "references": {}
63
+ },
64
+ "required": false,
65
+ "optional": false,
66
+ "docs": {
67
+ "tags": [],
68
+ "text": "Define if popover has a cross button"
69
+ },
70
+ "attribute": "close-button",
71
+ "reflect": false,
72
+ "defaultValue": "false"
73
+ }
74
+ };
75
+ }
76
+ static get states() {
77
+ return {
78
+ "classCollection": {}
79
+ };
80
+ }
81
+ static get events() {
82
+ return [{
83
+ "method": "hideContent",
84
+ "name": "hide-content",
85
+ "bubbles": true,
86
+ "cancelable": true,
87
+ "composed": true,
88
+ "docs": {
89
+ "tags": [],
90
+ "text": "Emited event when close button is clicked"
91
+ },
92
+ "complexType": {
93
+ "original": "string",
94
+ "resolved": "string",
95
+ "references": {}
96
+ }
97
+ }];
98
+ }
99
+ static get elementRef() { return "element"; }
100
+ }
101
+ //# sourceMappingURL=mg-popover-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mg-popover-content.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-popover/mg-popover-content/mg-popover-content.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAgB,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAOlD,MAAM,OAAO,gBAAgB;;IAgC3B;;OAEG;IACK,sBAAiB,GAAG,GAAS,EAAE;MACrC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;uBAjBoB,KAAK;2BAKW,IAAI,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;;EAc3E;;iBAEe;EAEf;;KAEG;EACH,iBAAiB;IACf,cAAc;IACd,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;EACrD,CAAC;EAED;;KAEG;EACH,gBAAgB;IACd,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,mBAAmB,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE;MACvE,MAAM,IAAI,KAAK,CAAC,iDAAiD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC5F;EACH,CAAC;EAED;;;KAGG;EACH,MAAM;IACJ,OAAO,CACL,EAAC,IAAI;MACH,eAAS,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;QACxC,IAAI,CAAC,WAAW,IAAI,CACnB,kCAAmB,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB;UACnG,eAAS,IAAI,EAAC,OAAO,GAAW,CACtB,CACb;QACD,WAAK,KAAK,EAAC,2BAA2B;UACpC,YAAM,IAAI,EAAC,OAAO,GAAQ,CACtB;QACN,YAAM,IAAI,EAAC,SAAS,GAAQ,CACpB;MACV,YAAM,IAAI,EAAC,OAAO,GAAQ,CACrB,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Host, h, Prop, EventEmitter, Event, State } from '@stencil/core';\nimport { isTagName, ClassList } from '../../../../utils/components.utils';\nimport { initLocales } from '../../../../locales';\n\n@Component({\n tag: 'mg-popover-content',\n styleUrl: 'mg-popover-content.scss',\n shadow: true,\n})\nexport class MgPopoverContent {\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: HTMLMgPopoverContentElement;\n\n /**\n * Define if popover has a cross button\n */\n @Prop() closeButton = false;\n\n /**\n * Component classes\n */\n @State() classCollection: ClassList = new ClassList(['mg-popover-content']);\n\n /**\n * Emited event when close button is clicked\n */\n @Event({ eventName: 'hide-content' }) hideContent: EventEmitter<string>;\n\n /**\n * Handle action for close button\n */\n private handleCloseButton = (): void => {\n this.hideContent.emit();\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Check if component props are valide\n */\n componentWillLoad(): void {\n // Get locales\n this.messages = initLocales(this.element).messages;\n }\n\n /**\n * Check if component slots are valide\n */\n componentDidLoad(): void {\n const headingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n\n const slottedTitleElement = this.element.querySelector('[slot=\"title\"]');\n if (slottedTitleElement && !isTagName(slottedTitleElement, headingTags)) {\n throw new Error(`<mg-popover> Slotted title must be a heading: ${headingTags.join(', ')}`);\n }\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <Host>\n <mg-card class={this.classCollection.join()}>\n {this.closeButton && (\n <mg-button is-icon variant=\"flat\" label={this.messages.general.close} onClick={this.handleCloseButton}>\n <mg-icon icon=\"cross\"></mg-icon>\n </mg-button>\n )}\n <div class=\"mg-popover-content__title\">\n <slot name=\"title\"></slot>\n </div>\n <slot name=\"content\"></slot>\n </mg-card>\n <slot name=\"arrow\"></slot>\n </Host>\n );\n }\n}\n"]}
@@ -8,115 +8,4 @@
8
8
  }
9
9
  :host::slotted(*) {
10
10
  display: inline-block;
11
- }
12
-
13
- .mg-popover {
14
- display: none;
15
- padding: 1rem;
16
- z-index: 2000;
17
- color: hsl(var(--mg-popover-font-color));
18
- }
19
- .mg-popover mg-card {
20
- --mg-card-max-width: var(--mg-popover-max-width);
21
- --mg-card-min-width: var(--mg-popover-min-width);
22
- position: relative;
23
- }
24
- .mg-popover[data-show] {
25
- display: block;
26
- }
27
- .mg-popover mg-button {
28
- float: right;
29
- margin-right: calc(0rem - (var(--default-size) - var(--mg-icon-regular-size)) / 2);
30
- margin-top: calc(0rem - (var(--default-size) - var(--mg-popover-title-font-size) * var(--line-height)) / 2);
31
- margin-left: 3rem;
32
- }
33
- .mg-popover__arrow {
34
- position: absolute;
35
- visibility: hidden;
36
- width: calc(3rem + 2 * var(--mg-card-border-radius) + 2rem);
37
- height: calc(3rem + 2 * var(--mg-card-border-radius) + 2rem);
38
- }
39
- .mg-popover__arrow:before {
40
- visibility: visible;
41
- content: "";
42
- position: absolute;
43
- }
44
- .mg-popover[data-popper-placement^=top] > .mg-popover__arrow, .mg-popover[data-popper-placement^=bottom] > .mg-popover__arrow {
45
- height: 1rem;
46
- }
47
- .mg-popover[data-popper-placement^=top] > .mg-popover__arrow:before, .mg-popover[data-popper-placement^=bottom] > .mg-popover__arrow:before {
48
- left: calc(var(--mg-card-border-radius) + 1rem);
49
- border-right: calc(3rem / 2) solid transparent;
50
- border-left: calc(3rem / 2) solid transparent;
51
- }
52
- .mg-popover[data-popper-placement^=top] > .mg-popover__arrow {
53
- bottom: 0.1rem;
54
- filter: drop-shadow(0 0.5rem 0.25rem hsl(var(--color-dark), 0.15));
55
- }
56
- .mg-popover[data-popper-placement^=top] > .mg-popover__arrow:before {
57
- border-top: 1rem solid hsl(var(--mg-popover-background-color));
58
- }
59
- .mg-popover[data-popper-placement^=bottom] > .mg-popover__arrow {
60
- top: 0.1rem;
61
- filter: drop-shadow(0 -0.5rem 0.25rem hsl(var(--color-dark), 0.15));
62
- }
63
- .mg-popover[data-popper-placement^=bottom] > .mg-popover__arrow:before {
64
- border-bottom: 1rem solid hsl(var(--mg-popover-background-color));
65
- }
66
- .mg-popover[data-popper-placement^=left] > .mg-popover__arrow, .mg-popover[data-popper-placement^=right] > .mg-popover__arrow {
67
- width: 1rem;
68
- }
69
- .mg-popover[data-popper-placement^=left] > .mg-popover__arrow:before, .mg-popover[data-popper-placement^=right] > .mg-popover__arrow:before {
70
- top: calc(var(--mg-card-border-radius) + 1rem);
71
- border-top: calc(3rem / 2) solid transparent;
72
- border-bottom: calc(3rem / 2) solid transparent;
73
- }
74
- .mg-popover[data-popper-placement^=left] > .mg-popover__arrow {
75
- right: 0.1rem;
76
- filter: drop-shadow(0.5rem 0 0.25rem hsl(var(--color-dark), 0.15));
77
- }
78
- .mg-popover[data-popper-placement^=left] > .mg-popover__arrow:before {
79
- border-left: 1rem solid hsl(var(--mg-popover-background-color));
80
- }
81
- .mg-popover[data-popper-placement^=right] > .mg-popover__arrow {
82
- left: 0.1rem;
83
- filter: drop-shadow(-0.5rem 0 0.25rem hsl(var(--color-dark), 0.15));
84
- }
85
- .mg-popover[data-popper-placement^=right] > .mg-popover__arrow:before {
86
- border-right: 1rem solid hsl(var(--mg-popover-background-color));
87
- }
88
- .mg-popover[data-popper-placement^=left-start], .mg-popover[data-popper-placement^=left-end], .mg-popover[data-popper-placement^=right-start], .mg-popover[data-popper-placement^=right-end] {
89
- padding: 0 1rem;
90
- }
91
- .mg-popover[data-popper-placement^=left-start] > .mg-popover__arrow, .mg-popover[data-popper-placement^=left-end] > .mg-popover__arrow, .mg-popover[data-popper-placement^=right-start] > .mg-popover__arrow, .mg-popover[data-popper-placement^=right-end] > .mg-popover__arrow {
92
- height: calc(3rem + 2 * var(--mg-card-border-radius));
93
- }
94
- .mg-popover[data-popper-placement^=left-start] > .mg-popover__arrow:before, .mg-popover[data-popper-placement^=left-end] > .mg-popover__arrow:before, .mg-popover[data-popper-placement^=right-start] > .mg-popover__arrow:before, .mg-popover[data-popper-placement^=right-end] > .mg-popover__arrow:before {
95
- top: var(--mg-card-border-radius);
96
- }
97
- .mg-popover__title ::slotted([slot=title]) {
98
- margin: 0 0 1rem !important;
99
- font-size: var(--mg-popover-title-font-size) !important;
100
- font-weight: 600;
101
- }
102
- .mg-popover--arrow-hide.mg-popover[data-popper-placement^=top] {
103
- padding-bottom: 0;
104
- }
105
- .mg-popover--arrow-hide.mg-popover[data-popper-placement^=bottom] {
106
- padding-top: 0;
107
- }
108
- .mg-popover--arrow-hide.mg-popover[data-popper-placement$=end], .mg-popover--arrow-hide.mg-popover[data-popper-placement^=left] {
109
- padding-right: 0;
110
- }
111
- .mg-popover--arrow-hide.mg-popover[data-popper-placement$=start], .mg-popover--arrow-hide.mg-popover[data-popper-placement^=right] {
112
- padding-left: 0;
113
- }
114
- .mg-popover ::slotted(*) {
115
- --mg-card-border: var(--mg-card-border-default);
116
- --mg-card-padding: var(--mg-card-padding-default);
117
- --mg-card-border-radius: var(--mg-card-border-radius-default);
118
- --mg-card-background: var(--mg-card-background-default);
119
- --mg-card-box-shadow: var(--mg-card-box-shadow-default);
120
- --mg-card-max-width: unset;
121
- --mg-card-min-width: unset;
122
11
  }