@mozaic-ds/web-components 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/dist/Condition20.js +1 -1
  2. package/dist/Condition20.js.map +1 -1
  3. package/dist/accordion-list.state.svelte.js +1 -1
  4. package/dist/attributes.js +1 -1
  5. package/dist/attributes.js.map +1 -1
  6. package/dist/branches.js +1 -1
  7. package/dist/branches.js.map +1 -1
  8. package/dist/bundle.d.ts +14 -0
  9. package/dist/bundle.d.ts.map +1 -1
  10. package/dist/bundle.js +14 -0
  11. package/dist/components/accordionlist/AccordionList.js +4 -4
  12. package/dist/components/accordionlist/AccordionList.js.map +1 -1
  13. package/dist/components/accordionlist/AccordionList.stories.js +2 -2
  14. package/dist/components/accordionlist/AccordionList.svelte +19 -17
  15. package/dist/components/accordionlistItem/AccordionListItem.js +4 -4
  16. package/dist/components/accordionlistItem/AccordionListItem.js.map +1 -1
  17. package/dist/components/accordionlistItem/AccordionListItem.svelte +19 -17
  18. package/dist/components/actionbottombar/ActionBottomBar.js +2 -2
  19. package/dist/components/actionlistbox/ActionListbox.js +6 -4
  20. package/dist/components/actionlistbox/ActionListbox.js.map +1 -1
  21. package/dist/components/actionlistbox/ActionListbox.spec.js +73 -16
  22. package/dist/components/actionlistbox/ActionListbox.stories.d.ts +2 -0
  23. package/dist/components/actionlistbox/ActionListbox.stories.d.ts.map +1 -1
  24. package/dist/components/actionlistbox/ActionListbox.stories.js +73 -2
  25. package/dist/components/actionlistbox/ActionListbox.svelte +157 -11
  26. package/dist/components/actionlistbox/ActionListbox.svelte.d.ts +11 -1
  27. package/dist/components/actionlistbox/ActionListbox.svelte.d.ts.map +1 -1
  28. package/dist/components/actionlistbox/README.md +3 -0
  29. package/dist/components/actionlistboxitem/ActionListboxItem.js +2 -2
  30. package/dist/components/actionlistboxitem/ActionListboxItem.js.map +1 -1
  31. package/dist/components/actionlistboxitem/ActionListboxItem.svelte +21 -5
  32. package/dist/components/actionlistboxitem/ActionListboxItem.svelte.d.ts +6 -1
  33. package/dist/components/actionlistboxitem/ActionListboxItem.svelte.d.ts.map +1 -1
  34. package/dist/components/avatar/Avatar.js +2 -2
  35. package/dist/components/breadcrumb/Breadcrumb.js +4 -6
  36. package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
  37. package/dist/components/breadcrumb/Breadcrumb.svelte +7 -14
  38. package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
  39. package/dist/components/builtinmenu/BuiltInMenu.js +2 -2
  40. package/dist/components/builtinmenu/BuiltInMenu.stories.d.ts +1 -1
  41. package/dist/components/builtinmenu/BuiltInMenu.stories.d.ts.map +1 -1
  42. package/dist/components/builtinmenu/BuiltInMenu.stories.js +2 -2
  43. package/dist/components/builtinmenu/BuiltInMenu.svelte +1 -1
  44. package/dist/components/builtinmenuitem/BuiltInMenuItem.js +3 -3
  45. package/dist/components/builtinmenuitem/BuiltInMenuItem.svelte +1 -1
  46. package/dist/components/button/Button.js +3 -3
  47. package/dist/components/button/Button.js.map +1 -1
  48. package/dist/components/button/Button.svelte +16 -1
  49. package/dist/components/button/Button.svelte.d.ts +6 -1
  50. package/dist/components/button/Button.svelte.d.ts.map +1 -1
  51. package/dist/components/callout/Callout.js +2 -2
  52. package/dist/components/callout/Callout.stories.d.ts +3 -3
  53. package/dist/components/callout/Callout.stories.d.ts.map +1 -1
  54. package/dist/components/callout/Callout.stories.js +3 -3
  55. package/dist/components/carousel/Carousel.js +2 -2
  56. package/dist/components/carousel/Carousel.js.map +1 -1
  57. package/dist/components/carousel/Carousel.svelte +1 -0
  58. package/dist/components/checkbox/Checkbox.js +4 -4
  59. package/dist/components/checkbox/Checkbox.js.map +1 -1
  60. package/dist/components/checkbox/Checkbox.svelte +30 -10
  61. package/dist/components/checkboxgroup/CheckboxGroup.js +4 -4
  62. package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
  63. package/dist/components/checkboxgroup/CheckboxGroup.svelte +30 -10
  64. package/dist/components/checklistmenu/CheckListMenu.js +2 -2
  65. package/dist/components/checklistmenu/CheckListMenu.js.map +1 -1
  66. package/dist/components/checklistmenu/CheckListMenu.stories.js +1 -1
  67. package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
  68. package/dist/components/container/Container.js +2 -2
  69. package/dist/components/datepicker/Datepicker.js +3 -3
  70. package/dist/components/datepicker/Datepicker.js.map +1 -1
  71. package/dist/components/datepicker/Datepicker.stories.d.ts +1 -1
  72. package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
  73. package/dist/components/datepicker/Datepicker.stories.js +2 -2
  74. package/dist/components/datepicker/Datepicker.svelte +32 -8
  75. package/dist/components/divider/Divider.js +2 -2
  76. package/dist/components/divider/Divider.js.map +1 -1
  77. package/dist/components/divider/Divider.svelte +6 -1
  78. package/dist/components/divider/Divider.svelte.d.ts.map +1 -1
  79. package/dist/components/drawer/Drawer.js +2 -2
  80. package/dist/components/drawer/Drawer.js.map +1 -1
  81. package/dist/components/drawer/Drawer.svelte +4 -1
  82. package/dist/components/field/Field.js +3 -3
  83. package/dist/components/field/Field.js.map +1 -1
  84. package/dist/components/field/Field.spec.js +1 -1
  85. package/dist/components/field/Field.svelte +7 -3
  86. package/dist/components/fileuploader/FileUploader.js +2 -2
  87. package/dist/components/fileuploader/FileUploader.js.map +1 -1
  88. package/dist/components/fileuploader/FileUploader.stories.js +3 -3
  89. package/dist/components/fileuploader/FileUploader.svelte +4 -1
  90. package/dist/components/fileuploaderitem/FileUploaderItem.js +2 -2
  91. package/dist/components/flag/Flag.js +2 -2
  92. package/dist/components/iconbutton/IconButton.js +2 -2
  93. package/dist/components/iconbutton/IconButton.js.map +1 -1
  94. package/dist/components/iconbutton/IconButton.svelte +11 -1
  95. package/dist/components/iconbutton/IconButton.svelte.d.ts +3 -1
  96. package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
  97. package/dist/components/kpiitem/KpiItem.js +2 -2
  98. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
  99. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
  100. package/dist/components/link/Link.js +2 -2
  101. package/dist/components/link/Link.stories.js +2 -2
  102. package/dist/components/loader/Loader.js +2 -2
  103. package/dist/components/loadingoverlay/LoadingOverlay.js +2 -2
  104. package/dist/components/modal/Modal.js +3 -3
  105. package/dist/components/modal/Modal.js.map +1 -1
  106. package/dist/components/modal/Modal.svelte +5 -1
  107. package/dist/components/navigationindicator/NavigationIndicator.js +4 -0
  108. package/dist/components/navigationindicator/NavigationIndicator.js.map +1 -0
  109. package/dist/components/navigationindicator/NavigationIndicator.spec.js +130 -0
  110. package/dist/components/navigationindicator/NavigationIndicator.stories.d.ts +8 -0
  111. package/dist/components/navigationindicator/NavigationIndicator.stories.d.ts.map +1 -0
  112. package/dist/components/navigationindicator/NavigationIndicator.stories.js +40 -0
  113. package/dist/components/navigationindicator/NavigationIndicator.svelte +156 -0
  114. package/dist/components/navigationindicator/NavigationIndicator.svelte.d.ts +34 -0
  115. package/dist/components/navigationindicator/NavigationIndicator.svelte.d.ts.map +1 -0
  116. package/dist/components/navigationindicator/README.md +21 -0
  117. package/dist/components/numberbadge/NumberBadge.js +2 -2
  118. package/dist/components/overlay/Overlay.js +2 -2
  119. package/dist/components/pageheader/PageHeader.js +24 -0
  120. package/dist/components/pageheader/PageHeader.js.map +1 -0
  121. package/dist/components/pageheader/PageHeader.spec.js +75 -0
  122. package/dist/components/pageheader/PageHeader.stories.d.ts +12 -0
  123. package/dist/components/pageheader/PageHeader.stories.d.ts.map +1 -0
  124. package/dist/components/pageheader/PageHeader.stories.js +82 -0
  125. package/dist/components/pageheader/PageHeader.svelte +268 -0
  126. package/dist/components/pageheader/PageHeader.svelte.d.ts +66 -0
  127. package/dist/components/pageheader/PageHeader.svelte.d.ts.map +1 -0
  128. package/dist/components/pageheader/README.md +32 -0
  129. package/dist/components/pagination/Pagination.js +8 -8
  130. package/dist/components/pagination/Pagination.js.map +1 -1
  131. package/dist/components/pagination/Pagination.svelte +44 -28
  132. package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
  133. package/dist/components/passwordinput/PasswordInput.js +3 -3
  134. package/dist/components/passwordinput/PasswordInput.js.map +1 -1
  135. package/dist/components/passwordinput/PasswordInput.stories.d.ts +1 -1
  136. package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
  137. package/dist/components/passwordinput/PasswordInput.stories.js +2 -2
  138. package/dist/components/passwordinput/PasswordInput.svelte +14 -5
  139. package/dist/components/phonenumber/PhoneNumber.js +13 -11
  140. package/dist/components/phonenumber/PhoneNumber.js.map +1 -1
  141. package/dist/components/phonenumber/PhoneNumber.stories.d.ts +1 -1
  142. package/dist/components/phonenumber/PhoneNumber.stories.d.ts.map +1 -1
  143. package/dist/components/phonenumber/PhoneNumber.stories.js +2 -2
  144. package/dist/components/phonenumber/PhoneNumber.svelte +84 -37
  145. package/dist/components/phonenumber/PhoneNumber.svelte.d.ts.map +1 -1
  146. package/dist/components/pincode/Pincode.js +2 -2
  147. package/dist/components/pincode/Pincode.js.map +1 -1
  148. package/dist/components/pincode/Pincode.stories.d.ts +1 -1
  149. package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
  150. package/dist/components/pincode/Pincode.stories.js +2 -2
  151. package/dist/components/popover/Popover.js +6 -0
  152. package/dist/components/popover/Popover.js.map +1 -0
  153. package/dist/components/popover/Popover.spec.js +69 -0
  154. package/dist/components/popover/Popover.stories.d.ts +36 -0
  155. package/dist/components/popover/Popover.stories.d.ts.map +1 -0
  156. package/dist/components/popover/Popover.stories.js +124 -0
  157. package/dist/components/popover/Popover.svelte +348 -0
  158. package/dist/components/popover/Popover.svelte.d.ts +79 -0
  159. package/dist/components/popover/Popover.svelte.d.ts.map +1 -0
  160. package/dist/components/popover/README.md +25 -0
  161. package/dist/components/quantityselector/QuantitySelector.js +2 -2
  162. package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
  163. package/dist/components/quantityselector/QuantitySelector.stories.js +1 -1
  164. package/dist/components/quantityselector/QuantitySelector.svelte +3 -3
  165. package/dist/components/radio/Radio.js +2 -2
  166. package/dist/components/radio/Radio.js.map +1 -1
  167. package/dist/components/radiogroup/RadioGroup.js +2 -2
  168. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  169. package/dist/components/radiogroup/RadioGroup.svelte +6 -2
  170. package/dist/components/segmentedcontrol/SegmentedControl.js +2 -2
  171. package/dist/components/segmentedcontrol/SegmentedControl.js.map +1 -1
  172. package/dist/components/select/Select.js +3 -3
  173. package/dist/components/select/Select.js.map +1 -1
  174. package/dist/components/select/Select.spec.js +2 -2
  175. package/dist/components/select/Select.stories.d.ts +1 -1
  176. package/dist/components/select/Select.stories.d.ts.map +1 -1
  177. package/dist/components/select/Select.stories.js +2 -2
  178. package/dist/components/select/Select.svelte +50 -31
  179. package/dist/components/select/Select.svelte.d.ts.map +1 -1
  180. package/dist/components/sidebar/README.md +28 -0
  181. package/dist/components/sidebar/Sidebar.js +18 -0
  182. package/dist/components/sidebar/Sidebar.js.map +1 -0
  183. package/dist/components/sidebar/Sidebar.spec.js +74 -0
  184. package/dist/components/sidebar/Sidebar.stories.d.ts +23 -0
  185. package/dist/components/sidebar/Sidebar.stories.d.ts.map +1 -0
  186. package/dist/components/sidebar/Sidebar.stories.js +333 -0
  187. package/dist/components/sidebar/Sidebar.svelte +570 -0
  188. package/dist/components/sidebar/Sidebar.svelte.d.ts +47 -0
  189. package/dist/components/sidebar/Sidebar.svelte.d.ts.map +1 -0
  190. package/dist/components/sidebar/floating-item.spec.js +96 -0
  191. package/dist/components/sidebar/floating-item.svelte.d.ts +13 -0
  192. package/dist/components/sidebar/floating-item.svelte.d.ts.map +1 -0
  193. package/dist/components/sidebar/floating-item.svelte.js +95 -0
  194. package/dist/components/sidebar/sidebar-state.spec.js +112 -0
  195. package/dist/components/sidebar/sidebar-state.svelte.d.ts +9 -0
  196. package/dist/components/sidebar/sidebar-state.svelte.d.ts.map +1 -0
  197. package/dist/components/sidebar/sidebar-state.svelte.js +36 -0
  198. package/dist/components/sidebarexpandableitem/README.md +19 -0
  199. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.js +18 -0
  200. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.js.map +1 -0
  201. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.spec.js +85 -0
  202. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte +578 -0
  203. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte.d.ts +49 -0
  204. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte.d.ts.map +1 -0
  205. package/dist/components/sidebarfooter/README.md +29 -0
  206. package/dist/components/sidebarfooter/SidebarFooter.js +18 -0
  207. package/dist/components/sidebarfooter/SidebarFooter.js.map +1 -0
  208. package/dist/components/sidebarfooter/SidebarFooter.spec.js +132 -0
  209. package/dist/components/sidebarfooter/SidebarFooter.svelte +1018 -0
  210. package/dist/components/sidebarfooter/SidebarFooter.svelte.d.ts +60 -0
  211. package/dist/components/sidebarfooter/SidebarFooter.svelte.d.ts.map +1 -0
  212. package/dist/components/sidebarfooter/_SidebarFooterMenu.js +18 -0
  213. package/dist/components/sidebarfooter/_SidebarFooterMenu.js.map +1 -0
  214. package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte +517 -0
  215. package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte.d.ts +36 -0
  216. package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte.d.ts.map +1 -0
  217. package/dist/components/sidebarheader/README.md +11 -0
  218. package/dist/components/sidebarheader/SidebarHeader.js +18 -0
  219. package/dist/components/sidebarheader/SidebarHeader.js.map +1 -0
  220. package/dist/components/sidebarheader/SidebarHeader.spec.js +37 -0
  221. package/dist/components/sidebarheader/SidebarHeader.svelte +499 -0
  222. package/dist/components/sidebarheader/SidebarHeader.svelte.d.ts +17 -0
  223. package/dist/components/sidebarheader/SidebarHeader.svelte.d.ts.map +1 -0
  224. package/dist/components/sidebarnavitem/README.md +30 -0
  225. package/dist/components/sidebarnavitem/SidebarNavItem.js +18 -0
  226. package/dist/components/sidebarnavitem/SidebarNavItem.js.map +1 -0
  227. package/dist/components/sidebarnavitem/SidebarNavItem.spec.js +95 -0
  228. package/dist/components/sidebarnavitem/SidebarNavItem.svelte +617 -0
  229. package/dist/components/sidebarnavitem/SidebarNavItem.svelte.d.ts +58 -0
  230. package/dist/components/sidebarnavitem/SidebarNavItem.svelte.d.ts.map +1 -0
  231. package/dist/components/sidebarshortcutitem/README.md +17 -0
  232. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.js +18 -0
  233. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.js.map +1 -0
  234. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.spec.js +34 -0
  235. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte +509 -0
  236. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte.d.ts +35 -0
  237. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte.d.ts.map +1 -0
  238. package/dist/components/sidebarshortcuts/README.md +23 -0
  239. package/dist/components/sidebarshortcuts/SidebarShortcuts.js +18 -0
  240. package/dist/components/sidebarshortcuts/SidebarShortcuts.js.map +1 -0
  241. package/dist/components/sidebarshortcuts/SidebarShortcuts.spec.js +82 -0
  242. package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte +583 -0
  243. package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte.d.ts +42 -0
  244. package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte.d.ts.map +1 -0
  245. package/dist/components/starrating/StarRating.js +2 -2
  246. package/dist/components/starrating/StarRating.js.map +1 -1
  247. package/dist/components/starrating/StarRating.stories.d.ts +5 -5
  248. package/dist/components/starrating/StarRating.stories.d.ts.map +1 -1
  249. package/dist/components/starrating/StarRating.stories.js +5 -5
  250. package/dist/components/statusbadge/StatusBadge.js +2 -2
  251. package/dist/components/statusdot/StatusDot.js +2 -2
  252. package/dist/components/statusmessage/StatusMessage.js +2 -2
  253. package/dist/components/statusnotification/StatusNotification.js +2 -2
  254. package/dist/components/statusnotification/StatusNotification.js.map +1 -1
  255. package/dist/components/statusnotification/StatusNotification.stories.d.ts +3 -3
  256. package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
  257. package/dist/components/statusnotification/StatusNotification.stories.js +3 -3
  258. package/dist/components/statusnotification/StatusNotification.svelte +4 -1
  259. package/dist/components/stepperbottombar/StepperBottomBar.js +3 -3
  260. package/dist/components/stepperbottombar/StepperBottomBar.svelte +5 -1
  261. package/dist/components/stepperbottombar/StepperBottomBar.svelte.d.ts +1 -1
  262. package/dist/components/steppercompact/StepperCompact.js +2 -2
  263. package/dist/components/stepperinline/StepperInline.js +3 -3
  264. package/dist/components/stepperinline/StepperInline.svelte +1 -1
  265. package/dist/components/stepperinline/StepperInline.svelte.d.ts +1 -1
  266. package/dist/components/tab/Tab.js +2 -2
  267. package/dist/components/tabs/Tabs.js +2 -2
  268. package/dist/components/tabs/Tabs.stories.js +1 -1
  269. package/dist/components/tag/Tag.js +2 -2
  270. package/dist/components/tag/Tag.js.map +1 -1
  271. package/dist/components/tag/Tag.svelte +8 -5
  272. package/dist/components/textarea/Textarea.js +2 -2
  273. package/dist/components/textarea/Textarea.js.map +1 -1
  274. package/dist/components/textarea/Textarea.stories.d.ts +1 -1
  275. package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
  276. package/dist/components/textarea/Textarea.stories.js +2 -2
  277. package/dist/components/textinput/README.md +2 -0
  278. package/dist/components/textinput/Textinput.js +3 -3
  279. package/dist/components/textinput/Textinput.js.map +1 -1
  280. package/dist/components/textinput/Textinput.stories.d.ts +11 -1
  281. package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
  282. package/dist/components/textinput/Textinput.stories.js +20 -29
  283. package/dist/components/textinput/Textinput.svelte +28 -4
  284. package/dist/components/textinput/Textinput.svelte.d.ts +8 -0
  285. package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
  286. package/dist/components/tile/README.md +19 -0
  287. package/dist/components/tile/Tile.js +111 -0
  288. package/dist/components/tile/Tile.js.map +1 -0
  289. package/dist/components/tile/Tile.spec.js +21 -0
  290. package/dist/components/tile/Tile.stories.d.ts +10 -0
  291. package/dist/components/tile/Tile.stories.d.ts.map +1 -0
  292. package/dist/components/tile/Tile.stories.js +37 -0
  293. package/dist/components/tile/Tile.svelte +894 -0
  294. package/dist/components/tile/Tile.svelte.d.ts +48 -0
  295. package/dist/components/tile/Tile.svelte.d.ts.map +1 -0
  296. package/dist/components/tileclickable/README.md +31 -0
  297. package/dist/components/tileclickable/TileClickable.js +114 -0
  298. package/dist/components/tileclickable/TileClickable.js.map +1 -0
  299. package/dist/components/tileclickable/TileClickable.spec.js +62 -0
  300. package/dist/components/tileclickable/TileClickable.stories.d.ts +10 -0
  301. package/dist/components/tileclickable/TileClickable.stories.d.ts.map +1 -0
  302. package/dist/components/tileclickable/TileClickable.stories.js +52 -0
  303. package/dist/components/tileclickable/TileClickable.svelte +954 -0
  304. package/dist/components/tileclickable/TileClickable.svelte.d.ts +65 -0
  305. package/dist/components/tileclickable/TileClickable.svelte.d.ts.map +1 -0
  306. package/dist/components/tileexpandable/README.md +20 -0
  307. package/dist/components/tileexpandable/TileExpandable.js +114 -0
  308. package/dist/components/tileexpandable/TileExpandable.js.map +1 -0
  309. package/dist/components/tileexpandable/TileExpandable.spec.js +65 -0
  310. package/dist/components/tileexpandable/TileExpandable.stories.d.ts +7 -0
  311. package/dist/components/tileexpandable/TileExpandable.stories.d.ts.map +1 -0
  312. package/dist/components/tileexpandable/TileExpandable.stories.js +38 -0
  313. package/dist/components/tileexpandable/TileExpandable.svelte +956 -0
  314. package/dist/components/tileexpandable/TileExpandable.svelte.d.ts +53 -0
  315. package/dist/components/tileexpandable/TileExpandable.svelte.d.ts.map +1 -0
  316. package/dist/components/tileselectable/README.md +21 -0
  317. package/dist/components/tileselectable/TileSelectable.js +108 -0
  318. package/dist/components/tileselectable/TileSelectable.js.map +1 -0
  319. package/dist/components/tileselectable/TileSelectable.spec.js +57 -0
  320. package/dist/components/tileselectable/TileSelectable.stories.d.ts +9 -0
  321. package/dist/components/tileselectable/TileSelectable.stories.d.ts.map +1 -0
  322. package/dist/components/tileselectable/TileSelectable.stories.js +44 -0
  323. package/dist/components/tileselectable/TileSelectable.svelte +939 -0
  324. package/dist/components/tileselectable/TileSelectable.svelte.d.ts +57 -0
  325. package/dist/components/tileselectable/TileSelectable.svelte.d.ts.map +1 -0
  326. package/dist/components/toaster/Toaster.js +3 -3
  327. package/dist/components/toaster/Toaster.js.map +1 -1
  328. package/dist/components/toaster/Toaster.stories.d.ts +2 -2
  329. package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
  330. package/dist/components/toaster/Toaster.stories.js +2 -2
  331. package/dist/components/toaster/Toaster.svelte +5 -2
  332. package/dist/components/toggle/Toggle.js +2 -2
  333. package/dist/components/toggle/Toggle.js.map +1 -1
  334. package/dist/components/toggle/Toggle.svelte +0 -14
  335. package/dist/components/togglegroup/ToggleGroup.js +2 -2
  336. package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
  337. package/dist/components/togglegroup/ToggleGroup.svelte +6 -16
  338. package/dist/components/tooltip/README.md +1 -0
  339. package/dist/components/tooltip/Tooltip.js +2 -2
  340. package/dist/components/tooltip/Tooltip.js.map +1 -1
  341. package/dist/components/tooltip/Tooltip.svelte +18 -10
  342. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  343. package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
  344. package/dist/custom-element.js +3 -3
  345. package/dist/custom-element.js.map +1 -1
  346. package/dist/each.js +1 -1
  347. package/dist/each.js.map +1 -1
  348. package/dist/floating-item.svelte.js +2 -0
  349. package/dist/floating-item.svelte.js.map +1 -0
  350. package/dist/if.js +1 -1
  351. package/dist/if.js.map +1 -1
  352. package/dist/index-client.js +1 -1
  353. package/dist/index-client.js.map +1 -1
  354. package/dist/input.js +1 -1
  355. package/dist/main.d.ts +15 -1
  356. package/dist/main.d.ts.map +1 -1
  357. package/dist/main.js +15 -1
  358. package/dist/media-query.js +2 -0
  359. package/dist/media-query.js.map +1 -0
  360. package/dist/sidebar-state.svelte.js +2 -0
  361. package/dist/sidebar-state.svelte.js.map +1 -0
  362. package/dist/slot.js +1 -1
  363. package/dist/svelte-component.js +1 -1
  364. package/dist/svelte-element.js +1 -1
  365. package/dist/svelte-element.js.map +1 -1
  366. package/dist/this.js +1 -1
  367. package/package.json +2 -2
@@ -0,0 +1,96 @@
1
+ import { beforeEach, afterEach, describe, it, expect, vi, afterAll, beforeAll } from 'vitest';
2
+ import { useFloatingItem } from './floating-item.svelte.ts';
3
+ beforeAll(() => {
4
+ vi.stubGlobal('matchMedia', (query) => ({
5
+ matches: query.includes('max-width: 780px'),
6
+ media: query,
7
+ onchange: null,
8
+ addEventListener: vi.fn(),
9
+ removeEventListener: vi.fn(),
10
+ dispatchEvent: vi.fn(),
11
+ }));
12
+ });
13
+ afterAll(() => {
14
+ vi.unstubAllGlobals();
15
+ });
16
+ describe('useFloatingItem', () => {
17
+ let triggerEl;
18
+ let floatingEl;
19
+ let firstButton;
20
+ let addSpy;
21
+ let removeSpy;
22
+ beforeEach(() => {
23
+ triggerEl = document.createElement('button');
24
+ triggerEl.textContent = 'trigger';
25
+ document.body.appendChild(triggerEl);
26
+ floatingEl = document.createElement('div');
27
+ floatingEl.className = 'mc-sidebar__floating-item mc-sidebar__floating-item--hidden';
28
+ firstButton = document.createElement('button');
29
+ firstButton.textContent = 'first';
30
+ floatingEl.appendChild(firstButton);
31
+ document.body.appendChild(floatingEl);
32
+ addSpy = vi.spyOn(document, 'addEventListener');
33
+ removeSpy = vi.spyOn(document, 'removeEventListener');
34
+ });
35
+ afterEach(() => {
36
+ vi.restoreAllMocks();
37
+ document.body.innerHTML = '';
38
+ });
39
+ it('showFloatingItem removes hidden class and adds mousedown listener', () => {
40
+ const { showFloatingItem } = useFloatingItem(() => triggerEl, () => floatingEl);
41
+ showFloatingItem();
42
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(false);
43
+ expect(addSpy).toHaveBeenCalledWith('mousedown', expect.any(Function));
44
+ });
45
+ it('hideFloatingItem hides and removes listener when relatedTarget is outside', () => {
46
+ const { showFloatingItem, hideFloatingItem } = useFloatingItem(() => triggerEl, () => floatingEl);
47
+ showFloatingItem();
48
+ hideFloatingItem();
49
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(true);
50
+ expect(removeSpy).toHaveBeenCalledWith('mousedown', expect.any(Function));
51
+ });
52
+ it('hideFloatingItem does not hide when relatedTarget is inside floating or trigger (allowItemHover)', () => {
53
+ const { showFloatingItem, hideFloatingItem } = useFloatingItem(() => triggerEl, () => floatingEl, { allowItemHover: true });
54
+ showFloatingItem();
55
+ const evInsideFloating = { relatedTarget: firstButton };
56
+ hideFloatingItem(evInsideFloating);
57
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(false);
58
+ expect(removeSpy).not.toHaveBeenCalled();
59
+ });
60
+ it('clicking outside triggers hide via mousedown listener', () => {
61
+ const { showFloatingItem } = useFloatingItem(() => triggerEl, () => floatingEl);
62
+ showFloatingItem();
63
+ const outside = document.createElement('div');
64
+ document.body.appendChild(outside);
65
+ outside.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }));
66
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(true);
67
+ });
68
+ it('onTriggerKeydown opens on ArrowDown and focuses first item', () => {
69
+ const { onTriggerKeydown } = useFloatingItem(() => triggerEl, () => floatingEl);
70
+ const preventSpy = vi.fn();
71
+ const ev = { key: 'ArrowDown', preventDefault: preventSpy };
72
+ const focusSpy = vi.spyOn(firstButton, 'focus');
73
+ onTriggerKeydown(ev);
74
+ expect(preventSpy).toHaveBeenCalled();
75
+ expect(focusSpy).toHaveBeenCalled();
76
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(false);
77
+ });
78
+ it('onTriggerKeydown with Tab hides the floating item', () => {
79
+ const { showFloatingItem, onTriggerKeydown } = useFloatingItem(() => triggerEl, () => floatingEl);
80
+ showFloatingItem();
81
+ const ev = { key: 'Tab' };
82
+ onTriggerKeydown(ev);
83
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(true);
84
+ });
85
+ it('onListboxKeydown Escape hides and focuses trigger', () => {
86
+ const { showFloatingItem, onListboxKeydown } = useFloatingItem(() => triggerEl, () => floatingEl);
87
+ showFloatingItem();
88
+ const preventSpy = vi.fn();
89
+ const ev = { key: 'Escape', preventDefault: preventSpy };
90
+ const focusSpy = vi.spyOn(triggerEl, 'focus');
91
+ onListboxKeydown(ev);
92
+ expect(preventSpy).toHaveBeenCalled();
93
+ expect(focusSpy).toHaveBeenCalled();
94
+ expect(floatingEl.classList.contains('mc-sidebar__floating-item--hidden')).toBe(true);
95
+ });
96
+ });
@@ -0,0 +1,13 @@
1
+ type Options = {
2
+ allowItemHover?: boolean;
3
+ position?: 'top' | 'bottom';
4
+ };
5
+ export declare const useFloatingItem: (trigger: () => HTMLElement | null, floatingItem: () => HTMLElement | null, options?: Options) => {
6
+ floatingItemIsDisplayed: boolean;
7
+ hideFloatingItem: (event?: MouseEvent | FocusEvent) => void;
8
+ showFloatingItem: () => void;
9
+ onTriggerKeydown: (event: KeyboardEvent) => void;
10
+ onListboxKeydown: (event: KeyboardEvent) => void;
11
+ };
12
+ export {};
13
+ //# sourceMappingURL=floating-item.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floating-item.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/floating-item.svelte.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GAAG;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe,GAC1B,SAAS,MAAM,WAAW,GAAG,IAAI,EACjC,cAAc,MAAM,WAAW,GAAG,IAAI,EACtC,UAAS,OAAwB;;+BA8BC,UAAU,GAAG,UAAU;;8BAoDxB,aAAa;8BAqBb,aAAa;CAe/C,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { MediaQuery } from 'svelte/reactivity';
2
+ const defaultOptions = { allowItemHover: true, position: 'bottom' };
3
+ export const useFloatingItem = (trigger, floatingItem, options = defaultOptions) => {
4
+ const normalizedOptions = {
5
+ ...defaultOptions,
6
+ ...options,
7
+ };
8
+ let floatingItemIsDisplayed = $state(false);
9
+ const isMobile = $derived(new MediaQuery('(max-width: 780px)').current);
10
+ function getListboxPosition() {
11
+ const triggerRect = trigger()?.getBoundingClientRect();
12
+ const floatingItemRect = floatingItem()?.getBoundingClientRect();
13
+ if (!triggerRect || !floatingItemRect)
14
+ return {};
15
+ if (isMobile) {
16
+ return {
17
+ top: `-${floatingItemRect.height + 24}px`,
18
+ left: `-${floatingItemRect.width - triggerRect.width}px`,
19
+ };
20
+ }
21
+ return {
22
+ top: options.position === 'top'
23
+ ? `-${floatingItemRect.height - triggerRect.height}px`
24
+ : floatingItem()?.style.left || '0px',
25
+ };
26
+ }
27
+ function hideFloatingItem(event) {
28
+ if (!floatingItem || !trigger)
29
+ return;
30
+ const target = event?.relatedTarget;
31
+ // Prevent floating item from being hidden if mouse goes from trigger to listbox, unless specified
32
+ if (normalizedOptions.allowItemHover &&
33
+ target &&
34
+ (floatingItem()?.contains(target) || trigger()?.contains(target))) {
35
+ return;
36
+ }
37
+ floatingItem()?.classList.add('mc-sidebar__floating-item--hidden');
38
+ floatingItemIsDisplayed = false;
39
+ document.removeEventListener('mousedown', handleClickOutside);
40
+ }
41
+ function handleClickOutside(event) {
42
+ const path = event.composedPath ? event.composedPath() : [];
43
+ if (!path.includes(trigger()) && !path.includes(floatingItem())) {
44
+ hideFloatingItem(event);
45
+ }
46
+ }
47
+ function showFloatingItem() {
48
+ const el = floatingItem();
49
+ el?.classList.toggle('mc-sidebar__floating-item--hidden');
50
+ floatingItemIsDisplayed = !el?.classList.contains('mc-sidebar__floating-item--hidden');
51
+ if (!floatingItemIsDisplayed)
52
+ return;
53
+ if (!el)
54
+ return;
55
+ const { left, top } = getListboxPosition();
56
+ if (top) {
57
+ el.style.top = top;
58
+ }
59
+ if (left) {
60
+ el.style.left = left;
61
+ }
62
+ floatingItemIsDisplayed = true;
63
+ document.addEventListener('mousedown', handleClickOutside);
64
+ }
65
+ function onTriggerKeydown(event) {
66
+ if (!floatingItem)
67
+ return;
68
+ if (['ArrowDown', 'Enter', ' '].includes(event.key)) {
69
+ event.preventDefault();
70
+ showFloatingItem();
71
+ focusFirstListboxItem();
72
+ }
73
+ if (event.key === 'Tab') {
74
+ hideFloatingItem();
75
+ }
76
+ }
77
+ function focusFirstListboxItem() {
78
+ const firstItem = floatingItem()?.querySelector('button, [href], [tabindex]:not([tabindex="-1"])');
79
+ firstItem?.focus();
80
+ }
81
+ function onListboxKeydown(event) {
82
+ if (event.key === 'Escape') {
83
+ event.preventDefault();
84
+ hideFloatingItem();
85
+ trigger()?.focus();
86
+ }
87
+ }
88
+ return {
89
+ floatingItemIsDisplayed,
90
+ hideFloatingItem,
91
+ showFloatingItem,
92
+ onTriggerKeydown,
93
+ onListboxKeydown,
94
+ };
95
+ };
@@ -0,0 +1,112 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
2
+ import { getSidebarState, getShortcutsState, setSubItems } from './sidebar-state.svelte';
3
+ import { setContext } from 'svelte';
4
+ vi.mock('svelte', async () => {
5
+ const actual = await vi.importActual('svelte');
6
+ return {
7
+ ...actual,
8
+ setContext: vi.fn(),
9
+ };
10
+ });
11
+ describe('getSidebarState', () => {
12
+ let sidebar;
13
+ let element;
14
+ let cleanup;
15
+ beforeEach(() => {
16
+ sidebar = document.createElement('m-sidebar');
17
+ element = document.createElement('div');
18
+ document.body.appendChild(sidebar);
19
+ });
20
+ afterEach(() => {
21
+ cleanup?.();
22
+ sidebar.remove();
23
+ element.remove();
24
+ });
25
+ it('sets expanded state based on attribute', () => {
26
+ sidebar.setAttribute('expanded', '');
27
+ const setExpanded = vi.fn();
28
+ cleanup = getSidebarState({ setExpanded })(element);
29
+ expect(setExpanded).toHaveBeenCalledWith(true);
30
+ });
31
+ it('updates expanded state on event', () => {
32
+ const setExpanded = vi.fn();
33
+ cleanup = getSidebarState({ setExpanded })(element);
34
+ setExpanded.mockClear();
35
+ document.dispatchEvent(new CustomEvent('update:expanded', { detail: false }));
36
+ expect(setExpanded).toHaveBeenCalledWith(false);
37
+ });
38
+ it('removes event listener on cleanup', () => {
39
+ const setExpanded = vi.fn();
40
+ cleanup = getSidebarState({ setExpanded })(element);
41
+ setExpanded.mockClear();
42
+ cleanup?.();
43
+ document.dispatchEvent(new CustomEvent('update:expanded', { detail: true }));
44
+ expect(setExpanded).not.toHaveBeenCalled();
45
+ });
46
+ });
47
+ describe('getShortcutsState', () => {
48
+ let shortcuts;
49
+ let element;
50
+ let cleanup;
51
+ beforeEach(() => {
52
+ shortcuts = document.createElement('m-sortcuts');
53
+ element = document.createElement('div');
54
+ document.body.appendChild(shortcuts);
55
+ });
56
+ afterEach(() => {
57
+ cleanup?.();
58
+ shortcuts.remove();
59
+ element.remove();
60
+ });
61
+ it('sets stacked state based on attribute', () => {
62
+ shortcuts.setAttribute('stacked', '');
63
+ const setState = vi.fn();
64
+ cleanup = getShortcutsState({ setState })(element);
65
+ expect(setState).toHaveBeenCalledWith(true);
66
+ });
67
+ it('updates stacked state on event', () => {
68
+ const setState = vi.fn();
69
+ cleanup = getShortcutsState({ setState })(element);
70
+ setState.mockClear();
71
+ document.dispatchEvent(new CustomEvent('update:stacked', { detail: true }));
72
+ expect(setState).toHaveBeenCalledWith(true);
73
+ });
74
+ it('removes event listener on cleanup', () => {
75
+ const setState = vi.fn();
76
+ cleanup = getShortcutsState({ setState })(element);
77
+ setState.mockClear();
78
+ cleanup?.();
79
+ document.dispatchEvent(new CustomEvent('update:stacked', { detail: false }));
80
+ expect(setState).not.toHaveBeenCalled();
81
+ });
82
+ });
83
+ describe('setSubItems', () => {
84
+ let element;
85
+ beforeEach(() => {
86
+ document.body.innerHTML = '';
87
+ element = document.createElement('div');
88
+ });
89
+ afterEach(() => {
90
+ element.remove();
91
+ });
92
+ it('calls setContext with SUB_ITEM', () => {
93
+ setSubItems('M-SIDEBAR')(element);
94
+ expect(setContext).toHaveBeenCalledWith('SUB_ITEM', true);
95
+ });
96
+ it('marks sub items when parent node matches tag name', () => {
97
+ const parent = document.createElement('m-sidebar');
98
+ const child = document.createElement('m-sidebar-nav-item');
99
+ parent.appendChild(child);
100
+ document.body.appendChild(parent);
101
+ setSubItems('M-SIDEBAR')(element);
102
+ expect(child.sub).toBe(true);
103
+ });
104
+ it('does not mark items with a different parent', () => {
105
+ const parent = document.createElement('div');
106
+ const child = document.createElement('m-sidebar-nav-item');
107
+ parent.appendChild(child);
108
+ document.body.appendChild(parent);
109
+ setSubItems('M-SIDEBAR')(element);
110
+ expect(child.sub).toBeUndefined();
111
+ });
112
+ });
@@ -0,0 +1,9 @@
1
+ import type { Attachment } from 'svelte/attachments';
2
+ export declare function getSidebarState({ setExpanded, }: {
3
+ setExpanded: (value: boolean) => void;
4
+ }): Attachment;
5
+ export declare function getShortcutsState({ setState, }: {
6
+ setState: (value: boolean) => void;
7
+ }): Attachment;
8
+ export declare function setSubItems(tagName: string): Attachment;
9
+ //# sourceMappingURL=sidebar-state.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-state.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/sidebar-state.svelte.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,GAAG,UAAU,CAab;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,GAAG,UAAU,CAab;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAavD"}
@@ -0,0 +1,36 @@
1
+ import { setContext } from 'svelte';
2
+ export function getSidebarState({ setExpanded, }) {
3
+ return () => {
4
+ const sidebar = document.querySelector('m-sidebar');
5
+ setExpanded(sidebar?.hasAttribute('expanded') ?? false);
6
+ const updateExpanded = (e) => {
7
+ setExpanded(e.detail);
8
+ };
9
+ document.addEventListener('update:expanded', updateExpanded);
10
+ return () => document.removeEventListener('update:expanded', updateExpanded);
11
+ };
12
+ }
13
+ export function getShortcutsState({ setState, }) {
14
+ return () => {
15
+ const shortcuts = document.querySelector('m-sortcuts');
16
+ setState(shortcuts?.hasAttribute('stacked') ?? false);
17
+ const updateState = (e) => {
18
+ setState(e.detail);
19
+ };
20
+ document.addEventListener('update:stacked', updateState);
21
+ return () => document.removeEventListener('update:stacked', updateState);
22
+ };
23
+ }
24
+ export function setSubItems(tagName) {
25
+ return () => {
26
+ // Works only for Svelte components
27
+ setContext('SUB_ITEM', true);
28
+ // Works only for custom-elements
29
+ const children = document.querySelectorAll('m-sidebar-nav-item');
30
+ children.forEach((el) => {
31
+ if (el.parentNode?.nodeName === tagName) {
32
+ el.sub = true;
33
+ }
34
+ });
35
+ };
36
+ }
@@ -0,0 +1,19 @@
1
+ # `m-sidebar-expandable-item`
2
+
3
+ SidebarExpandableItem is a component that renders a sidebar item which can either expand to show a nested submenu or display a floating menu when the sidebar is collapsed. It supports optional icons, keyboard navigation, and accessibility attributes, and allows for custom submenu items via slots.
4
+
5
+ ## Props
6
+
7
+ | Name | Description | Type | Default |
8
+ |------|-------------|------|---------|
9
+ | `id` | Identifier used for listbox controlling. | `string` | `crypto.randomUUID()` |
10
+ | `label*` | The text displayed for the sidebar item in its expanded state. | `string` | |
11
+ | `menulabel*` | The title shown at the top of the floating menu when the sidebar is collapsed. | `string` | |
12
+
13
+ ## Slots
14
+
15
+ | Name | Description |
16
+ |------|-------------|
17
+ | `icon` | Use this slot to display an icon alongside the sidebar item. |
18
+ | `default` | Contains one or more SidebarNavItem components used to render the submenu items. |
19
+
@@ -0,0 +1,18 @@
1
+ import{o as ee,c as ae,e as te,a as se,p as B,l as u,y as ie,x as re,b as f,d as le,v as C,i as K,j as a,k as p,r as t,q as E,t as P,m as R,C as m,u as X,f as S}from"../../custom-element.js";import{i as L}from"../../if.js";import{a as oe,s as D}from"../../slot.js";import{c as M,s as w}from"../../attributes.js";import{b as G}from"../../this.js";import{u as ne}from"../../floating-item.svelte.js";import{p as de}from"../../Condition20.js";import{g as H,s as ce}from"../../sidebar-state.svelte.js";import"../../branches.js";import"../../media-query.js";var me=S('<span class="mc-sidebar__icon svelte-1c38lw3"><!></span>'),be=S('<li class="mc-sidebar__item svelte-1c38lw3"><details class="mc-sidebar__link-expand svelte-1c38lw3" open=""><summary class="mc-sidebar__link svelte-1c38lw3"><!> <span class="mc-sidebar__text svelte-1c38lw3"> </span> <span class="mc-sidebar__sub svelte-1c38lw3"><!></span></summary> <ul class="mc-sidebar__sublist svelte-1c38lw3"><!></ul></details></li>'),ve=S('<span class="mc-sidebar__icon svelte-1c38lw3"><!></span>'),_e=S('<div class="mc-sidebar__item svelte-1c38lw3"><button class="mc-sidebar__trigger mc-sidebar__link svelte-1c38lw3" aria-haspopup="listbox"><!></button> <div class="mc-sidebar__floating-item mc-sidebar__floating-item--hidden svelte-1c38lw3" tabindex="0" role="menu"><div class="mc-sidebar__listbox svelte-1c38lw3"><h3 class="mc-sidebar__listbox-title svelte-1c38lw3"> </h3> <ul class="mc-sidebar__list svelte-1c38lw3"><!></ul></div></div></div>');const ue={hash:"svelte-1c38lw3",code:`/**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ @media screen and (min-width: 680px) {
5
+ }
6
+ @media screen and (min-width: 680px) {
7
+ }
8
+ @media screen and (min-width: 680px) {
9
+ }.mc-sidebar__floating-item.svelte-1c38lw3 {position:absolute;padding-left:1.25rem;left:3rem;}
10
+ @media screen and (min-width: 680px) {
11
+ }.mc-sidebar__floating-item--hidden.svelte-1c38lw3 {visibility:hidden;overflow:hidden;opacity:0;height:0;pointer-events:none;}
12
+ @media screen and (min-width: 680px) {
13
+ }
14
+ @media screen and (min-width: 680px) {
15
+ }
16
+ @media screen and (min-width: 680px) {
17
+ }.mc-sidebar__listbox.svelte-1c38lw3 {min-width:18.75rem;border-radius:var(--border-radius-m, 0.5rem);background-color:var(--listbox-color-background, #ffffff);padding:1rem;display:flex;flex-direction:column;gap:0.25rem;box-shadow:var(--shadow-bottom-s-x, 0px) var(--shadow-bottom-s-y, 5px) var(--shadow-bottom-s-blur, 10px) var(--shadow-bottom-s-spread, -2px) rgba(0, 0, 0, var(--shadow-bottom-s-opacity, 20%));}.mc-sidebar__listbox-title.svelte-1c38lw3 {font-size:var(--font-size-150, 1rem);font-weight:var(--font-weight-semi-bold, 600);padding-bottom:0.75rem;margin:0;border-bottom:1px solid var(--divider-color-primary, #cccccc);color:var(--sidebar-color-shortcut-item-text-default, #404040);}.mc-sidebar__list.svelte-1c38lw3 {list-style-type:none;margin:0;padding:0;}.mc-sidebar__link.svelte-1c38lw3 {display:flex;align-items:center;gap:0.25rem;height:2.5rem;width:100%;padding-left:0.25rem;text-align:left;text-decoration:none;font-size:var(--font-size-150, 1rem);font-weight:var(--font-weight-semi-bold, 600);color:var(--sidebar-color-section-item-text-default, #404040);border-radius:var(--border-radius-m, 0.5rem);background:transparent;border:none;cursor:pointer;}.mc-sidebar__link.svelte-1c38lw3:not(.mc-sidebar__link--selected):hover {background:var(--sidebar-color-section-item-background-hover, rgba(0, 0, 0, 0.05));}.mc-sidebar__link.svelte-1c38lw3:focus-visible {box-shadow:0 0 0 0.125rem var(--focus-color-mid, var(--focus-color-outline-mid, #ffffff)), 0 0 0 0.25rem var(--focus-color-outer, var(--focus-color-outline-outer, #000000));outline:0.125rem solid transparent;outline-offset:0.125rem;}.mc-sidebar__link-expand.svelte-1c38lw3:open .mc-sidebar__sub:where(.svelte-1c38lw3) {transform:rotate(180deg);}.mc-sidebar__link.svelte-1c38lw3:is(summary:where(.svelte-1c38lw3)) .mc-sidebar__text:where(.svelte-1c38lw3) {flex-grow:1;}.mc-sidebar__icon.svelte-1c38lw3 {fill:currentcolor;width:1.5rem;height:1.5rem;}.mc-sidebar__text.svelte-1c38lw3 {display:block;}.mc-sidebar__sub.svelte-1c38lw3 {width:1.25rem;height:1.25rem;}.mc-sidebar__sublist.svelte-1c38lw3 {list-style-type:none;margin:0;padding:0 0 0 2rem;display:flex;flex-direction:column;gap:0.25rem;}.mc-sidebar__item.svelte-1c38lw3 {position:relative;}`};function fe(T,l){const j=oe(l);te(l,!0),se(T,ue);let b=B(l,"id",23,()=>crypto.randomUUID()),g=B(l,"label",7),z=B(l,"menulabel",7),U=C(null),A=C(null);const{floatingItemIsDisplayed:J,hideFloatingItem:h,showFloatingItem:q,onTriggerKeydown:O,onListboxKeydown:Q}=ne(()=>u(U),()=>u(A));let F=C(!1);var V={get id(){return b()},set id(s=crypto.randomUUID()){b(s),K()},get label(){return g()},set label(s){g(s),K()},get menulabel(){return z()},set menulabel(s){z(s),K()}},N=ie(),W=re(N);{var Y=s=>{var r=be(),e=a(r),d=a(e),x=a(d);{var o=n=>{var _=me(),$=a(_);D($,l,"icon",{},null),t(_),f(n,_)};L(x,n=>{j.icon&&n(o)})}var c=p(x,2),v=a(c,!0);t(c);var y=p(c,2),k=a(y);de(k,{}),t(y),t(d);var I=p(d,2),i=a(I);D(i,l,"default",{},null),t(I),t(e),t(r),M(r,()=>H({setExpanded:n=>E(F,n,!0)})),M(r,()=>ce("M-SIDEBAR-EXPANDABLE-ITEM")),P(()=>{w(d,"aria-label",g()),R(v,g())}),f(s,r)},Z=s=>{var r=_e(),e=a(r),d=a(e);{var x=i=>{var n=ve(),_=a(n);D(_,l,"icon",{},null),t(n),f(i,n)};L(d,i=>{j.icon&&i(x)})}t(e),G(e,i=>E(U,i),()=>u(U));var o=p(e,2),c=a(o),v=a(c),y=a(v,!0);t(v);var k=p(v,2),I=a(k);D(I,l,"default",{},null),t(k),t(c),t(o),G(o,i=>E(A,i),()=>u(A)),t(r),M(r,()=>H({setExpanded:i=>E(F,i,!0)})),P(()=>{w(e,"id",b()),w(e,"aria-expanded",J),w(e,"aria-controls",`listbox-${b()}`),w(o,"id",`listbox-${b()}`),R(y,z())}),m("mouseenter",e,q),m("focus",e,q),X("keydown",e,O),m("mouseleave",e,h),m("blur",e,h),X("keydown",o,Q),m("mouseleave",o,h),m("blur",o,h),f(s,r)};L(W,s=>{u(F)?s(Y):s(Z,!1)})}return f(T,N),le(V)}ee(["keydown"]);customElements.define("m-sidebar-expandable-item",ae(fe,{id:{},label:{},menulabel:{}},["icon","default"],[],{mode:"open"}));
18
+ //# sourceMappingURL=SidebarExpandableItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarExpandableItem.js","sources":["../../../src/components/sidebarexpandableitem/SidebarExpandableItem.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-sidebar-expandable-item',\n }}\n/>\n\n<script lang=\"ts\">\n import { useFloatingItem } from '../sidebar/floating-item.svelte';\n import { ChevronDown20 } from '@mozaic-ds/icons-svelte';\n import { getSidebarState, setSubItems } from '../sidebar/sidebar-state.svelte';\n\n /**\n * SidebarExpandableItem is a component that renders a sidebar item which can either expand to show a nested submenu or display a floating menu when the sidebar is collapsed. It supports optional icons, keyboard navigation, and accessibility attributes, and allows for custom submenu items via slots.\n * @slot default - Contains one or more SidebarNavItem components used to render the submenu items.\n * @slot icon - Use this slot to display an icon alongside the sidebar item.\n */\n\n interface Props {\n /**\n * Identifier used for listbox controlling.\n */\n id?: string;\n /**\n * The text displayed for the sidebar item in its expanded state.\n */\n label: string;\n /**\n * The title shown at the top of the floating menu when the sidebar is collapsed.\n */\n menulabel: string;\n }\n\n let { id = crypto.randomUUID(), label, menulabel }: Props = $props();\n\n let trigger: HTMLElement | null = $state(null);\n let listbox: HTMLElement | null = $state(null);\n\n const {\n floatingItemIsDisplayed,\n hideFloatingItem,\n showFloatingItem,\n onTriggerKeydown,\n onListboxKeydown,\n } = useFloatingItem(\n () => trigger,\n () => listbox,\n );\n\n let expanded = $state(false);\n</script>\n\n{#if expanded}\n <li\n {@attach getSidebarState({ setExpanded: (value) => (expanded = value) })}\n {@attach setSubItems('M-SIDEBAR-EXPANDABLE-ITEM')}\n class=\"mc-sidebar__item\"\n >\n <details class=\"mc-sidebar__link-expand\" open>\n <summary class=\"mc-sidebar__link\" aria-label={label}>\n {#if $$slots.icon}\n <span class=\"mc-sidebar__icon\">\n <slot name=\"icon\" />\n </span>\n {/if}\n <span class=\"mc-sidebar__text\">{label}</span>\n <span class=\"mc-sidebar__sub\">\n <ChevronDown20 />\n </span>\n </summary>\n <ul class=\"mc-sidebar__sublist\">\n <slot />\n </ul>\n </details>\n </li>\n{:else}\n <div\n {@attach getSidebarState({ setExpanded: (value) => (expanded = value) })}\n class=\"mc-sidebar__item\"\n >\n <button\n bind:this={trigger}\n class=\"mc-sidebar__trigger mc-sidebar__link\"\n {id}\n aria-haspopup=\"listbox\"\n aria-expanded={floatingItemIsDisplayed}\n aria-controls={`listbox-${id}`}\n onmouseenter={showFloatingItem}\n onfocus={showFloatingItem}\n onkeydown={onTriggerKeydown}\n onmouseleave={hideFloatingItem}\n onblur={hideFloatingItem}\n >\n {#if $$slots.icon}\n <span class=\"mc-sidebar__icon\">\n <slot name=\"icon\" />\n </span>\n {/if}\n </button>\n\n <div\n bind:this={listbox}\n class=\"mc-sidebar__floating-item mc-sidebar__floating-item--hidden\"\n id={`listbox-${id}`}\n tabindex=\"0\"\n role=\"menu\"\n onkeydown={onListboxKeydown}\n onmouseleave={hideFloatingItem}\n onblur={hideFloatingItem}\n >\n <div class=\"mc-sidebar__listbox\">\n <h3 class=\"mc-sidebar__listbox-title\">{menulabel}</h3>\n <ul class=\"mc-sidebar__list\">\n <slot />\n </ul>\n </div>\n </div>\n </div>\n{/if}\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/sidebar';\n</style>\n"],"names":["id","$.prop","$$props","label","menulabel","trigger","$.state","listbox","floatingItemIsDisplayed","hideFloatingItem","showFloatingItem","onTriggerKeydown","onListboxKeydown","useFloatingItem","$.get","expanded","$$value","li","root_1","details","$.child","summary","span","root_2","$$slots","$$render","consequent","span_1","$.sibling","node_1","span_2","ChevronDown20","node_3","ul","$.reset","getSidebarState","value","$.set","setSubItems","$.set_attribute","$.append","$$anchor","div","root_3","button","node_5","span_3","root_4","consequent_2","div_1","div_2","h3","ul_1","$.event","$.delegated","consequent_1","alternate"],"mappings":";;;;;;;;;;;;;;;;qsEAMA,qCA0BQA,EAAEC,EAAAC,EAAA,KAAA,GAAA,IAAG,OAAO,YAAU,EAAIC,EAAKF,EAAAC,EAAA,QAAA,CAAA,EAAEE,EAASH,EAAAC,EAAA,YAAA,CAAA,EAE5CG,EAA8BC,EAAO,IAAI,EACzCC,EAA8BD,EAAO,IAAI,QAG3C,wBAAAE,EACA,iBAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,iBAAAC,GACEC,GAAe,IAAAC,EACXT,CAAO,EAAA,IAAAS,EACPP,CAAO,CAAA,MAGXQ,EAAWT,EAAO,EAAK,8BAhBhB,IAAA,GAAAU,EAAA,OAAO,WAAU,EAAA,4IAoB3B,IAAAC,EAAAC,GAAA,EAKEC,EAAOC,EALTH,CAAA,EAMII,IADFF,CAAO,MACLE,CAAO,iBAEHC,EAAIC,GAAA,MAAJD,CAAI,0BAAJA,CAAI,MAAJA,CAAI,WADFE,EAAQ,MAAIC,EAAAC,CAAA,QAKhBC,EAAIC,EAAAC,EAAA,CAAA,MAAJF,EAAI,EAAA,IAAJA,CAAI,EACJ,IAAAG,IADAH,EAAI,CAAA,MACJG,CAAI,EACFC,GAAaC,EAAA,EAAA,IADfF,CAAI,IAPNT,CAAO,EAWP,IAAAY,IAXAZ,EAAO,CAAA,MAWPY,CAAE,6BAAFA,CAAE,IAZJd,CAAO,EALTe,EAAAjB,CAAA,IAAAA,EAAA,IACUkB,GAAkB,YAAcC,GAAKC,EAAMtB,EAAWqB,EAAK,EAAA,CAAA,CAAA,CAAA,IADrEnB,EAAA,IAEUqB,GAAY,2BAA2B,CAAA,SAI7CC,EAAAlB,eAA6ClB,GAAK,MAMjBA,GAAK,IAZ1CqC,EAAAC,EAAAxB,CAAA,SAuBA,IAAAyB,EAAAC,GAAA,EAIEC,EAAAxB,EAJFsB,CAAA,EAIEG,EAAAzB,EAAAwB,CAAA,iBAcIE,EAAIC,GAAA,MAAJD,CAAI,0BAAJA,CAAI,MAAJA,CAAI,WADFtB,EAAQ,MAAIC,EAAAuB,CAAA,IAblBd,EAAAU,CAAA,IAAAA,EAAA5B,GAAAqB,EACYhC,WAAAA,CAAO,CAAA,MAmBnB4C,EAAArB,EApBAgB,EAAA,CAAA,EA8BEM,EAAG9B,EAVL6B,CAAA,EAWIE,IADFD,CAAG,MACDC,EAAE,EAAA,IAAFA,CAAE,EACF,IAAAC,IADAD,EAAE,CAAA,MACFC,CAAE,6BAAFA,CAAE,IAFJF,CAAG,EAVLhB,EAAAe,CAAA,IAAAA,EAAAjC,GAAAqB,EACY9B,WAAAA,CAAO,CAAA,EAzBrB2B,EAAAQ,CAAA,IAAAA,EAAA,IACUP,GAAkB,YAAcC,GAAKC,EAAMtB,EAAWqB,EAAK,EAAA,CAAA,CAAA,CAAA,SAGnEG,EAAAK,EAAA,KAGE5C,GAAE,EAHJuC,EAAAK,EAAA,gBAKgBpC,CAAuB,EALvC+B,EAAAK,EAAA,gBAAA,WAM2B5C,EAAE,CAAA,EAAA,EAc7BuC,EAAAU,EAAA,KAAA,WAGgBjD,EAAE,CAAA,EAAA,MAQwBI,GAAS,IA/BnDiD,EAAA,aAAAT,EAOelC,CAAgB,EAP/B2C,EAAA,QAAAT,EAQUlC,CAAgB,EAR1B4C,EAAA,UAAAV,EASYjC,CAAgB,EAT5B0C,EAAA,aAAAT,EAUenC,CAAgB,EAV/B4C,EAAA,OAAAT,EAWSnC,CAAgB,EASzB6C,EAAA,UAAAL,EAMYrC,CAAgB,EAN5ByC,EAAA,aAAAJ,EAOexC,CAAgB,EAP/B4C,EAAA,OAAAJ,EAQSxC,CAAgB,EAhC3B+B,EAAAC,EAAAC,CAAA,aAxBE3B,CAAQ,EAAAU,EAAA8B,CAAA,EAAA9B,EAAA+B,EAAA,EAAA,uBAFL"}
@@ -0,0 +1,85 @@
1
+ import { render, fireEvent } from '@testing-library/svelte';
2
+ import { vi, describe, it, expect, beforeEach } from 'vitest';
3
+ import SidebarExpandableItem from './SidebarExpandableItem.svelte';
4
+ const showMock = vi.fn();
5
+ const hideMock = vi.fn();
6
+ const triggerKeydownMock = vi.fn();
7
+ const listboxKeydownMock = vi.fn();
8
+ vi.mock('../sidebar/floating-item.svelte', async () => {
9
+ return {
10
+ useFloatingItem: vi.fn(() => ({
11
+ floatingItemIsDisplayed: false,
12
+ showFloatingItem: showMock,
13
+ hideFloatingItem: hideMock,
14
+ onTriggerKeydown: triggerKeydownMock,
15
+ onListboxKeydown: listboxKeydownMock,
16
+ })),
17
+ };
18
+ });
19
+ describe('SidebarExpandableItem', () => {
20
+ beforeEach(() => {
21
+ vi.resetAllMocks();
22
+ });
23
+ it('calls showFloatingItem and hideFloatingItem on trigger mouse events', async () => {
24
+ const { container } = render(SidebarExpandableItem, {
25
+ props: { label: 'Item', menulabel: 'Menu' },
26
+ });
27
+ const button = container.querySelector('button.mc-sidebar__trigger');
28
+ await fireEvent.mouseEnter(button);
29
+ expect(showMock).toHaveBeenCalled();
30
+ await fireEvent.mouseLeave(button);
31
+ expect(hideMock).toHaveBeenCalled();
32
+ });
33
+ it('calls onTriggerKeydown when a key is pressed on trigger', async () => {
34
+ const { container } = render(SidebarExpandableItem, {
35
+ props: { label: 'Item', menulabel: 'Menu' },
36
+ });
37
+ const button = container.querySelector('button.mc-sidebar__trigger');
38
+ await fireEvent.keyDown(button, { key: 'Enter' });
39
+ expect(triggerKeydownMock).toHaveBeenCalled();
40
+ });
41
+ it('calls showFloatingItem and hideFloatingItem on trigger focus/blur', async () => {
42
+ const { container } = render(SidebarExpandableItem, {
43
+ props: { label: 'Item', menulabel: 'Menu' },
44
+ });
45
+ const trigger = container.querySelector('.mc-sidebar__trigger');
46
+ await fireEvent.focus(trigger);
47
+ expect(showMock).toHaveBeenCalled();
48
+ await fireEvent.blur(trigger);
49
+ expect(hideMock).toHaveBeenCalled();
50
+ });
51
+ it('calls onListboxKeydown when a key is pressed on listbox', async () => {
52
+ const { container } = render(SidebarExpandableItem, {
53
+ props: { label: 'Item', menulabel: 'Menu' },
54
+ });
55
+ const listbox = container.querySelector('.mc-sidebar__floating-item');
56
+ await fireEvent.keyDown(listbox, { key: 'ArrowDown' });
57
+ expect(listboxKeydownMock).toHaveBeenCalled();
58
+ });
59
+ it('calls hideFloatingItem when on listbox blur', async () => {
60
+ const { container } = render(SidebarExpandableItem, {
61
+ props: { label: 'Item', menulabel: 'Menu' },
62
+ });
63
+ const listbox = container.querySelector('.mc-sidebar__floating-item');
64
+ await fireEvent.blur(listbox);
65
+ expect(hideMock).toHaveBeenCalled();
66
+ });
67
+ it('calls hideFloatingItem when on listbox mouseleave', async () => {
68
+ const { container } = render(SidebarExpandableItem, {
69
+ props: { label: 'Item', menulabel: 'Menu' },
70
+ });
71
+ const listbox = container.querySelector('.mc-sidebar__floating-item');
72
+ await fireEvent.mouseLeave(listbox);
73
+ expect(hideMock).toHaveBeenCalled();
74
+ });
75
+ it('displays a list item when expanded is true', async () => {
76
+ const sidebar = document.createElement('m-sidebar');
77
+ sidebar.setAttribute('expanded', '');
78
+ document.body.appendChild(sidebar);
79
+ const { container } = render(SidebarExpandableItem, {
80
+ props: { label: 'Item', menulabel: 'Menu' },
81
+ });
82
+ const li = container.querySelector('li');
83
+ expect(li).toBeTruthy();
84
+ });
85
+ });