@chenzy-design/svelte 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/dist/badge/Badge.svelte +5 -2
- package/dist/badge/Badge.svelte.d.ts.map +1 -1
- package/dist/components.json +1 -1
- package/package.json +6 -5
- package/dist/anchor/Anchor.a11y.test.d.ts +0 -2
- package/dist/anchor/Anchor.a11y.test.d.ts.map +0 -1
- package/dist/anchor/Anchor.a11y.test.js +0 -44
- package/dist/anchor/Anchor.kbd.test.d.ts +0 -2
- package/dist/anchor/Anchor.kbd.test.d.ts.map +0 -1
- package/dist/anchor/Anchor.kbd.test.js +0 -59
- package/dist/anchor/AnchorKbdFixture.svelte +0 -24
- package/dist/anchor/AnchorKbdFixture.svelte.d.ts +0 -19
- package/dist/anchor/AnchorKbdFixture.svelte.d.ts.map +0 -1
- package/dist/autocomplete/AutoComplete.a11y.test.d.ts +0 -2
- package/dist/autocomplete/AutoComplete.a11y.test.d.ts.map +0 -1
- package/dist/autocomplete/AutoComplete.a11y.test.js +0 -45
- package/dist/autocomplete/AutoComplete.kbd.test.d.ts +0 -2
- package/dist/autocomplete/AutoComplete.kbd.test.d.ts.map +0 -1
- package/dist/autocomplete/AutoComplete.kbd.test.js +0 -60
- package/dist/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
- package/dist/autocomplete/AutoCompleteKbdFixture.svelte.d.ts +0 -4
- package/dist/autocomplete/AutoCompleteKbdFixture.svelte.d.ts.map +0 -1
- package/dist/avatar/Avatar.a11y.test.d.ts +0 -2
- package/dist/avatar/Avatar.a11y.test.d.ts.map +0 -1
- package/dist/avatar/Avatar.a11y.test.js +0 -34
- package/dist/back-top/BackTop.a11y.test.d.ts +0 -2
- package/dist/back-top/BackTop.a11y.test.d.ts.map +0 -1
- package/dist/back-top/BackTop.a11y.test.js +0 -37
- package/dist/badge/Badge.a11y.test.d.ts +0 -2
- package/dist/badge/Badge.a11y.test.d.ts.map +0 -1
- package/dist/badge/Badge.a11y.test.js +0 -32
- package/dist/badge/BadgeA11yFixture.svelte +0 -18
- package/dist/badge/BadgeA11yFixture.svelte.d.ts +0 -7
- package/dist/badge/BadgeA11yFixture.svelte.d.ts.map +0 -1
- package/dist/banner/Banner.a11y.test.d.ts +0 -2
- package/dist/banner/Banner.a11y.test.d.ts.map +0 -1
- package/dist/banner/Banner.a11y.test.js +0 -43
- package/dist/breadcrumb/Breadcrumb.a11y.test.d.ts +0 -2
- package/dist/breadcrumb/Breadcrumb.a11y.test.d.ts.map +0 -1
- package/dist/breadcrumb/Breadcrumb.a11y.test.js +0 -31
- package/dist/breadcrumb/Breadcrumb.kbd.test.d.ts +0 -2
- package/dist/breadcrumb/Breadcrumb.kbd.test.d.ts.map +0 -1
- package/dist/breadcrumb/Breadcrumb.kbd.test.js +0 -37
- package/dist/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
- package/dist/breadcrumb/BreadcrumbKbdFixture.svelte.d.ts +0 -19
- package/dist/breadcrumb/BreadcrumbKbdFixture.svelte.d.ts.map +0 -1
- package/dist/button/Button.a11y.test.d.ts +0 -2
- package/dist/button/Button.a11y.test.d.ts.map +0 -1
- package/dist/button/Button.a11y.test.js +0 -49
- package/dist/calendar/Calendar.a11y.test.d.ts +0 -2
- package/dist/calendar/Calendar.a11y.test.d.ts.map +0 -1
- package/dist/calendar/Calendar.a11y.test.js +0 -46
- package/dist/calendar/Calendar.kbd.test.d.ts +0 -2
- package/dist/calendar/Calendar.kbd.test.d.ts.map +0 -1
- package/dist/calendar/Calendar.kbd.test.js +0 -50
- package/dist/calendar/CalendarKbdFixture.svelte +0 -23
- package/dist/calendar/CalendarKbdFixture.svelte.d.ts +0 -19
- package/dist/calendar/CalendarKbdFixture.svelte.d.ts.map +0 -1
- package/dist/card/Card.a11y.test.d.ts +0 -2
- package/dist/card/Card.a11y.test.d.ts.map +0 -1
- package/dist/card/Card.a11y.test.js +0 -35
- package/dist/carousel/Carousel.a11y.test.d.ts +0 -2
- package/dist/carousel/Carousel.a11y.test.d.ts.map +0 -1
- package/dist/carousel/Carousel.a11y.test.js +0 -43
- package/dist/carousel/Carousel.kbd.test.d.ts +0 -2
- package/dist/carousel/Carousel.kbd.test.d.ts.map +0 -1
- package/dist/carousel/Carousel.kbd.test.js +0 -51
- package/dist/carousel/CarouselA11yFixture.svelte +0 -25
- package/dist/carousel/CarouselA11yFixture.svelte.d.ts +0 -8
- package/dist/carousel/CarouselA11yFixture.svelte.d.ts.map +0 -1
- package/dist/carousel/CarouselKbdFixture.svelte +0 -24
- package/dist/carousel/CarouselKbdFixture.svelte.d.ts +0 -19
- package/dist/carousel/CarouselKbdFixture.svelte.d.ts.map +0 -1
- package/dist/cascader/Cascader.a11y.test.d.ts +0 -2
- package/dist/cascader/Cascader.a11y.test.d.ts.map +0 -1
- package/dist/cascader/Cascader.a11y.test.js +0 -55
- package/dist/cascader/Cascader.kbd.test.d.ts +0 -2
- package/dist/cascader/Cascader.kbd.test.d.ts.map +0 -1
- package/dist/cascader/Cascader.kbd.test.js +0 -47
- package/dist/cascader/CascaderKbdFixture.svelte +0 -31
- package/dist/cascader/CascaderKbdFixture.svelte.d.ts +0 -19
- package/dist/cascader/CascaderKbdFixture.svelte.d.ts.map +0 -1
- package/dist/checkbox/CheckboxGroup.a11y.test.d.ts +0 -2
- package/dist/checkbox/CheckboxGroup.a11y.test.d.ts.map +0 -1
- package/dist/checkbox/CheckboxGroup.a11y.test.js +0 -38
- package/dist/checkbox/CheckboxGroup.kbd.test.d.ts +0 -2
- package/dist/checkbox/CheckboxGroup.kbd.test.d.ts.map +0 -1
- package/dist/checkbox/CheckboxGroup.kbd.test.js +0 -33
- package/dist/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
- package/dist/checkbox/CheckboxGroupKbdFixture.svelte.d.ts +0 -19
- package/dist/checkbox/CheckboxGroupKbdFixture.svelte.d.ts.map +0 -1
- package/dist/collapse/Collapse.a11y.test.d.ts +0 -2
- package/dist/collapse/Collapse.a11y.test.d.ts.map +0 -1
- package/dist/collapse/Collapse.a11y.test.js +0 -46
- package/dist/collapse/Collapse.kbd.test.d.ts +0 -2
- package/dist/collapse/Collapse.kbd.test.d.ts.map +0 -1
- package/dist/collapse/Collapse.kbd.test.js +0 -70
- package/dist/collapse/CollapseA11yFixture.svelte +0 -27
- package/dist/collapse/CollapseA11yFixture.svelte.d.ts +0 -9
- package/dist/collapse/CollapseA11yFixture.svelte.d.ts.map +0 -1
- package/dist/collapse/CollapseKbdFixture.svelte +0 -25
- package/dist/collapse/CollapseKbdFixture.svelte.d.ts +0 -19
- package/dist/collapse/CollapseKbdFixture.svelte.d.ts.map +0 -1
- package/dist/color-picker/ColorPicker.a11y.test.d.ts +0 -2
- package/dist/color-picker/ColorPicker.a11y.test.d.ts.map +0 -1
- package/dist/color-picker/ColorPicker.a11y.test.js +0 -54
- package/dist/color-picker/ColorPicker.kbd.test.d.ts +0 -2
- package/dist/color-picker/ColorPicker.kbd.test.d.ts.map +0 -1
- package/dist/color-picker/ColorPicker.kbd.test.js +0 -59
- package/dist/color-picker/ColorPickerKbdFixture.svelte +0 -25
- package/dist/color-picker/ColorPickerKbdFixture.svelte.d.ts +0 -4
- package/dist/color-picker/ColorPickerKbdFixture.svelte.d.ts.map +0 -1
- package/dist/date-picker/DatePicker.a11y.test.d.ts +0 -2
- package/dist/date-picker/DatePicker.a11y.test.d.ts.map +0 -1
- package/dist/date-picker/DatePicker.a11y.test.js +0 -42
- package/dist/date-picker/DatePicker.kbd.test.d.ts +0 -2
- package/dist/date-picker/DatePicker.kbd.test.d.ts.map +0 -1
- package/dist/date-picker/DatePicker.kbd.test.js +0 -59
- package/dist/date-picker/DatePickerKbdFixture.svelte +0 -26
- package/dist/date-picker/DatePickerKbdFixture.svelte.d.ts +0 -4
- package/dist/date-picker/DatePickerKbdFixture.svelte.d.ts.map +0 -1
- package/dist/date-picker/RangePicker.kbd.test.d.ts +0 -2
- package/dist/date-picker/RangePicker.kbd.test.d.ts.map +0 -1
- package/dist/date-picker/RangePicker.kbd.test.js +0 -60
- package/dist/date-picker/RangePickerKbdFixture.svelte +0 -30
- package/dist/date-picker/RangePickerKbdFixture.svelte.d.ts +0 -7
- package/dist/date-picker/RangePickerKbdFixture.svelte.d.ts.map +0 -1
- package/dist/descriptions/Descriptions.a11y.test.d.ts +0 -2
- package/dist/descriptions/Descriptions.a11y.test.d.ts.map +0 -1
- package/dist/descriptions/Descriptions.a11y.test.js +0 -31
- package/dist/divider/Divider.a11y.test.d.ts +0 -2
- package/dist/divider/Divider.a11y.test.d.ts.map +0 -1
- package/dist/divider/Divider.a11y.test.js +0 -21
- package/dist/drawer/Drawer.a11y.test.d.ts +0 -2
- package/dist/drawer/Drawer.a11y.test.d.ts.map +0 -1
- package/dist/drawer/Drawer.a11y.test.js +0 -33
- package/dist/drawer/Drawer.kbd.test.d.ts +0 -2
- package/dist/drawer/Drawer.kbd.test.d.ts.map +0 -1
- package/dist/drawer/Drawer.kbd.test.js +0 -53
- package/dist/drawer/DrawerKbdFixture.svelte +0 -28
- package/dist/drawer/DrawerKbdFixture.svelte.d.ts +0 -4
- package/dist/drawer/DrawerKbdFixture.svelte.d.ts.map +0 -1
- package/dist/dropdown/Dropdown.a11y.test.d.ts +0 -2
- package/dist/dropdown/Dropdown.a11y.test.d.ts.map +0 -1
- package/dist/dropdown/Dropdown.a11y.test.js +0 -39
- package/dist/dropdown/Dropdown.kbd.test.d.ts +0 -2
- package/dist/dropdown/Dropdown.kbd.test.d.ts.map +0 -1
- package/dist/dropdown/Dropdown.kbd.test.js +0 -47
- package/dist/dropdown/DropdownA11yFixture.svelte +0 -24
- package/dist/dropdown/DropdownA11yFixture.svelte.d.ts +0 -11
- package/dist/dropdown/DropdownA11yFixture.svelte.d.ts.map +0 -1
- package/dist/dropdown/DropdownKbdFixture.svelte +0 -26
- package/dist/dropdown/DropdownKbdFixture.svelte.d.ts +0 -19
- package/dist/dropdown/DropdownKbdFixture.svelte.d.ts.map +0 -1
- package/dist/dropdown/types.test.d.ts +0 -2
- package/dist/dropdown/types.test.d.ts.map +0 -1
- package/dist/dropdown/types.test.js +0 -40
- package/dist/empty/Empty.a11y.test.d.ts +0 -2
- package/dist/empty/Empty.a11y.test.d.ts.map +0 -1
- package/dist/empty/Empty.a11y.test.js +0 -22
- package/dist/form/Form.a11y.test.d.ts +0 -2
- package/dist/form/Form.a11y.test.d.ts.map +0 -1
- package/dist/form/Form.a11y.test.js +0 -36
- package/dist/form/FormA11yFixture.svelte +0 -31
- package/dist/form/FormA11yFixture.svelte.d.ts +0 -19
- package/dist/form/FormA11yFixture.svelte.d.ts.map +0 -1
- package/dist/grid/Grid.a11y.test.d.ts +0 -2
- package/dist/grid/Grid.a11y.test.d.ts.map +0 -1
- package/dist/grid/Grid.a11y.test.js +0 -13
- package/dist/grid/GridA11yFixture.svelte +0 -12
- package/dist/grid/GridA11yFixture.svelte.d.ts +0 -19
- package/dist/grid/GridA11yFixture.svelte.d.ts.map +0 -1
- package/dist/highlight/Highlight.a11y.test.d.ts +0 -2
- package/dist/highlight/Highlight.a11y.test.d.ts.map +0 -1
- package/dist/highlight/Highlight.a11y.test.js +0 -23
- package/dist/image/Image.a11y.test.d.ts +0 -2
- package/dist/image/Image.a11y.test.d.ts.map +0 -1
- package/dist/image/Image.a11y.test.js +0 -27
- package/dist/image/ImagePreview.kbd.test.d.ts +0 -2
- package/dist/image/ImagePreview.kbd.test.d.ts.map +0 -1
- package/dist/image/ImagePreview.kbd.test.js +0 -44
- package/dist/image/ImagePreviewKbdFixture.svelte +0 -32
- package/dist/image/ImagePreviewKbdFixture.svelte.d.ts +0 -4
- package/dist/image/ImagePreviewKbdFixture.svelte.d.ts.map +0 -1
- package/dist/input/Input.a11y.test.d.ts +0 -2
- package/dist/input/Input.a11y.test.d.ts.map +0 -1
- package/dist/input/Input.a11y.test.js +0 -53
- package/dist/input-number/InputNumber.a11y.test.d.ts +0 -2
- package/dist/input-number/InputNumber.a11y.test.d.ts.map +0 -1
- package/dist/input-number/InputNumber.a11y.test.js +0 -40
- package/dist/input-number/InputNumber.kbd.test.d.ts +0 -2
- package/dist/input-number/InputNumber.kbd.test.d.ts.map +0 -1
- package/dist/input-number/InputNumber.kbd.test.js +0 -35
- package/dist/input-number/InputNumberKbdFixture.svelte +0 -15
- package/dist/input-number/InputNumberKbdFixture.svelte.d.ts +0 -19
- package/dist/input-number/InputNumberKbdFixture.svelte.d.ts.map +0 -1
- package/dist/layout/Layout.a11y.test.d.ts +0 -2
- package/dist/layout/Layout.a11y.test.d.ts.map +0 -1
- package/dist/layout/Layout.a11y.test.js +0 -32
- package/dist/layout/LayoutA11yFixture.svelte +0 -21
- package/dist/layout/LayoutA11yFixture.svelte.d.ts +0 -7
- package/dist/layout/LayoutA11yFixture.svelte.d.ts.map +0 -1
- package/dist/list/List.a11y.test.d.ts +0 -2
- package/dist/list/List.a11y.test.d.ts.map +0 -1
- package/dist/list/List.a11y.test.js +0 -62
- package/dist/list/List.bench.d.ts +0 -2
- package/dist/list/List.bench.d.ts.map +0 -1
- package/dist/list/List.bench.js +0 -16
- package/dist/list/List.kbd.test.d.ts +0 -2
- package/dist/list/List.kbd.test.d.ts.map +0 -1
- package/dist/list/List.kbd.test.js +0 -60
- package/dist/list/ListA11yFixture.svelte +0 -38
- package/dist/list/ListA11yFixture.svelte.d.ts +0 -10
- package/dist/list/ListA11yFixture.svelte.d.ts.map +0 -1
- package/dist/list/ListBenchFixture.svelte +0 -22
- package/dist/list/ListBenchFixture.svelte.d.ts +0 -7
- package/dist/list/ListBenchFixture.svelte.d.ts.map +0 -1
- package/dist/list/ListKbdFixture.svelte +0 -31
- package/dist/list/ListKbdFixture.svelte.d.ts +0 -19
- package/dist/list/ListKbdFixture.svelte.d.ts.map +0 -1
- package/dist/menu/Menu.a11y.test.d.ts +0 -2
- package/dist/menu/Menu.a11y.test.d.ts.map +0 -1
- package/dist/menu/Menu.a11y.test.js +0 -49
- package/dist/menu/Menu.kbd.test.d.ts +0 -2
- package/dist/menu/Menu.kbd.test.d.ts.map +0 -1
- package/dist/menu/Menu.kbd.test.js +0 -56
- package/dist/menu/MenuKbdFixture.svelte +0 -22
- package/dist/menu/MenuKbdFixture.svelte.d.ts +0 -19
- package/dist/menu/MenuKbdFixture.svelte.d.ts.map +0 -1
- package/dist/meta.test.d.ts +0 -2
- package/dist/meta.test.d.ts.map +0 -1
- package/dist/meta.test.js +0 -164
- package/dist/modal/Modal.a11y.test.d.ts +0 -2
- package/dist/modal/Modal.a11y.test.d.ts.map +0 -1
- package/dist/modal/Modal.a11y.test.js +0 -38
- package/dist/modal/Modal.kbd.test.d.ts +0 -2
- package/dist/modal/Modal.kbd.test.d.ts.map +0 -1
- package/dist/modal/Modal.kbd.test.js +0 -52
- package/dist/modal/ModalKbdFixture.svelte +0 -24
- package/dist/modal/ModalKbdFixture.svelte.d.ts +0 -4
- package/dist/modal/ModalKbdFixture.svelte.d.ts.map +0 -1
- package/dist/notification/NotificationItem.a11y.test.d.ts +0 -2
- package/dist/notification/NotificationItem.a11y.test.d.ts.map +0 -1
- package/dist/notification/NotificationItem.a11y.test.js +0 -64
- package/dist/overflow-list/OverflowList.a11y.test.d.ts +0 -2
- package/dist/overflow-list/OverflowList.a11y.test.d.ts.map +0 -1
- package/dist/overflow-list/OverflowList.a11y.test.js +0 -41
- package/dist/overflow-list/OverflowList.kbd.test.d.ts +0 -2
- package/dist/overflow-list/OverflowList.kbd.test.d.ts.map +0 -1
- package/dist/overflow-list/OverflowList.kbd.test.js +0 -28
- package/dist/overflow-list/OverflowListA11yFixture.svelte +0 -22
- package/dist/overflow-list/OverflowListA11yFixture.svelte.d.ts +0 -8
- package/dist/overflow-list/OverflowListA11yFixture.svelte.d.ts.map +0 -1
- package/dist/overflow-list/OverflowListKbdFixture.svelte +0 -21
- package/dist/overflow-list/OverflowListKbdFixture.svelte.d.ts +0 -19
- package/dist/overflow-list/OverflowListKbdFixture.svelte.d.ts.map +0 -1
- package/dist/pagination/Pagination.a11y.test.d.ts +0 -2
- package/dist/pagination/Pagination.a11y.test.d.ts.map +0 -1
- package/dist/pagination/Pagination.a11y.test.js +0 -57
- package/dist/pagination/Pagination.kbd.test.d.ts +0 -2
- package/dist/pagination/Pagination.kbd.test.d.ts.map +0 -1
- package/dist/pagination/Pagination.kbd.test.js +0 -54
- package/dist/pagination/PaginationKbdFixture.svelte +0 -15
- package/dist/pagination/PaginationKbdFixture.svelte.d.ts +0 -19
- package/dist/pagination/PaginationKbdFixture.svelte.d.ts.map +0 -1
- package/dist/popconfirm/Popconfirm.a11y.test.d.ts +0 -2
- package/dist/popconfirm/Popconfirm.a11y.test.d.ts.map +0 -1
- package/dist/popconfirm/Popconfirm.a11y.test.js +0 -37
- package/dist/popconfirm/Popconfirm.kbd.test.d.ts +0 -2
- package/dist/popconfirm/Popconfirm.kbd.test.d.ts.map +0 -1
- package/dist/popconfirm/Popconfirm.kbd.test.js +0 -36
- package/dist/popconfirm/PopconfirmA11yFixture.svelte +0 -34
- package/dist/popconfirm/PopconfirmA11yFixture.svelte.d.ts +0 -11
- package/dist/popconfirm/PopconfirmA11yFixture.svelte.d.ts.map +0 -1
- package/dist/popconfirm/PopconfirmKbdFixture.svelte +0 -17
- package/dist/popconfirm/PopconfirmKbdFixture.svelte.d.ts +0 -19
- package/dist/popconfirm/PopconfirmKbdFixture.svelte.d.ts.map +0 -1
- package/dist/popover/Popover.a11y.test.d.ts +0 -2
- package/dist/popover/Popover.a11y.test.d.ts.map +0 -1
- package/dist/popover/Popover.a11y.test.js +0 -47
- package/dist/popover/Popover.kbd.test.d.ts +0 -2
- package/dist/popover/Popover.kbd.test.d.ts.map +0 -1
- package/dist/popover/Popover.kbd.test.js +0 -36
- package/dist/popover/PopoverA11yFixture.svelte +0 -35
- package/dist/popover/PopoverA11yFixture.svelte.d.ts +0 -11
- package/dist/popover/PopoverA11yFixture.svelte.d.ts.map +0 -1
- package/dist/popover/PopoverKbdFixture.svelte +0 -18
- package/dist/popover/PopoverKbdFixture.svelte.d.ts +0 -19
- package/dist/popover/PopoverKbdFixture.svelte.d.ts.map +0 -1
- package/dist/progress/Progress.a11y.test.d.ts +0 -2
- package/dist/progress/Progress.a11y.test.d.ts.map +0 -1
- package/dist/progress/Progress.a11y.test.js +0 -34
- package/dist/radio/RadioGroup.a11y.test.d.ts +0 -2
- package/dist/radio/RadioGroup.a11y.test.d.ts.map +0 -1
- package/dist/radio/RadioGroup.a11y.test.js +0 -38
- package/dist/radio/RadioGroup.kbd.test.d.ts +0 -2
- package/dist/radio/RadioGroup.kbd.test.d.ts.map +0 -1
- package/dist/radio/RadioGroup.kbd.test.js +0 -59
- package/dist/radio/RadioGroupKbdFixture.svelte +0 -21
- package/dist/radio/RadioGroupKbdFixture.svelte.d.ts +0 -19
- package/dist/radio/RadioGroupKbdFixture.svelte.d.ts.map +0 -1
- package/dist/rating/Rating.a11y.test.d.ts +0 -2
- package/dist/rating/Rating.a11y.test.d.ts.map +0 -1
- package/dist/rating/Rating.a11y.test.js +0 -38
- package/dist/rating/Rating.kbd.test.d.ts +0 -2
- package/dist/rating/Rating.kbd.test.d.ts.map +0 -1
- package/dist/rating/Rating.kbd.test.js +0 -41
- package/dist/rating/RatingKbdFixture.svelte +0 -15
- package/dist/rating/RatingKbdFixture.svelte.d.ts +0 -19
- package/dist/rating/RatingKbdFixture.svelte.d.ts.map +0 -1
- package/dist/select/Select.a11y.test.d.ts +0 -2
- package/dist/select/Select.a11y.test.d.ts.map +0 -1
- package/dist/select/Select.a11y.test.js +0 -53
- package/dist/select/Select.kbd.test.d.ts +0 -2
- package/dist/select/Select.kbd.test.d.ts.map +0 -1
- package/dist/select/Select.kbd.test.js +0 -47
- package/dist/select/SelectKbdFixture.svelte +0 -29
- package/dist/select/SelectKbdFixture.svelte.d.ts +0 -4
- package/dist/select/SelectKbdFixture.svelte.d.ts.map +0 -1
- package/dist/side-sheet/SideSheet.a11y.test.d.ts +0 -2
- package/dist/side-sheet/SideSheet.a11y.test.d.ts.map +0 -1
- package/dist/side-sheet/SideSheet.a11y.test.js +0 -46
- package/dist/side-sheet/SideSheet.kbd.test.d.ts +0 -2
- package/dist/side-sheet/SideSheet.kbd.test.d.ts.map +0 -1
- package/dist/side-sheet/SideSheet.kbd.test.js +0 -49
- package/dist/side-sheet/SideSheetKbdFixture.svelte +0 -30
- package/dist/side-sheet/SideSheetKbdFixture.svelte.d.ts +0 -4
- package/dist/side-sheet/SideSheetKbdFixture.svelte.d.ts.map +0 -1
- package/dist/skeleton/Skeleton.a11y.test.d.ts +0 -2
- package/dist/skeleton/Skeleton.a11y.test.d.ts.map +0 -1
- package/dist/skeleton/Skeleton.a11y.test.js +0 -32
- package/dist/slider/Slider.a11y.test.d.ts +0 -2
- package/dist/slider/Slider.a11y.test.d.ts.map +0 -1
- package/dist/slider/Slider.a11y.test.js +0 -40
- package/dist/slider/Slider.kbd.test.d.ts +0 -2
- package/dist/slider/Slider.kbd.test.d.ts.map +0 -1
- package/dist/slider/Slider.kbd.test.js +0 -63
- package/dist/slider/SliderKbdFixture.svelte +0 -21
- package/dist/slider/SliderKbdFixture.svelte.d.ts +0 -19
- package/dist/slider/SliderKbdFixture.svelte.d.ts.map +0 -1
- package/dist/space/Space.a11y.test.d.ts +0 -2
- package/dist/space/Space.a11y.test.d.ts.map +0 -1
- package/dist/space/Space.a11y.test.js +0 -20
- package/dist/space/SpaceA11yFixture.svelte +0 -17
- package/dist/space/SpaceA11yFixture.svelte.d.ts +0 -7
- package/dist/space/SpaceA11yFixture.svelte.d.ts.map +0 -1
- package/dist/spin/Spin.a11y.test.d.ts +0 -2
- package/dist/spin/Spin.a11y.test.d.ts.map +0 -1
- package/dist/spin/Spin.a11y.test.js +0 -27
- package/dist/spin/SpinA11yFixture.svelte +0 -18
- package/dist/spin/SpinA11yFixture.svelte.d.ts +0 -7
- package/dist/spin/SpinA11yFixture.svelte.d.ts.map +0 -1
- package/dist/steps/Steps.a11y.test.d.ts +0 -2
- package/dist/steps/Steps.a11y.test.d.ts.map +0 -1
- package/dist/steps/Steps.a11y.test.js +0 -35
- package/dist/steps/Steps.kbd.test.d.ts +0 -2
- package/dist/steps/Steps.kbd.test.d.ts.map +0 -1
- package/dist/steps/Steps.kbd.test.js +0 -59
- package/dist/steps/StepsKbdFixture.svelte +0 -21
- package/dist/steps/StepsKbdFixture.svelte.d.ts +0 -19
- package/dist/steps/StepsKbdFixture.svelte.d.ts.map +0 -1
- package/dist/switch/Switch.a11y.test.d.ts +0 -2
- package/dist/switch/Switch.a11y.test.d.ts.map +0 -1
- package/dist/switch/Switch.a11y.test.js +0 -42
- package/dist/switch/Switch.kbd.test.d.ts +0 -2
- package/dist/switch/Switch.kbd.test.d.ts.map +0 -1
- package/dist/switch/Switch.kbd.test.js +0 -34
- package/dist/switch/SwitchKbdFixture.svelte +0 -22
- package/dist/switch/SwitchKbdFixture.svelte.d.ts +0 -4
- package/dist/switch/SwitchKbdFixture.svelte.d.ts.map +0 -1
- package/dist/table/Table.a11y.test.d.ts +0 -2
- package/dist/table/Table.a11y.test.d.ts.map +0 -1
- package/dist/table/Table.a11y.test.js +0 -59
- package/dist/table/Table.bench.d.ts +0 -2
- package/dist/table/Table.bench.d.ts.map +0 -1
- package/dist/table/Table.bench.js +0 -31
- package/dist/table/Table.kbd.test.d.ts +0 -2
- package/dist/table/Table.kbd.test.d.ts.map +0 -1
- package/dist/table/Table.kbd.test.js +0 -74
- package/dist/table/TableKbdFixture.svelte +0 -35
- package/dist/table/TableKbdFixture.svelte.d.ts +0 -19
- package/dist/table/TableKbdFixture.svelte.d.ts.map +0 -1
- package/dist/table/grid-nav.test.d.ts +0 -2
- package/dist/table/grid-nav.test.d.ts.map +0 -1
- package/dist/table/grid-nav.test.js +0 -133
- package/dist/tabs/Tabs.a11y.test.d.ts +0 -2
- package/dist/tabs/Tabs.a11y.test.d.ts.map +0 -1
- package/dist/tabs/Tabs.a11y.test.js +0 -43
- package/dist/tabs/Tabs.kbd.test.d.ts +0 -2
- package/dist/tabs/Tabs.kbd.test.d.ts.map +0 -1
- package/dist/tabs/Tabs.kbd.test.js +0 -63
- package/dist/tabs/TabsA11yFixture.svelte +0 -20
- package/dist/tabs/TabsA11yFixture.svelte.d.ts +0 -8
- package/dist/tabs/TabsA11yFixture.svelte.d.ts.map +0 -1
- package/dist/tabs/TabsKbdFixture.svelte +0 -25
- package/dist/tabs/TabsKbdFixture.svelte.d.ts +0 -7
- package/dist/tabs/TabsKbdFixture.svelte.d.ts.map +0 -1
- package/dist/tag/Tag.a11y.test.d.ts +0 -2
- package/dist/tag/Tag.a11y.test.d.ts.map +0 -1
- package/dist/tag/Tag.a11y.test.js +0 -30
- package/dist/tag/TagA11yFixture.svelte +0 -18
- package/dist/tag/TagA11yFixture.svelte.d.ts +0 -8
- package/dist/tag/TagA11yFixture.svelte.d.ts.map +0 -1
- package/dist/tag-input/TagInput.a11y.test.d.ts +0 -2
- package/dist/tag-input/TagInput.a11y.test.d.ts.map +0 -1
- package/dist/tag-input/TagInput.a11y.test.js +0 -38
- package/dist/tag-input/reorder.test.d.ts +0 -2
- package/dist/tag-input/reorder.test.d.ts.map +0 -1
- package/dist/tag-input/reorder.test.js +0 -48
- package/dist/test-utils/LocaleHarness.svelte +0 -29
- package/dist/test-utils/LocaleHarness.svelte.d.ts +0 -11
- package/dist/test-utils/LocaleHarness.svelte.d.ts.map +0 -1
- package/dist/test-utils/a11y.d.ts +0 -36
- package/dist/test-utils/a11y.d.ts.map +0 -1
- package/dist/test-utils/a11y.js +0 -68
- package/dist/test-utils/kbd.d.ts +0 -26
- package/dist/test-utils/kbd.d.ts.map +0 -1
- package/dist/test-utils/kbd.js +0 -38
- package/dist/textarea/TextArea.a11y.test.d.ts +0 -2
- package/dist/textarea/TextArea.a11y.test.d.ts.map +0 -1
- package/dist/textarea/TextArea.a11y.test.js +0 -41
- package/dist/time-picker/TimePicker.a11y.test.d.ts +0 -2
- package/dist/time-picker/TimePicker.a11y.test.d.ts.map +0 -1
- package/dist/time-picker/TimePicker.a11y.test.js +0 -42
- package/dist/time-picker/TimePicker.kbd.test.d.ts +0 -2
- package/dist/time-picker/TimePicker.kbd.test.d.ts.map +0 -1
- package/dist/time-picker/TimePicker.kbd.test.js +0 -59
- package/dist/time-picker/TimePickerKbdFixture.svelte +0 -23
- package/dist/time-picker/TimePickerKbdFixture.svelte.d.ts +0 -4
- package/dist/time-picker/TimePickerKbdFixture.svelte.d.ts.map +0 -1
- package/dist/timeline/Timeline.a11y.test.d.ts +0 -2
- package/dist/timeline/Timeline.a11y.test.d.ts.map +0 -1
- package/dist/timeline/Timeline.a11y.test.js +0 -51
- package/dist/toast/Toast.a11y.test.d.ts +0 -2
- package/dist/toast/Toast.a11y.test.d.ts.map +0 -1
- package/dist/toast/Toast.a11y.test.js +0 -58
- package/dist/tooltip/Tooltip.a11y.test.d.ts +0 -2
- package/dist/tooltip/Tooltip.a11y.test.d.ts.map +0 -1
- package/dist/tooltip/Tooltip.a11y.test.js +0 -33
- package/dist/tooltip/Tooltip.kbd.test.d.ts +0 -2
- package/dist/tooltip/Tooltip.kbd.test.d.ts.map +0 -1
- package/dist/tooltip/Tooltip.kbd.test.js +0 -31
- package/dist/tooltip/TooltipA11yFixture.svelte +0 -31
- package/dist/tooltip/TooltipA11yFixture.svelte.d.ts +0 -11
- package/dist/tooltip/TooltipA11yFixture.svelte.d.ts.map +0 -1
- package/dist/tooltip/TooltipKbdFixture.svelte +0 -16
- package/dist/tooltip/TooltipKbdFixture.svelte.d.ts +0 -19
- package/dist/tooltip/TooltipKbdFixture.svelte.d.ts.map +0 -1
- package/dist/transfer/Transfer.a11y.test.d.ts +0 -2
- package/dist/transfer/Transfer.a11y.test.d.ts.map +0 -1
- package/dist/transfer/Transfer.a11y.test.js +0 -59
- package/dist/transfer/Transfer.kbd.test.d.ts +0 -2
- package/dist/transfer/Transfer.kbd.test.d.ts.map +0 -1
- package/dist/transfer/Transfer.kbd.test.js +0 -64
- package/dist/transfer/TransferKbdFixture.svelte +0 -23
- package/dist/transfer/TransferKbdFixture.svelte.d.ts +0 -4
- package/dist/transfer/TransferKbdFixture.svelte.d.ts.map +0 -1
- package/dist/transfer/group.test.d.ts +0 -2
- package/dist/transfer/group.test.d.ts.map +0 -1
- package/dist/transfer/group.test.js +0 -47
- package/dist/transfer/reorder.test.d.ts +0 -2
- package/dist/transfer/reorder.test.d.ts.map +0 -1
- package/dist/transfer/reorder.test.js +0 -42
- package/dist/transfer/tree.test.d.ts +0 -2
- package/dist/transfer/tree.test.d.ts.map +0 -1
- package/dist/transfer/tree.test.js +0 -39
- package/dist/tree/Tree.a11y.test.d.ts +0 -2
- package/dist/tree/Tree.a11y.test.d.ts.map +0 -1
- package/dist/tree/Tree.a11y.test.js +0 -56
- package/dist/tree/Tree.kbd.test.d.ts +0 -2
- package/dist/tree/Tree.kbd.test.d.ts.map +0 -1
- package/dist/tree/Tree.kbd.test.js +0 -78
- package/dist/tree/TreeKbdFixture.svelte +0 -30
- package/dist/tree/TreeKbdFixture.svelte.d.ts +0 -19
- package/dist/tree/TreeKbdFixture.svelte.d.ts.map +0 -1
- package/dist/tree-select/TreeSelect.a11y.test.d.ts +0 -2
- package/dist/tree-select/TreeSelect.a11y.test.d.ts.map +0 -1
- package/dist/tree-select/TreeSelect.a11y.test.js +0 -48
- package/dist/tree-select/TreeSelect.kbd.test.d.ts +0 -2
- package/dist/tree-select/TreeSelect.kbd.test.d.ts.map +0 -1
- package/dist/tree-select/TreeSelect.kbd.test.js +0 -46
- package/dist/tree-select/TreeSelectKbdFixture.svelte +0 -20
- package/dist/tree-select/TreeSelectKbdFixture.svelte.d.ts +0 -19
- package/dist/tree-select/TreeSelectKbdFixture.svelte.d.ts.map +0 -1
- package/dist/tree-select/virtual.test.d.ts +0 -2
- package/dist/tree-select/virtual.test.d.ts.map +0 -1
- package/dist/tree-select/virtual.test.js +0 -86
- package/dist/typography/Typography.a11y.test.d.ts +0 -2
- package/dist/typography/Typography.a11y.test.d.ts.map +0 -1
- package/dist/typography/Typography.a11y.test.js +0 -31
- package/dist/typography/TypographyA11yFixture.svelte +0 -27
- package/dist/typography/TypographyA11yFixture.svelte.d.ts +0 -9
- package/dist/typography/TypographyA11yFixture.svelte.d.ts.map +0 -1
- package/dist/upload/Upload.a11y.test.d.ts +0 -2
- package/dist/upload/Upload.a11y.test.d.ts.map +0 -1
- package/dist/upload/Upload.a11y.test.js +0 -49
- package/dist/upload/UploadA11yFixture.svelte +0 -23
- package/dist/upload/UploadA11yFixture.svelte.d.ts +0 -10
- package/dist/upload/UploadA11yFixture.svelte.d.ts.map +0 -1
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// Progress a11y:role=progressbar + aria-valuenow/min/max;indeterminate 省略 valuenow 并设 aria-busy。
|
|
2
|
-
import { describe, it, expect } from 'vitest';
|
|
3
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
4
|
-
import Progress from './Progress.svelte';
|
|
5
|
-
describe('Progress a11y', () => {
|
|
6
|
-
it('line:role=progressbar + aria-valuenow,无 axe violations', async () => {
|
|
7
|
-
const { container } = renderWithLocale(Progress, {
|
|
8
|
-
props: { percent: 42, ariaLabel: 'Upload progress' },
|
|
9
|
-
});
|
|
10
|
-
const bar = container.querySelector('[role="progressbar"]');
|
|
11
|
-
expect(bar).not.toBeNull();
|
|
12
|
-
expect(bar?.getAttribute('aria-valuenow')).toBe('42');
|
|
13
|
-
expect(bar?.getAttribute('aria-valuemin')).toBe('0');
|
|
14
|
-
expect(bar?.getAttribute('aria-valuemax')).toBe('100');
|
|
15
|
-
await expectNoAxeViolations(container);
|
|
16
|
-
});
|
|
17
|
-
it('circle:role=progressbar,无 axe violations', async () => {
|
|
18
|
-
const { container } = renderWithLocale(Progress, {
|
|
19
|
-
props: { type: 'circle', percent: 70, ariaLabel: 'Task' },
|
|
20
|
-
});
|
|
21
|
-
const bar = container.querySelector('[role="progressbar"]');
|
|
22
|
-
expect(bar?.getAttribute('aria-valuenow')).toBe('70');
|
|
23
|
-
await expectNoAxeViolations(container);
|
|
24
|
-
});
|
|
25
|
-
it('indeterminate:省略 aria-valuenow 并设 aria-busy,无 axe violations', async () => {
|
|
26
|
-
const { container } = renderWithLocale(Progress, {
|
|
27
|
-
props: { indeterminate: true, ariaLabel: 'Loading' },
|
|
28
|
-
});
|
|
29
|
-
const bar = container.querySelector('[role="progressbar"]');
|
|
30
|
-
expect(bar?.getAttribute('aria-valuenow')).toBeNull();
|
|
31
|
-
expect(bar?.getAttribute('aria-busy')).toBe('true');
|
|
32
|
-
await expectNoAxeViolations(container);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.a11y.test.d.ts","sourceRoot":"","sources":["../../src/radio/RadioGroup.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// RadioGroup a11y:role="radiogroup" 容器 + 多个 radio 选项(原生 input)。
|
|
2
|
-
// 只断言静态 ARIA + axe 0 violations,不测方向键 roving(jsdom 限制)。
|
|
3
|
-
import { describe, it, expect } from 'vitest';
|
|
4
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
5
|
-
import RadioGroup from './RadioGroup.svelte';
|
|
6
|
-
const OPTIONS = [
|
|
7
|
-
{ label: 'Apple', value: 'apple' },
|
|
8
|
-
{ label: 'Banana', value: 'banana' },
|
|
9
|
-
{ label: 'Cherry', value: 'cherry', disabled: true },
|
|
10
|
-
];
|
|
11
|
-
describe('RadioGroup a11y', () => {
|
|
12
|
-
it('默认:role=radiogroup + ariaLabel + 多选项渲染,无 axe violations', async () => {
|
|
13
|
-
const { container } = renderWithLocale(RadioGroup, {
|
|
14
|
-
props: { ariaLabel: 'Fruit', options: OPTIONS },
|
|
15
|
-
});
|
|
16
|
-
const group = container.querySelector('[role="radiogroup"]');
|
|
17
|
-
expect(group?.getAttribute('aria-label')).toBe('Fruit');
|
|
18
|
-
const radios = container.querySelectorAll('input[type="radio"]');
|
|
19
|
-
expect(radios.length).toBe(3);
|
|
20
|
-
await expectNoAxeViolations(container);
|
|
21
|
-
});
|
|
22
|
-
it('选中态:value 命中的 radio 为 checked', async () => {
|
|
23
|
-
const { container } = renderWithLocale(RadioGroup, {
|
|
24
|
-
props: { ariaLabel: 'Fruit', options: OPTIONS, value: 'banana' },
|
|
25
|
-
});
|
|
26
|
-
const checked = container.querySelector('input[type="radio"]:checked');
|
|
27
|
-
expect(checked?.value).toBe('banana');
|
|
28
|
-
await expectNoAxeViolations(container);
|
|
29
|
-
});
|
|
30
|
-
it('禁用项:对应 radio 为 disabled', async () => {
|
|
31
|
-
const { container } = renderWithLocale(RadioGroup, {
|
|
32
|
-
props: { ariaLabel: 'Fruit', options: OPTIONS },
|
|
33
|
-
});
|
|
34
|
-
const disabled = container.querySelectorAll('input[type="radio"]:disabled');
|
|
35
|
-
expect(disabled.length).toBe(1);
|
|
36
|
-
await expectNoAxeViolations(container);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.kbd.test.d.ts","sourceRoot":"","sources":["../../src/radio/RadioGroup.kbd.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// RadioGroup 键盘 e2e(browser project / 真实 chromium)。
|
|
2
|
-
// WAI-ARIA radiogroup:roving tabindex + 方向键导航即选中(真实焦点)。
|
|
3
|
-
// 测真实焦点移动 + 焦点即选中——jsdom 测不了(命令式 focus() 不可靠):
|
|
4
|
-
// 1. roving 单停靠点:选中项 tabindex=0,其余 -1(默认 defaultValue=apple)。
|
|
5
|
-
// 2. ↓→ 真实移动焦点到下一项,同时选中(checked + 停靠点同步)。
|
|
6
|
-
// 3. wrap:末项再 → 回到首项(源码 moveTo 用模运算 wrap)。
|
|
7
|
-
// 4. Home/End 跳首/末并选中。
|
|
8
|
-
//
|
|
9
|
-
// 真实焦点断言用 page locator 的 .toHaveFocus()。
|
|
10
|
-
import { describe, it, expect } from 'vitest';
|
|
11
|
-
import { page } from 'vitest/browser';
|
|
12
|
-
import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
|
|
13
|
-
import RadioGroupKbdFixture from './RadioGroupKbdFixture.svelte';
|
|
14
|
-
function loc(el) {
|
|
15
|
-
return page.elementLocator(el);
|
|
16
|
-
}
|
|
17
|
-
describe('RadioGroup 键盘 e2e(radiogroup roving,焦点即选中)', () => {
|
|
18
|
-
it('roving 单停靠点 + 方向键移动焦点即选中(wrap)+ Home/End', async () => {
|
|
19
|
-
const { baseElement } = renderKbdFixture(RadioGroupKbdFixture);
|
|
20
|
-
const radios = Array.from(baseElement.querySelectorAll('input[type="radio"]'));
|
|
21
|
-
expect(radios.length).toBe(3);
|
|
22
|
-
const [apple, banana, cherry] = radios;
|
|
23
|
-
// 1. roving 单停靠点:选中项(apple)tabindex=0,其余 -1。
|
|
24
|
-
expect(radios.filter((el) => el.tabIndex === 0).length).toBe(1);
|
|
25
|
-
expect(apple.tabIndex).toBe(0);
|
|
26
|
-
expect(apple.checked).toBe(true);
|
|
27
|
-
const before = baseElement.querySelector('[data-testid="before"]');
|
|
28
|
-
before.focus();
|
|
29
|
-
await expect.element(loc(before)).toHaveFocus();
|
|
30
|
-
await userEvent.tab();
|
|
31
|
-
await expect.element(loc(apple)).toHaveFocus();
|
|
32
|
-
// 2. → 移动焦点到下一项,焦点即选中(checked + 停靠点同步)。
|
|
33
|
-
await userEvent.keyboard('{ArrowRight}');
|
|
34
|
-
await expect.element(loc(banana)).toHaveFocus();
|
|
35
|
-
expect(banana.checked).toBe(true);
|
|
36
|
-
expect(banana.tabIndex).toBe(0);
|
|
37
|
-
expect(apple.tabIndex).toBe(-1);
|
|
38
|
-
expect(apple.checked).toBe(false);
|
|
39
|
-
// ↓ 同义于 →(垂直/水平统一)。
|
|
40
|
-
await userEvent.keyboard('{ArrowDown}');
|
|
41
|
-
await expect.element(loc(cherry)).toHaveFocus();
|
|
42
|
-
expect(cherry.checked).toBe(true);
|
|
43
|
-
// 3. wrap:末项再 → 回到首项并选中。
|
|
44
|
-
await userEvent.keyboard('{ArrowRight}');
|
|
45
|
-
await expect.element(loc(apple)).toHaveFocus();
|
|
46
|
-
expect(apple.checked).toBe(true);
|
|
47
|
-
// ← wrap 到末项。
|
|
48
|
-
await userEvent.keyboard('{ArrowLeft}');
|
|
49
|
-
await expect.element(loc(cherry)).toHaveFocus();
|
|
50
|
-
expect(cherry.checked).toBe(true);
|
|
51
|
-
// 4. Home/End 跳首/末并选中。
|
|
52
|
-
await userEvent.keyboard('{Home}');
|
|
53
|
-
await expect.element(loc(apple)).toHaveFocus();
|
|
54
|
-
expect(apple.checked).toBe(true);
|
|
55
|
-
await userEvent.keyboard('{End}');
|
|
56
|
-
await expect.element(loc(cherry)).toHaveFocus();
|
|
57
|
-
expect(cherry.checked).toBe(true);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
仅供 RadioGroup.kbd.test.ts(browser project)使用的键盘 e2e 夹具。
|
|
3
|
-
WAI-ARIA radiogroup:roving tabindex + 方向键导航即选中(真实焦点)。
|
|
4
|
-
defaultValue 选中一项,使其为单一 Tab 停靠点。前后各放按钮验证 Tab 进/出。
|
|
5
|
-
-->
|
|
6
|
-
<script lang="ts">
|
|
7
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
8
|
-
import RadioGroup from './RadioGroup.svelte';
|
|
9
|
-
|
|
10
|
-
const options = [
|
|
11
|
-
{ label: 'Apple', value: 'apple' },
|
|
12
|
-
{ label: 'Banana', value: 'banana' },
|
|
13
|
-
{ label: 'Cherry', value: 'cherry' },
|
|
14
|
-
];
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<LocaleProvider locale="en_US">
|
|
18
|
-
<button type="button" data-testid="before">before</button>
|
|
19
|
-
<RadioGroup {options} defaultValue="apple" ariaLabel="Fruit" />
|
|
20
|
-
<button type="button" data-testid="after">after</button>
|
|
21
|
-
</LocaleProvider>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const RadioGroupKbdFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
}, {}, {}, string>;
|
|
17
|
-
type RadioGroupKbdFixture = InstanceType<typeof RadioGroupKbdFixture>;
|
|
18
|
-
export default RadioGroupKbdFixture;
|
|
19
|
-
//# sourceMappingURL=RadioGroupKbdFixture.svelte.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroupKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/radio/RadioGroupKbdFixture.svelte.ts"],"names":[],"mappings":"AA0BA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,oBAAoB;;kBAA+E,CAAC;AACxF,KAAK,oBAAoB,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACxE,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Rating.a11y.test.d.ts","sourceRoot":"","sources":["../../src/rating/Rating.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
// Rating a11y:APG slider 模式(role=slider + aria-valuenow/min/max/valuetext)。
|
|
2
|
-
// 可访问名走 i18n(Rating.ariaLabel);error 态 aria-invalid。
|
|
3
|
-
import { describe, it, expect } from 'vitest';
|
|
4
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
5
|
-
import Rating from './Rating.svelte';
|
|
6
|
-
describe('Rating a11y', () => {
|
|
7
|
-
it('默认渲染:role=slider + aria-valuenow/min/max,locale 可访问名,无 axe violations', async () => {
|
|
8
|
-
const { container } = renderWithLocale(Rating, { props: { defaultValue: 3 } });
|
|
9
|
-
const slider = container.querySelector('[role="slider"]');
|
|
10
|
-
expect(slider).not.toBeNull();
|
|
11
|
-
expect(slider?.getAttribute('aria-valuenow')).toBe('3');
|
|
12
|
-
expect(slider?.getAttribute('aria-valuemin')).toBe('0');
|
|
13
|
-
expect(slider?.getAttribute('aria-valuemax')).toBe('5');
|
|
14
|
-
// 可访问名来自 en_US locale(Rating.ariaLabel),非 key 原样。
|
|
15
|
-
const label = slider?.getAttribute('aria-label');
|
|
16
|
-
expect(label).toBeTruthy();
|
|
17
|
-
expect(label).not.toBe('Rating.ariaLabel');
|
|
18
|
-
expect(slider?.getAttribute('aria-valuetext')).toBeTruthy();
|
|
19
|
-
await expectNoAxeViolations(container);
|
|
20
|
-
});
|
|
21
|
-
it('自定义 ariaLabel + error:aria-label / aria-invalid', async () => {
|
|
22
|
-
const { container } = renderWithLocale(Rating, {
|
|
23
|
-
props: { defaultValue: 2, ariaLabel: 'Difficulty', status: 'error' },
|
|
24
|
-
});
|
|
25
|
-
const slider = container.querySelector('[role="slider"]');
|
|
26
|
-
expect(slider?.getAttribute('aria-label')).toBe('Difficulty');
|
|
27
|
-
expect(slider?.getAttribute('aria-invalid')).toBe('true');
|
|
28
|
-
await expectNoAxeViolations(container);
|
|
29
|
-
});
|
|
30
|
-
it('readonly:aria-readonly=true,无 axe violations', async () => {
|
|
31
|
-
const { container } = renderWithLocale(Rating, {
|
|
32
|
-
props: { defaultValue: 4, readonly: true },
|
|
33
|
-
});
|
|
34
|
-
const slider = container.querySelector('[role="slider"]');
|
|
35
|
-
expect(slider?.getAttribute('aria-readonly')).toBe('true');
|
|
36
|
-
await expectNoAxeViolations(container);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Rating.kbd.test.d.ts","sourceRoot":"","sources":["../../src/rating/Rating.kbd.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// Rating 键盘 e2e(browser project / 真实 chromium)。
|
|
2
|
-
// Rating 根元素是 role=slider(APG slider 模式,tabindex=0),焦点落在根本身:
|
|
3
|
-
// ←↓ 减、→↑ 增(minStep=1),数字键 1–9 直接定位,Home→0 / End→count,
|
|
4
|
-
// aria-valuenow 真实变化。jsdom 焦点/数字键合成不可靠,故在真浏览器里测。
|
|
5
|
-
import { describe, it, expect } from 'vitest';
|
|
6
|
-
import { page } from 'vitest/browser';
|
|
7
|
-
import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
|
|
8
|
-
import RatingKbdFixture from './RatingKbdFixture.svelte';
|
|
9
|
-
function loc(el) {
|
|
10
|
-
return page.elementLocator(el);
|
|
11
|
-
}
|
|
12
|
-
describe('Rating 键盘 e2e(role=slider 方向键 + 数字键)', () => {
|
|
13
|
-
it('Tab 聚焦 + 方向键调分 + 数字键定位 + Home/End', async () => {
|
|
14
|
-
const { baseElement } = renderKbdFixture(RatingKbdFixture);
|
|
15
|
-
const rating = baseElement.querySelector('[role="slider"]');
|
|
16
|
-
expect(rating).not.toBeNull();
|
|
17
|
-
expect(rating.getAttribute('aria-valuenow')).toBe('3');
|
|
18
|
-
// Tab 从 before 进入,焦点落在 slider 根。
|
|
19
|
-
const before = baseElement.querySelector('[data-testid="before"]');
|
|
20
|
-
before.focus();
|
|
21
|
-
await expect.element(loc(before)).toHaveFocus();
|
|
22
|
-
await userEvent.tab();
|
|
23
|
-
await expect.element(loc(rating)).toHaveFocus();
|
|
24
|
-
// → 增(4),← 减(3)。
|
|
25
|
-
await userEvent.keyboard('{ArrowRight}');
|
|
26
|
-
await expect.element(loc(rating)).toHaveAttribute('aria-valuenow', '4');
|
|
27
|
-
await userEvent.keyboard('{ArrowLeft}');
|
|
28
|
-
await expect.element(loc(rating)).toHaveAttribute('aria-valuenow', '3');
|
|
29
|
-
// 数字键 5 直接定位到 5 分。
|
|
30
|
-
await userEvent.keyboard('5');
|
|
31
|
-
await expect.element(loc(rating)).toHaveAttribute('aria-valuenow', '5');
|
|
32
|
-
// 数字键 2 定位到 2 分。
|
|
33
|
-
await userEvent.keyboard('2');
|
|
34
|
-
await expect.element(loc(rating)).toHaveAttribute('aria-valuenow', '2');
|
|
35
|
-
// Home → 0,End → count(5)。
|
|
36
|
-
await userEvent.keyboard('{Home}');
|
|
37
|
-
await expect.element(loc(rating)).toHaveAttribute('aria-valuenow', '0');
|
|
38
|
-
await userEvent.keyboard('{End}');
|
|
39
|
-
await expect.element(loc(rating)).toHaveAttribute('aria-valuenow', '5');
|
|
40
|
-
});
|
|
41
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
仅供 Rating.kbd.test.ts(browser project)使用的键盘 e2e 夹具。
|
|
3
|
-
Rating 根元素是 role=slider(tabindex=0),焦点落在根上:
|
|
4
|
-
方向键调评分、数字键 1–9 定位、Home/End 到 0/count,aria-valuenow 真实变化。
|
|
5
|
-
before 按钮验证 Tab 真实聚焦到 slider 根。
|
|
6
|
-
-->
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
9
|
-
import Rating from './Rating.svelte';
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<LocaleProvider locale="en_US">
|
|
13
|
-
<button type="button" data-testid="before">before</button>
|
|
14
|
-
<Rating defaultValue={3} count={5} ariaLabel="Score" />
|
|
15
|
-
</LocaleProvider>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const RatingKbdFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
}, {}, {}, string>;
|
|
17
|
-
type RatingKbdFixture = InstanceType<typeof RatingKbdFixture>;
|
|
18
|
-
export default RatingKbdFixture;
|
|
19
|
-
//# sourceMappingURL=RatingKbdFixture.svelte.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RatingKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/rating/RatingKbdFixture.svelte.ts"],"names":[],"mappings":"AAmBA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,gBAAgB;;kBAA+E,CAAC;AACpF,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Select.a11y.test.d.ts","sourceRoot":"","sources":["../../src/select/Select.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// Select a11y:combobox 触发器 + listbox/option 浮层(use:floating portal 到 body)。
|
|
2
|
-
// 只断言静态 ARIA + axe,不测真实键盘/焦点(jsdom 限制)。
|
|
3
|
-
//
|
|
4
|
-
// 修复记录:根 `<div role="combobox">` 现经 ariaLabel/ariaLabelledby prop 或
|
|
5
|
-
// placeholder / locale Select.ariaLabel 回退获可访问名,axe aria-input-field-name 消除。
|
|
6
|
-
import { describe, it, expect } from 'vitest';
|
|
7
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
8
|
-
import Select from './Select.svelte';
|
|
9
|
-
const options = [
|
|
10
|
-
{ label: 'Apple', value: 'apple' },
|
|
11
|
-
{ label: 'Banana', value: 'banana' },
|
|
12
|
-
{ label: 'Cherry', value: 'cherry' },
|
|
13
|
-
];
|
|
14
|
-
describe('Select a11y', () => {
|
|
15
|
-
it('关闭态:触发器 role=combobox / aria-expanded=false / aria-haspopup=listbox(结构断言)', () => {
|
|
16
|
-
const { container } = renderWithLocale(Select, {
|
|
17
|
-
props: { options, placeholder: 'Pick a fruit' },
|
|
18
|
-
});
|
|
19
|
-
const combobox = container.querySelector('[role="combobox"]');
|
|
20
|
-
expect(combobox).not.toBeNull();
|
|
21
|
-
expect(combobox?.getAttribute('aria-expanded')).toBe('false');
|
|
22
|
-
expect(combobox?.getAttribute('aria-haspopup')).toBe('listbox');
|
|
23
|
-
});
|
|
24
|
-
it('打开态:listbox + option 渲染(结构断言)', () => {
|
|
25
|
-
renderWithLocale(Select, {
|
|
26
|
-
props: { options, defaultOpen: true, placeholder: 'Pick a fruit' },
|
|
27
|
-
});
|
|
28
|
-
const listbox = document.querySelector('[role="listbox"]');
|
|
29
|
-
expect(listbox).not.toBeNull();
|
|
30
|
-
expect(document.querySelectorAll('[role="option"]').length).toBe(options.length);
|
|
31
|
-
});
|
|
32
|
-
it('已选值:选中 option aria-selected=true(结构断言)', () => {
|
|
33
|
-
renderWithLocale(Select, {
|
|
34
|
-
props: { options, defaultOpen: true, defaultValue: 'banana' },
|
|
35
|
-
});
|
|
36
|
-
const selected = document.querySelector('[role="option"][aria-selected="true"]');
|
|
37
|
-
expect(selected?.textContent).toContain('Banana');
|
|
38
|
-
});
|
|
39
|
-
it('多选:aria-multiselectable=true(结构断言)', () => {
|
|
40
|
-
renderWithLocale(Select, {
|
|
41
|
-
props: { options, defaultOpen: true, multiple: true },
|
|
42
|
-
});
|
|
43
|
-
expect(document.querySelector('[role="listbox"]')?.getAttribute('aria-multiselectable')).toBe('true');
|
|
44
|
-
});
|
|
45
|
-
// combobox 可访问名回退到 placeholder(缺省走 locale Select.ariaLabel)。
|
|
46
|
-
it('打开态:axe 0 violations(combobox 经 placeholder/locale 获可访问名)', async () => {
|
|
47
|
-
renderWithLocale(Select, {
|
|
48
|
-
props: { options, defaultOpen: true, placeholder: 'Pick a fruit' },
|
|
49
|
-
});
|
|
50
|
-
expect(document.querySelector('[role="combobox"]')?.getAttribute('aria-label')).toBe('Pick a fruit');
|
|
51
|
-
await expectNoAxeViolations(document.body);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Select.kbd.test.d.ts","sourceRoot":"","sources":["../../src/select/Select.kbd.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// Select 键盘 e2e(browser project / 真实 chromium),浮层方向键导航。
|
|
2
|
-
// Select 高亮走 aria-activedescendant 模式:焦点始终留在 role=combobox 触发器上
|
|
3
|
-
// (options tabindex=-1,从不真实聚焦),"高亮项"由触发器的 aria-activedescendant
|
|
4
|
-
// 指向的 option id 表达。故断言 activedescendant 指向的 option id 变化,而非 toHaveFocus。
|
|
5
|
-
// 浮层经 use:floating portal 到 document.body —— 在 document 范围查 listbox。
|
|
6
|
-
// 1. 打开后 ↓ 高亮首项(opt-0),再 ↓ 移到 opt-1;↑ 回到 opt-0。
|
|
7
|
-
// 2. Home/End 跳列表首/末。
|
|
8
|
-
// 3. Enter 选中当前高亮项(onChange 写入夹具 output)。
|
|
9
|
-
import { describe, it, expect } from 'vitest';
|
|
10
|
-
import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
|
|
11
|
-
import SelectKbdFixture from './SelectKbdFixture.svelte';
|
|
12
|
-
describe('Select 键盘 e2e(aria-activedescendant 浮层导航)', () => {
|
|
13
|
-
it('打开后 ↑↓ 移高亮 + Home/End 首末 + Enter 选中', async () => {
|
|
14
|
-
renderKbdFixture(SelectKbdFixture);
|
|
15
|
-
const combobox = document.querySelector('[role="combobox"]');
|
|
16
|
-
expect(combobox).not.toBeNull();
|
|
17
|
-
// 点击触发器打开浮层(焦点留在 combobox)。
|
|
18
|
-
await userEvent.click(combobox);
|
|
19
|
-
const listbox = document.querySelector('[role="listbox"]');
|
|
20
|
-
expect(listbox).not.toBeNull();
|
|
21
|
-
const listId = listbox.id;
|
|
22
|
-
expect(listId).toBeTruthy();
|
|
23
|
-
const options = Array.from(listbox.querySelectorAll('[role="option"]'));
|
|
24
|
-
expect(options.length).toBe(3);
|
|
25
|
-
// 焦点在 combobox 上,options 不可真实聚焦(tabindex=-1)。
|
|
26
|
-
expect(options.every((o) => o.tabIndex === -1)).toBe(true);
|
|
27
|
-
// 1. ↓ 高亮首项(activeIndex -1 → 0),aria-activedescendant 指向 opt-0。
|
|
28
|
-
await userEvent.keyboard('{ArrowDown}');
|
|
29
|
-
expect(combobox.getAttribute('aria-activedescendant')).toBe(`${listId}-opt-0`);
|
|
30
|
-
expect(options[0].classList.contains('cd-select__option--active')).toBe(true);
|
|
31
|
-
// 再 ↓ 移到 opt-1。
|
|
32
|
-
await userEvent.keyboard('{ArrowDown}');
|
|
33
|
-
expect(combobox.getAttribute('aria-activedescendant')).toBe(`${listId}-opt-1`);
|
|
34
|
-
// ↑ 回到 opt-0。
|
|
35
|
-
await userEvent.keyboard('{ArrowUp}');
|
|
36
|
-
expect(combobox.getAttribute('aria-activedescendant')).toBe(`${listId}-opt-0`);
|
|
37
|
-
// 2. End 跳末项(opt-2);Home 回首项(opt-0)。
|
|
38
|
-
await userEvent.keyboard('{End}');
|
|
39
|
-
expect(combobox.getAttribute('aria-activedescendant')).toBe(`${listId}-opt-2`);
|
|
40
|
-
await userEvent.keyboard('{Home}');
|
|
41
|
-
expect(combobox.getAttribute('aria-activedescendant')).toBe(`${listId}-opt-0`);
|
|
42
|
-
// 3. Enter 选中当前高亮项(opt-0 = Apple),onChange 写入夹具 output。
|
|
43
|
-
await userEvent.keyboard('{Enter}');
|
|
44
|
-
const out = document.querySelector('[data-testid="value"]');
|
|
45
|
-
expect(out.textContent).toBe(JSON.stringify('apple'));
|
|
46
|
-
});
|
|
47
|
-
});
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
仅供 Select.kbd.test.ts(browser project)使用的键盘 e2e 夹具。
|
|
3
|
-
Select 浮层 portal 到 document.body;高亮走 aria-activedescendant(焦点留在
|
|
4
|
-
role=combobox 触发器上不动,由 aria-activedescendant 指向高亮 option)。
|
|
5
|
-
夹具暴露 onChange 写入 lastValue,供测试断言 Enter 选中。
|
|
6
|
-
-->
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
9
|
-
import Select from './Select.svelte';
|
|
10
|
-
|
|
11
|
-
const options = [
|
|
12
|
-
{ label: 'Apple', value: 'apple' },
|
|
13
|
-
{ label: 'Banana', value: 'banana' },
|
|
14
|
-
{ label: 'Cherry', value: 'cherry' },
|
|
15
|
-
];
|
|
16
|
-
|
|
17
|
-
let lastValue = $state<unknown>(undefined);
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<LocaleProvider locale="en_US">
|
|
21
|
-
<Select
|
|
22
|
-
{options}
|
|
23
|
-
ariaLabel="Fruit"
|
|
24
|
-
onChange={(v) => {
|
|
25
|
-
lastValue = v;
|
|
26
|
-
}}
|
|
27
|
-
/>
|
|
28
|
-
<output data-testid="value">{JSON.stringify(lastValue ?? null)}</output>
|
|
29
|
-
</LocaleProvider>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/select/SelectKbdFixture.svelte.ts"],"names":[],"mappings":"AA6BA,QAAA,MAAM,gBAAgB,2DAAwC,CAAC;AAC/D,KAAK,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC5D,eAAe,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideSheet.a11y.test.d.ts","sourceRoot":"","sources":["../../src/side-sheet/SideSheet.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
// SideSheet a11y:侧边滑出浮层(APG dialog/modal,与 Modal 同构)。
|
|
2
|
-
// role=dialog;mask=true 加 aria-modal=true;有 title 用 aria-labelledby,无则 aria-label。
|
|
3
|
-
// portal 到 body,故扫描 document.body(参照 Modal)。
|
|
4
|
-
// 不测真实 focus-trap/scroll-lock(jsdom 焦点模型不完整),只断言静态 ARIA + axe。
|
|
5
|
-
import { describe, it, expect } from 'vitest';
|
|
6
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
7
|
-
import SideSheet from './SideSheet.svelte';
|
|
8
|
-
describe('SideSheet a11y', () => {
|
|
9
|
-
it('open + title:role=dialog / aria-modal / aria-labelledby,无 axe violations', async () => {
|
|
10
|
-
renderWithLocale(SideSheet, {
|
|
11
|
-
props: { open: true, title: 'Edit user' },
|
|
12
|
-
});
|
|
13
|
-
// portal 到 body —— 在 document 全局查询而非 container。
|
|
14
|
-
const dialog = document.querySelector('[role="dialog"]');
|
|
15
|
-
expect(dialog).not.toBeNull();
|
|
16
|
-
// mask 默认 true → 模态。
|
|
17
|
-
expect(dialog?.getAttribute('aria-modal')).toBe('true');
|
|
18
|
-
// 有 title 时用 aria-labelledby 指向标题 h2,且该 id 存在。
|
|
19
|
-
const labelledby = dialog?.getAttribute('aria-labelledby');
|
|
20
|
-
expect(labelledby).toBeTruthy();
|
|
21
|
-
const titleEl = labelledby ? document.getElementById(labelledby) : null;
|
|
22
|
-
expect(titleEl?.textContent).toContain('Edit user');
|
|
23
|
-
// 关闭按钮 aria-label 来自 en_US locale(验证 LocaleProvider 管线)。
|
|
24
|
-
const closeBtn = document.querySelector('.cd-sidesheet__close');
|
|
25
|
-
expect(closeBtn?.getAttribute('aria-label')).toBeTruthy();
|
|
26
|
-
await expectNoAxeViolations(document.body);
|
|
27
|
-
});
|
|
28
|
-
it('无 title + ariaLabel:role=dialog 用 aria-label 提供可访问名', async () => {
|
|
29
|
-
renderWithLocale(SideSheet, {
|
|
30
|
-
props: { open: true, ariaLabel: 'Notification center', closable: false },
|
|
31
|
-
});
|
|
32
|
-
const dialog = document.querySelector('[role="dialog"]');
|
|
33
|
-
expect(dialog?.getAttribute('aria-label')).toBe('Notification center');
|
|
34
|
-
expect(dialog?.getAttribute('aria-labelledby')).toBeNull();
|
|
35
|
-
await expectNoAxeViolations(document.body);
|
|
36
|
-
});
|
|
37
|
-
it('mask=false 非模态:不设 aria-modal(避免误导锁定语义)', async () => {
|
|
38
|
-
renderWithLocale(SideSheet, {
|
|
39
|
-
props: { open: true, title: 'Filters', mask: false },
|
|
40
|
-
});
|
|
41
|
-
const dialog = document.querySelector('[role="dialog"]');
|
|
42
|
-
expect(dialog).not.toBeNull();
|
|
43
|
-
expect(dialog?.getAttribute('aria-modal')).toBeNull();
|
|
44
|
-
await expectNoAxeViolations(document.body);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SideSheet.kbd.test.d.ts","sourceRoot":"","sources":["../../src/side-sheet/SideSheet.kbd.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// SideSheet 键盘 e2e(browser project / 真实 chromium)。
|
|
2
|
-
// 测 focus-trap 的真实焦点行为——jsdom 完全测不了(焦点模型不完整):
|
|
3
|
-
// 1. 打开 SideSheet 后焦点进入对话框内(首个可聚焦元素)。
|
|
4
|
-
// 2. Tab 循环被困在内:Tab 到最后一个再 Tab 回第一个;Shift+Tab 反向。
|
|
5
|
-
// 3. Esc 关闭后焦点归还触发元素(trigger 按钮)。
|
|
6
|
-
//
|
|
7
|
-
// SideSheet portal 到 body(与 Modal/Drawer 同构),故在 document 范围查 [role=dialog]。
|
|
8
|
-
// 仅 mask=true(默认)启用 focus trap;fixture 用 motionDisabled 关动效稳住时序。
|
|
9
|
-
import { describe, it, expect } from 'vitest';
|
|
10
|
-
import { page } from 'vitest/browser';
|
|
11
|
-
import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
|
|
12
|
-
import SideSheetKbdFixture from './SideSheetKbdFixture.svelte';
|
|
13
|
-
function loc(el) {
|
|
14
|
-
return page.elementLocator(el);
|
|
15
|
-
}
|
|
16
|
-
function focusablesIn(dialog) {
|
|
17
|
-
return Array.from(dialog.querySelectorAll('a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])')).filter((el) => el.offsetParent !== null);
|
|
18
|
-
}
|
|
19
|
-
describe('SideSheet 键盘 e2e(focus trap)', () => {
|
|
20
|
-
it('打开后焦点进入对话框;Tab 循环困在内;Esc 关闭后焦点归还 trigger', async () => {
|
|
21
|
-
const { baseElement } = renderKbdFixture(SideSheetKbdFixture);
|
|
22
|
-
const trigger = baseElement.querySelector('[data-testid="trigger"]');
|
|
23
|
-
expect(trigger).not.toBeNull();
|
|
24
|
-
await userEvent.click(trigger);
|
|
25
|
-
// SideSheet portal 到 body —— 在 document 范围查询对话框。
|
|
26
|
-
const dialog = document.querySelector('[role="dialog"]');
|
|
27
|
-
expect(dialog).not.toBeNull();
|
|
28
|
-
await expect.element(loc(dialog)).toBeInTheDocument();
|
|
29
|
-
// 1. 焦点进入对话框内(focus-trap activate 聚焦首个可聚焦元素)。
|
|
30
|
-
expect(dialog.contains(document.activeElement)).toBe(true);
|
|
31
|
-
const focusables = focusablesIn(dialog);
|
|
32
|
-
expect(focusables.length).toBeGreaterThan(1);
|
|
33
|
-
const first = focusables[0];
|
|
34
|
-
const last = focusables[focusables.length - 1];
|
|
35
|
-
// 2a. 焦点移到最后一个,再 Tab → 循环回第一个(被困住)。
|
|
36
|
-
last.focus();
|
|
37
|
-
await expect.element(loc(last)).toHaveFocus();
|
|
38
|
-
await userEvent.tab();
|
|
39
|
-
await expect.element(loc(first)).toHaveFocus();
|
|
40
|
-
expect(dialog.contains(document.activeElement)).toBe(true);
|
|
41
|
-
// 2b. Shift+Tab 从第一个 → 循环回最后一个。
|
|
42
|
-
await userEvent.tab({ shift: true });
|
|
43
|
-
await expect.element(loc(last)).toHaveFocus();
|
|
44
|
-
expect(dialog.contains(document.activeElement)).toBe(true);
|
|
45
|
-
// 3. Esc 关闭(closeOnEsc 默认 true)—— focus-trap deactivate 归还焦点 trigger。
|
|
46
|
-
await userEvent.keyboard('{Escape}');
|
|
47
|
-
await expect.element(loc(trigger)).toHaveFocus();
|
|
48
|
-
});
|
|
49
|
-
});
|