@mozaic-ds/web-components 1.2.0 → 1.4.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 +2 -0
- package/dist/Condition20.js.map +1 -0
- package/dist/accordion-list.state.svelte.js +2 -0
- package/dist/accordion-list.state.svelte.js.map +1 -0
- package/dist/attributes.js +1 -1
- package/dist/attributes.js.map +1 -1
- package/dist/bundle.d.ts +11 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +11 -0
- package/dist/components/accordionlist/AccordionList.js +50 -0
- package/dist/components/accordionlist/AccordionList.js.map +1 -0
- package/dist/components/accordionlist/AccordionList.spec.js +40 -0
- package/dist/components/accordionlist/AccordionList.stories.d.ts +15 -0
- package/dist/components/accordionlist/AccordionList.stories.d.ts.map +1 -0
- package/dist/components/accordionlist/AccordionList.stories.js +141 -0
- package/dist/components/accordionlist/AccordionList.svelte +441 -0
- package/dist/components/accordionlist/AccordionList.svelte.d.ts +47 -0
- package/dist/components/accordionlist/AccordionList.svelte.d.ts.map +1 -0
- package/dist/components/accordionlist/README.md +18 -0
- package/dist/components/accordionlist/accordion-list.state.svelte.d.ts +5 -0
- package/dist/components/accordionlist/accordion-list.state.svelte.d.ts.map +1 -0
- package/dist/components/accordionlist/accordion-list.state.svelte.js +6 -0
- package/dist/components/accordionlistItem/AccordionListItem.js +50 -0
- package/dist/components/accordionlistItem/AccordionListItem.js.map +1 -0
- package/dist/components/accordionlistItem/AccordionListItem.spec.js +75 -0
- package/dist/components/accordionlistItem/AccordionListItem.svelte +463 -0
- package/dist/components/accordionlistItem/AccordionListItem.svelte.d.ts +50 -0
- package/dist/components/accordionlistItem/AccordionListItem.svelte.d.ts.map +1 -0
- package/dist/components/accordionlistItem/README.md +29 -0
- package/dist/components/actionbottombar/ActionBottomBar.js +12 -0
- package/dist/components/actionbottombar/ActionBottomBar.js.map +1 -0
- package/dist/components/actionbottombar/ActionBottomBar.spec.js +20 -0
- package/dist/components/actionbottombar/ActionBottomBar.stories.d.ts +19 -0
- package/dist/components/actionbottombar/ActionBottomBar.stories.d.ts.map +1 -0
- package/dist/components/actionbottombar/ActionBottomBar.stories.js +131 -0
- package/dist/components/actionbottombar/ActionBottomBar.svelte +113 -0
- package/dist/components/actionbottombar/ActionBottomBar.svelte.d.ts +43 -0
- package/dist/components/actionbottombar/ActionBottomBar.svelte.d.ts.map +1 -0
- package/dist/components/actionbottombar/README.md +19 -0
- package/dist/components/actionlistbox/ActionListbox.js +10 -0
- package/dist/components/actionlistbox/ActionListbox.js.map +1 -0
- package/dist/components/actionlistbox/ActionListbox.spec.js +20 -0
- package/dist/components/actionlistbox/ActionListbox.stories.d.ts +12 -0
- package/dist/components/actionlistbox/ActionListbox.stories.d.ts.map +1 -0
- package/dist/components/actionlistbox/ActionListbox.stories.js +49 -0
- package/dist/components/actionlistbox/ActionListbox.svelte +213 -0
- package/dist/components/actionlistbox/ActionListbox.svelte.d.ts +37 -0
- package/dist/components/actionlistbox/ActionListbox.svelte.d.ts.map +1 -0
- package/dist/components/actionlistbox/README.md +23 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.js +4 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.js.map +1 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.spec.js +37 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.svelte +136 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.svelte.d.ts +43 -0
- package/dist/components/actionlistboxitem/ActionListboxItem.svelte.d.ts.map +1 -0
- package/dist/components/actionlistboxitem/README.md +20 -0
- package/dist/components/avatar/Avatar.js +2 -2
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/Avatar.stories.d.ts +2 -1
- package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.stories.js +3 -2
- package/dist/components/avatar/Avatar.svelte +14 -4
- package/dist/components/avatar/Avatar.svelte.d.ts +7 -1
- package/dist/components/avatar/Avatar.svelte.d.ts.map +1 -1
- package/dist/components/avatar/README.md +2 -1
- package/dist/components/breadcrumb/Breadcrumb.js +2 -2
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.stories.d.ts +1 -0
- package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.stories.js +1 -0
- package/dist/components/breadcrumb/Breadcrumb.svelte +3 -2
- package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts +1 -0
- package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/components/builtinmenu/BuiltInMenu.js +4 -0
- package/dist/components/builtinmenu/BuiltInMenu.js.map +1 -0
- package/dist/components/builtinmenu/BuiltInMenu.stories.d.ts +11 -0
- package/dist/components/builtinmenu/BuiltInMenu.stories.d.ts.map +1 -0
- package/dist/components/builtinmenu/BuiltInMenu.stories.js +61 -0
- package/dist/components/builtinmenu/BuiltInMenu.svelte +142 -0
- package/dist/components/builtinmenu/BuiltInMenu.svelte.d.ts +41 -0
- package/dist/components/builtinmenu/BuiltInMenu.svelte.d.ts.map +1 -0
- package/dist/components/builtinmenu/BuiltinMenu.spec.js +19 -0
- package/dist/components/builtinmenu/README.md +18 -0
- package/dist/components/builtinmenuitem/BuiltInMenuItem.js +8 -0
- package/dist/components/builtinmenuitem/BuiltInMenuItem.js.map +1 -0
- package/dist/components/builtinmenuitem/BuiltInMenuItem.spec.js +36 -0
- package/dist/components/builtinmenuitem/BuiltInMenuItem.svelte +165 -0
- package/dist/components/builtinmenuitem/BuiltInMenuItem.svelte.d.ts +50 -0
- package/dist/components/builtinmenuitem/BuiltInMenuItem.svelte.d.ts.map +1 -0
- package/dist/components/builtinmenuitem/README.md +20 -0
- package/dist/components/button/Button.js +2 -2
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.stories.d.ts +14 -1
- package/dist/components/button/Button.stories.d.ts.map +1 -1
- package/dist/components/button/Button.stories.js +146 -6
- package/dist/components/button/Button.svelte +43 -16
- package/dist/components/button/Button.svelte.d.ts +9 -0
- package/dist/components/button/Button.svelte.d.ts.map +1 -1
- package/dist/components/button/README.md +2 -2
- package/dist/components/callout/Callout.js +2 -2
- package/dist/components/callout/Callout.js.map +1 -1
- package/dist/components/callout/Callout.spec.js +4 -1
- package/dist/components/callout/Callout.stories.d.ts +5 -2
- package/dist/components/callout/Callout.stories.d.ts.map +1 -1
- package/dist/components/callout/Callout.stories.js +5 -2
- package/dist/components/callout/Callout.svelte +40 -5
- package/dist/components/callout/Callout.svelte.d.ts +14 -0
- package/dist/components/callout/Callout.svelte.d.ts.map +1 -1
- package/dist/components/callout/README.md +3 -0
- package/dist/components/carousel/Carousel.js +4 -0
- package/dist/components/carousel/Carousel.js.map +1 -0
- package/dist/components/carousel/Carousel.spec.js +49 -0
- package/dist/components/carousel/Carousel.stories.d.ts +9 -0
- package/dist/components/carousel/Carousel.stories.d.ts.map +1 -0
- package/dist/components/carousel/Carousel.stories.js +73 -0
- package/dist/components/carousel/Carousel.svelte +211 -0
- package/dist/components/carousel/Carousel.svelte.d.ts +56 -0
- package/dist/components/carousel/Carousel.svelte.d.ts.map +1 -0
- package/dist/components/carousel/README.md +20 -0
- package/dist/components/checkbox/Checkbox.js +3 -3
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/checkbox/Checkbox.stories.d.ts +1 -0
- package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.stories.js +6 -5
- package/dist/components/checkbox/Checkbox.svelte +7 -0
- package/dist/components/checkbox/Checkbox.svelte.d.ts +1 -0
- package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.js +4 -4
- package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +1 -0
- package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.stories.js +3 -2
- package/dist/components/checkboxgroup/CheckboxGroup.svelte +5 -2
- package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts +1 -0
- package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts.map +1 -1
- package/dist/components/checklistmenu/CheckListMenu.js +4 -0
- package/dist/components/checklistmenu/CheckListMenu.js.map +1 -0
- package/dist/components/checklistmenu/CheckListMenu.spec.js +33 -0
- package/dist/components/checklistmenu/CheckListMenu.stories.d.ts +8 -0
- package/dist/components/checklistmenu/CheckListMenu.stories.d.ts.map +1 -0
- package/dist/components/checklistmenu/CheckListMenu.stories.js +32 -0
- package/dist/components/checklistmenu/CheckListMenu.svelte +79 -0
- package/dist/components/checklistmenu/CheckListMenu.svelte.d.ts +27 -0
- package/dist/components/checklistmenu/CheckListMenu.svelte.d.ts.map +1 -0
- package/dist/components/checklistmenu/README.md +12 -0
- package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
- package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +1 -0
- package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.stories.js +1 -0
- package/dist/components/container/Container.js +2 -2
- package/dist/components/container/Container.js.map +1 -1
- package/dist/components/container/Container.stories.d.ts +1 -0
- package/dist/components/container/Container.stories.d.ts.map +1 -1
- package/dist/components/container/Container.stories.js +2 -3
- package/dist/components/container/Container.svelte +19 -3
- package/dist/components/container/Container.svelte.d.ts +5 -0
- package/dist/components/container/Container.svelte.d.ts.map +1 -1
- package/dist/components/container/README.md +1 -0
- 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 -0
- package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
- package/dist/components/datepicker/Datepicker.stories.js +6 -4
- package/dist/components/datepicker/Datepicker.svelte +17 -3
- package/dist/components/datepicker/Datepicker.svelte.d.ts +1 -0
- package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
- package/dist/components/divider/Divider.js +2 -2
- package/dist/components/divider/Divider.js.map +1 -1
- package/dist/components/divider/Divider.stories.d.ts +1 -0
- package/dist/components/divider/Divider.stories.d.ts.map +1 -1
- package/dist/components/divider/Divider.stories.js +1 -0
- package/dist/components/divider/Divider.svelte +19 -3
- package/dist/components/divider/Divider.svelte.d.ts +6 -0
- package/dist/components/divider/Divider.svelte.d.ts.map +1 -1
- package/dist/components/divider/README.md +1 -0
- package/dist/components/drawer/Drawer.js +2 -2
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer.stories.d.ts +2 -0
- package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.stories.js +5 -3
- package/dist/components/drawer/Drawer.svelte +47 -9
- package/dist/components/drawer/Drawer.svelte.d.ts +10 -0
- package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
- package/dist/components/drawer/README.md +2 -0
- package/dist/components/field/Field.js +2 -2
- package/dist/components/field/Field.js.map +1 -1
- package/dist/components/field/Field.stories.d.ts +2 -0
- package/dist/components/field/Field.stories.d.ts.map +1 -1
- package/dist/components/field/Field.stories.js +5 -3
- package/dist/components/field/Field.svelte +16 -1
- package/dist/components/field/Field.svelte.d.ts +5 -0
- package/dist/components/field/Field.svelte.d.ts.map +1 -1
- package/dist/components/field/README.md +1 -0
- package/dist/components/fileuploader/FileUploader.js +4 -0
- package/dist/components/fileuploader/FileUploader.js.map +1 -0
- package/dist/components/fileuploader/FileUploader.spec.js +134 -0
- package/dist/components/fileuploader/FileUploader.stories.d.ts +17 -0
- package/dist/components/fileuploader/FileUploader.stories.d.ts.map +1 -0
- package/dist/components/fileuploader/FileUploader.stories.js +172 -0
- package/dist/components/fileuploader/FileUploader.svelte +816 -0
- package/dist/components/fileuploader/FileUploader.svelte.d.ts +125 -0
- package/dist/components/fileuploader/FileUploader.svelte.d.ts.map +1 -0
- package/dist/components/fileuploader/README.md +42 -0
- package/dist/components/fileuploaderitem/FileUploaderItem.js +5 -0
- package/dist/components/fileuploaderitem/FileUploaderItem.js.map +1 -0
- package/dist/components/fileuploaderitem/FileUploaderItem.spec.js +41 -0
- package/dist/components/fileuploaderitem/FileUploaderItem.svelte +298 -0
- package/dist/components/fileuploaderitem/FileUploaderItem.svelte.d.ts +62 -0
- package/dist/components/fileuploaderitem/FileUploaderItem.svelte.d.ts.map +1 -0
- package/dist/components/fileuploaderitem/README.md +24 -0
- package/dist/components/flag/Flag.js +2 -2
- package/dist/components/flag/Flag.js.map +1 -1
- package/dist/components/flag/Flag.stories.d.ts +1 -0
- package/dist/components/flag/Flag.stories.d.ts.map +1 -1
- package/dist/components/flag/Flag.stories.js +1 -0
- package/dist/components/flag/Flag.svelte +3 -2
- package/dist/components/flag/Flag.svelte.d.ts +1 -0
- package/dist/components/flag/Flag.svelte.d.ts.map +1 -1
- package/dist/components/iconbutton/IconButton.js +2 -2
- package/dist/components/iconbutton/IconButton.js.map +1 -1
- package/dist/components/iconbutton/IconButton.stories.d.ts +14 -6
- package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
- package/dist/components/iconbutton/IconButton.stories.js +114 -9
- package/dist/components/iconbutton/IconButton.svelte +34 -2
- package/dist/components/iconbutton/IconButton.svelte.d.ts +9 -0
- package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
- package/dist/components/iconbutton/README.md +2 -0
- package/dist/components/kpiitem/KpiItem.js +2 -2
- package/dist/components/kpiitem/KpiItem.js.map +1 -1
- package/dist/components/kpiitem/KpiItem.stories.d.ts +1 -0
- package/dist/components/kpiitem/KpiItem.stories.d.ts.map +1 -1
- package/dist/components/kpiitem/KpiItem.stories.js +2 -0
- package/dist/components/kpiitem/KpiItem.svelte +4 -5
- package/dist/components/kpiitem/KpiItem.svelte.d.ts +1 -0
- package/dist/components/kpiitem/KpiItem.svelte.d.ts.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +1 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +1 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +3 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts +1 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +1 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +1 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +3 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts +1 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts.map +1 -1
- package/dist/components/link/Link.js +2 -2
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/link/Link.stories.d.ts +3 -0
- package/dist/components/link/Link.stories.d.ts.map +1 -1
- package/dist/components/link/Link.stories.js +6 -3
- package/dist/components/link/Link.svelte +40 -8
- package/dist/components/link/Link.svelte.d.ts +10 -0
- package/dist/components/link/Link.svelte.d.ts.map +1 -1
- package/dist/components/link/README.md +2 -1
- package/dist/components/loader/Loader.js +2 -2
- package/dist/components/loader/Loader.js.map +1 -1
- package/dist/components/loader/Loader.stories.d.ts +1 -0
- package/dist/components/loader/Loader.stories.d.ts.map +1 -1
- package/dist/components/loader/Loader.stories.js +1 -0
- package/dist/components/loader/Loader.svelte +3 -1
- package/dist/components/loader/Loader.svelte.d.ts +1 -0
- package/dist/components/loader/Loader.svelte.d.ts.map +1 -1
- package/dist/components/loadingoverlay/LoadingOverlay.js +2 -2
- package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -1
- package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +1 -0
- package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -1
- package/dist/components/loadingoverlay/LoadingOverlay.stories.js +2 -1
- package/dist/components/loadingoverlay/LoadingOverlay.svelte +11 -3
- package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts +1 -0
- package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +2 -2
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.stories.d.ts +5 -2
- package/dist/components/modal/Modal.stories.d.ts.map +1 -1
- package/dist/components/modal/Modal.stories.js +7 -4
- package/dist/components/modal/Modal.svelte +63 -8
- package/dist/components/modal/Modal.svelte.d.ts +18 -0
- package/dist/components/modal/Modal.svelte.d.ts.map +1 -1
- package/dist/components/modal/README.md +4 -0
- package/dist/components/numberbadge/NumberBadge.js +2 -2
- package/dist/components/numberbadge/NumberBadge.js.map +1 -1
- package/dist/components/numberbadge/NumberBadge.stories.d.ts +1 -0
- package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
- package/dist/components/numberbadge/NumberBadge.stories.js +1 -0
- package/dist/components/numberbadge/NumberBadge.svelte +6 -2
- package/dist/components/numberbadge/NumberBadge.svelte.d.ts +1 -0
- package/dist/components/numberbadge/NumberBadge.svelte.d.ts.map +1 -1
- package/dist/components/overlay/Overlay.js +2 -2
- package/dist/components/overlay/Overlay.js.map +1 -1
- package/dist/components/overlay/Overlay.stories.d.ts +1 -0
- package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
- package/dist/components/overlay/Overlay.stories.js +2 -1
- package/dist/components/overlay/Overlay.svelte +19 -3
- package/dist/components/overlay/Overlay.svelte.d.ts +5 -0
- package/dist/components/overlay/Overlay.svelte.d.ts.map +1 -1
- package/dist/components/overlay/README.md +1 -0
- package/dist/components/pagination/Pagination.js +8 -8
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/Pagination.stories.d.ts +1 -0
- package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.stories.js +2 -1
- package/dist/components/pagination/Pagination.svelte +16 -6
- package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
- package/dist/components/passwordinput/PasswordInput.js +4 -3
- package/dist/components/passwordinput/PasswordInput.js.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.d.ts +1 -0
- package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.js +5 -4
- package/dist/components/passwordinput/PasswordInput.svelte +9 -0
- package/dist/components/passwordinput/PasswordInput.svelte.d.ts +1 -0
- package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
- package/dist/components/phonenumber/PhoneNumber.js +22 -0
- package/dist/components/phonenumber/PhoneNumber.js.map +1 -0
- package/dist/components/phonenumber/PhoneNumber.spec.js +103 -0
- package/dist/components/phonenumber/PhoneNumber.stories.d.ts +14 -0
- package/dist/components/phonenumber/PhoneNumber.stories.d.ts.map +1 -0
- package/dist/components/phonenumber/PhoneNumber.stories.js +122 -0
- package/dist/components/phonenumber/PhoneNumber.svelte +905 -0
- package/dist/components/phonenumber/PhoneNumber.svelte.d.ts +61 -0
- package/dist/components/phonenumber/PhoneNumber.svelte.d.ts.map +1 -0
- package/dist/components/phonenumber/README.md +27 -0
- 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 -0
- package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
- package/dist/components/pincode/Pincode.stories.js +4 -3
- package/dist/components/pincode/Pincode.svelte +12 -2
- package/dist/components/pincode/Pincode.svelte.d.ts.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.js +2 -2
- package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.stories.d.ts +1 -0
- package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.stories.js +4 -3
- package/dist/components/quantityselector/QuantitySelector.svelte +11 -2
- package/dist/components/quantityselector/QuantitySelector.svelte.d.ts +1 -0
- package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
- package/dist/components/radio/Radio.js +2 -2
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/radio/Radio.stories.d.ts +1 -0
- package/dist/components/radio/Radio.stories.d.ts.map +1 -1
- package/dist/components/radio/Radio.stories.js +4 -3
- package/dist/components/radio/Radio.svelte +13 -1
- package/dist/components/radio/Radio.svelte.d.ts +1 -0
- package/dist/components/radio/Radio.svelte.d.ts.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.stories.d.ts +1 -0
- package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
- package/dist/components/radiogroup/RadioGroup.stories.js +3 -2
- package/dist/components/radiogroup/RadioGroup.svelte +2 -0
- package/dist/components/radiogroup/RadioGroup.svelte.d.ts.map +1 -1
- package/dist/components/segmentedcontrol/SegmentedControl.js +2 -2
- package/dist/components/segmentedcontrol/SegmentedControl.js.map +1 -1
- package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts +1 -0
- package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts.map +1 -1
- package/dist/components/segmentedcontrol/SegmentedControl.stories.js +3 -1
- package/dist/components/segmentedcontrol/SegmentedControl.svelte +8 -1
- package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts.map +1 -1
- package/dist/components/select/Select.js +2 -2
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.stories.d.ts +1 -0
- package/dist/components/select/Select.stories.d.ts.map +1 -1
- package/dist/components/select/Select.stories.js +4 -3
- package/dist/components/select/Select.svelte +6 -0
- package/dist/components/select/Select.svelte.d.ts +1 -0
- package/dist/components/select/Select.svelte.d.ts.map +1 -1
- package/dist/components/starrating/README.md +22 -0
- package/dist/components/starrating/StarRating.js +4 -0
- package/dist/components/starrating/StarRating.js.map +1 -0
- package/dist/components/starrating/StarRating.spec.js +108 -0
- package/dist/components/starrating/StarRating.stories.d.ts +14 -0
- package/dist/components/starrating/StarRating.stories.d.ts.map +1 -0
- package/dist/components/starrating/StarRating.stories.js +83 -0
- package/dist/components/starrating/StarRating.svelte +230 -0
- package/dist/components/starrating/StarRating.svelte.d.ts +47 -0
- package/dist/components/starrating/StarRating.svelte.d.ts.map +1 -0
- package/dist/components/statusbadge/StatusBadge.js +2 -2
- package/dist/components/statusbadge/StatusBadge.js.map +1 -1
- package/dist/components/statusbadge/StatusBadge.stories.d.ts +1 -0
- package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
- package/dist/components/statusbadge/StatusBadge.stories.js +1 -0
- package/dist/components/statusbadge/StatusBadge.svelte +3 -2
- package/dist/components/statusbadge/StatusBadge.svelte.d.ts +1 -0
- package/dist/components/statusbadge/StatusBadge.svelte.d.ts.map +1 -1
- package/dist/components/statusdot/StatusDot.js +2 -2
- package/dist/components/statusdot/StatusDot.js.map +1 -1
- package/dist/components/statusdot/StatusDot.stories.d.ts +1 -0
- package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
- package/dist/components/statusdot/StatusDot.stories.js +1 -0
- package/dist/components/statusdot/StatusDot.svelte +6 -2
- package/dist/components/statusdot/StatusDot.svelte.d.ts +1 -0
- package/dist/components/statusdot/StatusDot.svelte.d.ts.map +1 -1
- package/dist/components/statusmessage/StatusMessage.js +2 -2
- package/dist/components/statusmessage/StatusMessage.js.map +1 -1
- package/dist/components/statusmessage/StatusMessage.stories.d.ts +1 -0
- package/dist/components/statusmessage/StatusMessage.stories.d.ts.map +1 -1
- package/dist/components/statusmessage/StatusMessage.stories.js +1 -0
- package/dist/components/statusmessage/StatusMessage.svelte +12 -9
- package/dist/components/statusmessage/StatusMessage.svelte.d.ts +1 -0
- package/dist/components/statusmessage/StatusMessage.svelte.d.ts.map +1 -1
- package/dist/components/statusnotification/README.md +1 -0
- 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 +4 -0
- package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
- package/dist/components/statusnotification/StatusNotification.stories.js +5 -1
- package/dist/components/statusnotification/StatusNotification.svelte +35 -15
- package/dist/components/statusnotification/StatusNotification.svelte.d.ts +6 -0
- package/dist/components/statusnotification/StatusNotification.svelte.d.ts.map +1 -1
- package/dist/components/stepperbottombar/README.md +24 -0
- package/dist/components/stepperbottombar/StepperBottomBar.js +12 -0
- package/dist/components/stepperbottombar/StepperBottomBar.js.map +1 -0
- package/dist/components/stepperbottombar/StepperBottomBar.spec.js +106 -0
- package/dist/components/stepperbottombar/StepperBottomBar.stories.d.ts +9 -0
- package/dist/components/stepperbottombar/StepperBottomBar.stories.d.ts.map +1 -0
- package/dist/components/stepperbottombar/StepperBottomBar.stories.js +74 -0
- package/dist/components/stepperbottombar/StepperBottomBar.svelte +532 -0
- package/dist/components/stepperbottombar/StepperBottomBar.svelte.d.ts +41 -0
- package/dist/components/stepperbottombar/StepperBottomBar.svelte.d.ts.map +1 -0
- package/dist/components/steppercompact/StepperCompact.js +2 -2
- package/dist/components/steppercompact/StepperCompact.js.map +1 -1
- package/dist/components/steppercompact/StepperCompact.stories.d.ts +1 -0
- package/dist/components/steppercompact/StepperCompact.stories.d.ts.map +1 -1
- package/dist/components/steppercompact/StepperCompact.stories.js +1 -0
- package/dist/components/stepperinline/README.md +11 -0
- package/dist/components/stepperinline/StepperInline.js +16 -0
- package/dist/components/stepperinline/StepperInline.js.map +1 -0
- package/dist/components/stepperinline/StepperInline.spec.js +83 -0
- package/dist/components/stepperinline/StepperInline.stories.d.ts +7 -0
- package/dist/components/stepperinline/StepperInline.stories.d.ts.map +1 -0
- package/dist/components/stepperinline/StepperInline.stories.js +23 -0
- package/dist/components/stepperinline/StepperInline.svelte +176 -0
- package/dist/components/stepperinline/StepperInline.svelte.d.ts +27 -0
- package/dist/components/stepperinline/StepperInline.svelte.d.ts.map +1 -0
- package/dist/components/tab/README.md +3 -1
- package/dist/components/tab/Tab.js +2 -2
- package/dist/components/tab/Tab.js.map +1 -1
- package/dist/components/tab/Tab.svelte +48 -16
- package/dist/components/tab/Tab.svelte.d.ts +9 -0
- package/dist/components/tab/Tab.svelte.d.ts.map +1 -1
- package/dist/components/tabs/README.md +1 -0
- package/dist/components/tabs/Tabs.js +2 -2
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/Tabs.stories.d.ts +3 -0
- package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.stories.js +5 -2
- package/dist/components/tabs/Tabs.svelte +21 -4
- package/dist/components/tabs/Tabs.svelte.d.ts +5 -0
- package/dist/components/tabs/Tabs.svelte.d.ts.map +1 -1
- package/dist/components/tag/README.md +1 -0
- package/dist/components/tag/Tag.js +2 -2
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/tag/Tag.stories.d.ts +1 -0
- package/dist/components/tag/Tag.stories.d.ts.map +1 -1
- package/dist/components/tag/Tag.stories.js +3 -2
- package/dist/components/tag/Tag.svelte +46 -13
- package/dist/components/tag/Tag.svelte.d.ts +6 -0
- package/dist/components/tag/Tag.svelte.d.ts.map +1 -1
- 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 -0
- package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.stories.js +4 -3
- package/dist/components/textarea/Textarea.svelte +14 -1
- package/dist/components/textarea/Textarea.svelte.d.ts +1 -0
- package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
- package/dist/components/textinput/README.md +1 -0
- package/dist/components/textinput/Textinput.js +2 -2
- package/dist/components/textinput/Textinput.js.map +1 -1
- package/dist/components/textinput/Textinput.spec.js +4 -1
- package/dist/components/textinput/Textinput.stories.d.ts +1 -0
- package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
- package/dist/components/textinput/Textinput.stories.js +5 -4
- package/dist/components/textinput/Textinput.svelte +26 -2
- package/dist/components/textinput/Textinput.svelte.d.ts +6 -0
- package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
- package/dist/components/toaster/README.md +1 -0
- package/dist/components/toaster/Toaster.js +2 -2
- package/dist/components/toaster/Toaster.js.map +1 -1
- package/dist/components/toaster/Toaster.stories.d.ts +3 -0
- package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
- package/dist/components/toaster/Toaster.stories.js +4 -1
- package/dist/components/toaster/Toaster.svelte +34 -11
- package/dist/components/toaster/Toaster.svelte.d.ts +6 -0
- package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +2 -2
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/Toggle.stories.d.ts +1 -0
- package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.stories.js +3 -2
- package/dist/components/toggle/Toggle.svelte +20 -2
- package/dist/components/toggle/Toggle.svelte.d.ts +1 -0
- package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.js +2 -2
- package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.stories.d.ts +1 -0
- package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.stories.js +2 -1
- package/dist/components/togglegroup/ToggleGroup.svelte +1 -0
- package/dist/components/togglegroup/ToggleGroup.svelte.d.ts.map +1 -1
- 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.stories.d.ts +1 -0
- package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.stories.js +2 -1
- package/dist/components/tooltip/Tooltip.svelte +21 -3
- package/dist/components/tooltip/Tooltip.svelte.d.ts +6 -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/documentation/{WebComponents/usingPresets.mdx → BrandPresets.mdx} +2 -24
- package/dist/documentation/Changelog.mdx +19 -0
- package/dist/documentation/Color.mdx +224 -0
- package/dist/documentation/Contributing.mdx +11 -5
- package/dist/documentation/GettingStarted.mdx +76 -0
- package/dist/documentation/Icon.stories.d.ts +10 -0
- package/dist/documentation/Icon.stories.d.ts.map +1 -0
- package/dist/documentation/Icon.stories.js +138 -0
- package/dist/documentation/Migration.mdx +5 -5
- package/dist/documentation/Welcome.mdx +52 -0
- package/dist/each.js +1 -1
- package/dist/each.js.map +1 -1
- package/dist/if.js +1 -1
- package/dist/if.js.map +1 -1
- package/dist/index-client.js +2 -0
- package/dist/index-client.js.map +1 -0
- package/dist/input.js +1 -1
- package/dist/input.js.map +1 -1
- package/dist/main.d.ts +11 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +11 -1
- package/dist/slot.js +1 -1
- package/dist/slot.js.map +1 -1
- package/dist/snippet.js +2 -0
- package/dist/snippet.js.map +1 -0
- package/dist/svelte-component.js +1 -1
- package/dist/svelte-element.js +2 -0
- package/dist/svelte-element.js.map +1 -0
- package/dist/this.js +1 -1
- package/dist/this.js.map +1 -1
- package/package.json +22 -22
- package/dist/Cross20.js +0 -2
- package/dist/Cross20.js.map +0 -1
- package/dist/Cross24.js +0 -2
- package/dist/Cross24.js.map +0 -1
- package/dist/CrossCircleFilled24.js +0 -2
- package/dist/CrossCircleFilled24.js.map +0 -1
- package/dist/documentation/Introduction.mdx +0 -109
- package/dist/documentation/SupportAndOnboarding.mdx +0 -70
- package/dist/documentation/Svelte/Introduction.mdx +0 -76
- package/dist/documentation/Svelte/usingIcons.mdx +0 -98
- package/dist/documentation/Svelte/usingPresets.mdx +0 -134
- package/dist/documentation/WebComponents/Introduction.mdx +0 -52
- package/dist/documentation/WebComponents/usingIcons.mdx +0 -81
- package/dist/legacy.js +0 -2
- package/dist/legacy.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.js","sources":["../../../src/components/field/Field.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-field',\n }}\n/>\n\n<script lang=\"ts\">\n import Loader from '../loader/Loader.svelte';\n\n /**\n * A field label is a text element that identifies the purpose of an input field, providing users with clear guidance on what information to enter. It is typically placed above the input field and may include indicators for required or optional fields. Field Labels improve form usability, accessibility, and data entry accuracy by ensuring users understand the expected input.\n *\n * @slot default - Use this slot to insert the form element of your choice\n */\n interface Props {\n /**\n * A unique identifier for the form field, used to associate the label with the form element.\n */\n id: string;\n /**\n * The text displayed as the label for the form field.\n */\n label: string;\n /**\n * Additional text displayed alongside the label, typically used to indicate if the form field is required or optional\n */\n requirementtext?: string;\n /**\n * Text shown below the form field to provide additional context or instructions for the user.\n */\n helptext?: string;\n /**\n * The value of the `id` attribute set on the **helpText** element. _This value is mandatory when using a helpText in order to guarantee the accessibility of the component._\n */\n helpid?: string;\n /**\n * If `true`, applies a valid state to the form field.\n */\n isvalid?: boolean;\n /**\n * If `true`, applies an invalid state to the form field.\n */\n isinvalid?: boolean;\n /**\n * If `true`, applies a loading state to the form field.\n */\n isloading?: boolean;\n /**\n * The value of the `id` attribute set on the **validationMessage** element. _This value is mandatory when using a validationMessage in order to guarantee the accessibility of the component._\n */\n messageid?: string;\n /**\n * message displayed when the form field has a valid or invalid state, usually indicating validation or errors.\n */\n message?: string;\n }\n\n let {\n id,\n label,\n requirementtext,\n helpid,\n helptext,\n messageid,\n message,\n isinvalid,\n isvalid,\n isloading,\n }: Props = $props();\n</script>\n\n<div class=\"mc-field\">\n <label for={id} class=\"mc-field__label\">\n {label}\n {#if requirementtext}\n <span class=\"mc-field__requirement\" aria-hidden=\"true\">\n {requirementtext}\n </span>\n {/if}\n </label>\n\n {#if helpid && helptext}\n <span id={helpid} class=\"mc-field__help\">\n {helptext}\n </span>\n {/if}\n\n <div class=\"mc-field__content\">\n <slot />\n </div>\n\n {#if isinvalid || isvalid || isloading}\n <span\n id={messageid}\n class={['mc-field__validation-message', isvalid && 'is-valid', isinvalid && 'is-invalid']}\n >\n {#if isloading}\n <Loader size=\"xs\" />\n {/if}\n {message}\n </span>\n {/if}\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/field';\n</style>\n"],"names":["id","$.prop","$$props","label","requirementtext","helpid","helptext","messageid","message","isinvalid","isvalid","isloading","$$render","consequent","consequent_1","consequent_2","consequent_3"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Field.js","sources":["../../../src/components/field/Field.svelte"],"sourcesContent":["<svelte:options\n customElement={{\n tag: 'm-field',\n props: {\n isinvalid: { reflect: true, type: 'Boolean', attribute: 'isinvalid' },\n isvalid: { reflect: true, type: 'Boolean', attribute: 'isvalid' },\n isloading: { reflect: true, type: 'Boolean', attribute: 'isloading' },\n },\n }}\n/>\n\n<script lang=\"ts\">\n import type { Snippet } from 'svelte';\n import Loader from '../loader/Loader.svelte';\n\n /**\n * A field label is a text element that identifies the purpose of an input field, providing users with clear guidance on what information to enter. It is typically placed above the input field and may include indicators for required or optional fields. Field Labels improve form usability, accessibility, and data entry accuracy by ensuring users understand the expected input.\n *\n * @slot default - Use this slot to insert the form element of your choice\n */\n interface Props {\n /**\n * A unique identifier for the form field, used to associate the label with the form element.\n */\n id: string;\n /**\n * The text displayed as the label for the form field.\n */\n label: string;\n /**\n * Additional text displayed alongside the label, typically used to indicate if the form field is required or optional\n */\n requirementtext?: string;\n /**\n * Text shown below the form field to provide additional context or instructions for the user.\n */\n helptext?: string;\n /**\n * The value of the `id` attribute set on the **helpText** element. _This value is mandatory when using a helpText in order to guarantee the accessibility of the component._\n */\n helpid?: string;\n /**\n * If `true`, applies a valid state to the form field.\n */\n isvalid?: boolean;\n /**\n * If `true`, applies an invalid state to the form field.\n */\n isinvalid?: boolean;\n /**\n * If `true`, applies a loading state to the form field.\n */\n isloading?: boolean;\n /**\n * The value of the `id` attribute set on the **validationMessage** element. _This value is mandatory when using a validationMessage in order to guarantee the accessibility of the component._\n */\n messageid?: string;\n /**\n * message displayed when the form field has a valid or invalid state, usually indicating validation or errors.\n */\n message?: string;\n /**\n * Use this snippet to insert the form element of your choice\n */\n children?: Snippet;\n }\n\n let {\n id,\n label,\n requirementtext,\n helpid,\n helptext,\n messageid,\n message,\n isinvalid,\n isvalid,\n isloading,\n children,\n }: Props = $props();\n</script>\n\n<div class=\"mc-field\">\n <label for={id} class=\"mc-field__label\">\n {label}\n {#if requirementtext}\n <span class=\"mc-field__requirement\" aria-hidden=\"true\">\n {requirementtext}\n </span>\n {/if}\n </label>\n\n {#if helpid && helptext}\n <span id={helpid} class=\"mc-field__help\">\n {helptext}\n </span>\n {/if}\n\n <div class=\"mc-field__content\">\n {#if children}\n {@render children()}\n {:else}\n <slot />\n {/if}\n </div>\n\n {#if isinvalid || isvalid || isloading}\n <span\n id={messageid}\n class={['mc-field__validation-message', isvalid && 'is-valid', isinvalid && 'is-invalid']}\n >\n {#if isloading}\n <Loader size=\"xs\" />\n {/if}\n {message}\n </span>\n {/if}\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/field';\n</style>\n"],"names":["id","$.prop","$$props","label","requirementtext","helpid","helptext","messageid","message","isinvalid","isvalid","isloading","children","div","root","label_1","span","root_1","$$render","consequent","span_1","root_2","$.set_attribute","consequent_1","div_1","$.sibling","node_1","consequent_2","alternate","span_2","root_5","node_6","$.child","Loader","$$anchor","consequent_3","$.reset","$.append","consequent_4"],"mappings":";;;;;2DAWA,qBAyDIA,EAAEC,EAAAC,EAAA,KAAA,CAAA,EACFC,EAAKF,EAAAC,EAAA,QAAA,CAAA,EACLE,EAAeH,EAAAC,EAAA,kBAAA,CAAA,EACfG,EAAMJ,EAAAC,EAAA,SAAA,CAAA,EACNI,EAAQL,EAAAC,EAAA,WAAA,CAAA,EACRK,EAASN,EAAAC,EAAA,YAAA,CAAA,EACTM,EAAOP,EAAAC,EAAA,UAAA,CAAA,EACPO,EAASR,EAAAC,EAAA,YAAA,CAAA,EACTQ,EAAOT,EAAAC,EAAA,UAAA,CAAA,EACPS,EAASV,EAAAC,EAAA,YAAA,CAAA,EACTU,EAAQX,EAAAC,EAAA,WAAA,CAAA,2kBAIXW,EAAGC,GAAA,EACDC,IADFF,CAAG,MACDE,CAAK,wBAGDC,EAAIC,GAAA,MAAJD,EAAI,EAAA,IAAJA,CAAI,YACFZ,EAAe,CAAA,CAAA,MADjBY,CAAI,WADFZ,EAAe,GAAAc,EAAAC,CAAA,MAFrBJ,CAAK,UAALA,EAAK,CAAA,iBAUHK,EAAIC,GAAA,MAAJD,EAAI,EAAA,IAAJA,CAAI,SAAJE,EAAAF,OAASf,GAAM,MACbC,GAAQ,QADVc,CAAI,WADFf,EAAM,GAAIC,KAAQY,EAAAK,CAAA,QAMtBC,EAAGC,EAAAC,EAAA,CAAA,MAAHF,CAAG,kCAESZ,CAAQ,0EADdA,EAAQ,EAAAM,EAAAS,CAAA,EAAAT,EAAAU,EAAA,EAAA,MADdJ,CAAG,UAAHA,EAAG,CAAA,aASD,IAAAK,EAAAC,GAAA,EAAAC,EAAAC,EAAAH,CAAA,aAKII,GAAMC,EAAA,CAAA,KAAA,IAAA,CAAA,WADJvB,EAAS,GAAAO,EAAAiB,CAAA,eAJfC,EAAAP,CAAA,SAAAP,EAAAO,EAAA,KACKtB,GAAS,IADdsB,OAES,+BAAgCnB,EAAO,GAAI,WAAYD,KAAa,yCAK3ED,EAAO,GAAA,EAAA,EAAA,IAPT6B,EAAAH,EAAAL,CAAA,YADEpB,EAAS,GAAIC,EAAO,GAAIC,EAAS,IAAAO,EAAAoB,CAAA,aAxBvCzB,CAAG,SACDS,EAAAP,QAAWf,GAAE,SACXG,EAAK,GAAA,EAAA,GAAA,QAFTU,CAAG,MAFI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.stories.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"Field.stories.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,gBAAgB,CAAC;AACxB,OAAO,+BAA+B,CAAC;AAEvC,QAAA,MAAM,IAAI,EAAE,IA6BX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,KAAK,EAAE,KAWnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAavB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KAexB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAgB1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAa1B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
2
|
import { ifDefined } from 'lit-html/directives/if-defined.js';
|
|
3
3
|
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
4
|
+
import './Field.svelte';
|
|
5
|
+
import '../textinput/Textinput.svelte';
|
|
4
6
|
const meta = {
|
|
5
7
|
title: 'Form Elements/Field',
|
|
6
8
|
component: 'm-field',
|
|
@@ -21,9 +23,9 @@ const meta = {
|
|
|
21
23
|
requirementtext=${ifDefined(args.requirementtext)}
|
|
22
24
|
helptext=${ifDefined(args.helptext)}
|
|
23
25
|
helpid=${ifDefined(args.helpid)}
|
|
24
|
-
isvalid=${
|
|
25
|
-
isinvalid=${
|
|
26
|
-
isloading=${
|
|
26
|
+
?isvalid=${args.isvalid}
|
|
27
|
+
?isinvalid=${args.isinvalid}
|
|
28
|
+
?isloading=${args.isloading}
|
|
27
29
|
messageid=${ifDefined(args.messageid)}
|
|
28
30
|
message=${ifDefined(args.message)}
|
|
29
31
|
>
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
<svelte:options
|
|
2
2
|
customElement={{
|
|
3
3
|
tag: 'm-field',
|
|
4
|
+
props: {
|
|
5
|
+
isinvalid: { reflect: true, type: 'Boolean', attribute: 'isinvalid' },
|
|
6
|
+
isvalid: { reflect: true, type: 'Boolean', attribute: 'isvalid' },
|
|
7
|
+
isloading: { reflect: true, type: 'Boolean', attribute: 'isloading' },
|
|
8
|
+
},
|
|
4
9
|
}}
|
|
5
10
|
/>
|
|
6
11
|
|
|
7
12
|
<script lang="ts">
|
|
13
|
+
import type { Snippet } from 'svelte';
|
|
8
14
|
import Loader from '../loader/Loader.svelte';
|
|
9
15
|
|
|
10
16
|
/**
|
|
@@ -53,6 +59,10 @@
|
|
|
53
59
|
* message displayed when the form field has a valid or invalid state, usually indicating validation or errors.
|
|
54
60
|
*/
|
|
55
61
|
message?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Use this snippet to insert the form element of your choice
|
|
64
|
+
*/
|
|
65
|
+
children?: Snippet;
|
|
56
66
|
}
|
|
57
67
|
|
|
58
68
|
let {
|
|
@@ -66,6 +76,7 @@
|
|
|
66
76
|
isinvalid,
|
|
67
77
|
isvalid,
|
|
68
78
|
isloading,
|
|
79
|
+
children,
|
|
69
80
|
}: Props = $props();
|
|
70
81
|
</script>
|
|
71
82
|
|
|
@@ -86,7 +97,11 @@
|
|
|
86
97
|
{/if}
|
|
87
98
|
|
|
88
99
|
<div class="mc-field__content">
|
|
89
|
-
|
|
100
|
+
{#if children}
|
|
101
|
+
{@render children()}
|
|
102
|
+
{:else}
|
|
103
|
+
<slot />
|
|
104
|
+
{/if}
|
|
90
105
|
</div>
|
|
91
106
|
|
|
92
107
|
{#if isinvalid || isvalid || isloading}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
1
2
|
/**
|
|
2
3
|
* A field label is a text element that identifies the purpose of an input field, providing users with clear guidance on what information to enter. It is typically placed above the input field and may include indicators for required or optional fields. Field Labels improve form usability, accessibility, and data entry accuracy by ensuring users understand the expected input.
|
|
3
4
|
*
|
|
@@ -44,6 +45,10 @@ interface Props {
|
|
|
44
45
|
* message displayed when the form field has a valid or invalid state, usually indicating validation or errors.
|
|
45
46
|
*/
|
|
46
47
|
message?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Use this snippet to insert the form element of your choice
|
|
50
|
+
*/
|
|
51
|
+
children?: Snippet;
|
|
47
52
|
}
|
|
48
53
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
49
54
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Field.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIpC;;;;GAIG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAoEH,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AACD,KAAK,gCAAgC,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,GACvD,CAAC,KAAK,SAAS;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,GACzB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACnC,GAAG,GACH;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAClB,EAAE,CAAC,CAAC;AAId,QAAA,MAAM,KAAK;;;;;;UAAqF,CAAC;AAC/E,KAAK,KAAK,GAAG,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC;AAC1C,eAAe,KAAK,CAAC"}
|
|
@@ -16,6 +16,7 @@ A field label is a text element that identifies the purpose of an input field, p
|
|
|
16
16
|
| `isloading` | If `true`, applies a loading state to the form field. | `boolean` | |
|
|
17
17
|
| `messageid` | The value of the `id` attribute set on the **validationMessage** element. _This value is mandatory when using a validationMessage in order to guarantee the accessibility of the component._ | `string` | |
|
|
18
18
|
| `message` | message displayed when the form field has a valid or invalid state, usually indicating validation or errors. | `string` | |
|
|
19
|
+
| `children` | Use this snippet to insert the form element of your choice | `Snippet` | |
|
|
19
20
|
|
|
20
21
|
## Slots
|
|
21
22
|
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{u as Ae,c as Ie,p as Me,a as Se,b as l,A as Ve,q as n,s as k,t as V,B,f as u,g as Be,x as L,h as le,d as h,v as O,aJ as ue,j as a,w as ce,l as P,r as c,e as y,n as fe,o as me,k as ee,aI as be}from"../../custom-element.js";import{i as ve}from"../../if.js";import{e as Le,i as Oe}from"../../each.js";import{s as te}from"../../slot.js";import{s as re}from"../../attributes.js";import{b as he}from"../../this.js";import{F as Pe}from"../fileuploaderitem/FileUploaderItem.js";import{U as qe}from"../../Condition20.js";import"../../svelte-component.js";import"../button/Button.js";import"../../snippet.js";import"../loader/Loader.js";import"../divider/Divider.js";var Je=le('<span class="mc-file-uploader__input-title svelte-1hihzzl"> </span> <span class="mc-file-uploader__input-subtitle svelte-1hihzzl"> </span>',1),Ke=le('<div class="mc-file-uploader__files-list svelte-1hihzzl"></div>'),Ne=le('<div><div class="mc-file-uploader__container"><input type="file" aria-label="File input" class="mc-file-uploader__hidden-input svelte-1hihzzl"/> <div tabindex="0" role="button"><!> <div class="mc-button mc-button--outlined mc-file-uploader__button svelte-1hihzzl"><!> <span class="mc-button__label svelte-1hihzzl"> </span></div></div></div> <!></div>');const Te={hash:"svelte-1hihzzl",code:`/**
|
|
2
|
+
* Do not edit directly, this file was auto-generated.
|
|
3
|
+
*/.mc-file-uploader.svelte-1hihzzl {display:flex;flex-direction:column;gap:1rem;width:18rem;}.mc-file-uploader__files-list.svelte-1hihzzl {display:flex;flex-direction:column;gap:1rem;}.mc-file-uploader__hidden-input.svelte-1hihzzl {clip-path:inset(100%);clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;padding:0;width:1px;}.mc-file-uploader__input.svelte-1hihzzl {display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:0.5rem;line-height:var(--line-height-s, 1.3);font-weight:var(--font-weight-semi-bold, 600);border-radius:var(--border-radius-m, 0.5rem);color:var(--file-uploader-color-drag-and-drop-text-default, #242938);}.mc-file-uploader__input.svelte-1hihzzl .mc-file-uploader__button:where(.svelte-1hihzzl) {width:100%;}.mc-file-uploader__input--disabled.svelte-1hihzzl .mc-file-uploader__button.mc-button.mc-button--outlined:where(.svelte-1hihzzl) {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-file-uploader__input-title.svelte-1hihzzl {height:1.125rem;font-size:var(--font-size-150, 1rem);}.mc-file-uploader__input-subtitle.svelte-1hihzzl {height:1.125rem;font-size:var(--font-size-100, 0.875rem);}.mc-file-uploader--draggable.svelte-1hihzzl {width:25rem;}.mc-file-uploader--draggable.svelte-1hihzzl .mc-file-uploader__input:where(.svelte-1hihzzl) {padding:2rem;outline:0.125rem dashed var(--file-uploader-color-drag-and-drop-border-default, #464e63);display:flex;}.mc-file-uploader--draggable.svelte-1hihzzl .mc-file-uploader__input--disabled:where(.svelte-1hihzzl) {outline-color:var(--file-uploader-color-drag-and-drop-border-disabled, #b3b3b3);color:var(--file-uploader-color-drag-and-drop-text-disabled, #b3b3b3);cursor:not-allowed;}.mc-file-uploader--draggable.svelte-1hihzzl .mc-file-uploader__input--dragged:where(.svelte-1hihzzl) {outline-width:0.25rem;}.mc-button.svelte-1hihzzl {color:var(--button-color-filled-standard-font, #ffffff);background-color:var(--button-color-filled-standard-background, #464e63);}.mc-button.svelte-1hihzzl:hover {background-color:var(--button-color-filled-standard-hover-background, #343b4c);}.mc-button.svelte-1hihzzl:active {background-color:var(--button-color-filled-standard-active-background, #242938);}.mc-button.svelte-1hihzzl:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button.svelte-1hihzzl {font-weight:var(--font-weight-semi-bold, 600);padding:0 calc(1rem - 0.125rem);min-height:3rem;min-width:3rem;}.mc-button.svelte-1hihzzl .mc-button__label:where(.svelte-1hihzzl) {font-size:var(--font-size-150, 1rem);}.mc-button.svelte-1hihzzl {display:inline-flex;justify-content:center;vertical-align:middle;text-align:center;border:2px solid transparent;border-radius:var(--button-border-radius-s, 0.25rem);transition:all ease 200ms;transition:box-shadow 200ms ease;align-items:center;box-sizing:border-box;font-family:inherit;fill:currentcolor;gap:0.25rem;cursor:pointer;}.mc-button__label.svelte-1hihzzl {font-size:var(--font-size-150, 1rem);}.mc-button.svelte-1hihzzl:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}.mc-button.svelte-1hihzzl: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-button--outlined.svelte-1hihzzl {color:var(--button-color-outlined-standard-font, #242938);border-color:var(--button-color-outlined-standard-border, #8891aa);background-color:var(--button-color-outlined-standard-background, #ffffff);}.mc-button--outlined.svelte-1hihzzl:hover {background-color:var(--button-color-outlined-standard-hover-background, #eff1f6);}.mc-button--outlined.svelte-1hihzzl:active {background-color:var(--button-color-outlined-standard-active-background, #c9d0de);}.mc-button--outlined.svelte-1hihzzl:disabled {background-color:var(--button-state-disabled-background, #d9d9d9);border-color:transparent;color:var(--button-state-disabled-color, #737373);cursor:not-allowed;}`};function Ge(ae,t){Me(t,!0),Se(ae,Te);let i=l(t,"files",15),q=l(t,"accept",7),g=l(t,"multiple",7),D=l(t,"allowedextensions",7),E=l(t,"maxsize",7),J=l(t,"rules",7),f=l(t,"hasdragdrop",7,!0),K=l(t,"showfileslist",7,!0),m=l(t,"disabled",7),N=l(t,"title",7,"Drag & drop"),T=l(t,"subtitle",7,"or"),G=l(t,"uploadbuttonlabel",7,"Upload file(s)"),H=l(t,"format",7,"inline"),Q=l(t,"errormessage",7),R=l(t,"deletebuttonlabel",7),F=l(t,"information",7),W=l(t,"onvalidation",7),X=l(t,"onfilesupdate",7),U,C=L(()=>pe(i())),j,A=ce(!1),I=ce(0);function pe(e=[]){const r={};return e.forEach(o=>{const v=o.name.split(".").pop()?.toLowerCase()||"";r[o.name]={size:E()&&o.size?o.size<=E():!0,extension:D()?D().includes(v):!0,customValidation:J()?.every(p=>p(o))??!0}}),r}Ve(()=>{X()?.(i());const e=new CustomEvent("files-update",{detail:i(),bubbles:!0,composed:!0});if(U.dispatchEvent(e),i()?.length>0){W()?.(n(C));const r=new CustomEvent("validation",{detail:n(C),bubbles:!0,composed:!0});U.dispatchEvent(r)}});function ge(e){f()&&(e.preventDefault(),ue(I),O(A,!0))}function ze(e){f()&&(e.preventDefault(),ue(I,-1),n(I)===0&&O(A,!1))}function oe(e){return i()?.every(r=>r.name!==e.name)}function _e(e){const r=e.target,o=Array.from(r.files||[]).filter(oe);if(!o.length){r.value="";return}i(g()?[...i(),...o]:o.slice(0,1)),r.value=""}function xe(e){e.preventDefault()}function we(e){if(!f()||(e.preventDefault(),e.stopPropagation(),O(I,0),O(A,!1),m()))return;const r=Array.from(e.dataTransfer?.files||[]).filter(oe);r.length&&i(g()?[...i(),...r]:[r[0]])}function ke(e){(e.key===" "||e.key==="Enter")&&(e.preventDefault(),j.click())}function ye(e){i(i()?.filter((r,o)=>o!==e))}function De(e){return Object.values(n(C)[e.name]??{}).every(Boolean)}var Ee={get files(){return i()},set files(e){i(e),a()},get accept(){return q()},set accept(e){q(e),a()},get multiple(){return g()},set multiple(e){g(e),a()},get allowedextensions(){return D()},set allowedextensions(e){D(e),a()},get maxsize(){return E()},set maxsize(e){E(e),a()},get rules(){return J()},set rules(e){J(e),a()},get hasdragdrop(){return f()},set hasdragdrop(e=!0){f(e),a()},get showfileslist(){return K()},set showfileslist(e=!0){K(e),a()},get disabled(){return m()},set disabled(e){m(e),a()},get title(){return N()},set title(e="Drag & drop"){N(e),a()},get subtitle(){return T()},set subtitle(e="or"){T(e),a()},get uploadbuttonlabel(){return G()},set uploadbuttonlabel(e="Upload file(s)"){G(e),a()},get format(){return H()},set format(e="inline"){H(e),a()},get errormessage(){return Q()},set errormessage(e){Q(e),a()},get deletebuttonlabel(){return R()},set deletebuttonlabel(e){R(e),a()},get information(){return F()},set information(e){F(e),a()},get onvalidation(){return W()},set onvalidation(e){W(e),a()},get onfilesupdate(){return X()},set onfilesupdate(e){X(e),a()}},z=Ne(),Y=h(z),b=h(Y);b.__change=_e,he(b,e=>j=e,()=>j);var s=k(b,2);s.__click=()=>j.click(),s.__keydown=ke;var ie=h(s);{var Fe=e=>{var r=Je(),o=P(r),v=h(o,!0);c(o);var p=k(o,2),Z=h(p,!0);c(p),V(()=>{y(v,N()),y(Z,T())}),u(e,r)};ve(ie,e=>{f()&&e(Fe)})}var ne=k(ie,2),se=h(ne);qe(se,{className:"mc-button__icon"});var de=k(se,2),Ue=h(de,!0);c(de),c(ne),c(s),c(Y);var Ce=k(Y,2);{var je=e=>{var r=Ke();Le(r,21,i,Oe,(o,v,p)=>{{let Z=L(()=>De(n(v)));Pe(o,{get file(){return n(v)},get format(){return H()},get errormessage(){return Q()},get information(){return F()},get deletebuttonlabel(){return R()},get valid(){return n(Z)},ondelete:()=>ye(p),$$slots:{name:(_,M)=>{var d=ee(),x=P(d);const S=L(()=>M.file);te(x,t,"name",{get file(){return n(S)}},$=>{var w=be();V(()=>y(w,n(S).name)),u($,w)}),u(_,d)},information:(_,M)=>{var d=ee(),x=P(d);const S=L(()=>M.file);te(x,t,"information",{get file(){return n(S)}},$=>{var w=be();V(()=>y(w,F())),u($,w)}),u(_,d)},errorMessage:(_,M)=>{var d=ee(),x=P(d);te(x,t,"errorMessage",{get validationState(){return n(C)[n(v).name]}},null),u(_,d)}}})}}),c(r),u(e,r)};ve(Ce,e=>{K()&&e(je)})}return c(z),he(z,e=>U=e,()=>U),V(()=>{fe(z,1,me({"mc-file-uploader":!0,"mc-file-uploader--draggable":f()}),"svelte-1hihzzl"),re(b,"accept",q()),b.multiple=g(),b.disabled=m(),re(b,"aria-disabled",m()),fe(s,1,me({"mc-file-uploader__input":!0,"mc-file-uploader__input--dragged":n(A),"mc-file-uploader__input--disabled":m()}),"svelte-1hihzzl"),re(s,"aria-disabled",m()),y(Ue,G())}),B("dragover",s,xe),B("drop",s,we),B("dragenter",s,ge),B("dragleave",s,ze),u(ae,z),Be(Ee)}Ae(["change","click","keydown"]);customElements.define("m-file-uploader",Ie(Ge,{files:{},accept:{},multiple:{},allowedextensions:{},maxsize:{},rules:{},hasdragdrop:{},showfileslist:{},disabled:{},title:{},subtitle:{},uploadbuttonlabel:{},format:{},errormessage:{},deletebuttonlabel:{},information:{},onvalidation:{},onfilesupdate:{}},["name","information","errorMessage"],[],!0));
|
|
4
|
+
//# sourceMappingURL=FileUploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploader.js","sources":["../../../src/components/fileuploader/FileUploader.svelte"],"sourcesContent":["<svelte:options customElement={{ tag: 'm-file-uploader' }} />\n\n<script lang=\"ts\">\n import FileUploaderItem, {\n type NormalizedFile,\n } from '../fileuploaderitem/FileUploaderItem.svelte';\n import { Upload24 } from '@mozaic-ds/icons-svelte';\n\n type FilesValidationState = Record<\n string,\n { size: boolean; extension: boolean; customValidation: boolean }\n >;\n\n /**\n * A file uploader allows users to upload one or multiple files by either dragging and dropping files into a dedicated area or selecting them manually through their local folders. It provides real-time feedback on upload progress and file status, including file name, size, and success or error indicators. File uploaders are commonly used in forms, content management systems, and document submission processes to facilitate seamless file handling.\n *\n * @slot name - Use this slot to display a custom file name.\n * @slot information - Use this slot to display a custom information content.\n * @slot errorMessage - Use this slot to display a custom error message.\n * @event files-update {CustomEvent<NormalizedFile[]>} - Emits when files list changes.\n * @event validation {CustomEvent<FilesValidationState>} - Emits files validation when files list changes.\n */\n\n interface Props {\n /**\n * Model binding for the selected files (`NormalizedFile`)\n */\n files: NormalizedFile[];\n /**\n * File types allowed by the uploader.\n */\n accept?: HTMLInputElement['accept'];\n /**\n * Enables selecting multiple files at once.\n */\n multiple?: boolean;\n /**\n * File extensions to validate.\n */\n allowedextensions?: string[];\n /**\n * Maximum file size allowed (in bytes).\n */\n maxsize?: number;\n /**\n * Custom validation rules applied to each file.\n */\n rules?: ((file: NormalizedFile) => boolean)[];\n /**\n * Layout format of the item.\n */\n format?: 'inline' | 'stacked';\n /**\n * Custom error message for the file.\n */\n errormessage?: string;\n /**\n * Label for the delete button.\n */\n deletebuttonlabel?: string;\n /**\n * Optional informational text displayed under the file name.\n */\n information?: string;\n /**\n * Enables drag & drop functionality.\n */\n hasdragdrop?: boolean;\n /**\n * Controls the display of the uploaded files list.\n */\n showfileslist?: boolean;\n /**\n * Disables the whole component.\n */\n disabled?: boolean;\n /**\n * Main drag & drop title.\n */\n title?: string;\n /**\n * Subtitle used in the drag & drop area.\n */\n subtitle?: string;\n /**\n * Label of the upload button.\n */\n uploadbuttonlabel?: string;\n /**\n * Callback to call when files validation is updated.\n */\n onvalidation?: (validationState: FilesValidationState) => void;\n /**\n * Callback to call when files are updates.\n */\n onfilesupdate?: (files: NormalizedFile[]) => void;\n }\n\n let {\n files = $bindable(),\n accept,\n multiple,\n allowedextensions,\n maxsize,\n rules,\n hasdragdrop = true,\n showfileslist = true,\n disabled,\n title = 'Drag & drop',\n subtitle = 'or',\n uploadbuttonlabel = 'Upload file(s)',\n format = 'inline',\n errormessage,\n deletebuttonlabel,\n information,\n onvalidation,\n onfilesupdate,\n }: Props = $props();\n\n let element: HTMLElement;\n\n let filesValidationState = $derived(validateFiles(files));\n\n let fileInput: HTMLInputElement;\n\n let isDraggedOver = $state(false);\n let dragCounter = $state(0);\n\n function validateFiles(newFiles: NormalizedFile[] = []) {\n const state: FilesValidationState = {};\n newFiles.forEach((file) => {\n const extension = file.name.split('.').pop()?.toLowerCase() || '';\n state[file.name] = {\n size: maxsize && file.size ? file.size <= maxsize : true,\n extension: allowedextensions ? allowedextensions.includes(extension) : true,\n customValidation: rules?.every((rule) => rule(file)) ?? true,\n };\n });\n return state;\n }\n\n $effect(() => {\n onfilesupdate?.(files);\n const event = new CustomEvent('files-update', {\n detail: files,\n bubbles: true,\n composed: true,\n });\n element.dispatchEvent(event);\n\n if (files?.length > 0) {\n onvalidation?.(filesValidationState);\n\n const event = new CustomEvent('validation', {\n detail: filesValidationState,\n bubbles: true,\n composed: true,\n });\n element.dispatchEvent(event);\n }\n });\n\n function onDragEnter(e: Event) {\n if (!hasdragdrop) return;\n\n e.preventDefault();\n dragCounter++;\n isDraggedOver = true;\n }\n\n function onDragLeave(e: Event) {\n if (!hasdragdrop) return;\n\n e.preventDefault();\n dragCounter--;\n if (dragCounter === 0) isDraggedOver = false;\n }\n\n function filterExistingFile(file: NormalizedFile) {\n return files?.every((item) => item.name !== file.name);\n }\n\n function onChange(e: Event) {\n const input = e.target as HTMLInputElement;\n const newFiles = Array.from(input.files || []).filter(filterExistingFile);\n\n if (!newFiles.length) {\n input.value = '';\n return;\n }\n\n files = multiple ? [...files, ...newFiles] : newFiles.slice(0, 1);\n\n input.value = '';\n }\n\n function onDragover(e: DragEvent) {\n e.preventDefault();\n }\n\n function onDrop(e: DragEvent) {\n if (!hasdragdrop) return;\n\n e.preventDefault();\n e.stopPropagation();\n\n dragCounter = 0;\n isDraggedOver = false;\n if (disabled) return;\n\n const droppedFiles = Array.from(e.dataTransfer?.files || []).filter(filterExistingFile);\n if (!droppedFiles.length) return;\n\n files = multiple ? [...files, ...droppedFiles] : [droppedFiles[0]];\n }\n\n function onKeydown(e: KeyboardEvent) {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n fileInput.click();\n }\n }\n\n function onDelete(index: number) {\n files = files?.filter((_, i) => i !== index);\n }\n\n function isFileValid(file: NormalizedFile) {\n return Object.values(filesValidationState[file.name] ?? {}).every(Boolean);\n }\n</script>\n\n<div\n class={{\n 'mc-file-uploader': true,\n 'mc-file-uploader--draggable': hasdragdrop,\n }}\n bind:this={element}\n>\n <div class=\"mc-file-uploader__container\">\n <input\n bind:this={fileInput}\n type=\"file\"\n aria-label=\"File input\"\n {accept}\n {multiple}\n class=\"mc-file-uploader__hidden-input\"\n {disabled}\n aria-disabled={disabled}\n onchange={onChange}\n />\n\n <div\n class={{\n 'mc-file-uploader__input': true,\n 'mc-file-uploader__input--dragged': isDraggedOver,\n 'mc-file-uploader__input--disabled': disabled,\n }}\n tabindex=\"0\"\n role=\"button\"\n aria-disabled={disabled}\n ondragover={onDragover}\n ondrop={onDrop}\n ondragenter={onDragEnter}\n ondragleave={onDragLeave}\n onclick={() => fileInput!.click()}\n onkeydown={onKeydown}\n >\n {#if hasdragdrop}\n <span class=\"mc-file-uploader__input-title\">\n {title}\n </span>\n\n <span class=\"mc-file-uploader__input-subtitle\">\n {subtitle}\n </span>\n {/if}\n\n <div class=\"mc-button mc-button--outlined mc-file-uploader__button\">\n <Upload24 className=\"mc-button__icon\" />\n <span class=\"mc-button__label\">\n {uploadbuttonlabel}\n </span>\n </div>\n </div>\n </div>\n\n {#if showfileslist}\n <div class=\"mc-file-uploader__files-list\">\n {#each files as file, index (index)}\n <FileUploaderItem\n {file}\n {format}\n {errormessage}\n {information}\n {deletebuttonlabel}\n valid={isFileValid(file)}\n ondelete={() => onDelete(index)}\n >\n <slot slot=\"name\" name=\"name\" let:file {file}>\n {file.name}\n </slot>\n\n <slot slot=\"information\" name=\"information\" let:file {file}>\n {information}\n </slot>\n\n <slot\n slot=\"errorMessage\"\n name=\"errorMessage\"\n validationState={filesValidationState[file.name]}\n ></slot>\n </FileUploaderItem>\n {/each}\n </div>\n {/if}\n</div>\n\n<style lang=\"scss\">\n @use '@mozaic-ds/styles/components/file-uploader';\n @use '@mozaic-ds/styles/components/button';\n</style>\n"],"names":["files","$.prop","$$props","accept","multiple","allowedextensions","maxsize","rules","hasdragdrop","showfileslist","disabled","title","subtitle","uploadbuttonlabel","format","errormessage","deletebuttonlabel","information","onvalidation","onfilesupdate","element","filesValidationState","$.derived","validateFiles","fileInput","isDraggedOver","$.state","dragCounter","newFiles","state","file","extension","rule","$.user_effect","event","onDragEnter","$.set","onDragLeave","$.get","filterExistingFile","item","onChange","input","onDragover","onDrop","droppedFiles","onKeydown","onDelete","index","_","i","isFileValid","div","root","div_1","$.child","input_1","$$value","div_2","$.sibling","node","span","$.first_child","fragment","span_1","$$render","consequent","div_3","Upload24","node_1","span_2","$.reset","div_4","root_2","$.index","$$anchor","$0","FileUploaderItem","$.template_effect","$.set_text","text_3","consequent_1","$.set_attribute","$.event","$.append"],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { render, fireEvent, waitFor } from '@testing-library/svelte';
|
|
2
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
3
|
+
import FileUploader from './FileUploader.svelte';
|
|
4
|
+
// Helper to create a File object
|
|
5
|
+
function createFile(name = 'file.txt', content = 'hello', type = 'text/plain') {
|
|
6
|
+
return new File([content], name, { type });
|
|
7
|
+
}
|
|
8
|
+
describe('FileUploader component', () => {
|
|
9
|
+
it('adds file when input changes and shows file name in list', async () => {
|
|
10
|
+
const { container, getByText } = render(FileUploader, { files: [] });
|
|
11
|
+
const input = container.querySelector('input[type="file"]');
|
|
12
|
+
expect(input).toBeTruthy();
|
|
13
|
+
const file = createFile('test.txt', 'content', 'text/plain');
|
|
14
|
+
Object.defineProperty(input, 'files', {
|
|
15
|
+
value: [file],
|
|
16
|
+
writable: false,
|
|
17
|
+
});
|
|
18
|
+
await fireEvent.change(input);
|
|
19
|
+
await waitFor(() => {
|
|
20
|
+
expect(getByText('test.txt')).toBeTruthy();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
it('prevents duplicate files (same name) when adding twice', async () => {
|
|
24
|
+
const { container, getAllByText } = render(FileUploader, { files: [] });
|
|
25
|
+
const input = container.querySelector('input[type="file"]');
|
|
26
|
+
const file = createFile('duplicate.txt');
|
|
27
|
+
Object.defineProperty(input, 'files', { value: [file], writable: false, configurable: true });
|
|
28
|
+
await fireEvent.change(input);
|
|
29
|
+
// Try adding same file again
|
|
30
|
+
Object.defineProperty(input, 'files', { value: [file], writable: false, configurable: true });
|
|
31
|
+
await fireEvent.change(input);
|
|
32
|
+
const matches = getAllByText('duplicate.txt');
|
|
33
|
+
// Should only be listed once
|
|
34
|
+
expect(matches.length).toBe(1);
|
|
35
|
+
});
|
|
36
|
+
it('dispatches validation event and calls onvalidation callback with correct validation state', async () => {
|
|
37
|
+
const onvalidation = vi.fn();
|
|
38
|
+
const { container } = render(FileUploader, {
|
|
39
|
+
files: [],
|
|
40
|
+
allowedextensions: ['png'],
|
|
41
|
+
maxsize: 5, // bytes -> make file too big
|
|
42
|
+
onvalidation,
|
|
43
|
+
});
|
|
44
|
+
const uploaderEl = container.querySelector('.mc-file-uploader');
|
|
45
|
+
let validationEventDetail = null;
|
|
46
|
+
uploaderEl.addEventListener('validation', (e) => {
|
|
47
|
+
validationEventDetail = e.detail;
|
|
48
|
+
});
|
|
49
|
+
const input = container.querySelector('input[type="file"]');
|
|
50
|
+
const file = createFile('image.jpg', 'content'); // extension jpg not allowed, size > 5
|
|
51
|
+
Object.defineProperty(input, 'files', { value: [file], writable: false });
|
|
52
|
+
await fireEvent.change(input);
|
|
53
|
+
await waitFor(() => {
|
|
54
|
+
// callback should have been called
|
|
55
|
+
expect(onvalidation).toHaveBeenCalled();
|
|
56
|
+
// event should have been dispatched with validation state
|
|
57
|
+
expect(validationEventDetail).toBeTruthy();
|
|
58
|
+
// file key should exist
|
|
59
|
+
expect(validationEventDetail['image.jpg']).toBeDefined();
|
|
60
|
+
// extension should be false
|
|
61
|
+
expect(validationEventDetail['image.jpg'].extension).toBe(false);
|
|
62
|
+
// size should be false because maxsize is tiny
|
|
63
|
+
expect(validationEventDetail['image.jpg'].size).toBe(false);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
it('supports drop to add files and allows deleting an item', async () => {
|
|
67
|
+
const { container, getByText, queryByText } = render(FileUploader, {
|
|
68
|
+
files: [],
|
|
69
|
+
format: 'stacked',
|
|
70
|
+
deletebuttonlabel: 'Delete',
|
|
71
|
+
});
|
|
72
|
+
const dropZone = container.querySelector('.mc-file-uploader__input');
|
|
73
|
+
const file = createFile('to-delete.txt');
|
|
74
|
+
await fireEvent.drop(dropZone, {
|
|
75
|
+
dataTransfer: {
|
|
76
|
+
files: [file],
|
|
77
|
+
types: ['Files'],
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
await waitFor(() => {
|
|
81
|
+
expect(getByText('to-delete.txt')).toBeTruthy();
|
|
82
|
+
});
|
|
83
|
+
// Find a button with delete label and click it to remove the file
|
|
84
|
+
const deleteButton = getByText('Delete');
|
|
85
|
+
expect(deleteButton).toBeTruthy();
|
|
86
|
+
await fireEvent.click(deleteButton);
|
|
87
|
+
await waitFor(() => {
|
|
88
|
+
expect(queryByText('to-delete.txt')).toBeNull();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
it('adds dragged class on dragenter and removes it after matching dragleave calls', async () => {
|
|
92
|
+
const { container } = render(FileUploader);
|
|
93
|
+
const input = container.querySelector('.mc-file-uploader__input');
|
|
94
|
+
expect(input).toBeTruthy();
|
|
95
|
+
// first enter -> dragged
|
|
96
|
+
await fireEvent.dragEnter(input);
|
|
97
|
+
expect(input.classList.contains('mc-file-uploader__input--dragged')).toBe(true);
|
|
98
|
+
// second enter -> still dragged (counter increment)
|
|
99
|
+
await fireEvent.dragEnter(input);
|
|
100
|
+
expect(input.classList.contains('mc-file-uploader__input--dragged')).toBe(true);
|
|
101
|
+
// one leave -> still dragged (counter not zero)
|
|
102
|
+
await fireEvent.dragLeave(input);
|
|
103
|
+
expect(input.classList.contains('mc-file-uploader__input--dragged')).toBe(true);
|
|
104
|
+
// final leave -> not dragged
|
|
105
|
+
await fireEvent.dragLeave(input);
|
|
106
|
+
expect(input.classList.contains('mc-file-uploader__input--dragged')).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
it('ignores drag events when hasdragdrop is false', async () => {
|
|
109
|
+
const { container } = render(FileUploader, { hasdragdrop: false });
|
|
110
|
+
const input = container.querySelector('.mc-file-uploader__input');
|
|
111
|
+
expect(input).toBeTruthy();
|
|
112
|
+
await fireEvent.dragEnter(input);
|
|
113
|
+
expect(input.classList.contains('mc-file-uploader__input--dragged')).toBe(false);
|
|
114
|
+
await fireEvent.dragLeave(input);
|
|
115
|
+
expect(input.classList.contains('mc-file-uploader__input--dragged')).toBe(false);
|
|
116
|
+
});
|
|
117
|
+
it('keyboard "Enter" or " " triggers file input click', async () => {
|
|
118
|
+
const { container } = render(FileUploader, { files: [] });
|
|
119
|
+
const dropZone = container.querySelector('.mc-file-uploader__input');
|
|
120
|
+
const input = container.querySelector('input[type="file"]');
|
|
121
|
+
expect(input).toBeTruthy();
|
|
122
|
+
const clickSpy = vi.spyOn(input, 'click');
|
|
123
|
+
// press Enter
|
|
124
|
+
await fireEvent.keyDown(dropZone, { key: 'Enter' });
|
|
125
|
+
// press Space
|
|
126
|
+
await fireEvent.keyDown(dropZone, { key: ' ' });
|
|
127
|
+
expect(clickSpy).toHaveBeenCalled();
|
|
128
|
+
clickSpy.mockRestore();
|
|
129
|
+
});
|
|
130
|
+
it('does not render files list if showfileslist is false', () => {
|
|
131
|
+
const { container } = render(FileUploader, { props: { files: [], showfileslist: false } });
|
|
132
|
+
expect(container.querySelector('.mc-file-uploader__files-list')).toBeNull();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
import './FileUploader.svelte';
|
|
3
|
+
import '../fileuploaderitem/FileUploaderItem.svelte';
|
|
4
|
+
declare const meta: Meta;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj;
|
|
7
|
+
export declare const Default: Story;
|
|
8
|
+
export declare const WithoutDragAndDrop: {
|
|
9
|
+
args: {
|
|
10
|
+
hasdragdrop: boolean;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export declare const Disabled: Story;
|
|
14
|
+
export declare const InlineFileWithError: Story;
|
|
15
|
+
export declare const StackedFileItem: Story;
|
|
16
|
+
export declare const StackedFileWithError: Story;
|
|
17
|
+
//# sourceMappingURL=FileUploader.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploader.stories.d.ts","sourceRoot":"","sources":["../../../src/components/fileuploader/FileUploader.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,uBAAuB,CAAC;AAC/B,OAAO,6CAA6C,CAAC;AAErD,QAAA,MAAM,IAAI,EAAE,IAiFX,CAAC;AACF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAoBjC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAwB7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,KAwBlC,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
3
|
+
import { action } from 'storybook/actions';
|
|
4
|
+
import './FileUploader.svelte';
|
|
5
|
+
import '../fileuploaderitem/FileUploaderItem.svelte';
|
|
6
|
+
const meta = {
|
|
7
|
+
title: 'Form elements/File uploader',
|
|
8
|
+
component: 'm-file-uploader',
|
|
9
|
+
subcomponents: { 'm-file-uploader-item': 'm-file-uploader-item' },
|
|
10
|
+
tags: ['v2'],
|
|
11
|
+
args: {
|
|
12
|
+
id: 'id',
|
|
13
|
+
files: [],
|
|
14
|
+
label: 'Label',
|
|
15
|
+
helptext: 'Help text',
|
|
16
|
+
helpid: 'helpid',
|
|
17
|
+
necessityindicator: '(required)',
|
|
18
|
+
hasdragdrop: true,
|
|
19
|
+
showfileslist: true,
|
|
20
|
+
disabled: false,
|
|
21
|
+
title: 'Drag & drop',
|
|
22
|
+
subtitle: 'or',
|
|
23
|
+
uploadbuttonlabel: 'Upload file(s)',
|
|
24
|
+
multiple: true,
|
|
25
|
+
deletebuttonlabel: 'Delete',
|
|
26
|
+
information: 'Additional file information',
|
|
27
|
+
errormessage: 'Error message (Be concise and use comprehensive words).',
|
|
28
|
+
},
|
|
29
|
+
argTypes: {
|
|
30
|
+
files: {
|
|
31
|
+
description: 'Model binding for the selected files',
|
|
32
|
+
table: {
|
|
33
|
+
type: {
|
|
34
|
+
summary: '{ name: string; size?: number; type?: HTMLInputElement["accept"]}[]',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
format: {
|
|
39
|
+
control: 'radio',
|
|
40
|
+
options: ['inline', 'stacked'],
|
|
41
|
+
},
|
|
42
|
+
name: {
|
|
43
|
+
description: 'Slot for customizing the file name display.',
|
|
44
|
+
table: {
|
|
45
|
+
category: 'Slots',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
information: {
|
|
49
|
+
description: 'Slot for displaying additional file information.',
|
|
50
|
+
table: {
|
|
51
|
+
category: 'Slots',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
errormessage: {
|
|
55
|
+
description: 'Slot for providing a custom error message.',
|
|
56
|
+
table: {
|
|
57
|
+
category: 'Slots',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
render: (args) => {
|
|
62
|
+
return html `
|
|
63
|
+
<m-file-uploader
|
|
64
|
+
id="${args.id}"
|
|
65
|
+
.files="${args.files}"
|
|
66
|
+
label="${args.label}"
|
|
67
|
+
helptext="${ifDefined(args.helptext)}"
|
|
68
|
+
helpid="${ifDefined(args.helpid)}"
|
|
69
|
+
necessityindicator="${ifDefined(args.necessityindicator)}"
|
|
70
|
+
.hasdragdrop="${ifDefined(args.hasdragdrop)}"
|
|
71
|
+
.showfileslist="${ifDefined(args.showfileslist)}"
|
|
72
|
+
.disabled="${ifDefined(args.disabled)}"
|
|
73
|
+
title="${ifDefined(args.title)}"
|
|
74
|
+
subtitle="${ifDefined(args.subtitle)}"
|
|
75
|
+
uploadbuttonlabel="${ifDefined(args.uploadbuttonlabel)}"
|
|
76
|
+
.multiple="${ifDefined(args.multiple)}"
|
|
77
|
+
deletebuttonlabel="${ifDefined(args.deletebuttonlabel)}"
|
|
78
|
+
information="${ifDefined(args.information)}"
|
|
79
|
+
errormessage="${ifDefined(args.errormessage)}"
|
|
80
|
+
format="${ifDefined(args.format)}"
|
|
81
|
+
@validation="${action('validation')}"
|
|
82
|
+
@files-update="${action('files-update')}"
|
|
83
|
+
>
|
|
84
|
+
</m-file-uploader>
|
|
85
|
+
`;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
export default meta;
|
|
89
|
+
export const Default = {
|
|
90
|
+
args: {},
|
|
91
|
+
};
|
|
92
|
+
export const WithoutDragAndDrop = {
|
|
93
|
+
args: {
|
|
94
|
+
hasdragdrop: false,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
export const Disabled = {
|
|
98
|
+
args: {
|
|
99
|
+
disabled: true,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
export const InlineFileWithError = {
|
|
103
|
+
args: {
|
|
104
|
+
valid: false,
|
|
105
|
+
file: {
|
|
106
|
+
name: 'File.txt',
|
|
107
|
+
},
|
|
108
|
+
information: 'Additional information',
|
|
109
|
+
},
|
|
110
|
+
render: (args) => {
|
|
111
|
+
return html `
|
|
112
|
+
<div style="width: 400px">
|
|
113
|
+
<m-file-uploader-item
|
|
114
|
+
.valid="${args.valid}"
|
|
115
|
+
.file="${args.file}"
|
|
116
|
+
information="${args.information}"
|
|
117
|
+
>
|
|
118
|
+
</m-file-uploader-item>
|
|
119
|
+
</div>
|
|
120
|
+
`;
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
export const StackedFileItem = {
|
|
124
|
+
args: {
|
|
125
|
+
valid: true,
|
|
126
|
+
file: {
|
|
127
|
+
name: 'File.txt',
|
|
128
|
+
},
|
|
129
|
+
format: 'stacked',
|
|
130
|
+
information: 'Additional information',
|
|
131
|
+
deletebuttonlabel: 'Delete',
|
|
132
|
+
},
|
|
133
|
+
render: (args) => {
|
|
134
|
+
return html `
|
|
135
|
+
<div style="width: 400px">
|
|
136
|
+
<m-file-uploader-item
|
|
137
|
+
.valid="${args.valid}"
|
|
138
|
+
.file="${args.file}"
|
|
139
|
+
format="${args.format}"
|
|
140
|
+
information="${args.information}"
|
|
141
|
+
deletebuttonlabel="${args.deletebuttonlabel}"
|
|
142
|
+
>
|
|
143
|
+
</m-file-uploader-item>
|
|
144
|
+
</div>
|
|
145
|
+
`;
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
export const StackedFileWithError = {
|
|
149
|
+
args: {
|
|
150
|
+
valid: false,
|
|
151
|
+
file: {
|
|
152
|
+
name: 'File.txt',
|
|
153
|
+
},
|
|
154
|
+
format: 'stacked',
|
|
155
|
+
information: 'Additional information',
|
|
156
|
+
deletebuttonlabel: 'Delete',
|
|
157
|
+
},
|
|
158
|
+
render: (args) => {
|
|
159
|
+
return html `
|
|
160
|
+
<div style="width: 400px">
|
|
161
|
+
<m-file-uploader-item
|
|
162
|
+
.valid="${args.valid}"
|
|
163
|
+
.file="${args.file}"
|
|
164
|
+
format="${args.format}"
|
|
165
|
+
information="${args.information}"
|
|
166
|
+
deletebuttonlabel="${args.deletebuttonlabel}"
|
|
167
|
+
>
|
|
168
|
+
</m-file-uploader-item>
|
|
169
|
+
</div>
|
|
170
|
+
`;
|
|
171
|
+
},
|
|
172
|
+
};
|