@mozaic-ds/web-components 1.0.0-beta.7 → 1.1.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/README.md +38 -70
- package/dist/Cross20.js +1 -1
- package/dist/Cross20.js.map +1 -1
- package/dist/Cross24.js +1 -1
- package/dist/CrossCircleFilled24.js +1 -1
- package/dist/attributes.js +1 -1
- package/dist/attributes.js.map +1 -1
- package/dist/bundle.d.ts +25 -23
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +25 -23
- package/dist/components/avatar/Avatar.js +2 -2
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/Avatar.spec.js +17 -0
- package/dist/components/avatar/Avatar.stories.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.stories.js +4 -32
- package/dist/components/avatar/Avatar.svelte +7 -5
- package/dist/components/avatar/Avatar.svelte.d.ts +2 -0
- package/dist/components/avatar/Avatar.svelte.d.ts.map +1 -1
- package/dist/components/avatar/README.md +16 -0
- package/dist/components/breadcrumb/Breadcrumb.js +2 -2
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.spec.js +42 -0
- package/dist/components/breadcrumb/Breadcrumb.stories.d.ts.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.stories.js +7 -39
- package/dist/components/breadcrumb/Breadcrumb.svelte +12 -20
- package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts.map +1 -1
- package/dist/components/breadcrumb/README.md +11 -0
- package/dist/components/button/Button.js +2 -2
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/button/Button.spec.js +74 -0
- package/dist/components/button/Button.stories.d.ts +9 -13
- package/dist/components/button/Button.stories.d.ts.map +1 -1
- package/dist/components/button/Button.stories.js +46 -146
- package/dist/components/button/Button.svelte +70 -53
- package/dist/components/button/Button.svelte.d.ts +36 -8
- package/dist/components/button/Button.svelte.d.ts.map +1 -1
- package/dist/components/button/README.md +26 -0
- package/dist/components/callout/Callout.js +2 -5
- package/dist/components/callout/Callout.js.map +1 -1
- package/dist/components/callout/Callout.spec.js +33 -0
- package/dist/components/callout/Callout.stories.d.ts.map +1 -1
- package/dist/components/callout/Callout.stories.js +2 -55
- package/dist/components/callout/Callout.svelte +12 -15
- package/dist/components/callout/Callout.svelte.d.ts +4 -0
- package/dist/components/callout/Callout.svelte.d.ts.map +1 -1
- package/dist/components/callout/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.spec.js +70 -0
- package/dist/components/checkbox/Checkbox.stories.d.ts +11 -16
- package/dist/components/checkbox/Checkbox.stories.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.stories.js +67 -124
- package/dist/components/checkbox/Checkbox.svelte +42 -22
- package/dist/components/checkbox/Checkbox.svelte.d.ts +31 -6
- package/dist/components/checkbox/Checkbox.svelte.d.ts.map +1 -1
- package/dist/components/checkbox/README.md +17 -0
- package/dist/components/checkboxgroup/CheckboxGroup.js +3 -3
- package/dist/components/checkboxgroup/CheckboxGroup.js.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.spec.js +111 -0
- package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts +5 -13
- package/dist/components/checkboxgroup/CheckboxGroup.stories.d.ts.map +1 -1
- package/dist/components/checkboxgroup/CheckboxGroup.stories.js +56 -140
- package/dist/components/checkboxgroup/CheckboxGroup.svelte +54 -49
- package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts +30 -6
- package/dist/components/checkboxgroup/CheckboxGroup.svelte.d.ts.map +1 -1
- package/dist/components/checkboxgroup/README.md +14 -0
- package/dist/components/circularprogressbar/CircularProgressbar.js +2 -2
- package/dist/components/circularprogressbar/CircularProgressbar.js.map +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.spec.js +74 -0
- package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts +6 -6
- package/dist/components/circularprogressbar/CircularProgressbar.stories.d.ts.map +1 -1
- package/dist/components/circularprogressbar/CircularProgressbar.stories.js +29 -68
- package/dist/components/circularprogressbar/CircularProgressbar.svelte +20 -10
- package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts +18 -0
- package/dist/components/circularprogressbar/CircularProgressbar.svelte.d.ts.map +1 -1
- package/dist/components/circularprogressbar/README.md +14 -0
- package/dist/components/datepicker/Datepicker.js +3 -3
- package/dist/components/datepicker/Datepicker.js.map +1 -1
- package/dist/components/datepicker/Datepicker.spec.js +95 -0
- package/dist/components/datepicker/Datepicker.stories.d.ts +7 -6
- package/dist/components/datepicker/Datepicker.stories.d.ts.map +1 -1
- package/dist/components/datepicker/Datepicker.stories.js +58 -75
- package/dist/components/datepicker/Datepicker.svelte +47 -33
- package/dist/components/datepicker/Datepicker.svelte.d.ts +31 -2
- package/dist/components/datepicker/Datepicker.svelte.d.ts.map +1 -1
- package/dist/components/datepicker/README.md +18 -0
- package/dist/components/drawer/Drawer.js +2 -2
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/Drawer.spec.js +101 -0
- package/dist/components/drawer/Drawer.stories.d.ts +29 -8
- package/dist/components/drawer/Drawer.stories.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.stories.js +85 -87
- package/dist/components/drawer/Drawer.svelte +74 -38
- package/dist/components/drawer/Drawer.svelte.d.ts +34 -3
- package/dist/components/drawer/Drawer.svelte.d.ts.map +1 -1
- package/dist/components/drawer/README.md +31 -0
- package/dist/components/field/Field.js +2 -2
- package/dist/components/field/Field.js.map +1 -1
- package/dist/components/field/Field.spec.js +98 -0
- package/dist/components/field/Field.stories.d.ts +10 -15
- package/dist/components/field/Field.stories.d.ts.map +1 -1
- package/dist/components/field/Field.stories.js +100 -141
- package/dist/components/field/Field.svelte +55 -13
- package/dist/components/field/Field.svelte.d.ts +42 -7
- package/dist/components/field/Field.svelte.d.ts.map +1 -1
- package/dist/components/field/README.md +25 -0
- package/dist/components/flag/Flag.js +2 -2
- package/dist/components/flag/Flag.js.map +1 -1
- package/dist/components/flag/Flag.spec.js +30 -0
- package/dist/components/flag/Flag.stories.d.ts +8 -18
- package/dist/components/flag/Flag.stories.d.ts.map +1 -1
- package/dist/components/flag/Flag.stories.js +22 -103
- package/dist/components/flag/Flag.svelte +11 -9
- package/dist/components/flag/Flag.svelte.d.ts +10 -28
- package/dist/components/flag/Flag.svelte.d.ts.map +1 -1
- package/dist/components/flag/README.md +11 -0
- 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 +11 -11
- package/dist/components/iconbutton/IconButton.stories.d.ts.map +1 -1
- package/dist/components/iconbutton/IconButton.stories.js +51 -67
- package/dist/components/iconbutton/IconButton.svelte +41 -37
- package/dist/components/iconbutton/IconButton.svelte.d.ts +28 -7
- package/dist/components/iconbutton/IconButton.svelte.d.ts.map +1 -1
- package/dist/components/iconbutton/README.md +21 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js +2 -2
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.js.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.spec.js +28 -0
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts +5 -7
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.d.ts.map +1 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.stories.js +18 -49
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte +12 -7
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts +10 -1
- package/dist/components/linearprogressbarbuffer/LinearProgressbarBuffer.svelte.d.ts.map +1 -1
- package/dist/components/linearprogressbarbuffer/README.md +11 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js +2 -2
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.js.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.spec.js +26 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts +4 -5
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.d.ts.map +1 -1
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.stories.js +15 -33
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte +6 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts +6 -0
- package/dist/components/linearprogressbarpercentage/LinearProgressbarPercentage.svelte.d.ts.map +1 -1
- package/dist/components/linearprogressbarpercentage/README.md +10 -0
- package/dist/components/link/Link.js +2 -2
- package/dist/components/link/Link.js.map +1 -1
- package/dist/components/link/Link.spec.js +51 -0
- package/dist/components/link/Link.stories.d.ts +12 -12
- package/dist/components/link/Link.stories.d.ts.map +1 -1
- package/dist/components/link/Link.stories.js +61 -74
- package/dist/components/link/Link.svelte +45 -40
- package/dist/components/link/Link.svelte.d.ts +29 -8
- package/dist/components/link/Link.svelte.d.ts.map +1 -1
- package/dist/components/link/README.md +23 -0
- package/dist/components/loader/Loader.js +2 -2
- package/dist/components/loader/Loader.js.map +1 -1
- package/dist/components/loader/Loader.spec.js +73 -0
- package/dist/components/loader/Loader.stories.d.ts +8 -10
- package/dist/components/loader/Loader.stories.d.ts.map +1 -1
- package/dist/components/loader/Loader.stories.js +26 -42
- package/dist/components/loader/Loader.svelte +37 -35
- package/dist/components/loader/Loader.svelte.d.ts +14 -3
- package/dist/components/loader/Loader.svelte.d.ts.map +1 -1
- package/dist/components/loader/README.md +12 -0
- package/dist/components/loadingoverlay/LoadingOverlay.js +4 -0
- package/dist/components/loadingoverlay/LoadingOverlay.js.map +1 -0
- package/dist/components/loadingoverlay/LoadingOverlay.spec.js +38 -0
- package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts +7 -0
- package/dist/components/loadingoverlay/LoadingOverlay.stories.d.ts.map +1 -0
- package/dist/components/loadingoverlay/LoadingOverlay.stories.js +39 -0
- package/dist/components/loadingoverlay/LoadingOverlay.svelte +50 -0
- package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts +17 -0
- package/dist/components/loadingoverlay/LoadingOverlay.svelte.d.ts.map +1 -0
- package/dist/components/loadingoverlay/README.md +11 -0
- package/dist/components/modal/Modal.js +2 -2
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.spec.js +50 -0
- package/dist/components/modal/Modal.stories.d.ts +36 -9
- package/dist/components/modal/Modal.stories.d.ts.map +1 -1
- package/dist/components/modal/Modal.stories.js +52 -83
- package/dist/components/modal/Modal.svelte +42 -41
- package/dist/components/modal/Modal.svelte.d.ts +22 -5
- package/dist/components/modal/Modal.svelte.d.ts.map +1 -1
- package/dist/components/modal/README.md +28 -0
- package/dist/components/numberbadge/NumberBadge.js +2 -2
- package/dist/components/numberbadge/NumberBadge.js.map +1 -1
- package/dist/components/numberbadge/NumberBadge.spec.js +28 -0
- package/dist/components/numberbadge/NumberBadge.stories.d.ts +9 -13
- package/dist/components/numberbadge/NumberBadge.stories.d.ts.map +1 -1
- package/dist/components/numberbadge/NumberBadge.stories.js +28 -56
- package/dist/components/numberbadge/NumberBadge.svelte +18 -20
- package/dist/components/numberbadge/NumberBadge.svelte.d.ts +15 -4
- package/dist/components/numberbadge/NumberBadge.svelte.d.ts.map +1 -1
- package/dist/components/numberbadge/README.md +12 -0
- package/dist/components/overlay/Overlay.js +2 -2
- package/dist/components/overlay/Overlay.js.map +1 -1
- package/dist/components/overlay/Overlay.spec.js +29 -0
- package/dist/components/overlay/Overlay.stories.d.ts +5 -7
- package/dist/components/overlay/Overlay.stories.d.ts.map +1 -1
- package/dist/components/overlay/Overlay.stories.js +29 -40
- package/dist/components/overlay/Overlay.svelte +14 -4
- package/dist/components/overlay/Overlay.svelte.d.ts +11 -0
- package/dist/components/overlay/Overlay.svelte.d.ts.map +1 -1
- package/dist/components/overlay/README.md +17 -0
- package/dist/components/pagination/Pagination.js +6 -6
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/pagination/Pagination.spec.js +65 -0
- package/dist/components/pagination/Pagination.stories.d.ts +8 -11
- package/dist/components/pagination/Pagination.stories.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.stories.js +37 -91
- package/dist/components/pagination/Pagination.svelte +37 -34
- package/dist/components/pagination/Pagination.svelte.d.ts +27 -4
- package/dist/components/pagination/Pagination.svelte.d.ts.map +1 -1
- package/dist/components/pagination/README.md +16 -0
- package/dist/components/passwordinput/PasswordInput.js +3 -4
- package/dist/components/passwordinput/PasswordInput.js.map +1 -1
- package/dist/components/passwordinput/PasswordInput.spec.js +84 -0
- package/dist/components/passwordinput/PasswordInput.stories.d.ts +10 -13
- package/dist/components/passwordinput/PasswordInput.stories.d.ts.map +1 -1
- package/dist/components/passwordinput/PasswordInput.stories.js +67 -124
- package/dist/components/passwordinput/PasswordInput.svelte +387 -28
- package/dist/components/passwordinput/PasswordInput.svelte.d.ts +33 -1
- package/dist/components/passwordinput/PasswordInput.svelte.d.ts.map +1 -1
- package/dist/components/passwordinput/README.md +19 -0
- package/dist/components/pincode/Pincode.js +2 -2
- package/dist/components/pincode/Pincode.js.map +1 -1
- package/dist/components/pincode/Pincode.spec.js +99 -0
- package/dist/components/pincode/Pincode.stories.d.ts +9 -13
- package/dist/components/pincode/Pincode.stories.d.ts.map +1 -1
- package/dist/components/pincode/Pincode.stories.js +62 -127
- package/dist/components/pincode/Pincode.svelte +56 -53
- package/dist/components/pincode/Pincode.svelte.d.ts +30 -24
- package/dist/components/pincode/Pincode.svelte.d.ts.map +1 -1
- package/dist/components/pincode/README.md +22 -0
- package/dist/components/quantityselector/QuantitySelector.js +2 -2
- package/dist/components/quantityselector/QuantitySelector.js.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.spec.js +104 -0
- package/dist/components/quantityselector/QuantitySelector.stories.d.ts +10 -15
- package/dist/components/quantityselector/QuantitySelector.stories.d.ts.map +1 -1
- package/dist/components/quantityselector/QuantitySelector.stories.js +72 -146
- package/dist/components/quantityselector/QuantitySelector.svelte +94 -77
- package/dist/components/quantityselector/QuantitySelector.svelte.d.ts +49 -17
- package/dist/components/quantityselector/QuantitySelector.svelte.d.ts.map +1 -1
- package/dist/components/quantityselector/README.md +21 -0
- package/dist/components/radio/README.md +15 -0
- package/dist/components/radio/Radio.js +2 -2
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/radio/Radio.spec.js +60 -0
- package/dist/components/radio/Radio.stories.d.ts +9 -13
- package/dist/components/radio/Radio.stories.d.ts.map +1 -1
- package/dist/components/radio/Radio.stories.js +54 -70
- package/dist/components/radio/Radio.svelte +35 -20
- package/dist/components/radio/Radio.svelte.d.ts +27 -5
- package/dist/components/radio/Radio.svelte.d.ts.map +1 -1
- package/dist/components/radiogroup/README.md +14 -0
- package/dist/components/radiogroup/RadioGroup.js +3 -3
- package/dist/components/radiogroup/RadioGroup.js.map +1 -1
- package/dist/components/radiogroup/RadioGroup.spec.js +65 -0
- package/dist/components/radiogroup/RadioGroup.stories.d.ts +5 -12
- package/dist/components/radiogroup/RadioGroup.stories.d.ts.map +1 -1
- package/dist/components/radiogroup/RadioGroup.stories.js +56 -151
- package/dist/components/radiogroup/RadioGroup.svelte +48 -47
- package/dist/components/radiogroup/RadioGroup.svelte.d.ts +28 -9
- package/dist/components/radiogroup/RadioGroup.svelte.d.ts.map +1 -1
- package/dist/components/segmentedcontrol/README.md +19 -0
- package/dist/components/segmentedcontrol/SegmentedControl.js +4 -0
- package/dist/components/segmentedcontrol/SegmentedControl.js.map +1 -0
- package/dist/components/segmentedcontrol/SegmentedControl.spec.js +52 -0
- package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts +8 -0
- package/dist/components/segmentedcontrol/SegmentedControl.stories.d.ts.map +1 -0
- package/dist/components/segmentedcontrol/SegmentedControl.stories.js +54 -0
- package/dist/components/segmentedcontrol/SegmentedControl.svelte +125 -0
- package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts +32 -0
- package/dist/components/segmentedcontrol/SegmentedControl.svelte.d.ts.map +1 -0
- package/dist/components/select/README.md +18 -0
- package/dist/components/select/Select.js +2 -2
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.spec.js +76 -0
- package/dist/components/select/Select.stories.d.ts +10 -14
- package/dist/components/select/Select.stories.d.ts.map +1 -1
- package/dist/components/select/Select.stories.js +87 -92
- package/dist/components/select/Select.svelte +57 -44
- package/dist/components/select/Select.svelte.d.ts +42 -11
- package/dist/components/select/Select.svelte.d.ts.map +1 -1
- package/dist/components/statusbadge/README.md +11 -0
- package/dist/components/statusbadge/StatusBadge.js +2 -2
- package/dist/components/statusbadge/StatusBadge.js.map +1 -1
- package/dist/components/statusbadge/StatusBadge.spec.js +31 -0
- package/dist/components/statusbadge/StatusBadge.stories.d.ts +9 -12
- package/dist/components/statusbadge/StatusBadge.stories.d.ts.map +1 -1
- package/dist/components/statusbadge/StatusBadge.stories.js +21 -44
- package/dist/components/statusbadge/StatusBadge.svelte +14 -6
- package/dist/components/statusbadge/StatusBadge.svelte.d.ts +13 -28
- package/dist/components/statusbadge/StatusBadge.svelte.d.ts.map +1 -1
- package/dist/components/statusdot/README.md +11 -0
- package/dist/components/statusdot/StatusDot.js +2 -2
- package/dist/components/statusdot/StatusDot.js.map +1 -1
- package/dist/components/statusdot/StatusDot.spec.js +36 -0
- package/dist/components/statusdot/StatusDot.stories.d.ts.map +1 -1
- package/dist/components/statusdot/StatusDot.stories.js +9 -37
- package/dist/components/statusdot/StatusDot.svelte +5 -9
- package/dist/components/statusdot/StatusDot.svelte.d.ts +2 -2
- package/dist/components/statusdot/StatusDot.svelte.d.ts.map +1 -1
- package/dist/components/statusnotification/README.md +25 -0
- package/dist/components/statusnotification/StatusNotification.js +2 -6
- package/dist/components/statusnotification/StatusNotification.js.map +1 -1
- package/dist/components/statusnotification/StatusNotification.spec.js +54 -0
- package/dist/components/statusnotification/StatusNotification.stories.d.ts +16 -14
- package/dist/components/statusnotification/StatusNotification.stories.d.ts.map +1 -1
- package/dist/components/statusnotification/StatusNotification.stories.js +53 -86
- package/dist/components/statusnotification/StatusNotification.svelte +53 -64
- package/dist/components/statusnotification/StatusNotification.svelte.d.ts +21 -18
- package/dist/components/statusnotification/StatusNotification.svelte.d.ts.map +1 -1
- package/dist/components/tab/README.md +20 -0
- package/dist/components/tab/Tab.js +4 -0
- package/dist/components/tab/Tab.js.map +1 -0
- package/dist/components/tab/Tab.spec.js +58 -0
- package/dist/components/{tabs → tab}/Tab.svelte +44 -30
- package/dist/components/{tabs → tab}/Tab.svelte.d.ts +20 -3
- package/dist/components/tab/Tab.svelte.d.ts.map +1 -0
- package/dist/components/tabs/README.md +18 -0
- package/dist/components/tabs/Tabs.js +2 -2
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/Tabs.spec.js +51 -0
- package/dist/components/tabs/Tabs.stories.d.ts +9 -6
- package/dist/components/tabs/Tabs.stories.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.stories.js +59 -115
- package/dist/components/tabs/Tabs.svelte +27 -7
- package/dist/components/tabs/Tabs.svelte.d.ts +21 -7
- package/dist/components/tabs/Tabs.svelte.d.ts.map +1 -1
- package/dist/components/tags/README.md +9 -0
- package/dist/components/tags/Tag.js +1 -1
- package/dist/components/tags/TagContextualised.js +2 -2
- package/dist/components/tags/TagContextualised.js.map +1 -1
- package/dist/components/tags/TagContextualised.svelte +1 -5
- package/dist/components/tags/TagInteractive.js +1 -1
- package/dist/components/tags/TagRemovable.js +2 -2
- package/dist/components/tags/TagRemovable.js.map +1 -1
- package/dist/components/tags/TagRemovable.svelte +2 -12
- package/dist/components/tags/TagRemovable.svelte.d.ts.map +1 -1
- package/dist/components/tags/TagSelectable.js +2 -2
- package/dist/components/tags/TagSelectable.js.map +1 -1
- package/dist/components/tags/TagSelectable.svelte +1 -5
- package/dist/components/tags/Tags.stories.d.ts.map +1 -1
- package/dist/components/tags/Tags.stories.js +7 -1
- package/dist/components/tags/TagsContextualised.stories.d.ts.map +1 -1
- package/dist/components/tags/TagsContextualised.stories.js +7 -1
- package/dist/components/tags/TagsInteractive.stories.d.ts.map +1 -1
- package/dist/components/tags/TagsInteractive.stories.js +7 -1
- package/dist/components/tags/TagsRemovable.stories.d.ts.map +1 -1
- package/dist/components/tags/TagsRemovable.stories.js +8 -4
- package/dist/components/tags/TagsSelectable.stories.d.ts.map +1 -1
- package/dist/components/tags/TagsSelectable.stories.js +7 -1
- package/dist/components/textarea/README.md +19 -0
- package/dist/components/textarea/Textarea.js +2 -5
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/textarea/Textarea.spec.js +67 -0
- package/dist/components/textarea/Textarea.stories.d.ts +9 -13
- package/dist/components/textarea/Textarea.stories.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.stories.js +61 -92
- package/dist/components/textarea/Textarea.svelte +51 -97
- package/dist/components/textarea/Textarea.svelte.d.ts +43 -13
- package/dist/components/textarea/Textarea.svelte.d.ts.map +1 -1
- package/dist/components/textinput/README.md +26 -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 +89 -0
- package/dist/components/textinput/Textinput.stories.d.ts +11 -12
- package/dist/components/textinput/Textinput.stories.d.ts.map +1 -1
- package/dist/components/textinput/Textinput.stories.js +78 -137
- package/dist/components/textinput/Textinput.svelte +68 -118
- package/dist/components/textinput/Textinput.svelte.d.ts +47 -23
- package/dist/components/textinput/Textinput.svelte.d.ts.map +1 -1
- package/dist/components/toaster/README.md +29 -0
- package/dist/components/toaster/Toaster.js +3 -7
- package/dist/components/toaster/Toaster.js.map +1 -1
- package/dist/components/toaster/Toaster.spec.js +100 -0
- package/dist/components/toaster/Toaster.stories.d.ts.map +1 -1
- package/dist/components/toaster/Toaster.stories.js +5 -73
- package/dist/components/toaster/Toaster.svelte +21 -14
- package/dist/components/toaster/Toaster.svelte.d.ts +7 -0
- package/dist/components/toaster/Toaster.svelte.d.ts.map +1 -1
- package/dist/components/toggle/README.md +15 -0
- package/dist/components/toggle/Toggle.js +2 -2
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toggle/Toggle.spec.js +69 -0
- package/dist/components/toggle/Toggle.stories.d.ts +9 -14
- package/dist/components/toggle/Toggle.stories.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.stories.js +55 -64
- package/dist/components/toggle/Toggle.svelte +33 -33
- package/dist/components/toggle/Toggle.svelte.d.ts +26 -7
- package/dist/components/toggle/Toggle.svelte.d.ts.map +1 -1
- package/dist/components/togglegroup/README.md +13 -0
- package/dist/components/togglegroup/ToggleGroup.js +3 -3
- package/dist/components/togglegroup/ToggleGroup.js.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.spec.js +50 -0
- package/dist/components/togglegroup/ToggleGroup.stories.d.ts +5 -13
- package/dist/components/togglegroup/ToggleGroup.stories.d.ts.map +1 -1
- package/dist/components/togglegroup/ToggleGroup.stories.js +56 -104
- package/dist/components/togglegroup/ToggleGroup.svelte +55 -58
- package/dist/components/togglegroup/ToggleGroup.svelte.d.ts +25 -14
- package/dist/components/togglegroup/ToggleGroup.svelte.d.ts.map +1 -1
- package/dist/components/tooltip/README.md +19 -0
- package/dist/components/tooltip/Tooltip.js +2 -2
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/Tooltip.spec.js +38 -0
- package/dist/components/tooltip/Tooltip.stories.d.ts +6 -7
- package/dist/components/tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.stories.js +45 -59
- package/dist/components/tooltip/Tooltip.svelte +19 -14
- package/dist/components/tooltip/Tooltip.svelte.d.ts +17 -0
- package/dist/components/tooltip/Tooltip.svelte.d.ts.map +1 -1
- package/dist/custom-element-forward-events.js.map +1 -1
- package/dist/custom-element.js +3 -3
- package/dist/custom-element.js.map +1 -1
- package/dist/documentation/Contributing.mdx +1 -1
- package/dist/documentation/Introduction.mdx +54 -11
- package/dist/documentation/SupportAndOnboarding.mdx +2 -2
- package/dist/documentation/Svelte/Introduction.mdx +1 -1
- package/dist/documentation/Svelte/usingPresets.mdx +5 -6
- package/dist/documentation/WebComponents/Introduction.mdx +0 -1
- package/dist/documentation/WebComponents/usingIcons.mdx +2 -3
- package/dist/documentation/WebComponents/usingPresets.mdx +3 -4
- 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/input.js +1 -1
- package/dist/input.js.map +1 -1
- package/dist/legacy.js +1 -1
- package/dist/main.d.ts +25 -23
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +25 -23
- package/dist/slot.js +1 -1
- package/dist/slot.js.map +1 -1
- package/dist/this.js +2 -0
- package/dist/this.js.map +1 -0
- package/dist/utils/custom-element-forward-events.d.ts.map +1 -1
- package/package.json +32 -22
- package/dist/components/button/button.types.d.ts +0 -13
- package/dist/components/button/button.types.d.ts.map +0 -1
- package/dist/components/button/button.types.js +0 -1
- package/dist/components/checkboxgroup/checkboxgroup.types.d.ts +0 -9
- package/dist/components/checkboxgroup/checkboxgroup.types.d.ts.map +0 -1
- package/dist/components/checkboxgroup/checkboxgroup.types.js +0 -1
- package/dist/components/link/link.types.d.ts +0 -4
- package/dist/components/link/link.types.d.ts.map +0 -1
- package/dist/components/link/link.types.js +0 -1
- package/dist/components/loader/loader.types.d.ts +0 -3
- package/dist/components/loader/loader.types.d.ts.map +0 -1
- package/dist/components/loader/loader.types.js +0 -1
- package/dist/components/numberbadge/NumberBadge.types.d.ts +0 -3
- package/dist/components/numberbadge/NumberBadge.types.d.ts.map +0 -1
- package/dist/components/numberbadge/NumberBadge.types.js +0 -1
- package/dist/components/overlayloader/OverlayLoader.js +0 -27
- package/dist/components/overlayloader/OverlayLoader.js.map +0 -1
- package/dist/components/overlayloader/OverlayLoader.stories.d.ts +0 -8
- package/dist/components/overlayloader/OverlayLoader.stories.d.ts.map +0 -1
- package/dist/components/overlayloader/OverlayLoader.stories.js +0 -50
- package/dist/components/overlayloader/OverlayLoader.svelte +0 -160
- package/dist/components/overlayloader/OverlayLoader.svelte.d.ts +0 -9
- package/dist/components/overlayloader/OverlayLoader.svelte.d.ts.map +0 -1
- package/dist/components/quantityselector/quantitySelector.types.d.ts +0 -2
- package/dist/components/quantityselector/quantitySelector.types.d.ts.map +0 -1
- package/dist/components/quantityselector/quantitySelector.types.js +0 -1
- package/dist/components/radiogroup/radioGroup.types.d.ts +0 -9
- package/dist/components/radiogroup/radioGroup.types.d.ts.map +0 -1
- package/dist/components/radiogroup/radioGroup.types.js +0 -1
- package/dist/components/select/select.types.d.ts +0 -9
- package/dist/components/select/select.types.d.ts.map +0 -1
- package/dist/components/select/select.types.js +0 -1
- package/dist/components/statusbadge/StatusBadge.types.d.ts +0 -2
- package/dist/components/statusbadge/StatusBadge.types.d.ts.map +0 -1
- package/dist/components/statusbadge/StatusBadge.types.js +0 -1
- package/dist/components/statusdot/StatusDot.types.d.ts +0 -3
- package/dist/components/statusdot/StatusDot.types.d.ts.map +0 -1
- package/dist/components/statusdot/StatusDot.types.js +0 -1
- package/dist/components/tabs/Tab.js +0 -4
- package/dist/components/tabs/Tab.js.map +0 -1
- package/dist/components/tabs/Tab.svelte.d.ts.map +0 -1
- package/dist/components/textinput/textinput.types.d.ts +0 -3
- package/dist/components/textinput/textinput.types.d.ts.map +0 -1
- package/dist/components/textinput/textinput.types.js +0 -1
- package/dist/components/toggle/toggle.types.d.ts +0 -2
- package/dist/components/toggle/toggle.types.d.ts.map +0 -1
- package/dist/components/toggle/toggle.types.js +0 -1
- package/dist/index-client.js +0 -2
- package/dist/index-client.js.map +0 -1
- package/dist/snippet.js +0 -2
- package/dist/snippet.js.map +0 -1
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { render, fireEvent } from '@testing-library/svelte';
|
|
3
|
+
import Pincode from './Pincode.svelte';
|
|
4
|
+
describe('m-pincode component', () => {
|
|
5
|
+
const baseProps = {
|
|
6
|
+
id: 'test-pincode',
|
|
7
|
+
length: 4,
|
|
8
|
+
};
|
|
9
|
+
it('renders correct number of inputs', () => {
|
|
10
|
+
const { container } = render(Pincode, { props: baseProps });
|
|
11
|
+
const inputs = container.querySelectorAll('input');
|
|
12
|
+
expect(inputs.length).toBe(4);
|
|
13
|
+
});
|
|
14
|
+
it('displays initial value correctly', () => {
|
|
15
|
+
const value = '1234';
|
|
16
|
+
const { container } = render(Pincode, { props: { ...baseProps, value } });
|
|
17
|
+
const inputs = container.querySelectorAll('input');
|
|
18
|
+
inputs.forEach((input, i) => {
|
|
19
|
+
expect(input.value).toBe(value[i]);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
it('focuses next input on input', async () => {
|
|
23
|
+
const { container } = render(Pincode, { props: baseProps });
|
|
24
|
+
const inputs = container.querySelectorAll('input');
|
|
25
|
+
await fireEvent.input(inputs[0], { target: { value: '5' } });
|
|
26
|
+
expect(document.activeElement).toBe(inputs[1]);
|
|
27
|
+
});
|
|
28
|
+
it('applies disabled and readonly props', () => {
|
|
29
|
+
const { container } = render(Pincode, {
|
|
30
|
+
props: { ...baseProps, disabled: true, readonly: true },
|
|
31
|
+
});
|
|
32
|
+
const inputs = container.querySelectorAll('input');
|
|
33
|
+
inputs.forEach((input) => {
|
|
34
|
+
expect(input).toBeDisabled();
|
|
35
|
+
expect(input).toHaveAttribute('readonly');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
it('applies invalid class when isinvalid is true', () => {
|
|
39
|
+
const { container } = render(Pincode, {
|
|
40
|
+
props: { ...baseProps, isinvalid: true },
|
|
41
|
+
});
|
|
42
|
+
const inputs = container.querySelectorAll('input');
|
|
43
|
+
inputs.forEach((input) => {
|
|
44
|
+
expect(input.classList.contains('is-invalid')).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
it('emits input event with concatenated value on input', async () => {
|
|
48
|
+
const { container } = render(Pincode, { props: baseProps });
|
|
49
|
+
const root = container.querySelector('.mc-pincode-input');
|
|
50
|
+
const inputHandler = vi.fn();
|
|
51
|
+
root.addEventListener('input', inputHandler);
|
|
52
|
+
const inputs = container.querySelectorAll('input');
|
|
53
|
+
await fireEvent.input(inputs[0], { target: { value: '1' } });
|
|
54
|
+
await fireEvent.input(inputs[1], { target: { value: '2' } });
|
|
55
|
+
expect(inputHandler).toHaveBeenCalled();
|
|
56
|
+
const lastEvent = inputHandler.mock.calls[inputHandler.mock.calls.length - 1][0];
|
|
57
|
+
expect(lastEvent.detail.value).toBe('12');
|
|
58
|
+
});
|
|
59
|
+
it('handles backspace key to clear previous input and focus', async () => {
|
|
60
|
+
const { container } = render(Pincode, { props: baseProps });
|
|
61
|
+
const inputs = container.querySelectorAll('input');
|
|
62
|
+
await fireEvent.input(inputs[0], { target: { value: '1' } });
|
|
63
|
+
await fireEvent.input(inputs[1], { target: { value: '' } });
|
|
64
|
+
await fireEvent.keyDown(inputs[1], { key: 'Backspace' });
|
|
65
|
+
expect(inputs[0].value).toBe('');
|
|
66
|
+
expect(document.activeElement).toBe(inputs[0]);
|
|
67
|
+
});
|
|
68
|
+
it('handles arrow navigation keys', async () => {
|
|
69
|
+
const { container } = render(Pincode, { props: baseProps });
|
|
70
|
+
const inputs = container.querySelectorAll('input');
|
|
71
|
+
inputs[1].focus();
|
|
72
|
+
await fireEvent.keyDown(inputs[1], { key: 'ArrowLeft' });
|
|
73
|
+
expect(document.activeElement).toBe(inputs[0]);
|
|
74
|
+
inputs[0].focus();
|
|
75
|
+
await fireEvent.keyDown(inputs[0], { key: 'ArrowRight' });
|
|
76
|
+
expect(document.activeElement).toBe(inputs[1]);
|
|
77
|
+
});
|
|
78
|
+
it('handles paste event correctly', async () => {
|
|
79
|
+
const { container } = render(Pincode, { props: baseProps });
|
|
80
|
+
const root = container.querySelector('.mc-pincode-input');
|
|
81
|
+
const inputHandler = vi.fn();
|
|
82
|
+
root.addEventListener('input', inputHandler);
|
|
83
|
+
const pasteEvent = new Event('paste', {
|
|
84
|
+
bubbles: true,
|
|
85
|
+
cancelable: true,
|
|
86
|
+
});
|
|
87
|
+
Object.defineProperty(pasteEvent, 'clipboardData', {
|
|
88
|
+
value: {
|
|
89
|
+
getData: () => '9876',
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
await root.dispatchEvent(pasteEvent);
|
|
93
|
+
expect(inputHandler).toHaveBeenCalled();
|
|
94
|
+
const inputs = container.querySelectorAll('input');
|
|
95
|
+
inputs.forEach((input, i) => {
|
|
96
|
+
expect(input.value).toBe('9876'[i]);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import type { Meta } from '@storybook/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare const
|
|
7
|
-
export
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
10
|
-
export declare const WithInitialValue: any;
|
|
11
|
-
export declare const Disabled: any;
|
|
12
|
-
export declare const Readonly: any;
|
|
13
|
-
export declare const Invalid: any;
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/web-components-vite';
|
|
2
|
+
declare const meta: Meta;
|
|
3
|
+
export default meta;
|
|
4
|
+
type Story = StoryObj;
|
|
5
|
+
export declare const WithValue: Story;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const Disabled: Story;
|
|
8
|
+
export declare const ReadOnly: Story;
|
|
9
|
+
export declare const Invalid: Story;
|
|
14
10
|
//# sourceMappingURL=Pincode.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pincode.stories.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Pincode.stories.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAKrE,QAAA,MAAM,IAAI,EAAE,IA6CX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}
|
|
@@ -1,140 +1,75 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { html } from 'lit';
|
|
2
|
+
import { ifDefined } from 'lit-html/directives/if-defined.js';
|
|
2
3
|
import { action } from 'storybook/actions';
|
|
3
|
-
|
|
4
|
-
* The `MPincode` component is the **Svelte / WebComponent** implementation
|
|
5
|
-
* of the Mozaic Pincode Input.
|
|
6
|
-
*/
|
|
7
|
-
export default {
|
|
4
|
+
const meta = {
|
|
8
5
|
title: 'Form Elements/Pincode',
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
args: {
|
|
12
|
-
id: 'pincode-demo',
|
|
13
|
-
name: 'otp',
|
|
14
|
-
length: 6,
|
|
15
|
-
value: '',
|
|
16
|
-
isInvalid: false,
|
|
17
|
-
disabled: false,
|
|
18
|
-
readonly: false,
|
|
19
|
-
},
|
|
6
|
+
component: 'm-pincode',
|
|
7
|
+
tags: ['v2'],
|
|
20
8
|
argTypes: {
|
|
21
|
-
id: {
|
|
22
|
-
description: 'Identifiant unique du pincode',
|
|
23
|
-
control: 'text',
|
|
24
|
-
},
|
|
25
|
-
name: {
|
|
26
|
-
description: 'Attribut name pour la soumission de formulaire',
|
|
27
|
-
control: 'text',
|
|
28
|
-
},
|
|
29
9
|
length: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
description: 'Valeur initiale/contrôlée du pincode',
|
|
36
|
-
control: 'text',
|
|
37
|
-
},
|
|
38
|
-
isInvalid: {
|
|
39
|
-
description: 'Applique l’état invalide',
|
|
40
|
-
control: 'boolean',
|
|
41
|
-
table: { category: 'State' },
|
|
42
|
-
},
|
|
43
|
-
disabled: {
|
|
44
|
-
description: 'Désactive le pincode',
|
|
45
|
-
control: 'boolean',
|
|
46
|
-
table: { category: 'State' },
|
|
47
|
-
},
|
|
48
|
-
readonly: {
|
|
49
|
-
description: 'Lecture seule',
|
|
50
|
-
control: 'boolean',
|
|
51
|
-
table: { category: 'State' },
|
|
10
|
+
control: {
|
|
11
|
+
type: 'number',
|
|
12
|
+
min: 4,
|
|
13
|
+
max: 6,
|
|
14
|
+
},
|
|
52
15
|
},
|
|
53
16
|
input: {
|
|
54
|
-
|
|
55
|
-
table: { category: 'Events' },
|
|
56
|
-
action: 'input',
|
|
57
|
-
},
|
|
58
|
-
change: {
|
|
59
|
-
description: 'Émis à chaque changement (CustomEvent<{ value: string }>)',
|
|
60
|
-
table: { category: 'Events' },
|
|
61
|
-
action: 'change',
|
|
17
|
+
control: false,
|
|
62
18
|
},
|
|
63
19
|
},
|
|
20
|
+
args: {
|
|
21
|
+
id: 'pincodeId',
|
|
22
|
+
},
|
|
23
|
+
render: (args) => {
|
|
24
|
+
const onInput = action('input');
|
|
25
|
+
const onFocus = action('focus');
|
|
26
|
+
const onBlur = action('blur');
|
|
27
|
+
return html `
|
|
28
|
+
<m-pincode
|
|
29
|
+
id=${ifDefined(args.id)}
|
|
30
|
+
name=${ifDefined(args.name)}
|
|
31
|
+
value=${ifDefined(args.value)}
|
|
32
|
+
length=${ifDefined(args.length)}
|
|
33
|
+
isinvalid=${ifDefined(args.isinvalid)}
|
|
34
|
+
disabled=${ifDefined(args.disabled)}
|
|
35
|
+
readonly=${ifDefined(args.readonly)}
|
|
36
|
+
@input=${(event) => {
|
|
37
|
+
onInput(event);
|
|
38
|
+
}}
|
|
39
|
+
@focus=${(event) => {
|
|
40
|
+
onFocus(event);
|
|
41
|
+
}}
|
|
42
|
+
@blur=${(event) => {
|
|
43
|
+
onBlur(event);
|
|
44
|
+
}}
|
|
45
|
+
></m-pincode>
|
|
46
|
+
`;
|
|
47
|
+
},
|
|
64
48
|
};
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
el.setAttribute('name', args.name);
|
|
72
|
-
if (args.length)
|
|
73
|
-
el.setAttribute('length', String(args.length));
|
|
74
|
-
if (args.value)
|
|
75
|
-
el.setAttribute('value', String(args.value));
|
|
76
|
-
if (args.isInvalid)
|
|
77
|
-
el.setAttribute('isinvalid', 'true');
|
|
78
|
-
if (args.disabled)
|
|
79
|
-
el.setAttribute('disabled', 'true');
|
|
80
|
-
if (args.readonly)
|
|
81
|
-
el.setAttribute('readonly', 'true');
|
|
82
|
-
// Actions Storybook
|
|
83
|
-
el.addEventListener('input', action('input'));
|
|
84
|
-
el.addEventListener('change', action('change'));
|
|
85
|
-
return el;
|
|
86
|
-
};
|
|
87
|
-
export const Default = Template.bind({});
|
|
88
|
-
Default.args = {};
|
|
89
|
-
Default.play = async ({ canvasElement }) => {
|
|
90
|
-
const host = canvasElement.querySelector('m-pincode');
|
|
91
|
-
const root = host.shadowRoot;
|
|
92
|
-
const inputs = root.querySelectorAll('.mc-pincode-input__control');
|
|
93
|
-
expect(inputs.length).toBe(6);
|
|
94
|
-
await userEvent.click(inputs[0]);
|
|
95
|
-
await userEvent.type(inputs[0], '123456');
|
|
96
|
-
const joined = Array.from(inputs)
|
|
97
|
-
.map((i) => i.value)
|
|
98
|
-
.join('');
|
|
99
|
-
expect(joined).toBe('123456');
|
|
100
|
-
};
|
|
101
|
-
export const FourDigits = Template.bind({});
|
|
102
|
-
FourDigits.args = { length: 4 };
|
|
103
|
-
FourDigits.play = async ({ canvasElement }) => {
|
|
104
|
-
const host = canvasElement.querySelector('m-pincode');
|
|
105
|
-
const vals = Array.from(host.shadowRoot.querySelectorAll('.mc-pincode-input__control'));
|
|
106
|
-
expect(vals.length).toBe(4);
|
|
107
|
-
await userEvent.type(vals[0], '9876');
|
|
108
|
-
expect(vals.map((i) => i.value).join('')).toBe('9876');
|
|
109
|
-
};
|
|
110
|
-
export const WithInitialValue = Template.bind({});
|
|
111
|
-
WithInitialValue.args = { length: 4, value: '2468' };
|
|
112
|
-
WithInitialValue.play = async ({ canvasElement }) => {
|
|
113
|
-
const host = canvasElement.querySelector('m-pincode');
|
|
114
|
-
const inputs = host.shadowRoot.querySelectorAll('.mc-pincode-input__control');
|
|
115
|
-
const joined = Array.from(inputs)
|
|
116
|
-
.map((i) => i.value)
|
|
117
|
-
.join('');
|
|
118
|
-
expect(joined).toBe('2468'.padEnd(inputs.length, ''));
|
|
49
|
+
export default meta;
|
|
50
|
+
export const WithValue = {
|
|
51
|
+
args: {
|
|
52
|
+
id: 'valueId',
|
|
53
|
+
value: '123098',
|
|
54
|
+
},
|
|
119
55
|
};
|
|
120
|
-
export const
|
|
121
|
-
Disabled
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
56
|
+
export const Default = {};
|
|
57
|
+
export const Disabled = {
|
|
58
|
+
args: {
|
|
59
|
+
id: 'disableId',
|
|
60
|
+
disabled: true,
|
|
61
|
+
},
|
|
126
62
|
};
|
|
127
|
-
export const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
63
|
+
export const ReadOnly = {
|
|
64
|
+
args: {
|
|
65
|
+
id: 'readonlyId',
|
|
66
|
+
value: '123098',
|
|
67
|
+
readonly: true,
|
|
68
|
+
},
|
|
133
69
|
};
|
|
134
|
-
export const Invalid =
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
expect(container.classList.contains('is-invalid')).toBe(true);
|
|
70
|
+
export const Invalid = {
|
|
71
|
+
args: {
|
|
72
|
+
id: 'invalidId',
|
|
73
|
+
isinvalid: true,
|
|
74
|
+
},
|
|
140
75
|
};
|
|
@@ -1,67 +1,78 @@
|
|
|
1
1
|
<svelte:options customElement={{ tag: 'm-pincode' }} />
|
|
2
2
|
|
|
3
3
|
<script lang="ts">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
/**
|
|
5
|
+
* A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.
|
|
6
|
+
*
|
|
7
|
+
* @event input {CustomEvent<{ value: string }>} - Emits when the pincode value changes.
|
|
8
|
+
*/
|
|
7
9
|
interface Props {
|
|
10
|
+
/**
|
|
11
|
+
* A unique identifier for the pincode element, used to associate the label with the form element.
|
|
12
|
+
*/
|
|
8
13
|
id: string;
|
|
9
|
-
|
|
14
|
+
/**
|
|
15
|
+
* The number of input displayed in the pincode element.
|
|
16
|
+
*/
|
|
17
|
+
length?: 4 | 5 | 6;
|
|
18
|
+
/**
|
|
19
|
+
* The name attribute for the pincode element, typically used for form submission.
|
|
20
|
+
*/
|
|
10
21
|
name?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The current value of the pincode field.
|
|
24
|
+
*/
|
|
11
25
|
value?: string | number;
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* If `true`, applies an invalid state to the pincode.
|
|
28
|
+
*/
|
|
29
|
+
isinvalid?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* If `true`, disables the pincode, making it non-interactive.
|
|
32
|
+
*/
|
|
13
33
|
disabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* If `true`, the pincode is read-only (cannot be edited).
|
|
36
|
+
*/
|
|
14
37
|
readonly?: boolean;
|
|
15
|
-
[key: string]: any;
|
|
16
38
|
}
|
|
17
39
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let {
|
|
21
|
-
id,
|
|
22
|
-
length = 6,
|
|
23
|
-
name,
|
|
24
|
-
value = '',
|
|
25
|
-
isInvalid = false,
|
|
26
|
-
disabled = false,
|
|
27
|
-
readonly = false,
|
|
28
|
-
...attrsAndEvents
|
|
29
|
-
}: Props = $props();
|
|
40
|
+
let { id, length = 6, name, value, isinvalid, disabled, readonly }: Props = $props();
|
|
30
41
|
|
|
31
|
-
|
|
32
|
-
const L = $derived(
|
|
33
|
-
typeof length === 'string' ? parseInt(length, 10) || 6 : length,
|
|
34
|
-
);
|
|
42
|
+
const L = $derived(typeof length === 'string' ? parseInt(length, 10) || 6 : length);
|
|
35
43
|
|
|
36
|
-
// État minimal
|
|
37
44
|
let otp = $state<string[]>(Array(L).fill(''));
|
|
38
45
|
let inputs = $state<HTMLInputElement[]>([]);
|
|
46
|
+
let element: HTMLElement;
|
|
39
47
|
|
|
40
|
-
// Sync depuis props (value/length normalisé)
|
|
41
48
|
$effect(() => {
|
|
42
49
|
const incoming = String(value ?? '');
|
|
43
50
|
otp = Array.from({ length: L }, (_, i) => incoming[i] ?? '');
|
|
44
51
|
});
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
const focusInput = (i: number) => {
|
|
47
54
|
queueMicrotask(() => inputs?.[i]?.focus());
|
|
48
|
-
}
|
|
55
|
+
};
|
|
49
56
|
|
|
50
|
-
|
|
57
|
+
const emitInput = () => {
|
|
51
58
|
const joined = otp.join('');
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
59
|
+
const event = new CustomEvent('input', {
|
|
60
|
+
detail: { value: joined },
|
|
61
|
+
bubbles: true,
|
|
62
|
+
composed: true,
|
|
63
|
+
});
|
|
64
|
+
element.dispatchEvent(event);
|
|
65
|
+
};
|
|
55
66
|
|
|
56
|
-
|
|
67
|
+
const onInput = (e: Event, index: number) => {
|
|
57
68
|
const el = e.target as HTMLInputElement;
|
|
58
69
|
const digit = el.value.replace(/\D/g, '').slice(0, 1);
|
|
59
70
|
otp[index] = digit;
|
|
60
|
-
|
|
71
|
+
emitInput();
|
|
61
72
|
if (digit && index + 1 < L) focusInput(index + 1);
|
|
62
|
-
}
|
|
73
|
+
};
|
|
63
74
|
|
|
64
|
-
|
|
75
|
+
const onKeyDown = (e: KeyboardEvent, index: number) => {
|
|
65
76
|
if (e.key === 'ArrowLeft' && index > 0) {
|
|
66
77
|
e.preventDefault();
|
|
67
78
|
focusInput(index - 1);
|
|
@@ -70,34 +81,26 @@
|
|
|
70
81
|
focusInput(index + 1);
|
|
71
82
|
} else if (e.key === 'Backspace' && otp[index] === '' && index > 0) {
|
|
72
83
|
otp[index - 1] = '';
|
|
73
|
-
|
|
84
|
+
emitInput();
|
|
74
85
|
focusInput(index - 1);
|
|
75
86
|
}
|
|
76
|
-
}
|
|
87
|
+
};
|
|
77
88
|
|
|
78
|
-
|
|
89
|
+
const onPaste = (e: ClipboardEvent) => {
|
|
79
90
|
e.preventDefault();
|
|
80
|
-
const pasted = (e.clipboardData?.getData('text') ?? '')
|
|
81
|
-
.replace(/\D/g, '')
|
|
82
|
-
.slice(0, L);
|
|
91
|
+
const pasted = (e.clipboardData?.getData('text') ?? '').replace(/\D/g, '').slice(0, L);
|
|
83
92
|
otp = Array.from({ length: L }, (_, i) => pasted[i] ?? '');
|
|
84
|
-
|
|
93
|
+
emitInput();
|
|
85
94
|
focusInput(Math.min(pasted.length, L - 1));
|
|
86
|
-
}
|
|
95
|
+
};
|
|
87
96
|
</script>
|
|
88
97
|
|
|
89
|
-
<div
|
|
90
|
-
|
|
91
|
-
on:paste|preventDefault={onPaste}
|
|
92
|
-
class:is-invalid={isInvalid}
|
|
93
|
-
{...attrsAndEvents}
|
|
94
|
-
>
|
|
95
|
-
{#each Array(L) as _, i}
|
|
98
|
+
<div class="mc-pincode-input" onpaste={onPaste} bind:this={element}>
|
|
99
|
+
{#each [...Array(L).keys()] as i (i)}
|
|
96
100
|
<input
|
|
97
101
|
id={`pincodeItem${i}`}
|
|
98
102
|
bind:this={inputs[i]}
|
|
99
|
-
class=
|
|
100
|
-
class:is-invalid={isInvalid}
|
|
103
|
+
class={['mc-pincode-input__control', isinvalid && 'is-invalid']}
|
|
101
104
|
type="text"
|
|
102
105
|
inputmode="numeric"
|
|
103
106
|
maxlength="1"
|
|
@@ -107,8 +110,8 @@
|
|
|
107
110
|
{disabled}
|
|
108
111
|
{readonly}
|
|
109
112
|
value={otp[i]}
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
oninput={(e) => onInput(e, i)}
|
|
114
|
+
onkeydown={(e) => onKeyDown(e as KeyboardEvent, i)}
|
|
112
115
|
/>
|
|
113
116
|
{/each}
|
|
114
117
|
</div>
|
|
@@ -1,33 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.
|
|
3
|
+
*
|
|
4
|
+
* @event input {CustomEvent<{ value: string }>} - Emits when the pincode value changes.
|
|
5
|
+
*/
|
|
2
6
|
interface Props {
|
|
7
|
+
/**
|
|
8
|
+
* A unique identifier for the pincode element, used to associate the label with the form element.
|
|
9
|
+
*/
|
|
3
10
|
id: string;
|
|
4
|
-
|
|
11
|
+
/**
|
|
12
|
+
* The number of input displayed in the pincode element.
|
|
13
|
+
*/
|
|
14
|
+
length?: 4 | 5 | 6;
|
|
15
|
+
/**
|
|
16
|
+
* The name attribute for the pincode element, typically used for form submission.
|
|
17
|
+
*/
|
|
5
18
|
name?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The current value of the pincode field.
|
|
21
|
+
*/
|
|
6
22
|
value?: string | number;
|
|
7
|
-
|
|
23
|
+
/**
|
|
24
|
+
* If `true`, applies an invalid state to the pincode.
|
|
25
|
+
*/
|
|
26
|
+
isinvalid?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* If `true`, disables the pincode, making it non-interactive.
|
|
29
|
+
*/
|
|
8
30
|
disabled?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* If `true`, the pincode is read-only (cannot be edited).
|
|
33
|
+
*/
|
|
9
34
|
readonly?: boolean;
|
|
10
|
-
[key: string]: any;
|
|
11
35
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
$$bindings?: Bindings;
|
|
15
|
-
} & Exports;
|
|
16
|
-
(internal: unknown, props: Props & {
|
|
17
|
-
$$events?: Events;
|
|
18
|
-
$$slots?: Slots;
|
|
19
|
-
}): Exports & {
|
|
20
|
-
$set?: any;
|
|
21
|
-
$on?: any;
|
|
22
|
-
};
|
|
23
|
-
z_$$bindings?: Bindings;
|
|
24
|
-
}
|
|
25
|
-
declare const Pincode: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
26
|
-
input: CustomEvent<any>;
|
|
27
|
-
change: CustomEvent<any>;
|
|
28
|
-
} & {
|
|
29
|
-
[evt: string]: CustomEvent<any>;
|
|
30
|
-
}, {}, {}, "">;
|
|
31
|
-
type Pincode = InstanceType<typeof Pincode>;
|
|
36
|
+
declare const Pincode: import("svelte").Component<Props, {}, "">;
|
|
37
|
+
type Pincode = ReturnType<typeof Pincode>;
|
|
32
38
|
export default Pincode;
|
|
33
39
|
//# sourceMappingURL=Pincode.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pincode.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Pincode.svelte.d.ts","sourceRoot":"","sources":["../../../src/components/pincode/Pincode.svelte.ts"],"names":[],"mappings":"AAGE;;;;GAIG;AACH,UAAU,KAAK;IACb;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0EH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# `m-pincode`
|
|
2
|
+
|
|
3
|
+
A pincode input is a specialized input field used to enter short numeric codes, such as verification codes, security PINs, or authentication tokens. It typically separates each digit into individual fields to improve readability and ease of entry. This component is commonly used in two-factor authentication (2FA), password recovery, and secure access flows, ensuring a structured and user-friendly experience.
|
|
4
|
+
|
|
5
|
+
## Props
|
|
6
|
+
|
|
7
|
+
| Name | Description | Type | Default |
|
|
8
|
+
|------|-------------|------|---------|
|
|
9
|
+
| `id*` | A unique identifier for the pincode element, used to associate the label with the form element. | `string` | |
|
|
10
|
+
| `length` | The number of input displayed in the pincode element. | `4` `5` `6` | `6` |
|
|
11
|
+
| `name` | The name attribute for the pincode element, typically used for form submission. | `string` | |
|
|
12
|
+
| `value` | The current value of the pincode field. | `string` `number` | |
|
|
13
|
+
| `isinvalid` | If `true`, applies an invalid state to the pincode. | `boolean` | |
|
|
14
|
+
| `disabled` | If `true`, disables the pincode, making it non-interactive. | `boolean` | |
|
|
15
|
+
| `readonly` | If `true`, the pincode is read-only (cannot be edited). | `boolean` | |
|
|
16
|
+
|
|
17
|
+
## Events
|
|
18
|
+
|
|
19
|
+
| Name | Description | Type |
|
|
20
|
+
|------|------|-------------|
|
|
21
|
+
| `input` | Emits when the pincode value changes. | `CustomEvent<{ value: string }>` |
|
|
22
|
+
|