@mgdis/mg-components 5.26.0 → 5.27.1

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 (292) hide show
  1. package/dist/cjs/{index-c585c382.js → index-4b43c17b.js} +97 -81
  2. package/dist/cjs/index-4b43c17b.js.map +1 -0
  3. package/dist/cjs/{index-0a2783ee.js → index-83102ab3.js} +23 -10
  4. package/dist/cjs/index-83102ab3.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/{mg-action-more_34.cjs.entry.js → mg-action-more_36.cjs.entry.js} +995 -742
  7. package/dist/cjs/mg-action-more_36.cjs.entry.js.map +1 -0
  8. package/dist/cjs/mg-components.cjs.js +3 -3
  9. package/dist/cjs/mg-components.cjs.js.map +1 -1
  10. package/dist/cjs/mg-loader.cjs.entry.js +3 -3
  11. package/dist/cjs/mg-loader.cjs.entry.js.map +1 -1
  12. package/dist/collection/assets/icons/index.js +1 -206
  13. package/dist/collection/assets/icons/index.js.map +1 -1
  14. package/dist/collection/collection-manifest.json +4 -3
  15. package/dist/collection/components/atoms/mg-badge/mg-badge.js +2 -2
  16. package/dist/collection/components/atoms/mg-badge/mg-badge.js.map +1 -1
  17. package/dist/collection/components/atoms/mg-button/mg-button.js +9 -6
  18. package/dist/collection/components/atoms/mg-button/mg-button.js.map +1 -1
  19. package/dist/collection/components/atoms/mg-card/mg-card.js +5 -2
  20. package/dist/collection/components/atoms/mg-card/mg-card.js.map +1 -1
  21. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js +2 -2
  22. package/dist/collection/components/atoms/mg-character-left/mg-character-left.js.map +1 -1
  23. package/dist/collection/components/atoms/mg-divider/mg-divider.js +1 -1
  24. package/dist/collection/components/atoms/mg-icon/mg-icon.conf.js.map +1 -1
  25. package/dist/collection/components/atoms/mg-icon/mg-icon.js +13 -8
  26. package/dist/collection/components/atoms/mg-icon/mg-icon.js.map +1 -1
  27. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js +6 -3
  28. package/dist/collection/components/atoms/mg-input-title/mg-input-title.js.map +1 -1
  29. package/dist/collection/components/atoms/mg-tag/mg-tag.js +6 -3
  30. package/dist/collection/components/atoms/mg-tag/mg-tag.js.map +1 -1
  31. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js +4 -1
  32. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.js.map +1 -1
  33. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js +1 -0
  34. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.conf.js.map +1 -1
  35. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js +13 -3
  36. package/dist/collection/components/atoms/mg-tooltip/mg-tooltip.js.map +1 -1
  37. package/dist/collection/components/molecules/inputs/mg-input/mg-input.conf.js +21 -0
  38. package/dist/collection/components/molecules/inputs/mg-input/mg-input.conf.js.map +1 -0
  39. package/dist/collection/components/molecules/inputs/mg-input/mg-input.js +515 -0
  40. package/dist/collection/components/molecules/inputs/mg-input/mg-input.js.map +1 -0
  41. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js +1 -5
  42. package/dist/collection/components/molecules/inputs/mg-input-checkbox/MgInputCheckboxList.js.map +1 -1
  43. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js +7 -7
  44. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.js.map +1 -1
  45. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.js.map +1 -1
  46. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js +67 -45
  47. package/dist/collection/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.js.map +1 -1
  48. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js +1 -0
  49. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.conf.js.map +1 -1
  50. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js +71 -22
  51. package/dist/collection/components/molecules/inputs/mg-input-date/mg-input-date.js.map +1 -1
  52. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js +52 -19
  53. package/dist/collection/components/molecules/inputs/mg-input-numeric/mg-input-numeric.js.map +1 -1
  54. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js +54 -15
  55. package/dist/collection/components/molecules/inputs/mg-input-password/mg-input-password.js.map +1 -1
  56. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js +40 -8
  57. package/dist/collection/components/molecules/inputs/mg-input-radio/mg-input-radio.js.map +1 -1
  58. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js +44 -13
  59. package/dist/collection/components/molecules/inputs/mg-input-select/mg-input-select.js.map +1 -1
  60. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js +72 -24
  61. package/dist/collection/components/molecules/inputs/mg-input-text/mg-input-text.js.map +1 -1
  62. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js +47 -15
  63. package/dist/collection/components/molecules/inputs/mg-input-textarea/mg-input-textarea.js.map +1 -1
  64. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js +34 -21
  65. package/dist/collection/components/molecules/inputs/mg-input-toggle/mg-input-toggle.js.map +1 -1
  66. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js +26 -24
  67. package/dist/collection/components/molecules/menu/mg-menu/mg-menu.js.map +1 -1
  68. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js +4 -0
  69. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.conf.js.map +1 -1
  70. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js +76 -9
  71. package/dist/collection/components/molecules/menu/mg-menu-item/mg-menu-item.js.map +1 -1
  72. package/dist/collection/components/molecules/mg-action-more/mg-action-more.conf.js.map +1 -1
  73. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js +41 -41
  74. package/dist/collection/components/molecules/mg-action-more/mg-action-more.js.map +1 -1
  75. package/dist/collection/components/molecules/mg-details/mg-details.js +5 -1
  76. package/dist/collection/components/molecules/mg-details/mg-details.js.map +1 -1
  77. package/dist/collection/components/molecules/mg-form/mg-form.js +8 -4
  78. package/dist/collection/components/molecules/mg-form/mg-form.js.map +1 -1
  79. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js +8 -3
  80. package/dist/collection/components/molecules/mg-illustrated-message/mg-illustrated-message.js.map +1 -1
  81. package/dist/collection/components/molecules/mg-item-more/mg-item-more.conf.js.map +1 -1
  82. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js +20 -13
  83. package/dist/collection/components/molecules/mg-item-more/mg-item-more.js.map +1 -1
  84. package/dist/collection/components/molecules/mg-loader/mg-loader.js +3 -3
  85. package/dist/collection/components/molecules/mg-loader/mg-loader.js.map +1 -1
  86. package/dist/collection/components/molecules/mg-message/mg-message.js +7 -3
  87. package/dist/collection/components/molecules/mg-message/mg-message.js.map +1 -1
  88. package/dist/collection/components/molecules/mg-modal/mg-modal.js +6 -2
  89. package/dist/collection/components/molecules/mg-modal/mg-modal.js.map +1 -1
  90. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js +4 -4
  91. package/dist/collection/components/molecules/mg-pagination/mg-pagination.js.map +1 -1
  92. package/dist/collection/components/molecules/mg-panel/mg-panel.js +8 -4
  93. package/dist/collection/components/molecules/mg-panel/mg-panel.js.map +1 -1
  94. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js +4 -1
  95. package/dist/collection/components/molecules/mg-popover/mg-popover-content/mg-popover-content.js.map +1 -1
  96. package/dist/collection/components/molecules/mg-popover/mg-popover.js +6 -2
  97. package/dist/collection/components/molecules/mg-popover/mg-popover.js.map +1 -1
  98. package/dist/collection/components/molecules/mg-skip-links/mg-skip-links.js +1 -1
  99. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js +4 -1
  100. package/dist/collection/components/molecules/mg-tabs/mg-tabs.js.map +1 -1
  101. package/dist/collection/locales/en/messages.json +10 -3
  102. package/dist/collection/locales/fr/messages.json +10 -3
  103. package/dist/collection/locales/index.conf.js +2 -0
  104. package/dist/collection/locales/index.conf.js.map +1 -0
  105. package/dist/collection/utils/playwright.fixture.js +1 -1
  106. package/dist/collection/utils/playwright.fixture.js.map +1 -1
  107. package/dist/components/index.es.js +24 -24
  108. package/dist/components/index.es.js.map +1 -1
  109. package/dist/components/index2.js +24 -8
  110. package/dist/components/index2.js.map +1 -1
  111. package/dist/components/mg-action-more.js +29 -25
  112. package/dist/components/mg-action-more.js.map +1 -1
  113. package/dist/components/mg-badge2.js +1 -1
  114. package/dist/components/mg-badge2.js.map +1 -1
  115. package/dist/components/mg-button2.js +1 -1
  116. package/dist/components/mg-button2.js.map +1 -1
  117. package/dist/components/mg-card2.js +2 -2
  118. package/dist/components/mg-card2.js.map +1 -1
  119. package/dist/components/mg-character-left2.js +1 -1
  120. package/dist/components/mg-character-left2.js.map +1 -1
  121. package/dist/components/mg-details.js +1 -1
  122. package/dist/components/mg-details.js.map +1 -1
  123. package/dist/components/mg-divider.js +1 -1
  124. package/dist/components/mg-form.js +1 -1
  125. package/dist/components/mg-form.js.map +1 -1
  126. package/dist/components/mg-icon2.js +4 -416
  127. package/dist/components/mg-icon2.js.map +1 -1
  128. package/dist/components/mg-illustrated-message.js +3 -3
  129. package/dist/components/mg-illustrated-message.js.map +1 -1
  130. package/dist/components/mg-input-checkbox-paginated2.js +13 -11
  131. package/dist/components/mg-input-checkbox-paginated2.js.map +1 -1
  132. package/dist/components/mg-input-checkbox.js +71 -49
  133. package/dist/components/mg-input-checkbox.js.map +1 -1
  134. package/dist/components/mg-input-date.js +69 -20
  135. package/dist/components/mg-input-date.js.map +1 -1
  136. package/dist/components/mg-input-numeric.js +42 -13
  137. package/dist/components/mg-input-numeric.js.map +1 -1
  138. package/dist/components/mg-input-password.js +56 -12
  139. package/dist/components/mg-input-password.js.map +1 -1
  140. package/dist/components/mg-input-radio.js +41 -10
  141. package/dist/components/mg-input-radio.js.map +1 -1
  142. package/dist/components/mg-input-select2.js +42 -12
  143. package/dist/components/mg-input-select2.js.map +1 -1
  144. package/dist/components/mg-input-text2.js +56 -18
  145. package/dist/components/mg-input-text2.js.map +1 -1
  146. package/dist/components/mg-input-textarea.js +44 -13
  147. package/dist/components/mg-input-textarea.js.map +1 -1
  148. package/dist/components/mg-input-title2.js +1 -1
  149. package/dist/components/mg-input-title2.js.map +1 -1
  150. package/dist/components/mg-input-toggle.js +35 -22
  151. package/dist/components/mg-input-toggle.js.map +1 -1
  152. package/dist/components/mg-input.d.ts +11 -0
  153. package/dist/components/mg-input.js +8 -0
  154. package/dist/components/mg-input.js.map +1 -0
  155. package/dist/components/mg-input2.js +352 -0
  156. package/dist/components/mg-input2.js.map +1 -0
  157. package/dist/components/mg-item-more.js +1 -338
  158. package/dist/components/mg-item-more.js.map +1 -1
  159. package/dist/components/mg-item-more2.js +592 -0
  160. package/dist/components/mg-item-more2.js.map +1 -0
  161. package/dist/components/mg-loader.js +1 -1
  162. package/dist/components/mg-loader.js.map +1 -1
  163. package/dist/components/mg-menu-item2.js +47 -8
  164. package/dist/components/mg-menu-item2.js.map +1 -1
  165. package/dist/components/mg-menu.js +1 -1
  166. package/dist/components/mg-message.js +1 -1
  167. package/dist/components/mg-message.js.map +1 -1
  168. package/dist/components/mg-modal.js +3 -3
  169. package/dist/components/mg-modal.js.map +1 -1
  170. package/dist/components/mg-pagination2.js +12 -6
  171. package/dist/components/mg-pagination2.js.map +1 -1
  172. package/dist/components/mg-panel.js +15 -9
  173. package/dist/components/mg-panel.js.map +1 -1
  174. package/dist/components/mg-popover-content2.js +1 -1
  175. package/dist/components/mg-popover-content2.js.map +1 -1
  176. package/dist/components/mg-popover2.js +2 -2
  177. package/dist/components/mg-popover2.js.map +1 -1
  178. package/dist/components/mg-skip-links.js +1 -1
  179. package/dist/components/mg-tabs.js +1 -1
  180. package/dist/components/mg-tabs.js.map +1 -1
  181. package/dist/components/mg-tag.js +1 -1
  182. package/dist/components/mg-tag.js.map +1 -1
  183. package/dist/components/mg-tooltip-content2.js +1 -1
  184. package/dist/components/mg-tooltip-content2.js.map +1 -1
  185. package/dist/components/mg-tooltip2.js +10 -3
  186. package/dist/components/mg-tooltip2.js.map +1 -1
  187. package/dist/esm/{index-bb17de92.js → index-c4ed16b2.js} +97 -81
  188. package/dist/esm/index-c4ed16b2.js.map +1 -0
  189. package/dist/esm/{index-ad78ece7.js → index-d43d1c5d.js} +23 -10
  190. package/dist/esm/index-d43d1c5d.js.map +1 -0
  191. package/dist/esm/loader.js +3 -3
  192. package/dist/esm/{mg-action-more_34.entry.js → mg-action-more_36.entry.js} +982 -731
  193. package/dist/esm/mg-action-more_36.entry.js.map +1 -0
  194. package/dist/esm/mg-components.js +4 -4
  195. package/dist/esm/mg-components.js.map +1 -1
  196. package/dist/esm/mg-loader.entry.js +3 -3
  197. package/dist/esm/mg-loader.entry.js.map +1 -1
  198. package/dist/mg-components/locales/en/messages.json +10 -3
  199. package/dist/mg-components/locales/fr/messages.json +10 -3
  200. package/dist/mg-components/mg-components.esm.js +1 -1
  201. package/dist/mg-components/mg-components.esm.js.map +1 -1
  202. package/dist/mg-components/p-350454b9.js +2 -0
  203. package/dist/mg-components/p-350454b9.js.map +1 -0
  204. package/dist/mg-components/p-9cdd1bc9.entry.js +2 -0
  205. package/dist/mg-components/p-9cdd1bc9.entry.js.map +1 -0
  206. package/dist/mg-components/p-cf0b0988.js +3 -0
  207. package/dist/mg-components/p-cf0b0988.js.map +1 -0
  208. package/dist/mg-components/{p-d80b844d.entry.js → p-d4084a15.entry.js} +2 -2
  209. package/dist/mg-components/{p-d80b844d.entry.js.map → p-d4084a15.entry.js.map} +1 -1
  210. package/dist/types/components/atoms/mg-badge/mg-badge.d.ts +1 -1
  211. package/dist/types/components/atoms/mg-button/mg-button.d.ts +8 -5
  212. package/dist/types/components/atoms/mg-card/mg-card.d.ts +4 -1
  213. package/dist/types/components/atoms/mg-character-left/mg-character-left.d.ts +1 -1
  214. package/dist/types/components/atoms/mg-icon/mg-icon.conf.d.ts +5 -0
  215. package/dist/types/components/atoms/mg-icon/mg-icon.d.ts +3 -3
  216. package/dist/types/components/atoms/mg-input-title/mg-input-title.d.ts +5 -2
  217. package/dist/types/components/atoms/mg-tag/mg-tag.d.ts +5 -2
  218. package/dist/types/components/atoms/mg-tooltip/mg-tooltip-content/mg-tooltip-content.d.ts +3 -0
  219. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.conf.d.ts +2 -1
  220. package/dist/types/components/atoms/mg-tooltip/mg-tooltip.d.ts +4 -0
  221. package/dist/types/components/molecules/inputs/mg-input/mg-input.conf.d.ts +35 -0
  222. package/dist/types/components/molecules/inputs/mg-input/mg-input.d.ts +145 -0
  223. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox-paginated/mg-input-checkbox-paginated.d.ts +5 -5
  224. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.conf.d.ts +3 -5
  225. package/dist/types/components/molecules/inputs/mg-input-checkbox/mg-input-checkbox.d.ts +13 -12
  226. package/dist/types/components/molecules/inputs/mg-input-date/mg-input-date.conf.d.ts +2 -1
  227. package/dist/types/components/molecules/inputs/mg-input-date/mg-input-date.d.ts +19 -6
  228. package/dist/types/components/molecules/inputs/mg-input-numeric/mg-input-numeric.d.ts +15 -9
  229. package/dist/types/components/molecules/inputs/mg-input-password/mg-input-password.d.ts +16 -5
  230. package/dist/types/components/molecules/inputs/mg-input-radio/mg-input-radio.d.ts +7 -3
  231. package/dist/types/components/molecules/inputs/mg-input-select/mg-input-select.d.ts +7 -4
  232. package/dist/types/components/molecules/inputs/mg-input-text/mg-input-text.d.ts +21 -12
  233. package/dist/types/components/molecules/inputs/mg-input-textarea/mg-input-textarea.d.ts +12 -9
  234. package/dist/types/components/molecules/inputs/mg-input-toggle/mg-input-toggle.d.ts +16 -12
  235. package/dist/types/components/molecules/menu/mg-menu/mg-menu.d.ts +4 -1
  236. package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.conf.d.ts +8 -0
  237. package/dist/types/components/molecules/menu/mg-menu-item/mg-menu-item.d.ts +25 -5
  238. package/dist/types/components/molecules/mg-action-more/mg-action-more.conf.d.ts +7 -16
  239. package/dist/types/components/molecules/mg-action-more/mg-action-more.d.ts +9 -9
  240. package/dist/types/components/molecules/mg-form/mg-form.d.ts +3 -3
  241. package/dist/types/components/molecules/mg-item-more/mg-item-more.conf.d.ts +3 -12
  242. package/dist/types/components/molecules/mg-item-more/mg-item-more.d.ts +4 -3
  243. package/dist/types/components/molecules/mg-loader/mg-loader.d.ts +2 -2
  244. package/dist/types/components/molecules/mg-message/mg-message.d.ts +2 -2
  245. package/dist/types/components/molecules/mg-pagination/mg-pagination.d.ts +2 -2
  246. package/dist/types/components/molecules/mg-panel/mg-panel.d.ts +3 -3
  247. package/dist/types/components/molecules/mg-popover/mg-popover-content/mg-popover-content.d.ts +3 -0
  248. package/dist/types/components/molecules/mg-popover/mg-popover.d.ts +5 -1
  249. package/dist/types/components/molecules/mg-tabs/mg-tabs.d.ts +3 -0
  250. package/dist/types/components.d.ts +208 -92
  251. package/dist/types/locales/index.conf.d.ts +4 -0
  252. package/ide/intellij/web-types.json +260 -96
  253. package/ide/vscode/html-custom-data.json +2596 -1222
  254. package/package.json +24 -28
  255. package/dist/cjs/index-0a2783ee.js.map +0 -1
  256. package/dist/cjs/index-c585c382.js.map +0 -1
  257. package/dist/cjs/mg-action-more_34.cjs.entry.js.map +0 -1
  258. package/dist/cjs/mg-item-more.cjs.entry.js +0 -272
  259. package/dist/cjs/mg-item-more.cjs.entry.js.map +0 -1
  260. package/dist/cjs/mg-menu.conf-c291eee6.js +0 -18
  261. package/dist/cjs/mg-menu.conf-c291eee6.js.map +0 -1
  262. package/dist/collection/components/molecules/inputs/MgInput.conf.js +0 -14
  263. package/dist/collection/components/molecules/inputs/MgInput.conf.js.map +0 -1
  264. package/dist/collection/components/molecules/inputs/MgInput.js +0 -125
  265. package/dist/collection/components/molecules/inputs/MgInput.js.map +0 -1
  266. package/dist/collection/utils/playwright.e2e.test.utils.js +0 -100
  267. package/dist/collection/utils/playwright.e2e.test.utils.js.map +0 -1
  268. package/dist/components/MgInput.js +0 -155
  269. package/dist/components/MgInput.js.map +0 -1
  270. package/dist/components/mg-menu.conf.js +0 -16
  271. package/dist/components/mg-menu.conf.js.map +0 -1
  272. package/dist/components/mg-menu2.js +0 -202
  273. package/dist/components/mg-menu2.js.map +0 -1
  274. package/dist/esm/index-ad78ece7.js.map +0 -1
  275. package/dist/esm/index-bb17de92.js.map +0 -1
  276. package/dist/esm/mg-action-more_34.entry.js.map +0 -1
  277. package/dist/esm/mg-item-more.entry.js +0 -268
  278. package/dist/esm/mg-item-more.entry.js.map +0 -1
  279. package/dist/esm/mg-menu.conf-9609bcb2.js +0 -16
  280. package/dist/esm/mg-menu.conf-9609bcb2.js.map +0 -1
  281. package/dist/mg-components/p-2db8355d.entry.js +0 -2
  282. package/dist/mg-components/p-2db8355d.entry.js.map +0 -1
  283. package/dist/mg-components/p-95653110.entry.js +0 -2
  284. package/dist/mg-components/p-95653110.entry.js.map +0 -1
  285. package/dist/mg-components/p-bc62d75e.js +0 -3
  286. package/dist/mg-components/p-bc62d75e.js.map +0 -1
  287. package/dist/mg-components/p-d41aa78b.js +0 -2
  288. package/dist/mg-components/p-d41aa78b.js.map +0 -1
  289. package/dist/mg-components/p-fe935e54.js +0 -2
  290. package/dist/mg-components/p-fe935e54.js.map +0 -1
  291. package/dist/types/components/molecules/inputs/MgInput.conf.d.ts +0 -46
  292. package/dist/types/components/molecules/inputs/MgInput.d.ts +0 -13
@@ -1,155 +0,0 @@
1
- import { h } from '@stencil/core/internal/client';
2
- import { B as Be } from './index.es.js';
3
-
4
- /**
5
- * Possible input width
6
- */
7
- const widths = [2, 4, 16, 'full'];
8
- /**
9
- * Available handlers
10
- */
11
- var Handler;
12
- (function (Handler) {
13
- Handler["BLUR"] = "blur";
14
- Handler["FOCUS"] = "focus";
15
- })(Handler || (Handler = {}));
16
- const tooltipPositions = ['input', 'label'];
17
-
18
- /**
19
- * Apply in all input child node the aria-describedby attribute
20
- * @param children - Represent scoped elements
21
- * @param ariaDescribedbyIDs - List of IDs
22
- * @param utils - Stencil.js utils
23
- * @returns Children with aria-describedby attribute
24
- */
25
- const applyAriadescribedBy = (children, ariaDescribedbyIDs, utils) => utils.map(children, child => {
26
- if (['input', 'select', 'textarea'].includes(child.vtag)) {
27
- return Object.assign(Object.assign({}, child), { vattrs: Object.assign(Object.assign({}, child.vattrs), { 'aria-describedby': [...ariaDescribedbyIDs].join(' ') }) });
28
- }
29
- // we recursively apply ariadescribedBy attributes to child input nodes if exists
30
- if (child.vchildren === null)
31
- return Object.assign({}, child);
32
- return Object.assign(Object.assign({}, child), { vchildren: applyAriadescribedBy(child.vchildren, ariaDescribedbyIDs, utils) });
33
- });
34
- /**
35
- * Add classes based on props
36
- * @param props - MgInput Interface Props
37
- */
38
- const manageClasses = (props) => {
39
- props.classCollection.add('mg-c-input');
40
- if (props.labelOnTop)
41
- props.classCollection.add('mg-c-input--label-on-top');
42
- else
43
- props.classCollection.delete('mg-c-input--label-on-top');
44
- if (props.readonly)
45
- props.classCollection.add('mg-c-input--readonly');
46
- else
47
- props.classCollection.delete('mg-c-input--readonly');
48
- widths.forEach(width => {
49
- props.classCollection.delete(`mg-c-input--width-${width}`);
50
- });
51
- if (props.mgWidth !== undefined)
52
- props.classCollection.add(`mg-c-input--width-${props.mgWidth}`);
53
- };
54
- /**
55
- * Check props configuration
56
- * @param props - MgInput Interface Props
57
- */
58
- const checkPropsConfig = (props) => {
59
- if (!Be(props.identifier)) {
60
- throw new Error('<mg-input> prop "identifier" is required.');
61
- }
62
- if (!Be(props.label)) {
63
- throw new Error('<mg-input> prop "label" is required.');
64
- }
65
- if (props.labelOnTop && props.labelHide) {
66
- throw new Error('<mg-input> prop "labelOnTop" must not be paired with the prop "labelHide".');
67
- }
68
- if (!tooltipPositions.includes(props.tooltipPosition)) {
69
- throw new Error(`<mg-input> prop "tooltipPosition" must be one of: ${tooltipPositions.join(', ')}`);
70
- }
71
- };
72
- /**
73
- * Get tagname
74
- * @param isFieldset - is fieldset
75
- * @returns tag name
76
- */
77
- const getTagName = (isFieldset, readOnly) => (!isFieldset || readOnly ? 'div' : 'fieldset');
78
- /**
79
- * MgInput Interface
80
- */
81
- /**
82
- * Get input template
83
- * @param props - MgInput Interface Props
84
- * @param children - Represent scoped elements
85
- * @param utils - Stencil.js utils
86
- * @returns input template
87
- */
88
- const MgInput = (props, children, utils) => {
89
- /**
90
- * Check props config
91
- */
92
- checkPropsConfig(props);
93
- /**
94
- * Set readonly value
95
- */
96
- if (props.readonlyValue === undefined)
97
- props.readonlyValue = props.value;
98
- /**
99
- * Component classes
100
- */
101
- manageClasses(props);
102
- /**
103
- * a11y IDs
104
- */
105
- const ariaDescribedbyIDs = new Set(props.ariaDescribedbyIDs);
106
- // Help text
107
- const helpTextId = `${props.identifier}-help-text`;
108
- if (typeof props.helpText === 'string' && props.helpText !== '') {
109
- ariaDescribedbyIDs.add(helpTextId);
110
- }
111
- // Error Message
112
- const helpTextErrorId = `${props.identifier}-error`;
113
- if (typeof props.errorMessage === 'string' && props.errorMessage !== '') {
114
- ariaDescribedbyIDs.add(helpTextErrorId);
115
- }
116
- /**
117
- * Return template
118
- *
119
- * +--------+---------+--------------+---------+
120
- * | label | tooltip | input | tooltip |
121
- * |--------+---------+--------------+---------+
122
- * | | nb Char Left |
123
- * | +------------------------+
124
- * | | Help Text |
125
- * | +------------------------+
126
- * | | Error |
127
- * +------------------+------------------------+
128
- *
129
- * Error message is based on this aria method: https://www.w3.org/WAI/tutorials/forms/notifications/#on-focus-change
130
- */
131
- const TagName = getTagName(props.isFieldset, props.readonly);
132
- /**
133
- * Get tooltip node
134
- * @returns mg-tooltip
135
- */
136
- const getTooltip = () => (h("mg-tooltip", { identifier: `${props.identifier}-tooltip`, message: props.tooltip },
137
- h("mg-icon", { icon: "info-circle" })));
138
- return (h(TagName, { class: props.classCollection.join() },
139
- h("div", { class: { 'mg-c-input__title': true, 'mg-u-visually-hidden': props.labelHide } },
140
- h("mg-input-title", { identifier: props.identifier, readonly: props.readonly, required: props.required && !props.disabled && !props.readonly, "is-legend": props.isFieldset }, props.label),
141
- props.tooltip && !props.readonly && (props.tooltipPosition === 'label' || props.labelOnTop) && !props.labelHide && getTooltip()),
142
- props.readonly ? (h("div", { class: "mg-c-input__input-container" },
143
- Array.isArray(props.readonlyValue) ? (h("ul", null, props.readonlyValue.map(value => (h("li", { key: value },
144
- h("strong", null, value)))))) : (h("strong", null, props.readonlyValue)),
145
- children.filter(child => Object.values(child).includes('append-input')))) : (h("div", { class: "mg-c-input__input-container" },
146
- h("div", { class: { 'mg-c-input__input': true, 'mg-c-input__input--has-error': props.errorMessage !== undefined } },
147
- applyAriadescribedBy(children, ariaDescribedbyIDs, utils),
148
- props.tooltip && !props.readonly && !props.labelOnTop && (props.tooltipPosition === 'input' || props.labelHide) && getTooltip()),
149
- props.helpText && h("div", { id: helpTextId, class: "mg-c-input__help-text", innerHTML: props.helpText }),
150
- props.errorMessage && !props.readonly && !props.disabled && (h("div", { id: helpTextErrorId, class: "mg-c-input__error", innerHTML: props.errorMessage, "aria-live": "assertive" }))))));
151
- };
152
-
153
- export { Handler as H, MgInput as M };
154
-
155
- //# sourceMappingURL=MgInput.js.map
@@ -1 +0,0 @@
1
- {"file":"MgInput.js","mappings":"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","names":["isValidString"],"sources":["src/components/molecules/inputs/MgInput.conf.ts","src/components/molecules/inputs/MgInput.tsx"],"sourcesContent":["import type { MgInputTitle } from '../../atoms/mg-input-title/mg-input-title';\nimport type { ClassList } from '@mgdis/stencil-helpers';\n\n/**\n * MgInput component props\n */\nexport interface MgInputProps {\n // Global\n identifier: string;\n classCollection: ClassList;\n // Label\n label: string;\n labelOnTop: boolean;\n labelHide: boolean;\n isFieldset: MgInputTitle['isLegend'];\n // Input\n value: string;\n readonlyValue: string | string[];\n required: boolean;\n readonly: boolean;\n mgWidth: Width;\n disabled: boolean;\n // Tooltip\n tooltip: string;\n tooltipPosition: TooltipPosition;\n // Help Text\n helpText: string;\n // Error Message\n errorMessage: string;\n // ariaDescribedbyIDs\n ariaDescribedbyIDs: string[];\n}\n/**\n * Possible input width\n */\nexport const widths = [2, 4, 16, 'full'] as const;\n\nexport type Width = (typeof widths)[number];\n\n/**\n * Possible Input types\n */\nexport type HTMLMgInputsElement =\n | HTMLMgInputCheckboxElement\n | HTMLMgInputDateElement\n | HTMLMgInputNumericElement\n | HTMLMgInputPasswordElement\n | HTMLMgInputRadioElement\n | HTMLMgInputSelectElement\n | HTMLMgInputTextElement\n | HTMLMgInputTextareaElement\n | (HTMLMgInputToggleElement & { required: true; invalid: false; displayError: () => void });\n\n/**\n * Available handlers\n */\nexport enum Handler {\n BLUR = 'blur',\n FOCUS = 'focus',\n}\n\nexport const tooltipPositions = ['input', 'label'] as const;\n\nexport type TooltipPosition = (typeof tooltipPositions)[number];\n","import { FunctionalComponent, h, VNode, FunctionalUtilities } from '@stencil/core';\nimport { widths, tooltipPositions, type MgInputProps } from './MgInput.conf';\nimport { isValidString } from '@mgdis/stencil-helpers';\n\n/**\n * Apply in all input child node the aria-describedby attribute\n * @param children - Represent scoped elements\n * @param ariaDescribedbyIDs - List of IDs\n * @param utils - Stencil.js utils\n * @returns Children with aria-describedby attribute\n */\nconst applyAriadescribedBy = (children: VNode[], ariaDescribedbyIDs: Set<string>, utils: FunctionalUtilities): VNode[] =>\n utils.map(children, child => {\n if (['input', 'select', 'textarea'].includes(child.vtag as string)) {\n return {\n ...child,\n vattrs: {\n ...child.vattrs,\n 'aria-describedby': [...ariaDescribedbyIDs].join(' '),\n },\n };\n }\n\n // we recursively apply ariadescribedBy attributes to child input nodes if exists\n if (child.vchildren === null) return { ...child };\n return {\n ...child,\n vchildren: applyAriadescribedBy(child.vchildren, ariaDescribedbyIDs, utils),\n };\n });\n\n/**\n * Add classes based on props\n * @param props - MgInput Interface Props\n */\nconst manageClasses = (props: MgInputProps): void => {\n props.classCollection.add('mg-c-input');\n\n if (props.labelOnTop) props.classCollection.add('mg-c-input--label-on-top');\n else props.classCollection.delete('mg-c-input--label-on-top');\n\n if (props.readonly) props.classCollection.add('mg-c-input--readonly');\n else props.classCollection.delete('mg-c-input--readonly');\n\n widths.forEach(width => {\n props.classCollection.delete(`mg-c-input--width-${width}`);\n });\n if (props.mgWidth !== undefined) props.classCollection.add(`mg-c-input--width-${props.mgWidth}`);\n};\n\n/**\n * Check props configuration\n * @param props - MgInput Interface Props\n */\nconst checkPropsConfig = (props: MgInputProps): void => {\n if (!isValidString(props.identifier)) {\n throw new Error('<mg-input> prop \"identifier\" is required.');\n }\n if (!isValidString(props.label)) {\n throw new Error('<mg-input> prop \"label\" is required.');\n }\n if (props.labelOnTop && props.labelHide) {\n throw new Error('<mg-input> prop \"labelOnTop\" must not be paired with the prop \"labelHide\".');\n }\n if (!tooltipPositions.includes(props.tooltipPosition)) {\n throw new Error(`<mg-input> prop \"tooltipPosition\" must be one of: ${tooltipPositions.join(', ')}`);\n }\n};\n\n/**\n * Get tagname\n * @param isFieldset - is fieldset\n * @returns tag name\n */\nconst getTagName = (isFieldset: MgInputProps['isFieldset'], readOnly: MgInputProps['readonly']): string => (!isFieldset || readOnly ? 'div' : 'fieldset');\n\n/**\n * MgInput Interface\n */\n\n/**\n * Get input template\n * @param props - MgInput Interface Props\n * @param children - Represent scoped elements\n * @param utils - Stencil.js utils\n * @returns input template\n */\nexport const MgInput: FunctionalComponent<MgInputProps> = (props: MgInputProps, children: VNode[], utils: FunctionalUtilities): VNode[] => {\n /**\n * Check props config\n */\n checkPropsConfig(props);\n\n /**\n * Set readonly value\n */\n if (props.readonlyValue === undefined) props.readonlyValue = props.value;\n\n /**\n * Component classes\n */\n manageClasses(props);\n\n /**\n * a11y IDs\n */\n const ariaDescribedbyIDs: Set<string> = new Set(props.ariaDescribedbyIDs);\n\n // Help text\n const helpTextId = `${props.identifier}-help-text`;\n if (typeof props.helpText === 'string' && props.helpText !== '') {\n ariaDescribedbyIDs.add(helpTextId);\n }\n\n // Error Message\n const helpTextErrorId = `${props.identifier}-error`;\n if (typeof props.errorMessage === 'string' && props.errorMessage !== '') {\n ariaDescribedbyIDs.add(helpTextErrorId);\n }\n\n /**\n * Return template\n *\n * +--------+---------+--------------+---------+\n * | label | tooltip | input | tooltip |\n * |--------+---------+--------------+---------+\n * | | nb Char Left |\n * | +------------------------+\n * | | Help Text |\n * | +------------------------+\n * | | Error |\n * +------------------+------------------------+\n *\n * Error message is based on this aria method: https://www.w3.org/WAI/tutorials/forms/notifications/#on-focus-change\n */\n\n const TagName = getTagName(props.isFieldset, props.readonly);\n\n /**\n * Get tooltip node\n * @returns mg-tooltip\n */\n const getTooltip = (): VNode[] => (\n <mg-tooltip identifier={`${props.identifier}-tooltip`} message={props.tooltip}>\n <mg-icon icon=\"info-circle\"></mg-icon>\n </mg-tooltip>\n );\n\n return (\n <TagName class={props.classCollection.join()}>\n <div class={{ 'mg-c-input__title': true, 'mg-u-visually-hidden': props.labelHide }}>\n <mg-input-title identifier={props.identifier} readonly={props.readonly} required={props.required && !props.disabled && !props.readonly} is-legend={props.isFieldset}>\n {props.label}\n </mg-input-title>\n {props.tooltip && !props.readonly && (props.tooltipPosition === 'label' || props.labelOnTop) && !props.labelHide && getTooltip()}\n </div>\n {props.readonly ? (\n <div class=\"mg-c-input__input-container\">\n {Array.isArray(props.readonlyValue) ? (\n <ul>\n {props.readonlyValue.map(value => (\n <li key={value}>\n <strong>{value}</strong>\n </li>\n ))}\n </ul>\n ) : (\n <strong>{props.readonlyValue}</strong>\n )}\n {children.filter(child => Object.values(child).includes('append-input'))}\n </div>\n ) : (\n <div class=\"mg-c-input__input-container\">\n <div class={{ 'mg-c-input__input': true, 'mg-c-input__input--has-error': props.errorMessage !== undefined }}>\n {applyAriadescribedBy(children, ariaDescribedbyIDs, utils)}\n {props.tooltip && !props.readonly && !props.labelOnTop && (props.tooltipPosition === 'input' || props.labelHide) && getTooltip()}\n </div>\n {props.helpText && <div id={helpTextId} class=\"mg-c-input__help-text\" innerHTML={props.helpText}></div>}\n {props.errorMessage && !props.readonly && !props.disabled && (\n <div id={helpTextErrorId} class=\"mg-c-input__error\" innerHTML={props.errorMessage} aria-live=\"assertive\"></div>\n )}\n </div>\n )}\n </TagName>\n );\n};\n"],"version":3}
@@ -1,16 +0,0 @@
1
- /**
2
- * Menu direction type
3
- */
4
- var Direction;
5
- (function (Direction) {
6
- Direction["VERTICAL"] = "vertical";
7
- Direction["HORIZONTAL"] = "horizontal";
8
- })(Direction || (Direction = {}));
9
- /**
10
- * List of all possibles sizes
11
- */
12
- const sizes = ['regular', 'medium', 'large'];
13
-
14
- export { Direction as D, sizes as s };
15
-
16
- //# sourceMappingURL=mg-menu.conf.js.map
@@ -1 +0,0 @@
1
- {"file":"mg-menu.conf.js","mappings":"AAEA;;;IAGY;AAAZ,WAAY,SAAS;IACnB,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;AAC3B,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAOD;;;MAGa,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO;;;;","names":[],"sources":["src/components/molecules/menu/mg-menu/mg-menu.conf.ts"],"sourcesContent":["import { MgItemMore } from '../../mg-item-more/mg-item-more';\n\n/**\n * Menu direction type\n */\nexport enum Direction {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n}\n\n/**\n * ItemMore prop type\n */\nexport type ItemMoreType = Pick<MgItemMore, 'icon' | 'slotlabel' | 'size'>;\n\n/**\n * List of all possibles sizes\n */\nexport const sizes = ['regular', 'medium', 'large'] as const;\n\n/**\n * item Size from sizes\n */\nexport type MenuSizeType = (typeof sizes)[number];\n"],"version":3}
@@ -1,202 +0,0 @@
1
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
- import { D as Direction, s as sizes } from './mg-menu.conf.js';
3
-
4
- const mgMenuCss = ".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host{display:flex;background-color:hsl(var(--mg-menu-background-color-hsl, var(--color-light)))}:host([direction=vertical]){height:100%;flex-direction:column;overflow-y:auto}";
5
- const MgMenuStyle0 = mgMenuCss;
6
-
7
- const MgMenu = /*@__PURE__*/ proxyCustomElement(class MgMenu extends HTMLElement {
8
- constructor() {
9
- super();
10
- this.__registerHost();
11
- this.__attachShadow();
12
- /************
13
- * Internal *
14
- ************/
15
- this.name = 'mg-menu';
16
- this.menuItems = [];
17
- this.focusedMenuItem = 0;
18
- /*************
19
- * Methods *
20
- *************/
21
- /**
22
- * Close matching menu-item
23
- * @param item - menu-item to close
24
- * @param condition - addionnal condition
25
- */
26
- this.closeMenuItem = (item, condition) => {
27
- if (!this.isChildMenu && condition) {
28
- item.expanded = false;
29
- }
30
- };
31
- /**
32
- * get mg-item-more element
33
- * @returns mg-item-more element
34
- */
35
- this.getItemMore = () => this.element.querySelector('mg-item-more');
36
- /**
37
- * get mg-item-more child mg-menu-item element
38
- * @returns mg-menu-item element
39
- */
40
- this.getItemMoreMenuItem = () => { var _a, _b; return (_b = (_a = this.getItemMore()) === null || _a === void 0 ? void 0 : _a.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('mg-menu-item'); };
41
- /**
42
- * Set item listend
43
- * @param item - mg-menu-item element
44
- * @param index - number
45
- */
46
- this.setItemListener = (item, index) => {
47
- ['click', 'focus'].forEach(trigger => {
48
- (item.shadowRoot.querySelector('button') || item.shadowRoot.querySelector('a')).addEventListener(trigger, () => {
49
- this.focusedMenuItem = index;
50
- // reset expanded on previous active menu item
51
- (this.getItemMoreMenuItem() ? [...this.menuItems, this.getItemMoreMenuItem()] : this.menuItems).forEach((item, index) => {
52
- this.closeMenuItem(item, index !== this.focusedMenuItem);
53
- });
54
- });
55
- });
56
- };
57
- /**
58
- * Store menu-items on component init and add listeners
59
- */
60
- this.initMenuItemsListeners = () => {
61
- // add listeners on menu item and edit index
62
- this.menuItems.forEach((item, index) => {
63
- this.setItemListener(item, index);
64
- });
65
- };
66
- /**
67
- * Handle item-loaded event on mg-item-more element
68
- */
69
- this.handleItemLoaded = () => {
70
- this.setItemListener(this.getItemMoreMenuItem(), this.menuItems.length);
71
- };
72
- /**
73
- * render mg-item-more
74
- */
75
- this.renderMgItemMore = () => {
76
- // /!\ externalise item tag name to get a string type and bypass type checking when value is used in next createElement
77
- // by doing this we prevent stencil to generate a circular dependencies graph at build time with mg-item-more component.
78
- const item = 'mg-item-more';
79
- const mgItemMore = document.createElement(item);
80
- Object.assign(mgItemMore, this.itemmore);
81
- mgItemMore.addEventListener('item-loaded', this.handleItemLoaded);
82
- this.element.appendChild(mgItemMore);
83
- };
84
- this.label = undefined;
85
- this.direction = Direction.HORIZONTAL;
86
- this.itemmore = undefined;
87
- this.size = 'regular';
88
- this.isChildMenu = undefined;
89
- }
90
- validateLabel(newValue) {
91
- if (newValue === undefined) {
92
- throw new Error(`<${this.name}> prop "label" is required.`);
93
- }
94
- }
95
- validateDirection(newValue) {
96
- if (![Direction.VERTICAL, Direction.HORIZONTAL].includes(newValue)) {
97
- throw new Error(`<${this.name}> prop "direction" must be one of: ${Direction.HORIZONTAL}, ${Direction.VERTICAL}.`);
98
- }
99
- }
100
- validateItemMore(newValue) {
101
- if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {
102
- throw new Error(`<${this.name}> prop "itemmore" must be paired with direction ${Direction.HORIZONTAL}.`);
103
- }
104
- }
105
- validateSize(newValue) {
106
- if (!sizes.includes(newValue)) {
107
- throw new Error(`<${this.name}> prop "size" must be one of: ${sizes.join(', ')}.`);
108
- }
109
- }
110
- /*************
111
- * Lifecycle *
112
- *************/
113
- /**
114
- * Validate props
115
- */
116
- componentWillLoad() {
117
- this.validateDirection(this.direction);
118
- this.validateLabel(this.label);
119
- this.validateItemMore(this.itemmore);
120
- this.validateSize(this.size);
121
- }
122
- /**
123
- * Check if component slots configuration
124
- * @returns timeout
125
- */
126
- componentDidLoad() {
127
- // update props and states after componentDidLoad hook
128
- // return a promise to process action only in the FIRST render().
129
- // https://stenciljs.com/docs/component-lifecycle#componentwillload
130
- return setTimeout(() => {
131
- // store all menu-items
132
- this.menuItems = Array.from(this.element.children).filter(child => child.nodeName === 'MG-MENU-ITEM');
133
- this.isChildMenu = this.element.closest('mg-menu-item') !== null;
134
- // add mg-item-more to manage OverflowBehavior
135
- if (this.direction === Direction.HORIZONTAL && !this.isChildMenu)
136
- this.renderMgItemMore();
137
- // use mutation observer to improve reactivity
138
- new MutationObserver(entries => {
139
- const mgItemMore = this.getItemMore();
140
- // prevent infinit loop by exclude mg-item-more deletion entry
141
- if (entries.some(entry => entry.type === 'childList' && Array.from(entry.removedNodes).some(node => node.nodeName === 'MG-ITEM-MORE')))
142
- return;
143
- else if (mgItemMore !== null) {
144
- // render a new mg-item-more
145
- mgItemMore.remove();
146
- mgItemMore.removeEventListener('item-loaded', this.handleItemLoaded);
147
- this.renderMgItemMore();
148
- }
149
- }).observe(this.element, { childList: true, characterData: true, subtree: true });
150
- }, 0);
151
- }
152
- /**
153
- * Add listeners to items
154
- */
155
- componentDidRender() {
156
- this.initMenuItemsListeners();
157
- }
158
- /**
159
- * Render
160
- * @returns HTML Element
161
- */
162
- render() {
163
- return (h(Host, { key: '22c0f16663ac432526aef9d0ec1c3d9152b8ca3a', role: "list", "aria-label": this.label }, h("slot", { key: 'de77bd6471725518cf14b9a75fb513a3d65a8033' })));
164
- }
165
- get element() { return this; }
166
- static get watchers() { return {
167
- "label": ["validateLabel"],
168
- "direction": ["validateDirection"],
169
- "itemmore": ["validateItemMore"],
170
- "size": ["validateSize"]
171
- }; }
172
- static get style() { return MgMenuStyle0; }
173
- }, [1, "mg-menu", {
174
- "label": [1],
175
- "direction": [513],
176
- "itemmore": [16],
177
- "size": [1],
178
- "isChildMenu": [32]
179
- }, undefined, {
180
- "label": ["validateLabel"],
181
- "direction": ["validateDirection"],
182
- "itemmore": ["validateItemMore"],
183
- "size": ["validateSize"]
184
- }]);
185
- function defineCustomElement() {
186
- if (typeof customElements === "undefined") {
187
- return;
188
- }
189
- const components = ["mg-menu"];
190
- components.forEach(tagName => { switch (tagName) {
191
- case "mg-menu":
192
- if (!customElements.get(tagName)) {
193
- customElements.define(tagName, MgMenu);
194
- }
195
- break;
196
- } });
197
- }
198
- defineCustomElement();
199
-
200
- export { MgMenu as M, defineCustomElement as d };
201
-
202
- //# sourceMappingURL=mg-menu2.js.map
@@ -1 +0,0 @@
1
- {"file":"mg-menu2.js","mappings":"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","names":[],"sources":["../styles/dist/components/mg-menu.css?tag=mg-menu&encapsulation=shadow","src/components/molecules/menu/mg-menu/mg-menu.tsx"],"sourcesContent":[".mg-u-visually-hidden{position:absolute !important;overflow:hidden !important;width:.1rem !important;height:.1rem !important;padding:0 !important;border:0 !important;margin:-0.1rem !important;clip:rect(0.1rem, 0.1rem, 0.1rem, 0.1rem) !important;clip-path:inset(50%) !important;white-space:nowrap !important}*:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion){*{animation:none !important;transition:none !important}}:host{display:flex;background-color:hsl(var(--mg-menu-background-color-hsl, var(--color-light)))}:host([direction=vertical]){height:100%;flex-direction:column;overflow-y:auto}/*# sourceMappingURL=mg-menu.css.map */\n","import { Component, h, Prop, State, Element, Watch, Host } from '@stencil/core';\nimport { Direction, sizes } from './mg-menu.conf';\nimport type { MenuSizeType, ItemMoreType } from './mg-menu.conf';\n\n@Component({\n tag: 'mg-menu',\n styleUrl: '../../../../../node_modules/@mgdis/styles/dist/components/mg-menu.css',\n shadow: true,\n})\nexport class MgMenu {\n /************\n * Internal *\n ************/\n\n private readonly name = 'mg-menu';\n private menuItems: HTMLMgMenuItemElement[] = [];\n private focusedMenuItem = 0;\n\n /**************\n * Decorators *\n **************/\n\n /**\n * Get component DOM element\n */\n @Element() element: HTMLMgMenuElement;\n\n /**\n * Menu label. Include short menu description.\n * Required for accessibility\n */\n @Prop() label!: string;\n @Watch('label')\n validateLabel(newValue: MgMenu['label']): void {\n if (newValue === undefined) {\n throw new Error(`<${this.name}> prop \"label\" is required.`);\n }\n }\n\n /**\n * Component display direction.\n */\n @Prop({ reflect: true }) direction: Direction = Direction.HORIZONTAL;\n @Watch('direction')\n validateDirection(newValue: MgMenu['direction']): void {\n if (![Direction.VERTICAL, Direction.HORIZONTAL].includes(newValue)) {\n throw new Error(`<${this.name}> prop \"direction\" must be one of: ${Direction.HORIZONTAL}, ${Direction.VERTICAL}.`);\n }\n }\n\n /**\n * Customize \"mg-item-more\" element\n * Used with direction: 'vertical' to manage overflow\n */\n @Prop() itemmore: ItemMoreType;\n @Watch('itemmore')\n validateItemMore(newValue: MgMenu['itemmore']): void {\n if (newValue !== undefined && this.direction !== Direction.HORIZONTAL) {\n throw new Error(`<${this.name}> prop \"itemmore\" must be paired with direction ${Direction.HORIZONTAL}.`);\n }\n }\n\n /**\n * Define mg-menu size\n */\n @Prop() size: MenuSizeType = 'regular';\n @Watch('size')\n validateSize(newValue: MgMenu['size']): void {\n if (!sizes.includes(newValue)) {\n throw new Error(`<${this.name}> prop \"size\" must be one of: ${sizes.join(', ')}.`);\n }\n }\n\n /**\n * is this menu a child menu. Used for conditional render.\n */\n @State() isChildMenu: boolean;\n\n /*************\n * Methods *\n *************/\n\n /**\n * Close matching menu-item\n * @param item - menu-item to close\n * @param condition - addionnal condition\n */\n private closeMenuItem = (item: HTMLMgMenuItemElement, condition: boolean): void => {\n if (!this.isChildMenu && condition) {\n item.expanded = false;\n }\n };\n\n /**\n * get mg-item-more element\n * @returns mg-item-more element\n */\n private getItemMore = (): HTMLMgItemMoreElement => this.element.querySelector('mg-item-more');\n\n /**\n * get mg-item-more child mg-menu-item element\n * @returns mg-menu-item element\n */\n private getItemMoreMenuItem = (): HTMLMgMenuItemElement => this.getItemMore()?.shadowRoot?.querySelector('mg-menu-item');\n\n /**\n * Set item listend\n * @param item - mg-menu-item element\n * @param index - number\n */\n private setItemListener = (item: HTMLMgMenuItemElement, index: MgMenu['focusedMenuItem']): void => {\n ['click', 'focus'].forEach(trigger => {\n (item.shadowRoot.querySelector('button') || item.shadowRoot.querySelector('a')).addEventListener(trigger, () => {\n this.focusedMenuItem = index;\n // reset expanded on previous active menu item\n (this.getItemMoreMenuItem() ? [...this.menuItems, this.getItemMoreMenuItem()] : this.menuItems).forEach((item, index) => {\n this.closeMenuItem(item, index !== this.focusedMenuItem);\n });\n });\n });\n };\n\n /**\n * Store menu-items on component init and add listeners\n */\n private initMenuItemsListeners = (): void => {\n // add listeners on menu item and edit index\n this.menuItems.forEach((item, index) => {\n this.setItemListener(item, index);\n });\n };\n\n /**\n * Handle item-loaded event on mg-item-more element\n */\n private handleItemLoaded = (): void => {\n this.setItemListener(this.getItemMoreMenuItem(), this.menuItems.length);\n };\n\n /**\n * render mg-item-more\n */\n private renderMgItemMore = (): void => {\n // /!\\ externalise item tag name to get a string type and bypass type checking when value is used in next createElement\n // by doing this we prevent stencil to generate a circular dependencies graph at build time with mg-item-more component.\n const item = 'mg-item-more';\n const mgItemMore = document.createElement(item);\n Object.assign(mgItemMore, this.itemmore);\n mgItemMore.addEventListener('item-loaded', this.handleItemLoaded);\n this.element.appendChild(mgItemMore);\n };\n\n /*************\n * Lifecycle *\n *************/\n\n /**\n * Validate props\n */\n componentWillLoad(): void {\n this.validateDirection(this.direction);\n this.validateLabel(this.label);\n this.validateItemMore(this.itemmore);\n this.validateSize(this.size);\n }\n\n /**\n * Check if component slots configuration\n * @returns timeout\n */\n componentDidLoad(): ReturnType<typeof setTimeout> {\n // update props and states after componentDidLoad hook\n // return a promise to process action only in the FIRST render().\n // https://stenciljs.com/docs/component-lifecycle#componentwillload\n return setTimeout(() => {\n // store all menu-items\n this.menuItems = Array.from(this.element.children).filter(child => child.nodeName === 'MG-MENU-ITEM') as HTMLMgMenuItemElement[];\n this.isChildMenu = this.element.closest('mg-menu-item') !== null;\n\n // add mg-item-more to manage OverflowBehavior\n if (this.direction === Direction.HORIZONTAL && !this.isChildMenu) this.renderMgItemMore();\n\n // use mutation observer to improve reactivity\n new MutationObserver(entries => {\n const mgItemMore = this.getItemMore();\n // prevent infinit loop by exclude mg-item-more deletion entry\n if (entries.some(entry => entry.type === 'childList' && Array.from(entry.removedNodes).some(node => node.nodeName === 'MG-ITEM-MORE'))) return;\n else if (mgItemMore !== null) {\n // render a new mg-item-more\n mgItemMore.remove();\n mgItemMore.removeEventListener('item-loaded', this.handleItemLoaded);\n this.renderMgItemMore();\n }\n }).observe(this.element, { childList: true, characterData: true, subtree: true });\n }, 0);\n }\n\n /**\n * Add listeners to items\n */\n componentDidRender(): void {\n this.initMenuItemsListeners();\n }\n\n /**\n * Render\n * @returns HTML Element\n */\n render(): HTMLElement {\n return (\n <Host role=\"list\" aria-label={this.label}>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"version":3}