@getmicdrop/svelte-components 5.5.4 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/calendar/AboutShow/AboutShow.spec.d.ts +2 -0
- package/dist/calendar/AboutShow/AboutShow.spec.d.ts.map +1 -0
- package/dist/calendar/AboutShow/AboutShow.spec.js +791 -0
- package/dist/calendar/AboutShow/AboutShow.svelte +172 -172
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts +2 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.d.ts.map +1 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.spec.js +1191 -0
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
- package/dist/calendar/FAQs/FAQs.spec.d.ts +2 -0
- package/dist/calendar/FAQs/FAQs.spec.d.ts.map +1 -0
- package/dist/calendar/FAQs/FAQs.spec.js +238 -0
- package/dist/calendar/FAQs/FAQs.svelte +75 -75
- package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts +2 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.d.ts.map +1 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.spec.js +420 -0
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
- package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts +2 -0
- package/dist/calendar/OrderSummary/OrderSummary.spec.d.ts.map +1 -0
- package/dist/calendar/OrderSummary/OrderSummary.spec.js +808 -0
- package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
- package/dist/calendar/PublicCard/PublicCard.spec.d.ts +2 -0
- package/dist/calendar/PublicCard/PublicCard.spec.d.ts.map +1 -0
- package/dist/calendar/PublicCard/PublicCard.spec.js +301 -0
- package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
- package/dist/calendar/ShowCard/ShowCard.spec.d.ts +2 -0
- package/dist/calendar/ShowCard/ShowCard.spec.d.ts.map +1 -0
- package/dist/calendar/ShowCard/ShowCard.spec.js +714 -0
- package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts +2 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.d.ts.map +1 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.spec.js +241 -0
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
- package/dist/components/Layout/AppShell.svelte +104 -0
- package/dist/components/Layout/AppShell.svelte.d.ts +26 -0
- package/dist/components/Layout/AppShell.svelte.d.ts.map +1 -0
- package/dist/components/Layout/ContentSection.svelte +80 -0
- package/dist/components/Layout/ContentSection.svelte.d.ts +23 -0
- package/dist/components/Layout/ContentSection.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Grid.svelte +4 -4
- package/dist/components/Layout/Heading.svelte +81 -0
- package/dist/components/Layout/Heading.svelte.d.ts +24 -0
- package/dist/components/Layout/Heading.svelte.d.ts.map +1 -0
- package/dist/components/Layout/PageContainer.svelte +69 -0
- package/dist/components/Layout/PageContainer.svelte.d.ts +23 -0
- package/dist/components/Layout/PageContainer.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Responsive.svelte +75 -0
- package/dist/components/Layout/Responsive.svelte.d.ts +19 -0
- package/dist/components/Layout/Responsive.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Section.spec.d.ts +2 -0
- package/dist/components/Layout/Section.spec.d.ts.map +1 -0
- package/dist/components/Layout/Section.spec.js +149 -0
- package/dist/components/Layout/Section.svelte +80 -80
- package/dist/components/Layout/ShowOnDesktop.svelte +37 -0
- package/dist/components/Layout/ShowOnDesktop.svelte.d.ts +16 -0
- package/dist/components/Layout/ShowOnDesktop.svelte.d.ts.map +1 -0
- package/dist/components/Layout/ShowOnMobile.svelte +37 -0
- package/dist/components/Layout/ShowOnMobile.svelte.d.ts +16 -0
- package/dist/components/Layout/ShowOnMobile.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Sidebar.spec.d.ts +2 -0
- package/dist/components/Layout/Sidebar.spec.d.ts.map +1 -0
- package/dist/components/Layout/Sidebar.spec.js +186 -0
- package/dist/components/Layout/Sidebar.svelte +108 -108
- package/dist/components/Layout/Stack.spec.js +2 -2
- package/dist/components/Layout/Stack.svelte +6 -6
- package/dist/components/Layout/Text.svelte +87 -0
- package/dist/components/Layout/Text.svelte.d.ts +28 -0
- package/dist/components/Layout/Text.svelte.d.ts.map +1 -0
- package/dist/components/Layout/TwoColumn.svelte +108 -0
- package/dist/components/Layout/TwoColumn.svelte.d.ts +28 -0
- package/dist/components/Layout/TwoColumn.svelte.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Heading.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Heading.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Heading.test.js +123 -0
- package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/ShowOnDesktop.test.js +84 -0
- package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/ShowOnMobile.test.js +80 -0
- package/dist/components/Layout/__tests__/Text.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Text.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Text.test.js +146 -0
- package/dist/components/Layout/__tests__/TwoColumn.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/TwoColumn.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/TwoColumn.test.js +129 -0
- package/dist/constants/formOptions.spec.js +9 -5
- package/dist/constants/validation.js +91 -91
- package/dist/constants/validation.spec.js +64 -64
- package/dist/datetime/__tests__/timezone.test.js +123 -1
- package/dist/forms/createFieldTracker.spec.d.ts +2 -0
- package/dist/forms/createFieldTracker.spec.d.ts.map +1 -0
- package/dist/forms/createFieldTracker.spec.js +343 -0
- package/dist/forms/createFormStore.spec.d.ts +2 -0
- package/dist/forms/createFormStore.spec.d.ts.map +1 -0
- package/dist/forms/createFormStore.spec.js +689 -0
- package/dist/index.d.ts +4 -112
- package/dist/index.js +40 -226
- package/dist/patterns/data/DataGrid.spec.d.ts +2 -0
- package/dist/patterns/data/DataGrid.spec.d.ts.map +1 -0
- package/dist/patterns/data/DataGrid.spec.js +159 -0
- package/dist/patterns/data/DataGrid.svelte +45 -45
- package/dist/patterns/data/DataList.spec.d.ts +2 -0
- package/dist/patterns/data/DataList.spec.d.ts.map +1 -0
- package/dist/patterns/data/DataList.spec.js +158 -0
- package/dist/patterns/data/DataList.svelte +24 -24
- package/dist/patterns/data/DataTable.spec.d.ts +2 -0
- package/dist/patterns/data/DataTable.spec.d.ts.map +1 -0
- package/dist/patterns/data/DataTable.spec.js +196 -0
- package/dist/patterns/data/DataTable.svelte +36 -36
- package/dist/patterns/forms/FormActions.spec.js +95 -88
- package/dist/patterns/forms/FormActions.stories.svelte +97 -97
- package/dist/patterns/forms/FormActions.svelte +46 -46
- package/dist/patterns/forms/FormGrid.spec.d.ts +2 -0
- package/dist/patterns/forms/FormGrid.spec.d.ts.map +1 -0
- package/dist/patterns/forms/FormGrid.spec.js +125 -0
- package/dist/patterns/forms/FormGrid.svelte +33 -33
- package/dist/patterns/forms/FormSection.spec.d.ts +2 -0
- package/dist/patterns/forms/FormSection.spec.d.ts.map +1 -0
- package/dist/patterns/forms/FormSection.spec.js +153 -0
- package/dist/patterns/forms/FormSection.svelte +32 -32
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
- package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
- package/dist/patterns/layout/Sidebar.spec.d.ts +2 -0
- package/dist/patterns/layout/Sidebar.spec.d.ts.map +1 -0
- package/dist/patterns/layout/Sidebar.spec.js +159 -0
- package/dist/patterns/layout/Sidebar.svelte +39 -39
- package/dist/patterns/layout/index.d.ts +9 -0
- package/dist/patterns/layout/index.js +22 -0
- package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
- package/dist/patterns/navigation/BottomNav.svelte +64 -64
- package/dist/patterns/navigation/Header.spec.js +33 -24
- package/dist/patterns/navigation/Header.stories.svelte +77 -77
- package/dist/patterns/navigation/Header.svelte +193 -193
- package/dist/patterns/page/PageHeader.spec.d.ts +2 -0
- package/dist/patterns/page/PageHeader.spec.d.ts.map +1 -0
- package/dist/patterns/page/PageHeader.spec.js +167 -0
- package/dist/patterns/page/PageHeader.svelte +18 -18
- package/dist/patterns/page/PageLayout.spec.d.ts +2 -0
- package/dist/patterns/page/PageLayout.spec.d.ts.map +1 -0
- package/dist/patterns/page/PageLayout.spec.js +145 -0
- package/dist/patterns/page/PageLayout.svelte +40 -40
- package/dist/patterns/page/PageLoader.spec.js +57 -54
- package/dist/patterns/page/PageLoader.stories.svelte +137 -137
- package/dist/patterns/page/PageLoader.svelte +24 -24
- package/dist/patterns/page/SectionHeader.spec.d.ts +2 -0
- package/dist/patterns/page/SectionHeader.spec.d.ts.map +1 -0
- package/dist/patterns/page/SectionHeader.spec.js +197 -0
- package/dist/patterns/page/SectionHeader.svelte +29 -29
- package/dist/presets/badges.js +112 -112
- package/dist/presets/badges.spec.d.ts +2 -0
- package/dist/presets/badges.spec.d.ts.map +1 -0
- package/dist/presets/badges.spec.js +172 -0
- package/dist/presets/buttons.js +76 -76
- package/dist/presets/buttons.spec.d.ts +2 -0
- package/dist/presets/buttons.spec.d.ts.map +1 -0
- package/dist/presets/buttons.spec.js +135 -0
- package/dist/presets/index.js +9 -9
- package/dist/primitives/Accordion/Accordion.spec.d.ts +2 -0
- package/dist/primitives/Accordion/Accordion.spec.d.ts.map +1 -0
- package/dist/primitives/Accordion/Accordion.spec.js +83 -0
- package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
- package/dist/primitives/Accordion/Accordion.svelte +42 -42
- package/dist/primitives/Accordion/AccordionItem.spec.d.ts +2 -0
- package/dist/primitives/Accordion/AccordionItem.spec.d.ts.map +1 -0
- package/dist/primitives/Accordion/AccordionItem.spec.js +661 -0
- package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -0
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +35 -0
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -0
- package/dist/primitives/Alert/Alert.spec.js +173 -170
- package/dist/primitives/Alert/Alert.stories.svelte +88 -88
- package/dist/primitives/Alert/Alert.svelte +27 -27
- package/dist/primitives/Avatar/Avatar.spec.d.ts +2 -0
- package/dist/primitives/Avatar/Avatar.spec.d.ts.map +1 -0
- package/dist/primitives/Avatar/Avatar.spec.js +211 -0
- package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
- package/dist/primitives/Avatar/Avatar.svelte +66 -66
- package/dist/primitives/Badges/Badge.spec.js +144 -103
- package/dist/primitives/Badges/Badge.stories.svelte +86 -86
- package/dist/primitives/Badges/Badge.svelte +79 -79
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -127
- package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
- package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
- package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte +13 -0
- package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts +7 -0
- package/dist/primitives/BottomSheet/BottomSheetWrapper.test.svelte.d.ts.map +1 -0
- package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -120
- package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
- package/dist/primitives/Button/Button.spec.js +223 -211
- package/dist/primitives/Button/Button.stories.svelte +76 -76
- package/dist/primitives/Button/Button.svelte +270 -270
- package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -48
- package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
- package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts +2 -0
- package/dist/primitives/Button/ButtonVariantShowcase.spec.d.ts.map +1 -0
- package/dist/primitives/Button/ButtonVariantShowcase.spec.js +202 -0
- package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
- package/dist/primitives/Card.spec.js +49 -49
- package/dist/primitives/Card.stories.svelte +22 -22
- package/dist/primitives/Card.svelte +28 -28
- package/dist/primitives/Checkbox/Checkbox.spec.d.ts +2 -0
- package/dist/primitives/Checkbox/Checkbox.spec.d.ts.map +1 -0
- package/dist/primitives/Checkbox/Checkbox.spec.js +252 -0
- package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
- package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
- package/dist/primitives/DarkModeToggle.spec.js +390 -357
- package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
- package/dist/primitives/DarkModeToggle.svelte +136 -136
- package/dist/primitives/Drawer/Drawer.spec.d.ts +2 -0
- package/dist/primitives/Drawer/Drawer.spec.d.ts.map +1 -0
- package/dist/primitives/Drawer/Drawer.spec.js +212 -0
- package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
- package/dist/primitives/Drawer/Drawer.svelte +120 -120
- package/dist/primitives/Dropdown/Dropdown.spec.d.ts +2 -0
- package/dist/primitives/Dropdown/Dropdown.spec.d.ts.map +1 -0
- package/dist/primitives/Dropdown/Dropdown.spec.js +366 -0
- package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
- package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
- package/dist/primitives/Dropdown/DropdownItem.spec.d.ts +2 -0
- package/dist/primitives/Dropdown/DropdownItem.spec.d.ts.map +1 -0
- package/dist/primitives/Dropdown/DropdownItem.spec.js +182 -0
- package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
- package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
- package/dist/primitives/Icons/ArrowRight.svelte +8 -8
- package/dist/primitives/Icons/Availability.svelte +14 -14
- package/dist/primitives/Icons/Back.svelte +14 -14
- package/dist/primitives/Icons/CheckCircle.svelte +6 -6
- package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
- package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
- package/dist/primitives/Icons/ChevronRight.svelte +4 -4
- package/dist/primitives/Icons/Copy.svelte +15 -15
- package/dist/primitives/Icons/Cross.svelte +5 -5
- package/dist/primitives/Icons/DownArrow.svelte +8 -8
- package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
- package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
- package/dist/primitives/Icons/Home.svelte +15 -15
- package/dist/primitives/Icons/Icon.spec.js +169 -169
- package/dist/primitives/Icons/Icon.stories.svelte +100 -100
- package/dist/primitives/Icons/Icon.svelte +52 -52
- package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
- package/dist/primitives/Icons/Info.svelte +7 -7
- package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
- package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
- package/dist/primitives/Icons/Message.svelte +15 -15
- package/dist/primitives/Icons/MoonIcon.svelte +5 -5
- package/dist/primitives/Icons/More.svelte +21 -21
- package/dist/primitives/Icons/MoreHori.spec.js +61 -61
- package/dist/primitives/Icons/MoreHori.svelte +22 -22
- package/dist/primitives/Icons/Notification.svelte +14 -14
- package/dist/primitives/Icons/Payment.svelte +14 -14
- package/dist/primitives/Icons/Profile.svelte +21 -21
- package/dist/primitives/Icons/Reload.svelte +29 -29
- package/dist/primitives/Icons/Shows.svelte +21 -21
- package/dist/primitives/Icons/Signout.svelte +21 -21
- package/dist/primitives/Icons/SunIcon.svelte +8 -8
- package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
- package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
- package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
- package/dist/primitives/Icons/WarningIcon.svelte +5 -5
- package/dist/primitives/Icons/iconTestUtils.spec.d.ts +2 -0
- package/dist/primitives/Icons/iconTestUtils.spec.d.ts.map +1 -0
- package/dist/primitives/Icons/iconTestUtils.spec.js +235 -0
- package/dist/primitives/Input/Input.spec.js +573 -573
- package/dist/primitives/Input/Input.stories.svelte +139 -139
- package/dist/primitives/Input/Input.svelte +418 -431
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Select.spec.js +212 -218
- package/dist/primitives/Input/Select.stories.svelte +112 -112
- package/dist/primitives/Input/Select.svelte +128 -128
- package/dist/primitives/Input/Textarea.spec.d.ts +2 -0
- package/dist/primitives/Input/Textarea.spec.d.ts.map +1 -0
- package/dist/primitives/Input/Textarea.spec.js +255 -0
- package/dist/primitives/Input/Textarea.stories.svelte +137 -137
- package/dist/primitives/Input/Textarea.svelte +35 -35
- package/dist/primitives/Label/Label.spec.d.ts +2 -0
- package/dist/primitives/Label/Label.spec.d.ts.map +1 -0
- package/dist/primitives/Label/Label.spec.js +157 -0
- package/dist/primitives/Label/Label.svelte +37 -37
- package/dist/primitives/Modal/Modal.spec.js +99 -95
- package/dist/primitives/Modal/Modal.stories.svelte +86 -86
- package/dist/primitives/Modal/Modal.svelte +158 -158
- package/dist/primitives/Modal/ModalTestWrapper.svelte +65 -0
- package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts +23 -0
- package/dist/primitives/Modal/ModalTestWrapper.svelte.d.ts.map +1 -0
- package/dist/primitives/NumberInput/NumberInput.spec.d.ts +2 -0
- package/dist/primitives/NumberInput/NumberInput.spec.d.ts.map +1 -0
- package/dist/primitives/NumberInput/NumberInput.spec.js +235 -0
- package/dist/primitives/NumberInput/NumberInput.svelte +106 -106
- package/dist/primitives/Pagination/Pagination.spec.d.ts +2 -0
- package/dist/primitives/Pagination/Pagination.spec.d.ts.map +1 -0
- package/dist/primitives/Pagination/Pagination.spec.js +266 -0
- package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
- package/dist/primitives/Pagination/Pagination.svelte +261 -261
- package/dist/primitives/Radio/Radio.spec.d.ts +2 -0
- package/dist/primitives/Radio/Radio.spec.d.ts.map +1 -0
- package/dist/primitives/Radio/Radio.spec.js +206 -0
- package/dist/primitives/Radio/Radio.stories.svelte +80 -80
- package/dist/primitives/Radio/Radio.svelte +67 -67
- package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/CardPlaceholder.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/CardPlaceholder.spec.js +156 -0
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/ImagePlaceholder.spec.js +120 -0
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
- package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/ListPlaceholder.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/ListPlaceholder.spec.js +220 -0
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
- package/dist/primitives/Skeleton/Skeleton.spec.d.ts +2 -0
- package/dist/primitives/Skeleton/Skeleton.spec.d.ts.map +1 -0
- package/dist/primitives/Skeleton/Skeleton.spec.js +173 -0
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
- package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
- package/dist/primitives/Spinner/Spinner.spec.js +71 -75
- package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
- package/dist/primitives/Spinner/Spinner.svelte +20 -20
- package/dist/primitives/Tabs/TabItem.spec.d.ts +2 -0
- package/dist/primitives/Tabs/TabItem.spec.d.ts.map +1 -0
- package/dist/primitives/Tabs/TabItem.spec.js +130 -0
- package/dist/primitives/Tabs/TabItem.svelte +49 -49
- package/dist/primitives/Tabs/Tabs.spec.d.ts +2 -0
- package/dist/primitives/Tabs/Tabs.spec.d.ts.map +1 -0
- package/dist/primitives/Tabs/Tabs.spec.js +295 -0
- package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
- package/dist/primitives/Tabs/Tabs.svelte +123 -123
- package/dist/primitives/Tabs/TabsWithItems.test.svelte +18 -0
- package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts +16 -0
- package/dist/primitives/Tabs/TabsWithItems.test.svelte.d.ts.map +1 -0
- package/dist/primitives/Toggle.spec.js +143 -127
- package/dist/primitives/Toggle.stories.svelte +92 -92
- package/dist/primitives/Toggle.svelte +71 -71
- package/dist/primitives/Typography/Typography.spec.d.ts +2 -0
- package/dist/primitives/Typography/Typography.spec.d.ts.map +1 -0
- package/dist/primitives/Typography/Typography.spec.js +183 -0
- package/dist/primitives/Typography/Typography.svelte +53 -53
- package/dist/primitives/ValidationError.spec.js +103 -103
- package/dist/primitives/ValidationError.stories.svelte +69 -69
- package/dist/primitives/ValidationError.svelte +29 -29
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.js +84 -81
- package/dist/recipes/CropImage/CropImage.spec.js +208 -216
- package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
- package/dist/recipes/CropImage/CropImage.svelte +238 -238
- package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts +2 -0
- package/dist/recipes/ImageUploader/ImageUploader.spec.d.ts.map +1 -0
- package/dist/recipes/ImageUploader/ImageUploader.spec.js +1351 -0
- package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
- package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
- package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts +2 -0
- package/dist/recipes/SuperLogin/SuperLogin.spec.d.ts.map +1 -0
- package/dist/recipes/SuperLogin/SuperLogin.spec.js +1436 -0
- package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
- package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts +2 -0
- package/dist/recipes/feedback/EmptyState/EmptyState.spec.d.ts.map +1 -0
- package/dist/recipes/feedback/EmptyState/EmptyState.spec.js +202 -0
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
- package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
- package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -129
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
- package/dist/recipes/fields/CheckboxField.spec.d.ts +2 -0
- package/dist/recipes/fields/CheckboxField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/CheckboxField.spec.js +135 -0
- package/dist/recipes/fields/CheckboxField.svelte +85 -85
- package/dist/recipes/fields/FormField.spec.d.ts +2 -0
- package/dist/recipes/fields/FormField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/FormField.spec.js +159 -0
- package/dist/recipes/fields/FormField.svelte +58 -58
- package/dist/recipes/fields/RadioGroup.spec.d.ts +2 -0
- package/dist/recipes/fields/RadioGroup.spec.d.ts.map +1 -0
- package/dist/recipes/fields/RadioGroup.spec.js +199 -0
- package/dist/recipes/fields/RadioGroup.svelte +95 -95
- package/dist/recipes/fields/SelectField.spec.d.ts +2 -0
- package/dist/recipes/fields/SelectField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/SelectField.spec.js +188 -0
- package/dist/recipes/fields/SelectField.svelte +80 -80
- package/dist/recipes/fields/TextareaField.spec.d.ts +2 -0
- package/dist/recipes/fields/TextareaField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/TextareaField.spec.js +205 -0
- package/dist/recipes/fields/TextareaField.svelte +97 -97
- package/dist/recipes/fields/ToggleField.spec.d.ts +2 -0
- package/dist/recipes/fields/ToggleField.spec.d.ts.map +1 -0
- package/dist/recipes/fields/ToggleField.spec.js +153 -0
- package/dist/recipes/fields/ToggleField.svelte +60 -60
- package/dist/recipes/fields/index.js +7 -7
- package/dist/recipes/inputs/MultiSelect.spec.js +258 -257
- package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
- package/dist/recipes/inputs/MultiSelect.svelte +256 -249
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts +2 -0
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/OTPInput.spec.js +251 -238
- package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
- package/dist/recipes/inputs/OTPInput.svelte +29 -29
- package/dist/recipes/inputs/PasswordInput.spec.d.ts +2 -0
- package/dist/recipes/inputs/PasswordInput.spec.d.ts.map +1 -0
- package/dist/recipes/inputs/PasswordInput.spec.js +410 -0
- package/dist/recipes/inputs/PasswordInput.svelte +22 -22
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +253 -173
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte +71 -0
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts +9 -0
- package/dist/recipes/inputs/PasswordStrengthIndicator/TestWrapper.svelte.d.ts.map +1 -0
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +1246 -300
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +326 -326
- package/dist/recipes/inputs/Search.spec.d.ts +2 -0
- package/dist/recipes/inputs/Search.spec.d.ts.map +1 -0
- package/dist/recipes/inputs/Search.spec.js +177 -0
- package/dist/recipes/inputs/Search.svelte +37 -37
- package/dist/recipes/inputs/SelectDropdown.spec.d.ts +2 -0
- package/dist/recipes/inputs/SelectDropdown.spec.d.ts.map +1 -0
- package/dist/recipes/inputs/SelectDropdown.spec.js +512 -0
- package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
- package/dist/recipes/modals/AlertModal.spec.d.ts +2 -0
- package/dist/recipes/modals/AlertModal.spec.d.ts.map +1 -0
- package/dist/recipes/modals/AlertModal.spec.js +432 -0
- package/dist/recipes/modals/AlertModal.svelte +130 -130
- package/dist/recipes/modals/ConfirmationModal.spec.js +206 -191
- package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
- package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
- package/dist/recipes/modals/InputModal.spec.d.ts +2 -0
- package/dist/recipes/modals/InputModal.spec.d.ts.map +1 -0
- package/dist/recipes/modals/InputModal.spec.js +872 -0
- package/dist/recipes/modals/InputModal.svelte +182 -182
- package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
- package/dist/recipes/modals/ModalStateManager.svelte +77 -77
- package/dist/recipes/modals/ModalTestWrapper.spec.d.ts +2 -0
- package/dist/recipes/modals/ModalTestWrapper.spec.d.ts.map +1 -0
- package/dist/recipes/modals/ModalTestWrapper.spec.js +502 -0
- package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
- package/dist/recipes/modals/StatusModal.spec.d.ts +2 -0
- package/dist/recipes/modals/StatusModal.spec.d.ts.map +1 -0
- package/dist/recipes/modals/StatusModal.spec.js +599 -0
- package/dist/recipes/modals/StatusModal.svelte +206 -206
- package/dist/services/EventService.js +75 -75
- package/dist/services/EventService.spec.js +217 -217
- package/dist/services/ShowService.spec.js +345 -342
- package/dist/stores/auth.js +36 -36
- package/dist/stores/auth.spec.js +139 -139
- package/dist/stores/toaster.js +13 -13
- package/dist/stories/ButtonAuditDashboard.spec.d.ts +2 -0
- package/dist/stories/ButtonAuditDashboard.spec.d.ts.map +1 -0
- package/dist/stories/ButtonAuditDashboard.spec.js +913 -0
- package/dist/stories/ButtonAuditReview.spec.d.ts +2 -0
- package/dist/stories/ButtonAuditReview.spec.d.ts.map +1 -0
- package/dist/stories/ButtonAuditReview.spec.js +422 -0
- package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
- package/dist/stories/ButtonAuditReview.svelte +427 -427
- package/dist/stories/ButtonGridView.spec.d.ts +2 -0
- package/dist/stories/ButtonGridView.spec.d.ts.map +1 -0
- package/dist/stories/ButtonGridView.spec.js +667 -0
- package/dist/stories/ButtonShowcase.spec.d.ts +2 -0
- package/dist/stories/ButtonShowcase.spec.d.ts.map +1 -0
- package/dist/stories/ButtonShowcase.spec.js +499 -0
- package/dist/stories/PatternsGallery.spec.d.ts +2 -0
- package/dist/stories/PatternsGallery.spec.d.ts.map +1 -0
- package/dist/stories/PatternsGallery.spec.js +514 -0
- package/dist/stories/PatternsGallery.stories.svelte +19 -19
- package/dist/stories/PatternsGallery.svelte +206 -206
- package/dist/stories/PrimitivesGallery.spec.d.ts +2 -0
- package/dist/stories/PrimitivesGallery.spec.d.ts.map +1 -0
- package/dist/stories/PrimitivesGallery.spec.js +813 -0
- package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
- package/dist/stories/PrimitivesGallery.svelte +725 -725
- package/dist/stories/RecipesGallery.spec.d.ts +2 -0
- package/dist/stories/RecipesGallery.spec.d.ts.map +1 -0
- package/dist/stories/RecipesGallery.spec.js +299 -0
- package/dist/stories/RecipesGallery.stories.svelte +19 -19
- package/dist/stories/RecipesGallery.svelte +271 -271
- package/dist/stories/button-audit-manifest.json +11186 -11186
- package/dist/stripe/useStripeTheme.spec.d.ts +2 -0
- package/dist/stripe/useStripeTheme.spec.d.ts.map +1 -0
- package/dist/stripe/useStripeTheme.spec.js +793 -0
- package/dist/tailwind/preset.cjs +82 -82
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +405 -404
- package/dist/telemetry.spec.js +1144 -661
- package/dist/tokens/__tests__/colors.test.d.ts +2 -0
- package/dist/tokens/__tests__/colors.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/colors.test.js +152 -0
- package/dist/tokens/__tests__/radius.test.d.ts +2 -0
- package/dist/tokens/__tests__/radius.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/radius.test.js +118 -0
- package/dist/tokens/__tests__/shadows.test.d.ts +2 -0
- package/dist/tokens/__tests__/shadows.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/shadows.test.js +105 -0
- package/dist/tokens/__tests__/spacing.test.js +11 -8
- package/dist/tokens/__tests__/typography-base.test.d.ts +2 -0
- package/dist/tokens/__tests__/typography-base.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/typography-base.test.js +138 -0
- package/dist/tokens/__tests__/typography.test.d.ts +2 -0
- package/dist/tokens/__tests__/typography.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/typography.test.js +156 -0
- package/dist/tokens/__tests__/z-index.test.d.ts +2 -0
- package/dist/tokens/__tests__/z-index.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/z-index.test.js +121 -0
- package/dist/tokens/tokens.css +87 -87
- package/dist/tokens/typography-base.css +163 -0
- package/dist/utils/apiConfig.spec.js +219 -118
- package/dist/utils/formatters.spec.d.ts +2 -0
- package/dist/utils/formatters.spec.d.ts.map +1 -0
- package/dist/utils/formatters.spec.js +82 -0
- package/dist/utils/transitions.js +62 -62
- package/dist/utils/transitions.spec.d.ts +2 -0
- package/dist/utils/transitions.spec.d.ts.map +1 -0
- package/dist/utils/transitions.spec.js +130 -0
- package/dist/utils/utils.js +354 -354
- package/package.json +292 -286
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { render, screen, fireEvent } from '@testing-library/svelte';
|
|
2
|
+
import { expect, describe, test, vi, beforeEach } from 'vitest';
|
|
3
|
+
import MonthSwitcher from './MonthSwitcher.svelte';
|
|
4
|
+
|
|
5
|
+
describe('MonthSwitcher Component', () => {
|
|
6
|
+
test('renders a header element', () => {
|
|
7
|
+
const { container } = render(MonthSwitcher);
|
|
8
|
+
expect(container.querySelector('header')).toBeInTheDocument();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
test('renders the month name', () => {
|
|
12
|
+
const { container } = render(MonthSwitcher, {
|
|
13
|
+
props: { currentMonth: 0, currentYear: 2024 }
|
|
14
|
+
});
|
|
15
|
+
expect(screen.getByText('January')).toBeInTheDocument();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('renders three navigation buttons', () => {
|
|
19
|
+
const { container } = render(MonthSwitcher);
|
|
20
|
+
const buttons = container.querySelectorAll('button');
|
|
21
|
+
expect(buttons.length).toBe(3);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('has Today button', () => {
|
|
25
|
+
render(MonthSwitcher);
|
|
26
|
+
expect(screen.getByText('Today')).toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe('MonthSwitcher Accessibility', () => {
|
|
31
|
+
test('prev button has aria-label', () => {
|
|
32
|
+
const { container } = render(MonthSwitcher);
|
|
33
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
34
|
+
expect(prevButton).toBeInTheDocument();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('next button has aria-label', () => {
|
|
38
|
+
const { container } = render(MonthSwitcher);
|
|
39
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
40
|
+
expect(nextButton).toBeInTheDocument();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test('today button has aria-label', () => {
|
|
44
|
+
const { container } = render(MonthSwitcher);
|
|
45
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
46
|
+
expect(todayButton).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
describe('MonthSwitcher Month Display', () => {
|
|
51
|
+
test('displays February correctly', () => {
|
|
52
|
+
render(MonthSwitcher, {
|
|
53
|
+
props: { currentMonth: 1, currentYear: 2024 }
|
|
54
|
+
});
|
|
55
|
+
expect(screen.getByText('February')).toBeInTheDocument();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
test('displays December correctly', () => {
|
|
59
|
+
render(MonthSwitcher, {
|
|
60
|
+
props: { currentMonth: 11, currentYear: 2024 }
|
|
61
|
+
});
|
|
62
|
+
expect(screen.getByText('December')).toBeInTheDocument();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test('displays June correctly', () => {
|
|
66
|
+
render(MonthSwitcher, {
|
|
67
|
+
props: { currentMonth: 5, currentYear: 2024 }
|
|
68
|
+
});
|
|
69
|
+
expect(screen.getByText('June')).toBeInTheDocument();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe('MonthSwitcher Navigation Callbacks', () => {
|
|
74
|
+
test('calls handleNext when next button clicked', async () => {
|
|
75
|
+
const handleNext = vi.fn();
|
|
76
|
+
const { container } = render(MonthSwitcher, {
|
|
77
|
+
props: { handleNext }
|
|
78
|
+
});
|
|
79
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
80
|
+
await fireEvent.click(nextButton);
|
|
81
|
+
expect(handleNext).toHaveBeenCalled();
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test('calls handlePrev when prev button clicked', async () => {
|
|
85
|
+
const handlePrev = vi.fn();
|
|
86
|
+
const { container } = render(MonthSwitcher, {
|
|
87
|
+
props: {
|
|
88
|
+
handlePrev,
|
|
89
|
+
disablePastNavigation: false
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
93
|
+
await fireEvent.click(prevButton);
|
|
94
|
+
expect(handlePrev).toHaveBeenCalled();
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test('calls handleToday when today button clicked', async () => {
|
|
98
|
+
const handleToday = vi.fn();
|
|
99
|
+
const { container } = render(MonthSwitcher, {
|
|
100
|
+
props: {
|
|
101
|
+
handleToday,
|
|
102
|
+
currentMonth: 0,
|
|
103
|
+
currentYear: 2020
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
107
|
+
await fireEvent.click(todayButton);
|
|
108
|
+
expect(handleToday).toHaveBeenCalled();
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
describe('MonthSwitcher Disable Past Navigation', () => {
|
|
113
|
+
test('prev button disabled at current month by default', () => {
|
|
114
|
+
const today = new Date();
|
|
115
|
+
const { container } = render(MonthSwitcher, {
|
|
116
|
+
props: {
|
|
117
|
+
currentMonth: today.getMonth(),
|
|
118
|
+
currentYear: today.getFullYear(),
|
|
119
|
+
disablePastNavigation: true
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
123
|
+
expect(prevButton).toBeDisabled();
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
test('prev button enabled when not at current month', () => {
|
|
127
|
+
const today = new Date();
|
|
128
|
+
const futureMonth = (today.getMonth() + 3) % 12;
|
|
129
|
+
const futureYear = today.getMonth() + 3 > 11 ? today.getFullYear() + 1 : today.getFullYear();
|
|
130
|
+
const { container } = render(MonthSwitcher, {
|
|
131
|
+
props: {
|
|
132
|
+
currentMonth: futureMonth,
|
|
133
|
+
currentYear: futureYear,
|
|
134
|
+
disablePastNavigation: true
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
138
|
+
expect(prevButton).not.toBeDisabled();
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
test('prev button enabled when disablePastNavigation is false', () => {
|
|
142
|
+
const today = new Date();
|
|
143
|
+
const { container } = render(MonthSwitcher, {
|
|
144
|
+
props: {
|
|
145
|
+
currentMonth: today.getMonth(),
|
|
146
|
+
currentYear: today.getFullYear(),
|
|
147
|
+
disablePastNavigation: false
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
151
|
+
expect(prevButton).not.toBeDisabled();
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
test('does not call handlePrev when disabled', async () => {
|
|
155
|
+
const handlePrev = vi.fn();
|
|
156
|
+
const today = new Date();
|
|
157
|
+
const { container } = render(MonthSwitcher, {
|
|
158
|
+
props: {
|
|
159
|
+
handlePrev,
|
|
160
|
+
currentMonth: today.getMonth(),
|
|
161
|
+
currentYear: today.getFullYear(),
|
|
162
|
+
disablePastNavigation: true
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
166
|
+
await fireEvent.click(prevButton);
|
|
167
|
+
expect(handlePrev).not.toHaveBeenCalled();
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
describe('MonthSwitcher Today Button State', () => {
|
|
172
|
+
test('today button disabled at current month', () => {
|
|
173
|
+
const today = new Date();
|
|
174
|
+
const { container } = render(MonthSwitcher, {
|
|
175
|
+
props: {
|
|
176
|
+
currentMonth: today.getMonth(),
|
|
177
|
+
currentYear: today.getFullYear()
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
181
|
+
expect(todayButton).toBeDisabled();
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
test('today button enabled when not at current month', () => {
|
|
185
|
+
const { container } = render(MonthSwitcher, {
|
|
186
|
+
props: {
|
|
187
|
+
currentMonth: 0,
|
|
188
|
+
currentYear: 2020
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
192
|
+
expect(todayButton).not.toBeDisabled();
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
describe('MonthSwitcher Styling', () => {
|
|
197
|
+
test('header has flex layout', () => {
|
|
198
|
+
const { container } = render(MonthSwitcher);
|
|
199
|
+
const header = container.querySelector('header');
|
|
200
|
+
expect(header).toHaveClass('flex');
|
|
201
|
+
expect(header).toHaveClass('items-center');
|
|
202
|
+
expect(header).toHaveClass('justify-between');
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
test('navigation buttons container has flex and gap', () => {
|
|
206
|
+
const { container } = render(MonthSwitcher);
|
|
207
|
+
const buttonContainer = container.querySelector('.flex.items-center.gap-2');
|
|
208
|
+
expect(buttonContainer).toBeInTheDocument();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
describe('MonthSwitcher Mouse Events', () => {
|
|
213
|
+
test('prev button responds to mousedown', async () => {
|
|
214
|
+
const { container } = render(MonthSwitcher, {
|
|
215
|
+
props: { disablePastNavigation: false }
|
|
216
|
+
});
|
|
217
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
218
|
+
await fireEvent.mouseDown(prevButton);
|
|
219
|
+
// Button should have scale-90 class when pressed
|
|
220
|
+
expect(prevButton.className).toContain('scale-90');
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
test('prev button responds to mouseup', async () => {
|
|
224
|
+
const { container } = render(MonthSwitcher, {
|
|
225
|
+
props: { disablePastNavigation: false }
|
|
226
|
+
});
|
|
227
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
228
|
+
await fireEvent.mouseDown(prevButton);
|
|
229
|
+
await fireEvent.mouseUp(prevButton);
|
|
230
|
+
// Button should not have scale-90 class after mouseup
|
|
231
|
+
expect(prevButton.className).not.toContain('scale-90');
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
test('prev button responds to mouseleave', async () => {
|
|
235
|
+
const { container } = render(MonthSwitcher, {
|
|
236
|
+
props: { disablePastNavigation: false }
|
|
237
|
+
});
|
|
238
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
239
|
+
await fireEvent.mouseDown(prevButton);
|
|
240
|
+
await fireEvent.mouseLeave(prevButton);
|
|
241
|
+
expect(prevButton.className).not.toContain('scale-90');
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
test('next button responds to mousedown', async () => {
|
|
245
|
+
const { container } = render(MonthSwitcher);
|
|
246
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
247
|
+
await fireEvent.mouseDown(nextButton);
|
|
248
|
+
expect(nextButton.className).toContain('scale-90');
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
test('next button responds to mouseup', async () => {
|
|
252
|
+
const { container } = render(MonthSwitcher);
|
|
253
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
254
|
+
await fireEvent.mouseDown(nextButton);
|
|
255
|
+
await fireEvent.mouseUp(nextButton);
|
|
256
|
+
expect(nextButton.className).not.toContain('scale-90');
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
test('next button responds to mouseleave', async () => {
|
|
260
|
+
const { container } = render(MonthSwitcher);
|
|
261
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
262
|
+
await fireEvent.mouseDown(nextButton);
|
|
263
|
+
await fireEvent.mouseLeave(nextButton);
|
|
264
|
+
expect(nextButton.className).not.toContain('scale-90');
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
test('today button responds to mousedown', async () => {
|
|
268
|
+
const { container } = render(MonthSwitcher, {
|
|
269
|
+
props: { currentMonth: 0, currentYear: 2020 }
|
|
270
|
+
});
|
|
271
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
272
|
+
await fireEvent.mouseDown(todayButton);
|
|
273
|
+
expect(todayButton.className).toContain('scale-95');
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
test('today button responds to mouseup', async () => {
|
|
277
|
+
const { container } = render(MonthSwitcher, {
|
|
278
|
+
props: { currentMonth: 0, currentYear: 2020 }
|
|
279
|
+
});
|
|
280
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
281
|
+
await fireEvent.mouseDown(todayButton);
|
|
282
|
+
await fireEvent.mouseUp(todayButton);
|
|
283
|
+
expect(todayButton.className).not.toContain('scale-95');
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
test('today button responds to mouseleave', async () => {
|
|
287
|
+
const { container } = render(MonthSwitcher, {
|
|
288
|
+
props: { currentMonth: 0, currentYear: 2020 }
|
|
289
|
+
});
|
|
290
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
291
|
+
await fireEvent.mouseDown(todayButton);
|
|
292
|
+
await fireEvent.mouseLeave(todayButton);
|
|
293
|
+
expect(todayButton.className).not.toContain('scale-95');
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
describe('MonthSwitcher Touch Events', () => {
|
|
298
|
+
test('prev button responds to touchstart', async () => {
|
|
299
|
+
const { container } = render(MonthSwitcher, {
|
|
300
|
+
props: { disablePastNavigation: false }
|
|
301
|
+
});
|
|
302
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
303
|
+
await fireEvent.touchStart(prevButton);
|
|
304
|
+
expect(prevButton.className).toContain('scale-90');
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
test('prev button responds to touchend', async () => {
|
|
308
|
+
const { container } = render(MonthSwitcher, {
|
|
309
|
+
props: { disablePastNavigation: false }
|
|
310
|
+
});
|
|
311
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
312
|
+
await fireEvent.touchStart(prevButton);
|
|
313
|
+
await fireEvent.touchEnd(prevButton);
|
|
314
|
+
expect(prevButton.className).not.toContain('scale-90');
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
test('prev button responds to touchcancel', async () => {
|
|
318
|
+
const { container } = render(MonthSwitcher, {
|
|
319
|
+
props: { disablePastNavigation: false }
|
|
320
|
+
});
|
|
321
|
+
const prevButton = container.querySelector('[aria-label="Previous month"]');
|
|
322
|
+
await fireEvent.touchStart(prevButton);
|
|
323
|
+
await fireEvent.touchCancel(prevButton);
|
|
324
|
+
expect(prevButton.className).not.toContain('scale-90');
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
test('next button responds to touchstart', async () => {
|
|
328
|
+
const { container } = render(MonthSwitcher);
|
|
329
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
330
|
+
await fireEvent.touchStart(nextButton);
|
|
331
|
+
expect(nextButton.className).toContain('scale-90');
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
test('next button responds to touchend', async () => {
|
|
335
|
+
const { container } = render(MonthSwitcher);
|
|
336
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
337
|
+
await fireEvent.touchStart(nextButton);
|
|
338
|
+
await fireEvent.touchEnd(nextButton);
|
|
339
|
+
expect(nextButton.className).not.toContain('scale-90');
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
test('next button responds to touchcancel', async () => {
|
|
343
|
+
const { container } = render(MonthSwitcher);
|
|
344
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
345
|
+
await fireEvent.touchStart(nextButton);
|
|
346
|
+
await fireEvent.touchCancel(nextButton);
|
|
347
|
+
expect(nextButton.className).not.toContain('scale-90');
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
test('today button responds to touchstart', async () => {
|
|
351
|
+
const { container } = render(MonthSwitcher, {
|
|
352
|
+
props: { currentMonth: 0, currentYear: 2020 }
|
|
353
|
+
});
|
|
354
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
355
|
+
await fireEvent.touchStart(todayButton);
|
|
356
|
+
expect(todayButton.className).toContain('scale-95');
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
test('today button responds to touchend', async () => {
|
|
360
|
+
const { container } = render(MonthSwitcher, {
|
|
361
|
+
props: { currentMonth: 0, currentYear: 2020 }
|
|
362
|
+
});
|
|
363
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
364
|
+
await fireEvent.touchStart(todayButton);
|
|
365
|
+
await fireEvent.touchEnd(todayButton);
|
|
366
|
+
expect(todayButton.className).not.toContain('scale-95');
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
test('today button responds to touchcancel', async () => {
|
|
370
|
+
const { container } = render(MonthSwitcher, {
|
|
371
|
+
props: { currentMonth: 0, currentYear: 2020 }
|
|
372
|
+
});
|
|
373
|
+
const todayButton = container.querySelector('[aria-label="Go to current month"]');
|
|
374
|
+
await fireEvent.touchStart(todayButton);
|
|
375
|
+
await fireEvent.touchCancel(todayButton);
|
|
376
|
+
expect(todayButton.className).not.toContain('scale-95');
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
describe('MonthSwitcher Haptic Feedback', () => {
|
|
381
|
+
beforeEach(() => {
|
|
382
|
+
// Clean up window mocks
|
|
383
|
+
delete window.webkit;
|
|
384
|
+
delete window.TapticEngine;
|
|
385
|
+
if (navigator.vibrate) {
|
|
386
|
+
vi.spyOn(navigator, 'vibrate').mockImplementation(() => true);
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
test('triggers webkit haptic when available', async () => {
|
|
391
|
+
const postMessage = vi.fn();
|
|
392
|
+
window.webkit = {
|
|
393
|
+
messageHandlers: {
|
|
394
|
+
haptic: { postMessage }
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
const { container } = render(MonthSwitcher);
|
|
398
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
399
|
+
await fireEvent.click(nextButton);
|
|
400
|
+
expect(postMessage).toHaveBeenCalledWith('light');
|
|
401
|
+
});
|
|
402
|
+
|
|
403
|
+
test('triggers TapticEngine when available', async () => {
|
|
404
|
+
const impact = vi.fn();
|
|
405
|
+
window.TapticEngine = { impact };
|
|
406
|
+
const { container } = render(MonthSwitcher);
|
|
407
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
408
|
+
await fireEvent.click(nextButton);
|
|
409
|
+
expect(impact).toHaveBeenCalledWith({ style: 'light' });
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
test('triggers navigator.vibrate as fallback', async () => {
|
|
413
|
+
// Add vibrate to navigator if it doesn't exist
|
|
414
|
+
navigator.vibrate = vi.fn().mockReturnValue(true);
|
|
415
|
+
const { container } = render(MonthSwitcher);
|
|
416
|
+
const nextButton = container.querySelector('[aria-label="Next month"]');
|
|
417
|
+
await fireEvent.click(nextButton);
|
|
418
|
+
expect(navigator.vibrate).toHaveBeenCalledWith(10);
|
|
419
|
+
});
|
|
420
|
+
});
|
|
@@ -1,126 +1,126 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { ChevronLeftOutline, ChevronRightOutline } from '../../primitives/Icons';
|
|
3
|
-
import { typography } from '../../tokens/typography';
|
|
4
|
-
|
|
5
|
-
const today = new Date();
|
|
6
|
-
const todayLocalMonth = today.getMonth();
|
|
7
|
-
const todayLocalYear = today.getFullYear();
|
|
8
|
-
|
|
9
|
-
let {
|
|
10
|
-
currentYear = todayLocalYear,
|
|
11
|
-
currentMonth = todayLocalMonth,
|
|
12
|
-
handleNext = () => {},
|
|
13
|
-
handlePrev = () => {},
|
|
14
|
-
handleToday = () => {},
|
|
15
|
-
disablePastNavigation = true,
|
|
16
|
-
} = $props();
|
|
17
|
-
|
|
18
|
-
let isAtCurrentMonth = $derived(
|
|
19
|
-
currentYear === todayLocalYear && currentMonth === todayLocalMonth
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
let canGoPrev = $derived(!disablePastNavigation || !isAtCurrentMonth);
|
|
23
|
-
|
|
24
|
-
let prevPressed = $state(false);
|
|
25
|
-
let nextPressed = $state(false);
|
|
26
|
-
let todayPressed = $state(false);
|
|
27
|
-
|
|
28
|
-
function triggerHaptic(style = 'light') {
|
|
29
|
-
if (typeof window === 'undefined') return;
|
|
30
|
-
|
|
31
|
-
if (window.webkit?.messageHandlers?.haptic) {
|
|
32
|
-
window.webkit.messageHandlers.haptic.postMessage(style);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (window.TapticEngine) {
|
|
37
|
-
window.TapticEngine.impact({ style });
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (navigator.vibrate) {
|
|
42
|
-
navigator.vibrate(style === 'light' ? 10 : 20);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function handlePrevClick() {
|
|
47
|
-
if (canGoPrev) {
|
|
48
|
-
triggerHaptic('light');
|
|
49
|
-
handlePrev();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function handleNextClick() {
|
|
54
|
-
triggerHaptic('light');
|
|
55
|
-
handleNext();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function handleTodayClick() {
|
|
59
|
-
triggerHaptic('light');
|
|
60
|
-
handleToday();
|
|
61
|
-
}
|
|
62
|
-
</script>
|
|
63
|
-
|
|
64
|
-
<header class="w-full flex items-center justify-between select-none">
|
|
65
|
-
<h2 class="{typography.h1} text-3xl">
|
|
66
|
-
{new Intl.DateTimeFormat("en", {
|
|
67
|
-
month: "long",
|
|
68
|
-
}).format(new Date(currentYear, currentMonth, 1))}
|
|
69
|
-
</h2>
|
|
70
|
-
<div class="flex items-center gap-2">
|
|
71
|
-
<button
|
|
72
|
-
class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
73
|
-
class:scale-90={prevPressed}
|
|
74
|
-
class:bg-gray-100={prevPressed}
|
|
75
|
-
class:dark:bg-gray-700={prevPressed}
|
|
76
|
-
class:text-gray-900={prevPressed}
|
|
77
|
-
class:dark:text-white={prevPressed}
|
|
78
|
-
onclick={handlePrevClick}
|
|
79
|
-
ontouchstart={() => prevPressed = true}
|
|
80
|
-
ontouchend={() => prevPressed = false}
|
|
81
|
-
ontouchcancel={() => prevPressed = false}
|
|
82
|
-
onmousedown={() => prevPressed = true}
|
|
83
|
-
onmouseup={() => prevPressed = false}
|
|
84
|
-
onmouseleave={() => prevPressed = false}
|
|
85
|
-
disabled={!canGoPrev}
|
|
86
|
-
aria-label="Previous month"
|
|
87
|
-
>
|
|
88
|
-
<ChevronLeftOutline class="w-5 h-5" />
|
|
89
|
-
</button>
|
|
90
|
-
<button
|
|
91
|
-
class="{`${typography.label} px-3 py-1 border border-gray-300 dark:border-gray-600 rounded-lg bg-transparent cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-blue-700 hover:text-white hover:border-blue-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed disabled:text-gray-500 dark:disabled:text-gray-400`}"
|
|
92
|
-
class:scale-95={todayPressed}
|
|
93
|
-
class:bg-blue-700={todayPressed}
|
|
94
|
-
class:text-white={todayPressed}
|
|
95
|
-
onclick={handleTodayClick}
|
|
96
|
-
ontouchstart={() => todayPressed = true}
|
|
97
|
-
ontouchend={() => todayPressed = false}
|
|
98
|
-
ontouchcancel={() => todayPressed = false}
|
|
99
|
-
onmousedown={() => todayPressed = true}
|
|
100
|
-
onmouseup={() => todayPressed = false}
|
|
101
|
-
onmouseleave={() => todayPressed = false}
|
|
102
|
-
disabled={isAtCurrentMonth}
|
|
103
|
-
aria-label="Go to current month"
|
|
104
|
-
>
|
|
105
|
-
Today
|
|
106
|
-
</button>
|
|
107
|
-
<button
|
|
108
|
-
class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2"
|
|
109
|
-
class:scale-90={nextPressed}
|
|
110
|
-
class:bg-gray-100={nextPressed}
|
|
111
|
-
class:dark:bg-gray-700={nextPressed}
|
|
112
|
-
class:text-gray-900={nextPressed}
|
|
113
|
-
class:dark:text-white={nextPressed}
|
|
114
|
-
onclick={handleNextClick}
|
|
115
|
-
ontouchstart={() => nextPressed = true}
|
|
116
|
-
ontouchend={() => nextPressed = false}
|
|
117
|
-
ontouchcancel={() => nextPressed = false}
|
|
118
|
-
onmousedown={() => nextPressed = true}
|
|
119
|
-
onmouseup={() => nextPressed = false}
|
|
120
|
-
onmouseleave={() => nextPressed = false}
|
|
121
|
-
aria-label="Next month"
|
|
122
|
-
>
|
|
123
|
-
<ChevronRightOutline class="w-5 h-5" />
|
|
124
|
-
</button>
|
|
125
|
-
</div>
|
|
126
|
-
</header>
|
|
1
|
+
<script>
|
|
2
|
+
import { ChevronLeftOutline, ChevronRightOutline } from '../../primitives/Icons';
|
|
3
|
+
import { typography } from '../../tokens/typography';
|
|
4
|
+
|
|
5
|
+
const today = new Date();
|
|
6
|
+
const todayLocalMonth = today.getMonth();
|
|
7
|
+
const todayLocalYear = today.getFullYear();
|
|
8
|
+
|
|
9
|
+
let {
|
|
10
|
+
currentYear = todayLocalYear,
|
|
11
|
+
currentMonth = todayLocalMonth,
|
|
12
|
+
handleNext = () => {},
|
|
13
|
+
handlePrev = () => {},
|
|
14
|
+
handleToday = () => {},
|
|
15
|
+
disablePastNavigation = true,
|
|
16
|
+
} = $props();
|
|
17
|
+
|
|
18
|
+
let isAtCurrentMonth = $derived(
|
|
19
|
+
currentYear === todayLocalYear && currentMonth === todayLocalMonth
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
let canGoPrev = $derived(!disablePastNavigation || !isAtCurrentMonth);
|
|
23
|
+
|
|
24
|
+
let prevPressed = $state(false);
|
|
25
|
+
let nextPressed = $state(false);
|
|
26
|
+
let todayPressed = $state(false);
|
|
27
|
+
|
|
28
|
+
function triggerHaptic(style = 'light') {
|
|
29
|
+
if (typeof window === 'undefined') return;
|
|
30
|
+
|
|
31
|
+
if (window.webkit?.messageHandlers?.haptic) {
|
|
32
|
+
window.webkit.messageHandlers.haptic.postMessage(style);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (window.TapticEngine) {
|
|
37
|
+
window.TapticEngine.impact({ style });
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (navigator.vibrate) {
|
|
42
|
+
navigator.vibrate(style === 'light' ? 10 : 20);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function handlePrevClick() {
|
|
47
|
+
if (canGoPrev) {
|
|
48
|
+
triggerHaptic('light');
|
|
49
|
+
handlePrev();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function handleNextClick() {
|
|
54
|
+
triggerHaptic('light');
|
|
55
|
+
handleNext();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function handleTodayClick() {
|
|
59
|
+
triggerHaptic('light');
|
|
60
|
+
handleToday();
|
|
61
|
+
}
|
|
62
|
+
</script>
|
|
63
|
+
|
|
64
|
+
<header class="w-full flex items-center justify-between select-none">
|
|
65
|
+
<h2 class="{typography.h1} text-3xl">
|
|
66
|
+
{new Intl.DateTimeFormat("en", {
|
|
67
|
+
month: "long",
|
|
68
|
+
}).format(new Date(currentYear, currentMonth, 1))}
|
|
69
|
+
</h2>
|
|
70
|
+
<div class="flex items-center gap-2">
|
|
71
|
+
<button
|
|
72
|
+
class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
73
|
+
class:scale-90={prevPressed}
|
|
74
|
+
class:bg-gray-100={prevPressed}
|
|
75
|
+
class:dark:bg-gray-700={prevPressed}
|
|
76
|
+
class:text-gray-900={prevPressed}
|
|
77
|
+
class:dark:text-white={prevPressed}
|
|
78
|
+
onclick={handlePrevClick}
|
|
79
|
+
ontouchstart={() => prevPressed = true}
|
|
80
|
+
ontouchend={() => prevPressed = false}
|
|
81
|
+
ontouchcancel={() => prevPressed = false}
|
|
82
|
+
onmousedown={() => prevPressed = true}
|
|
83
|
+
onmouseup={() => prevPressed = false}
|
|
84
|
+
onmouseleave={() => prevPressed = false}
|
|
85
|
+
disabled={!canGoPrev}
|
|
86
|
+
aria-label="Previous month"
|
|
87
|
+
>
|
|
88
|
+
<ChevronLeftOutline class="w-5 h-5" />
|
|
89
|
+
</button>
|
|
90
|
+
<button
|
|
91
|
+
class="{`${typography.label} px-3 py-1 border border-gray-300 dark:border-gray-600 rounded-lg bg-transparent cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-blue-700 hover:text-white hover:border-blue-700 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2 disabled:opacity-40 disabled:cursor-not-allowed disabled:text-gray-500 dark:disabled:text-gray-400`}"
|
|
92
|
+
class:scale-95={todayPressed}
|
|
93
|
+
class:bg-blue-700={todayPressed}
|
|
94
|
+
class:text-white={todayPressed}
|
|
95
|
+
onclick={handleTodayClick}
|
|
96
|
+
ontouchstart={() => todayPressed = true}
|
|
97
|
+
ontouchend={() => todayPressed = false}
|
|
98
|
+
ontouchcancel={() => todayPressed = false}
|
|
99
|
+
onmousedown={() => todayPressed = true}
|
|
100
|
+
onmouseup={() => todayPressed = false}
|
|
101
|
+
onmouseleave={() => todayPressed = false}
|
|
102
|
+
disabled={isAtCurrentMonth}
|
|
103
|
+
aria-label="Go to current month"
|
|
104
|
+
>
|
|
105
|
+
Today
|
|
106
|
+
</button>
|
|
107
|
+
<button
|
|
108
|
+
class="p-3 -m-1.5 flex items-center justify-center border-0 rounded-full bg-transparent text-gray-500 dark:text-gray-400 cursor-pointer select-none transition-transform duration-100 ease-out hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2"
|
|
109
|
+
class:scale-90={nextPressed}
|
|
110
|
+
class:bg-gray-100={nextPressed}
|
|
111
|
+
class:dark:bg-gray-700={nextPressed}
|
|
112
|
+
class:text-gray-900={nextPressed}
|
|
113
|
+
class:dark:text-white={nextPressed}
|
|
114
|
+
onclick={handleNextClick}
|
|
115
|
+
ontouchstart={() => nextPressed = true}
|
|
116
|
+
ontouchend={() => nextPressed = false}
|
|
117
|
+
ontouchcancel={() => nextPressed = false}
|
|
118
|
+
onmousedown={() => nextPressed = true}
|
|
119
|
+
onmouseup={() => nextPressed = false}
|
|
120
|
+
onmouseleave={() => nextPressed = false}
|
|
121
|
+
aria-label="Next month"
|
|
122
|
+
>
|
|
123
|
+
<ChevronRightOutline class="w-5 h-5" />
|
|
124
|
+
</button>
|
|
125
|
+
</div>
|
|
126
|
+
</header>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrderSummary.spec.d.ts","sourceRoot":"","sources":["../../../src/lib/calendar/OrderSummary/OrderSummary.spec.js"],"names":[],"mappings":""}
|