@pnx-mixtape/mxds 0.0.13 → 0.0.15

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 (350) hide show
  1. package/README.md +37 -23
  2. package/dist/build/accordion.css +1 -98
  3. package/dist/build/accordion.entry.js +1 -83
  4. package/dist/build/base.css +1 -996
  5. package/dist/build/breadcrumb.css +1 -51
  6. package/dist/build/button.css +1 -132
  7. package/dist/build/callout.css +1 -11
  8. package/dist/build/card.css +1 -149
  9. package/dist/build/carousel.css +1 -0
  10. package/dist/build/chunks/Accordion-RtUfbsTy.js +1 -0
  11. package/dist/build/chunks/disclosure-widget-CPdkUWkq.js +1 -0
  12. package/dist/build/chunks/drop-menu.entry-BqBzLfVC.js +1 -0
  13. package/dist/build/chunks/keyboard-Cs0cduxq.js +1 -0
  14. package/dist/build/chunks/polyfills-5KNOJw2W.js +1 -0
  15. package/dist/build/chunks/popover-CiVl-0jk.js +1 -0
  16. package/dist/build/chunks/utilities-CE6xwgqF.js +2 -0
  17. package/dist/build/constants.css +1 -120
  18. package/dist/build/container-grid.css +1 -208
  19. package/dist/build/content-block.css +1 -36
  20. package/dist/build/dialog.css +1 -98
  21. package/dist/build/dialog.entry.js +1 -113
  22. package/dist/build/drop-menu.css +1 -78
  23. package/dist/build/drop-menu.entry.js +1 -2
  24. package/dist/build/drupal.css +1 -74
  25. package/dist/build/filters.css +1 -105
  26. package/dist/build/filters.entry.js +1 -137
  27. package/dist/build/footer.css +1 -151
  28. package/dist/build/form.css +1 -517
  29. package/dist/build/global-alert.css +1 -60
  30. package/dist/build/global-alert.entry.js +1 -68
  31. package/dist/build/grid.css +1 -200
  32. package/dist/build/header.css +1 -153
  33. package/dist/build/header.entry.js +1 -103
  34. package/dist/build/hero-banner.css +1 -62
  35. package/dist/build/icon.css +1 -399
  36. package/dist/build/in-page-alert.css +1 -94
  37. package/dist/build/in-page-navigation.css +1 -17
  38. package/dist/build/in-page-navigation.entry.js +1 -99
  39. package/dist/build/link-list.css +1 -45
  40. package/dist/build/list-item.css +1 -114
  41. package/dist/build/masthead.css +1 -53
  42. package/dist/build/navigation.css +1 -396
  43. package/dist/build/navigation.entry.js +1 -124
  44. package/dist/build/page.css +1 -80
  45. package/dist/build/pagination.css +1 -130
  46. package/dist/build/results-bar.css +1 -0
  47. package/dist/build/section.css +1 -163
  48. package/dist/build/side-navigation.css +1 -88
  49. package/dist/build/sidebar.css +1 -59
  50. package/dist/build/social-links.css +1 -20
  51. package/dist/build/steps.css +1 -118
  52. package/dist/build/sticky.css +1 -47
  53. package/dist/build/sticky.entry.js +1 -60
  54. package/dist/build/tabs.css +1 -109
  55. package/dist/build/tabs.entry.js +1 -202
  56. package/dist/build/tag.css +1 -71
  57. package/dist/build/utilities.css +1 -178
  58. package/package.json +56 -64
  59. package/src/Atom/Background/Backgrounds.stories.ts +13 -1
  60. package/src/Atom/Background/__snapshots__/Backgrounds.stories.ts.snap +157 -81
  61. package/src/Atom/Background/_background.css +16 -10
  62. package/src/Atom/Base.mdx +25 -17
  63. package/src/Atom/Button/Button.stories.ts +1 -4
  64. package/src/Atom/Button/Button.stories.tsx +1 -1
  65. package/src/Atom/Button/__snapshots__/Button.stories.ts.snap +47 -37
  66. package/src/Atom/Button/_buttons-styles.css +7 -7
  67. package/src/Atom/Button/_buttons.css +1 -6
  68. package/src/Atom/DefinitionList/DefinitionList.stories.ts +32 -0
  69. package/src/Atom/DefinitionList/DefinitionList.stories.tsx +1 -1
  70. package/src/Atom/DefinitionList/__snapshots__/DefinitionList.stories.ts.snap +32 -0
  71. package/src/Atom/DefinitionList/definition-list.twig +9 -0
  72. package/src/Atom/Heading/Heading.stories.ts +1 -1
  73. package/src/Atom/Heading/Heading.stories.tsx +1 -1
  74. package/src/Atom/Heading/__snapshots__/Heading.stories.ts.snap +5 -3
  75. package/src/Atom/Heading/_headings.css +24 -24
  76. package/src/Atom/Icon/Icon.mdx +1 -1
  77. package/src/Atom/Icon/Icon.stories.ts +1 -1
  78. package/src/Atom/Icon/Icon.stories.tsx +1 -1
  79. package/src/Atom/Icon/Icon.tsx +2 -2
  80. package/src/Atom/Icon/__snapshots__/Icon.stories.ts.snap +14 -8
  81. package/src/Atom/Icon/_icon.css +4 -4
  82. package/src/Atom/Image/Image.stories.ts +1 -1
  83. package/src/Atom/Image/__snapshots__/Image.stories.ts.snap +7 -5
  84. package/src/Atom/Image/_image.css +2 -7
  85. package/src/Atom/Link/Link.stories.ts +1 -1
  86. package/src/Atom/Link/Link.stories.tsx +1 -1
  87. package/src/Atom/Link/__snapshots__/Link.stories.ts.snap +50 -37
  88. package/src/Atom/Link/_links.css +2 -22
  89. package/src/Atom/Link/link.twig +1 -0
  90. package/src/Atom/Media/Media.stories.ts +2 -1
  91. package/src/Atom/Media/Media.stories.tsx +1 -1
  92. package/src/Atom/Media/__snapshots__/Media.stories.ts.snap +11 -24
  93. package/src/Atom/Media/_media.css +8 -8
  94. package/src/Atom/Spacing/Spacing.stories.ts +1 -1
  95. package/src/Atom/Spacing/__snapshots__/Spacing.stories.ts.snap +5 -3
  96. package/src/Atom/Table/Table.stories.ts +1 -1
  97. package/src/Atom/Table/TableResponsive.stories.ts +1 -1
  98. package/src/Atom/Table/__snapshots__/Table.stories.ts.snap +256 -248
  99. package/src/Atom/Table/__snapshots__/TableResponsive.stories.ts.snap +65 -63
  100. package/src/Atom/Text/Text.stories.tsx +1 -1
  101. package/src/Atom/Text/TextSizes.stories.ts +1 -1
  102. package/src/Atom/Text/__snapshots__/TextSizes.stories.ts.snap +59 -55
  103. package/src/Atom/Text/_text-sizes.css +17 -17
  104. package/src/Atom/Text/rich-text.twig +9 -0
  105. package/src/Atom/Video/Video.stories.ts +1 -1
  106. package/src/Atom/Video/__snapshots__/Video.stories.ts.snap +9 -7
  107. package/src/Atom/_animated.css +0 -14
  108. package/src/Atom/_generic.css +57 -15
  109. package/src/Atom/base.css +1 -1
  110. package/src/Component/Accordion/Accordion.stories.ts +1 -4
  111. package/src/Component/Accordion/Accordion.stories.tsx +1 -2
  112. package/src/Component/Accordion/__snapshots__/Accordion.stories.ts.snap +60 -56
  113. package/src/Component/Accordion/__snapshots__/Accordion.stories.tsx.snap +0 -1
  114. package/src/Component/Accordion/accordion.css +16 -4
  115. package/src/Component/Breadcrumb/Breadcrumb.stories.ts +1 -1
  116. package/src/Component/Breadcrumb/Breadcrumb.stories.tsx +1 -1
  117. package/src/Component/Breadcrumb/__snapshots__/Breadcrumb.stories.ts.snap +31 -29
  118. package/src/Component/Breadcrumb/breadcrumb.css +4 -0
  119. package/src/Component/Callout/Callout.stories.ts +1 -9
  120. package/src/Component/Callout/__snapshots__/Callout.stories.ts.snap +9 -7
  121. package/src/Component/Card/Card.stories.ts +11 -18
  122. package/src/Component/Card/Card.stories.tsx +1 -1
  123. package/src/Component/Card/Card.tsx +9 -5
  124. package/src/Component/Card/__snapshots__/Card.stories.ts.snap +257 -229
  125. package/src/Component/Card/card.css +36 -33
  126. package/src/Component/Card/card.twig +6 -6
  127. package/src/Component/Carousel/Carousel.stories.ts +201 -0
  128. package/src/Component/Carousel/Elements/Carousel.ts +241 -0
  129. package/src/Component/Carousel/__snapshots__/Carousel.stories.ts.snap +912 -0
  130. package/src/Component/Carousel/carousel.css +119 -0
  131. package/src/Component/Carousel/carousel.twig +27 -0
  132. package/src/Component/ContentBlock/ContentBlock.stories.ts +27 -19
  133. package/src/Component/ContentBlock/ContentBlock.stories.tsx +1 -1
  134. package/src/Component/ContentBlock/__snapshots__/ContentBlock.stories.ts.snap +153 -93
  135. package/src/Component/Dialog/Dialog.stories.ts +75 -7
  136. package/src/Component/Dialog/Dialog.stories.tsx +1 -1
  137. package/src/Component/Dialog/Elements/Dialog.ts +14 -34
  138. package/src/Component/Dialog/__snapshots__/Dialog.stories.ts.snap +102 -66
  139. package/src/Component/Dialog/dialog.css +32 -20
  140. package/src/Component/Dialog/dialog.twig +14 -15
  141. package/src/Component/DropMenu/Components/DropMenuContext.tsx +7 -9
  142. package/src/Component/DropMenu/Components/DropMenuItem.tsx +1 -1
  143. package/src/Component/DropMenu/DropMenu.stories.ts +1 -1
  144. package/src/Component/DropMenu/DropMenu.stories.tsx +1 -1
  145. package/src/Component/DropMenu/Elements/DropMenu.ts +1 -1
  146. package/src/Component/DropMenu/__snapshots__/DropMenu.stories.ts.snap +28 -26
  147. package/src/Component/DropMenu/drop-menu.css +11 -3
  148. package/src/Component/Filters/Filters.stories.ts +1 -4
  149. package/src/Component/Filters/__snapshots__/Filters.stories.ts.snap +397 -389
  150. package/src/Component/Filters/filters.css +14 -5
  151. package/src/Component/GlobalAlert/GlobalAlert.stories.ts +1 -1
  152. package/src/Component/GlobalAlert/GlobalAlert.stories.tsx +1 -1
  153. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.ts.snap +33 -29
  154. package/src/Component/GlobalAlert/__snapshots__/GlobalAlert.stories.tsx.snap +2 -2
  155. package/src/Component/GlobalAlert/global-alert.css +2 -2
  156. package/src/Component/HeroBanner/HeroBanner.stories.ts +1 -4
  157. package/src/Component/HeroBanner/HeroBanner.stories.tsx +1 -1
  158. package/src/Component/HeroBanner/__snapshots__/HeroBanner.stories.ts.snap +68 -64
  159. package/src/Component/HeroBanner/hero-banner.css +6 -1
  160. package/src/Component/HeroBanner/hero-banner.twig +3 -4
  161. package/src/Component/InPageAlert/InPageAlert.stories.ts +1 -1
  162. package/src/Component/InPageAlert/InPageAlert.stories.tsx +1 -1
  163. package/src/Component/InPageAlert/__snapshots__/InPageAlert.stories.ts.snap +10 -8
  164. package/src/Component/InPageAlert/in-page-alert.css +8 -8
  165. package/src/Component/InPageNavigation/Elements/InPageNavigation.ts +1 -1
  166. package/src/Component/InPageNavigation/InPageNavigation.stories.ts +1 -4
  167. package/src/Component/InPageNavigation/InPageNavigation.stories.tsx +1 -1
  168. package/src/Component/InPageNavigation/__snapshots__/InPageNavigation.stories.ts.snap +64 -62
  169. package/src/Component/LinkList/LinkList.stories.ts +1 -1
  170. package/src/Component/LinkList/LinkList.stories.tsx +1 -1
  171. package/src/Component/LinkList/__snapshots__/LinkList.stories.ts.snap +31 -29
  172. package/src/Component/ListItem/ListItem.stories.ts +2 -4
  173. package/src/Component/ListItem/ListItem.stories.tsx +1 -1
  174. package/src/Component/ListItem/__snapshots__/ListItem.stories.ts.snap +162 -148
  175. package/src/Component/ListItem/list-item.css +7 -88
  176. package/src/Component/ListItem/list-item.twig +8 -8
  177. package/src/Component/Navigation/Dropdown.stories.tsx +1 -1
  178. package/src/Component/Navigation/Navigation.stories.ts +1 -1
  179. package/src/Component/Navigation/Navigation.stories.tsx +1 -1
  180. package/src/Component/Navigation/__snapshots__/Navigation.stories.ts.snap +291 -283
  181. package/src/Component/Navigation/_navigation-collapsible.css +11 -14
  182. package/src/Component/Navigation/_navigation-dropdown.css +11 -17
  183. package/src/Component/Pagination/Components/PaginationContext.tsx +4 -8
  184. package/src/Component/Pagination/Pagination.stories.ts +1 -1
  185. package/src/Component/Pagination/Pagination.stories.tsx +1 -1
  186. package/src/Component/Pagination/__snapshots__/Pagination.stories.ts.snap +59 -57
  187. package/src/Component/Pagination/pagination.css +2 -8
  188. package/src/Component/ResultsBar/Components/ResultsBarInfo.tsx +28 -0
  189. package/src/Component/ResultsBar/Components/ResultsBarSort.tsx +17 -0
  190. package/src/Component/ResultsBar/ResultsBar.stories.ts +37 -0
  191. package/src/Component/ResultsBar/ResultsBar.stories.tsx +50 -0
  192. package/src/Component/ResultsBar/ResultsBar.tsx +7 -0
  193. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.ts.snap +54 -0
  194. package/src/Component/ResultsBar/__snapshots__/ResultsBar.stories.tsx.snap +53 -0
  195. package/src/Component/ResultsBar/results-bar.css +19 -0
  196. package/src/Component/ResultsBar/results-bar.twig +24 -0
  197. package/src/Component/SideNavigation/SideNavigation.stories.ts +1 -1
  198. package/src/Component/SideNavigation/__snapshots__/SideNavigation.stories.ts.snap +82 -80
  199. package/src/Component/SideNavigation/side-navigation.css +2 -8
  200. package/src/Component/SocialLinks/SocialLinks.stories.ts +1 -1
  201. package/src/Component/SocialLinks/__snapshots__/SocialLinks.stories.ts.snap +30 -28
  202. package/src/Component/Steps/Steps.stories.ts +1 -1
  203. package/src/Component/Steps/__snapshots__/Steps.stories.ts.snap +86 -78
  204. package/src/Component/Steps/steps.css +1 -1
  205. package/src/Component/Sticky/Sticky.stories.ts +1 -1
  206. package/src/Component/Sticky/Sticky.stories.tsx +1 -1
  207. package/src/Component/Sticky/__snapshots__/Sticky.stories.ts.snap +9 -7
  208. package/src/Component/Tabs/Tabs.stories.ts +1 -1
  209. package/src/Component/Tabs/Tabs.stories.tsx +1 -1
  210. package/src/Component/Tabs/Tabs.tsx +4 -4
  211. package/src/Component/Tabs/__snapshots__/Tabs.stories.ts.snap +73 -71
  212. package/src/Component/Tabs/__snapshots__/Tabs.stories.tsx.snap +0 -2
  213. package/src/Component/Tabs/tabs.css +14 -21
  214. package/src/Component/Tag/Tag.stories.ts +1 -1
  215. package/src/Component/Tag/Tag.stories.tsx +1 -1
  216. package/src/Component/Tag/__snapshots__/Tag.stories.ts.snap +59 -53
  217. package/src/Component/Tag/tag.css +6 -6
  218. package/src/Component/Tile/Tile.stories.ts +38 -12
  219. package/src/Component/Tile/Tile.stories.tsx +2 -2
  220. package/src/Component/Tile/Tile.tsx +30 -17
  221. package/src/Component/Tile/__snapshots__/Tile.stories.ts.snap +49 -75
  222. package/src/Component/Tile/__snapshots__/Tile.stories.tsx.snap +6 -16
  223. package/src/Form/Checkbox/Checkbox.stories.ts +1 -1
  224. package/src/Form/Checkbox/FormCheckbox.stories.tsx +1 -1
  225. package/src/Form/Checkbox/FormCheckbox.tsx +5 -7
  226. package/src/Form/Checkbox/__snapshots__/Checkbox.stories.ts.snap +23 -19
  227. package/src/Form/Description/Description.stories.ts +1 -1
  228. package/src/Form/Description/FormDescription.stories.tsx +1 -1
  229. package/src/Form/Description/FormStatus.stories.ts +1 -1
  230. package/src/Form/Description/__snapshots__/Description.stories.ts.snap +7 -5
  231. package/src/Form/Description/__snapshots__/FormStatus.stories.ts.snap +14 -10
  232. package/src/Form/Form/Form.stories.tsx +1 -1
  233. package/src/Form/Form/FormTitle.stories.tsx +1 -1
  234. package/src/Form/FormItem/FormItem.stories.ts +1 -4
  235. package/src/Form/FormItem/FormItem.stories.tsx +1 -1
  236. package/src/Form/FormItem/__snapshots__/FormItem.stories.ts.snap +119 -109
  237. package/src/Form/FormItem/__snapshots__/FormItem.stories.tsx.snap +4 -4
  238. package/src/Form/Label/FormLabel.stories.tsx +1 -1
  239. package/src/Form/Label/FormLabel.tsx +1 -1
  240. package/src/Form/Label/Label.stories.ts +1 -1
  241. package/src/Form/Label/__snapshots__/Label.stories.ts.snap +21 -15
  242. package/src/Form/Radio/FormRadio.stories.tsx +1 -1
  243. package/src/Form/Radio/FormRadio.tsx +4 -4
  244. package/src/Form/Radio/Radio.stories.ts +1 -1
  245. package/src/Form/Radio/__snapshots__/Radio.stories.ts.snap +55 -51
  246. package/src/Form/Search/Search.stories.ts +1 -4
  247. package/src/Form/Search/__snapshots__/Search.stories.ts.snap +23 -21
  248. package/src/Form/Select/FormSelect.stories.tsx +1 -1
  249. package/src/Form/Select/FormSelect.tsx +1 -1
  250. package/src/Form/Select/Select.stories.ts +1 -1
  251. package/src/Form/Select/__snapshots__/Select.stories.ts.snap +18 -16
  252. package/src/Form/TextInput/FormText.stories.tsx +1 -1
  253. package/src/Form/TextInput/InputDivider.stories.ts +1 -1
  254. package/src/Form/TextInput/TextInput.stories.ts +1 -1
  255. package/src/Form/TextInput/__snapshots__/FormText.stories.tsx.snap +1 -1
  256. package/src/Form/TextInput/__snapshots__/InputDivider.stories.ts.snap +24 -22
  257. package/src/Form/TextInput/__snapshots__/TextInput.stories.ts.snap +18 -14
  258. package/src/Form/Textarea/FormTextarea.stories.tsx +1 -1
  259. package/src/Form/Textarea/Textarea.stories.ts +1 -1
  260. package/src/Form/Textarea/__snapshots__/FormTextarea.stories.tsx.snap +1 -1
  261. package/src/Form/Textarea/__snapshots__/Textarea.stories.ts.snap +9 -7
  262. package/src/Form/form.css +24 -34
  263. package/src/Introduction.mdx +40 -0
  264. package/src/Layout/Footer/Footer.stories.ts +1 -6
  265. package/src/Layout/Footer/Footer.stories.tsx +1 -1
  266. package/src/Layout/Footer/__snapshots__/Footer.stories.ts.snap +10 -10
  267. package/src/Layout/Footer/footer.css +2 -6
  268. package/src/Layout/Footer/footer.twig +0 -1
  269. package/src/Layout/Grid/Grid.stories.ts +8 -8
  270. package/src/Layout/Grid/Grid.stories.tsx +2 -2
  271. package/src/Layout/Grid/__snapshots__/Grid.stories.ts.snap +38 -32
  272. package/src/Layout/Grid/container-grid.css +10 -10
  273. package/src/Layout/Grid/grid-item.twig +3 -1
  274. package/src/Layout/Grid/grid.css +3 -3
  275. package/src/Layout/Header/Header.stories.ts +1 -6
  276. package/src/Layout/Header/Header.stories.tsx +1 -1
  277. package/src/Layout/Header/__snapshots__/Header.stories.ts.snap +11 -11
  278. package/src/Layout/Header/__snapshots__/Header.stories.tsx.snap +3 -3
  279. package/src/Layout/Header/_header.css +18 -16
  280. package/src/Layout/Header/header.twig +1 -2
  281. package/src/Layout/Masthead/Masthead.stories.ts +1 -3
  282. package/src/Layout/Masthead/__snapshots__/Masthead.stories.ts.snap +6 -6
  283. package/src/Layout/Masthead/masthead.twig +0 -2
  284. package/src/Layout/Page/Page.stories.tsx +1 -1
  285. package/src/Layout/Page/__snapshots__/Page.stories.tsx.snap +3 -3
  286. package/src/Layout/Page/page.css +16 -40
  287. package/src/Layout/Page/page.twig +6 -1
  288. package/src/Layout/Section/Background.stories.ts +60 -8
  289. package/src/Layout/Section/Breakouts.stories.ts +1 -3
  290. package/src/Layout/Section/Flow.stories.ts +1 -3
  291. package/src/Layout/Section/Section.stories.ts +1 -6
  292. package/src/Layout/Section/Section.stories.tsx +1 -1
  293. package/src/Layout/Section/SectionGrid.stories.tsx +1 -1
  294. package/src/Layout/Section/__snapshots__/Background.stories.ts.snap +36 -24
  295. package/src/Layout/Section/__snapshots__/Breakouts.stories.ts.snap +54 -52
  296. package/src/Layout/Section/__snapshots__/Flow.stories.ts.snap +18 -18
  297. package/src/Layout/Section/__snapshots__/Section.stories.ts.snap +2 -2
  298. package/src/Layout/Section/section.css +15 -18
  299. package/src/Layout/Section/section.twig +0 -1
  300. package/src/Layout/Section/twig/section-background.twig +29 -10
  301. package/src/Layout/Section/twig/sections-breakout.twig +28 -33
  302. package/src/Layout/Section/twig/sections-flow.twig +17 -17
  303. package/src/Layout/Section/twig/sections-stacked.twig +4 -4
  304. package/src/Layout/Sidebar/Sidebar.stories.ts +1 -3
  305. package/src/Layout/Sidebar/Sidebar.stories.tsx +1 -1
  306. package/src/Layout/Sidebar/__snapshots__/Sidebar.stories.ts.snap +5 -5
  307. package/src/Layout/Sidebar/sidebar.css +2 -18
  308. package/src/Utility/Context/ImageComponent.tsx +3 -6
  309. package/src/Utility/Context/LinkComponent.tsx +3 -6
  310. package/src/Utility/Drupal/drupal.css +1 -5
  311. package/src/Utility/Elements/breakpoint-loader.ts +0 -1
  312. package/src/Utility/Elements/cookie-compliance.ts +0 -1
  313. package/src/Utility/Elements/io-loader.ts +0 -1
  314. package/src/Utility/Hooks/useLocalStorage.ts +0 -1
  315. package/src/Utility/Hooks/useMediaQuery.ts +0 -1
  316. package/src/Utility/Hooks/useToggle.ts +0 -1
  317. package/src/Utility/global.d.ts +0 -1
  318. package/src/Utility/utilities.ts +0 -1
  319. package/src/constants.css +53 -24
  320. package/src/enums.ts +1 -2
  321. package/src/react.ts +3 -0
  322. package/src/tokens.js +19 -19
  323. package/dist/build/accordion.entry.js.map +0 -1
  324. package/dist/build/chunks/Accordion-DSze7pxN.js +0 -61
  325. package/dist/build/chunks/Accordion-DSze7pxN.js.map +0 -1
  326. package/dist/build/chunks/disclosure-widget-CQLPJ8Ta.js +0 -124
  327. package/dist/build/chunks/disclosure-widget-CQLPJ8Ta.js.map +0 -1
  328. package/dist/build/chunks/drop-menu.entry-BC6x9vst.js +0 -132
  329. package/dist/build/chunks/drop-menu.entry-BC6x9vst.js.map +0 -1
  330. package/dist/build/chunks/keyboard-C73DHu0c.js +0 -101
  331. package/dist/build/chunks/keyboard-C73DHu0c.js.map +0 -1
  332. package/dist/build/chunks/polyfills-CJ5uTmUJ.js +0 -749
  333. package/dist/build/chunks/polyfills-CJ5uTmUJ.js.map +0 -1
  334. package/dist/build/chunks/popover-wbPSyFRj.js +0 -654
  335. package/dist/build/chunks/popover-wbPSyFRj.js.map +0 -1
  336. package/dist/build/chunks/utilities-B4YZb689.js +0 -243
  337. package/dist/build/chunks/utilities-B4YZb689.js.map +0 -1
  338. package/dist/build/dialog.entry.js.map +0 -1
  339. package/dist/build/drop-menu.entry.js.map +0 -1
  340. package/dist/build/filters.entry.js.map +0 -1
  341. package/dist/build/global-alert.entry.js.map +0 -1
  342. package/dist/build/header.entry.js.map +0 -1
  343. package/dist/build/in-page-navigation.entry.js.map +0 -1
  344. package/dist/build/navigation.entry.js.map +0 -1
  345. package/dist/build/sticky.entry.js.map +0 -1
  346. package/dist/build/tabs.entry.js.map +0 -1
  347. package/dist/build/tiles.css +0 -61
  348. package/src/Component/Tile/tile.twig +0 -10
  349. package/src/Component/Tile/tiles.css +0 -58
  350. package/src/Component/Tile/twig/tiles.twig +0 -18
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover-wbPSyFRj.js","sources":["../../../node_modules/@oddbird/popover-polyfill/dist/popover.js"],"sourcesContent":["// src/events.ts\nvar ToggleEvent = class extends Event {\n oldState;\n newState;\n constructor(type, { oldState = \"\", newState = \"\", ...init } = {}) {\n super(type, init);\n this.oldState = String(oldState || \"\");\n this.newState = String(newState || \"\");\n }\n};\nvar popoverToggleTaskQueue = /* @__PURE__ */ new WeakMap();\nfunction queuePopoverToggleEventTask(element, oldState, newState) {\n popoverToggleTaskQueue.set(\n element,\n setTimeout(() => {\n if (!popoverToggleTaskQueue.has(element)) return;\n element.dispatchEvent(\n new ToggleEvent(\"toggle\", {\n cancelable: false,\n oldState,\n newState\n })\n );\n }, 0)\n );\n}\n\n// src/popover-helpers.ts\nvar ShadowRoot = globalThis.ShadowRoot || function() {\n};\nvar HTMLDialogElement = globalThis.HTMLDialogElement || function() {\n};\nvar topLayerElements = /* @__PURE__ */ new WeakMap();\nvar autoPopoverList = /* @__PURE__ */ new WeakMap();\nvar visibilityState = /* @__PURE__ */ new WeakMap();\nfunction getPopoverVisibilityState(popover) {\n return visibilityState.get(popover) || \"hidden\";\n}\nvar popoverInvoker = /* @__PURE__ */ new WeakMap();\nfunction popoverTargetAttributeActivationBehavior(element) {\n const popover = element.popoverTargetElement;\n if (!(popover instanceof HTMLElement)) {\n return;\n }\n const visibility = getPopoverVisibilityState(popover);\n if (element.popoverTargetAction === \"show\" && visibility === \"showing\") {\n return;\n }\n if (element.popoverTargetAction === \"hide\" && visibility === \"hidden\") return;\n if (visibility === \"showing\") {\n hidePopover(popover, true, true);\n } else if (checkPopoverValidity(popover, false)) {\n popoverInvoker.set(popover, element);\n showPopover(popover);\n }\n}\nfunction checkPopoverValidity(element, expectedToBeShowing) {\n if (element.popover !== \"auto\" && element.popover !== \"manual\") {\n return false;\n }\n if (!element.isConnected) return false;\n if (expectedToBeShowing && getPopoverVisibilityState(element) !== \"showing\") {\n return false;\n }\n if (!expectedToBeShowing && getPopoverVisibilityState(element) !== \"hidden\") {\n return false;\n }\n if (element instanceof HTMLDialogElement && element.hasAttribute(\"open\")) {\n return false;\n }\n if (document.fullscreenElement === element) return false;\n return true;\n}\nfunction getStackPosition(popover) {\n if (!popover) return 0;\n return Array.from(autoPopoverList.get(popover.ownerDocument) || []).indexOf(\n popover\n ) + 1;\n}\nfunction topMostClickedPopover(target) {\n const clickedPopover = nearestInclusiveOpenPopover(target);\n const invokerPopover = nearestInclusiveTargetPopoverForInvoker(target);\n if (getStackPosition(clickedPopover) > getStackPosition(invokerPopover)) {\n return clickedPopover;\n }\n return invokerPopover;\n}\nfunction topMostAutoPopover(document2) {\n const documentPopovers = autoPopoverList.get(document2);\n for (const popover of documentPopovers || []) {\n if (!popover.isConnected) {\n documentPopovers.delete(popover);\n } else {\n return popover;\n }\n }\n return null;\n}\nfunction getRootNode(node) {\n if (typeof node.getRootNode === \"function\") {\n return node.getRootNode();\n }\n if (node.parentNode) return getRootNode(node.parentNode);\n return node;\n}\nfunction nearestInclusiveOpenPopover(node) {\n while (node) {\n if (node instanceof HTMLElement && node.popover === \"auto\" && visibilityState.get(node) === \"showing\") {\n return node;\n }\n node = node instanceof Element && node.assignedSlot || node.parentElement || getRootNode(node);\n if (node instanceof ShadowRoot) node = node.host;\n if (node instanceof Document) return;\n }\n}\nfunction nearestInclusiveTargetPopoverForInvoker(node) {\n while (node) {\n const nodePopover = node.popoverTargetElement;\n if (nodePopover instanceof HTMLElement) return nodePopover;\n node = node.parentElement || getRootNode(node);\n if (node instanceof ShadowRoot) node = node.host;\n if (node instanceof Document) return;\n }\n}\nfunction topMostPopoverAncestor(newPopover) {\n const popoverPositions = /* @__PURE__ */ new Map();\n let i = 0;\n for (const popover of autoPopoverList.get(newPopover.ownerDocument) || []) {\n popoverPositions.set(popover, i);\n i += 1;\n }\n popoverPositions.set(newPopover, i);\n i += 1;\n let topMostPopoverAncestor2 = null;\n function checkAncestor(candidate) {\n const candidateAncestor = nearestInclusiveOpenPopover(candidate);\n if (candidateAncestor === null) return null;\n const candidatePosition = popoverPositions.get(candidateAncestor);\n if (topMostPopoverAncestor2 === null || popoverPositions.get(topMostPopoverAncestor2) < candidatePosition) {\n topMostPopoverAncestor2 = candidateAncestor;\n }\n }\n checkAncestor(newPopover.parentElement || getRootNode(newPopover));\n return topMostPopoverAncestor2;\n}\nfunction isFocusable(focusTarget) {\n if (focusTarget.hidden || focusTarget instanceof ShadowRoot) return false;\n if (focusTarget instanceof HTMLButtonElement || focusTarget instanceof HTMLInputElement || focusTarget instanceof HTMLSelectElement || focusTarget instanceof HTMLTextAreaElement || focusTarget instanceof HTMLOptGroupElement || focusTarget instanceof HTMLOptionElement || focusTarget instanceof HTMLFieldSetElement) {\n if (focusTarget.disabled) return false;\n }\n if (focusTarget instanceof HTMLInputElement && focusTarget.type === \"hidden\") {\n return false;\n }\n if (focusTarget instanceof HTMLAnchorElement && focusTarget.href === \"\") {\n return false;\n }\n return typeof focusTarget.tabIndex === \"number\" && focusTarget.tabIndex !== -1;\n}\nfunction focusDelegate(focusTarget) {\n if (focusTarget.shadowRoot && focusTarget.shadowRoot.delegatesFocus !== true) {\n return null;\n }\n let whereToLook = focusTarget;\n if (whereToLook.shadowRoot) {\n whereToLook = whereToLook.shadowRoot;\n }\n let autoFocusDelegate = whereToLook.querySelector(\"[autofocus]\");\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n } else {\n const slots = whereToLook.querySelectorAll(\"slot\");\n for (const slot of slots) {\n const assignedElements = slot.assignedElements({ flatten: true });\n for (const el of assignedElements) {\n if (el.hasAttribute(\"autofocus\")) {\n return el;\n } else {\n autoFocusDelegate = el.querySelector(\"[autofocus]\");\n if (autoFocusDelegate) {\n return autoFocusDelegate;\n }\n }\n }\n }\n }\n const walker = focusTarget.ownerDocument.createTreeWalker(\n whereToLook,\n NodeFilter.SHOW_ELEMENT\n );\n let descendant = walker.currentNode;\n while (descendant) {\n if (isFocusable(descendant)) {\n return descendant;\n }\n descendant = walker.nextNode();\n }\n}\nfunction popoverFocusingSteps(subject) {\n focusDelegate(subject)?.focus();\n}\nvar previouslyFocusedElements = /* @__PURE__ */ new WeakMap();\nfunction showPopover(element) {\n if (!checkPopoverValidity(element, false)) {\n return;\n }\n const document2 = element.ownerDocument;\n if (!element.dispatchEvent(\n new ToggleEvent(\"beforetoggle\", {\n cancelable: true,\n oldState: \"closed\",\n newState: \"open\"\n })\n )) {\n return;\n }\n if (!checkPopoverValidity(element, false)) {\n return;\n }\n let shouldRestoreFocus = false;\n if (element.popover === \"auto\") {\n const originalType = element.getAttribute(\"popover\");\n const ancestor = topMostPopoverAncestor(element) || document2;\n hideAllPopoversUntil(ancestor, false, true);\n if (originalType !== element.getAttribute(\"popover\") || !checkPopoverValidity(element, false)) {\n return;\n }\n }\n if (!topMostAutoPopover(document2)) {\n shouldRestoreFocus = true;\n }\n previouslyFocusedElements.delete(element);\n const originallyFocusedElement = document2.activeElement;\n element.classList.add(\":popover-open\");\n visibilityState.set(element, \"showing\");\n if (!topLayerElements.has(document2)) {\n topLayerElements.set(document2, /* @__PURE__ */ new Set());\n }\n topLayerElements.get(document2).add(element);\n popoverFocusingSteps(element);\n if (element.popover === \"auto\") {\n if (!autoPopoverList.has(document2)) {\n autoPopoverList.set(document2, /* @__PURE__ */ new Set());\n }\n autoPopoverList.get(document2).add(element);\n setInvokerAriaExpanded(popoverInvoker.get(element), true);\n }\n if (shouldRestoreFocus && originallyFocusedElement && element.popover === \"auto\") {\n previouslyFocusedElements.set(element, originallyFocusedElement);\n }\n queuePopoverToggleEventTask(element, \"closed\", \"open\");\n}\nfunction hidePopover(element, focusPreviousElement = false, fireEvents = false) {\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n const document2 = element.ownerDocument;\n if (element.popover === \"auto\") {\n hideAllPopoversUntil(element, focusPreviousElement, fireEvents);\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n }\n setInvokerAriaExpanded(popoverInvoker.get(element), false);\n popoverInvoker.delete(element);\n if (fireEvents) {\n element.dispatchEvent(\n new ToggleEvent(\"beforetoggle\", {\n oldState: \"open\",\n newState: \"closed\"\n })\n );\n if (!checkPopoverValidity(element, true)) {\n return;\n }\n }\n topLayerElements.get(document2)?.delete(element);\n autoPopoverList.get(document2)?.delete(element);\n element.classList.remove(\":popover-open\");\n visibilityState.set(element, \"hidden\");\n if (fireEvents) {\n queuePopoverToggleEventTask(element, \"open\", \"closed\");\n }\n const previouslyFocusedElement = previouslyFocusedElements.get(element);\n if (previouslyFocusedElement) {\n previouslyFocusedElements.delete(element);\n if (focusPreviousElement) {\n previouslyFocusedElement.focus();\n }\n }\n}\nfunction closeAllOpenPopovers(document2, focusPreviousElement = false, fireEvents = false) {\n let popover = topMostAutoPopover(document2);\n while (popover) {\n hidePopover(popover, focusPreviousElement, fireEvents);\n popover = topMostAutoPopover(document2);\n }\n}\nfunction hideAllPopoversUntil(endpoint, focusPreviousElement, fireEvents) {\n const document2 = endpoint.ownerDocument || endpoint;\n if (endpoint instanceof Document) {\n return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);\n }\n let lastToHide = null;\n let foundEndpoint = false;\n for (const popover of autoPopoverList.get(document2) || []) {\n if (popover === endpoint) {\n foundEndpoint = true;\n } else if (foundEndpoint) {\n lastToHide = popover;\n break;\n }\n }\n if (!foundEndpoint) {\n return closeAllOpenPopovers(document2, focusPreviousElement, fireEvents);\n }\n while (lastToHide && getPopoverVisibilityState(lastToHide) === \"showing\" && autoPopoverList.get(document2)?.size) {\n hidePopover(lastToHide, focusPreviousElement, fireEvents);\n }\n}\nvar popoverPointerDownTargets = /* @__PURE__ */ new WeakMap();\nfunction lightDismissOpenPopovers(event) {\n if (!event.isTrusted) return;\n const target = event.composedPath()[0];\n if (!target) return;\n const document2 = target.ownerDocument;\n const topMostPopover = topMostAutoPopover(document2);\n if (!topMostPopover) return;\n const ancestor = topMostClickedPopover(target);\n if (ancestor && event.type === \"pointerdown\") {\n popoverPointerDownTargets.set(document2, ancestor);\n } else if (event.type === \"pointerup\") {\n const sameTarget = popoverPointerDownTargets.get(document2) === ancestor;\n popoverPointerDownTargets.delete(document2);\n if (sameTarget) {\n hideAllPopoversUntil(ancestor || document2, false, true);\n }\n }\n}\nvar initialAriaExpandedValue = /* @__PURE__ */ new WeakMap();\nfunction setInvokerAriaExpanded(el, force = false) {\n if (!el) return;\n if (!initialAriaExpandedValue.has(el)) {\n initialAriaExpandedValue.set(el, el.getAttribute(\"aria-expanded\"));\n }\n const popover = el.popoverTargetElement;\n if (popover instanceof HTMLElement && popover.popover === \"auto\") {\n el.setAttribute(\"aria-expanded\", String(force));\n } else {\n const initialValue = initialAriaExpandedValue.get(el);\n if (!initialValue) {\n el.removeAttribute(\"aria-expanded\");\n } else {\n el.setAttribute(\"aria-expanded\", initialValue);\n }\n }\n}\n\n// src/popover.ts\nvar ShadowRoot2 = globalThis.ShadowRoot || function() {\n};\nfunction isSupported() {\n return typeof HTMLElement !== \"undefined\" && typeof HTMLElement.prototype === \"object\" && \"popover\" in HTMLElement.prototype;\n}\nfunction patchSelectorFn(object, name, mapper) {\n const original = object[name];\n Object.defineProperty(object, name, {\n value(selector) {\n return original.call(this, mapper(selector));\n }\n });\n}\nvar nonEscapedPopoverSelector = /(^|[^\\\\]):popover-open\\b/g;\nfunction hasLayerSupport() {\n return typeof globalThis.CSSLayerBlockRule === \"function\";\n}\nfunction getStyles() {\n const useLayer = hasLayerSupport();\n return `\n${useLayer ? \"@layer popover-polyfill {\" : \"\"}\n :where([popover]) {\n position: fixed;\n z-index: 2147483647;\n inset: 0;\n padding: 0.25em;\n width: fit-content;\n height: fit-content;\n border-width: initial;\n border-color: initial;\n border-image: initial;\n border-style: solid;\n background-color: canvas;\n color: canvastext;\n overflow: auto;\n margin: auto;\n }\n\n :where([popover]:not(.\\\\:popover-open)) {\n display: none;\n }\n\n :where(dialog[popover].\\\\:popover-open) {\n display: block;\n }\n\n :where(dialog[popover][open]) {\n display: revert;\n }\n\n :where([anchor].\\\\:popover-open) {\n inset: auto;\n }\n\n :where([anchor]:popover-open) {\n inset: auto;\n }\n\n @supports not (background-color: canvas) {\n :where([popover]) {\n background-color: white;\n color: black;\n }\n }\n\n @supports (width: -moz-fit-content) {\n :where([popover]) {\n width: -moz-fit-content;\n height: -moz-fit-content;\n }\n }\n\n @supports not (inset: 0) {\n :where([popover]) {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n }\n${useLayer ? \"}\" : \"\"}\n`;\n}\nvar popoverStyleSheet = null;\nfunction injectStyles(root) {\n const styles = getStyles();\n if (popoverStyleSheet === null) {\n try {\n popoverStyleSheet = new CSSStyleSheet();\n popoverStyleSheet.replaceSync(styles);\n } catch {\n popoverStyleSheet = false;\n }\n }\n if (popoverStyleSheet === false) {\n const sheet = document.createElement(\"style\");\n sheet.textContent = styles;\n if (root instanceof Document) {\n root.head.prepend(sheet);\n } else {\n root.prepend(sheet);\n }\n } else {\n root.adoptedStyleSheets = [popoverStyleSheet, ...root.adoptedStyleSheets];\n }\n}\nfunction apply() {\n if (typeof window === \"undefined\") return;\n window.ToggleEvent = window.ToggleEvent || ToggleEvent;\n function rewriteSelector(selector) {\n if (selector?.includes(\":popover-open\")) {\n selector = selector.replace(\n nonEscapedPopoverSelector,\n \"$1.\\\\:popover-open\"\n );\n }\n return selector;\n }\n patchSelectorFn(Document.prototype, \"querySelector\", rewriteSelector);\n patchSelectorFn(Document.prototype, \"querySelectorAll\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"querySelector\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"querySelectorAll\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"matches\", rewriteSelector);\n patchSelectorFn(Element.prototype, \"closest\", rewriteSelector);\n patchSelectorFn(\n DocumentFragment.prototype,\n \"querySelectorAll\",\n rewriteSelector\n );\n Object.defineProperties(HTMLElement.prototype, {\n popover: {\n enumerable: true,\n configurable: true,\n get() {\n if (!this.hasAttribute(\"popover\")) return null;\n const value = (this.getAttribute(\"popover\") || \"\").toLowerCase();\n if (value === \"\" || value == \"auto\") return \"auto\";\n return \"manual\";\n },\n set(value) {\n this.setAttribute(\"popover\", value);\n }\n },\n showPopover: {\n enumerable: true,\n configurable: true,\n value() {\n showPopover(this);\n }\n },\n hidePopover: {\n enumerable: true,\n configurable: true,\n value() {\n hidePopover(this, true, true);\n }\n },\n togglePopover: {\n enumerable: true,\n configurable: true,\n value(force) {\n if (visibilityState.get(this) === \"showing\" && force === void 0 || force === false) {\n hidePopover(this, true, true);\n } else if (force === void 0 || force === true) {\n showPopover(this);\n }\n }\n }\n });\n const originalAttachShadow = Element.prototype.attachShadow;\n if (originalAttachShadow) {\n Object.defineProperties(Element.prototype, {\n attachShadow: {\n enumerable: true,\n configurable: true,\n writable: true,\n value(options) {\n const shadowRoot = originalAttachShadow.call(this, options);\n injectStyles(shadowRoot);\n return shadowRoot;\n }\n }\n });\n }\n const originalAttachInternals = HTMLElement.prototype.attachInternals;\n if (originalAttachInternals) {\n Object.defineProperties(HTMLElement.prototype, {\n attachInternals: {\n enumerable: true,\n configurable: true,\n writable: true,\n value() {\n const internals = originalAttachInternals.call(this);\n if (internals.shadowRoot) {\n injectStyles(internals.shadowRoot);\n }\n return internals;\n }\n }\n });\n }\n const popoverTargetAssociatedElements = /* @__PURE__ */ new WeakMap();\n function applyPopoverInvokerElementMixin(ElementClass) {\n Object.defineProperties(ElementClass.prototype, {\n popoverTargetElement: {\n enumerable: true,\n configurable: true,\n set(targetElement) {\n if (targetElement === null) {\n this.removeAttribute(\"popovertarget\");\n popoverTargetAssociatedElements.delete(this);\n } else if (!(targetElement instanceof Element)) {\n throw new TypeError(\n `popoverTargetElement must be an element or null`\n );\n } else {\n this.setAttribute(\"popovertarget\", \"\");\n popoverTargetAssociatedElements.set(this, targetElement);\n }\n },\n get() {\n if (this.localName !== \"button\" && this.localName !== \"input\") {\n return null;\n }\n if (this.localName === \"input\" && this.type !== \"reset\" && this.type !== \"image\" && this.type !== \"button\") {\n return null;\n }\n if (this.disabled) {\n return null;\n }\n if (this.form && this.type === \"submit\") {\n return null;\n }\n const targetElement = popoverTargetAssociatedElements.get(this);\n if (targetElement && targetElement.isConnected) {\n return targetElement;\n } else if (targetElement && !targetElement.isConnected) {\n popoverTargetAssociatedElements.delete(this);\n return null;\n }\n const root = getRootNode(this);\n const idref = this.getAttribute(\"popovertarget\");\n if ((root instanceof Document || root instanceof ShadowRoot2) && idref) {\n return root.getElementById(idref) || null;\n }\n return null;\n }\n },\n popoverTargetAction: {\n enumerable: true,\n configurable: true,\n get() {\n const value = (this.getAttribute(\"popovertargetaction\") || \"\").toLowerCase();\n if (value === \"show\" || value === \"hide\") return value;\n return \"toggle\";\n },\n set(value) {\n this.setAttribute(\"popovertargetaction\", value);\n }\n }\n });\n }\n applyPopoverInvokerElementMixin(HTMLButtonElement);\n applyPopoverInvokerElementMixin(HTMLInputElement);\n const handleInvokerActivation = (event) => {\n const composedPath = event.composedPath();\n const target = composedPath[0];\n if (!(target instanceof Element) || target?.shadowRoot) {\n return;\n }\n const root = getRootNode(target);\n if (!(root instanceof ShadowRoot2 || root instanceof Document)) {\n return;\n }\n const invoker = composedPath.find(\n (el) => el.matches?.(\"[popovertargetaction],[popovertarget]\")\n );\n if (invoker) {\n popoverTargetAttributeActivationBehavior(invoker);\n event.preventDefault();\n return;\n }\n };\n const onKeydown = (event) => {\n const key = event.key;\n const target = event.target;\n if (!event.defaultPrevented && target && (key === \"Escape\" || key === \"Esc\")) {\n hideAllPopoversUntil(target.ownerDocument, true, true);\n }\n };\n const addEventListeners = (root) => {\n root.addEventListener(\"click\", handleInvokerActivation);\n root.addEventListener(\"keydown\", onKeydown);\n root.addEventListener(\"pointerdown\", lightDismissOpenPopovers);\n root.addEventListener(\"pointerup\", lightDismissOpenPopovers);\n };\n addEventListeners(document);\n injectStyles(document);\n}\n\n// src/index.ts\nif (!isSupported()) apply();\n//# sourceMappingURL=popover.js.map\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,243 +0,0 @@
1
- /*! js-cookie v3.0.5 | MIT */
2
- function assign(target) {
3
- for (var i = 1; i < arguments.length; i++) {
4
- var source = arguments[i];
5
- for (var key in source) {
6
- target[key] = source[key];
7
- }
8
- }
9
- return target;
10
- }
11
- var defaultConverter = {
12
- read: function(value) {
13
- if (value[0] === '"') {
14
- value = value.slice(1, -1);
15
- }
16
- return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
17
- },
18
- write: function(value) {
19
- return encodeURIComponent(value).replace(
20
- /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
21
- decodeURIComponent
22
- );
23
- }
24
- };
25
- function init(converter, defaultAttributes) {
26
- function set(name, value, attributes) {
27
- if (typeof document === "undefined") {
28
- return;
29
- }
30
- attributes = assign({}, defaultAttributes, attributes);
31
- if (typeof attributes.expires === "number") {
32
- attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
33
- }
34
- if (attributes.expires) {
35
- attributes.expires = attributes.expires.toUTCString();
36
- }
37
- name = encodeURIComponent(name).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
38
- var stringifiedAttributes = "";
39
- for (var attributeName in attributes) {
40
- if (!attributes[attributeName]) {
41
- continue;
42
- }
43
- stringifiedAttributes += "; " + attributeName;
44
- if (attributes[attributeName] === true) {
45
- continue;
46
- }
47
- stringifiedAttributes += "=" + attributes[attributeName].split(";")[0];
48
- }
49
- return document.cookie = name + "=" + converter.write(value, name) + stringifiedAttributes;
50
- }
51
- function get(name) {
52
- if (typeof document === "undefined" || arguments.length && !name) {
53
- return;
54
- }
55
- var cookies = document.cookie ? document.cookie.split("; ") : [];
56
- var jar = {};
57
- for (var i = 0; i < cookies.length; i++) {
58
- var parts = cookies[i].split("=");
59
- var value = parts.slice(1).join("=");
60
- try {
61
- var found = decodeURIComponent(parts[0]);
62
- jar[found] = converter.read(value, found);
63
- if (name === found) {
64
- break;
65
- }
66
- } catch (e) {
67
- }
68
- }
69
- return name ? jar[name] : jar;
70
- }
71
- return Object.create(
72
- {
73
- set,
74
- get,
75
- remove: function(name, attributes) {
76
- set(
77
- name,
78
- "",
79
- assign({}, attributes, {
80
- expires: -1
81
- })
82
- );
83
- },
84
- withAttributes: function(attributes) {
85
- return init(this.converter, assign({}, this.attributes, attributes));
86
- },
87
- withConverter: function(converter2) {
88
- return init(assign({}, this.converter, converter2), this.attributes);
89
- }
90
- },
91
- {
92
- attributes: { value: Object.freeze(defaultAttributes) },
93
- converter: { value: Object.freeze(converter) }
94
- }
95
- );
96
- }
97
- init(defaultConverter, { path: "/" });
98
- const _IntersectionLoader = class _IntersectionLoader {
99
- constructor(el, callback) {
100
- this.init = () => {
101
- this.observer = new IntersectionObserver((items) => {
102
- items.forEach(({ isIntersecting }) => {
103
- if (isIntersecting) this.load().catch((error) => this.handleError(error));
104
- });
105
- });
106
- this.observer.observe(this.el);
107
- this.fallbackBtn?.addEventListener("click", this.handleClick);
108
- };
109
- this.load = async () => {
110
- try {
111
- await this.callback();
112
- } catch (error) {
113
- this.handleError(error);
114
- }
115
- this.observer.unobserve(this.el);
116
- };
117
- this.handleClick = () => {
118
- this.load().catch((error) => this.handleError(error));
119
- };
120
- this.handleError = (error) => {
121
- console.error(error);
122
- this.errorMsg?.removeAttribute("hidden");
123
- };
124
- this.el = el;
125
- this.callback = callback;
126
- this.fallbackBtn = this.el.querySelector("[data-load-fallback]");
127
- this.errorMsg = this.el.querySelector("[data-load-error]");
128
- }
129
- };
130
- _IntersectionLoader.create = (selector, callback) => {
131
- if (!Object.hasOwn(window, "once")) return;
132
- window.once("intersection-loader", selector)?.forEach((el) => {
133
- const loader = new _IntersectionLoader(el, callback);
134
- loader.init();
135
- });
136
- };
137
- let IntersectionLoader = _IntersectionLoader;
138
- const _BreakpointLoader = class _BreakpointLoader {
139
- constructor(el, callback, options = { mediaQuery: "(max-width: 720px)" }) {
140
- this.init = () => {
141
- this.responsiveCheck(this.breakpoint);
142
- this.breakpoint.addEventListener("change", this.responsiveCheck);
143
- this.fallbackBtn?.addEventListener("click", this.handleClick);
144
- };
145
- this.responsiveCheck = ({ matches }) => {
146
- matches && this.load().catch((error) => this.handleError(error));
147
- };
148
- this.load = async () => {
149
- try {
150
- await this.callback();
151
- } catch (error) {
152
- this.handleError(error);
153
- }
154
- this.breakpoint.removeEventListener("change", this.responsiveCheck);
155
- };
156
- this.handleClick = () => {
157
- this.load().catch((error) => this.handleError(error));
158
- };
159
- this.handleError = (error) => {
160
- console.error(error);
161
- this.errorMsg?.removeAttribute("hidden");
162
- };
163
- if (!el) {
164
- throw new Error("Element is null or empty.");
165
- }
166
- this.el = el;
167
- this.callback = callback;
168
- this.breakpoint = window.matchMedia(options.mediaQuery);
169
- this.options = { ...options };
170
- this.fallbackBtn = this.el.querySelector("[data-load-fallback]");
171
- this.errorMsg = this.el.querySelector("[data-load-error]");
172
- }
173
- };
174
- _BreakpointLoader.create = (selector, callback, options = {}) => {
175
- if (!Object.hasOwn(window, "once")) return;
176
- window.once("breakpoint-loader", selector)?.forEach((el) => {
177
- const loader = new _BreakpointLoader(
178
- el,
179
- callback,
180
- options
181
- );
182
- loader.init();
183
- });
184
- };
185
- let BreakpointLoader = _BreakpointLoader;
186
- const makeAnchor = (string, length = 20) => {
187
- if (typeof string !== "string" || !string) return "";
188
- let id = string.toLowerCase().trim().replace(/\s+/g, "-").replace(/[^-a-z0-9]/g, "").replace(/[\n\r]+|[\s]{2,}/g, "");
189
- const times = [...Array(6).keys()];
190
- times.forEach(() => {
191
- if (!id.charAt(0).match(/[a-z]/g)) {
192
- id = id.substring(1);
193
- }
194
- });
195
- if (length) id = id.substring(0, length + 1);
196
- return id;
197
- };
198
- const createElement = (string) => {
199
- try {
200
- const el = document.createElement("div");
201
- el.innerHTML = string;
202
- return el.firstElementChild;
203
- } catch (error) {
204
- console.error(error);
205
- return null;
206
- }
207
- };
208
- const handleOutsideClick = (event, container, callback, ignored = []) => {
209
- const {
210
- target,
211
- clientY,
212
- clientX
213
- } = event;
214
- const isOption = target instanceof HTMLOptionElement || target instanceof HTMLSelectElement;
215
- const isIgnored = ignored?.filter(
216
- (item) => item === target || item.contains(target)
217
- );
218
- if (isIgnored.length || isOption) return;
219
- const obs = new IntersectionObserver(
220
- ([{ boundingClientRect }]) => {
221
- const { top, height, width, left } = boundingClientRect;
222
- const isInDialog = top <= clientY && clientY <= top + height && left <= clientX && clientX <= left + width;
223
- if (!isInDialog) {
224
- callback();
225
- }
226
- obs.disconnect();
227
- }
228
- );
229
- obs.observe(container);
230
- };
231
- const handleEscape = (event, callback) => {
232
- const { key } = event;
233
- if (key === "Escape") {
234
- callback();
235
- }
236
- };
237
- export {
238
- handleEscape as a,
239
- createElement as c,
240
- handleOutsideClick as h,
241
- makeAnchor as m
242
- };
243
- //# sourceMappingURL=utilities-B4YZb689.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utilities-B4YZb689.js","sources":["../../../node_modules/js-cookie/dist/js.cookie.mjs","../../../src/Utility/Elements/io-loader.ts","../../../src/Utility/Elements/breakpoint-loader.ts","../../../src/Utility/utilities.ts"],"sourcesContent":["/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Lazy Load on an Intersection Observer\n */\n\nexport default class IntersectionLoader {\n el: HTMLElement\n callback: () => any\n observer: IntersectionObserver\n fallbackBtn?: HTMLButtonElement\n errorMsg?: HTMLElement\n\n constructor(el: HTMLElement, callback: () => any) {\n this.el = el\n this.callback = callback\n this.fallbackBtn = this.el.querySelector(\"[data-load-fallback]\")\n this.errorMsg = this.el.querySelector(\"[data-load-error]\")\n }\n\n init = (): void => {\n this.observer = new IntersectionObserver(items => {\n items.forEach(({ isIntersecting }) => {\n if (isIntersecting) this.load().catch(error => this.handleError(error))\n })\n })\n this.observer.observe(this.el)\n this.fallbackBtn?.addEventListener(\"click\", this.handleClick)\n }\n\n load = async (): Promise<void> => {\n try {\n await this.callback()\n } catch (error) {\n this.handleError(error)\n }\n this.observer.unobserve(this.el)\n }\n\n handleClick = (): void => {\n this.load().catch(error => this.handleError(error))\n }\n\n handleError = (error): void => {\n console.error(error) // eslint-disable-line no-console\n this.errorMsg?.removeAttribute(\"hidden\")\n }\n\n static create = (selector: string, callback: () => any): void => {\n if (!Object.hasOwn(window, \"once\")) return\n window\n .once(\"intersection-loader\", selector)\n ?.forEach((el: HTMLElement): void => {\n const loader: IntersectionLoader = new IntersectionLoader(el, callback)\n loader.init()\n })\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Lazy Load a component based on breakpoint.\n */\n\ntype BreakpointLoaderOptions = {\n mediaQuery?: string\n}\n\nexport default class BreakpointLoader {\n el: HTMLElement\n callback: () => any\n breakpoint: MediaQueryList\n options: BreakpointLoaderOptions\n fallbackBtn?: HTMLButtonElement\n errorMsg?: HTMLElement\n\n constructor(\n el: HTMLElement,\n callback: () => any,\n options: BreakpointLoaderOptions = { mediaQuery: \"(max-width: 720px)\" },\n ) {\n if (!el) {\n throw new Error(\"Element is null or empty.\")\n }\n this.el = el\n this.callback = callback\n this.breakpoint = window.matchMedia(options.mediaQuery)\n this.options = { ...options }\n this.fallbackBtn = this.el.querySelector(\"[data-load-fallback]\")\n this.errorMsg = this.el.querySelector(\"[data-load-error]\")\n }\n\n init = (): void => {\n this.responsiveCheck(this.breakpoint)\n this.breakpoint.addEventListener(\"change\", this.responsiveCheck)\n this.fallbackBtn?.addEventListener(\"click\", this.handleClick)\n }\n\n responsiveCheck = ({ matches }): void => {\n matches && this.load().catch(error => this.handleError(error))\n }\n\n load = async (): Promise<void> => {\n try {\n await this.callback()\n } catch (error) {\n this.handleError(error)\n }\n this.breakpoint.removeEventListener(\"change\", this.responsiveCheck)\n }\n\n handleClick = (): void => {\n this.load().catch(error => this.handleError(error))\n }\n\n handleError = (error): void => {\n console.error(error) // eslint-disable-line no-console\n this.errorMsg?.removeAttribute(\"hidden\")\n }\n\n static create = (\n selector: string,\n callback: () => any,\n options: BreakpointLoaderOptions = {},\n ): void => {\n if (!Object.hasOwn(window, \"once\")) return\n window\n .once(\"breakpoint-loader\", selector)\n ?.forEach((el: HTMLElement): void => {\n const loader: BreakpointLoader = new BreakpointLoader(\n el,\n callback,\n options,\n )\n loader.init()\n })\n }\n}\n","/* eslint-disable no-console */\n/**\n * @file utilities.\n */\n\nexport { default as DisclosureWidget } from \"./Elements/disclosure-widget\"\nexport type { DisclosureWidgetEvent } from \"./Elements/disclosure-widget\"\nexport { default as Keyboard } from \"./Elements/keyboard\"\nexport { default as CookieCompliance } from \"./Elements/cookie-compliance\"\nexport { default as IntersectionLoader } from \"./Elements/io-loader\"\nexport { default as BreakpointLoader } from \"./Elements/breakpoint-loader\"\n\nexport const makeAnchor = (string: string, length: number = 20): string => {\n if (typeof string !== \"string\" || !string) return \"\"\n // Convert the string to lowercase and remove non-alphanumeric characters.\n let id: string = string\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"-\")\n .replace(/[^-a-z0-9]/g, \"\")\n .replace(/[\\n\\r]+|[\\s]{2,}/g, \"\")\n // Ensure we start the id with a letter.\n // Only run this several times.\n const times: number[] = [...Array(6).keys()]\n times.forEach((): void => {\n if (!id.charAt(0).match(/[a-z]/g)) {\n id = id.substring(1)\n }\n })\n // Cut to the desired length.\n if (length) id = id.substring(0, length + 1)\n\n return id\n}\n\nexport const makeCamelCase = (string: string): string => {\n if (typeof string !== \"string\" || !string) return \"\"\n const output: string = string\n .trim()\n .replace(\n /(?:^\\w|[A-Z]|\\b\\w|\\s+)/g,\n (match: string, index: number): string => {\n if (+match === 0) return \"\"\n return index === 0 ? match.toLowerCase() : match.toUpperCase()\n },\n )\n return output.replace(/[^\\w\\s]/gi, \"\")\n}\n\nexport const isInternalLink = (\n href: string,\n internalHostnames: string[],\n): boolean => {\n if (typeof href !== \"string\" || !href || !Array.isArray(internalHostnames)) {\n return false\n }\n\n try {\n const { hostname }: { hostname: string } = new URL(href)\n return (\n window.location.hostname === hostname ||\n internalHostnames.includes(hostname)\n )\n } catch (error) {\n console.error(error)\n return false\n }\n}\n\nexport const createElement = (string: string): Element | null => {\n try {\n const el: HTMLDivElement = document.createElement(\"div\")\n el.innerHTML = string\n return el.firstElementChild\n } catch (error) {\n console.error(error)\n return null\n }\n}\n\nexport const getElementBox = (\n element: HTMLElement,\n once: boolean = false,\n content: boolean = false,\n): void => {\n const observer: ResizeObserver = new ResizeObserver(entries => {\n entries.forEach(({ contentBoxSize, borderBoxSize }) => {\n const [{ inlineSize, blockSize }] = content\n ? contentBoxSize\n : borderBoxSize\n element.style.setProperty(\"--inline-size\", `${inlineSize.toFixed(1)}px`)\n element.style.setProperty(\"--block-size\", `${blockSize.toFixed(1)}px`)\n if (once) observer.unobserve(element)\n })\n })\n observer.observe(element)\n}\n\nexport const handleOutsideClick = (\n event: MouseEvent,\n container: HTMLElement,\n callback: () => void,\n ignored: HTMLElement[] = [],\n): void => {\n const {\n target,\n clientY,\n clientX,\n }: { target: EventTarget; clientY: number; clientX: number } = event\n // FF treating option click as outside click.\n const isOption: boolean =\n target instanceof HTMLOptionElement || target instanceof HTMLSelectElement\n // Or it's in the ignored list.\n\n const isIgnored: HTMLElement[] = ignored?.filter(\n item => item === target || item.contains(target as HTMLElement),\n )\n // Exit early if we can.\n if (isIgnored.length || isOption) return\n // Check if click is inside the dialog content.\n const obs: IntersectionObserver = new IntersectionObserver(\n ([{ boundingClientRect }]) => {\n const { top, height, width, left } = boundingClientRect\n const isInDialog: boolean =\n top <= clientY &&\n clientY <= top + height &&\n left <= clientX &&\n clientX <= left + width\n\n if (!isInDialog) {\n callback()\n }\n obs.disconnect()\n },\n )\n obs.observe(container)\n}\n\nexport const handleEscape = (\n event: KeyboardEvent,\n callback: () => void,\n): void => {\n const { key } = event\n if (key === \"Escape\") {\n callback()\n }\n}\n\n/* eslint-disable no-unused-vars, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access */\nexport const loadOnReady = (\n callback: (this: Window, ev: Event) => void,\n name: string,\n): void => {\n // @ts-expect-error Drupal is global\n if (Object.hasOwn(window, \"Drupal\") && Object.hasOwn(Drupal, \"behaviors\")) {\n // @ts-expect-error Drupal is global\n Drupal.behaviors[name] = {\n attach: callback,\n }\n return\n }\n window.addEventListener(\"DOMContentLoaded\", callback.bind(document, document))\n}\n"],"names":["converter"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog.entry.js","sources":["../../src/Component/Dialog/Elements/Dialog.ts"],"sourcesContent":["/**\n * DialogBase\n * @file Support opening/closing, and adding a scroll lock to the body.\n */\n\nimport { handleOutsideClick, handleEscape } from \"../../../Utility/utilities\"\n\nexport default class Dialog extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n scrollLockClass: string = \"body--scroll-lock\"\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.openBtns || !this.dialog) return\n\n const { signal }: AbortController = this.controller\n\n // Open on toggle click.\n document.addEventListener(\n \"click\",\n (e: MouseEvent): void => {\n if (![...this.openBtns].includes(e.target as HTMLButtonElement)) return\n this.handleOpen()\n e.preventDefault()\n },\n {\n signal,\n },\n )\n\n // Close on close button click.\n this.dialog.addEventListener(\n \"click\",\n (e: MouseEvent): void => {\n if (![...this.closeBtns].includes(e.target as HTMLButtonElement)) return\n this.handleClose()\n e.preventDefault()\n },\n {\n signal,\n },\n )\n\n // Close on outside click.\n document.addEventListener(\n \"click\",\n (e: MouseEvent): void => {\n if (!this.dialog?.open) return\n handleOutsideClick(e, this.dialog as HTMLElement, this.handleClose, [\n ...this.openBtns,\n ...this.closeBtns,\n ])\n },\n { signal },\n )\n\n // Close on escape keydown.\n document.addEventListener(\n \"keydown\",\n (e: KeyboardEvent): void => {\n if (!this.dialog?.open) return\n handleEscape(e, this.handleClose)\n },\n { signal },\n )\n }\n\n /**\n * Disconnected.\n */\n disconnectedCallback(): void {\n if (!this.dialog) return\n if (typeof this.dialog.close === \"function\") this.dialog.close()\n this.openBtns.forEach((btn: Element) =>\n btn.setAttribute(\"aria-expanded\", \"false\"),\n )\n document.body.classList.remove(this.scrollLockClass)\n this.controller.abort()\n }\n\n handleOpen = (): void => {\n if (!this.dialog) return\n if (typeof this.dialog.show === \"function\") {\n this.isModal ? this.dialog.showModal() : this.dialog.show()\n }\n this.openBtns.forEach((btn: Element) =>\n btn.setAttribute(\"aria-expanded\", \"true\"),\n )\n document.body.classList.add(this.scrollLockClass)\n }\n\n handleClose = (): void => {\n if (!this.dialog) return\n if (typeof this.dialog.close === \"function\") this.dialog.close()\n this.openBtns.forEach((btn: Element) =>\n btn.setAttribute(\"aria-expanded\", \"false\"),\n )\n document.body.classList.remove(this.scrollLockClass)\n }\n\n get dialog(): HTMLDialogElement | null {\n const dialog: HTMLDialogElement | null = this.querySelector(\"dialog\")\n if (!dialog) {\n throw new Error(`${this.localName} must contain a <dialog> element.`)\n }\n return dialog\n }\n\n get openBtns(): NodeListOf<HTMLButtonElement> {\n const btns: NodeListOf<HTMLButtonElement> = document.querySelectorAll(\n `[href=\"#${this.id}\"], [aria-controls=\"${this.id}\"]`,\n )\n if (!btns) {\n throw new Error(\n `${this.localName} must have an associated opening element.`,\n )\n }\n btns.forEach((btn: HTMLButtonElement): void => {\n btn.setAttribute(\"aria-controls\", this.id)\n })\n return btns\n }\n\n get closeBtns(): NodeListOf<HTMLButtonElement> {\n return this.querySelectorAll(\"button[data-close]\")\n }\n\n get isModal(): boolean {\n return this.hasAttribute(\"data-modal\")\n }\n}\n\ncustomElements.define(\"mx-dialog\", Dialog)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-dialog\": Dialog\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"drop-menu.entry.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"filters.entry.js","sources":["../../src/Component/Accordion/Elements/AccordionMobile.ts","../../src/Component/Filters/Elements/Filters.ts"],"sourcesContent":["/**\n * AccordionMobile\n * @file Support a mobile only <details> element, that opens at a breakpoint.\n */\n\nimport Accordion from \"./Accordion\"\n\nexport default class AccordionMobile extends Accordion {\n mq: string\n toggleAttribute!: Element[\"toggleAttribute\"]\n\n constructor() {\n super()\n this.mq = this.getAttribute(\"mq\") || \"(max-width: 720px)\"\n }\n\n connectedCallback(): void {\n this.handleBreakpoint(this.breakpoint)\n const { signal }: AbortController = this.controller\n this.breakpoint.addEventListener(\"change\", this.handleBreakpoint, {\n signal,\n })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleBreakpoint = ({\n matches,\n }: MediaQueryList | MediaQueryListEvent): void => {\n if (!this.details) return\n this.details.toggleAttribute(\"open\", !matches)\n }\n\n get breakpoint(): MediaQueryList {\n return window.matchMedia(this.mq)\n }\n}\n\ncustomElements.define(\"mx-accordionmobile\", AccordionMobile)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-accordionmobile\": AccordionMobile\n }\n}\n","/**\n * Filters\n * @file Support filter count elements and closing the \"right\" variant on mobile..\n */\n\nimport \"../../Accordion/Elements/Accordion\"\nimport \"../../Accordion/Elements/AccordionMobile\"\n\ntype EntryType = {\n item: HTMLElement\n counter?: HTMLSpanElement\n count?: number\n}\n\nexport default class Filters extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n entries?: Map<string, EntryType>\n\n static observedAttributes = [\"count\"]\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.items) return\n\n const { signal }: AbortController = this.controller\n this.closeBtn?.addEventListener(\"click\", this.handleClose, {\n signal,\n })\n this.showBtn?.addEventListener(\"click\", this.handleShow, {\n signal,\n })\n\n this.handleCounters()\n this.addEventListener(\"change\", this.handleCounters, { signal })\n this.form?.addEventListener(\"submit\", this.handleCounters, { signal })\n this.form?.addEventListener(\"reset\", this.handleReset, { signal })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n attributeChangedCallback(\n name: string,\n oldValue: string,\n newValue: string,\n ): void {\n if (name === \"count\" && oldValue !== newValue) {\n const qualifier = parseInt(newValue, 10) > 0\n this.resetBtn?.toggleAttribute(\"disabled\", !qualifier)\n this.submitBtn?.toggleAttribute(\"disabled\", !qualifier)\n if (!this.allCounter) return\n this.allCounter.textContent = qualifier ? newValue : \"\"\n }\n }\n\n handleClose = (event: MouseEvent): void => {\n if (!this.details) return\n this.details.open = false\n event.preventDefault()\n }\n\n handleShow = (event: MouseEvent): void => {\n event.preventDefault()\n const wrapper = this.showBtn.previousElementSibling\n wrapper.removeAttribute(\"hidden\")\n const lastVisible = wrapper.previousElementSibling\n const input = lastVisible.querySelector(\"input\")\n if (!input) return\n input.focus({ preventScroll: true })\n setTimeout(() => {\n this.showBtn.setAttribute(\"hidden\", \"\")\n }, 100)\n }\n\n handleReset = (): void => {\n this.entries.forEach((entry, key): void => {\n this.entries.set(key, { ...entry, count: null })\n if (entry.counter) entry.counter.textContent = \"\"\n })\n this.setAttribute(\"count\", \"0\")\n }\n\n handleCounters = (): void => {\n const formData = new FormData(this.form, this.submitBtn)\n this.entries.forEach((entry, key): void => {\n const { length } = formData.getAll(key).filter(Boolean)\n const count = length > 0 ? length : null\n this.entries.set(key, { ...entry, count })\n if (entry.counter) entry.counter.textContent = count?.toString() || \"\"\n })\n\n const totalCount = [...this.entries].filter(([, item]) => item.count).length\n this.setAttribute(\"count\", totalCount.toString())\n }\n\n get items(): NodeListOf<HTMLElement> | null {\n const items: NodeListOf<HTMLElement> =\n this.querySelectorAll(\".mx-filter-item\")\n if (!items) {\n throw new Error(\n `${this.localName} must contain a .mx-filter-item element.`,\n )\n }\n this.entries = new Map()\n items.forEach(item => {\n const key = item.querySelector(\"input, select\")?.getAttribute(\"name\")\n this.entries.set(key, {\n item,\n counter: item.querySelector(\"[data-counter]\"),\n })\n })\n return items\n }\n\n get details(): HTMLDetailsElement | null {\n return this.querySelector(\"mx-accordionmobile > details\")\n }\n\n get closeBtn(): HTMLButtonElement | null {\n return this.details?.querySelector(\"button[data-close]\")\n }\n\n get form(): HTMLFormElement | null {\n return this.querySelector(\"form\")\n }\n\n get resetBtn(): HTMLButtonElement | null {\n return this.querySelector(\"button[type='reset']\")\n }\n\n get submitBtn(): HTMLButtonElement | null {\n return this.querySelector(\"button[type='submit']\")\n }\n\n get showBtn(): HTMLButtonElement | null {\n return this.querySelector(\"button[data-show]\")\n }\n\n get allCounter(): HTMLSpanElement | null {\n return this.querySelector(\"[data-counters]\")\n }\n}\n\ncustomElements.define(\"mx-filters\", Filters)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-filters\": Filters\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"global-alert.entry.js","sources":["../../src/Component/GlobalAlert/Elements/ClosableAlert.ts"],"sourcesContent":["/**\n * @file GlobalAlerts\n *\n * When a GlobalAlert is closed the id is written to local storage.\n * This is checked as the page is re-rendered, if a GlobalAlert with the same ID is\n * created it will be removed from the dom.\n */\n\nimport { makeAnchor, createElement } from \"../../../Utility/utilities\"\n\nexport default class GlobalAlert extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n }\n\n connectedCallback(): void {\n if (!this.container) return\n this.id = this.id || this.generatedId()\n if (this.localStorage) {\n this.controller.abort()\n this.remove()\n return\n }\n const { signal }: AbortController = this.controller\n this.close?.addEventListener(\"click\", this.handleClose, { signal })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n this.close.remove()\n }\n\n /**\n * Handle close button click event.\n */\n handleClose = (): void => {\n this.controller.abort()\n this.remove()\n this.localStorage = \"true\"\n const newEvent: CustomEvent<{ id: string; target: GlobalAlert }> =\n new CustomEvent(\"GlobalAlert-close\", {\n bubbles: true,\n cancelable: true,\n detail: {\n id: this.id,\n target: this,\n },\n })\n this.dispatchEvent(newEvent)\n }\n\n get localStorage(): string {\n return localStorage.getItem(this.id)\n }\n\n set localStorage(value: string) {\n localStorage.setItem(this.id, value)\n }\n\n get container(): HTMLElement {\n const element: HTMLElement = this.querySelector(\"[data-container]\")\n if (!element) {\n throw new Error(\n `${this.localName} must contain a [data-container] element.`,\n )\n }\n return element\n }\n\n get close(): HTMLButtonElement {\n let closeBtn: HTMLButtonElement = this.querySelector(\".mx-icon--close\")\n if (!closeBtn) {\n closeBtn = createElement(\n `<button class=\"mx-icon mx-icon--close\" aria-controls=\"${this.id}\" aria-label=\"Close GlobalAlert\" type=\"button\"></button>`,\n ) as HTMLButtonElement\n this.container.appendChild(closeBtn)\n }\n return closeBtn\n }\n\n generatedId(): string {\n const id = `mx-alert-${Math.floor(Math.random() * Math.floor(10000))}`\n return makeAnchor(id, 20)\n }\n}\n\ncustomElements.define(\"mx-closable-alert\", GlobalAlert)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-closable-alert\": GlobalAlert\n }\n}\n"],"names":[],"mappings":";AAUA,MAAqB,oBAAoB,YAAY;AAAA,EAInD,cAAc;AACN;AAyBR,SAAA,cAAc,MAAY;AACxB,WAAK,WAAW;AAChB,WAAK,OAAO;AACZ,WAAK,eAAe;AACd,YAAA,WACJ,IAAI,YAAY,qBAAqB;AAAA,QACnC,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,UACN,IAAI,KAAK;AAAA,UACT,QAAQ;AAAA,QACV;AAAA,MAAA,CACD;AACH,WAAK,cAAc,QAAQ;AAAA,IAAA;AArCtB,SAAA,aAAa,KAAK;AAClB,SAAA,aAAa,IAAI;EACxB;AAAA,EAEA,oBAA0B;AACpB,QAAA,CAAC,KAAK,UAAW;AACrB,SAAK,KAAK,KAAK,MAAM,KAAK,YAAY;AACtC,QAAI,KAAK,cAAc;AACrB,WAAK,WAAW;AAChB,WAAK,OAAO;AACZ;AAAA,IACF;AACM,UAAA,EAAE,OAAO,IAAqB,KAAK;AACzC,SAAK,OAAO,iBAAiB,SAAS,KAAK,aAAa,EAAE,QAAQ;AAAA,EACpE;AAAA,EAEA,uBAA6B;AAC3B,SAAK,WAAW;AAChB,SAAK,MAAM;EACb;AAAA,EAqBA,IAAI,eAAuB;AAClB,WAAA,aAAa,QAAQ,KAAK,EAAE;AAAA,EACrC;AAAA,EAEA,IAAI,aAAa,OAAe;AACjB,iBAAA,QAAQ,KAAK,IAAI,KAAK;AAAA,EACrC;AAAA,EAEA,IAAI,YAAyB;AACrB,UAAA,UAAuB,KAAK,cAAc,kBAAkB;AAClE,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI;AAAA,QACR,GAAG,KAAK,SAAS;AAAA,MAAA;AAAA,IAErB;AACO,WAAA;AAAA,EACT;AAAA,EAEA,IAAI,QAA2B;AACzB,QAAA,WAA8B,KAAK,cAAc,iBAAiB;AACtE,QAAI,CAAC,UAAU;AACF,iBAAA;AAAA,QACT,yDAAyD,KAAK,EAAE;AAAA,MAAA;AAE7D,WAAA,UAAU,YAAY,QAAQ;AAAA,IACrC;AACO,WAAA;AAAA,EACT;AAAA,EAEA,cAAsB;AACd,UAAA,KAAK,YAAY,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK,MAAM,GAAK,CAAC,CAAC;AAC7D,WAAA,WAAW,IAAI,EAAE;AAAA,EAC1B;AACF;AAEA,eAAe,OAAO,qBAAqB,WAAW;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"header.entry.js","sources":["../../src/Layout/Header/Elements/GlobalToggle.ts"],"sourcesContent":["/**\n * Header\n * @file Handle accessible trigger of menus on small screens.\n */\n\nimport {\n DisclosureWidget,\n DisclosureWidgetEvent,\n} from \"../../../Utility/utilities\"\n\nexport default class GlobalToggle extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n widget!: DisclosureWidget\n controls?: string\n mq: string\n triggerText: string\n closeIconClass: string = \"icon--close\"\n menuIconClass: string = \"icon--menu\"\n searchIconClass: string = \"icon--search\"\n hideMenu: boolean\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n this.mq = this.getAttribute(\"mq\") || \"(max-width: 720px)\"\n }\n\n connectedCallback(): void {\n if (!this.trigger || !this.target) return\n\n this.target?.setAttribute(\"role\", \"region\")\n this.widget = new DisclosureWidget(this.trigger, this.target)\n this.widget.init()\n const { signal }: AbortController = this.controller\n this.handleBreakpoint(this.breakpoint)\n this.breakpoint.addEventListener(\"change\", this.handleBreakpoint, {\n signal,\n })\n }\n\n disconnectedCallback(): void {\n this.widget.detach()\n this.controller.abort()\n }\n\n handleBreakpoint = ({\n matches,\n }: MediaQueryList | MediaQueryListEvent): void => {\n if (!this.trigger) return\n const { signal }: AbortController = this.controller\n if (matches) {\n this.widget.attach()\n this.target.setAttribute(\"inert\", \"\")\n this.trigger.addEventListener(\n \"disclosure-toggle\",\n this.handleDisclosure,\n { signal },\n )\n } else {\n this.widget.detach()\n this.target.removeAttribute(\"inert\")\n this.trigger.removeEventListener(\n \"disclosure-toggle\",\n this.handleDisclosure,\n )\n }\n }\n\n handleDisclosure = ({ detail }: CustomEvent<DisclosureWidgetEvent>): void => {\n const { isOpen } = detail\n // Toggle toggle text.\n const origText = !isOpen ? \"Close\" : \"Open\"\n const replaceText = !isOpen ? \"Open\" : \"Close\"\n this.trigger.textContent = this.triggerText.replace(origText, replaceText)\n\n // Search is a little different.\n const isSearch = this.controls === \"primary-search\"\n if (isSearch) this.handleSearchDisclosure(isOpen)\n\n // Toggle trigger classes.\n this.trigger.classList.toggle(\n isSearch ? this.searchIconClass : this.menuIconClass,\n )\n this.trigger.classList.toggle(this.closeIconClass)\n }\n\n handleSearchDisclosure = (isOpen?: boolean): void => {\n if (this.hideMenu) {\n // Search trigger should hide the menu trigger.\n const menuTrigger = document.querySelector(`.${this.menuIconClass}`)\n menuTrigger.toggleAttribute(\"hidden\")\n }\n // Shift focus between search input and trigger.\n if (!isOpen) {\n this.trigger.focus()\n } else {\n this.target.querySelector(\"input\")?.focus()\n }\n }\n\n get trigger(): HTMLButtonElement {\n const trigger: HTMLButtonElement | null =\n this.querySelector(\":scope > button\")\n const controls = trigger.getAttribute(\"aria-controls\")\n if (!trigger || !controls) {\n throw new Error(\n `${this.localName} must contain a <button aria-controls=\"element-to-trigger\"> element.`,\n )\n }\n trigger.removeAttribute(\"disabled\")\n this.controls = controls\n this.triggerText = trigger.textContent\n return trigger\n }\n\n get target(): HTMLDivElement {\n const target: HTMLDivElement | null = document.querySelector(\n `div[id=\"${this.controls}\"]`,\n )\n if (!target) {\n throw new Error(\n `${this.localName} must contain a target <div id=\"${this.controls}\">.`,\n )\n }\n target.classList.remove(\"global-nav-up-only\")\n return target\n }\n\n get breakpoint(): MediaQueryList {\n return window.matchMedia(this.mq)\n }\n}\n\ncustomElements.define(\"mx-global-toggle\", GlobalToggle)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-trigger\": GlobalToggle\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"in-page-navigation.entry.js","sources":["../../src/Component/InPageNavigation/Elements/InPageNavigation.ts"],"sourcesContent":["/**\n * DialogBase\n * @file Support opening/closing, and adding a scroll lock to the body.\n */\n\nimport { makeAnchor, createElement } from \"../../../Utility/utilities\"\n\nexport default class InPageNavigation extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n headingLevels: string\n items: { link: HTMLAnchorElement; heading: HTMLHeadingElement }[]\n active: { link: HTMLAnchorElement; heading: HTMLHeadingElement } | undefined\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n this.headingLevels = this.dataset?.headings || \"h2\"\n this.items = []\n }\n\n connectedCallback(): void {\n if (!this.menu || !this.headings) return\n if (!this.links.length) {\n // Build links if not provided.\n this.headings.forEach((heading: HTMLHeadingElement) => {\n const listItem: HTMLLIElement = this.generateListItem(heading)\n const link: HTMLAnchorElement = this.generateAnchor(heading)\n this.items.push({ link, heading })\n listItem.appendChild(link)\n this.menu?.appendChild(listItem)\n })\n } else {\n this.links.forEach((link: HTMLAnchorElement) => {\n const heading: HTMLHeadingElement = this.container.querySelector(\n link.href,\n )\n if (!heading) return\n this.items.push({ link, heading })\n })\n }\n\n const { signal }: AbortController = this.controller\n\n // Open on toggle click.\n this.menu.addEventListener(\n \"click\",\n (e: MouseEvent): void => {\n const { target } = e\n if (!(target instanceof HTMLAnchorElement)) return\n this.handleClick(target)\n },\n {\n signal,\n },\n )\n }\n\n disconnectedCallback(): void {\n if (!this.menu || !this.headings) return\n this.menu.textContent = \"\"\n this.items = []\n this.controller.abort()\n }\n\n handleClick = (target: EventTarget | null): void => {\n this.active = this.items.find(item => item.link === target)\n if (!this.links || !this.active) return\n this.links.forEach(link => link.classList.remove(\"is-active\"))\n this.active.link.classList.add(\"is-active\")\n }\n\n get menu(): HTMLUListElement | HTMLOListElement | null {\n const menu: HTMLUListElement | HTMLOListElement | null =\n this.querySelector(\"ul, ol\")\n if (!menu) {\n throw new Error(`${this.localName} must contain a <ul> or <ol> element.`)\n }\n return menu\n }\n\n get container(): HTMLElement | null {\n const selector: string | null = this.getAttribute(\"data-content\")\n if (!selector) {\n throw new Error(\n `${this.localName} must have a [data-content] attribute that contains the content selector.`,\n )\n }\n return this.closest(selector) || this.parentElement.querySelector(selector)\n }\n\n get headings(): NodeListOf<HTMLHeadingElement> | undefined {\n return this.container?.querySelectorAll(this.headingLevels)\n }\n\n get links(): NodeListOf<HTMLAnchorElement> | undefined {\n return this.menu?.querySelectorAll(\"a\")\n }\n\n generatedId(heading: HTMLHeadingElement): string {\n const string: string | undefined = heading?.textContent?.trim()\n return !string ? \"\" : makeAnchor(string)\n }\n\n generateAnchor(heading: HTMLHeadingElement): HTMLAnchorElement {\n const { textContent, id } = heading\n const linkText: string | null =\n heading.getAttribute(\"data-in-page-navigation-title\") || textContent\n const targetID: string = id || this.generatedId(heading)\n if (!id) heading.id = targetID\n const item: Element = createElement(\n `<a href=\"#${targetID}\"><span class=\"mx-icon mx-icon--chevron-right\"></span><span>${linkText}</span></a>`,\n )\n\n return item as HTMLAnchorElement\n }\n\n generateListItem(heading: HTMLHeadingElement): HTMLLIElement {\n const { tagName } = heading\n const item: Element = createElement(\n `<li class=\"mx-in-page-navigation__level--${tagName.toLowerCase()}\"></li>`,\n )\n\n return item as HTMLLIElement\n }\n}\n\ncustomElements.define(\"mx-in-page-navigation\", InPageNavigation)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-in-page-navigation\": InPageNavigation\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"navigation.entry.js","sources":["../../src/Component/Navigation/Elements/Navigation.ts"],"sourcesContent":["/**\n * Main Navigation\n * @file Drop down navigation handler.\n */\n\nimport {\n Keyboard,\n makeAnchor,\n DisclosureWidget,\n DisclosureWidgetEvent,\n} from \"../../../Utility/utilities\"\n\ntype SubNavType = {\n list: HTMLElement\n trigger: HTMLButtonElement\n link: HTMLAnchorElement\n item?: HTMLLIElement\n widget?: DisclosureWidget\n linkWidget?: DisclosureWidget\n}\n\nexport default class Navigation extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n keyboard: Keyboard\n subNavs?: Map<string, SubNavType>\n flyout?: boolean\n edgeCheck!: boolean\n mq!: string\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n this.flyout = this.hasAttribute(\"flyout\")\n }\n\n connectedCallback(): void {\n const { signal }: AbortController = this.controller\n\n // Add keyboard navigation events.\n this.keyboard = new Keyboard()\n this.keyboard.attachEventListeners(signal)\n\n // Add keyboard focus handler for menu links.\n this.addEventListener(\"focusin\", () => {\n this.keyboard.attachMenu(this, this.links)\n })\n this.addEventListener(\"focusout\", () => {\n this.keyboard.detachMenu()\n })\n\n if (!this.lists.length) return\n this.subNavs = new Map()\n this.lists.forEach((list: HTMLUListElement, index: number): void => {\n const item: HTMLLIElement = list.closest(\"li\")\n const link: HTMLAnchorElement = item.querySelector(\":scope > a\")\n const id: string = makeAnchor(`subnav-${index}-${link.textContent}`, 30)\n const trigger: HTMLButtonElement = item.querySelector(\n \":scope > button.mx-nav__toggle\",\n )\n if (item && link && trigger) {\n const labelId = `list-label-${id}`\n link.setAttribute(\"id\", labelId)\n list.setAttribute(\"id\", id)\n list.setAttribute(\"aria-labelledby\", labelId)\n const widget = new DisclosureWidget(trigger, list)\n widget.init()\n this.subNavs.set(id, { item, trigger, list, link, widget })\n }\n })\n\n this.addEventListener(\"disclosure-toggle\", this.handleDisclosure)\n\n if (!this.flyout) return\n this.edgeCheck = this.hasAttribute(\"edgeCheck\")\n this.mq = this.getAttribute(\"mq\") || \"(min-width: 720px)\"\n this.handleBreakpoint(this.breakpoint)\n this.breakpoint.addEventListener(\"change\", this.handleBreakpoint, {\n signal,\n })\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n this.subNavs.forEach((subNav: SubNavType): void => subNav.widget.detach())\n }\n\n handleDisclosure = ({ detail }: CustomEvent<DisclosureWidgetEvent>): void => {\n const { isOpen, id } = detail\n const { item } = this.subNavs.get(id)\n item.classList.toggle(\"mx-nav--open\")\n if (isOpen) {\n this.keyboard.attachPopup(id, this.handleCloseAny)\n } else {\n this.keyboard.detachPopup(id)\n }\n }\n\n handleCloseAny = (): void => {\n this.subNavs.forEach(({ widget }: SubNavType): void => {\n if (!widget) return\n if (widget.isOpen) widget.handleToggle()\n })\n }\n\n handleFlyout = (event: MouseEvent): void => {\n const target = event.target as HTMLElement\n const parent: HTMLLIElement = target.closest(\"li\")\n if (!parent) return\n const subnav: HTMLUListElement = parent.querySelector(\":scope > ul\")\n if (!subnav) return\n this.subNavs.forEach(({ widget, list }: SubNavType): void => {\n if (!widget) return\n if (widget.isOpen) widget.handleToggle()\n if (list.id === subnav.id) widget.handleToggle()\n })\n }\n\n handleBreakpoint = ({\n matches,\n }: MediaQueryList | MediaQueryListEvent): void => {\n const { signal }: AbortController = this.controller\n if (matches) {\n this.addEventListener(\"mouseover\", this.handleFlyout, { signal })\n this.addEventListener(\"mouseleave\", this.handleCloseAny, { signal })\n if (this.edgeCheck) this.handleEdgeCheck()\n } else {\n this.removeEventListener(\"mouseover\", this.handleFlyout)\n this.removeEventListener(\"mouseleave\", this.handleCloseAny)\n }\n }\n\n handleEdgeCheck() {\n const windowInnerWidth: number = window.innerWidth\n const edgeCheck: IntersectionObserver = new IntersectionObserver(\n ([{ boundingClientRect, target }], obs) => {\n if (windowInnerWidth < boundingClientRect.right)\n target.classList.add(\"mx-nav--reverse\")\n obs.disconnect()\n },\n )\n this.subNavs.forEach(({ list }: SubNavType): void => {\n edgeCheck.observe(list)\n const nestedLists: NodeListOf<HTMLUListElement> =\n list.querySelectorAll(\"ul\")\n nestedLists.forEach(nestedList => edgeCheck.observe(nestedList))\n })\n }\n\n get links(): NodeListOf<HTMLAnchorElement> | null {\n const links: NodeListOf<HTMLAnchorElement> | null =\n this.querySelectorAll(\"a\")\n if (!links.length) {\n throw new Error(`${this.localName} must links`)\n }\n return links\n }\n\n get lists(): NodeListOf<HTMLUListElement> | null {\n return this.querySelectorAll(\"li > ul\")\n }\n\n get breakpoint(): MediaQueryList {\n return window.matchMedia(this.mq)\n }\n}\n\ncustomElements.define(\"mx-nav\", Navigation)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-nav\": Navigation\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sticky.entry.js","sources":["../../src/Component/Sticky/Elements/Sticky.ts"],"sourcesContent":["/**\n * Sticky \"is-stuck\" and offset handler.\n */\n\nimport { createElement } from \"../../../Utility/utilities\"\n\ntype IOOptions = {\n root: IntersectionObserver[\"root\"]\n rootMargin: IntersectionObserver[\"rootMargin\"]\n thresholds: IntersectionObserver[\"thresholds\"]\n}\n\nexport default class Sticky extends HTMLElement {\n internals_: ElementInternals\n iO: IntersectionObserver\n rO?: ResizeObserver\n offsetPropName?: string\n root?: IOOptions[\"root\"] = null\n rootMargin?: IOOptions[\"rootMargin\"] = \"0px 0px 0px 0px\"\n thresholds?: IOOptions[\"thresholds\"] = [0]\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n }\n\n connectedCallback(): void {\n this.offsetPropName = this.getAttribute(\"offsetpropname\")\n const options: IOOptions = {\n root: this.root,\n rootMargin: this.rootMargin,\n thresholds: this.thresholds,\n }\n\n // Toggle \"is-stuck\" and emit event.\n this.iO = new IntersectionObserver(([{ boundingClientRect }]) => {\n const isSticky: boolean = boundingClientRect.y < 0\n this.classList.toggle(\"is-stuck\", isSticky)\n const newEvent: CustomEvent<{\n isSticky: boolean\n options: IOOptions\n target: Sticky\n }> = new CustomEvent(\"sticky-toggle\", {\n bubbles: true,\n cancelable: true,\n detail: {\n isSticky,\n options,\n target: this,\n },\n })\n this.dispatchEvent(newEvent)\n }, options)\n this.iO.observe(this.trigger)\n\n // If offsetPropName, record its height.\n if (!this.offsetPropName) return\n this.rO = new ResizeObserver(entries => {\n entries.forEach(({ borderBoxSize }) => {\n const [{ blockSize }] = borderBoxSize\n document.body.style.setProperty(\n this.offsetPropName,\n `${blockSize.toFixed(1)}px`,\n )\n })\n })\n this.rO.observe(this)\n }\n\n disconnectedCallback(): void {\n this.iO.unobserve(this.trigger)\n this.rO.disconnect()\n }\n\n get trigger(): HTMLDivElement {\n let trigger: HTMLDivElement | null = this.querySelector(\".sticky__trigger\")\n if (!trigger) {\n trigger = createElement(\n '<div class=\"sticky__trigger\"></div>',\n ) as HTMLDivElement\n this.insertAdjacentElement(\"beforebegin\", trigger)\n }\n return trigger\n }\n}\n\ncustomElements.define(\"mx-sticky\", Sticky)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-sticky\": Sticky\n }\n}\n"],"names":[],"mappings":";AAYA,MAAqB,eAAe,YAAY;AAAA,EAS9C,cAAc;AACN;AALmB,SAAA,OAAA;AACY,SAAA,aAAA;AACvC,SAAA,aAAuC,CAAC,CAAC;AAIlC,SAAA,aAAa,KAAK;EACzB;AAAA,EAEA,oBAA0B;AACnB,SAAA,iBAAiB,KAAK,aAAa,gBAAgB;AACxD,UAAM,UAAqB;AAAA,MACzB,MAAM,KAAK;AAAA,MACX,YAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,IAAA;AAId,SAAA,KAAK,IAAI,qBAAqB,CAAC,CAAC,EAAE,mBAAA,CAAoB,MAAM;AACzD,YAAA,WAAoB,mBAAmB,IAAI;AAC5C,WAAA,UAAU,OAAO,YAAY,QAAQ;AACpC,YAAA,WAID,IAAI,YAAY,iBAAiB;AAAA,QACpC,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,QAAQ;AAAA,UACN;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MAAA,CACD;AACD,WAAK,cAAc,QAAQ;AAAA,OAC1B,OAAO;AACL,SAAA,GAAG,QAAQ,KAAK,OAAO;AAGxB,QAAA,CAAC,KAAK,eAAgB;AACrB,SAAA,KAAK,IAAI,eAAe,CAAW,YAAA;AACtC,cAAQ,QAAQ,CAAC,EAAE,oBAAoB;AACrC,cAAM,CAAC,EAAE,WAAW,IAAI;AACxB,iBAAS,KAAK,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,GAAG,UAAU,QAAQ,CAAC,CAAC;AAAA,QAAA;AAAA,MACzB,CACD;AAAA,IAAA,CACF;AACI,SAAA,GAAG,QAAQ,IAAI;AAAA,EACtB;AAAA,EAEA,uBAA6B;AACtB,SAAA,GAAG,UAAU,KAAK,OAAO;AAC9B,SAAK,GAAG;EACV;AAAA,EAEA,IAAI,UAA0B;AACxB,QAAA,UAAiC,KAAK,cAAc,kBAAkB;AAC1E,QAAI,CAAC,SAAS;AACF,gBAAA;AAAA,QACR;AAAA,MAAA;AAEG,WAAA,sBAAsB,eAAe,OAAO;AAAA,IACnD;AACO,WAAA;AAAA,EACT;AACF;AAEA,eAAe,OAAO,aAAa,MAAM;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabs.entry.js","sources":["../../src/Component/Tabs/Elements/Tabs.ts"],"sourcesContent":["/**\n * Tab toggle handler\n */\n\nimport DropMenu, { DropMenuEvent } from \"../../DropMenu/Elements/DropMenu\"\nimport { createElement, makeAnchor } from \"../../../Utility/utilities\"\n\ntype TabsType = {\n panel: HTMLElement\n tab: HTMLButtonElement\n button: HTMLButtonElement\n}\n\nexport default class Tabs extends HTMLElement {\n internals_: ElementInternals\n controller: AbortController\n tabs?: Map<string, TabsType>\n mq: string\n locationHash?: string\n tabFocus?: number = 0\n tabListClasses?: string\n dropTriggerClasses?: string\n dropMenuId?: string\n\n constructor() {\n super()\n this.internals_ = this.attachInternals()\n this.controller = new AbortController()\n this.mq = this.getAttribute(\"mq\") || \"(max-width: 720px)\"\n }\n\n connectedCallback(): void {\n if (!this.panels) return\n this.locationHash = window.location.hash\n\n this.tabs = new Map()\n this.panels.forEach((panel: HTMLDivElement): void => {\n const id: string = panel.id\n const name: string = panel.getAttribute(\"aria-label\")\n const tabTemplate = `<button type=\"button\" role=\"tab\" aria-controls=\"${id}\" aria-selected=\"false\">${name}</button>`\n const tab = createElement(tabTemplate) as HTMLButtonElement\n this.tabList.appendChild(tab)\n const button = createElement(tabTemplate) as HTMLButtonElement\n this.dropMenuMenu.appendChild(button)\n if (id && panel && button) {\n this.tabs.set(id, { panel, tab, button })\n }\n })\n\n const { signal }: AbortController = this.controller\n this.handleBreakpoint(this.breakpoint)\n this.breakpoint.addEventListener(\"change\", this.handleBreakpoint, {\n signal,\n })\n\n const hashEl: HTMLElement | null = this.locationHash\n ? this.querySelector(this.locationHash)\n : null\n if (hashEl) {\n this.active = hashEl.id\n } else if (!this.active) {\n this.active = this.panels[0].id\n }\n }\n\n disconnectedCallback(): void {\n this.controller.abort()\n }\n\n handleBreakpoint = ({\n matches,\n }: MediaQueryList | MediaQueryListEvent): void => {\n const { signal }: AbortController = this.controller\n this.dropMenuTrigger.toggleAttribute(\"hidden\", !matches)\n this.tabList.toggleAttribute(\"hidden\", matches)\n if (matches) {\n this.dropMenuMenu.addEventListener(\n \"drop-menu-select\",\n this.handleDropMenuSelect,\n { signal },\n )\n this.tabList.removeEventListener(\"click\", this.handleClick)\n this.tabList.removeEventListener(\"keydown\", this.handleKeydown)\n } else {\n this.tabList.addEventListener(\"click\", this.handleClick, { signal })\n this.tabList.addEventListener(\"keydown\", this.handleKeydown, { signal })\n this.dropMenuMenu.removeEventListener(\n \"drop-menu-select\",\n this.handleDropMenuSelect,\n )\n }\n }\n\n handleKeydown = ({ key }: KeyboardEvent): void => {\n if (key === \"ArrowRight\" || key === \"ArrowLeft\") {\n this.triggers[this.tabFocus].setAttribute(\"tabindex\", \"-1\")\n if (key === \"ArrowRight\") {\n this.tabFocus += 1\n // If we're at the end, go to the start\n if (this.tabFocus >= this.triggers.length) {\n this.tabFocus = 0\n }\n // Move left\n } else if (key === \"ArrowLeft\") {\n this.tabFocus -= 1\n // If we're at the start, move to the end\n if (this.tabFocus < 0) {\n this.tabFocus = this.triggers.length - 1\n }\n }\n this.triggers[this.tabFocus].setAttribute(\"tabindex\", \"0\")\n this.triggers[this.tabFocus].focus()\n }\n }\n\n handleClick = (event: MouseEvent): void => {\n const target = event.target as HTMLButtonElement\n if (!(target instanceof HTMLButtonElement)) return\n event.preventDefault()\n const id: string = target.getAttribute(\"aria-controls\")\n this.handleTabChange(id)\n }\n\n handleDropMenuSelect = (event: DropMenuEvent): void => {\n const target = event.detail.target as HTMLButtonElement\n if (!(target instanceof HTMLButtonElement)) return\n const id = target.getAttribute(\"aria-controls\")\n this.handleTabChange(id)\n }\n\n handleTabChange = (id: string): void => {\n this.active = id\n this.handleUrlParams(id)\n const { panel, tab, button } = this.tabs.get(id)\n panel.focus({ preventScroll: true })\n const newEvent: CustomEvent<{\n id: string\n tab: HTMLButtonElement\n button: HTMLButtonElement\n panel: HTMLElement\n }> = new CustomEvent(\"tab-toggle\", {\n bubbles: true,\n cancelable: true,\n detail: { id, tab, button, panel },\n })\n this.dispatchEvent(newEvent)\n }\n\n get dropMenu(): DropMenu | null {\n const existingMenu = this.querySelector(\"mx-dropmenu\")\n if (existingMenu) return existingMenu\n this.dropTriggerClasses =\n this.getAttribute(\"dropTriggerClasses\") ||\n \"mx-button mx-icon mx-icon--chevron-down mx-icon--end\"\n this.dropMenuId = this.id || makeAnchor(\"tab-drop-menu\")\n const name = `${this.dropMenuId}-target`\n const tabDropMenu = new DropMenu()\n tabDropMenu.setAttribute(\"closeOnClick\", \"true\")\n const trigger = createElement(`<button\n id=\"${name}\"\n class=\"mx-drop-menu__trigger ${this.dropTriggerClasses}\"\n popovertarget=\"${this.dropMenuId}\"\n hidden\n ></button>`)\n const menu = createElement(\n `<div\n class=\"mx-drop-menu\"\n id=\"${this.dropMenuId}\"\n aria-labelledby=\"${name}\"\n anchor=\"${name}\"\n popover\n role=\"tablist\"\n ></div>`,\n )\n tabDropMenu.append(trigger, menu)\n this.prepend(tabDropMenu)\n return tabDropMenu\n }\n\n get dropMenuMenu(): HTMLDivElement {\n return this.dropMenu.querySelector('[popover][role=\"tablist\"]')\n }\n\n get dropMenuTrigger(): HTMLButtonElement | null {\n return this.dropMenu.querySelector(\"[popovertarget]\")\n }\n\n get tabList(): HTMLDivElement {\n this.tabListClasses = this.getAttribute(\"tabListClasses\") || \"mx-tabs__list\"\n const existingTabList: HTMLDivElement = this.querySelector(\n '[role=\"tablist\"]:not([popover])',\n )\n if (existingTabList) return existingTabList\n const tabList = createElement(\n `<div class=\"${this.tabListClasses}\" role=\"tablist\" hidden></div>`,\n ) as HTMLDivElement\n this.prepend(tabList)\n return tabList\n }\n\n get triggers(): NodeListOf<HTMLButtonElement> | null {\n const triggers: NodeListOf<HTMLButtonElement> | null =\n this.tabList.querySelectorAll('[role=\"tab\"]')\n if (!triggers.length) {\n throw new Error(`${this.localName} must contain [role=\"tab\"]`)\n }\n return triggers\n }\n\n get panels(): NodeListOf<HTMLElement> | null {\n const panels: NodeListOf<HTMLElement> | null =\n this.querySelectorAll('[role=\"tabpanel\"]')\n if (!panels.length) {\n throw new Error(`${this.localName} must contain [role=\"tabpanel\"]`)\n }\n return panels\n }\n\n get active(): HTMLButtonElement {\n return this.querySelector('[aria-selected=\"true\"]')\n }\n\n get breakpoint(): MediaQueryList {\n return window.matchMedia(this.mq)\n }\n\n set active(id: string) {\n this.tabs.forEach(({ tab, panel }: TabsType, key: string): void => {\n if (key === id) {\n tab.setAttribute(\"aria-selected\", \"true\")\n tab.setAttribute(\"tab-index\", \"0\")\n panel.removeAttribute(\"inert\")\n this.dropMenuTrigger.textContent = tab.textContent\n } else {\n tab.setAttribute(\"aria-selected\", \"false\")\n tab.setAttribute(\"tab-index\", \"-1\")\n panel.setAttribute(\"inert\", \"\")\n }\n })\n }\n\n handleUrlParams = (id: string): void => {\n const urlParams: URLSearchParams = new URLSearchParams(\n window.location.search,\n )\n if (urlParams.get(\"tab\") === id) return\n urlParams.set(\"tab\", id)\n window.history.replaceState(\n {},\n \"\",\n `${window.location.pathname}?${urlParams.toString()}`,\n )\n }\n}\n\ncustomElements.define(\"mx-tabs\", Tabs)\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"mx-tabs\": Tabs\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- /**
2
- * Tiles
3
- */
4
- @layer design-system.components {
5
- .tile {
6
- --outline-offset: -0.125rem;
7
- --gap: var(--gap-s);
8
-
9
- overflow: hidden;
10
- position: relative;
11
- border-radius: var(--border-radius);
12
- background: var(--tile-background, var(--colour-background-alt));
13
- color: var(--tile-foreground var(--colour-foreground));
14
- min-block-size: 160px;
15
- min-block-size: var(--height, 160px);
16
- transition:
17
- 0.2s background-color,
18
- 0.2s background-image,
19
- 0.2s color,
20
- 0.2s border-color;
21
- }
22
-
23
- .tile:is(.tile--has-link, :has(> a[href])) {
24
- cursor: pointer;
25
- }
26
-
27
- .tile > a[href] {
28
- display: block;
29
- text-indent: -10000%;
30
- block-size: 100%;
31
- }
32
-
33
- .tile .tile__content {
34
- padding: var(--spacing-m);
35
- position: relative;
36
- }
37
-
38
- .tile--medium:root {
39
- --height: 15rem;
40
- }
41
-
42
- .tile--large:root {
43
- --height: 27.0625rem;
44
- }
45
- }
46
-
47
- /**
48
- * Print stylesheet
49
- */
50
-
51
- @media print {
52
- .tile {
53
- display: block;
54
- background-color: transparent;
55
- background-image: none;
56
- color: var(--colour-foreground);
57
- min-block-size: 0;
58
- }
59
- }
60
-
61
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRpbGVzLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7RUFFRTtBQUNGO0VBQ0U7SUFDRSwyQkFBc0I7SUFDdEIsbUJBQW1COztJQUVuQixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLG1DQUFtQztJQUNuQyxnRUFBZ0U7SUFDaEUsc0RBQXNEO0lBQ3RELHFCQUFvQztJQUFwQyxvQ0FBb0M7SUFDcEM7Ozs7dUJBSW1CO0VBZ0JyQjs7SUFkRTtNQUNFLGVBQWU7SUFDakI7O0lBRUE7TUFDRSxjQUFjO01BQ2Qsb0JBQW9CO01BQ3BCLGdCQUFnQjtJQUNsQjs7SUFFQTtNQUNFLHlCQUF5QjtNQUN6QixrQkFBa0I7SUFDcEI7O0VBR0Y7SUFDRSxlQUFlO0VBQ2pCOztFQUVBO0lBQ0Usb0JBQWU7RUFDakI7QUFDRjs7QUFFQTs7RUFFRTs7QUFFRjtFQUNFO0lBQ0UsY0FBYztJQUNkLDZCQUE2QjtJQUM3QixzQkFBc0I7SUFDdEIsK0JBQStCO0lBQy9CLGlCQUFpQjtFQUNuQjtBQUNGIiwiZmlsZSI6InRpbGVzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGlsZXNcbiAqL1xuQGxheWVyIGRlc2lnbi1zeXN0ZW0uY29tcG9uZW50cyB7XG4gIC50aWxlIHtcbiAgICAtLW91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgIC0tZ2FwOiB2YXIoLS1nYXAtcyk7XG5cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWxlLWJhY2tncm91bmQsIHZhcigtLWNvbG91ci1iYWNrZ3JvdW5kLWFsdCkpO1xuICAgIGNvbG9yOiB2YXIoLS10aWxlLWZvcmVncm91bmQgdmFyKC0tY29sb3VyLWZvcmVncm91bmQpKTtcbiAgICBtaW4tYmxvY2stc2l6ZTogdmFyKC0taGVpZ2h0LCAxNjBweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIDAuMnMgYmFja2dyb3VuZC1jb2xvcixcbiAgICAgIDAuMnMgYmFja2dyb3VuZC1pbWFnZSxcbiAgICAgIDAuMnMgY29sb3IsXG4gICAgICAwLjJzIGJvcmRlci1jb2xvcjtcblxuICAgICY6aXMoLnRpbGUtLWhhcy1saW5rLCA6aGFzKD4gYVtocmVmXSkpIHtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAmID4gYVtocmVmXSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtaW5kZW50OiAtMTAwMDAlO1xuICAgICAgYmxvY2stc2l6ZTogMTAwJTtcbiAgICB9XG5cbiAgICAmIC50aWxlX19jb250ZW50IHtcbiAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbSk7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgJi50aWxlLS1tZWRpdW0ge1xuICAgIC0taGVpZ2h0OiAyNDBweDtcbiAgfVxuXG4gICYudGlsZS0tbGFyZ2Uge1xuICAgIC0taGVpZ2h0OiA0MzNweDtcbiAgfVxufVxuXG4vKipcbiAqIFByaW50IHN0eWxlc2hlZXRcbiAqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAudGlsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3VyLWZvcmVncm91bmQpO1xuICAgIG1pbi1ibG9jay1zaXplOiAwO1xuICB9XG59XG4iXX0= */
@@ -1,10 +0,0 @@
1
- <div class="tile stack {{ modifier_class }}{% if size %} tile--{{ size }}{% endif %}">
2
- <div class="tile__content vertical-flow-flex">
3
- {% block content %}
4
- <h3 class="text--m">{{ title | default('Tile title') }}</h3>
5
- {% endblock %}
6
- </div>
7
- {% block link %}
8
- <a href="#">{{ link | default('Tile link') }}</a>
9
- {% endblock %}
10
- </div>