@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.
- package/dist/Condition20.js +1 -1
- package/dist/Condition20.js.map +1 -1
- package/dist/accordion-list.state.svelte.js +1 -1
- package/dist/attributes.js +1 -1
- package/dist/attributes.js.map +1 -1
- package/dist/branches.js +1 -1
- package/dist/branches.js.map +1 -1
- package/dist/bundle.d.ts +14 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +14 -0
- package/dist/components/accordionlist/AccordionList.js +4 -4
- package/dist/components/accordionlist/AccordionList.js.map +1 -1
- package/dist/components/accordionlist/AccordionList.stories.js +2 -2
- package/dist/components/accordionlist/AccordionList.svelte +19 -17
- package/dist/components/accordionlistItem/AccordionListItem.js +4 -4
- package/dist/components/accordionlistItem/AccordionListItem.js.map +1 -1
- package/dist/components/accordionlistItem/AccordionListItem.svelte +19 -17
- package/dist/components/actionbottombar/ActionBottomBar.js +2 -2
- package/dist/components/actionlistbox/ActionListbox.js +6 -4
- package/dist/components/actionlistbox/ActionListbox.js.map +1 -1
- package/dist/components/actionlistbox/ActionListbox.spec.js +73 -16
- package/dist/components/actionlistbox/ActionListbox.stories.d.ts +2 -0
- package/dist/components/actionlistbox/ActionListbox.stories.d.ts.map +1 -1
- package/dist/components/actionlistbox/ActionListbox.stories.js +73 -2
- package/dist/components/actionlistbox/ActionListbox.svelte +157 -11
- package/dist/components/actionlistbox/ActionListbox.svelte.d.ts +11 -1
- package/dist/components/actionlistbox/ActionListbox.svelte.d.ts.map +1 -1
- package/dist/components/actionlistbox/README.md +3 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.js +2 -2
- package/dist/components/actionlistboxitem/ActionListboxItem.js.map +1 -1
- package/dist/components/actionlistboxitem/ActionListboxItem.svelte +21 -5
- package/dist/components/actionlistboxitem/ActionListboxItem.svelte.d.ts +6 -1
- package/dist/components/actionlistboxitem/ActionListboxItem.svelte.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.js +2 -2
- package/dist/components/breadcrumb/Breadcrumb.js +4 -6
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.svelte +7 -14
- package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/components/builtinmenu/BuiltInMenu.js +2 -2
- package/dist/components/builtinmenu/BuiltInMenu.stories.d.ts +1 -1
- package/dist/components/builtinmenu/BuiltInMenu.stories.d.ts.map +1 -1
- package/dist/components/builtinmenu/BuiltInMenu.stories.js +2 -2
- package/dist/components/builtinmenu/BuiltInMenu.svelte +1 -1
- package/dist/components/builtinmenuitem/BuiltInMenuItem.js +3 -3
- package/dist/components/builtinmenuitem/BuiltInMenuItem.svelte +1 -1
- package/dist/components/button/Button.js +3 -3
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.svelte +16 -1
- package/dist/components/button/Button.svelte.d.ts +6 -1
- package/dist/components/button/Button.svelte.d.ts.map +1 -1
- package/dist/components/callout/Callout.js +2 -2
- package/dist/components/callout/Callout.stories.d.ts +3 -3
- package/dist/components/callout/Callout.stories.d.ts.map +1 -1
- package/dist/components/callout/Callout.stories.js +3 -3
- package/dist/components/carousel/Carousel.js +2 -2
- package/dist/components/carousel/Carousel.js.map +1 -1
- package/dist/components/carousel/Carousel.svelte +1 -0
- package/dist/components/checkbox/Checkbox.js +4 -4
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/checkbox/Checkbox.svelte +30 -10
- package/dist/components/checkboxgroup/CheckboxGroup.js +4 -4
- package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.svelte +30 -10
- package/dist/components/checklistmenu/CheckListMenu.js +2 -2
- package/dist/components/checklistmenu/CheckListMenu.js.map +1 -1
- package/dist/components/checklistmenu/CheckListMenu.stories.js +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
- package/dist/components/container/Container.js +2 -2
- package/dist/components/datepicker/Datepicker.js +3 -3
- package/dist/components/datepicker/Datepicker.js.map +1 -1
- package/dist/components/datepicker/Datepicker.stories.d.ts +1 -1
- package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
- package/dist/components/datepicker/Datepicker.stories.js +2 -2
- package/dist/components/datepicker/Datepicker.svelte +32 -8
- package/dist/components/divider/Divider.js +2 -2
- package/dist/components/divider/Divider.js.map +1 -1
- package/dist/components/divider/Divider.svelte +6 -1
- package/dist/components/divider/Divider.svelte.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.js +2 -2
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer.svelte +4 -1
- package/dist/components/field/Field.js +3 -3
- package/dist/components/field/Field.js.map +1 -1
- package/dist/components/field/Field.spec.js +1 -1
- package/dist/components/field/Field.svelte +7 -3
- package/dist/components/fileuploader/FileUploader.js +2 -2
- package/dist/components/fileuploader/FileUploader.js.map +1 -1
- package/dist/components/fileuploader/FileUploader.stories.js +3 -3
- package/dist/components/fileuploader/FileUploader.svelte +4 -1
- package/dist/components/fileuploaderitem/FileUploaderItem.js +2 -2
- package/dist/components/flag/Flag.js +2 -2
- package/dist/components/iconbutton/IconButton.js +2 -2
- package/dist/components/iconbutton/IconButton.js.map +1 -1
- package/dist/components/iconbutton/IconButton.svelte +11 -1
- package/dist/components/iconbutton/IconButton.svelte.d.ts +3 -1
- package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
- package/dist/components/kpiitem/KpiItem.js +2 -2
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
- package/dist/components/link/Link.js +2 -2
- package/dist/components/link/Link.stories.js +2 -2
- package/dist/components/loader/Loader.js +2 -2
- package/dist/components/loadingoverlay/LoadingOverlay.js +2 -2
- package/dist/components/modal/Modal.js +3 -3
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.svelte +5 -1
- package/dist/components/navigationindicator/NavigationIndicator.js +4 -0
- package/dist/components/navigationindicator/NavigationIndicator.js.map +1 -0
- package/dist/components/navigationindicator/NavigationIndicator.spec.js +130 -0
- package/dist/components/navigationindicator/NavigationIndicator.stories.d.ts +8 -0
- package/dist/components/navigationindicator/NavigationIndicator.stories.d.ts.map +1 -0
- package/dist/components/navigationindicator/NavigationIndicator.stories.js +40 -0
- package/dist/components/navigationindicator/NavigationIndicator.svelte +156 -0
- package/dist/components/navigationindicator/NavigationIndicator.svelte.d.ts +34 -0
- package/dist/components/navigationindicator/NavigationIndicator.svelte.d.ts.map +1 -0
- package/dist/components/navigationindicator/README.md +21 -0
- package/dist/components/numberbadge/NumberBadge.js +2 -2
- package/dist/components/overlay/Overlay.js +2 -2
- package/dist/components/pageheader/PageHeader.js +24 -0
- package/dist/components/pageheader/PageHeader.js.map +1 -0
- package/dist/components/pageheader/PageHeader.spec.js +75 -0
- package/dist/components/pageheader/PageHeader.stories.d.ts +12 -0
- package/dist/components/pageheader/PageHeader.stories.d.ts.map +1 -0
- package/dist/components/pageheader/PageHeader.stories.js +82 -0
- package/dist/components/pageheader/PageHeader.svelte +268 -0
- package/dist/components/pageheader/PageHeader.svelte.d.ts +66 -0
- package/dist/components/pageheader/PageHeader.svelte.d.ts.map +1 -0
- package/dist/components/pageheader/README.md +32 -0
- package/dist/components/pagination/Pagination.js +8 -8
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/Pagination.svelte +44 -28
- package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
- package/dist/components/passwordinput/PasswordInput.js +3 -3
- package/dist/components/passwordinput/PasswordInput.js.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.d.ts +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.js +2 -2
- package/dist/components/passwordinput/PasswordInput.svelte +14 -5
- package/dist/components/phonenumber/PhoneNumber.js +13 -11
- package/dist/components/phonenumber/PhoneNumber.js.map +1 -1
- package/dist/components/phonenumber/PhoneNumber.stories.d.ts +1 -1
- package/dist/components/phonenumber/PhoneNumber.stories.d.ts.map +1 -1
- package/dist/components/phonenumber/PhoneNumber.stories.js +2 -2
- package/dist/components/phonenumber/PhoneNumber.svelte +84 -37
- package/dist/components/phonenumber/PhoneNumber.svelte.d.ts.map +1 -1
- package/dist/components/pincode/Pincode.js +2 -2
- package/dist/components/pincode/Pincode.js.map +1 -1
- package/dist/components/pincode/Pincode.stories.d.ts +1 -1
- package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
- package/dist/components/pincode/Pincode.stories.js +2 -2
- package/dist/components/popover/Popover.js +6 -0
- package/dist/components/popover/Popover.js.map +1 -0
- package/dist/components/popover/Popover.spec.js +69 -0
- package/dist/components/popover/Popover.stories.d.ts +36 -0
- package/dist/components/popover/Popover.stories.d.ts.map +1 -0
- package/dist/components/popover/Popover.stories.js +124 -0
- package/dist/components/popover/Popover.svelte +348 -0
- package/dist/components/popover/Popover.svelte.d.ts +79 -0
- package/dist/components/popover/Popover.svelte.d.ts.map +1 -0
- package/dist/components/popover/README.md +25 -0
- package/dist/components/quantityselector/QuantitySelector.js +2 -2
- package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.stories.js +1 -1
- package/dist/components/quantityselector/QuantitySelector.svelte +3 -3
- package/dist/components/radio/Radio.js +2 -2
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/radiogroup/RadioGroup.js +2 -2
- package/dist/components/radiogroup/RadioGroup.js.map +1 -1
- package/dist/components/radiogroup/RadioGroup.svelte +6 -2
- package/dist/components/segmentedcontrol/SegmentedControl.js +2 -2
- package/dist/components/segmentedcontrol/SegmentedControl.js.map +1 -1
- package/dist/components/select/Select.js +3 -3
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.spec.js +2 -2
- package/dist/components/select/Select.stories.d.ts +1 -1
- package/dist/components/select/Select.stories.d.ts.map +1 -1
- package/dist/components/select/Select.stories.js +2 -2
- package/dist/components/select/Select.svelte +50 -31
- package/dist/components/select/Select.svelte.d.ts.map +1 -1
- package/dist/components/sidebar/README.md +28 -0
- package/dist/components/sidebar/Sidebar.js +18 -0
- package/dist/components/sidebar/Sidebar.js.map +1 -0
- package/dist/components/sidebar/Sidebar.spec.js +74 -0
- package/dist/components/sidebar/Sidebar.stories.d.ts +23 -0
- package/dist/components/sidebar/Sidebar.stories.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.stories.js +333 -0
- package/dist/components/sidebar/Sidebar.svelte +570 -0
- package/dist/components/sidebar/Sidebar.svelte.d.ts +47 -0
- package/dist/components/sidebar/Sidebar.svelte.d.ts.map +1 -0
- package/dist/components/sidebar/floating-item.spec.js +96 -0
- package/dist/components/sidebar/floating-item.svelte.d.ts +13 -0
- package/dist/components/sidebar/floating-item.svelte.d.ts.map +1 -0
- package/dist/components/sidebar/floating-item.svelte.js +95 -0
- package/dist/components/sidebar/sidebar-state.spec.js +112 -0
- package/dist/components/sidebar/sidebar-state.svelte.d.ts +9 -0
- package/dist/components/sidebar/sidebar-state.svelte.d.ts.map +1 -0
- package/dist/components/sidebar/sidebar-state.svelte.js +36 -0
- package/dist/components/sidebarexpandableitem/README.md +19 -0
- package/dist/components/sidebarexpandableitem/SidebarExpandableItem.js +18 -0
- package/dist/components/sidebarexpandableitem/SidebarExpandableItem.js.map +1 -0
- package/dist/components/sidebarexpandableitem/SidebarExpandableItem.spec.js +85 -0
- package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte +578 -0
- package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte.d.ts +49 -0
- package/dist/components/sidebarexpandableitem/SidebarExpandableItem.svelte.d.ts.map +1 -0
- package/dist/components/sidebarfooter/README.md +29 -0
- package/dist/components/sidebarfooter/SidebarFooter.js +18 -0
- package/dist/components/sidebarfooter/SidebarFooter.js.map +1 -0
- package/dist/components/sidebarfooter/SidebarFooter.spec.js +132 -0
- package/dist/components/sidebarfooter/SidebarFooter.svelte +1018 -0
- package/dist/components/sidebarfooter/SidebarFooter.svelte.d.ts +60 -0
- package/dist/components/sidebarfooter/SidebarFooter.svelte.d.ts.map +1 -0
- package/dist/components/sidebarfooter/_SidebarFooterMenu.js +18 -0
- package/dist/components/sidebarfooter/_SidebarFooterMenu.js.map +1 -0
- package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte +517 -0
- package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte.d.ts +36 -0
- package/dist/components/sidebarfooter/_SidebarFooterMenu.svelte.d.ts.map +1 -0
- package/dist/components/sidebarheader/README.md +11 -0
- package/dist/components/sidebarheader/SidebarHeader.js +18 -0
- package/dist/components/sidebarheader/SidebarHeader.js.map +1 -0
- package/dist/components/sidebarheader/SidebarHeader.spec.js +37 -0
- package/dist/components/sidebarheader/SidebarHeader.svelte +499 -0
- package/dist/components/sidebarheader/SidebarHeader.svelte.d.ts +17 -0
- package/dist/components/sidebarheader/SidebarHeader.svelte.d.ts.map +1 -0
- package/dist/components/sidebarnavitem/README.md +30 -0
- package/dist/components/sidebarnavitem/SidebarNavItem.js +18 -0
- package/dist/components/sidebarnavitem/SidebarNavItem.js.map +1 -0
- package/dist/components/sidebarnavitem/SidebarNavItem.spec.js +95 -0
- package/dist/components/sidebarnavitem/SidebarNavItem.svelte +617 -0
- package/dist/components/sidebarnavitem/SidebarNavItem.svelte.d.ts +58 -0
- package/dist/components/sidebarnavitem/SidebarNavItem.svelte.d.ts.map +1 -0
- package/dist/components/sidebarshortcutitem/README.md +17 -0
- package/dist/components/sidebarshortcutitem/SidebarShortcutItem.js +18 -0
- package/dist/components/sidebarshortcutitem/SidebarShortcutItem.js.map +1 -0
- package/dist/components/sidebarshortcutitem/SidebarShortcutItem.spec.js +34 -0
- package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte +509 -0
- package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte.d.ts +35 -0
- package/dist/components/sidebarshortcutitem/SidebarShortcutItem.svelte.d.ts.map +1 -0
- package/dist/components/sidebarshortcuts/README.md +23 -0
- package/dist/components/sidebarshortcuts/SidebarShortcuts.js +18 -0
- package/dist/components/sidebarshortcuts/SidebarShortcuts.js.map +1 -0
- package/dist/components/sidebarshortcuts/SidebarShortcuts.spec.js +82 -0
- package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte +583 -0
- package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte.d.ts +42 -0
- package/dist/components/sidebarshortcuts/SidebarShortcuts.svelte.d.ts.map +1 -0
- package/dist/components/starrating/StarRating.js +2 -2
- package/dist/components/starrating/StarRating.js.map +1 -1
- package/dist/components/starrating/StarRating.stories.d.ts +5 -5
- package/dist/components/starrating/StarRating.stories.d.ts.map +1 -1
- package/dist/components/starrating/StarRating.stories.js +5 -5
- package/dist/components/statusbadge/StatusBadge.js +2 -2
- package/dist/components/statusdot/StatusDot.js +2 -2
- package/dist/components/statusmessage/StatusMessage.js +2 -2
- package/dist/components/statusnotification/StatusNotification.js +2 -2
- package/dist/components/statusnotification/StatusNotification.js.map +1 -1
- package/dist/components/statusnotification/StatusNotification.stories.d.ts +3 -3
- package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
- package/dist/components/statusnotification/StatusNotification.stories.js +3 -3
- package/dist/components/statusnotification/StatusNotification.svelte +4 -1
- package/dist/components/stepperbottombar/StepperBottomBar.js +3 -3
- package/dist/components/stepperbottombar/StepperBottomBar.svelte +5 -1
- package/dist/components/stepperbottombar/StepperBottomBar.svelte.d.ts +1 -1
- package/dist/components/steppercompact/StepperCompact.js +2 -2
- package/dist/components/stepperinline/StepperInline.js +3 -3
- package/dist/components/stepperinline/StepperInline.svelte +1 -1
- package/dist/components/stepperinline/StepperInline.svelte.d.ts +1 -1
- package/dist/components/tab/Tab.js +2 -2
- package/dist/components/tabs/Tabs.js +2 -2
- package/dist/components/tabs/Tabs.stories.js +1 -1
- package/dist/components/tag/Tag.js +2 -2
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/tag/Tag.svelte +8 -5
- package/dist/components/textarea/Textarea.js +2 -2
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/textarea/Textarea.stories.d.ts +1 -1
- package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.stories.js +2 -2
- package/dist/components/textinput/README.md +2 -0
- package/dist/components/textinput/Textinput.js +3 -3
- package/dist/components/textinput/Textinput.js.map +1 -1
- package/dist/components/textinput/Textinput.stories.d.ts +11 -1
- package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
- package/dist/components/textinput/Textinput.stories.js +20 -29
- package/dist/components/textinput/Textinput.svelte +28 -4
- package/dist/components/textinput/Textinput.svelte.d.ts +8 -0
- package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
- package/dist/components/tile/README.md +19 -0
- package/dist/components/tile/Tile.js +111 -0
- package/dist/components/tile/Tile.js.map +1 -0
- package/dist/components/tile/Tile.spec.js +21 -0
- package/dist/components/tile/Tile.stories.d.ts +10 -0
- package/dist/components/tile/Tile.stories.d.ts.map +1 -0
- package/dist/components/tile/Tile.stories.js +37 -0
- package/dist/components/tile/Tile.svelte +894 -0
- package/dist/components/tile/Tile.svelte.d.ts +48 -0
- package/dist/components/tile/Tile.svelte.d.ts.map +1 -0
- package/dist/components/tileclickable/README.md +31 -0
- package/dist/components/tileclickable/TileClickable.js +114 -0
- package/dist/components/tileclickable/TileClickable.js.map +1 -0
- package/dist/components/tileclickable/TileClickable.spec.js +62 -0
- package/dist/components/tileclickable/TileClickable.stories.d.ts +10 -0
- package/dist/components/tileclickable/TileClickable.stories.d.ts.map +1 -0
- package/dist/components/tileclickable/TileClickable.stories.js +52 -0
- package/dist/components/tileclickable/TileClickable.svelte +954 -0
- package/dist/components/tileclickable/TileClickable.svelte.d.ts +65 -0
- package/dist/components/tileclickable/TileClickable.svelte.d.ts.map +1 -0
- package/dist/components/tileexpandable/README.md +20 -0
- package/dist/components/tileexpandable/TileExpandable.js +114 -0
- package/dist/components/tileexpandable/TileExpandable.js.map +1 -0
- package/dist/components/tileexpandable/TileExpandable.spec.js +65 -0
- package/dist/components/tileexpandable/TileExpandable.stories.d.ts +7 -0
- package/dist/components/tileexpandable/TileExpandable.stories.d.ts.map +1 -0
- package/dist/components/tileexpandable/TileExpandable.stories.js +38 -0
- package/dist/components/tileexpandable/TileExpandable.svelte +956 -0
- package/dist/components/tileexpandable/TileExpandable.svelte.d.ts +53 -0
- package/dist/components/tileexpandable/TileExpandable.svelte.d.ts.map +1 -0
- package/dist/components/tileselectable/README.md +21 -0
- package/dist/components/tileselectable/TileSelectable.js +108 -0
- package/dist/components/tileselectable/TileSelectable.js.map +1 -0
- package/dist/components/tileselectable/TileSelectable.spec.js +57 -0
- package/dist/components/tileselectable/TileSelectable.stories.d.ts +9 -0
- package/dist/components/tileselectable/TileSelectable.stories.d.ts.map +1 -0
- package/dist/components/tileselectable/TileSelectable.stories.js +44 -0
- package/dist/components/tileselectable/TileSelectable.svelte +939 -0
- package/dist/components/tileselectable/TileSelectable.svelte.d.ts +57 -0
- package/dist/components/tileselectable/TileSelectable.svelte.d.ts.map +1 -0
- package/dist/components/toaster/Toaster.js +3 -3
- package/dist/components/toaster/Toaster.js.map +1 -1
- package/dist/components/toaster/Toaster.stories.d.ts +2 -2
- package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
- package/dist/components/toaster/Toaster.stories.js +2 -2
- package/dist/components/toaster/Toaster.svelte +5 -2
- package/dist/components/toggle/Toggle.js +2 -2
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/Toggle.svelte +0 -14
- package/dist/components/togglegroup/ToggleGroup.js +2 -2
- package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.svelte +6 -16
- package/dist/components/tooltip/README.md +1 -0
- package/dist/components/tooltip/Tooltip.js +2 -2
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/Tooltip.svelte +18 -10
- package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
- package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
- package/dist/custom-element.js +3 -3
- package/dist/custom-element.js.map +1 -1
- package/dist/each.js +1 -1
- package/dist/each.js.map +1 -1
- package/dist/floating-item.svelte.js +2 -0
- package/dist/floating-item.svelte.js.map +1 -0
- package/dist/if.js +1 -1
- package/dist/if.js.map +1 -1
- package/dist/index-client.js +1 -1
- package/dist/index-client.js.map +1 -1
- package/dist/input.js +1 -1
- package/dist/main.d.ts +15 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +15 -1
- package/dist/media-query.js +2 -0
- package/dist/media-query.js.map +1 -0
- package/dist/sidebar-state.svelte.js +2 -0
- package/dist/sidebar-state.svelte.js.map +1 -0
- package/dist/slot.js +1 -1
- package/dist/svelte-component.js +1 -1
- package/dist/svelte-element.js +1 -1
- package/dist/svelte-element.js.map +1 -1
- package/dist/this.js +1 -1
- 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
|
+
});
|