@mgdis/mg-components 5.18.0 → 5.19.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 (327) hide show
  1. package/dist/cjs/{mg-menu.conf-43aacf30.js → components.utils-dc9c8a53.js} +160 -7
  2. package/dist/cjs/components.utils-dc9c8a53.js.map +1 -0
  3. package/dist/cjs/index-c042e24b.js +18 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/mg-action-more_34.cjs.entry.js +313 -441
  6. package/dist/cjs/mg-action-more_34.cjs.entry.js.map +1 -1
  7. package/dist/cjs/mg-components.cjs.js +1 -1
  8. package/dist/cjs/mg-item-more.cjs.entry.js +5 -5
  9. package/dist/cjs/mg-item-more.cjs.entry.js.map +1 -1
  10. package/dist/collection/components/atoms/mg-badge/mg-badge.js +9 -9
  11. package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -1
  12. package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js +5 -5
  13. package/dist/collection/components/atoms/mg-badge/test/mg-badge.spec.js.map +1 -1
  14. package/dist/collection/components/atoms/mg-button/mg-button.js +12 -12
  15. package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
  16. package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js +4 -4
  17. package/dist/collection/components/atoms/mg-button/test/mg-button.e2e.js.map +1 -1
  18. package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js +3 -3
  19. package/dist/collection/components/atoms/mg-button/test/mg-button.spec.js.map +1 -1
  20. package/dist/collection/components/atoms/mg-card/mg-card.js +9 -9
  21. package/dist/collection/components/atoms/mg-card/mg-card.js.map +1 -1
  22. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +3 -3
  23. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js.map +1 -1
  24. package/dist/collection/components/atoms/mg-divider/mg-divider.js +4 -4
  25. package/dist/collection/components/atoms/mg-divider/mg-divider.js.map +1 -1
  26. package/dist/collection/components/atoms/mg-icon/mg-icon.js +13 -15
  27. package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +1 -1
  28. package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js +4 -4
  29. package/dist/collection/components/atoms/mg-icon/test/mg-icon.spec.js.map +1 -1
  30. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +5 -4
  31. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js.map +1 -1
  32. package/dist/collection/components/atoms/mg-tag/mg-tag.js +9 -9
  33. package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -1
  34. package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.playwright.js +23 -0
  35. package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.playwright.js.map +1 -0
  36. package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js +5 -5
  37. package/dist/collection/components/atoms/mg-tag/test/mg-tag.spec.js.map +1 -1
  38. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +2 -2
  39. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +1 -1
  40. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +6 -6
  41. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
  42. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js +1 -1
  43. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.e2e.js.map +1 -1
  44. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js +1 -1
  45. package/dist/collection/components/atoms/mg-tooltip/test/mg-tooltip.spec.js.map +1 -1
  46. package/dist/collection/components/molecules/inputs/MgInput.js +12 -11
  47. package/dist/collection/components/molecules/inputs/MgInput.js.map +1 -1
  48. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js +4 -4
  49. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js.map +1 -1
  50. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +2 -2
  51. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -1
  52. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js.map +1 -1
  53. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +20 -23
  54. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -1
  55. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js +21 -27
  56. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.e2e.playwright.js.map +1 -1
  57. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js +4 -5
  58. package/dist/collection/components/molecules/inputs/mg-input-checkbox/test/mg-input-checkbox.spec.js.map +1 -1
  59. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +6 -6
  60. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -1
  61. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +7 -7
  62. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -1
  63. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +6 -6
  64. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -1
  65. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +6 -6
  66. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +1 -1
  67. package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js +1 -1
  68. package/dist/collection/components/molecules/inputs/mg-input-radio/test/mg-input-radio.e2e.js.map +1 -1
  69. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +6 -6
  70. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -1
  71. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.conf.js +5 -0
  72. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.conf.js.map +1 -0
  73. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +58 -14
  74. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -1
  75. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.js +147 -0
  76. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.js.map +1 -0
  77. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js +12 -2
  78. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.spec.js.map +1 -1
  79. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +11 -11
  80. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -1
  81. package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js +2 -2
  82. package/dist/collection/components/molecules/inputs/mg-input-textarea/test/mg-input-textarea.spec.js.map +1 -1
  83. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +9 -9
  84. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -1
  85. package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js +2 -2
  86. package/dist/collection/components/molecules/inputs/mg-input-toggle/test/mg-input-toggle.spec.js.map +1 -1
  87. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +2 -2
  88. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +1 -1
  89. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +8 -9
  90. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +1 -1
  91. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +6 -6
  92. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
  93. package/dist/collection/components/molecules/mg-details/mg-details.js +5 -4
  94. package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -1
  95. package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js +1 -1
  96. package/dist/collection/components/molecules/mg-details/test/mg-details.spec.js.map +1 -1
  97. package/dist/collection/components/molecules/mg-form/mg-form.js +4 -4
  98. package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -1
  99. package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js +4 -4
  100. package/dist/collection/components/molecules/mg-form/test/mg-form.spec.js.map +1 -1
  101. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +7 -7
  102. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -1
  103. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +5 -4
  104. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js.map +1 -1
  105. package/dist/collection/components/molecules/mg-message/mg-message.js +8 -8
  106. package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -1
  107. package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js +11 -11
  108. package/dist/collection/components/molecules/mg-message/test/mg-message.spec.js.map +1 -1
  109. package/dist/collection/components/molecules/mg-modal/mg-modal.js +8 -8
  110. package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -1
  111. package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js +7 -7
  112. package/dist/collection/components/molecules/mg-modal/test/mg-modal.e2e.playwright.js.map +1 -1
  113. package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js +3 -3
  114. package/dist/collection/components/molecules/mg-modal/test/mg-modal.firefox.e2e.playwright.js.map +1 -1
  115. package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js +1 -1
  116. package/dist/collection/components/molecules/mg-modal/test/mg-modal.spec.js.map +1 -1
  117. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +3 -3
  118. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -1
  119. package/dist/collection/components/molecules/mg-panel/mg-panel.js +9 -9
  120. package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -1
  121. package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js +2 -2
  122. package/dist/collection/components/molecules/mg-panel/test/mg-panel.e2e.playwright.js.map +1 -1
  123. package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js +8 -8
  124. package/dist/collection/components/molecules/mg-panel/test/mg-panel.spec.js.map +1 -1
  125. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +4 -4
  126. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +1 -1
  127. package/dist/collection/components/molecules/mg-popover/mg-popover.js +2 -2
  128. package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
  129. package/dist/collection/components/molecules/mg-popover/test/{mg-popover.e2e.js → mg-popover.e2e.playwright.js} +46 -65
  130. package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.playwright.js.map +1 -0
  131. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +5 -6
  132. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js.map +1 -1
  133. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +34 -34
  134. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -1
  135. package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js +13 -13
  136. package/dist/collection/components/molecules/mg-tabs/test/mg-tabs.spec.js.map +1 -1
  137. package/dist/collection/locales/en/messages.json +3 -3
  138. package/dist/collection/locales/fr/messages.json +3 -3
  139. package/dist/collection/utils/components.utils.js +10 -0
  140. package/dist/collection/utils/components.utils.js.map +1 -1
  141. package/dist/collection/utils/components.utils.spec.js +14 -1
  142. package/dist/collection/utils/components.utils.spec.js.map +1 -1
  143. package/dist/collection/variables.css +1 -275
  144. package/dist/components/MgInput.js +17 -16
  145. package/dist/components/MgInput.js.map +1 -1
  146. package/dist/components/components.utils.js +11 -1
  147. package/dist/components/components.utils.js.map +1 -1
  148. package/dist/components/index2.js +6 -6
  149. package/dist/components/mg-action-more.js +5 -5
  150. package/dist/components/mg-action-more.js.map +1 -1
  151. package/dist/components/mg-badge2.js +8 -8
  152. package/dist/components/mg-badge2.js.map +1 -1
  153. package/dist/components/mg-button2.js +11 -11
  154. package/dist/components/mg-button2.js.map +1 -1
  155. package/dist/components/mg-card2.js +8 -8
  156. package/dist/components/mg-card2.js.map +1 -1
  157. package/dist/components/mg-character-left2.js +1 -1
  158. package/dist/components/mg-character-left2.js.map +1 -1
  159. package/dist/components/mg-details.js +4 -3
  160. package/dist/components/mg-details.js.map +1 -1
  161. package/dist/components/mg-divider.js +3 -3
  162. package/dist/components/mg-divider.js.map +1 -1
  163. package/dist/components/mg-form.js +3 -3
  164. package/dist/components/mg-form.js.map +1 -1
  165. package/dist/components/mg-icon2.js +12 -14
  166. package/dist/components/mg-icon2.js.map +1 -1
  167. package/dist/components/mg-illustrated-message.js +7 -7
  168. package/dist/components/mg-illustrated-message.js.map +1 -1
  169. package/dist/components/mg-input-checkbox-paginated2.js +8 -8
  170. package/dist/components/mg-input-checkbox-paginated2.js.map +1 -1
  171. package/dist/components/mg-input-checkbox.js +19 -22
  172. package/dist/components/mg-input-checkbox.js.map +1 -1
  173. package/dist/components/mg-input-date.js +5 -5
  174. package/dist/components/mg-input-date.js.map +1 -1
  175. package/dist/components/mg-input-numeric.js +6 -6
  176. package/dist/components/mg-input-numeric.js.map +1 -1
  177. package/dist/components/mg-input-password.js +5 -5
  178. package/dist/components/mg-input-password.js.map +1 -1
  179. package/dist/components/mg-input-radio.js +5 -5
  180. package/dist/components/mg-input-radio.js.map +1 -1
  181. package/dist/components/mg-input-select2.js +5 -5
  182. package/dist/components/mg-input-select2.js.map +1 -1
  183. package/dist/components/mg-input-text2.js +29 -12
  184. package/dist/components/mg-input-text2.js.map +1 -1
  185. package/dist/components/mg-input-textarea.js +11 -11
  186. package/dist/components/mg-input-textarea.js.map +1 -1
  187. package/dist/components/mg-input-title2.js +4 -3
  188. package/dist/components/mg-input-title2.js.map +1 -1
  189. package/dist/components/mg-input-toggle.js +9 -9
  190. package/dist/components/mg-input-toggle.js.map +1 -1
  191. package/dist/components/mg-item-more.js +4 -3
  192. package/dist/components/mg-item-more.js.map +1 -1
  193. package/dist/components/mg-menu-item2.js +7 -8
  194. package/dist/components/mg-menu-item2.js.map +1 -1
  195. package/dist/components/mg-menu2.js +1 -1
  196. package/dist/components/mg-menu2.js.map +1 -1
  197. package/dist/components/mg-message.js +7 -7
  198. package/dist/components/mg-message.js.map +1 -1
  199. package/dist/components/mg-modal.js +7 -7
  200. package/dist/components/mg-modal.js.map +1 -1
  201. package/dist/components/mg-pagination2.js +2 -2
  202. package/dist/components/mg-pagination2.js.map +1 -1
  203. package/dist/components/mg-panel.js +8 -8
  204. package/dist/components/mg-panel.js.map +1 -1
  205. package/dist/components/mg-popover-content2.js +4 -4
  206. package/dist/components/mg-popover-content2.js.map +1 -1
  207. package/dist/components/mg-popover2.js.map +1 -1
  208. package/dist/components/mg-skip-links.js +4 -5
  209. package/dist/components/mg-skip-links.js.map +1 -1
  210. package/dist/components/mg-tabs.js +33 -33
  211. package/dist/components/mg-tabs.js.map +1 -1
  212. package/dist/components/mg-tag.js +8 -8
  213. package/dist/components/mg-tag.js.map +1 -1
  214. package/dist/components/mg-tooltip-content2.js +1 -1
  215. package/dist/components/mg-tooltip-content2.js.map +1 -1
  216. package/dist/components/mg-tooltip2.js +4 -4
  217. package/dist/components/mg-tooltip2.js.map +1 -1
  218. package/dist/esm/{mg-menu.conf-012fc9b4.js → components.utils-0f76010d.js} +153 -8
  219. package/dist/esm/components.utils-0f76010d.js.map +1 -0
  220. package/dist/esm/index-ce01e63b.js +18 -1
  221. package/dist/esm/loader.js +1 -1
  222. package/dist/esm/mg-action-more_34.entry.js +247 -375
  223. package/dist/esm/mg-action-more_34.entry.js.map +1 -1
  224. package/dist/esm/mg-components.js +1 -1
  225. package/dist/esm/mg-item-more.entry.js +4 -4
  226. package/dist/esm/mg-item-more.entry.js.map +1 -1
  227. package/dist/mg-components/locales/en/messages.json +3 -3
  228. package/dist/mg-components/locales/fr/messages.json +3 -3
  229. package/dist/mg-components/mg-components.css +1 -1
  230. package/dist/mg-components/mg-components.esm.js +1 -1
  231. package/dist/mg-components/mg-components.esm.js.map +1 -1
  232. package/dist/mg-components/p-768fc594.entry.js +2 -0
  233. package/dist/mg-components/p-768fc594.entry.js.map +1 -0
  234. package/dist/mg-components/p-c9e2c669.js +2 -0
  235. package/dist/mg-components/p-c9e2c669.js.map +1 -0
  236. package/dist/mg-components/p-d2d6afec.entry.js +2 -0
  237. package/dist/mg-components/p-d2d6afec.entry.js.map +1 -0
  238. package/dist/mg-components/variables.css +1 -275
  239. package/dist/types/components/atoms/mg-card/mg-card.d.ts +1 -1
  240. package/dist/types/components/atoms/mg-input-title/mg-input-title.d.ts +1 -1
  241. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +2 -2
  242. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.d.ts +1 -1
  243. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.d.ts +4 -4
  244. package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.conf.d.ts +12 -0
  245. package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.d.ts +13 -1
  246. package/dist/types/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.playwright.d.ts +1 -0
  247. package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +2 -1
  248. package/dist/types/components/molecules/mg-panel/mg-panel.d.ts +2 -2
  249. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +1 -1
  250. package/dist/types/components/molecules/mg-popover/test/mg-popover.e2e.playwright.d.ts +1 -0
  251. package/dist/types/components/molecules/mg-tabs/mg-tabs.d.ts +6 -5
  252. package/dist/types/components.d.ts +12 -2
  253. package/dist/types/utils/components.utils.d.ts +6 -0
  254. package/package.json +17 -18
  255. package/readme.md +0 -31
  256. package/dist/cjs/mg-menu.conf-43aacf30.js.map +0 -1
  257. package/dist/collection/components/atoms/mg-badge/mg-badge.css +0 -116
  258. package/dist/collection/components/atoms/mg-button/mg-button.css +0 -182
  259. package/dist/collection/components/atoms/mg-card/mg-card.css +0 -75
  260. package/dist/collection/components/atoms/mg-character-left/mg-character-left.css +0 -3
  261. package/dist/collection/components/atoms/mg-divider/mg-divider.css +0 -9
  262. package/dist/collection/components/atoms/mg-icon/mg-icon.css +0 -138
  263. package/dist/collection/components/atoms/mg-input-title/mg-input-title.css +0 -12
  264. package/dist/collection/components/atoms/mg-tag/mg-tag.css +0 -131
  265. package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js +0 -37
  266. package/dist/collection/components/atoms/mg-tag/test/mg-tag.e2e.js.map +0 -1
  267. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.css +0 -43
  268. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.css +0 -3
  269. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.css +0 -268
  270. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.css +0 -211
  271. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.css +0 -257
  272. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.css +0 -254
  273. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.css +0 -179
  274. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.css +0 -264
  275. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.css +0 -304
  276. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js +0 -171
  277. package/dist/collection/components/molecules/inputs/mg-input-text/test/mg-input-text.e2e.js.map +0 -1
  278. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.css +0 -303
  279. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.css +0 -233
  280. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.css +0 -37
  281. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.css +0 -377
  282. package/dist/collection/components/molecules/mg-action-more/mg-action-more.css +0 -39
  283. package/dist/collection/components/molecules/mg-details/mg-details.css +0 -64
  284. package/dist/collection/components/molecules/mg-form/mg-form.css +0 -19
  285. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.css +0 -45
  286. package/dist/collection/components/molecules/mg-item-more/mg-item-more.css +0 -30
  287. package/dist/collection/components/molecules/mg-message/mg-message.css +0 -82
  288. package/dist/collection/components/molecules/mg-modal/mg-modal.css +0 -67
  289. package/dist/collection/components/molecules/mg-pagination/mg-pagination.css +0 -47
  290. package/dist/collection/components/molecules/mg-panel/mg-panel.css +0 -64
  291. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.css +0 -135
  292. package/dist/collection/components/molecules/mg-popover/mg-popover.css +0 -11
  293. package/dist/collection/components/molecules/mg-popover/test/mg-popover.e2e.js.map +0 -1
  294. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.css +0 -28
  295. package/dist/collection/components/molecules/mg-tabs/mg-tabs.css +0 -99
  296. package/dist/collection/styles/a11y.scss +0 -36
  297. package/dist/collection/styles/fonts.scss +0 -21
  298. package/dist/collection/styles/form.scss +0 -3
  299. package/dist/collection/styles/global.scss +0 -80
  300. package/dist/collection/styles/layout.scss +0 -29
  301. package/dist/collection/styles/main.scss +0 -23
  302. package/dist/collection/styles/mg-icon-animation.scss +0 -6
  303. package/dist/collection/styles/navigation-button.scss +0 -77
  304. package/dist/collection/styles/reset-mg-card-slotted-variables.scss +0 -11
  305. package/dist/collection/styles/typography.scss +0 -82
  306. package/dist/collection/styles/utilities.scss +0 -21
  307. package/dist/collection/test/typography.e2e.playwright.js +0 -12
  308. package/dist/collection/test/typography.e2e.playwright.js.map +0 -1
  309. package/dist/esm/mg-menu.conf-012fc9b4.js.map +0 -1
  310. package/dist/mg-components/p-1d7d6fa0.js +0 -2
  311. package/dist/mg-components/p-1d7d6fa0.js.map +0 -1
  312. package/dist/mg-components/p-9257e8f1.entry.js +0 -2
  313. package/dist/mg-components/p-9257e8f1.entry.js.map +0 -1
  314. package/dist/mg-components/p-ff3ca349.entry.js +0 -2
  315. package/dist/mg-components/p-ff3ca349.entry.js.map +0 -1
  316. package/dist/mg-components/styles/a11y.scss +0 -36
  317. package/dist/mg-components/styles/fonts.scss +0 -21
  318. package/dist/mg-components/styles/form.scss +0 -3
  319. package/dist/mg-components/styles/global.scss +0 -80
  320. package/dist/mg-components/styles/layout.scss +0 -29
  321. package/dist/mg-components/styles/main.scss +0 -23
  322. package/dist/mg-components/styles/mg-icon-animation.scss +0 -6
  323. package/dist/mg-components/styles/navigation-button.scss +0 -77
  324. package/dist/mg-components/styles/reset-mg-card-slotted-variables.scss +0 -11
  325. package/dist/mg-components/styles/typography.scss +0 -82
  326. package/dist/mg-components/styles/utilities.scss +0 -21
  327. /package/dist/types/{test/typography.e2e.playwright.d.ts → components/atoms/mg-tag/test/mg-tag.e2e.playwright.d.ts} +0 -0
@@ -103,13 +103,13 @@ describe('mg-tabs', () => {
103
103
  expect(err.message).toMatch('<mg-tabs> Must have slots counts equal to tabs count.');
104
104
  }
105
105
  });
106
- test.each([0, 3])('should trown an error with invalid tabItem props', async (activeTab) => {
106
+ test.each([0, 3, null, { test: 'fail' }, 'string'])('should trown an error with invalid range for "activeTab" props', async (activeTab) => {
107
107
  expect.assertions(1);
108
108
  try {
109
109
  await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'], activeTab }, createSlots());
110
110
  }
111
111
  catch (err) {
112
- expect(err.message).toMatch('<mg-tabs> prop "activeTab" must be between 1 and tabs length.');
112
+ expect(err.message).toMatch(`<mg-tabs> prop "activeTab" must be a number between 1 and 2 and new value must be "activable".`);
113
113
  }
114
114
  });
115
115
  test('should trown an error with invalid tabItem props', async () => {
@@ -127,22 +127,22 @@ describe('mg-tabs', () => {
127
127
  const page = await getPage({ label: 'Sample label', items, identifier: 'id' }, createSlots());
128
128
  expect(page.root).toMatchSnapshot();
129
129
  const element = page.doc.querySelector('mg-tabs');
130
- let activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
130
+ let activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
131
131
  expect(activeTab).toHaveProperty('id', 'id-1');
132
132
  jest.spyOn(page.rootInstance.activeTabChange, 'emit');
133
133
  const nextTab = element.shadowRoot.getElementById('id-2');
134
134
  nextTab.dispatchEvent(new MouseEvent('click', { bubbles: true }));
135
135
  await page.waitForChanges();
136
- expect(page.root).toMatchSnapshot();
137
136
  expect(page.rootInstance.activeTabChange.emit).toHaveBeenCalledWith(2);
138
- activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
137
+ expect(page.root).toMatchSnapshot();
138
+ activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
139
139
  expect(activeTab).toHaveProperty('id', 'id-2');
140
140
  });
141
141
  test.each([Status.HIDDEN, Status.DISABLED])('should prevent click on tab with status %s', async (status) => {
142
142
  const page = await getPage({ label: 'Sample label', items: [{ label: 'Batman' }, { label: 'Joker', status }], identifier: 'id' }, createSlots());
143
143
  expect(page.root).toMatchSnapshot();
144
144
  const element = page.doc.querySelector('mg-tabs');
145
- let activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
145
+ let activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
146
146
  expect(activeTab).toHaveProperty('id', 'id-1');
147
147
  jest.spyOn(page.rootInstance.activeTabChange, 'emit');
148
148
  const nextTab = element.shadowRoot.getElementById('id-2');
@@ -150,7 +150,7 @@ describe('mg-tabs', () => {
150
150
  await page.waitForChanges();
151
151
  expect(page.root).toMatchSnapshot();
152
152
  expect(page.rootInstance.activeTabChange.emit).not.toHaveBeenCalled();
153
- activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
153
+ activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
154
154
  expect(activeTab).toHaveProperty('id', 'id-1');
155
155
  });
156
156
  test('should go to next tab on keyboard event', async () => {
@@ -163,7 +163,7 @@ describe('mg-tabs', () => {
163
163
  buttons.forEach(button => {
164
164
  button.focus = jest.fn();
165
165
  });
166
- let activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
166
+ let activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
167
167
  activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));
168
168
  await page.waitForChanges();
169
169
  expect(page.root).toMatchSnapshot();
@@ -180,7 +180,7 @@ describe('mg-tabs', () => {
180
180
  element.shadowRoot.querySelector(`[data-index="${action.from + 1}"]`).dispatchEvent(new KeyboardEvent('keydown', { key: action.key }));
181
181
  await page.waitForChanges();
182
182
  expect(page.root).toMatchSnapshot();
183
- activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
183
+ activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
184
184
  expect(activeTab).toHaveProperty('id', 'id-1');
185
185
  expect(buttons[action.to].focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);
186
186
  expect(activeTabChangeSpy).not.toHaveBeenCalled();
@@ -210,7 +210,7 @@ describe('mg-tabs', () => {
210
210
  buttons.forEach(button => {
211
211
  button.focus = jest.fn();
212
212
  });
213
- let activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
213
+ let activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
214
214
  activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));
215
215
  await page.waitForChanges();
216
216
  expect(page.root).toMatchSnapshot();
@@ -234,7 +234,7 @@ describe('mg-tabs', () => {
234
234
  element.shadowRoot.querySelector(`[data-index="${action.from + 1}"]`).dispatchEvent(new KeyboardEvent('keydown', { key: action.key }));
235
235
  await page.waitForChanges();
236
236
  expect(page.root).toMatchSnapshot();
237
- activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
237
+ activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
238
238
  expect(activeTab).toHaveProperty('id', 'id-1');
239
239
  if (action.to === 2) {
240
240
  const button = buttons[action.key === key.next ? action.from - 1 : action.from + 1];
@@ -292,7 +292,7 @@ describe('mg-tabs', () => {
292
292
  expect(page.root).toMatchSnapshot();
293
293
  const element = page.doc.querySelector('mg-tabs');
294
294
  const spys = Array.from(element.shadowRoot.querySelectorAll('button')).map(button => jest.spyOn(button, 'setAttribute'));
295
- const activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
295
+ const activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
296
296
  activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));
297
297
  await page.waitForChanges();
298
298
  expect(page.root).toMatchSnapshot();
@@ -312,7 +312,7 @@ describe('mg-tabs', () => {
312
312
  expect(page.root).toMatchSnapshot();
313
313
  const element = page.doc.querySelector('mg-tabs');
314
314
  const spys = Array.from(element.shadowRoot.querySelectorAll('button')).map(button => jest.spyOn(button, 'setAttribute'));
315
- const activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');
315
+ const activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');
316
316
  activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));
317
317
  await page.waitForChanges();
318
318
  expect(page.root).toMatchSnapshot();
@@ -1 +1 @@
1
- {"version":3,"file":"mg-tabs.spec.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-tabs/test/mg-tabs.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { MgTabs } from '../mg-tabs';\nimport { sizes, Status } from '../mg-tabs.conf';\n\nconst getPage = (args, slots?) =>\n newSpecPage({\n components: [MgTabs],\n template: () => <mg-tabs {...args}>{slots && slots.map(content => content && content())}</mg-tabs>,\n });\n\nconst createSlots = (slotNumber = 2) => {\n const slots = [];\n for (let i = 1; slotNumber > slots.length; i++) {\n slots.push(() => <div slot={`tab_content-${i}`}>{`Content ${i}`}</div>);\n }\n return slots;\n};\n\nconst badge = { value: 2, label: 'messages' };\n\nconst key = { next: 'ArrowRight', prev: 'ArrowLeft' };\n\ndescribe('mg-tabs', () => {\n describe.each(sizes)('template', size => {\n test.each([\n [['Batman', 'Joker', 'Bane']],\n [\n [\n { label: 'Batman', icon: 'check', badge },\n { label: 'Joker', icon: 'cross', badge: { ...badge, role: 'information' }, status: Status.DISABLED },\n { label: 'Bane', icon: 'trash', badge, status: Status.HIDDEN },\n ],\n ],\n ])('render', async items => {\n const { root } = await getPage({ label: 'Sample label', items, identifier: 'identifier', size }, createSlots(3));\n expect(root).toMatchSnapshot();\n });\n\n test('display only slots with name \"tab_content-*\"', async () => {\n const { root } = await getPage({ label: 'Sample label', items: ['Batman', 'Joker'], identifier: 'identifier' }, [...createSlots(), () => <div>dummy content</div>]);\n expect(root).toMatchSnapshot();\n });\n\n test.each([\n {\n items: ['Tab 1', 'Tab 2', 'Tab 3'],\n activeTab: 2,\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker', status: Status.ACTIVE }, { label: 'Bane' }],\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker' }, { label: 'Bane' }],\n activeTab: 2,\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker', status: Status.ACTIVE }, { label: 'Bane' }],\n activeTab: 2,\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker', status: Status.ACTIVE }, { label: 'Bane' }],\n activeTab: 3,\n },\n ])(`display ${size} tabs with activeProps set by props`, async props => {\n const { root } = await getPage({ label: 'Sample label', identifier: 'identifier', ...props }, createSlots(3));\n expect(root).toMatchSnapshot();\n });\n });\n\n describe('errors', () => {\n test.each(['', ' ', undefined])('Should throw error with invalid label property: %s', async label => {\n expect.assertions(1);\n try {\n await getPage({ label, items: ['Batman', 'Joker'] }, createSlots());\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> prop \"label\" is required.');\n }\n });\n\n test.each([\n [undefined, 'batman'],\n [['batman', { batman: 'batman' }]],\n [[true, false]],\n [[1, 2, 3]],\n [[true, 1, 'batman']],\n [[{ label: 'batman', icon: 'batman' }, { batman: 'batman' }]],\n [[{ label: undefined, icon: 'batman' }, { label: 'batman' }]],\n ])('Should throw error with invalid items property', async items => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items }, createSlots());\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> prop \"items\" is required and all items must be the same type: TabItem.');\n }\n });\n\n test.each([[[]], [createSlots(1)], [[undefined, createSlots(2)[1]], [createSlots(3)]]])('should trown an error with invalid slots', async slots => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'] }, slots);\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> Must have slots counts equal to tabs count.');\n }\n });\n\n test.each([0, 3])('should trown an error with invalid tabItem props', async activeTab => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'], activeTab }, createSlots());\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> prop \"activeTab\" must be between 1 and tabs length.');\n }\n });\n\n test('should trown an error with invalid tabItem props', async () => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'], size: 'batman' }, createSlots());\n } catch (err) {\n expect(err.message).toMatch(`<mg-tabs> prop \"size\" must be one of: ${sizes.join(', ')}`);\n }\n });\n });\n\n describe('navigation', () => {\n test.each([[['batman', 'joker']], [[{ label: 'Batman' }, { label: 'Joker' }]]])('should go to next tab on click event', async items => {\n const page = await getPage({ label: 'Sample label', items, identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n let activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n\n jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n\n const nextTab = element.shadowRoot.getElementById('id-2');\n nextTab.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n expect(page.rootInstance.activeTabChange.emit).toHaveBeenCalledWith(2);\n\n activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-2');\n });\n\n test.each([Status.HIDDEN, Status.DISABLED])('should prevent click on tab with status %s', async status => {\n const page = await getPage({ label: 'Sample label', items: [{ label: 'Batman' }, { label: 'Joker', status }], identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n let activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n\n jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n\n const nextTab = element.shadowRoot.getElementById('id-2');\n nextTab.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n expect(page.rootInstance.activeTabChange.emit).not.toHaveBeenCalled();\n\n activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n });\n\n test('should go to next tab on keyboard event', async () => {\n const page = await getPage({ label: 'Sample label', items: ['batman', 'joker'], identifier: 'id' }, createSlots());\n const activeTabChangeSpy = jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const buttons = Array.from(element.shadowRoot.querySelectorAll('button'));\n buttons.forEach(button => {\n button.focus = jest.fn();\n });\n\n let activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n for await (const action of [\n { key: key.next, from: 0, to: 1 },\n { key: key.next, from: 1, to: 0 },\n { key: key.prev, from: 0, to: 1 },\n { key: key.prev, from: 1, to: 0 },\n ]) {\n element.shadowRoot.querySelector(`[data-index=\"${action.from + 1}\"]`).dispatchEvent(new KeyboardEvent('keydown', { key: action.key }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n expect(buttons[action.to].focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);\n expect(activeTabChangeSpy).not.toHaveBeenCalled();\n }\n });\n\n test.each([Status.HIDDEN, Status.DISABLED])('should go to next VISIBLE tab on keyboard event', async status => {\n const page = await getPage({ label: 'Sample label', items: [{ label: 'Batman' }, { label: 'Joker' }, { label: 'Bane', status }], identifier: 'id' }, createSlots(3));\n const activeTabChangeSpy = jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const buttons = Array.from(element.shadowRoot.querySelectorAll('button'));\n buttons.forEach(button => {\n button.focus = jest.fn();\n });\n\n let activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n await page.waitForChanges();\n\n for await (const actions of [\n [\n { key: key.next, from: 0, to: 1 },\n { key: key.next, from: 1, to: 2 },\n ],\n [{ key: key.prev, from: 0, to: 2 }],\n ]) {\n for await (const action of actions) {\n element.shadowRoot.querySelector(`[data-index=\"${action.from + 1}\"]`).dispatchEvent(new KeyboardEvent('keydown', { key: action.key }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n if (action.to === 2) {\n const button = buttons[action.key === key.next ? action.from - 1 : action.from + 1];\n if (status === Status.HIDDEN) {\n expect(buttons[action.to].focus).not.toHaveBeenCalled();\n expect(button.focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);\n } else {\n expect(buttons[action.to].focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);\n if (action.key === key.next) {\n expect(button.focus).not.toHaveBeenCalled();\n } else {\n expect(button.focus).toHaveBeenCalledTimes(1);\n }\n }\n } else {\n expect(buttons[action.to].focus).toHaveBeenCalledTimes(1);\n }\n expect(activeTabChangeSpy).not.toHaveBeenCalled();\n }\n }\n });\n\n test('should manage Tab key', async () => {\n const page = await getPage({ label: 'Sample label', items: ['batman', 'joker'], identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const spys = Array.from(element.shadowRoot.querySelectorAll('button')).map(button => jest.spyOn(button, 'setAttribute'));\n\n const activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab.dispatchEvent(new KeyboardEvent('keydown', { key: key.next }));\n await page.waitForChanges();\n\n activeTab.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));\n await page.waitForChanges();\n jest.runOnlyPendingTimers();\n\n expect(spys[0]).toHaveBeenCalledTimes(2);\n expect(spys[0]).toHaveBeenLastCalledWith('tabindex', '0');\n expect(spys[1]).toHaveBeenCalledTimes(2);\n expect(spys[1]).toHaveBeenLastCalledWith('tabindex', '-1');\n\n expect(page.root).toMatchSnapshot();\n });\n\n test('should manage mixed navigation', async () => {\n const page = await getPage({ label: 'Sample label', items: ['batman', 'joker'], identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const spys = Array.from(element.shadowRoot.querySelectorAll('button')).map(button => jest.spyOn(button, 'setAttribute'));\n\n const activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-tabs__navigation-button--active');\n\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab.dispatchEvent(new KeyboardEvent('keydown', { key: key.next }));\n await page.waitForChanges();\n\n document.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n await page.waitForChanges();\n jest.runOnlyPendingTimers();\n\n expect(spys[0]).toHaveBeenCalledTimes(2);\n expect(spys[0]).toHaveBeenLastCalledWith('tabindex', '0');\n expect(spys[1]).toHaveBeenCalledTimes(2);\n expect(spys[1]).toHaveBeenLastCalledWith('tabindex', '-1');\n\n expect(page.root).toMatchSnapshot();\n });\n });\n});\n"]}
1
+ {"version":3,"file":"mg-tabs.spec.js","sourceRoot":"","sources":["../../../../../src/components/molecules/mg-tabs/test/mg-tabs.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\nimport { newSpecPage } from '@stencil/core/testing';\nimport { MgTabs } from '../mg-tabs';\nimport { sizes, Status } from '../mg-tabs.conf';\n\nconst getPage = (args, slots?) =>\n newSpecPage({\n components: [MgTabs],\n template: () => <mg-tabs {...args}>{slots && slots.map(content => content && content())}</mg-tabs>,\n });\n\nconst createSlots = (slotNumber = 2) => {\n const slots = [];\n for (let i = 1; slotNumber > slots.length; i++) {\n slots.push(() => <div slot={`tab_content-${i}`}>{`Content ${i}`}</div>);\n }\n return slots;\n};\n\nconst badge = { value: 2, label: 'messages' };\n\nconst key = { next: 'ArrowRight', prev: 'ArrowLeft' };\n\ndescribe('mg-tabs', () => {\n describe.each(sizes)('template', size => {\n test.each([\n [['Batman', 'Joker', 'Bane']],\n [\n [\n { label: 'Batman', icon: 'check', badge },\n { label: 'Joker', icon: 'cross', badge: { ...badge, role: 'information' }, status: Status.DISABLED },\n { label: 'Bane', icon: 'trash', badge, status: Status.HIDDEN },\n ],\n ],\n ])('render', async items => {\n const { root } = await getPage({ label: 'Sample label', items, identifier: 'identifier', size }, createSlots(3));\n expect(root).toMatchSnapshot();\n });\n\n test('display only slots with name \"tab_content-*\"', async () => {\n const { root } = await getPage({ label: 'Sample label', items: ['Batman', 'Joker'], identifier: 'identifier' }, [...createSlots(), () => <div>dummy content</div>]);\n expect(root).toMatchSnapshot();\n });\n\n test.each([\n {\n items: ['Tab 1', 'Tab 2', 'Tab 3'],\n activeTab: 2,\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker', status: Status.ACTIVE }, { label: 'Bane' }],\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker' }, { label: 'Bane' }],\n activeTab: 2,\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker', status: Status.ACTIVE }, { label: 'Bane' }],\n activeTab: 2,\n },\n {\n items: [{ label: 'Batman' }, { label: 'Joker', status: Status.ACTIVE }, { label: 'Bane' }],\n activeTab: 3,\n },\n ])(`display ${size} tabs with activeProps set by props`, async props => {\n const { root } = await getPage({ label: 'Sample label', identifier: 'identifier', ...props }, createSlots(3));\n expect(root).toMatchSnapshot();\n });\n });\n\n describe('errors', () => {\n test.each(['', ' ', undefined])('Should throw error with invalid label property: %s', async label => {\n expect.assertions(1);\n try {\n await getPage({ label, items: ['Batman', 'Joker'] }, createSlots());\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> prop \"label\" is required.');\n }\n });\n\n test.each([\n [undefined, 'batman'],\n [['batman', { batman: 'batman' }]],\n [[true, false]],\n [[1, 2, 3]],\n [[true, 1, 'batman']],\n [[{ label: 'batman', icon: 'batman' }, { batman: 'batman' }]],\n [[{ label: undefined, icon: 'batman' }, { label: 'batman' }]],\n ])('Should throw error with invalid items property', async items => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items }, createSlots());\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> prop \"items\" is required and all items must be the same type: TabItem.');\n }\n });\n\n test.each([[[]], [createSlots(1)], [[undefined, createSlots(2)[1]], [createSlots(3)]]])('should trown an error with invalid slots', async slots => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'] }, slots);\n } catch (err) {\n expect(err.message).toMatch('<mg-tabs> Must have slots counts equal to tabs count.');\n }\n });\n\n test.each([0, 3, null, { test: 'fail' }, 'string'])('should trown an error with invalid range for \"activeTab\" props', async activeTab => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'], activeTab }, createSlots());\n } catch (err) {\n expect(err.message).toMatch(`<mg-tabs> prop \"activeTab\" must be a number between 1 and 2 and new value must be \"activable\".`);\n }\n });\n\n test('should trown an error with invalid tabItem props', async () => {\n expect.assertions(1);\n try {\n await getPage({ label: 'Sample label', items: ['Tab 1', 'Tab 2'], size: 'batman' }, createSlots());\n } catch (err) {\n expect(err.message).toMatch(`<mg-tabs> prop \"size\" must be one of: ${sizes.join(', ')}`);\n }\n });\n });\n\n describe('navigation', () => {\n test.each([[['batman', 'joker']], [[{ label: 'Batman' }, { label: 'Joker' }]]])('should go to next tab on click event', async items => {\n const page = await getPage({ label: 'Sample label', items, identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n let activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n\n jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n\n const nextTab = element.shadowRoot.getElementById('id-2');\n nextTab.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.rootInstance.activeTabChange.emit).toHaveBeenCalledWith(2);\n expect(page.root).toMatchSnapshot();\n\n activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-2');\n });\n\n test.each([Status.HIDDEN, Status.DISABLED])('should prevent click on tab with status %s', async status => {\n const page = await getPage({ label: 'Sample label', items: [{ label: 'Batman' }, { label: 'Joker', status }], identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n let activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n\n jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n\n const nextTab = element.shadowRoot.getElementById('id-2');\n nextTab.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n expect(page.rootInstance.activeTabChange.emit).not.toHaveBeenCalled();\n\n activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n });\n\n test('should go to next tab on keyboard event', async () => {\n const page = await getPage({ label: 'Sample label', items: ['batman', 'joker'], identifier: 'id' }, createSlots());\n const activeTabChangeSpy = jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const buttons = Array.from(element.shadowRoot.querySelectorAll('button'));\n buttons.forEach(button => {\n button.focus = jest.fn();\n });\n\n let activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n for await (const action of [\n { key: key.next, from: 0, to: 1 },\n { key: key.next, from: 1, to: 0 },\n { key: key.prev, from: 0, to: 1 },\n { key: key.prev, from: 1, to: 0 },\n ]) {\n element.shadowRoot.querySelector(`[data-index=\"${action.from + 1}\"]`).dispatchEvent(new KeyboardEvent('keydown', { key: action.key }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n expect(buttons[action.to].focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);\n expect(activeTabChangeSpy).not.toHaveBeenCalled();\n }\n });\n\n test.each([Status.HIDDEN, Status.DISABLED])('should go to next VISIBLE tab on keyboard event', async status => {\n const page = await getPage({ label: 'Sample label', items: [{ label: 'Batman' }, { label: 'Joker' }, { label: 'Bane', status }], identifier: 'id' }, createSlots(3));\n const activeTabChangeSpy = jest.spyOn(page.rootInstance.activeTabChange, 'emit');\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const buttons = Array.from(element.shadowRoot.querySelectorAll('button'));\n buttons.forEach(button => {\n button.focus = jest.fn();\n });\n\n let activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot();\n\n await page.waitForChanges();\n\n for await (const actions of [\n [\n { key: key.next, from: 0, to: 1 },\n { key: key.next, from: 1, to: 2 },\n ],\n [{ key: key.prev, from: 0, to: 2 }],\n ]) {\n for await (const action of actions) {\n element.shadowRoot.querySelector(`[data-index=\"${action.from + 1}\"]`).dispatchEvent(new KeyboardEvent('keydown', { key: action.key }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n expect(activeTab).toHaveProperty('id', 'id-1');\n if (action.to === 2) {\n const button = buttons[action.key === key.next ? action.from - 1 : action.from + 1];\n if (status === Status.HIDDEN) {\n expect(buttons[action.to].focus).not.toHaveBeenCalled();\n expect(button.focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);\n } else {\n expect(buttons[action.to].focus).toHaveBeenCalledTimes(action.key === key.next ? 1 : 2);\n if (action.key === key.next) {\n expect(button.focus).not.toHaveBeenCalled();\n } else {\n expect(button.focus).toHaveBeenCalledTimes(1);\n }\n }\n } else {\n expect(buttons[action.to].focus).toHaveBeenCalledTimes(1);\n }\n expect(activeTabChangeSpy).not.toHaveBeenCalled();\n }\n }\n });\n\n test('should manage Tab key', async () => {\n const page = await getPage({ label: 'Sample label', items: ['batman', 'joker'], identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const spys = Array.from(element.shadowRoot.querySelectorAll('button')).map(button => jest.spyOn(button, 'setAttribute'));\n\n const activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab.dispatchEvent(new KeyboardEvent('keydown', { key: key.next }));\n await page.waitForChanges();\n\n activeTab.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));\n await page.waitForChanges();\n jest.runOnlyPendingTimers();\n\n expect(spys[0]).toHaveBeenCalledTimes(2);\n expect(spys[0]).toHaveBeenLastCalledWith('tabindex', '0');\n expect(spys[1]).toHaveBeenCalledTimes(2);\n expect(spys[1]).toHaveBeenLastCalledWith('tabindex', '-1');\n\n expect(page.root).toMatchSnapshot();\n });\n\n test('should manage mixed navigation', async () => {\n const page = await getPage({ label: 'Sample label', items: ['batman', 'joker'], identifier: 'id' }, createSlots());\n expect(page.root).toMatchSnapshot();\n\n const element = page.doc.querySelector('mg-tabs');\n const spys = Array.from(element.shadowRoot.querySelectorAll('button')).map(button => jest.spyOn(button, 'setAttribute'));\n\n const activeTab: HTMLElement = element.shadowRoot.querySelector('.mg-c-tabs__navigation-button--active');\n\n activeTab.dispatchEvent(new CustomEvent('focus', { bubbles: true }));\n await page.waitForChanges();\n\n expect(page.root).toMatchSnapshot();\n\n activeTab.dispatchEvent(new KeyboardEvent('keydown', { key: key.next }));\n await page.waitForChanges();\n\n document.dispatchEvent(new MouseEvent('click', { bubbles: true }));\n await page.waitForChanges();\n jest.runOnlyPendingTimers();\n\n expect(spys[0]).toHaveBeenCalledTimes(2);\n expect(spys[0]).toHaveBeenLastCalledWith('tabindex', '0');\n expect(spys[1]).toHaveBeenCalledTimes(2);\n expect(spys[1]).toHaveBeenLastCalledWith('tabindex', '-1');\n\n expect(page.root).toMatchSnapshot();\n });\n });\n});\n"]}
@@ -2,7 +2,7 @@
2
2
  "errors": {
3
3
  "required": "This field is required.",
4
4
  "date": {
5
- "badInput": "The date format must be <span aria-hidden=\"true\">mm/dd/yyyy</span><span class=\"sr-only\">m m / d d / y y y y</span> and the date must be greater than {min}",
5
+ "badInput": "The date format must be <span aria-hidden=\"true\">mm/dd/yyyy</span><span class=\"mg-u-visually-hidden\">m m / d d / y y y y</span> and the date must be greater than {min}",
6
6
  "min": "The date cannot be earlier than {min}",
7
7
  "max": "The date cannot be later than {max}",
8
8
  "minMax": "The date must be between {min} and {max}"
@@ -44,8 +44,8 @@
44
44
  }
45
45
  },
46
46
  "form": {
47
- "required": "Fields with a <strong class=\"is-asterisk\">*</strong> are required",
48
- "requiredSingle": "Field with a <strong class=\"is-asterisk\">*</strong> is required",
47
+ "required": "Fields with a <strong class=\"mg-u-is-asterisk\">*</strong> are required",
48
+ "requiredSingle": "Field with a <strong class=\"mg-u-is-asterisk\">*</strong> is required",
49
49
  "allRequired": "All fields are required",
50
50
  "allRequiredSingle": "The field is required"
51
51
  },
@@ -2,7 +2,7 @@
2
2
  "errors": {
3
3
  "required": "Ce champ est obligatoire.",
4
4
  "date": {
5
- "badInput": "Le format de la date doit être du type <span aria-hidden=\"true\">jj/mm/aaaa</span><span class=\"sr-only\">j j / m m / a a a a</span> et la date supérieure au {min}",
5
+ "badInput": "Le format de la date doit être du type <span aria-hidden=\"true\">jj/mm/aaaa</span><span class=\"mg-u-visually-hidden\">j j / m m / a a a a</span> et la date supérieure au {min}",
6
6
  "min": "La date ne peut pas être antérieure au {min}",
7
7
  "max": "La date ne peut pas être postérieure au {max}",
8
8
  "minMax": "La date doit être comprise entre le {min} et le {max}"
@@ -44,8 +44,8 @@
44
44
  }
45
45
  },
46
46
  "form": {
47
- "required": "Les champs marqués d'un <strong class=\"is-asterisk\">*</strong> sont obligatoires",
48
- "requiredSingle": "Le champ marqué d'un <strong class=\"is-asterisk\">*</strong> est obligatoire",
47
+ "required": "Les champs marqués d'un <strong class=\"mg-u-is-asterisk\">*</strong> sont obligatoires",
48
+ "requiredSingle": "Le champ marqué d'un <strong class=\"mg-u-is-asterisk\">*</strong> est obligatoire",
49
49
  "allRequired": "Tous les champs sont obligatoires",
50
50
  "allRequiredSingle": "Le champ est obligatoire"
51
51
  },
@@ -132,4 +132,14 @@ const getChildWindows = (localWindow, windows = []) => {
132
132
  * @returns if string is valid
133
133
  */
134
134
  export const isValidString = (value) => typeof value === 'string' && value.trim() !== '';
135
+ /**
136
+ * Clean string caraters
137
+ * @param text - text to cliean
138
+ * @returns cleanded string
139
+ */
140
+ export const cleanString = (text) => typeof text === 'string' &&
141
+ text
142
+ .toLocaleLowerCase()
143
+ .normalize('NFD')
144
+ .replaceAll(/[\u0300-\u036f]/g, '');
135
145
  //# sourceMappingURL=components.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.utils.js","sourceRoot":"","sources":["../../src/utils/components.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Create random ID\n * @param prefix - add prefix to created ID\n * @param length - ID length\n * @returns ID\n */\nexport const createID = (prefix = '', length = 10): string => {\n const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';\n const charsLength = chars.length;\n\n let ID = '';\n let now = Date.now();\n while (length > 0) {\n now += Math.pow(10, 6); // Add 1 millisecond to the timestamp\n const index = now % charsLength;\n ID += chars.charAt(index);\n length--;\n }\n return (prefix !== '' ? `${prefix}-` : '') + ID;\n};\n\n/**\n * Class to manage component classlist\n * Set() are not working when imported in project\n */\nexport class ClassList {\n /**\n * Available classes\n */\n classes: string[];\n\n constructor(classlist: string[] = []) {\n this.classes = classlist;\n }\n\n /**\n * Add class\n * @param className - class name to add\n */\n add = (className: string): void => {\n if (!this.has(className)) {\n this.classes.push(className);\n }\n };\n\n /**\n * Delete class\n * @param className - class name to delete\n */\n delete = (className: string): void => {\n const index = this.classes.indexOf(className);\n if (index > -1) {\n this.classes.splice(index, 1);\n }\n };\n\n /**\n * Check if class exist in list\n * @param className - class name to check\n * @returns class name is in the list\n */\n has = (className: string): boolean => {\n return this.classes.includes(className);\n };\n\n /**\n * Join classes seperated by spaces\n * @returns joined values\n */\n join = (): string => {\n return this.classes.join(' ');\n };\n}\n\n/**\n * Check if all items are string\n * @param items - items to check\n * @returns all items are string\n */\nexport const allItemsAreString = (items: unknown): items is string[] => Array.isArray(items) && items.every(item => typeof item === 'string');\n\n/**\n * Check if element is a heading\n * @param element - slotted element\n * @param tagNames - allowed tag names list\n * @returns element is a heading\n */\nexport const isTagName = (element: Element, tagNames: string[]): boolean => {\n return tagNames.includes(element?.tagName.toLowerCase());\n};\n\n/**\n * Focusable elements query selector\n */\nexport const focusableElements = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), [identifier]';\n\n/**\n * Get windows\n * @param localWindow - the window we are lookink for other windows\n * @returns The list of windows found\n */\nexport const getWindows = (localWindow: Window): Window[] => {\n const parentWindows = getParentWindows(localWindow);\n const childWindows = getChildWindows(localWindow);\n return [localWindow, ...parentWindows, ...childWindows];\n};\n\n/**\n * Get parent windows\n * @param localWindow - the window we are lookink for parents\n * @param windows - The list of allready found windows\n * @returns The list of windows found\n */\nexport const getParentWindows = (localWindow: Window, windows: Window[] = []): Window[] => {\n // Check if is in iframe\n if (localWindow.self !== localWindow.top) {\n // Check if we have permission to access parent\n try {\n const parentWindow: Window = localWindow.parent;\n windows.push(parentWindow);\n return getParentWindows(parentWindow, windows);\n } catch (err) {\n console.error('Different hosts between iframes:', err);\n return windows;\n }\n }\n return windows;\n};\n\n/**\n * Get child windows\n * @param localWindow - the window we are lookink for children\n * @param windows - The list of allready found windows\n * @returns The list of windows found\n */\nconst getChildWindows = (localWindow: Window, windows: Window[] = []): Window[] => {\n if (localWindow.frames.length > 0) {\n for (const childWindow of Array.from(localWindow.frames)) {\n windows.push(childWindow);\n getChildWindows(childWindow, windows);\n }\n }\n return windows;\n};\n\n/**\n * Validate string\n * @param value - value to check\n * @returns if string is valid\n */\nexport const isValidString = (value: unknown): boolean => typeof value === 'string' && value.trim() !== '';\n"]}
1
+ {"version":3,"file":"components.utils.js","sourceRoot":"","sources":["../../src/utils/components.utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Create random ID\n * @param prefix - add prefix to created ID\n * @param length - ID length\n * @returns ID\n */\nexport const createID = (prefix = '', length = 10): string => {\n const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';\n const charsLength = chars.length;\n\n let ID = '';\n let now = Date.now();\n while (length > 0) {\n now += Math.pow(10, 6); // Add 1 millisecond to the timestamp\n const index = now % charsLength;\n ID += chars.charAt(index);\n length--;\n }\n return (prefix !== '' ? `${prefix}-` : '') + ID;\n};\n\n/**\n * Class to manage component classlist\n * Set() are not working when imported in project\n */\nexport class ClassList {\n /**\n * Available classes\n */\n classes: string[];\n\n constructor(classlist: string[] = []) {\n this.classes = classlist;\n }\n\n /**\n * Add class\n * @param className - class name to add\n */\n add = (className: string): void => {\n if (!this.has(className)) {\n this.classes.push(className);\n }\n };\n\n /**\n * Delete class\n * @param className - class name to delete\n */\n delete = (className: string): void => {\n const index = this.classes.indexOf(className);\n if (index > -1) {\n this.classes.splice(index, 1);\n }\n };\n\n /**\n * Check if class exist in list\n * @param className - class name to check\n * @returns class name is in the list\n */\n has = (className: string): boolean => {\n return this.classes.includes(className);\n };\n\n /**\n * Join classes seperated by spaces\n * @returns joined values\n */\n join = (): string => {\n return this.classes.join(' ');\n };\n}\n\n/**\n * Check if all items are string\n * @param items - items to check\n * @returns all items are string\n */\nexport const allItemsAreString = (items: unknown): items is string[] => Array.isArray(items) && items.every(item => typeof item === 'string');\n\n/**\n * Check if element is a heading\n * @param element - slotted element\n * @param tagNames - allowed tag names list\n * @returns element is a heading\n */\nexport const isTagName = (element: Element, tagNames: string[]): boolean => {\n return tagNames.includes(element?.tagName.toLowerCase());\n};\n\n/**\n * Focusable elements query selector\n */\nexport const focusableElements = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), [identifier]';\n\n/**\n * Get windows\n * @param localWindow - the window we are lookink for other windows\n * @returns The list of windows found\n */\nexport const getWindows = (localWindow: Window): Window[] => {\n const parentWindows = getParentWindows(localWindow);\n const childWindows = getChildWindows(localWindow);\n return [localWindow, ...parentWindows, ...childWindows];\n};\n\n/**\n * Get parent windows\n * @param localWindow - the window we are lookink for parents\n * @param windows - The list of allready found windows\n * @returns The list of windows found\n */\nexport const getParentWindows = (localWindow: Window, windows: Window[] = []): Window[] => {\n // Check if is in iframe\n if (localWindow.self !== localWindow.top) {\n // Check if we have permission to access parent\n try {\n const parentWindow: Window = localWindow.parent;\n windows.push(parentWindow);\n return getParentWindows(parentWindow, windows);\n } catch (err) {\n console.error('Different hosts between iframes:', err);\n return windows;\n }\n }\n return windows;\n};\n\n/**\n * Get child windows\n * @param localWindow - the window we are lookink for children\n * @param windows - The list of allready found windows\n * @returns The list of windows found\n */\nconst getChildWindows = (localWindow: Window, windows: Window[] = []): Window[] => {\n if (localWindow.frames.length > 0) {\n for (const childWindow of Array.from(localWindow.frames)) {\n windows.push(childWindow);\n getChildWindows(childWindow, windows);\n }\n }\n return windows;\n};\n\n/**\n * Validate string\n * @param value - value to check\n * @returns if string is valid\n */\nexport const isValidString = (value: unknown): boolean => typeof value === 'string' && value.trim() !== '';\n\n/**\n * Clean string caraters\n * @param text - text to cliean\n * @returns cleanded string\n */\nexport const cleanString = (text: string): string =>\n typeof text === 'string' &&\n text\n .toLocaleLowerCase()\n .normalize('NFD')\n .replaceAll(/[\\u0300-\\u036f]/g, '');\n"]}
@@ -1,4 +1,4 @@
1
- import { createID, ClassList, allItemsAreString, isTagName, getWindows, isValidString } from "./components.utils";
1
+ import { createID, ClassList, allItemsAreString, isTagName, getWindows, isValidString, cleanString } from "./components.utils";
2
2
  import { mockConsoleError } from "./unit.test.utils";
3
3
  mockConsoleError();
4
4
  describe('components.utils', () => {
@@ -124,5 +124,18 @@ describe('components.utils', () => {
124
124
  expect(isValidString(value)).toEqual(true);
125
125
  });
126
126
  });
127
+ describe('cleanString', () => {
128
+ test.each([
129
+ { string: 'batman', expected: 'batman' },
130
+ { string: 'BATMAN', expected: 'batman' },
131
+ { string: 'Batman', expected: 'batman' },
132
+ { string: ' batman ', expected: ' batman ' },
133
+ { string: ' batman', expected: ' batman' },
134
+ { string: 'batman ', expected: 'batman ' },
135
+ { string: 'âäàçéèêñù', expected: 'aaaceeenu' },
136
+ ])('Should format string properly', ({ string, expected }) => {
137
+ expect(cleanString(string)).toEqual(expected);
138
+ });
139
+ });
127
140
  });
128
141
  //# sourceMappingURL=components.utils.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.utils.spec.js","sourceRoot":"","sources":["../../src/utils/components.utils.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { createID, ClassList, allItemsAreString, isTagName, getWindows, isValidString } from './components.utils';\nimport { mockConsoleError } from './unit.test.utils';\n\nmockConsoleError();\n\ndescribe('components.utils', () => {\n describe('createID', () => {\n test.each([undefined, '', 'blu'])('Should generate a prefixed ID if defined : %s', prefix => {\n const id = createID(prefix);\n let regexp = /^[a-z0-9]{10}$/;\n if (prefix !== undefined && prefix !== '') {\n regexp = new RegExp(`^${prefix}-[a-z0-9]{10}$`);\n }\n expect(id).toMatch(regexp);\n });\n });\n\n describe('ClassList', () => {\n test('Should add classes to list', () => {\n const classCollection = new ClassList();\n expect(classCollection.classes).toEqual([]);\n classCollection.add('blu');\n expect(classCollection.classes).toEqual(['blu']);\n classCollection.add('bli');\n expect(classCollection.classes).toEqual(['blu', 'bli']);\n // Should not add classes if already in list\n classCollection.add('blu');\n expect(classCollection.classes).toEqual(['blu', 'bli']);\n });\n\n test('Should delete classes from list', () => {\n const classCollection = new ClassList(['blu', 'bli']);\n classCollection.delete('blu');\n expect(classCollection.classes).toEqual(['bli']);\n // List doesn't change if class name doesn't existe in list\n classCollection.delete('bla');\n expect(classCollection.classes).toEqual(['bli']);\n });\n\n test('Should check if class already in list', () => {\n const classCollection = new ClassList(['blu']);\n expect(classCollection.has('blu')).toEqual(true);\n expect(classCollection.has('bli')).toEqual(false);\n });\n\n test('Should return seperated space classes list', () => {\n const classCollection = new ClassList(['blu', 'bli']);\n expect(classCollection.join()).toEqual('blu bli');\n });\n });\n\n describe('allItemsAreString', () => {\n test.each([\n { items: ['blu', 'bli', 'blo', 'bla'], expected: true },\n { items: ['blu', 'bli', 'blo', { value: 'bla' }], expected: false },\n ])('Should test if all otems are string: %s', ({ items, expected }) => {\n expect(allItemsAreString(items as string[])).toEqual(expected);\n });\n });\n\n describe('isTagName', () => {\n test.each([\n { querySelector: 'h1', expected: true },\n { querySelector: 'span', expected: false },\n { querySelector: 'blu', expected: false },\n ])('Should test if all otems are string: %s', ({ querySelector, expected }) => {\n const div = document.createElement('div');\n div.innerHTML = '<h1></h1><span></span>';\n const elm = div.querySelector(querySelector);\n expect(isTagName(elm as HTMLElement, ['h1'])).toEqual(expected);\n });\n });\n\n describe('getWindows', () => {\n const mockWindowFramesLength = jest.fn();\n const mockWindowIndexZero = jest.fn();\n Object.defineProperty(window, 'frames', {\n value: {\n get length() {\n return mockWindowFramesLength();\n },\n get 0() {\n return mockWindowIndexZero();\n },\n },\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n test('Should return the window in an array', () => {\n mockWindowFramesLength.mockReturnValue(0);\n const localWindow: Window = window;\n const windows: Window[] = getWindows(localWindow);\n expect(windows).toHaveLength(1);\n expect(windows[0]).toEqual(localWindow);\n });\n\n test('Should return the window with a parent', () => {\n mockWindowFramesLength.mockReturnValue(0);\n const spyWindowSelf = jest.spyOn(window, 'self', 'get').mockImplementationOnce(jest.fn());\n const spyWindowParent = jest.spyOn(window, 'parent', 'get').mockImplementationOnce(() => window);\n\n const windows = getWindows(window);\n expect(windows).toHaveLength(2);\n expect(spyWindowSelf).toBeCalledTimes(2);\n expect(spyWindowParent).toBeCalledTimes(1);\n });\n\n test('Should return the window with a child', () => {\n mockWindowFramesLength.mockReturnValueOnce(1).mockReturnValueOnce(1).mockReturnValue(0);\n mockWindowIndexZero.mockReturnValueOnce(window);\n const windows = getWindows(window);\n expect(windows).toHaveLength(2);\n });\n\n test('Should throw an error when cannot access top parent window', () => {\n mockWindowFramesLength.mockReturnValue(0);\n const spyConsole = jest.spyOn(console, 'error');\n const spyWindowSelf = jest.spyOn(window, 'self', 'get').mockImplementationOnce(jest.fn());\n const spyWindowParent = jest.spyOn(window, 'parent', 'get').mockImplementationOnce(() => {\n throw new Error('non');\n });\n const localWindow: Window = window;\n const windows: Window[] = getWindows(localWindow);\n expect(windows).toHaveLength(1);\n expect(windows[0]).toEqual(localWindow);\n expect(spyConsole).toBeCalledTimes(1);\n expect(spyWindowSelf).toBeCalledTimes(1);\n expect(spyWindowParent).toBeCalledTimes(1);\n });\n });\n\n describe('isValidString', () => {\n test.each(['', ' ', null, undefined, 1, {}, []])('Should return \"false\" for invalid values', value => {\n expect(isValidString(value)).toEqual(false);\n });\n\n test.each(['batman', 'batman '])('Should return \"true\" for valid value', value => {\n expect(isValidString(value)).toEqual(true);\n });\n });\n});\n"]}
1
+ {"version":3,"file":"components.utils.spec.js","sourceRoot":"","sources":["../../src/utils/components.utils.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { createID, ClassList, allItemsAreString, isTagName, getWindows, isValidString, cleanString } from './components.utils';\nimport { mockConsoleError } from './unit.test.utils';\n\nmockConsoleError();\n\ndescribe('components.utils', () => {\n describe('createID', () => {\n test.each([undefined, '', 'blu'])('Should generate a prefixed ID if defined : %s', prefix => {\n const id = createID(prefix);\n let regexp = /^[a-z0-9]{10}$/;\n if (prefix !== undefined && prefix !== '') {\n regexp = new RegExp(`^${prefix}-[a-z0-9]{10}$`);\n }\n expect(id).toMatch(regexp);\n });\n });\n\n describe('ClassList', () => {\n test('Should add classes to list', () => {\n const classCollection = new ClassList();\n expect(classCollection.classes).toEqual([]);\n classCollection.add('blu');\n expect(classCollection.classes).toEqual(['blu']);\n classCollection.add('bli');\n expect(classCollection.classes).toEqual(['blu', 'bli']);\n // Should not add classes if already in list\n classCollection.add('blu');\n expect(classCollection.classes).toEqual(['blu', 'bli']);\n });\n\n test('Should delete classes from list', () => {\n const classCollection = new ClassList(['blu', 'bli']);\n classCollection.delete('blu');\n expect(classCollection.classes).toEqual(['bli']);\n // List doesn't change if class name doesn't existe in list\n classCollection.delete('bla');\n expect(classCollection.classes).toEqual(['bli']);\n });\n\n test('Should check if class already in list', () => {\n const classCollection = new ClassList(['blu']);\n expect(classCollection.has('blu')).toEqual(true);\n expect(classCollection.has('bli')).toEqual(false);\n });\n\n test('Should return seperated space classes list', () => {\n const classCollection = new ClassList(['blu', 'bli']);\n expect(classCollection.join()).toEqual('blu bli');\n });\n });\n\n describe('allItemsAreString', () => {\n test.each([\n { items: ['blu', 'bli', 'blo', 'bla'], expected: true },\n { items: ['blu', 'bli', 'blo', { value: 'bla' }], expected: false },\n ])('Should test if all otems are string: %s', ({ items, expected }) => {\n expect(allItemsAreString(items as string[])).toEqual(expected);\n });\n });\n\n describe('isTagName', () => {\n test.each([\n { querySelector: 'h1', expected: true },\n { querySelector: 'span', expected: false },\n { querySelector: 'blu', expected: false },\n ])('Should test if all otems are string: %s', ({ querySelector, expected }) => {\n const div = document.createElement('div');\n div.innerHTML = '<h1></h1><span></span>';\n const elm = div.querySelector(querySelector);\n expect(isTagName(elm as HTMLElement, ['h1'])).toEqual(expected);\n });\n });\n\n describe('getWindows', () => {\n const mockWindowFramesLength = jest.fn();\n const mockWindowIndexZero = jest.fn();\n Object.defineProperty(window, 'frames', {\n value: {\n get length() {\n return mockWindowFramesLength();\n },\n get 0() {\n return mockWindowIndexZero();\n },\n },\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n test('Should return the window in an array', () => {\n mockWindowFramesLength.mockReturnValue(0);\n const localWindow: Window = window;\n const windows: Window[] = getWindows(localWindow);\n expect(windows).toHaveLength(1);\n expect(windows[0]).toEqual(localWindow);\n });\n\n test('Should return the window with a parent', () => {\n mockWindowFramesLength.mockReturnValue(0);\n const spyWindowSelf = jest.spyOn(window, 'self', 'get').mockImplementationOnce(jest.fn());\n const spyWindowParent = jest.spyOn(window, 'parent', 'get').mockImplementationOnce(() => window);\n\n const windows = getWindows(window);\n expect(windows).toHaveLength(2);\n expect(spyWindowSelf).toBeCalledTimes(2);\n expect(spyWindowParent).toBeCalledTimes(1);\n });\n\n test('Should return the window with a child', () => {\n mockWindowFramesLength.mockReturnValueOnce(1).mockReturnValueOnce(1).mockReturnValue(0);\n mockWindowIndexZero.mockReturnValueOnce(window);\n const windows = getWindows(window);\n expect(windows).toHaveLength(2);\n });\n\n test('Should throw an error when cannot access top parent window', () => {\n mockWindowFramesLength.mockReturnValue(0);\n const spyConsole = jest.spyOn(console, 'error');\n const spyWindowSelf = jest.spyOn(window, 'self', 'get').mockImplementationOnce(jest.fn());\n const spyWindowParent = jest.spyOn(window, 'parent', 'get').mockImplementationOnce(() => {\n throw new Error('non');\n });\n const localWindow: Window = window;\n const windows: Window[] = getWindows(localWindow);\n expect(windows).toHaveLength(1);\n expect(windows[0]).toEqual(localWindow);\n expect(spyConsole).toBeCalledTimes(1);\n expect(spyWindowSelf).toBeCalledTimes(1);\n expect(spyWindowParent).toBeCalledTimes(1);\n });\n });\n\n describe('isValidString', () => {\n test.each(['', ' ', null, undefined, 1, {}, []])('Should return \"false\" for invalid values', value => {\n expect(isValidString(value)).toEqual(false);\n });\n\n test.each(['batman', 'batman '])('Should return \"true\" for valid value', value => {\n expect(isValidString(value)).toEqual(true);\n });\n });\n\n describe('cleanString', () => {\n test.each([\n { string: 'batman', expected: 'batman' },\n { string: 'BATMAN', expected: 'batman' },\n { string: 'Batman', expected: 'batman' },\n { string: ' batman ', expected: ' batman ' },\n { string: ' batman', expected: ' batman' },\n { string: 'batman ', expected: 'batman ' },\n { string: 'âäàçéèêñù', expected: 'aaaceeenu' },\n ])('Should format string properly', ({ string, expected }) => {\n expect(cleanString(string)).toEqual(expected);\n });\n });\n});\n"]}