@mozaic-ds/web-components 1.5.1 → 1.7.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 (429) 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 +16 -0
  9. package/dist/bundle.d.ts.map +1 -1
  10. package/dist/bundle.js +16 -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 +158 -12
  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/combobox/Combobox.js +4 -0
  69. package/dist/components/combobox/Combobox.js.map +1 -0
  70. package/dist/components/combobox/Combobox.spec.js +186 -0
  71. package/dist/components/combobox/Combobox.stories.d.ts +17 -0
  72. package/dist/components/combobox/Combobox.stories.d.ts.map +1 -0
  73. package/dist/components/combobox/Combobox.stories.js +126 -0
  74. package/dist/components/combobox/Combobox.svelte +415 -0
  75. package/dist/components/combobox/Combobox.svelte.d.ts +99 -0
  76. package/dist/components/combobox/Combobox.svelte.d.ts.map +1 -0
  77. package/dist/components/combobox/README.md +38 -0
  78. package/dist/components/container/Container.js +2 -2
  79. package/dist/components/datepicker/Datepicker.js +3 -3
  80. package/dist/components/datepicker/Datepicker.js.map +1 -1
  81. package/dist/components/datepicker/Datepicker.stories.d.ts +1 -1
  82. package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
  83. package/dist/components/datepicker/Datepicker.stories.js +2 -2
  84. package/dist/components/datepicker/Datepicker.svelte +34 -9
  85. package/dist/components/divider/Divider.js +2 -2
  86. package/dist/components/divider/Divider.js.map +1 -1
  87. package/dist/components/divider/Divider.svelte +6 -1
  88. package/dist/components/divider/Divider.svelte.d.ts.map +1 -1
  89. package/dist/components/drawer/Drawer.js +4 -4
  90. package/dist/components/drawer/Drawer.js.map +1 -1
  91. package/dist/components/drawer/Drawer.svelte +6 -2
  92. package/dist/components/field/Field.js +3 -3
  93. package/dist/components/field/Field.js.map +1 -1
  94. package/dist/components/field/Field.spec.js +1 -1
  95. package/dist/components/field/Field.svelte +7 -3
  96. package/dist/components/fileuploader/FileUploader.js +2 -2
  97. package/dist/components/fileuploader/FileUploader.js.map +1 -1
  98. package/dist/components/fileuploader/FileUploader.stories.js +3 -3
  99. package/dist/components/fileuploader/FileUploader.svelte +5 -5
  100. package/dist/components/fileuploaderitem/FileUploaderItem.js +3 -3
  101. package/dist/components/fileuploaderitem/FileUploaderItem.svelte +1 -4
  102. package/dist/components/flag/Flag.js +2 -2
  103. package/dist/components/iconbutton/IconButton.js +2 -2
  104. package/dist/components/iconbutton/IconButton.js.map +1 -1
  105. package/dist/components/iconbutton/IconButton.svelte +11 -1
  106. package/dist/components/iconbutton/IconButton.svelte.d.ts +3 -1
  107. package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
  108. package/dist/components/kpiitem/KpiItem.js +2 -2
  109. package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
  110. package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
  111. package/dist/components/link/Link.js +2 -2
  112. package/dist/components/link/Link.stories.js +2 -2
  113. package/dist/components/loader/Loader.js +2 -2
  114. package/dist/components/loadingoverlay/LoadingOverlay.js +2 -2
  115. package/dist/components/loadingoverlay/LoadingOverlay.svelte +1 -1
  116. package/dist/components/modal/Modal.js +5 -5
  117. package/dist/components/modal/Modal.js.map +1 -1
  118. package/dist/components/modal/Modal.spec.js +3 -1
  119. package/dist/components/modal/Modal.svelte +14 -4
  120. package/dist/components/modal/Modal.svelte.d.ts +4 -0
  121. package/dist/components/modal/Modal.svelte.d.ts.map +1 -1
  122. package/dist/components/modal/README.md +1 -0
  123. package/dist/components/navigationindicator/NavigationIndicator.js +4 -0
  124. package/dist/components/navigationindicator/NavigationIndicator.js.map +1 -0
  125. package/dist/components/navigationindicator/NavigationIndicator.spec.js +130 -0
  126. package/dist/components/navigationindicator/NavigationIndicator.stories.d.ts +8 -0
  127. package/dist/components/navigationindicator/NavigationIndicator.stories.d.ts.map +1 -0
  128. package/dist/components/navigationindicator/NavigationIndicator.stories.js +40 -0
  129. package/dist/components/navigationindicator/NavigationIndicator.svelte +156 -0
  130. package/dist/components/navigationindicator/NavigationIndicator.svelte.d.ts +34 -0
  131. package/dist/components/navigationindicator/NavigationIndicator.svelte.d.ts.map +1 -0
  132. package/dist/components/navigationindicator/README.md +21 -0
  133. package/dist/components/numberbadge/NumberBadge.js +2 -2
  134. package/dist/components/optionlistbox/OptionListbox.js +23 -0
  135. package/dist/components/optionlistbox/OptionListbox.js.map +1 -0
  136. package/dist/components/optionlistbox/OptionListbox.spec.js +350 -0
  137. package/dist/components/optionlistbox/OptionListbox.svelte +566 -0
  138. package/dist/components/optionlistbox/OptionListbox.svelte.d.ts +92 -0
  139. package/dist/components/optionlistbox/OptionListbox.svelte.d.ts.map +1 -0
  140. package/dist/components/optionlistbox/README.md +38 -0
  141. package/dist/components/overlay/Overlay.js +2 -2
  142. package/dist/components/overlay/Overlay.svelte +2 -2
  143. package/dist/components/pageheader/PageHeader.js +24 -0
  144. package/dist/components/pageheader/PageHeader.js.map +1 -0
  145. package/dist/components/pageheader/PageHeader.spec.js +75 -0
  146. package/dist/components/pageheader/PageHeader.stories.d.ts +12 -0
  147. package/dist/components/pageheader/PageHeader.stories.d.ts.map +1 -0
  148. package/dist/components/pageheader/PageHeader.stories.js +82 -0
  149. package/dist/components/pageheader/PageHeader.svelte +268 -0
  150. package/dist/components/pageheader/PageHeader.svelte.d.ts +66 -0
  151. package/dist/components/pageheader/PageHeader.svelte.d.ts.map +1 -0
  152. package/dist/components/pageheader/README.md +32 -0
  153. package/dist/components/pagination/Pagination.js +8 -8
  154. package/dist/components/pagination/Pagination.js.map +1 -1
  155. package/dist/components/pagination/Pagination.svelte +44 -28
  156. package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
  157. package/dist/components/passwordinput/PasswordInput.js +4 -4
  158. package/dist/components/passwordinput/PasswordInput.js.map +1 -1
  159. package/dist/components/passwordinput/PasswordInput.stories.d.ts +1 -1
  160. package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
  161. package/dist/components/passwordinput/PasswordInput.stories.js +2 -2
  162. package/dist/components/passwordinput/PasswordInput.svelte +16 -6
  163. package/dist/components/phonenumber/PhoneNumber.js +13 -11
  164. package/dist/components/phonenumber/PhoneNumber.js.map +1 -1
  165. package/dist/components/phonenumber/PhoneNumber.stories.d.ts +1 -1
  166. package/dist/components/phonenumber/PhoneNumber.stories.d.ts.map +1 -1
  167. package/dist/components/phonenumber/PhoneNumber.stories.js +2 -2
  168. package/dist/components/phonenumber/PhoneNumber.svelte +87 -39
  169. package/dist/components/phonenumber/PhoneNumber.svelte.d.ts.map +1 -1
  170. package/dist/components/pincode/Pincode.js +2 -2
  171. package/dist/components/pincode/Pincode.js.map +1 -1
  172. package/dist/components/pincode/Pincode.stories.d.ts +1 -1
  173. package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
  174. package/dist/components/pincode/Pincode.stories.js +2 -2
  175. package/dist/components/popover/Popover.js +6 -0
  176. package/dist/components/popover/Popover.js.map +1 -0
  177. package/dist/components/popover/Popover.spec.js +69 -0
  178. package/dist/components/popover/Popover.stories.d.ts +36 -0
  179. package/dist/components/popover/Popover.stories.d.ts.map +1 -0
  180. package/dist/components/popover/Popover.stories.js +124 -0
  181. package/dist/components/popover/Popover.svelte +348 -0
  182. package/dist/components/popover/Popover.svelte.d.ts +79 -0
  183. package/dist/components/popover/Popover.svelte.d.ts.map +1 -0
  184. package/dist/components/popover/README.md +25 -0
  185. package/dist/components/quantityselector/QuantitySelector.js +3 -3
  186. package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
  187. package/dist/components/quantityselector/QuantitySelector.stories.js +1 -1
  188. package/dist/components/quantityselector/QuantitySelector.svelte +4 -4
  189. package/dist/components/radio/Radio.js +2 -2
  190. package/dist/components/radio/Radio.js.map +1 -1
  191. package/dist/components/radiogroup/RadioGroup.js +2 -2
  192. package/dist/components/radiogroup/RadioGroup.js.map +1 -1
  193. package/dist/components/radiogroup/RadioGroup.svelte +6 -2
  194. package/dist/components/segmentedcontrol/README.md +6 -3
  195. package/dist/components/segmentedcontrol/SegmentedControl.js +2 -2
  196. package/dist/components/segmentedcontrol/SegmentedControl.js.map +1 -1
  197. package/dist/components/segmentedcontrol/SegmentedControl.spec.js +60 -23
  198. package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts.map +1 -1
  199. package/dist/components/segmentedcontrol/SegmentedControl.stories.js +6 -1
  200. package/dist/components/segmentedcontrol/SegmentedControl.svelte +23 -10
  201. package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts +10 -3
  202. package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts.map +1 -1
  203. package/dist/components/select/Select.js +3 -3
  204. package/dist/components/select/Select.js.map +1 -1
  205. package/dist/components/select/Select.spec.js +2 -2
  206. package/dist/components/select/Select.stories.d.ts +1 -1
  207. package/dist/components/select/Select.stories.d.ts.map +1 -1
  208. package/dist/components/select/Select.stories.js +2 -2
  209. package/dist/components/select/Select.svelte +50 -31
  210. package/dist/components/select/Select.svelte.d.ts.map +1 -1
  211. package/dist/components/sidebar/README.md +28 -0
  212. package/dist/components/sidebar/Sidebar.js +18 -0
  213. package/dist/components/sidebar/Sidebar.js.map +1 -0
  214. package/dist/components/sidebar/Sidebar.spec.js +74 -0
  215. package/dist/components/sidebar/Sidebar.stories.d.ts +23 -0
  216. package/dist/components/sidebar/Sidebar.stories.d.ts.map +1 -0
  217. package/dist/components/sidebar/Sidebar.stories.js +333 -0
  218. package/dist/components/sidebar/Sidebar.svelte +570 -0
  219. package/dist/components/sidebar/Sidebar.svelte.d.ts +47 -0
  220. package/dist/components/sidebar/Sidebar.svelte.d.ts.map +1 -0
  221. package/dist/components/sidebar/floating-item.spec.js +96 -0
  222. package/dist/components/sidebar/floating-item.svelte.d.ts +13 -0
  223. package/dist/components/sidebar/floating-item.svelte.d.ts.map +1 -0
  224. package/dist/components/sidebar/floating-item.svelte.js +95 -0
  225. package/dist/components/sidebar/sidebar-state.spec.js +112 -0
  226. package/dist/components/sidebar/sidebar-state.svelte.d.ts +9 -0
  227. package/dist/components/sidebar/sidebar-state.svelte.d.ts.map +1 -0
  228. package/dist/components/sidebar/sidebar-state.svelte.js +36 -0
  229. package/dist/components/sidebarexpandableitem/README.md +19 -0
  230. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.js +18 -0
  231. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.js.map +1 -0
  232. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.spec.js +85 -0
  233. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte +578 -0
  234. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte.d.ts +49 -0
  235. package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte.d.ts.map +1 -0
  236. package/dist/components/sidebarfooter/README.md +29 -0
  237. package/dist/components/sidebarfooter/SidebarFooter.js +18 -0
  238. package/dist/components/sidebarfooter/SidebarFooter.js.map +1 -0
  239. package/dist/components/sidebarfooter/SidebarFooter.spec.js +132 -0
  240. package/dist/components/sidebarfooter/SidebarFooter.svelte +1018 -0
  241. package/dist/components/sidebarfooter/SidebarFooter.svelte.d.ts +60 -0
  242. package/dist/components/sidebarfooter/SidebarFooter.svelte.d.ts.map +1 -0
  243. package/dist/components/sidebarfooter/_SidebarFooterMenu.js +18 -0
  244. package/dist/components/sidebarfooter/_SidebarFooterMenu.js.map +1 -0
  245. package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte +517 -0
  246. package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte.d.ts +36 -0
  247. package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte.d.ts.map +1 -0
  248. package/dist/components/sidebarheader/README.md +11 -0
  249. package/dist/components/sidebarheader/SidebarHeader.js +18 -0
  250. package/dist/components/sidebarheader/SidebarHeader.js.map +1 -0
  251. package/dist/components/sidebarheader/SidebarHeader.spec.js +37 -0
  252. package/dist/components/sidebarheader/SidebarHeader.svelte +499 -0
  253. package/dist/components/sidebarheader/SidebarHeader.svelte.d.ts +17 -0
  254. package/dist/components/sidebarheader/SidebarHeader.svelte.d.ts.map +1 -0
  255. package/dist/components/sidebarnavitem/README.md +30 -0
  256. package/dist/components/sidebarnavitem/SidebarNavItem.js +18 -0
  257. package/dist/components/sidebarnavitem/SidebarNavItem.js.map +1 -0
  258. package/dist/components/sidebarnavitem/SidebarNavItem.spec.js +95 -0
  259. package/dist/components/sidebarnavitem/SidebarNavItem.svelte +617 -0
  260. package/dist/components/sidebarnavitem/SidebarNavItem.svelte.d.ts +58 -0
  261. package/dist/components/sidebarnavitem/SidebarNavItem.svelte.d.ts.map +1 -0
  262. package/dist/components/sidebarshortcutitem/README.md +17 -0
  263. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.js +18 -0
  264. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.js.map +1 -0
  265. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.spec.js +34 -0
  266. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte +509 -0
  267. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte.d.ts +35 -0
  268. package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte.d.ts.map +1 -0
  269. package/dist/components/sidebarshortcuts/README.md +23 -0
  270. package/dist/components/sidebarshortcuts/SidebarShortcuts.js +18 -0
  271. package/dist/components/sidebarshortcuts/SidebarShortcuts.js.map +1 -0
  272. package/dist/components/sidebarshortcuts/SidebarShortcuts.spec.js +82 -0
  273. package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte +583 -0
  274. package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte.d.ts +42 -0
  275. package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte.d.ts.map +1 -0
  276. package/dist/components/starrating/StarRating.js +2 -2
  277. package/dist/components/starrating/StarRating.js.map +1 -1
  278. package/dist/components/starrating/StarRating.stories.d.ts +5 -5
  279. package/dist/components/starrating/StarRating.stories.d.ts.map +1 -1
  280. package/dist/components/starrating/StarRating.stories.js +5 -5
  281. package/dist/components/statusbadge/StatusBadge.js +2 -2
  282. package/dist/components/statusdot/StatusDot.js +2 -2
  283. package/dist/components/statusmessage/StatusMessage.js +2 -2
  284. package/dist/components/statusmessage/StatusMessage.js.map +1 -1
  285. package/dist/components/statusmessage/StatusMessage.svelte +5 -0
  286. package/dist/components/statusnotification/StatusNotification.js +2 -2
  287. package/dist/components/statusnotification/StatusNotification.js.map +1 -1
  288. package/dist/components/statusnotification/StatusNotification.stories.d.ts +3 -3
  289. package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
  290. package/dist/components/statusnotification/StatusNotification.stories.js +3 -3
  291. package/dist/components/statusnotification/StatusNotification.svelte +9 -1
  292. package/dist/components/stepperbottombar/StepperBottomBar.js +3 -3
  293. package/dist/components/stepperbottombar/StepperBottomBar.svelte +5 -1
  294. package/dist/components/stepperbottombar/StepperBottomBar.svelte.d.ts +1 -1
  295. package/dist/components/steppercompact/StepperCompact.js +2 -2
  296. package/dist/components/stepperinline/README.md +6 -2
  297. package/dist/components/stepperinline/StepperInline.js +3 -3
  298. package/dist/components/stepperinline/StepperInline.js.map +1 -1
  299. package/dist/components/stepperinline/StepperInline.spec.js +57 -23
  300. package/dist/components/stepperinline/StepperInline.stories.d.ts.map +1 -1
  301. package/dist/components/stepperinline/StepperInline.stories.js +6 -11
  302. package/dist/components/stepperinline/StepperInline.svelte +24 -11
  303. package/dist/components/stepperinline/StepperInline.svelte.d.ts +11 -3
  304. package/dist/components/stepperinline/StepperInline.svelte.d.ts.map +1 -1
  305. package/dist/components/stepperstacked/README.md +15 -0
  306. package/dist/components/stepperstacked/StepperStacked.js +18 -0
  307. package/dist/components/stepperstacked/StepperStacked.js.map +1 -0
  308. package/dist/components/stepperstacked/StepperStacked.spec.js +138 -0
  309. package/dist/components/stepperstacked/StepperStacked.stories.d.ts +8 -0
  310. package/dist/components/stepperstacked/StepperStacked.stories.d.ts.map +1 -0
  311. package/dist/components/stepperstacked/StepperStacked.stories.js +33 -0
  312. package/dist/components/stepperstacked/StepperStacked.svelte +214 -0
  313. package/dist/components/stepperstacked/StepperStacked.svelte.d.ts +35 -0
  314. package/dist/components/stepperstacked/StepperStacked.svelte.d.ts.map +1 -0
  315. package/dist/components/tab/README.md +1 -0
  316. package/dist/components/tab/Tab.js +2 -2
  317. package/dist/components/tab/Tab.js.map +1 -1
  318. package/dist/components/tab/Tab.svelte +17 -1
  319. package/dist/components/tab/Tab.svelte.d.ts +4 -0
  320. package/dist/components/tab/Tab.svelte.d.ts.map +1 -1
  321. package/dist/components/tabs/Tabs.js +2 -2
  322. package/dist/components/tabs/Tabs.stories.d.ts +1 -0
  323. package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
  324. package/dist/components/tabs/Tabs.stories.js +11 -1
  325. package/dist/components/tag/README.md +1 -0
  326. package/dist/components/tag/Tag.js +2 -2
  327. package/dist/components/tag/Tag.js.map +1 -1
  328. package/dist/components/tag/Tag.svelte +15 -5
  329. package/dist/components/tag/Tag.svelte.d.ts +4 -0
  330. package/dist/components/tag/Tag.svelte.d.ts.map +1 -1
  331. package/dist/components/textarea/Textarea.js +2 -2
  332. package/dist/components/textarea/Textarea.js.map +1 -1
  333. package/dist/components/textarea/Textarea.stories.d.ts +1 -1
  334. package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
  335. package/dist/components/textarea/Textarea.stories.js +2 -2
  336. package/dist/components/textarea/Textarea.svelte +1 -0
  337. package/dist/components/textinput/README.md +3 -0
  338. package/dist/components/textinput/Textinput.js +5 -5
  339. package/dist/components/textinput/Textinput.js.map +1 -1
  340. package/dist/components/textinput/Textinput.stories.d.ts +11 -1
  341. package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
  342. package/dist/components/textinput/Textinput.stories.js +21 -29
  343. package/dist/components/textinput/Textinput.svelte +33 -5
  344. package/dist/components/textinput/Textinput.svelte.d.ts +10 -1
  345. package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
  346. package/dist/components/tile/README.md +19 -0
  347. package/dist/components/tile/Tile.js +111 -0
  348. package/dist/components/tile/Tile.js.map +1 -0
  349. package/dist/components/tile/Tile.spec.js +21 -0
  350. package/dist/components/tile/Tile.stories.d.ts +10 -0
  351. package/dist/components/tile/Tile.stories.d.ts.map +1 -0
  352. package/dist/components/tile/Tile.stories.js +37 -0
  353. package/dist/components/tile/Tile.svelte +894 -0
  354. package/dist/components/tile/Tile.svelte.d.ts +48 -0
  355. package/dist/components/tile/Tile.svelte.d.ts.map +1 -0
  356. package/dist/components/tileclickable/README.md +31 -0
  357. package/dist/components/tileclickable/TileClickable.js +114 -0
  358. package/dist/components/tileclickable/TileClickable.js.map +1 -0
  359. package/dist/components/tileclickable/TileClickable.spec.js +62 -0
  360. package/dist/components/tileclickable/TileClickable.stories.d.ts +10 -0
  361. package/dist/components/tileclickable/TileClickable.stories.d.ts.map +1 -0
  362. package/dist/components/tileclickable/TileClickable.stories.js +52 -0
  363. package/dist/components/tileclickable/TileClickable.svelte +954 -0
  364. package/dist/components/tileclickable/TileClickable.svelte.d.ts +65 -0
  365. package/dist/components/tileclickable/TileClickable.svelte.d.ts.map +1 -0
  366. package/dist/components/tileexpandable/README.md +20 -0
  367. package/dist/components/tileexpandable/TileExpandable.js +114 -0
  368. package/dist/components/tileexpandable/TileExpandable.js.map +1 -0
  369. package/dist/components/tileexpandable/TileExpandable.spec.js +65 -0
  370. package/dist/components/tileexpandable/TileExpandable.stories.d.ts +7 -0
  371. package/dist/components/tileexpandable/TileExpandable.stories.d.ts.map +1 -0
  372. package/dist/components/tileexpandable/TileExpandable.stories.js +38 -0
  373. package/dist/components/tileexpandable/TileExpandable.svelte +956 -0
  374. package/dist/components/tileexpandable/TileExpandable.svelte.d.ts +53 -0
  375. package/dist/components/tileexpandable/TileExpandable.svelte.d.ts.map +1 -0
  376. package/dist/components/tileselectable/README.md +21 -0
  377. package/dist/components/tileselectable/TileSelectable.js +108 -0
  378. package/dist/components/tileselectable/TileSelectable.js.map +1 -0
  379. package/dist/components/tileselectable/TileSelectable.spec.js +57 -0
  380. package/dist/components/tileselectable/TileSelectable.stories.d.ts +9 -0
  381. package/dist/components/tileselectable/TileSelectable.stories.d.ts.map +1 -0
  382. package/dist/components/tileselectable/TileSelectable.stories.js +44 -0
  383. package/dist/components/tileselectable/TileSelectable.svelte +939 -0
  384. package/dist/components/tileselectable/TileSelectable.svelte.d.ts +57 -0
  385. package/dist/components/tileselectable/TileSelectable.svelte.d.ts.map +1 -0
  386. package/dist/components/toaster/Toaster.js +3 -3
  387. package/dist/components/toaster/Toaster.js.map +1 -1
  388. package/dist/components/toaster/Toaster.stories.d.ts +2 -2
  389. package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
  390. package/dist/components/toaster/Toaster.stories.js +2 -2
  391. package/dist/components/toaster/Toaster.svelte +11 -3
  392. package/dist/components/toggle/Toggle.js +2 -2
  393. package/dist/components/toggle/Toggle.js.map +1 -1
  394. package/dist/components/toggle/Toggle.svelte +0 -14
  395. package/dist/components/togglegroup/ToggleGroup.js +2 -2
  396. package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
  397. package/dist/components/togglegroup/ToggleGroup.svelte +6 -16
  398. package/dist/components/tooltip/README.md +1 -0
  399. package/dist/components/tooltip/Tooltip.js +2 -2
  400. package/dist/components/tooltip/Tooltip.js.map +1 -1
  401. package/dist/components/tooltip/Tooltip.svelte +18 -10
  402. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  403. package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
  404. package/dist/custom-element.js +3 -3
  405. package/dist/custom-element.js.map +1 -1
  406. package/dist/documentation/DarkMode.mdx +115 -0
  407. package/dist/each.js +1 -1
  408. package/dist/each.js.map +1 -1
  409. package/dist/floating-item.svelte.js +2 -0
  410. package/dist/floating-item.svelte.js.map +1 -0
  411. package/dist/if.js +1 -1
  412. package/dist/if.js.map +1 -1
  413. package/dist/index-client.js +1 -1
  414. package/dist/index-client.js.map +1 -1
  415. package/dist/input.js +1 -1
  416. package/dist/main.d.ts +17 -1
  417. package/dist/main.d.ts.map +1 -1
  418. package/dist/main.js +17 -1
  419. package/dist/media-query.js +2 -0
  420. package/dist/media-query.js.map +1 -0
  421. package/dist/sidebar-state.svelte.js +2 -0
  422. package/dist/sidebar-state.svelte.js.map +1 -0
  423. package/dist/slot.js +1 -1
  424. package/dist/svelte-component.js +1 -1
  425. package/dist/svelte-component.js.map +1 -1
  426. package/dist/svelte-element.js +1 -1
  427. package/dist/svelte-element.js.map +1 -1
  428. package/dist/this.js +1 -1
  429. package/package.json +3 -2
@@ -0,0 +1,350 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { render, fireEvent, screen, waitFor } from '@testing-library/svelte';
3
+ import { tick } from 'svelte';
4
+ import OptionListbox from './OptionListbox.svelte';
5
+ const baseOptions = [
6
+ { label: 'Option A', value: 'a' },
7
+ { label: 'Option B', value: 'b' },
8
+ { label: 'Option C', value: 'c', disabled: true },
9
+ ];
10
+ const sectionOptions = [
11
+ { label: 'Group 1', value: 'group1', type: 'section' },
12
+ { label: 'Option A', value: 'a' },
13
+ { label: 'Option B', value: 'b' },
14
+ { label: 'Group 2', value: 'group2', type: 'section' },
15
+ { label: 'Option C', value: 'c' },
16
+ ];
17
+ function renderListbox(props = {}) {
18
+ return render(OptionListbox, {
19
+ props: {
20
+ id: 'test-listbox',
21
+ options: baseOptions,
22
+ value: null,
23
+ activeindex: -1,
24
+ open: true,
25
+ ...props,
26
+ },
27
+ });
28
+ }
29
+ describe('Rendering', () => {
30
+ it('renders all options', () => {
31
+ renderListbox();
32
+ expect(screen.getByText('Option A')).toBeTruthy();
33
+ expect(screen.getByText('Option B')).toBeTruthy();
34
+ expect(screen.getByText('Option C')).toBeTruthy();
35
+ });
36
+ it('renders the search input when search=true', () => {
37
+ renderListbox({ search: true });
38
+ expect(screen.getByPlaceholderText('Find an option...')).toBeTruthy();
39
+ });
40
+ it('does not render the search input when search=false', () => {
41
+ renderListbox({ search: false });
42
+ expect(screen.queryByPlaceholderText('Find an option...')).toBeNull();
43
+ });
44
+ it('renders Select all / Clear buttons when multiple + actions', () => {
45
+ renderListbox({ multiple: true, actions: true, value: [] });
46
+ expect(screen.getByText('Select all')).toBeTruthy();
47
+ expect(screen.getByText('Clear')).toBeTruthy();
48
+ });
49
+ it('does not render action buttons when actions=false', () => {
50
+ renderListbox({ multiple: true, actions: false, value: [] });
51
+ expect(screen.queryByText('Select all')).toBeNull();
52
+ });
53
+ it('uses custom labels for search placeholder, select and clear', () => {
54
+ renderListbox({
55
+ multiple: true,
56
+ actions: true,
57
+ value: [],
58
+ search: true,
59
+ searchplaceholder: 'Rechercher...',
60
+ selectlabel: 'Tout sélectionner',
61
+ clearlabel: 'Effacer',
62
+ });
63
+ expect(screen.getByPlaceholderText('Rechercher...')).toBeTruthy();
64
+ expect(screen.getByText('Tout sélectionner')).toBeTruthy();
65
+ expect(screen.getByText('Effacer')).toBeTruthy();
66
+ });
67
+ it('renders section headers with role="presentation" when checkablesections=false', () => {
68
+ const { container } = renderListbox({ options: sectionOptions });
69
+ const sections = container.querySelectorAll('[role="presentation"]');
70
+ expect(sections.length).toBeGreaterThan(0);
71
+ });
72
+ it('renders section headers with role="option" when checkablesections=true and multiple=true', () => {
73
+ const { container } = renderListbox({
74
+ options: sectionOptions,
75
+ checkablesections: true,
76
+ multiple: true,
77
+ value: [],
78
+ });
79
+ const listItems = container.querySelectorAll('[role="option"]');
80
+ expect(listItems.length).toBe(sectionOptions.length);
81
+ });
82
+ it('marks disabled options with aria-disabled', () => {
83
+ const { container } = renderListbox();
84
+ const disabledOption = container.querySelector('[aria-disabled="true"]');
85
+ expect(disabledOption).toBeTruthy();
86
+ });
87
+ it('renders the listbox with role="listbox"', () => {
88
+ renderListbox();
89
+ expect(screen.getByRole('listbox')).toBeTruthy();
90
+ });
91
+ it('sets aria-multiselectable when multiple=true', () => {
92
+ renderListbox({ multiple: true, value: [] });
93
+ const listbox = screen.getByRole('listbox');
94
+ expect(listbox.getAttribute('aria-multiselectable')).toBe('true');
95
+ });
96
+ it('renders item content (secondary text) when provided', () => {
97
+ const options = [{ label: 'Option A', value: 'a', content: 'Extra info' }];
98
+ renderListbox({ options });
99
+ expect(screen.getByText('Extra info')).toBeTruthy();
100
+ });
101
+ });
102
+ describe('Single value', () => {
103
+ it('selects an option on click', async () => {
104
+ renderListbox({ value: null });
105
+ const optionA = screen.getByText('Option A').closest('li');
106
+ await fireEvent.click(optionA);
107
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(true);
108
+ });
109
+ it('deselects an already selected option on click', async () => {
110
+ renderListbox({ value: 'a' });
111
+ const optionA = screen.getByText('Option A').closest('li');
112
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(true);
113
+ await fireEvent.click(optionA);
114
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(false);
115
+ });
116
+ it('does not select disabled options', async () => {
117
+ renderListbox({ value: null });
118
+ const optionC = screen.getByText('Option C').closest('li');
119
+ await fireEvent.click(optionC);
120
+ expect(optionC.classList.contains('mc-option-listbox__item--selected')).toBe(false);
121
+ });
122
+ });
123
+ describe('Multiple values', () => {
124
+ it('selects multiple options by clicking', async () => {
125
+ renderListbox({ multiple: true, value: [] });
126
+ const optionA = screen.getByText('Option A').closest('li');
127
+ const optionB = screen.getByText('Option B').closest('li');
128
+ await fireEvent.click(optionA);
129
+ await fireEvent.click(optionB);
130
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(true);
131
+ expect(optionB.classList.contains('mc-option-listbox__item--selected')).toBe(true);
132
+ });
133
+ it('deselects an option in multiple mode', async () => {
134
+ renderListbox({ multiple: true, value: ['a', 'b'] });
135
+ const optionA = screen.getByText('Option A').closest('li');
136
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(true);
137
+ await fireEvent.click(optionA);
138
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(false);
139
+ });
140
+ it('selects all options when "Select all" is clicked', async () => {
141
+ renderListbox({ multiple: true, actions: true, value: [] });
142
+ await fireEvent.click(screen.getByText('Select all'));
143
+ const items = screen.getAllByRole('option').filter((el) => !el.getAttribute('aria-disabled'));
144
+ items.forEach((item) => {
145
+ expect(item.classList.contains('mc-option-listbox__item--selected')).toBe(true);
146
+ });
147
+ });
148
+ it('clears all selections when "Clear" is clicked', async () => {
149
+ renderListbox({ multiple: true, actions: true, value: ['a', 'b'] });
150
+ await fireEvent.click(screen.getByText('Clear'));
151
+ const selected = screen
152
+ .getAllByRole('option')
153
+ .filter((el) => el.classList.contains('mc-option-listbox__item--selected'));
154
+ expect(selected.length).toBe(0);
155
+ });
156
+ });
157
+ describe('Checkable sections', () => {
158
+ function renderWithSections(extra = {}) {
159
+ return renderListbox({
160
+ options: sectionOptions,
161
+ checkablesections: true,
162
+ multiple: true,
163
+ value: [],
164
+ ...extra,
165
+ });
166
+ }
167
+ it('selects all items in a section when the section header is clicked', async () => {
168
+ renderWithSections();
169
+ const sectionHeader = screen.getByText('Group 1').closest('li');
170
+ await fireEvent.click(sectionHeader);
171
+ const optionA = screen.getByText('Option A').closest('li');
172
+ const optionB = screen.getByText('Option B').closest('li');
173
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(true);
174
+ expect(optionB.classList.contains('mc-option-listbox__item--selected')).toBe(true);
175
+ });
176
+ it('deselects all items in a section when the fully-selected header is clicked again', async () => {
177
+ renderWithSections({ value: ['a', 'b'] });
178
+ const sectionHeader = screen.getByText('Group 1').closest('li');
179
+ expect(sectionHeader.classList.contains('mc-option-listbox__item--selected')).toBe(true);
180
+ await fireEvent.click(sectionHeader);
181
+ const optionA = screen.getByText('Option A').closest('li');
182
+ const optionB = screen.getByText('Option B').closest('li');
183
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(false);
184
+ expect(optionB.classList.contains('mc-option-listbox__item--selected')).toBe(false);
185
+ });
186
+ it('shows indeterminate state when only some items in a section are selected', async () => {
187
+ renderWithSections({ value: ['a'] });
188
+ const sectionHeader = screen.getByText('Group 1').closest('li');
189
+ expect(sectionHeader.classList.contains('mc-option-listbox__item--selected')).toBe(true);
190
+ const optionB = screen.getByText('Option B').closest('li');
191
+ expect(optionB.classList.contains('mc-option-listbox__item--selected')).toBe(false);
192
+ });
193
+ it('is not indeterminate when no items in the section are selected', () => {
194
+ renderWithSections({ value: [] });
195
+ const sectionHeader = screen.getByText('Group 1').closest('li');
196
+ expect(sectionHeader.classList.contains('mc-option-listbox__item--selected')).toBe(false);
197
+ });
198
+ it('is not indeterminate when all items in the section are selected', () => {
199
+ renderWithSections({ value: ['a', 'b'] });
200
+ const sectionHeader = screen.getByText('Group 1').closest('li');
201
+ expect(sectionHeader.classList.contains('mc-option-listbox__item--selected')).toBe(true);
202
+ const optionB = screen.getByText('Option B').closest('li');
203
+ expect(optionB.classList.contains('mc-option-listbox__item--selected')).toBe(true);
204
+ });
205
+ it('clicking an indeterminate section header selects all its items', async () => {
206
+ renderWithSections({ value: ['a'] });
207
+ const sectionHeader = screen.getByText('Group 1').closest('li');
208
+ await fireEvent.click(sectionHeader);
209
+ const optionA = screen.getByText('Option A').closest('li');
210
+ const optionB = screen.getByText('Option B').closest('li');
211
+ expect(optionA.classList.contains('mc-option-listbox__item--selected')).toBe(true);
212
+ expect(optionB.classList.contains('mc-option-listbox__item--selected')).toBe(true);
213
+ });
214
+ });
215
+ describe('Search', () => {
216
+ it('filters options as the user types', async () => {
217
+ renderListbox({ search: true });
218
+ const input = screen.getByPlaceholderText('Find an option...');
219
+ await fireEvent.input(input, { target: { value: 'Option A' } });
220
+ await waitFor(() => {
221
+ expect(screen.queryByText('Option B')).toBeNull();
222
+ expect(screen.getByText('Option A')).toBeTruthy();
223
+ }, { timeout: 500 });
224
+ });
225
+ it('shows all options when the search is cleared', async () => {
226
+ renderListbox({ search: true });
227
+ const input = screen.getByPlaceholderText('Find an option...');
228
+ await fireEvent.input(input, { target: { value: 'Option A' } });
229
+ await fireEvent.input(input, { target: { value: '' } });
230
+ await waitFor(() => {
231
+ expect(screen.getByText('Option A')).toBeTruthy();
232
+ expect(screen.getByText('Option B')).toBeTruthy();
233
+ }, { timeout: 500 });
234
+ });
235
+ });
236
+ async function fireOnInput(key, opts = {}) {
237
+ const input = screen.getByRole('combobox');
238
+ await fireEvent.keyDown(input, { key, ...opts });
239
+ await tick();
240
+ }
241
+ async function callKeydown(component, key, opts = {}) {
242
+ const event = new KeyboardEvent('keydown', { key, cancelable: true, bubbles: true, ...opts });
243
+ component.handleKeydown(event);
244
+ await tick();
245
+ }
246
+ describe('Keyboard navigation', () => {
247
+ it('moves active index forward with ArrowDown', async () => {
248
+ const { component } = renderListbox({ open: true, activeindex: 0 });
249
+ await callKeydown(component, 'ArrowDown');
250
+ const items = screen.getByRole('listbox').querySelectorAll('li');
251
+ expect(items[1].classList.contains('mc-option-listbox__item--active')).toBe(true);
252
+ });
253
+ it('moves active index forward with ArrowDown', async () => {
254
+ renderListbox({ open: true, activeindex: 0, search: true });
255
+ await fireOnInput('ArrowDown');
256
+ const items = screen.getByRole('listbox').querySelectorAll('li');
257
+ expect(items[1].classList.contains('mc-option-listbox__item--active')).toBe(true);
258
+ });
259
+ it('moves active index backward with ArrowUp (via exported method)', async () => {
260
+ const { component } = renderListbox({ open: true, activeindex: 1 });
261
+ await callKeydown(component, 'ArrowUp');
262
+ const items = screen.getByRole('listbox').querySelectorAll('li');
263
+ expect(items[0].classList.contains('mc-option-listbox__item--active')).toBe(true);
264
+ });
265
+ it('wraps to last selectable item when ArrowUp is pressed from index 0', async () => {
266
+ const { component } = renderListbox({ open: true, activeindex: 0 });
267
+ await callKeydown(component, 'ArrowUp');
268
+ const items = screen.getByRole('listbox').querySelectorAll('li');
269
+ expect(items[1].classList.contains('mc-option-listbox__item--active')).toBe(true);
270
+ });
271
+ it('wraps to first selectable item when ArrowDown is pressed from last selectable', async () => {
272
+ const { component } = renderListbox({ open: true, activeindex: 1 });
273
+ await callKeydown(component, 'ArrowDown');
274
+ const items = screen.getByRole('listbox').querySelectorAll('li');
275
+ expect(items[0].classList.contains('mc-option-listbox__item--active')).toBe(true);
276
+ });
277
+ it('selects the active item when Enter is pressed', async () => {
278
+ const { component } = renderListbox({ open: true, activeindex: 0 });
279
+ await callKeydown(component, 'Enter');
280
+ const items = screen.getByRole('listbox').querySelectorAll('li');
281
+ expect(items[0].classList.contains('mc-option-listbox__item--selected')).toBe(true);
282
+ });
283
+ it('does not select a disabled item when Enter is pressed on it', async () => {
284
+ const { component } = renderListbox({ open: true, activeindex: 2 });
285
+ await callKeydown(component, 'Enter');
286
+ const items = screen.getByRole('listbox').querySelectorAll('li');
287
+ expect(items[2].classList.contains('mc-option-listbox__item--selected')).toBe(false);
288
+ });
289
+ it('calls onclose when Escape is pressed (via exported method)', async () => {
290
+ const onclose = vi.fn();
291
+ const { component } = renderListbox({ open: true, onclose });
292
+ await callKeydown(component, 'Escape');
293
+ expect(onclose).toHaveBeenCalledOnce();
294
+ });
295
+ it('calls onclose when Escape is pressed (via search input)', async () => {
296
+ const onclose = vi.fn();
297
+ renderListbox({ open: true, search: true, onclose });
298
+ await fireOnInput('Escape');
299
+ expect(onclose).toHaveBeenCalledOnce();
300
+ });
301
+ it('calls onopen when ArrowDown is pressed while the listbox is closed', async () => {
302
+ const onopen = vi.fn();
303
+ const { component } = renderListbox({ open: false, onopen, activeindex: -1 });
304
+ await callKeydown(component, 'ArrowDown');
305
+ expect(onopen).toHaveBeenCalledOnce();
306
+ });
307
+ it('calls onopen when ArrowUp is pressed while the listbox is closed', async () => {
308
+ const onopen = vi.fn();
309
+ const { component } = renderListbox({ open: false, onopen, activeindex: -1 });
310
+ await callKeydown(component, 'ArrowUp');
311
+ expect(onopen).toHaveBeenCalledOnce();
312
+ });
313
+ it('calls onopen when Enter is pressed while the listbox is closed', async () => {
314
+ const onopen = vi.fn();
315
+ const { component } = renderListbox({ open: false, onopen, activeindex: -1 });
316
+ await callKeydown(component, 'Enter');
317
+ expect(onopen).toHaveBeenCalledOnce();
318
+ });
319
+ it('skips disabled options during downward keyboard navigation', async () => {
320
+ const { component } = renderListbox({ open: true, activeindex: 1 });
321
+ await callKeydown(component, 'ArrowDown');
322
+ const items = screen.getByRole('listbox').querySelectorAll('li');
323
+ expect(items[0].classList.contains('mc-option-listbox__item--active')).toBe(true);
324
+ expect(items[2].classList.contains('mc-option-listbox__item--active')).toBe(false);
325
+ });
326
+ });
327
+ describe('Readonly', () => {
328
+ it('applies readonly class to all items when readonly=true', () => {
329
+ const { container } = renderListbox({ readonly: true });
330
+ const items = container.querySelectorAll('.mc-option-listbox__item--readonly');
331
+ expect(items.length).toBe(baseOptions.length);
332
+ });
333
+ });
334
+ describe('ARIA', () => {
335
+ it('sets aria-activedescendant on the search input when open', () => {
336
+ renderListbox({ search: true, activeindex: 0 });
337
+ const input = screen.getByRole('combobox');
338
+ expect(input.getAttribute('aria-activedescendant')).toBe('option-test-listbox-0');
339
+ });
340
+ it('sets aria-expanded on the search combobox', () => {
341
+ renderListbox({ search: true, open: true });
342
+ const input = screen.getByRole('combobox');
343
+ expect(input.getAttribute('aria-expanded')).toBe('true');
344
+ });
345
+ it('sets correct id on each option element', () => {
346
+ const { container } = renderListbox();
347
+ const firstOption = container.querySelector('#option-test-listbox-0');
348
+ expect(firstOption).toBeTruthy();
349
+ });
350
+ });