@getmicdrop/svelte-components 5.5.4 → 5.5.5
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/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/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/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/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/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/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/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/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/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/Stack.spec.js +3 -3
- package/dist/constants/formOptions.spec.js +9 -5
- package/dist/datetime/__tests__/format.test.js +1 -1
- package/dist/datetime/__tests__/parse.test.js +1 -1
- package/dist/datetime/__tests__/timezone.test.js +124 -2
- package/dist/datetime/parse.js +1 -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/forms/createFormStore.svelte.js +0 -1
- package/dist/index.d.ts +4 -112
- package/dist/index.js +4 -190
- 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/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/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/forms/FormActions.spec.js +10 -3
- 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/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/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/navigation/BottomNav.svelte +4 -4
- package/dist/patterns/navigation/Header.spec.js +33 -24
- 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/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/PageLoader.spec.js +5 -2
- 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/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.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/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/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/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 +5 -2
- 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/Badges/Badge.spec.js +109 -68
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +36 -27
- 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 +15 -13
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +5 -5
- package/dist/primitives/Button/Button.spec.js +83 -71
- package/dist/primitives/Button/ButtonSaveDemo.spec.js +100 -2
- 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/Card.spec.js +1 -1
- 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/DarkModeToggle.spec.js +84 -51
- 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/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/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/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 +14 -14
- package/dist/primitives/Input/Input.svelte +1 -14
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Select.spec.js +11 -17
- 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/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/Modal/Modal.spec.js +29 -25
- 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/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/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/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/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/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/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/Spinner/Spinner.spec.js +25 -29
- 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/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/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 +93 -77
- 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/ValidationError.spec.js +1 -1
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.js +3 -0
- package/dist/recipes/CropImage/CropImage.spec.js +1 -9
- 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/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/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/ErrorDisplay.spec.js +6 -6
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +21 -17
- 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/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/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/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/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/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/inputs/MultiSelect.spec.js +4 -3
- package/dist/recipes/inputs/MultiSelect.svelte +10 -3
- 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 +52 -39
- 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/PasswordStrengthIndicator/PasswordStrengthIndicator.spec.js +253 -173
- 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/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/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/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/ConfirmationModal.spec.js +36 -21
- 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/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/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/services/ShowService.spec.js +18 -15
- 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/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/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/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/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/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +6 -5
- package/dist/telemetry.spec.js +495 -12
- 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.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/utils/apiConfig.spec.js +102 -1
- 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.spec.d.ts +2 -0
- package/dist/utils/transitions.spec.d.ts.map +1 -0
- package/dist/utils/transitions.spec.js +130 -0
- package/package.json +8 -3
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/svelte';
|
|
2
|
+
import { expect, describe, test } from 'vitest';
|
|
3
|
+
import Tabs from './Tabs.svelte';
|
|
4
|
+
import TabsWithItems from './TabsWithItems.test.svelte';
|
|
5
|
+
|
|
6
|
+
describe('Tabs Component', () => {
|
|
7
|
+
test('renders a wrapper div', () => {
|
|
8
|
+
const { container } = render(Tabs);
|
|
9
|
+
expect(container.querySelector('div.flex.flex-col')).toBeInTheDocument();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('renders a tablist ul', () => {
|
|
13
|
+
const { container } = render(Tabs);
|
|
14
|
+
expect(container.querySelector('ul[role="tablist"]')).toBeInTheDocument();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('renders content area with pt-4 padding', () => {
|
|
18
|
+
const { container } = render(Tabs);
|
|
19
|
+
expect(container.querySelector('.pt-4')).toBeInTheDocument();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('applies custom className', () => {
|
|
23
|
+
const { container } = render(Tabs, { props: { class: 'custom-tabs' } });
|
|
24
|
+
const wrapper = container.querySelector('div.flex.flex-col');
|
|
25
|
+
expect(wrapper).toHaveClass('custom-tabs');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('passes through additional props', () => {
|
|
29
|
+
const { container } = render(Tabs, { props: { 'data-testid': 'my-tabs' } });
|
|
30
|
+
const wrapper = container.querySelector('[data-testid="my-tabs"]');
|
|
31
|
+
expect(wrapper).toBeInTheDocument();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('applies contentClass to content div', () => {
|
|
35
|
+
const { container } = render(Tabs, { props: { contentClass: 'custom-content' } });
|
|
36
|
+
expect(container.querySelector('.custom-content')).toBeInTheDocument();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe('Tabs Styles - Underline', () => {
|
|
41
|
+
test('underline style has border-b class', () => {
|
|
42
|
+
const { container } = render(Tabs, { props: { tabStyle: 'underline' } });
|
|
43
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
44
|
+
expect(tablist).toHaveClass('border-b');
|
|
45
|
+
expect(tablist).toHaveClass('border-gray-200');
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('underline style has -mb-px class', () => {
|
|
49
|
+
const { container } = render(Tabs, { props: { tabStyle: 'underline' } });
|
|
50
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
51
|
+
expect(tablist).toHaveClass('-mb-px');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('underline is default style', () => {
|
|
55
|
+
const { container } = render(Tabs);
|
|
56
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
57
|
+
expect(tablist).toHaveClass('border-b');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
describe('Tabs Styles - Pills', () => {
|
|
62
|
+
test('pills style has gap-2 class', () => {
|
|
63
|
+
const { container } = render(Tabs, { props: { tabStyle: 'pills' } });
|
|
64
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
65
|
+
expect(tablist).toHaveClass('gap-2');
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('pills style does not have border-b', () => {
|
|
69
|
+
const { container } = render(Tabs, { props: { tabStyle: 'pills' } });
|
|
70
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
71
|
+
expect(tablist).not.toHaveClass('border-b');
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe('Tabs Styles - Full', () => {
|
|
76
|
+
test('full style has divide-x class', () => {
|
|
77
|
+
const { container } = render(Tabs, { props: { tabStyle: 'full' } });
|
|
78
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
79
|
+
expect(tablist).toHaveClass('divide-x');
|
|
80
|
+
expect(tablist).toHaveClass('divide-gray-200');
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('full style has rounded-lg class', () => {
|
|
84
|
+
const { container } = render(Tabs, { props: { tabStyle: 'full' } });
|
|
85
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
86
|
+
expect(tablist).toHaveClass('rounded-lg');
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test('full style has shadow class', () => {
|
|
90
|
+
const { container } = render(Tabs, { props: { tabStyle: 'full' } });
|
|
91
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
92
|
+
expect(tablist).toHaveClass('shadow');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
test('full style has overflow-hidden', () => {
|
|
96
|
+
const { container } = render(Tabs, { props: { tabStyle: 'full' } });
|
|
97
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
98
|
+
expect(tablist).toHaveClass('overflow-hidden');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
describe('Tabs Common Styling', () => {
|
|
103
|
+
test('tablist has flex class', () => {
|
|
104
|
+
const { container } = render(Tabs);
|
|
105
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
106
|
+
expect(tablist).toHaveClass('flex');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
test('tablist has flex-wrap class', () => {
|
|
110
|
+
const { container } = render(Tabs);
|
|
111
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
112
|
+
expect(tablist).toHaveClass('flex-wrap');
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
test('tablist has text-center class', () => {
|
|
116
|
+
const { container } = render(Tabs);
|
|
117
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
118
|
+
expect(tablist).toHaveClass('text-center');
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
test('tablist has font-medium class', () => {
|
|
122
|
+
const { container } = render(Tabs);
|
|
123
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
124
|
+
expect(tablist).toHaveClass('font-medium');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
describe('Tabs Props', () => {
|
|
129
|
+
test('tabStyle defaults to underline', () => {
|
|
130
|
+
const { container } = render(Tabs);
|
|
131
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
132
|
+
expect(tablist).toHaveClass('border-b');
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
test('contentClass is applied to content div', () => {
|
|
136
|
+
const { container } = render(Tabs, { props: { contentClass: 'my-content-class' } });
|
|
137
|
+
expect(container.querySelector('.my-content-class')).toBeInTheDocument();
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
test('activeTabValue can be set', () => {
|
|
141
|
+
const { container } = render(Tabs, { props: { activeTabValue: 'tab1' } });
|
|
142
|
+
// Component accepts the prop without error
|
|
143
|
+
expect(container.querySelector('div.flex.flex-col')).toBeInTheDocument();
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
describe('Tabs Accessibility', () => {
|
|
148
|
+
test('tablist has role="tablist"', () => {
|
|
149
|
+
const { container } = render(Tabs);
|
|
150
|
+
expect(container.querySelector('[role="tablist"]')).toBeInTheDocument();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
describe('Tabs Dark Mode', () => {
|
|
155
|
+
test('underline has dark mode border class', () => {
|
|
156
|
+
const { container } = render(Tabs, { props: { tabStyle: 'underline' } });
|
|
157
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
158
|
+
expect(tablist).toHaveClass('dark:border-gray-700');
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
test('full style has dark mode divide class', () => {
|
|
162
|
+
const { container } = render(Tabs, { props: { tabStyle: 'full' } });
|
|
163
|
+
const tablist = container.querySelector('ul[role="tablist"]');
|
|
164
|
+
expect(tablist).toHaveClass('dark:divide-gray-700');
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
describe('Tabs with TabItems - registerTab functionality', () => {
|
|
169
|
+
test('auto-selects first tab when no active tab is set', async () => {
|
|
170
|
+
const { container } = render(TabsWithItems);
|
|
171
|
+
|
|
172
|
+
// Wait for tabs to register and render
|
|
173
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
174
|
+
|
|
175
|
+
// First tab content should be visible
|
|
176
|
+
expect(screen.getByTestId('tab1-content')).toBeInTheDocument();
|
|
177
|
+
|
|
178
|
+
// First tab button should be active
|
|
179
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
180
|
+
expect(buttons[0]).toHaveAttribute('aria-selected', 'true');
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
test('respects open prop on TabItem', async () => {
|
|
184
|
+
const { container } = render(TabsWithItems, { props: { withOpen: true } });
|
|
185
|
+
|
|
186
|
+
// Wait for tabs to register
|
|
187
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
188
|
+
|
|
189
|
+
// First tab with open=true should be active
|
|
190
|
+
expect(screen.getByTestId('tab1-content')).toBeInTheDocument();
|
|
191
|
+
|
|
192
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
193
|
+
expect(buttons[0]).toHaveAttribute('aria-selected', 'true');
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
test('registerTab prevents duplicate tab registration', async () => {
|
|
197
|
+
const { container } = render(TabsWithItems);
|
|
198
|
+
|
|
199
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
200
|
+
|
|
201
|
+
// Should only have 3 tabs, not duplicates
|
|
202
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
203
|
+
expect(buttons).toHaveLength(3);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
test('can switch between tabs', async () => {
|
|
207
|
+
const { container } = render(TabsWithItems);
|
|
208
|
+
|
|
209
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
210
|
+
|
|
211
|
+
// Click second tab
|
|
212
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
213
|
+
buttons[1].click();
|
|
214
|
+
|
|
215
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
216
|
+
|
|
217
|
+
// Second tab content should be visible
|
|
218
|
+
expect(screen.getByTestId('tab2-content')).toBeInTheDocument();
|
|
219
|
+
expect(buttons[1]).toHaveAttribute('aria-selected', 'true');
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
test('activeTabValue can be set to specific tab', async () => {
|
|
223
|
+
const { container } = render(TabsWithItems, {
|
|
224
|
+
props: {
|
|
225
|
+
activeTabValue: 'tab2'
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
230
|
+
|
|
231
|
+
// Second tab should be active
|
|
232
|
+
expect(screen.getByTestId('tab2-content')).toBeInTheDocument();
|
|
233
|
+
|
|
234
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
235
|
+
expect(buttons[1]).toHaveAttribute('aria-selected', 'true');
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
test('renders tab titles correctly', async () => {
|
|
239
|
+
const { container } = render(TabsWithItems);
|
|
240
|
+
|
|
241
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
242
|
+
|
|
243
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
244
|
+
expect(buttons[0]).toHaveTextContent('First Tab');
|
|
245
|
+
expect(buttons[1]).toHaveTextContent('Second Tab');
|
|
246
|
+
expect(buttons[2]).toHaveTextContent('Third Tab');
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
test('pills style applies correct active classes', async () => {
|
|
250
|
+
const { container } = render(TabsWithItems, { props: { tabStyle: 'pills' } });
|
|
251
|
+
|
|
252
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
253
|
+
|
|
254
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
255
|
+
|
|
256
|
+
// Active tab should have pills active classes
|
|
257
|
+
expect(buttons[0]).toHaveClass('bg-blue-600');
|
|
258
|
+
expect(buttons[0]).toHaveClass('text-white');
|
|
259
|
+
expect(buttons[0]).toHaveClass('rounded-lg');
|
|
260
|
+
|
|
261
|
+
// Inactive tabs should have pills inactive classes
|
|
262
|
+
expect(buttons[1]).toHaveClass('rounded-lg');
|
|
263
|
+
expect(buttons[1]).not.toHaveClass('bg-blue-600');
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
test('pills style inactive tab hover state', async () => {
|
|
267
|
+
const { container } = render(TabsWithItems, { props: { tabStyle: 'pills' } });
|
|
268
|
+
|
|
269
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
270
|
+
|
|
271
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
272
|
+
|
|
273
|
+
// Check that inactive button has hover classes in its className
|
|
274
|
+
const inactiveButton = buttons[1];
|
|
275
|
+
expect(inactiveButton.className).toContain('hover:text-gray-900');
|
|
276
|
+
expect(inactiveButton.className).toContain('hover:bg-gray-100');
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
test('full style applies correct classes', async () => {
|
|
280
|
+
const { container } = render(TabsWithItems, { props: { tabStyle: 'full' } });
|
|
281
|
+
|
|
282
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
283
|
+
|
|
284
|
+
const buttons = container.querySelectorAll('button[role="tab"]');
|
|
285
|
+
|
|
286
|
+
// Active tab should have full active classes
|
|
287
|
+
expect(buttons[0]).toHaveClass('w-full');
|
|
288
|
+
expect(buttons[0]).toHaveClass('bg-gray-100');
|
|
289
|
+
expect(buttons[0]).toHaveClass('text-gray-900');
|
|
290
|
+
|
|
291
|
+
// Inactive tabs should have full inactive classes
|
|
292
|
+
expect(buttons[1]).toHaveClass('w-full');
|
|
293
|
+
expect(buttons[1]).toHaveClass('bg-white');
|
|
294
|
+
});
|
|
295
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Tabs from './Tabs.svelte';
|
|
3
|
+
import TabItem from './TabItem.svelte';
|
|
4
|
+
|
|
5
|
+
let { activeTabValue = $bindable(), tabStyle = 'underline', withOpen = false } = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Tabs bind:activeTabValue {tabStyle}>
|
|
9
|
+
<TabItem title="First Tab" value="tab1" open={withOpen}>
|
|
10
|
+
<div data-testid="tab1-content">First Tab Content</div>
|
|
11
|
+
</TabItem>
|
|
12
|
+
<TabItem title="Second Tab" value="tab2">
|
|
13
|
+
<div data-testid="tab2-content">Second Tab Content</div>
|
|
14
|
+
</TabItem>
|
|
15
|
+
<TabItem title="Third Tab" value="tab3">
|
|
16
|
+
<div data-testid="tab3-content">Third Tab Content</div>
|
|
17
|
+
</TabItem>
|
|
18
|
+
</Tabs>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export default TabsWithItems;
|
|
2
|
+
type TabsWithItems = {
|
|
3
|
+
$on?(type: string, callback: (e: any) => void): () => void;
|
|
4
|
+
$set?(props: Partial<$$ComponentProps>): void;
|
|
5
|
+
};
|
|
6
|
+
declare const TabsWithItems: import("svelte").Component<{
|
|
7
|
+
activeTabValue?: any;
|
|
8
|
+
tabStyle?: string;
|
|
9
|
+
withOpen?: boolean;
|
|
10
|
+
}, {}, "activeTabValue">;
|
|
11
|
+
type $$ComponentProps = {
|
|
12
|
+
activeTabValue?: any;
|
|
13
|
+
tabStyle?: string;
|
|
14
|
+
withOpen?: boolean;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=TabsWithItems.test.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsWithItems.test.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Tabs/TabsWithItems.test.svelte.js"],"names":[],"mappings":";;;;;AA2BA;qBAjBsC,GAAG;eAAa,MAAM;eAAa,OAAO;yBAiBpB;wBAjBzC;IAAE,cAAc,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE"}
|
|
@@ -3,125 +3,141 @@ import { render, fireEvent } from '@testing-library/svelte';
|
|
|
3
3
|
import Toggle from './Toggle.svelte';
|
|
4
4
|
|
|
5
5
|
describe('Toggle Component', () => {
|
|
6
|
-
it('renders a toggle
|
|
6
|
+
it('renders a toggle with label element', () => {
|
|
7
7
|
const { container } = render(Toggle);
|
|
8
|
-
const
|
|
9
|
-
expect(
|
|
10
|
-
expect(
|
|
8
|
+
const label = container.querySelector('label');
|
|
9
|
+
expect(label).toBeTruthy();
|
|
10
|
+
expect(label).toHaveClass('inline-flex');
|
|
11
|
+
expect(label).toHaveClass('items-center');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('renders a hidden checkbox input', () => {
|
|
15
|
+
const { container } = render(Toggle);
|
|
16
|
+
const input = container.querySelector('input[type="checkbox"]');
|
|
17
|
+
expect(input).toBeTruthy();
|
|
18
|
+
expect(input).toHaveClass('sr-only');
|
|
19
|
+
expect(input).toHaveClass('peer');
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('renders switch element with role switch', () => {
|
|
23
|
+
const { container } = render(Toggle);
|
|
24
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
25
|
+
expect(switchEl).toBeTruthy();
|
|
11
26
|
});
|
|
12
27
|
|
|
13
28
|
it('has aria-checked false by default', () => {
|
|
14
29
|
const { container } = render(Toggle);
|
|
15
|
-
const
|
|
16
|
-
expect(
|
|
30
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
31
|
+
expect(switchEl.getAttribute('aria-checked')).toBe('false');
|
|
17
32
|
});
|
|
18
33
|
|
|
19
34
|
it('has aria-checked true when checked', () => {
|
|
20
|
-
const { container } = render(Toggle, {
|
|
21
|
-
const
|
|
22
|
-
expect(
|
|
35
|
+
const { container } = render(Toggle, { checked: true });
|
|
36
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
37
|
+
expect(switchEl.getAttribute('aria-checked')).toBe('true');
|
|
23
38
|
});
|
|
24
39
|
|
|
25
|
-
it('
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
await fireEvent.click(button);
|
|
40
|
+
it('checkbox reflects checked state', () => {
|
|
41
|
+
const { container } = render(Toggle, { checked: true });
|
|
42
|
+
const input = container.querySelector('input[type="checkbox"]');
|
|
43
|
+
expect(input.checked).toBe(true);
|
|
44
|
+
});
|
|
31
45
|
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
it('checkbox reflects unchecked state', () => {
|
|
47
|
+
const { container } = render(Toggle, { checked: false });
|
|
48
|
+
const input = container.querySelector('input[type="checkbox"]');
|
|
49
|
+
expect(input.checked).toBe(false);
|
|
34
50
|
});
|
|
35
51
|
|
|
36
|
-
it('toggles
|
|
52
|
+
it('toggles checked state on change', async () => {
|
|
37
53
|
const onchange = vi.fn();
|
|
38
|
-
const { container } = render(Toggle, {
|
|
39
|
-
const
|
|
54
|
+
const { container } = render(Toggle, { onchange });
|
|
55
|
+
const input = container.querySelector('input[type="checkbox"]');
|
|
40
56
|
|
|
41
|
-
await fireEvent.click(
|
|
57
|
+
await fireEvent.click(input);
|
|
42
58
|
|
|
43
|
-
expect(onchange).toHaveBeenCalledWith({ checked:
|
|
44
|
-
expect(button.getAttribute('aria-checked')).toBe('false');
|
|
59
|
+
expect(onchange).toHaveBeenCalledWith({ checked: true });
|
|
45
60
|
});
|
|
46
61
|
|
|
47
|
-
it('
|
|
62
|
+
it('toggles from checked to unchecked', async () => {
|
|
48
63
|
const onchange = vi.fn();
|
|
49
|
-
const { container } = render(Toggle, {
|
|
50
|
-
const
|
|
64
|
+
const { container } = render(Toggle, { checked: true, onchange });
|
|
65
|
+
const input = container.querySelector('input[type="checkbox"]');
|
|
51
66
|
|
|
52
|
-
await fireEvent.click(
|
|
67
|
+
await fireEvent.click(input);
|
|
53
68
|
|
|
54
|
-
expect(onchange).
|
|
55
|
-
expect(button.getAttribute('aria-checked')).toBe('false');
|
|
69
|
+
expect(onchange).toHaveBeenCalledWith({ checked: false });
|
|
56
70
|
});
|
|
57
71
|
|
|
58
|
-
it('has
|
|
59
|
-
const { container } = render(Toggle, {
|
|
60
|
-
const
|
|
61
|
-
expect(
|
|
72
|
+
it('has disabled attribute when disabled', () => {
|
|
73
|
+
const { container } = render(Toggle, { disabled: true });
|
|
74
|
+
const input = container.querySelector('input[type="checkbox"]');
|
|
75
|
+
expect(input.disabled).toBe(true);
|
|
62
76
|
});
|
|
63
77
|
|
|
64
|
-
it('
|
|
65
|
-
const { container } = render(Toggle, {
|
|
66
|
-
const
|
|
67
|
-
expect(
|
|
78
|
+
it('has disabled styling on label when disabled', () => {
|
|
79
|
+
const { container } = render(Toggle, { disabled: true });
|
|
80
|
+
const label = container.querySelector('label');
|
|
81
|
+
expect(label).toHaveClass('cursor-not-allowed');
|
|
82
|
+
expect(label).toHaveClass('opacity-50');
|
|
68
83
|
});
|
|
69
84
|
|
|
70
|
-
it('has
|
|
71
|
-
const { container } = render(Toggle, {
|
|
72
|
-
const
|
|
73
|
-
expect(
|
|
85
|
+
it('has pointer cursor when not disabled', () => {
|
|
86
|
+
const { container } = render(Toggle, { disabled: false });
|
|
87
|
+
const label = container.querySelector('label');
|
|
88
|
+
expect(label).toHaveClass('cursor-pointer');
|
|
74
89
|
});
|
|
75
90
|
|
|
76
|
-
it('has
|
|
91
|
+
it('has switch element with rounded-full class', () => {
|
|
77
92
|
const { container } = render(Toggle);
|
|
78
|
-
const
|
|
79
|
-
expect(
|
|
93
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
94
|
+
expect(switchEl).toHaveClass('rounded-full');
|
|
80
95
|
});
|
|
81
96
|
|
|
82
|
-
it('
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
await fireEvent.keyDown(button, { key: 'Enter' });
|
|
88
|
-
|
|
89
|
-
expect(onchange).toHaveBeenCalledWith({ checked: true });
|
|
97
|
+
it('has default md size track dimensions', () => {
|
|
98
|
+
const { container } = render(Toggle, { size: 'md' });
|
|
99
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
100
|
+
expect(switchEl).toHaveClass('w-11');
|
|
101
|
+
expect(switchEl).toHaveClass('h-6');
|
|
90
102
|
});
|
|
91
103
|
|
|
92
|
-
it('
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
await fireEvent.keyDown(button, { key: ' ' });
|
|
98
|
-
|
|
99
|
-
expect(onchange).toHaveBeenCalledWith({ checked: true });
|
|
104
|
+
it('has sm size track dimensions', () => {
|
|
105
|
+
const { container } = render(Toggle, { size: 'sm' });
|
|
106
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
107
|
+
expect(switchEl).toHaveClass('w-9');
|
|
108
|
+
expect(switchEl).toHaveClass('h-5');
|
|
100
109
|
});
|
|
101
110
|
|
|
102
|
-
it('
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
await fireEvent.keyDown(button, { key: 'Tab' });
|
|
108
|
-
|
|
109
|
-
expect(onchange).not.toHaveBeenCalled();
|
|
111
|
+
it('has lg size track dimensions', () => {
|
|
112
|
+
const { container } = render(Toggle, { size: 'lg' });
|
|
113
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
114
|
+
expect(switchEl).toHaveClass('w-14');
|
|
115
|
+
expect(switchEl).toHaveClass('h-7');
|
|
110
116
|
});
|
|
111
117
|
|
|
112
|
-
it('
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
|
|
118
|
+
it('has dark mode classes', () => {
|
|
119
|
+
const { container } = render(Toggle);
|
|
120
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
121
|
+
expect(switchEl).toHaveClass('dark:bg-gray-700');
|
|
122
|
+
expect(switchEl).toHaveClass('dark:peer-focus:ring-blue-800');
|
|
123
|
+
});
|
|
116
124
|
|
|
117
|
-
|
|
125
|
+
it('accepts custom class', () => {
|
|
126
|
+
const { container } = render(Toggle, { class: 'custom-class' });
|
|
127
|
+
const label = container.querySelector('label');
|
|
128
|
+
expect(label).toHaveClass('custom-class');
|
|
129
|
+
});
|
|
118
130
|
|
|
119
|
-
|
|
131
|
+
it('has peer focus ring classes', () => {
|
|
132
|
+
const { container } = render(Toggle);
|
|
133
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
134
|
+
expect(switchEl).toHaveClass('peer-focus:ring-4');
|
|
135
|
+
expect(switchEl).toHaveClass('peer-focus:ring-blue-300');
|
|
120
136
|
});
|
|
121
137
|
|
|
122
|
-
it('has
|
|
138
|
+
it('has blue background when checked', () => {
|
|
123
139
|
const { container } = render(Toggle);
|
|
124
|
-
const
|
|
125
|
-
expect(
|
|
140
|
+
const switchEl = container.querySelector('[role="switch"]');
|
|
141
|
+
expect(switchEl).toHaveClass('peer-checked:bg-blue-600');
|
|
126
142
|
});
|
|
127
143
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Typography.spec.d.ts","sourceRoot":"","sources":["../../../src/lib/primitives/Typography/Typography.spec.js"],"names":[],"mappings":""}
|