@gouvfr/dsfr 1.4.0 → 1.4.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 (427) hide show
  1. package/.config/config.js +1 -1
  2. package/.config/icon-deprecated.scss +1 -1
  3. package/.config/icon.scss +1 -1
  4. package/dist/component/accordion/accordion.css +1 -1
  5. package/dist/component/accordion/accordion.legacy.css +1 -1
  6. package/dist/component/accordion/accordion.legacy.min.css +1 -1
  7. package/dist/component/accordion/accordion.main.css +1 -1
  8. package/dist/component/accordion/accordion.main.min.css +1 -1
  9. package/dist/component/accordion/accordion.min.css +1 -1
  10. package/dist/component/accordion/accordion.module.js +2 -2
  11. package/dist/component/accordion/accordion.module.js.map +1 -1
  12. package/dist/component/accordion/accordion.module.min.js +1 -1
  13. package/dist/component/accordion/accordion.module.min.js.map +1 -1
  14. package/dist/component/accordion/accordion.nomodule.js +2 -2
  15. package/dist/component/accordion/accordion.nomodule.js.map +1 -1
  16. package/dist/component/accordion/accordion.nomodule.min.js +1 -1
  17. package/dist/component/accordion/accordion.nomodule.min.js.map +1 -1
  18. package/dist/component/alert/alert.css +1 -1
  19. package/dist/component/alert/alert.legacy.css +1 -1
  20. package/dist/component/alert/alert.legacy.min.css +2 -2
  21. package/dist/component/alert/alert.main.css +1 -1
  22. package/dist/component/alert/alert.main.min.css +1 -1
  23. package/dist/component/alert/alert.min.css +2 -2
  24. package/dist/component/badge/badge.css +1 -1
  25. package/dist/component/badge/badge.legacy.css +1 -1
  26. package/dist/component/badge/badge.legacy.min.css +1 -1
  27. package/dist/component/badge/badge.main.css +1 -1
  28. package/dist/component/badge/badge.main.min.css +1 -1
  29. package/dist/component/badge/badge.min.css +1 -1
  30. package/dist/component/breadcrumb/breadcrumb.css +1 -1
  31. package/dist/component/breadcrumb/breadcrumb.legacy.css +1 -1
  32. package/dist/component/breadcrumb/breadcrumb.legacy.min.css +1 -1
  33. package/dist/component/breadcrumb/breadcrumb.main.css +1 -1
  34. package/dist/component/breadcrumb/breadcrumb.main.min.css +1 -1
  35. package/dist/component/breadcrumb/breadcrumb.min.css +1 -1
  36. package/dist/component/breadcrumb/breadcrumb.module.js +2 -2
  37. package/dist/component/breadcrumb/breadcrumb.module.js.map +1 -1
  38. package/dist/component/breadcrumb/breadcrumb.module.min.js +1 -1
  39. package/dist/component/breadcrumb/breadcrumb.module.min.js.map +1 -1
  40. package/dist/component/breadcrumb/breadcrumb.nomodule.js +2 -2
  41. package/dist/component/breadcrumb/breadcrumb.nomodule.js.map +1 -1
  42. package/dist/component/breadcrumb/breadcrumb.nomodule.min.js +1 -1
  43. package/dist/component/breadcrumb/breadcrumb.nomodule.min.js.map +1 -1
  44. package/dist/component/button/button.css +1 -1
  45. package/dist/component/button/button.legacy.css +1 -1
  46. package/dist/component/button/button.legacy.min.css +1 -1
  47. package/dist/component/button/button.main.css +1 -1
  48. package/dist/component/button/button.main.min.css +1 -1
  49. package/dist/component/button/button.min.css +1 -1
  50. package/dist/component/button/button.module.js +2 -2
  51. package/dist/component/button/button.module.js.map +1 -1
  52. package/dist/component/button/button.module.min.js +1 -1
  53. package/dist/component/button/button.module.min.js.map +1 -1
  54. package/dist/component/button/button.nomodule.js +2 -2
  55. package/dist/component/button/button.nomodule.js.map +1 -1
  56. package/dist/component/button/button.nomodule.min.js +1 -1
  57. package/dist/component/button/button.nomodule.min.js.map +1 -1
  58. package/dist/component/callout/callout.css +1 -1
  59. package/dist/component/callout/callout.legacy.css +1 -1
  60. package/dist/component/callout/callout.legacy.min.css +1 -1
  61. package/dist/component/callout/callout.main.css +1 -1
  62. package/dist/component/callout/callout.main.min.css +1 -1
  63. package/dist/component/callout/callout.min.css +1 -1
  64. package/dist/component/card/card.css +1 -1
  65. package/dist/component/card/card.legacy.css +1 -1
  66. package/dist/component/card/card.legacy.min.css +1 -1
  67. package/dist/component/card/card.main.css +1 -1
  68. package/dist/component/card/card.main.min.css +1 -1
  69. package/dist/component/card/card.min.css +1 -1
  70. package/dist/component/checkbox/checkbox.css +1 -1
  71. package/dist/component/checkbox/checkbox.legacy.css +1 -1
  72. package/dist/component/checkbox/checkbox.legacy.min.css +1 -1
  73. package/dist/component/checkbox/checkbox.main.css +1 -1
  74. package/dist/component/checkbox/checkbox.main.min.css +1 -1
  75. package/dist/component/checkbox/checkbox.min.css +1 -1
  76. package/dist/component/component.css +74 -233
  77. package/dist/component/component.css.map +1 -1
  78. package/dist/component/component.legacy.css +33 -21
  79. package/dist/component/component.legacy.css.map +1 -1
  80. package/dist/component/component.legacy.min.css +2 -2
  81. package/dist/component/component.legacy.min.css.map +1 -1
  82. package/dist/component/component.main.css +42 -213
  83. package/dist/component/component.main.css.map +1 -1
  84. package/dist/component/component.main.min.css +2 -2
  85. package/dist/component/component.main.min.css.map +1 -1
  86. package/dist/component/component.min.css +3 -3
  87. package/dist/component/component.min.css.map +1 -1
  88. package/dist/component/component.module.js +2 -2
  89. package/dist/component/component.module.js.map +1 -1
  90. package/dist/component/component.module.min.js +1 -1
  91. package/dist/component/component.module.min.js.map +1 -1
  92. package/dist/component/component.nomodule.js +2 -2
  93. package/dist/component/component.nomodule.js.map +1 -1
  94. package/dist/component/component.nomodule.min.js +1 -1
  95. package/dist/component/component.nomodule.min.js.map +1 -1
  96. package/dist/component/connect/connect.css +1 -1
  97. package/dist/component/connect/connect.legacy.css +1 -1
  98. package/dist/component/connect/connect.legacy.min.css +1 -1
  99. package/dist/component/connect/connect.main.css +1 -1
  100. package/dist/component/connect/connect.main.min.css +1 -1
  101. package/dist/component/connect/connect.min.css +1 -1
  102. package/dist/component/consent/consent.css +1 -1
  103. package/dist/component/consent/consent.legacy.css +1 -1
  104. package/dist/component/consent/consent.legacy.min.css +1 -1
  105. package/dist/component/consent/consent.main.css +1 -1
  106. package/dist/component/consent/consent.main.min.css +1 -1
  107. package/dist/component/consent/consent.min.css +1 -1
  108. package/dist/component/content/content.css +1 -1
  109. package/dist/component/content/content.legacy.css +1 -1
  110. package/dist/component/content/content.legacy.min.css +1 -1
  111. package/dist/component/content/content.main.css +1 -1
  112. package/dist/component/content/content.main.min.css +1 -1
  113. package/dist/component/content/content.min.css +1 -1
  114. package/dist/component/display/display.module.js +2 -2
  115. package/dist/component/display/display.module.js.map +1 -1
  116. package/dist/component/display/display.module.min.js +1 -1
  117. package/dist/component/display/display.module.min.js.map +1 -1
  118. package/dist/component/display/display.nomodule.js +2 -2
  119. package/dist/component/display/display.nomodule.js.map +1 -1
  120. package/dist/component/display/display.nomodule.min.js +1 -1
  121. package/dist/component/display/display.nomodule.min.js.map +1 -1
  122. package/dist/component/follow/follow.css +13 -200
  123. package/dist/component/follow/follow.css.map +1 -1
  124. package/dist/component/follow/follow.legacy.css +1 -1
  125. package/dist/component/follow/follow.legacy.min.css +1 -1
  126. package/dist/component/follow/follow.main.css +13 -200
  127. package/dist/component/follow/follow.main.css.map +1 -1
  128. package/dist/component/follow/follow.main.min.css +2 -2
  129. package/dist/component/follow/follow.main.min.css.map +1 -1
  130. package/dist/component/follow/follow.min.css +2 -2
  131. package/dist/component/follow/follow.min.css.map +1 -1
  132. package/dist/component/footer/footer.css +1 -1
  133. package/dist/component/footer/footer.legacy.css +1 -1
  134. package/dist/component/footer/footer.legacy.min.css +1 -1
  135. package/dist/component/footer/footer.main.css +1 -1
  136. package/dist/component/footer/footer.main.min.css +1 -1
  137. package/dist/component/footer/footer.min.css +1 -1
  138. package/dist/component/form/form.css +1 -1
  139. package/dist/component/form/form.legacy.css +1 -1
  140. package/dist/component/form/form.legacy.min.css +1 -1
  141. package/dist/component/form/form.main.css +1 -1
  142. package/dist/component/form/form.main.min.css +1 -1
  143. package/dist/component/form/form.min.css +1 -1
  144. package/dist/component/header/header.css +1 -1
  145. package/dist/component/header/header.legacy.css +1 -1
  146. package/dist/component/header/header.legacy.min.css +1 -1
  147. package/dist/component/header/header.main.css +1 -1
  148. package/dist/component/header/header.main.min.css +1 -1
  149. package/dist/component/header/header.min.css +1 -1
  150. package/dist/component/header/header.module.js +2 -2
  151. package/dist/component/header/header.module.js.map +1 -1
  152. package/dist/component/header/header.module.min.js +1 -1
  153. package/dist/component/header/header.module.min.js.map +1 -1
  154. package/dist/component/header/header.nomodule.js +2 -2
  155. package/dist/component/header/header.nomodule.js.map +1 -1
  156. package/dist/component/header/header.nomodule.min.js +1 -1
  157. package/dist/component/header/header.nomodule.min.js.map +1 -1
  158. package/dist/component/highlight/highlight.css +1 -1
  159. package/dist/component/highlight/highlight.legacy.css +1 -1
  160. package/dist/component/highlight/highlight.legacy.min.css +1 -1
  161. package/dist/component/highlight/highlight.main.css +1 -1
  162. package/dist/component/highlight/highlight.main.min.css +1 -1
  163. package/dist/component/highlight/highlight.min.css +1 -1
  164. package/dist/component/input/input.css +1 -1
  165. package/dist/component/input/input.legacy.css +1 -1
  166. package/dist/component/input/input.legacy.min.css +1 -1
  167. package/dist/component/input/input.main.css +1 -1
  168. package/dist/component/input/input.main.min.css +1 -1
  169. package/dist/component/input/input.min.css +1 -1
  170. package/dist/component/link/link.css +1 -1
  171. package/dist/component/link/link.legacy.css +1 -1
  172. package/dist/component/link/link.legacy.min.css +1 -1
  173. package/dist/component/link/link.main.css +1 -1
  174. package/dist/component/link/link.main.min.css +1 -1
  175. package/dist/component/link/link.min.css +1 -1
  176. package/dist/component/logo/logo.css +1 -1
  177. package/dist/component/logo/logo.legacy.css +1 -1
  178. package/dist/component/logo/logo.legacy.min.css +1 -1
  179. package/dist/component/logo/logo.main.css +1 -1
  180. package/dist/component/logo/logo.main.min.css +1 -1
  181. package/dist/component/logo/logo.min.css +1 -1
  182. package/dist/component/modal/modal.css +1 -1
  183. package/dist/component/modal/modal.legacy.css +1 -1
  184. package/dist/component/modal/modal.legacy.min.css +1 -1
  185. package/dist/component/modal/modal.main.css +1 -1
  186. package/dist/component/modal/modal.main.min.css +1 -1
  187. package/dist/component/modal/modal.min.css +1 -1
  188. package/dist/component/modal/modal.module.js +2 -2
  189. package/dist/component/modal/modal.module.js.map +1 -1
  190. package/dist/component/modal/modal.module.min.js +1 -1
  191. package/dist/component/modal/modal.module.min.js.map +1 -1
  192. package/dist/component/modal/modal.nomodule.js +2 -2
  193. package/dist/component/modal/modal.nomodule.js.map +1 -1
  194. package/dist/component/modal/modal.nomodule.min.js +1 -1
  195. package/dist/component/modal/modal.nomodule.min.js.map +1 -1
  196. package/dist/component/navigation/navigation.css +1 -1
  197. package/dist/component/navigation/navigation.legacy.css +1 -1
  198. package/dist/component/navigation/navigation.legacy.min.css +1 -1
  199. package/dist/component/navigation/navigation.main.css +1 -1
  200. package/dist/component/navigation/navigation.main.min.css +1 -1
  201. package/dist/component/navigation/navigation.min.css +1 -1
  202. package/dist/component/navigation/navigation.module.js +2 -2
  203. package/dist/component/navigation/navigation.module.js.map +1 -1
  204. package/dist/component/navigation/navigation.module.min.js +1 -1
  205. package/dist/component/navigation/navigation.module.min.js.map +1 -1
  206. package/dist/component/navigation/navigation.nomodule.js +2 -2
  207. package/dist/component/navigation/navigation.nomodule.js.map +1 -1
  208. package/dist/component/navigation/navigation.nomodule.min.js +1 -1
  209. package/dist/component/navigation/navigation.nomodule.min.js.map +1 -1
  210. package/dist/component/pagination/pagination.css +1 -1
  211. package/dist/component/pagination/pagination.legacy.css +1 -1
  212. package/dist/component/pagination/pagination.legacy.min.css +1 -1
  213. package/dist/component/pagination/pagination.main.css +1 -1
  214. package/dist/component/pagination/pagination.main.min.css +1 -1
  215. package/dist/component/pagination/pagination.min.css +1 -1
  216. package/dist/component/quote/quote.css +1 -1
  217. package/dist/component/quote/quote.legacy.css +1 -1
  218. package/dist/component/quote/quote.legacy.min.css +1 -1
  219. package/dist/component/quote/quote.main.css +1 -1
  220. package/dist/component/quote/quote.main.min.css +1 -1
  221. package/dist/component/quote/quote.min.css +1 -1
  222. package/dist/component/radio/radio.css +1 -1
  223. package/dist/component/radio/radio.legacy.css +1 -1
  224. package/dist/component/radio/radio.legacy.min.css +1 -1
  225. package/dist/component/radio/radio.main.css +1 -1
  226. package/dist/component/radio/radio.main.min.css +1 -1
  227. package/dist/component/radio/radio.min.css +1 -1
  228. package/dist/component/search/search.css +1 -1
  229. package/dist/component/search/search.legacy.css +1 -1
  230. package/dist/component/search/search.legacy.min.css +1 -1
  231. package/dist/component/search/search.main.css +1 -1
  232. package/dist/component/search/search.main.min.css +1 -1
  233. package/dist/component/search/search.min.css +1 -1
  234. package/dist/component/select/select.css +1 -1
  235. package/dist/component/select/select.legacy.css +1 -1
  236. package/dist/component/select/select.legacy.min.css +1 -1
  237. package/dist/component/select/select.main.css +1 -1
  238. package/dist/component/select/select.main.min.css +1 -1
  239. package/dist/component/select/select.min.css +1 -1
  240. package/dist/component/share/share.css +1 -1
  241. package/dist/component/share/share.legacy.css +1 -1
  242. package/dist/component/share/share.legacy.min.css +1 -1
  243. package/dist/component/share/share.main.css +1 -1
  244. package/dist/component/share/share.main.min.css +2 -2
  245. package/dist/component/share/share.min.css +2 -2
  246. package/dist/component/sidemenu/sidemenu.css +1 -1
  247. package/dist/component/sidemenu/sidemenu.legacy.css +1 -1
  248. package/dist/component/sidemenu/sidemenu.legacy.min.css +1 -1
  249. package/dist/component/sidemenu/sidemenu.main.css +1 -1
  250. package/dist/component/sidemenu/sidemenu.main.min.css +1 -1
  251. package/dist/component/sidemenu/sidemenu.min.css +1 -1
  252. package/dist/component/sidemenu/sidemenu.module.js +2 -2
  253. package/dist/component/sidemenu/sidemenu.module.js.map +1 -1
  254. package/dist/component/sidemenu/sidemenu.module.min.js +1 -1
  255. package/dist/component/sidemenu/sidemenu.module.min.js.map +1 -1
  256. package/dist/component/sidemenu/sidemenu.nomodule.js +2 -2
  257. package/dist/component/sidemenu/sidemenu.nomodule.js.map +1 -1
  258. package/dist/component/sidemenu/sidemenu.nomodule.min.js +1 -1
  259. package/dist/component/sidemenu/sidemenu.nomodule.min.js.map +1 -1
  260. package/dist/component/skiplink/skiplink.css +1 -1
  261. package/dist/component/skiplink/skiplink.legacy.css +1 -1
  262. package/dist/component/skiplink/skiplink.legacy.min.css +1 -1
  263. package/dist/component/skiplink/skiplink.main.css +1 -1
  264. package/dist/component/skiplink/skiplink.main.min.css +1 -1
  265. package/dist/component/skiplink/skiplink.min.css +1 -1
  266. package/dist/component/summary/summary.css +1 -1
  267. package/dist/component/summary/summary.legacy.css +1 -1
  268. package/dist/component/summary/summary.legacy.min.css +2 -2
  269. package/dist/component/summary/summary.main.css +1 -1
  270. package/dist/component/summary/summary.main.min.css +1 -1
  271. package/dist/component/summary/summary.min.css +2 -2
  272. package/dist/component/tab/tab.css +1 -1
  273. package/dist/component/tab/tab.legacy.css +1 -1
  274. package/dist/component/tab/tab.legacy.min.css +1 -1
  275. package/dist/component/tab/tab.main.css +1 -1
  276. package/dist/component/tab/tab.main.min.css +1 -1
  277. package/dist/component/tab/tab.min.css +1 -1
  278. package/dist/component/tab/tab.module.js +2 -2
  279. package/dist/component/tab/tab.module.js.map +1 -1
  280. package/dist/component/tab/tab.module.min.js +1 -1
  281. package/dist/component/tab/tab.module.min.js.map +1 -1
  282. package/dist/component/tab/tab.nomodule.js +2 -2
  283. package/dist/component/tab/tab.nomodule.js.map +1 -1
  284. package/dist/component/tab/tab.nomodule.min.js +1 -1
  285. package/dist/component/tab/tab.nomodule.min.js.map +1 -1
  286. package/dist/component/table/table.css +1 -1
  287. package/dist/component/table/table.legacy.css +1 -1
  288. package/dist/component/table/table.legacy.min.css +1 -1
  289. package/dist/component/table/table.main.css +1 -1
  290. package/dist/component/table/table.main.min.css +1 -1
  291. package/dist/component/table/table.min.css +1 -1
  292. package/dist/component/table/table.module.js +2 -2
  293. package/dist/component/table/table.module.js.map +1 -1
  294. package/dist/component/table/table.module.min.js +1 -1
  295. package/dist/component/table/table.module.min.js.map +1 -1
  296. package/dist/component/table/table.nomodule.js +2 -2
  297. package/dist/component/table/table.nomodule.js.map +1 -1
  298. package/dist/component/table/table.nomodule.min.js +1 -1
  299. package/dist/component/table/table.nomodule.min.js.map +1 -1
  300. package/dist/component/tag/tag.css +112 -80
  301. package/dist/component/tag/tag.css.map +1 -1
  302. package/dist/component/tag/tag.legacy.css +61 -55
  303. package/dist/component/tag/tag.legacy.css.map +1 -1
  304. package/dist/component/tag/tag.legacy.min.css +2 -2
  305. package/dist/component/tag/tag.legacy.min.css.map +1 -1
  306. package/dist/component/tag/tag.main.css +52 -26
  307. package/dist/component/tag/tag.main.css.map +1 -1
  308. package/dist/component/tag/tag.main.min.css +2 -2
  309. package/dist/component/tag/tag.main.min.css.map +1 -1
  310. package/dist/component/tag/tag.min.css +2 -2
  311. package/dist/component/tag/tag.min.css.map +1 -1
  312. package/dist/component/tag/tag.module.js +2 -2
  313. package/dist/component/tag/tag.module.js.map +1 -1
  314. package/dist/component/tag/tag.module.min.js +1 -1
  315. package/dist/component/tag/tag.module.min.js.map +1 -1
  316. package/dist/component/tag/tag.nomodule.js +2 -2
  317. package/dist/component/tag/tag.nomodule.js.map +1 -1
  318. package/dist/component/tag/tag.nomodule.min.js +1 -1
  319. package/dist/component/tag/tag.nomodule.min.js.map +1 -1
  320. package/dist/component/tile/tile.css +1 -1
  321. package/dist/component/tile/tile.legacy.css +1 -1
  322. package/dist/component/tile/tile.legacy.min.css +1 -1
  323. package/dist/component/tile/tile.main.css +1 -1
  324. package/dist/component/tile/tile.main.min.css +1 -1
  325. package/dist/component/tile/tile.min.css +1 -1
  326. package/dist/component/toggle/toggle.css +1 -1
  327. package/dist/component/toggle/toggle.legacy.css +1 -1
  328. package/dist/component/toggle/toggle.legacy.min.css +1 -1
  329. package/dist/component/toggle/toggle.main.css +1 -1
  330. package/dist/component/toggle/toggle.main.min.css +1 -1
  331. package/dist/component/toggle/toggle.min.css +1 -1
  332. package/dist/component/toggle/toggle.module.js +2 -2
  333. package/dist/component/toggle/toggle.module.js.map +1 -1
  334. package/dist/component/toggle/toggle.module.min.js +1 -1
  335. package/dist/component/toggle/toggle.module.min.js.map +1 -1
  336. package/dist/component/toggle/toggle.nomodule.js +2 -2
  337. package/dist/component/toggle/toggle.nomodule.js.map +1 -1
  338. package/dist/component/toggle/toggle.nomodule.min.js +1 -1
  339. package/dist/component/toggle/toggle.nomodule.min.js.map +1 -1
  340. package/dist/component/upload/upload.css +1 -1
  341. package/dist/component/upload/upload.min.css +1 -1
  342. package/dist/core/core.css +3 -3
  343. package/dist/core/core.css.map +1 -1
  344. package/dist/core/core.legacy.css +1 -1
  345. package/dist/core/core.legacy.min.css +1 -1
  346. package/dist/core/core.main.css +3 -3
  347. package/dist/core/core.main.css.map +1 -1
  348. package/dist/core/core.main.min.css +3 -3
  349. package/dist/core/core.main.min.css.map +1 -1
  350. package/dist/core/core.min.css +3 -3
  351. package/dist/core/core.min.css.map +1 -1
  352. package/dist/core/core.module.js +2 -2
  353. package/dist/core/core.module.js.map +1 -1
  354. package/dist/core/core.module.min.js +2 -2
  355. package/dist/core/core.module.min.js.map +1 -1
  356. package/dist/core/core.nomodule.js +2 -2
  357. package/dist/core/core.nomodule.js.map +1 -1
  358. package/dist/core/core.nomodule.min.js +2 -2
  359. package/dist/core/core.nomodule.min.js.map +1 -1
  360. package/dist/dsfr/dsfr.css +76 -235
  361. package/dist/dsfr/dsfr.css.map +1 -1
  362. package/dist/dsfr/dsfr.legacy.css +33 -21
  363. package/dist/dsfr/dsfr.legacy.css.map +1 -1
  364. package/dist/dsfr/dsfr.legacy.min.css +2 -2
  365. package/dist/dsfr/dsfr.legacy.min.css.map +1 -1
  366. package/dist/dsfr/dsfr.main.css +44 -215
  367. package/dist/dsfr/dsfr.main.css.map +1 -1
  368. package/dist/dsfr/dsfr.main.min.css +3 -3
  369. package/dist/dsfr/dsfr.main.min.css.map +1 -1
  370. package/dist/dsfr/dsfr.min.css +4 -4
  371. package/dist/dsfr/dsfr.min.css.map +1 -1
  372. package/dist/dsfr/dsfr.module.js +2 -2
  373. package/dist/dsfr/dsfr.module.js.map +1 -1
  374. package/dist/dsfr/dsfr.module.min.js +2 -2
  375. package/dist/dsfr/dsfr.module.min.js.map +1 -1
  376. package/dist/dsfr/dsfr.nomodule.js +2 -2
  377. package/dist/dsfr/dsfr.nomodule.js.map +1 -1
  378. package/dist/dsfr/dsfr.nomodule.min.js +2 -2
  379. package/dist/dsfr/dsfr.nomodule.min.js.map +1 -1
  380. package/dist/legacy/legacy.nomodule.js +1 -1
  381. package/dist/legacy/legacy.nomodule.min.js +1 -1
  382. package/dist/scheme/scheme.css +1 -1
  383. package/dist/scheme/scheme.min.css +1 -1
  384. package/dist/scheme/scheme.module.js +2 -2
  385. package/dist/scheme/scheme.module.js.map +1 -1
  386. package/dist/scheme/scheme.module.min.js +1 -1
  387. package/dist/scheme/scheme.module.min.js.map +1 -1
  388. package/example/component/accordion/index.html +164 -188
  389. package/example/component/breadcrumb/index.html +6 -6
  390. package/example/component/callout/index.html +10 -10
  391. package/example/component/card/index.html +8 -8
  392. package/example/component/checkbox/index.html +32 -32
  393. package/example/component/connect/index.html +4 -127
  394. package/example/component/consent/index.html +8 -8
  395. package/example/component/content/index.html +30 -30
  396. package/example/component/display/index.html +46 -46
  397. package/example/component/follow/index.html +16 -16
  398. package/example/component/footer/index.html +20 -20
  399. package/example/component/form/index.html +24 -24
  400. package/example/component/header/index.html +208 -208
  401. package/example/component/highlight/index.html +8 -8
  402. package/example/component/input/index.html +44 -44
  403. package/example/component/link/index.html +14 -14
  404. package/example/component/modal/index.html +80 -80
  405. package/example/component/navigation/index.html +34 -34
  406. package/example/component/pagination/index.html +12 -12
  407. package/example/component/quote/index.html +8 -8
  408. package/example/component/radio/index.html +38 -38
  409. package/example/component/select/index.html +10 -10
  410. package/example/component/share/index.html +10 -10
  411. package/example/component/sidemenu/index.html +456 -456
  412. package/example/component/skiplink/index.html +23 -23
  413. package/example/component/summary/index.html +2 -2
  414. package/example/component/tab/index.html +236 -238
  415. package/example/component/table/index.html +104 -104
  416. package/example/component/tag/index.html +50 -50
  417. package/example/component/tile/index.html +34 -34
  418. package/example/component/toggle/index.html +130 -130
  419. package/package.json +1 -1
  420. package/src/component/connect/example/index.ejs +3 -3
  421. package/src/component/connect/example/sample/connect-default.ejs +1 -2
  422. package/src/component/connect/example/sample/connect-plus.ejs +1 -2
  423. package/src/component/connect/template/ejs/connect.ejs +6 -1
  424. package/src/component/follow/deprecated/style/_module.scss +7 -1
  425. package/src/component/follow/deprecated/style/_tool.scss +3 -7
  426. package/src/component/tag/style/_scheme.scss +13 -22
  427. package/src/component/tag/style/_tool.scss +27 -2
@@ -1,3 +1,3 @@
1
1
  /*!
2
- * DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
2
+ * DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
3
3
  */.fr-modal{align-items:stretch;background-color:var(--background-overlay-grey);border:none;bottom:0;color:inherit;display:flex;flex-direction:column;height:100%;justify-content:space-between;left:0;margin:0;opacity:0;padding:0;position:fixed;right:0;top:0;transition:opacity .3s,visibility .3s;visibility:hidden;width:100%;z-index:5000}.fr-modal>.fr-container{pointer-events:none}.fr-modal:focus{outline:none}.fr-modal:before{content:""}.fr-modal:after,.fr-modal:before{display:block;flex:1 0 2rem;height:2rem;width:0}.fr-modal--top:before,.fr-modal:after{content:none}.fr-modal--top:after{content:""}.fr-modal--opened{height:100%;opacity:1;transition:opacity .3s,visibility .3s;visibility:inherit;width:100%}.fr-modal__body{--modal-max-height:calc(100vh - 2rem);--hover:var(--background-default-grey-hover);--active:var(--background-default-grey-active);background-color:var(--background-default-grey);box-shadow:0 8px 8px 0 rgba(0,0,0,.1),0 8px 16px -16px rgba(0,0,0,.32);flex:1 1 auto;max-height:calc(100vh - 2rem);max-height:var(--modal-max-height);overflow-y:auto;pointer-events:all}.fr-modal__header{align-items:center;display:flex;flex:auto 0 0;padding:1rem 1rem .5rem}.fr-modal__content{margin-bottom:3.5rem;padding-left:1rem;padding-right:1rem}.fr-modal__footer{--hover:var(--background-default-grey-hover);--active:var(--background-default-grey-active);background-color:var(--background-default-grey);bottom:0;display:flex;flex:auto 0 0;margin-top:-2.5rem;padding:1rem;position:sticky;transition:box-shadow .3s;z-index:6000}.fr-modal__footer .fr-btns-group{margin-bottom:-1rem;width:calc(100% + 1rem)}.fr-modal__title{--title-spacing:0 0 1rem 0;color:var(--text-title-grey);font-size:1.375rem;font-weight:700;line-height:1.75rem}.fr-modal__title[class*=" fr-fi-"],.fr-modal__title[class*=" fr-icon-"],.fr-modal__title[class^=fr-fi-],.fr-modal__title[class^=fr-icon-]{margin-right:.5rem}.fr-modal__body.fr-scroll-shadow .fr-modal__footer{--hover:var(--background-elevated-grey-hover);--active:var(--background-elevated-grey-active);background-color:var(--background-elevated-grey);box-shadow:0 -8px 8px 0 rgba(0,0,0,.1),0 -8px 16px -16px rgba(0,0,0,.32)}@media (min-width:48em){.fr-modal--top:before{content:""}.fr-modal:after,.fr-modal:before{flex:1 0 10vh;height:10vh;width:0}.fr-modal:after{content:""}.fr-modal__body{max-height:80vh!important}.fr-modal__header{padding:1rem 2rem}.fr-modal__content{margin-bottom:4rem;padding-left:2rem;padding-right:2rem}.fr-modal__footer{margin-top:-3rem;padding:2rem}.fr-modal__title{font-size:1.5rem;line-height:2rem}}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.fr-modal{background-color:hsla(0,0%,9%,.375)}.fr-modal__body{background-color:#fff}.fr-modal__body:hover{background-color:#f6f6f6}.fr-modal__body:active{background-color:#ededed}.fr-modal__body.fr-scroll-shadow .fr-modal__footer{background-color:#fff}.fr-modal__body.fr-scroll-shadow .fr-modal__footer:hover{background-color:#f6f6f6}.fr-modal__body.fr-scroll-shadow .fr-modal__footer:active{background-color:#ededed}.fr-modal__title{color:#161616}.fr-modal__footer{background-color:#fff}.fr-modal__footer:hover{background-color:#f6f6f6}.fr-modal__footer:active{background-color:#ededed}}
@@ -1,10 +1,10 @@
1
- /*! DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
1
+ /*! DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
2
2
 
3
3
  const config = {
4
4
  prefix: 'fr',
5
5
  namespace: 'dsfr',
6
6
  organisation: '@gouvfr',
7
- version: '1.4.0'
7
+ version: '1.4.1'
8
8
  };
9
9
 
10
10
  const api = window[config.namespace];
@@ -1 +1 @@
1
- {"version":3,"file":"modal.module.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.0'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modal.module.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.1'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
1
+ /*! DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
2
2
  const t=window.dsfr,e={MODAL:t.internals.ns.selector("modal"),SCROLL_SHADOW:t.internals.ns.selector("scroll-shadow"),BODY:t.internals.ns.selector("modal__body")};class s extends t.core.DisclosureButton{constructor(){super(t.core.DisclosureType.OPENED)}static get instanceClassName(){return"ModalButton"}}const i={CONCEALING_BACKDROP:t.internals.ns.attr("concealing-backdrop")};class n extends t.core.Disclosure{constructor(){super(t.core.DisclosureType.OPENED,e.MODAL,s,"ModalsGroup"),this.scrolling=this.resize.bind(this,!1),this.resizing=this.resize.bind(this,!0)}static get instanceClassName(){return"Modal"}init(){super.init(),this.listen("click",this.click.bind(this)),this.listenKey(t.core.KeyCodes.ESCAPE,this.conceal.bind(this,!1,!1),!0,!0)}get body(){return this.element.getDescendantInstances("ModalBody","Modal")[0]}click(t){t.target===this.node&&"false"!==this.getAttribute(i.CONCEALING_BACKDROP)&&this.conceal()}disclose(t){return!!super.disclose(t)&&(this.body&&this.body.activate(),this.isScrollLocked=!0,this.setAttribute("aria-modal","true"),this.setAttribute("open","true"),!0)}conceal(t,e){return!!super.conceal(t,e)&&(this.isScrollLocked=!1,this.removeAttribute("aria-modal"),this.removeAttribute("open"),this.body&&this.body.deactivate(),!0)}}const o=['[tabindex="0"]',"a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details","iframe"].join(),r=['[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'].join(),a=(t,e)=>{if(!(t instanceof Element))return!1;const s=window.getComputedStyle(t);if(!s)return!1;if("hidden"===s.visibility)return!1;for(void 0===e&&(e=t);e.contains(t);){if("none"===s.display)return!1;t=t.parentElement}return!0};class l{constructor(t,e){this.element=null,this.activeElement=null,this.onTrap=t,this.onUntrap=e,this.waiting=this.wait.bind(this),this.handling=this.handle.bind(this),this.focusing=this.maintainFocus.bind(this),this.current=null}get trapped(){return null!==this.element}trap(t){this.trapped&&this.untrap(),this.element=t,this.isTrapping=!0,this.wait(),this.onTrap&&this.onTrap()}wait(){a(this.element)?this.trapping():window.requestAnimationFrame(this.waiting)}trapping(){if(!this.isTrapping)return;this.isTrapping=!1;const t=this.focusables;t.length&&t[0].focus(),this.element.setAttribute("aria-modal",!0),window.addEventListener("keydown",this.handling),document.body.addEventListener("focus",this.focusing,!0)}stun(t){for(const e of t.children)e!==this.element&&(e.contains(this.element)?this.stun(e):this.stunneds.push(new c(e)))}maintainFocus(t){if(!this.element.contains(t.target)){const e=this.focusables;if(0===e.length)return;const s=e[0];t.preventDefault(),s.focus()}}handle(t){if(9!==t.keyCode)return;const e=this.focusables;if(0===e.length)return;const s=e[0],i=e[e.length-1],n=e.indexOf(document.activeElement);t.shiftKey?!this.element.contains(document.activeElement)||n<1?(t.preventDefault(),i.focus()):(document.activeElement.tabIndex>0||e[n-1].tabIndex>0)&&(t.preventDefault(),e[n-1].focus()):this.element.contains(document.activeElement)&&n!==e.length-1&&-1!==n?document.activeElement.tabIndex>0&&(t.preventDefault(),e[n+1].focus()):(t.preventDefault(),s.focus())}get focusables(){let e=t.internals.dom.querySelectorAllArray(this.element,o);const s=t.internals.dom.querySelectorAllArray(document.documentElement,'input[type="radio"]');if(s.length){const t={};for(const e of s){const s=e.getAttribute("name");void 0===t[s]&&(t[s]=new d(s)),t[s].push(e)}e=e.filter((e=>{if("input"!==e.tagName.toLowerCase()||"radio"!==e.getAttribute("type").toLowerCase())return!0;const s=e.getAttribute("name");return t[s].keep(e)}))}const i=t.internals.dom.querySelectorAllArray(this.element,r);i.sort(((t,e)=>t.tabIndex-e.tabIndex));const n=e.filter((t=>-1===i.indexOf(t)));return i.concat(n).filter((t=>"-1"!==t.tabIndex&&a(t,this.element)))}untrap(){this.trapped&&(this.isTrapping=!1,this.element.removeAttribute("aria-modal"),window.removeEventListener("keydown",this.handling),document.body.removeEventListener("focus",this.focusing,!0),this.element=null,this.onUntrap&&this.onUntrap())}dispose(){this.untrap()}}class c{constructor(t){this.element=t,this.inert=t.getAttribute("inert"),this.element.setAttribute("inert","")}unstun(){null===this.inert?this.element.removeAttribute("inert"):this.element.setAttribute("inert",this.inert)}}class d{constructor(t){this.name=t,this.buttons=[]}push(t){this.buttons.push(t),(t===document.activeElement||t.checked||void 0===this.selected)&&(this.selected=t)}keep(t){return this.selected===t}}class h extends t.core.DisclosuresGroup{constructor(){super("Modal",!1),this.focusTrap=new l}static get instanceClassName(){return"ModalsGroup"}apply(t,e){super.apply(t,e),null===this.current?this.focusTrap.untrap():this.focusTrap.trap(this.current.node)}}class u extends t.core.Instance{static get instanceClassName(){return"ModalBody"}init(){this.listen("scroll",this.shade.bind(this))}activate(){this.isResizing=!0,this.resize()}deactivate(){this.isResizing=!1}shade(){this.node.scrollHeight>this.node.clientHeight?this.node.offsetHeight+this.node.scrollTop>=this.node.scrollHeight?this.removeClass(e.SCROLL_SHADOW):this.addClass(e.SCROLL_SHADOW):this.removeClass(e.SCROLL_SHADOW)}resize(){this.adjust(),this.request(this.adjust.bind(this))}adjust(){const e=32*(this.isBreakpoint(t.core.Breakpoints.MD)?2:1);this.isLegacy?this.style.maxHeight=window.innerHeight-e+"px":this.style.setProperty("--modal-max-height",window.innerHeight-e+"px"),this.shade()}}t.modal={Modal:n,ModalButton:s,ModalBody:u,ModalsGroup:h,ModalSelector:e},t.internals.register(t.modal.ModalSelector.MODAL,t.modal.Modal),t.internals.register(t.modal.ModalSelector.BODY,t.modal.ModalBody),t.internals.register(t.core.RootSelector.ROOT,t.modal.ModalsGroup);
3
3
  //# sourceMappingURL=modal.module.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.module.min.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.0'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":["api","window","ModalSelector","MODAL","internals","ns","selector","SCROLL_SHADOW","BODY","ModalButton","core","DisclosureButton","constructor","super","DisclosureType","OPENED","instanceClassName","ModalAttribute","CONCEALING_BACKDROP","attr","Modal","Disclosure","this","scrolling","resize","bind","resizing","init","listen","click","listenKey","KeyCodes","ESCAPE","conceal","body","element","getDescendantInstances","e","target","node","getAttribute","disclose","withhold","activate","isScrollLocked","setAttribute","preventFocus","removeAttribute","deactivate","UNORDEREDS","join","ORDEREDS","isFocusable","container","Element","style","getComputedStyle","visibility","undefined","contains","display","parentElement","FocusTrap","onTrap","onUntrap","activeElement","waiting","wait","handling","handle","focusing","maintainFocus","current","trapped","trap","untrap","isTrapping","trapping","requestAnimationFrame","focusables","length","focus","addEventListener","document","stun","child","children","stunneds","push","Stunned","event","first","preventDefault","keyCode","last","index","indexOf","shiftKey","tabIndex","unordereds","dom","querySelectorAllArray","radios","documentElement","groups","radio","name","RadioButtonGroup","filter","unordered","tagName","toLowerCase","keep","ordereds","sort","a","b","noDuplicates","concat","removeEventListener","dispose","inert","unstun","buttons","button","checked","selected","ModalsGroup","DisclosuresGroup","focusTrap","apply","value","initial","ModalBody","Instance","shade","isResizing","scrollHeight","clientHeight","offsetHeight","scrollTop","removeClass","addClass","adjust","request","offset","isBreakpoint","Breakpoints","MD","isLegacy","maxHeight","innerHeight","setProperty","modal","register","RootSelector","ROOT"],"mappings":"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"}
1
+ {"version":3,"file":"modal.module.min.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.1'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":["api","window","ModalSelector","MODAL","internals","ns","selector","SCROLL_SHADOW","BODY","ModalButton","core","DisclosureButton","constructor","super","DisclosureType","OPENED","instanceClassName","ModalAttribute","CONCEALING_BACKDROP","attr","Modal","Disclosure","this","scrolling","resize","bind","resizing","init","listen","click","listenKey","KeyCodes","ESCAPE","conceal","body","element","getDescendantInstances","e","target","node","getAttribute","disclose","withhold","activate","isScrollLocked","setAttribute","preventFocus","removeAttribute","deactivate","UNORDEREDS","join","ORDEREDS","isFocusable","container","Element","style","getComputedStyle","visibility","undefined","contains","display","parentElement","FocusTrap","onTrap","onUntrap","activeElement","waiting","wait","handling","handle","focusing","maintainFocus","current","trapped","trap","untrap","isTrapping","trapping","requestAnimationFrame","focusables","length","focus","addEventListener","document","stun","child","children","stunneds","push","Stunned","event","first","preventDefault","keyCode","last","index","indexOf","shiftKey","tabIndex","unordereds","dom","querySelectorAllArray","radios","documentElement","groups","radio","name","RadioButtonGroup","filter","unordered","tagName","toLowerCase","keep","ordereds","sort","a","b","noDuplicates","concat","removeEventListener","dispose","inert","unstun","buttons","button","checked","selected","ModalsGroup","DisclosuresGroup","focusTrap","apply","value","initial","ModalBody","Instance","shade","isResizing","scrollHeight","clientHeight","offsetHeight","scrollTop","removeClass","addClass","adjust","request","offset","isBreakpoint","Breakpoints","MD","isLegacy","maxHeight","innerHeight","setProperty","modal","register","RootSelector","ROOT"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
1
+ /*! DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
2
2
 
3
3
  (function () {
4
4
  'use strict';
@@ -7,7 +7,7 @@
7
7
  prefix: 'fr',
8
8
  namespace: 'dsfr',
9
9
  organisation: '@gouvfr',
10
- version: '1.4.0'
10
+ version: '1.4.1'
11
11
  };
12
12
 
13
13
  var api = window[config.namespace];
@@ -1 +1 @@
1
- {"version":3,"file":"modal.nomodule.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.0'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":["const","super","let","this"],"mappings":"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"}
1
+ {"version":3,"file":"modal.nomodule.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.1'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":["const","super","let","this"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
1
+ /*! DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */
2
2
  !function(){"use strict";var t=window.dsfr,e={MODAL:t.internals.ns.selector("modal"),SCROLL_SHADOW:t.internals.ns.selector("scroll-shadow"),BODY:t.internals.ns.selector("modal__body")},n=function(e){function n(){e.call(this,t.core.DisclosureType.OPENED)}e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n;var i={instanceClassName:{configurable:!0}};return i.instanceClassName.get=function(){return"ModalButton"},Object.defineProperties(n,i),n}(t.core.DisclosureButton),i={CONCEALING_BACKDROP:t.internals.ns.attr("concealing-backdrop")},o=function(o){function s(){o.call(this,t.core.DisclosureType.OPENED,e.MODAL,n,"ModalsGroup"),this.scrolling=this.resize.bind(this,!1),this.resizing=this.resize.bind(this,!0)}o&&(s.__proto__=o),s.prototype=Object.create(o&&o.prototype),s.prototype.constructor=s;var r={body:{configurable:!0}},a={instanceClassName:{configurable:!0}};return a.instanceClassName.get=function(){return"Modal"},s.prototype.init=function(){o.prototype.init.call(this),this.listen("click",this.click.bind(this)),this.listenKey(t.core.KeyCodes.ESCAPE,this.conceal.bind(this,!1,!1),!0,!0)},r.body.get=function(){return this.element.getDescendantInstances("ModalBody","Modal")[0]},s.prototype.click=function(t){t.target===this.node&&"false"!==this.getAttribute(i.CONCEALING_BACKDROP)&&this.conceal()},s.prototype.disclose=function(t){return!!o.prototype.disclose.call(this,t)&&(this.body&&this.body.activate(),this.isScrollLocked=!0,this.setAttribute("aria-modal","true"),this.setAttribute("open","true"),!0)},s.prototype.conceal=function(t,e){return!!o.prototype.conceal.call(this,t,e)&&(this.isScrollLocked=!1,this.removeAttribute("aria-modal"),this.removeAttribute("open"),this.body&&this.body.deactivate(),!0)},Object.defineProperties(s.prototype,r),Object.defineProperties(s,a),s}(t.core.Disclosure),s=['[tabindex="0"]',"a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details","iframe"].join(),r=['[tabindex]:not([tabindex="-1"]):not([tabindex="0"])'].join(),a=function(t,e){if(!(t instanceof Element))return!1;var n=window.getComputedStyle(t);if(!n)return!1;if("hidden"===n.visibility)return!1;for(void 0===e&&(e=t);e.contains(t);){if("none"===n.display)return!1;t=t.parentElement}return!0},l=function(t,e){this.element=null,this.activeElement=null,this.onTrap=t,this.onUntrap=e,this.waiting=this.wait.bind(this),this.handling=this.handle.bind(this),this.focusing=this.maintainFocus.bind(this),this.current=null},c={trapped:{configurable:!0},focusables:{configurable:!0}};c.trapped.get=function(){return null!==this.element},l.prototype.trap=function(t){this.trapped&&this.untrap(),this.element=t,this.isTrapping=!0,this.wait(),this.onTrap&&this.onTrap()},l.prototype.wait=function(){a(this.element)?this.trapping():window.requestAnimationFrame(this.waiting)},l.prototype.trapping=function(){if(this.isTrapping){this.isTrapping=!1;var t=this.focusables;t.length&&t[0].focus(),this.element.setAttribute("aria-modal",!0),window.addEventListener("keydown",this.handling),document.body.addEventListener("focus",this.focusing,!0)}},l.prototype.stun=function(t){for(var e=0,n=t.children;e<n.length;e+=1){var i=n[e];i!==this.element&&(i.contains(this.element)?this.stun(i):this.stunneds.push(new u(i)))}},l.prototype.maintainFocus=function(t){if(!this.element.contains(t.target)){var e=this.focusables;if(0===e.length)return;var n=e[0];t.preventDefault(),n.focus()}},l.prototype.handle=function(t){if(9===t.keyCode){var e=this.focusables;if(0!==e.length){var n=e[0],i=e[e.length-1],o=e.indexOf(document.activeElement);t.shiftKey?!this.element.contains(document.activeElement)||o<1?(t.preventDefault(),i.focus()):(document.activeElement.tabIndex>0||e[o-1].tabIndex>0)&&(t.preventDefault(),e[o-1].focus()):this.element.contains(document.activeElement)&&o!==e.length-1&&-1!==o?document.activeElement.tabIndex>0&&(t.preventDefault(),e[o+1].focus()):(t.preventDefault(),n.focus())}}},c.focusables.get=function(){var e=this,n=t.internals.dom.querySelectorAllArray(this.element,s),i=t.internals.dom.querySelectorAllArray(document.documentElement,'input[type="radio"]');if(i.length){for(var o={},l=0,c=i;l<c.length;l+=1){var u=c[l],d=u.getAttribute("name");void 0===o[d]&&(o[d]=new p(d)),o[d].push(u)}n=n.filter((function(t){if("input"!==t.tagName.toLowerCase()||"radio"!==t.getAttribute("type").toLowerCase())return!0;var e=t.getAttribute("name");return o[e].keep(t)}))}var h=t.internals.dom.querySelectorAllArray(this.element,r);h.sort((function(t,e){return t.tabIndex-e.tabIndex}));var f=n.filter((function(t){return-1===h.indexOf(t)}));return h.concat(f).filter((function(t){return"-1"!==t.tabIndex&&a(t,e.element)}))},l.prototype.untrap=function(){this.trapped&&(this.isTrapping=!1,this.element.removeAttribute("aria-modal"),window.removeEventListener("keydown",this.handling),document.body.removeEventListener("focus",this.focusing,!0),this.element=null,this.onUntrap&&this.onUntrap())},l.prototype.dispose=function(){this.untrap()},Object.defineProperties(l.prototype,c);var u=function(t){this.element=t,this.inert=t.getAttribute("inert"),this.element.setAttribute("inert","")};u.prototype.unstun=function(){null===this.inert?this.element.removeAttribute("inert"):this.element.setAttribute("inert",this.inert)};var p=function(t){this.name=t,this.buttons=[]};p.prototype.push=function(t){this.buttons.push(t),(t===document.activeElement||t.checked||void 0===this.selected)&&(this.selected=t)},p.prototype.keep=function(t){return this.selected===t};var d=function(t){function e(){t.call(this,"Modal",!1),this.focusTrap=new l}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={instanceClassName:{configurable:!0}};return n.instanceClassName.get=function(){return"ModalsGroup"},e.prototype.apply=function(e,n){t.prototype.apply.call(this,e,n),null===this.current?this.focusTrap.untrap():this.focusTrap.trap(this.current.node)},Object.defineProperties(e,n),e}(t.core.DisclosuresGroup),h=function(n){function i(){n.apply(this,arguments)}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var o={instanceClassName:{configurable:!0}};return o.instanceClassName.get=function(){return"ModalBody"},i.prototype.init=function(){this.listen("scroll",this.shade.bind(this))},i.prototype.activate=function(){this.isResizing=!0,this.resize()},i.prototype.deactivate=function(){this.isResizing=!1},i.prototype.shade=function(){this.node.scrollHeight>this.node.clientHeight?this.node.offsetHeight+this.node.scrollTop>=this.node.scrollHeight?this.removeClass(e.SCROLL_SHADOW):this.addClass(e.SCROLL_SHADOW):this.removeClass(e.SCROLL_SHADOW)},i.prototype.resize=function(){this.adjust(),this.request(this.adjust.bind(this))},i.prototype.adjust=function(){var e=32*(this.isBreakpoint(t.core.Breakpoints.MD)?2:1);this.isLegacy?this.style.maxHeight=window.innerHeight-e+"px":this.style.setProperty("--modal-max-height",window.innerHeight-e+"px"),this.shade()},Object.defineProperties(i,o),i}(t.core.Instance);t.modal={Modal:o,ModalButton:n,ModalBody:h,ModalsGroup:d,ModalSelector:e},t.internals.register(t.modal.ModalSelector.MODAL,t.modal.Modal),t.internals.register(t.modal.ModalSelector.BODY,t.modal.ModalBody),t.internals.register(t.core.RootSelector.ROOT,t.modal.ModalsGroup)}();
3
3
  //# sourceMappingURL=modal.nomodule.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.nomodule.min.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.0'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":["const","api","window","ModalSelector","MODAL","internals","ns","selector","SCROLL_SHADOW","BODY","ModalButton","super","core","DisclosureType","OPENED","staticAccessors","instanceClassName","DisclosureButton","ModalAttribute","CONCEALING_BACKDROP","attr","Modal","this","scrolling","resize","bind","resizing","init","listen","click","listenKey","KeyCodes","ESCAPE","conceal","prototypeAccessors","body","element","getDescendantInstances","e","target","node","getAttribute","disclose","withhold","activate","isScrollLocked","setAttribute","preventFocus","removeAttribute","deactivate","Disclosure","UNORDEREDS","join","ORDEREDS","isFocusable","container","Element","style","getComputedStyle","visibility","undefined","contains","display","parentElement","FocusTrap","onTrap","onUntrap","activeElement","waiting","wait","handling","handle","focusing","maintainFocus","current","trapped","trap","untrap","isTrapping","trapping","requestAnimationFrame","focusables","length","focus","addEventListener","document","stun","children","child","stunneds","push","Stunned","event","first","preventDefault","keyCode","last","index","indexOf","shiftKey","tabIndex","unordereds","dom","querySelectorAllArray","radios","documentElement","groups","radio","name","RadioButtonGroup","filter","unordered","tagName","toLowerCase","keep","ordereds","sort","a","b","noDuplicates","concat","removeEventListener","dispose","inert","unstun","buttons","button","checked","selected","ModalsGroup","focusTrap","apply","value","initial","DisclosuresGroup","ModalBody","shade","isResizing","scrollHeight","clientHeight","offsetHeight","scrollTop","removeClass","addClass","adjust","request","offset","isBreakpoint","Breakpoints","MD","isLegacy","maxHeight","innerHeight","setProperty","Instance","modal","register","RootSelector","ROOT"],"mappings":";yBAAAA,ICCMC,EAAMC,OAAuB,KCCtBC,EAAgB,CAC3BC,MAAOH,EAAII,UAAUC,GAAGC,SAAS,SACjCC,cAAeP,EAAII,UAAUC,GAAGC,SAAS,iBACzCE,KAAMR,EAAII,UAAUC,GAAGC,SAAS,gBCH5BG,cACJ,aACEC,YAAMV,EAAIW,KAAKC,eAAeC,kJAGhCC,EAAWC,iCACT,MAAO,+CANef,EAAIW,KAAKK,kBCAtBC,EAAiB,CAC5BC,oBAAqBlB,EAAII,UAAUC,GAAGc,KAAK,wBCEvCC,cACJ,aACEV,YAAMV,EAAIW,KAAKC,eAAeC,OAAQX,EAAcC,MAAOM,EAAa,eACxEY,KAAKC,UAAYD,KAAKE,OAAOC,KAAKH,MAAM,GACxCA,KAAKI,SAAWJ,KAAKE,OAAOC,KAAKH,MAAM,wKAGzCP,EAAWC,iCACT,MAAO,qBAGTW,gBACEhB,YAAMgB,gBACNL,KAAKM,OAAO,QAASN,KAAKO,MAAMJ,KAAKH,OACrCA,KAAKQ,UAAU7B,EAAIW,KAAKmB,SAASC,OAAQV,KAAKW,QAAQR,KAAKH,MAAM,GAAO,IAAQ,GAAM,IAGxFY,EAAIC,oBACF,OAAOb,KAAKc,QAAQC,uBAAuB,YAAa,SAAS,gBAGnER,eAAOS,GACDA,EAAEC,SAAWjB,KAAKkB,MAAkE,UAA1DlB,KAAKmB,aAAavB,EAAeC,sBAAkCG,KAAKW,uBAGxGS,kBAAUC,GACR,QAAKhC,YAAM+B,mBAASC,KAChBrB,KAAKa,MAAMb,KAAKa,KAAKS,WACzBtB,KAAKuB,gBAAiB,EACtBvB,KAAKwB,aAAa,aAAc,QAChCxB,KAAKwB,aAAa,OAAQ,SACnB,gBAGTb,iBAASU,EAAUI,GACjB,QAAKpC,YAAMsB,kBAAQU,EAAUI,KAC7BzB,KAAKuB,gBAAiB,EACtBvB,KAAK0B,gBAAgB,cACrB1B,KAAK0B,gBAAgB,QACjB1B,KAAKa,MAAMb,KAAKa,KAAKc,cAClB,2EAxCShD,EAAIW,KAAKsC,YCYvBC,EAfa,CACjB,iBACA,UACA,yBACA,wBACA,yBACA,2BACA,kBACA,kBACA,mDACA,gCACA,UACA,UAG4BC,OAMxBC,EAJW,CACf,uDAGwBD,OAIpBE,WAAelB,EAASmB,GAC5B,KAAMnB,aAAmBoB,SAAU,OAAO,EAC1CxD,IAAMyD,EAAQvD,OAAOwD,iBAAiBtB,GACtC,IAAKqB,EAAO,OAAO,EACnB,GAAyB,WAArBA,EAAME,WAAyB,OAAO,EAG1C,SAFkBC,IAAdL,IAAyBA,EAAYnB,GAElCmB,EAAUM,SAASzB,IAAU,CAClC,GAAsB,SAAlBqB,EAAMK,QAAoB,OAAO,EACrC1B,EAAUA,EAAQ2B,cAGpB,OAAO,GAGHC,EACJ,SAAaC,EAAQC,GACnB5C,KAAKc,QAAU,KACfd,KAAK6C,cAAgB,KACrB7C,KAAK2C,OAASA,EACd3C,KAAK4C,SAAWA,EAChB5C,KAAK8C,QAAU9C,KAAK+C,KAAK5C,KAAKH,MAC9BA,KAAKgD,SAAWhD,KAAKiD,OAAO9C,KAAKH,MACjCA,KAAKkD,SAAWlD,KAAKmD,cAAchD,KAAKH,MACxCA,KAAKoD,QAAU,iEAGjBxC,EAAIyC,uBAAa,OAAwB,OAAjBrD,KAAKc,qBAE7BwC,cAAMxC,GACAd,KAAKqD,SAASrD,KAAKuD,SAEvBvD,KAAKc,QAAUA,EACfd,KAAKwD,YAAa,EAClBxD,KAAK+C,OAED/C,KAAK2C,QAAQ3C,KAAK2C,sBAGxBI,gBACOf,EAAYhC,KAAKc,SAKtBd,KAAKyD,WAJH7E,OAAO8E,sBAAsB1D,KAAK8C,sBAOtCW,oBACE,GAAKzD,KAAKwD,WAAV,CACAxD,KAAKwD,YAAa,EAClB9E,IAAMiF,EAAa3D,KAAK2D,WACpBA,EAAWC,QAAQD,EAAW,GAAGE,QACrC7D,KAAKc,QAAQU,aAAa,cAAc,GACxC5C,OAAOkF,iBAAiB,UAAW9D,KAAKgD,UACxCe,SAASlD,KAAKiD,iBAAiB,QAAS9D,KAAKkD,UAAU,iBAQzDc,cAAM9C,GACJ,cAAoBA,EAAK+C,yBAAU,CAA9BvF,IAAMwF,OACLA,IAAUlE,KAAKc,UACfoD,EAAM3B,SAASvC,KAAKc,SACtBd,KAAKgE,KAAKE,GAGZlE,KAAKmE,SAASC,KAAK,IAAIC,EAAQH,mBAInCf,uBAAemB,GACb,IAAKtE,KAAKc,QAAQyB,SAAS+B,EAAMrD,QAAS,CACxCvC,IAAMiF,EAAa3D,KAAK2D,WACxB,GAA0B,IAAtBA,EAAWC,OAAc,OAC7BlF,IAAM6F,EAAQZ,EAAW,GACzBW,EAAME,iBACND,EAAMV,sBAIVZ,gBAAQjC,GACN,GAAkB,IAAdA,EAAEyD,QAAN,CAEA/F,IAAMiF,EAAa3D,KAAK2D,WACxB,GAA0B,IAAtBA,EAAWC,OAAf,CAEAlF,IAAM6F,EAAQZ,EAAW,GACnBe,EAAOf,EAAWA,EAAWC,OAAS,GAEtCe,EAAQhB,EAAWiB,QAAQb,SAASlB,eAEtC7B,EAAE6D,UACC7E,KAAKc,QAAQyB,SAASwB,SAASlB,gBAAkB8B,EAAQ,GAC5D3D,EAAEwD,iBACFE,EAAKb,UACIE,SAASlB,cAAciC,SAAW,GAAKnB,EAAWgB,EAAQ,GAAGG,SAAW,KACjF9D,EAAEwD,iBACFb,EAAWgB,EAAQ,GAAGd,SAGnB7D,KAAKc,QAAQyB,SAASwB,SAASlB,gBAAkB8B,IAAUhB,EAAWC,OAAS,IAAgB,IAAXe,EAG9EZ,SAASlB,cAAciC,SAAW,IAC3C9D,EAAEwD,iBACFb,EAAWgB,EAAQ,GAAGd,UAJtB7C,EAAEwD,iBACFD,EAAMV,YAQZjD,EAAI+C,qCACEoB,EAAapG,EAAII,UAAUiG,IAAIC,sBAAsBjF,KAAKc,QAASe,GAKjEqD,EAASvG,EAAII,UAAUiG,IAAIC,sBAAsBlB,SAASoB,gBAAiB,uBAEjF,GAAID,EAAOtB,OAAQ,CAGjB,IAFAlF,IAAM0G,EAAS,SAEKF,kBAAQ,CAAvBxG,IAAM2G,OACHC,EAAOD,EAAMlE,aAAa,aACXmB,IAAjB8C,EAAOE,KAAqBF,EAAOE,GAAQ,IAAIC,EAAiBD,IACpEF,EAAOE,GAAMlB,KAAKiB,GAGpBN,EAAaA,EAAWS,iBAAQC,GAC9B,GAAwC,UAApCA,EAAUC,QAAQC,eAA8E,UAAjDF,EAAUtE,aAAa,QAAQwE,cAA2B,OAAO,EACpHjH,IAAM4G,EAAOG,EAAUtE,aAAa,QACpC,OAAOiE,EAAOE,GAAMM,KAAKH,MAI7B/G,IAAMmH,EAAWlH,EAAII,UAAUiG,IAAIC,sBAAsBjF,KAAKc,QAASiB,GAEvE8D,EAASC,eAAMC,EAAGC,UAAMD,EAAEjB,SAAWkB,EAAElB,YAEvCpG,IAAMuH,EAAelB,EAAWS,iBAAQ1E,UAA2C,IAA/B+E,EAASjB,QAAQ9D,MAErE,OADoB+E,EAASK,OAAOD,GACjBT,iBAAQ1E,SAAiC,OAArBA,EAAQgE,UAAqB9C,EAAYlB,EAASd,EAAKc,yBAGhGyC,kBACOvD,KAAKqD,UACVrD,KAAKwD,YAAa,EAElBxD,KAAKc,QAAQY,gBAAgB,cAC7B9C,OAAOuH,oBAAoB,UAAWnG,KAAKgD,UAC3Ce,SAASlD,KAAKsF,oBAAoB,QAASnG,KAAKkD,UAAU,GAE1DlD,KAAKc,QAAU,KAOXd,KAAK4C,UAAU5C,KAAK4C,yBAG1BwD,mBACEpG,KAAKuD,iDAIT,IAAMc,EACJ,SAAavD,GACXd,KAAKc,QAAUA,EAEfd,KAAKqG,MAAQvF,EAAQK,aAAa,SAGlCnB,KAAKc,QAAQU,aAAa,QAAS,iBAGrC8E,kBAMqB,OAAftG,KAAKqG,MAAgBrG,KAAKc,QAAQY,gBAAgB,SACjD1B,KAAKc,QAAQU,aAAa,QAASxB,KAAKqG,QAIjD,IAAMd,EACJ,SAAaD,GACXtF,KAAKsF,KAAOA,EACZtF,KAAKuG,QAAU,gBAGjBnC,cAAMoC,GACJxG,KAAKuG,QAAQnC,KAAKoC,IACdA,IAAWzC,SAASlB,eAAiB2D,EAAOC,cAA6BnE,IAAlBtC,KAAK0G,YAAwB1G,KAAK0G,SAAWF,gBAG1GZ,cAAMY,GACJ,OAAOxG,KAAK0G,WAAaF,GCnO7B,IAAMG,cACJ,aACEtH,YAAM,SAAS,GACfW,KAAK4G,UAAY,IAAIlE,4IAGvBjD,EAAWC,iCACT,MAAO,2BAGTmH,eAAOC,EAAOC,GACZ1H,YAAMwH,gBAAMC,EAAOC,GACE,OAAjB/G,KAAKoD,QAAkBpD,KAAK4G,UAAUrD,SACrCvD,KAAK4G,UAAUtD,KAAKtD,KAAKoD,QAAQlC,uCAbhBvC,EAAIW,KAAK0H,kBCE7BC,6LACJxH,EAAWC,iCACT,MAAO,yBAGTW,gBACEL,KAAKM,OAAO,SAAUN,KAAKkH,MAAM/G,KAAKH,oBAGxCsB,oBACEtB,KAAKmH,YAAa,EAClBnH,KAAKE,sBAGPyB,sBACE3B,KAAKmH,YAAa,eAGpBD,iBACMlH,KAAKkB,KAAKkG,aAAepH,KAAKkB,KAAKmG,aACjCrH,KAAKkB,KAAKoG,aAAetH,KAAKkB,KAAKqG,WAAavH,KAAKkB,KAAKkG,aAC5DpH,KAAKwH,YAAY3I,EAAcK,eAE/Bc,KAAKyH,SAAS5I,EAAcK,eAG9Bc,KAAKwH,YAAY3I,EAAcK,4BAInCgB,kBACEF,KAAK0H,SACL1H,KAAK2H,QAAQ3H,KAAK0H,OAAOvH,KAAKH,oBAGhC0H,kBACEhJ,IAAMkJ,EAtCK,IAsCc5H,KAAK6H,aAAalJ,EAAIW,KAAKwI,YAAYC,IAAM,EAAI,GACtE/H,KAAKgI,SAAUhI,KAAKmC,MAAM8F,UAAerJ,OAAOsJ,YAAcN,OAC7D5H,KAAKmC,MAAMgG,YAAY,qBAAyBvJ,OAAOsJ,YAAcN,QAC1E5H,KAAKkH,yCAvCevI,EAAIW,KAAK8I,UCGjCzJ,EAAI0J,MAAQ,CACVtI,MAAOA,EACPX,YAAaA,EACb6H,UAAWA,EACXN,YAAaA,EACb9H,cAAeA,GCXjBF,EAAII,UAAUuJ,SAAS3J,EAAI0J,MAAMxJ,cAAcC,MAAOH,EAAI0J,MAAMtI,OAChEpB,EAAII,UAAUuJ,SAAS3J,EAAI0J,MAAMxJ,cAAcM,KAAMR,EAAI0J,MAAMpB,WAC/DtI,EAAII,UAAUuJ,SAAS3J,EAAIW,KAAKiJ,aAAaC,KAAM7J,EAAI0J,MAAM1B"}
1
+ {"version":3,"file":"modal.nomodule.min.js","sources":["../../../.config/config.js","../../../src/core/api.js","../../../src/component/modal/script/modal/modal-selector.js","../../../src/component/modal/script/modal/modal-button.js","../../../src/component/modal/script/modal/modal-attribute.js","../../../src/component/modal/script/modal/modal.js","../../../src/component/modal/script/modal/focus-trap.js","../../../src/component/modal/script/modal/modals-group.js","../../../src/component/modal/script/modal/modal-body.js","../../../src/component/modal/index.js","../../../src/component/modal/main.js"],"sourcesContent":["const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.4.1'\r\n};\r\n\r\nexport default config;\r\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_SHADOW: api.internals.ns.selector('scroll-shadow'),\n BODY: api.internals.ns.selector('modal__body')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this.listen('click', this.click.bind(this));\n this.listenKey(api.core.KeyCodes.ESCAPE, this.conceal.bind(this, false, false), true, true);\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n click (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) this.body.activate();\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.deactivate();\n return true;\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const style = window.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n window.addEventListener('keydown', this.handling);\n document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || unordered.getAttribute('type').toLowerCase() !== 'radio') return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n window.removeEventListener('keydown', this.handling);\n document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n if (button === document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.shade.bind(this));\n }\n\n activate () {\n this.isResizing = true;\n this.resize();\n }\n\n deactivate () {\n this.isResizing = false;\n }\n\n shade () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n } else {\n this.addClass(ModalSelector.SCROLL_SHADOW);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_SHADOW);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${window.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${window.innerHeight - offset}px`);\n this.shade();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n"],"names":["const","api","window","ModalSelector","MODAL","internals","ns","selector","SCROLL_SHADOW","BODY","ModalButton","super","core","DisclosureType","OPENED","staticAccessors","instanceClassName","DisclosureButton","ModalAttribute","CONCEALING_BACKDROP","attr","Modal","this","scrolling","resize","bind","resizing","init","listen","click","listenKey","KeyCodes","ESCAPE","conceal","prototypeAccessors","body","element","getDescendantInstances","e","target","node","getAttribute","disclose","withhold","activate","isScrollLocked","setAttribute","preventFocus","removeAttribute","deactivate","Disclosure","UNORDEREDS","join","ORDEREDS","isFocusable","container","Element","style","getComputedStyle","visibility","undefined","contains","display","parentElement","FocusTrap","onTrap","onUntrap","activeElement","waiting","wait","handling","handle","focusing","maintainFocus","current","trapped","trap","untrap","isTrapping","trapping","requestAnimationFrame","focusables","length","focus","addEventListener","document","stun","children","child","stunneds","push","Stunned","event","first","preventDefault","keyCode","last","index","indexOf","shiftKey","tabIndex","unordereds","dom","querySelectorAllArray","radios","documentElement","groups","radio","name","RadioButtonGroup","filter","unordered","tagName","toLowerCase","keep","ordereds","sort","a","b","noDuplicates","concat","removeEventListener","dispose","inert","unstun","buttons","button","checked","selected","ModalsGroup","focusTrap","apply","value","initial","DisclosuresGroup","ModalBody","shade","isResizing","scrollHeight","clientHeight","offsetHeight","scrollTop","removeClass","addClass","adjust","request","offset","isBreakpoint","Breakpoints","MD","isLegacy","maxHeight","innerHeight","setProperty","Instance","modal","register","RootSelector","ROOT"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
2
+ * DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
3
3
  */
4
4
  @charset "UTF-8";
5
5
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
2
+ * DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
3
3
  */
4
4
  @charset "UTF-8";
5
5
  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
@@ -1,3 +1,3 @@
1
1
  /*!
2
- * DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
2
+ * DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
3
3
  */@media (-ms-high-contrast:active),(-ms-high-contrast:none){.fr-mega-menu__list,.fr-menu__list{list-style:none}.fr-mega-menu__category{margin:0}.fr-nav__btn,.fr-nav__link{color:#161616}.fr-nav__btn[aria-current],.fr-nav__link[aria-current]{color:#000091}.fr-nav__btn[aria-current]:before,.fr-nav__link[aria-current]:before{background-color:#000091}.fr-nav__btn[aria-current]:before:hover,.fr-nav__link[aria-current]:before:hover{background-color:#1212ff}.fr-nav__btn[aria-current]:before:active,.fr-nav__link[aria-current]:before:active{background-color:#2323ff}.fr-nav__item:before{box-shadow:0 -1px 0 0 #e5e5e5,inset 0 -1px 0 0 #e5e5e5}.fr-nav__item:first-child:before{box-shadow:inset 0 -1px 0 0 #e5e5e5}.fr-nav__item:last-child:before{box-shadow:0 -1px 0 0 #e5e5e5}.fr-mega-menu{background-color:#fff}.fr-mega-menu:hover{background-color:#f6f6f6}.fr-mega-menu:active{background-color:#ededed}.fr-mega-menu__list:before{box-shadow:0 1px 0 0 #e5e5e5}}@media (min-width:62em) and (-ms-high-contrast:active),(min-width:62em) and (-ms-high-contrast:none){.fr-nav__item--align-right .fr-collapse{transform:translateX(-100%)}.fr-nav__btn[aria-expanded=true]{background-color:#e3e3fd;color:#000091}.fr-nav__btn[aria-expanded=true]:hover{background-color:#c1c1fb}.fr-nav__btn[aria-expanded=true]:active{background-color:#adadf9}.fr-menu:after{background-color:#fff}.fr-menu:after:hover{background-color:#f6f6f6}.fr-menu:after:active{background-color:#ededed}.fr-menu .fr-nav__link{box-shadow:0 calc(-1rem - 1px) 0 -1rem #e5e5e5}.fr-mega-menu>.fr-container:before{background-color:#e3e3fd}.fr-mega-menu>.fr-container:before:hover{background-color:#c1c1fb}.fr-mega-menu>.fr-container:before:active{background-color:#adadf9}.fr-mega-menu__category{box-shadow:0 calc(1rem + 1px) 0 -1rem #e5e5e5}}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * DSFR v1.4.0 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
2
+ * DSFR v1.4.1 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
3
3
  */
4
4
  @charset "UTF-8";
5
5