@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/time-picker/TimePickerKbdFixture.svelte.ts"],"names":[],"mappings":"AAsBA,QAAA,MAAM,oBAAoB,2DAAwC,CAAC;AACnE,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACpE,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timeline.a11y.test.d.ts","sourceRoot":"","sources":["../../src/timeline/Timeline.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// Timeline a11y:dataSource 模式渲染 <ul>/<li> 列表语义;interactive 项取 role=button + roving tabindex。
|
|
2
|
-
import { describe, it, expect } from 'vitest';
|
|
3
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
4
|
-
import Timeline from './Timeline.svelte';
|
|
5
|
-
describe('Timeline a11y', () => {
|
|
6
|
-
it('dataSource:ul/li 列表语义,无 axe violations', async () => {
|
|
7
|
-
const { container } = renderWithLocale(Timeline, {
|
|
8
|
-
props: {
|
|
9
|
-
pending: false,
|
|
10
|
-
dataSource: [
|
|
11
|
-
{ key: 'a', content: 'Created' },
|
|
12
|
-
{ key: 'b', content: 'In review' },
|
|
13
|
-
{ key: 'c', content: 'Merged' },
|
|
14
|
-
],
|
|
15
|
-
},
|
|
16
|
-
});
|
|
17
|
-
expect(container.querySelector('ul.cd-timeline')).not.toBeNull();
|
|
18
|
-
expect(container.querySelectorAll('li.cd-timeline__item').length).toBe(3);
|
|
19
|
-
await expectNoAxeViolations(container);
|
|
20
|
-
});
|
|
21
|
-
it('interactive:listitem 包内层 role=button + roving tabindex(首项 0)结构正确', () => {
|
|
22
|
-
const { container } = renderWithLocale(Timeline, {
|
|
23
|
-
props: {
|
|
24
|
-
interactive: true,
|
|
25
|
-
pending: false,
|
|
26
|
-
dataSource: [
|
|
27
|
-
{ key: 'a', content: 'Step one' },
|
|
28
|
-
{ key: 'b', content: 'Step two' },
|
|
29
|
-
],
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
// li 保持原生 list 语义,role=button + roving 落在内层 .cd-timeline__item-interactive。
|
|
33
|
-
const lis = container.querySelectorAll('li.cd-timeline__item');
|
|
34
|
-
expect(lis.length).toBe(2);
|
|
35
|
-
const buttons = container.querySelectorAll('.cd-timeline__item-interactive[role="button"]');
|
|
36
|
-
expect(buttons.length).toBe(2);
|
|
37
|
-
expect(buttons[0]?.getAttribute('tabindex')).toBe('0');
|
|
38
|
-
expect(buttons[1]?.getAttribute('tabindex')).toBe('-1');
|
|
39
|
-
});
|
|
40
|
-
// interactive 用 listitem 包内层 role=button:ul 直含 li(保 list 语义),交互落内层,无 [list] 违规。
|
|
41
|
-
it('interactive:无 axe violations(listitem 包 button)', async () => {
|
|
42
|
-
const { container } = renderWithLocale(Timeline, {
|
|
43
|
-
props: {
|
|
44
|
-
interactive: true,
|
|
45
|
-
pending: false,
|
|
46
|
-
dataSource: [{ key: 'a', content: 'Step one' }],
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
await expectNoAxeViolations(container);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Toast.a11y.test.d.ts","sourceRoot":"","sources":["../../src/toast/Toast.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
// Toast a11y:命令式单例 API(Toast.info 等)经惰性挂载容器渲染。
|
|
2
|
-
// Toast 的播报模型与多数库不同:卡片本身 role=presentation + aria-live=off(不充当 live
|
|
3
|
-
// region),所有文案播报统一走单例 live region(live-region.ts),避免每卡各自 region 的
|
|
4
|
-
// 重复/竞争。故拆两部分测:
|
|
5
|
-
// 1) ToastItem 纯展示卡片:role=presentation + aria-live=off,关闭按钮 locale 可访问名,axe 0。
|
|
6
|
-
// 2) live region:announce() 命令式写入 body 内 role=status(polite)/ role=alert(assertive)节点。
|
|
7
|
-
// jsdom 只断言静态 ARIA + axe。
|
|
8
|
-
import { describe, it, expect, afterEach } from 'vitest';
|
|
9
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
10
|
-
import ToastItemRaw from './ToastItem.svelte';
|
|
11
|
-
import { announce, __resetLiveRegion } from './live-region.js';
|
|
12
|
-
// ToastItem 有必填 props(toast/onClose/...);测试帮手用宽松 Record 构造器签名,
|
|
13
|
-
// 故在此把组件转为宽松类型(props 实际值在调用处提供,运行时安全)。
|
|
14
|
-
const ToastItem = ToastItemRaw;
|
|
15
|
-
const noop = () => { };
|
|
16
|
-
function makeToast(overrides = {}) {
|
|
17
|
-
return {
|
|
18
|
-
id: 't1',
|
|
19
|
-
content: 'Copied to clipboard',
|
|
20
|
-
type: 'success',
|
|
21
|
-
duration: 3,
|
|
22
|
-
position: 'top',
|
|
23
|
-
closable: true,
|
|
24
|
-
pauseOnHover: true,
|
|
25
|
-
theme: 'light',
|
|
26
|
-
onClose: undefined,
|
|
27
|
-
...overrides,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
describe('Toast a11y', () => {
|
|
31
|
-
afterEach(() => {
|
|
32
|
-
__resetLiveRegion();
|
|
33
|
-
});
|
|
34
|
-
it('ToastItem 卡片:role=presentation + aria-live=off + 关闭按钮 locale 可访问名,无 axe violations', async () => {
|
|
35
|
-
const { container } = renderWithLocale(ToastItem, {
|
|
36
|
-
props: { toast: makeToast(), onClose: noop, onPause: noop, onResume: noop },
|
|
37
|
-
});
|
|
38
|
-
const card = container.querySelector('.cd-toast-item');
|
|
39
|
-
expect(card?.getAttribute('role')).toBe('presentation');
|
|
40
|
-
expect(card?.getAttribute('aria-live')).toBe('off');
|
|
41
|
-
expect(container.querySelector('.cd-toast-item__close')?.getAttribute('aria-label')).toBeTruthy();
|
|
42
|
-
await expectNoAxeViolations(container);
|
|
43
|
-
});
|
|
44
|
-
it('live region:polite 文案写入 role=status / aria-live=polite 节点', async () => {
|
|
45
|
-
announce('Saved', 'success');
|
|
46
|
-
const polite = document.querySelector('.cd-toast-live-region[aria-live="polite"]');
|
|
47
|
-
expect(polite?.getAttribute('role')).toBe('status');
|
|
48
|
-
expect(polite?.textContent).toBe('Saved');
|
|
49
|
-
await expectNoAxeViolations(document.body);
|
|
50
|
-
});
|
|
51
|
-
it('live region:error 文案写入 role=alert / aria-live=assertive 节点', async () => {
|
|
52
|
-
announce('Failed', 'error');
|
|
53
|
-
const assertive = document.querySelector('.cd-toast-live-region[aria-live="assertive"]');
|
|
54
|
-
expect(assertive?.getAttribute('role')).toBe('alert');
|
|
55
|
-
expect(assertive?.textContent).toBe('Failed');
|
|
56
|
-
await expectNoAxeViolations(document.body);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.a11y.test.d.ts","sourceRoot":"","sources":["../../src/tooltip/Tooltip.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// Tooltip a11y:浮层 role=tooltip,触发器 aria-describedby 关联浮层(打开时)。
|
|
2
|
-
// 浮层经 use:floating portal 到 document.body —— 参照 Modal.a11y.test.ts 全局查询。
|
|
3
|
-
// jsdom 触发不了真实 hover/focus,故用受控 open + trigger='custom' 强制打开再断言静态 ARIA。
|
|
4
|
-
// 经 TooltipA11yFixture 提供真实触发按钮 children(自带 LocaleProvider,故直接 render)。
|
|
5
|
-
import { describe, it, expect } from 'vitest';
|
|
6
|
-
import { render } from '@testing-library/svelte';
|
|
7
|
-
import { expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
8
|
-
import Fixture from './TooltipA11yFixture.svelte';
|
|
9
|
-
describe('Tooltip a11y', () => {
|
|
10
|
-
it('收起:仅触发器可见,无浮层,无 axe violations', async () => {
|
|
11
|
-
const { container } = render(Fixture, { props: { open: false } });
|
|
12
|
-
expect(document.querySelector('[role="tooltip"]')).toBeNull();
|
|
13
|
-
await expectNoAxeViolations(container);
|
|
14
|
-
});
|
|
15
|
-
it('open=true:浮层 role=tooltip + 触发器 aria-describedby 指向浮层,无 axe violations', async () => {
|
|
16
|
-
render(Fixture, { props: { open: true, content: 'Helpful hint' } });
|
|
17
|
-
const tip = document.querySelector('[role="tooltip"]');
|
|
18
|
-
expect(tip).not.toBeNull();
|
|
19
|
-
expect(tip?.textContent).toContain('Helpful hint');
|
|
20
|
-
const trigger = document.querySelector('.cd-tooltip__trigger');
|
|
21
|
-
const describedby = trigger?.getAttribute('aria-describedby');
|
|
22
|
-
expect(describedby).toBeTruthy();
|
|
23
|
-
expect(describedby).toBe(tip?.id);
|
|
24
|
-
await expectNoAxeViolations(document.body);
|
|
25
|
-
});
|
|
26
|
-
it('status=error:语义图标有 role=img + 可访问名(locale),无 axe violations', async () => {
|
|
27
|
-
render(Fixture, { props: { open: true, content: 'Invalid', status: 'error' } });
|
|
28
|
-
const statusIcon = document.querySelector('.cd-tooltip__status');
|
|
29
|
-
expect(statusIcon?.getAttribute('role')).toBe('img');
|
|
30
|
-
expect(statusIcon?.getAttribute('aria-label')).toBeTruthy();
|
|
31
|
-
await expectNoAxeViolations(document.body);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip.kbd.test.d.ts","sourceRoot":"","sources":["../../src/tooltip/Tooltip.kbd.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// Tooltip 键盘 e2e(browser project / 真实 chromium)。
|
|
2
|
-
// 测 useDismiss(escape:true) 的真实 Esc 关闭——浮层 portal 到 body,role=tooltip:
|
|
3
|
-
// 1. 聚焦触发按钮(trigger='focus')→ focusin 显示浮层(document 范围查 role=tooltip)。
|
|
4
|
-
// 2. 按 Esc → useDismiss 关闭浮层;焦点仍在触发按钮上(Esc 不移动焦点)。
|
|
5
|
-
//
|
|
6
|
-
// WCAG 1.4.13(Content on Hover or Focus):focus 浮层须可由 Esc 关闭。
|
|
7
|
-
import { describe, it, expect } from 'vitest';
|
|
8
|
-
import { page } from 'vitest/browser';
|
|
9
|
-
import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
|
|
10
|
-
import TooltipKbdFixture from './TooltipKbdFixture.svelte';
|
|
11
|
-
function loc(el) {
|
|
12
|
-
return page.elementLocator(el);
|
|
13
|
-
}
|
|
14
|
-
describe('Tooltip 键盘 e2e(Esc 关闭)', () => {
|
|
15
|
-
it('聚焦显示浮层;Esc 关闭浮层且焦点留在触发器', async () => {
|
|
16
|
-
const { baseElement } = renderKbdFixture(TooltipKbdFixture);
|
|
17
|
-
const trigger = baseElement.querySelector('[data-testid="trigger"]');
|
|
18
|
-
expect(trigger).not.toBeNull();
|
|
19
|
-
// 1. 聚焦触发按钮 → focusin 打开浮层。浮层 portal 到 body,在 document 范围查询。
|
|
20
|
-
trigger.focus();
|
|
21
|
-
await expect.element(loc(trigger)).toHaveFocus();
|
|
22
|
-
const tip = page.getByRole('tooltip');
|
|
23
|
-
await expect.element(tip).toBeInTheDocument();
|
|
24
|
-
await expect.element(tip).toHaveTextContent('More info');
|
|
25
|
-
// 2. Esc 关闭浮层(useDismiss escape:true 对 focus 触发亦生效)。
|
|
26
|
-
await userEvent.keyboard('{Escape}');
|
|
27
|
-
await expect.element(tip).not.toBeInTheDocument();
|
|
28
|
-
// Esc 不移动焦点:焦点仍在触发按钮上。
|
|
29
|
-
await expect.element(loc(trigger)).toHaveFocus();
|
|
30
|
-
});
|
|
31
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
Tooltip a11y 测试夹具:在 LocaleProvider 内渲染 Tooltip,
|
|
3
|
-
并提供一个真实可聚焦的触发按钮作为 children(trigger 文案)。
|
|
4
|
-
仅供 Tooltip.a11y.test.ts 使用,不对外导出。
|
|
5
|
-
-->
|
|
6
|
-
<script lang="ts">
|
|
7
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
8
|
-
import Tooltip from './Tooltip.svelte';
|
|
9
|
-
|
|
10
|
-
interface Props {
|
|
11
|
-
open?: boolean;
|
|
12
|
-
content?: string;
|
|
13
|
-
status?: 'default' | 'warning' | 'error';
|
|
14
|
-
trigger?: 'hover' | 'focus' | 'click' | 'custom';
|
|
15
|
-
locale?: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
let {
|
|
19
|
-
open = false,
|
|
20
|
-
content = 'More info',
|
|
21
|
-
status = 'default',
|
|
22
|
-
trigger = 'custom',
|
|
23
|
-
locale = 'en_US',
|
|
24
|
-
}: Props = $props();
|
|
25
|
-
</script>
|
|
26
|
-
|
|
27
|
-
<LocaleProvider {locale}>
|
|
28
|
-
<Tooltip {open} {content} {status} {trigger}>
|
|
29
|
-
<button type="button">Hover me</button>
|
|
30
|
-
</Tooltip>
|
|
31
|
-
</LocaleProvider>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
interface Props {
|
|
2
|
-
open?: boolean;
|
|
3
|
-
content?: string;
|
|
4
|
-
status?: 'default' | 'warning' | 'error';
|
|
5
|
-
trigger?: 'hover' | 'focus' | 'click' | 'custom';
|
|
6
|
-
locale?: string;
|
|
7
|
-
}
|
|
8
|
-
declare const TooltipA11yFixture: import("svelte").Component<Props, {}, "">;
|
|
9
|
-
type TooltipA11yFixture = ReturnType<typeof TooltipA11yFixture>;
|
|
10
|
-
export default TooltipA11yFixture;
|
|
11
|
-
//# sourceMappingURL=TooltipA11yFixture.svelte.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipA11yFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/tooltip/TooltipA11yFixture.svelte.ts"],"names":[],"mappings":"AAOE,UAAU,KAAK;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwBH,QAAA,MAAM,kBAAkB,2CAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
仅供 Tooltip.kbd.test.ts(browser project)使用的 Esc 关闭键盘 e2e 夹具。
|
|
3
|
-
trigger='focus':聚焦触发按钮即显示浮层(focusin),便于在真实浏览器里用键盘驱动;
|
|
4
|
-
浮层 portal 到 document.body(use:floating),role=tooltip。
|
|
5
|
-
验证:聚焦显示后按 Esc,useDismiss(escape:true) 关闭浮层。
|
|
6
|
-
-->
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
9
|
-
import Tooltip from './Tooltip.svelte';
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<LocaleProvider locale="en_US">
|
|
13
|
-
<Tooltip content="More info" trigger="focus">
|
|
14
|
-
<button type="button" data-testid="trigger">Hover me</button>
|
|
15
|
-
</Tooltip>
|
|
16
|
-
</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 TooltipKbdFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
}, {}, {}, string>;
|
|
17
|
-
type TooltipKbdFixture = InstanceType<typeof TooltipKbdFixture>;
|
|
18
|
-
export default TooltipKbdFixture;
|
|
19
|
-
//# sourceMappingURL=TooltipKbdFixture.svelte.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/tooltip/TooltipKbdFixture.svelte.ts"],"names":[],"mappings":"AAoBA,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,iBAAiB;;kBAA+E,CAAC;AACrF,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,eAAe,iBAAiB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Transfer.a11y.test.d.ts","sourceRoot":"","sources":["../../src/transfer/Transfer.a11y.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Transfer a11y:双栏穿梭框(dual-listbox)。
|
|
2
|
-
// 容器 role=group;每侧平铺列表 role=listbox + aria-multiselectable;
|
|
3
|
-
// 条目 role=option + aria-selected。
|
|
4
|
-
//
|
|
5
|
-
// 组件 a11y 修复(原 axe violations 已消除):
|
|
6
|
-
// 1. [aria-toggle-field-name] role=option 条目原可访问名为空(label 在 aria-hidden 子树内):
|
|
7
|
-
// 已给 role=option 的 <li> 加 aria-label={item.label},提供可访问名(视觉勾选框仍 aria-hidden)。
|
|
8
|
-
// 2. [aria-required-children]/[listitem] 空 listbox 仅含空态 <li>:空态时该 <ul> 退化为普通
|
|
9
|
-
// 容器(去掉 role=listbox 及 listbox-only ARIA),空态 <li> 成为合法 listitem。
|
|
10
|
-
import { describe, it, expect } from 'vitest';
|
|
11
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
12
|
-
import Transfer from './Transfer.svelte';
|
|
13
|
-
const dataSource = [
|
|
14
|
-
{ key: 'a', label: 'Apple' },
|
|
15
|
-
{ key: 'b', label: 'Banana' },
|
|
16
|
-
{ key: 'c', label: 'Cherry' },
|
|
17
|
-
{ key: 'd', label: 'Date' },
|
|
18
|
-
];
|
|
19
|
-
describe('Transfer a11y', () => {
|
|
20
|
-
it('默认渲染:role=group + 非空面板为 listbox + option role/aria(不跑 axe)', () => {
|
|
21
|
-
const { container } = renderWithLocale(Transfer, {
|
|
22
|
-
props: { dataSource },
|
|
23
|
-
});
|
|
24
|
-
expect(container.querySelector('[role="group"]')).not.toBeNull();
|
|
25
|
-
// 默认无选中:源面板有项 → listbox;目标面板为空 → 退化为普通容器(非 listbox,
|
|
26
|
-
// 避免 axe aria-required-children)。故此处仅 1 个 listbox。
|
|
27
|
-
const listboxes = container.querySelectorAll('[role="listbox"]');
|
|
28
|
-
expect(listboxes.length).toBe(1);
|
|
29
|
-
const lb = listboxes[0];
|
|
30
|
-
expect(lb?.getAttribute('aria-multiselectable')).toBe('true');
|
|
31
|
-
// listbox 由栏标题 aria-labelledby 命名
|
|
32
|
-
expect(lb?.getAttribute('aria-labelledby')).toBeTruthy();
|
|
33
|
-
// 源面板 4 个 option,均带 aria-selected + aria-label(可访问名)
|
|
34
|
-
const options = container.querySelectorAll('[role="option"]');
|
|
35
|
-
expect(options.length).toBe(4);
|
|
36
|
-
options.forEach((opt) => {
|
|
37
|
-
expect(opt.hasAttribute('aria-selected')).toBe(true);
|
|
38
|
-
expect(opt.getAttribute('aria-label')).toBeTruthy();
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
it('带选中:两侧均非空 → 双 listbox,右侧含已选项 + aria-selected(不跑 axe)', () => {
|
|
42
|
-
const { container } = renderWithLocale(Transfer, {
|
|
43
|
-
props: { dataSource, defaultValue: ['b'] },
|
|
44
|
-
});
|
|
45
|
-
const listboxes = container.querySelectorAll('[role="listbox"]');
|
|
46
|
-
expect(listboxes.length).toBe(2);
|
|
47
|
-
const right = listboxes[1];
|
|
48
|
-
expect(right).toBeDefined();
|
|
49
|
-
expect(right?.textContent).toContain('Banana');
|
|
50
|
-
expect(right?.querySelectorAll('[role="option"]').length).toBe(1);
|
|
51
|
-
});
|
|
52
|
-
// axe 0 violations:组件已修复(option aria-label 提供可访问名;空 listbox 退化为普通容器)。
|
|
53
|
-
it('axe 0 violations(option 可访问名 + 空 listbox 处理后)', async () => {
|
|
54
|
-
const { container } = renderWithLocale(Transfer, {
|
|
55
|
-
props: { dataSource, defaultValue: ['b'] },
|
|
56
|
-
});
|
|
57
|
-
await expectNoAxeViolations(container);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Transfer.kbd.test.d.ts","sourceRoot":"","sources":["../../src/transfer/Transfer.kbd.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// Transfer 键盘 e2e(browser project / 真实 chromium),双 listbox roving。
|
|
2
|
-
// 测真实焦点移动 + 焦点保留——jsdom 测不了(焦点模型不完整、命令式 focus() 不可靠):
|
|
3
|
-
// 1. 源列(左 listbox)内 ↓ 真实移动焦点到相邻 option(roving,clamp 不环绕)。
|
|
4
|
-
// 2. Space 勾选当前行(aria-selected 翻转)。
|
|
5
|
-
// 3. Enter 把已勾选项移到对侧:目标列出现该项;焦点保留在源列移动位置附近的 option。
|
|
6
|
-
//
|
|
7
|
-
// 真实焦点断言用 page locator 的 .toHaveFocus()(对真实 document.activeElement 重试断言)。
|
|
8
|
-
import { describe, it, expect } from 'vitest';
|
|
9
|
-
import { page } from 'vitest/browser';
|
|
10
|
-
import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
|
|
11
|
-
import TransferKbdFixture from './TransferKbdFixture.svelte';
|
|
12
|
-
function loc(el) {
|
|
13
|
-
return page.elementLocator(el);
|
|
14
|
-
}
|
|
15
|
-
function leftListbox(base) {
|
|
16
|
-
// 源列为第一个 listbox(左侧)。
|
|
17
|
-
return base.querySelector('[role="listbox"]');
|
|
18
|
-
}
|
|
19
|
-
function optsOf(listbox) {
|
|
20
|
-
return Array.from(listbox.querySelectorAll('[role="option"]'));
|
|
21
|
-
}
|
|
22
|
-
describe('Transfer 键盘 e2e(双 listbox roving + 焦点保留)', () => {
|
|
23
|
-
it('源列 ↓ 移动焦点 + Space 勾选 + Enter 移项后焦点保留', async () => {
|
|
24
|
-
const { baseElement } = renderKbdFixture(TransferKbdFixture);
|
|
25
|
-
const source = leftListbox(baseElement);
|
|
26
|
-
const opts = optsOf(source);
|
|
27
|
-
expect(opts.length).toBe(4); // Apple/Banana/Cherry/Date
|
|
28
|
-
const [apple, banana] = opts;
|
|
29
|
-
// roving 单停靠点:源列恰有一个 option tabindex=0(首行)。
|
|
30
|
-
expect(opts.filter((el) => el.tabIndex === 0).length).toBe(1);
|
|
31
|
-
expect(apple.tabIndex).toBe(0);
|
|
32
|
-
// 1. 聚焦首行,↓ 真实移动焦点到下一 option。
|
|
33
|
-
apple.focus();
|
|
34
|
-
await expect.element(loc(apple)).toHaveFocus();
|
|
35
|
-
await userEvent.keyboard('{ArrowDown}');
|
|
36
|
-
await expect.element(loc(banana)).toHaveFocus();
|
|
37
|
-
expect(banana.tabIndex).toBe(0);
|
|
38
|
-
expect(apple.tabIndex).toBe(-1);
|
|
39
|
-
// 2. Space 勾选当前行(Banana):aria-selected 翻转为 true。
|
|
40
|
-
expect(banana.getAttribute('aria-selected')).toBe('false');
|
|
41
|
-
await userEvent.keyboard(' ');
|
|
42
|
-
await expect.element(loc(banana)).toHaveAttribute('aria-selected', 'true');
|
|
43
|
-
// 3. Enter 把已勾选项(Banana)移到对侧。
|
|
44
|
-
await userEvent.keyboard('{Enter}');
|
|
45
|
-
// 目标列(第二个 listbox)出现 Banana。
|
|
46
|
-
await expect
|
|
47
|
-
.poll(() => baseElement.querySelectorAll('[role="listbox"]').length)
|
|
48
|
-
.toBe(2);
|
|
49
|
-
const target = baseElement.querySelectorAll('[role="listbox"]')[1];
|
|
50
|
-
await expect.element(loc(target)).toHaveTextContent('Banana');
|
|
51
|
-
// 源列只剩 Apple/Cherry/Date(Banana 已移走)。
|
|
52
|
-
const sourceAfter = leftListbox(baseElement);
|
|
53
|
-
const srcAfter = optsOf(sourceAfter);
|
|
54
|
-
expect(srcAfter.map((el) => el.getAttribute('data-transfer-key'))).toEqual(['a', 'c', 'd']);
|
|
55
|
-
// 焦点保留(spec §6):移项后焦点未丢到 body,仍落在源列内某个 option 上,
|
|
56
|
-
// 且该 option 是源列唯一 roving 停靠点(tabindex=0)。
|
|
57
|
-
await expect
|
|
58
|
-
.poll(() => sourceAfter.contains(document.activeElement))
|
|
59
|
-
.toBe(true);
|
|
60
|
-
const focused = document.activeElement;
|
|
61
|
-
expect(focused.getAttribute('role')).toBe('option');
|
|
62
|
-
expect(focused.tabIndex).toBe(0);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
仅供 Transfer.kbd.test.ts(browser project)使用的双 listbox roving 键盘 e2e 夹具。
|
|
3
|
-
受控 value + onChange 回写,使「移动到对侧」真实生效(红线 #1:组件不自改 value)。
|
|
4
|
-
左侧为 SOURCE(role=listbox),条目 role=option + data-transfer-key;
|
|
5
|
-
验证:列内 ↑↓ 真实移动焦点到相邻 option、Space 勾选、Enter 移动后焦点保留在源列合理位置。
|
|
6
|
-
-->
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
9
|
-
import Transfer from './Transfer.svelte';
|
|
10
|
-
|
|
11
|
-
const dataSource = [
|
|
12
|
-
{ key: 'a', label: 'Apple' },
|
|
13
|
-
{ key: 'b', label: 'Banana' },
|
|
14
|
-
{ key: 'c', label: 'Cherry' },
|
|
15
|
-
{ key: 'd', label: 'Date' },
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
let value = $state<string[]>([]);
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<LocaleProvider locale="en_US">
|
|
22
|
-
<Transfer {dataSource} {value} onChange={(next) => (value = next as string[])} />
|
|
23
|
-
</LocaleProvider>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TransferKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/transfer/TransferKbdFixture.svelte.ts"],"names":[],"mappings":"AA2BA,QAAA,MAAM,kBAAkB,2DAAwC,CAAC;AACjE,KAAK,kBAAkB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,eAAe,kBAAkB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"group.test.d.ts","sourceRoot":"","sources":["../../src/transfer/group.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { buildGroups, hasGroups, isGrouped, normalizeData } from './group.js';
|
|
3
|
-
describe('transfer/group', () => {
|
|
4
|
-
const flat = [
|
|
5
|
-
{ key: 'a', label: '北京' },
|
|
6
|
-
{ key: 'b', label: '上海' },
|
|
7
|
-
];
|
|
8
|
-
const grouped = [
|
|
9
|
-
{ title: '华东', items: [{ key: 'hz', label: '杭州' }, { key: 'sh', label: '上海' }] },
|
|
10
|
-
{ title: '华南', items: [{ key: 'gz', label: '广州' }] },
|
|
11
|
-
];
|
|
12
|
-
it('isGrouped distinguishes flat vs grouped', () => {
|
|
13
|
-
expect(isGrouped(flat)).toBe(false);
|
|
14
|
-
expect(isGrouped(grouped)).toBe(true);
|
|
15
|
-
expect(isGrouped([])).toBe(false);
|
|
16
|
-
});
|
|
17
|
-
it('normalizeData keeps flat data untouched', () => {
|
|
18
|
-
expect(normalizeData(flat)).toEqual(flat);
|
|
19
|
-
expect(hasGroups(normalizeData(flat))).toBe(false);
|
|
20
|
-
});
|
|
21
|
-
it('normalizeData flattens grouped data and stamps group from title', () => {
|
|
22
|
-
const items = normalizeData(grouped);
|
|
23
|
-
expect(items.map((i) => i.key)).toEqual(['hz', 'sh', 'gz']);
|
|
24
|
-
expect(items.map((i) => i.group)).toEqual(['华东', '华东', '华南']);
|
|
25
|
-
expect(hasGroups(items)).toBe(true);
|
|
26
|
-
});
|
|
27
|
-
it('group title wins over a pre-set group on item', () => {
|
|
28
|
-
const src = [
|
|
29
|
-
{ title: 'X', items: [{ key: '1', label: 'one', group: 'Y' }] },
|
|
30
|
-
];
|
|
31
|
-
expect(normalizeData(src)[0].group).toBe('X');
|
|
32
|
-
});
|
|
33
|
-
it('buildGroups preserves first-seen order and drops empty groups', () => {
|
|
34
|
-
const items = normalizeData(grouped);
|
|
35
|
-
// simulate a filter that removes all of 华南
|
|
36
|
-
const filtered = items.filter((i) => i.group === '华东');
|
|
37
|
-
const out = buildGroups(filtered, 'fallback');
|
|
38
|
-
expect(out.map((g) => g.title)).toEqual(['华东']);
|
|
39
|
-
expect(out[0].items.map((i) => i.key)).toEqual(['hz', 'sh']);
|
|
40
|
-
});
|
|
41
|
-
it('buildGroups buckets ungrouped items under fallback title', () => {
|
|
42
|
-
const out = buildGroups(flat, '源');
|
|
43
|
-
expect(out).toHaveLength(1);
|
|
44
|
-
expect(out[0].title).toBe('源');
|
|
45
|
-
expect(out[0].items).toEqual(flat);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reorder.test.d.ts","sourceRoot":"","sources":["../../src/transfer/reorder.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { computeInsertSide, reorder } from './reorder.js';
|
|
3
|
-
describe('transfer/computeInsertSide', () => {
|
|
4
|
-
it('上半区 → before,下半区 → after,中线归 after', () => {
|
|
5
|
-
expect(computeInsertSide(0, 40)).toBe('before');
|
|
6
|
-
expect(computeInsertSide(19, 40)).toBe('before');
|
|
7
|
-
expect(computeInsertSide(20, 40)).toBe('after');
|
|
8
|
-
expect(computeInsertSide(39, 40)).toBe('after');
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
describe('transfer/reorder', () => {
|
|
12
|
-
const base = ['a', 'b', 'c', 'd'];
|
|
13
|
-
it('前移:把 c 放到 a 之前', () => {
|
|
14
|
-
expect(reorder(base, 2, 0, 'before')).toEqual(['c', 'a', 'b', 'd']);
|
|
15
|
-
});
|
|
16
|
-
it('后移:把 a 放到 c 之后', () => {
|
|
17
|
-
expect(reorder(base, 0, 2, 'after')).toEqual(['b', 'c', 'a', 'd']);
|
|
18
|
-
});
|
|
19
|
-
it('相邻互换:a 放到 b 之后', () => {
|
|
20
|
-
expect(reorder(base, 0, 1, 'after')).toEqual(['b', 'a', 'c', 'd']);
|
|
21
|
-
});
|
|
22
|
-
it('移动后位置不变 → 返回浅拷贝且等值', () => {
|
|
23
|
-
const out = reorder(base, 1, 1, 'before');
|
|
24
|
-
expect(out).toEqual(base);
|
|
25
|
-
expect(out).not.toBe(base);
|
|
26
|
-
});
|
|
27
|
-
it('放到自身之后等价于不动', () => {
|
|
28
|
-
expect(reorder(base, 1, 0, 'after')).toEqual(base);
|
|
29
|
-
});
|
|
30
|
-
it('越界返回浅拷贝', () => {
|
|
31
|
-
expect(reorder(base, -1, 2, 'before')).toEqual(base);
|
|
32
|
-
expect(reorder(base, 0, 9, 'after')).toEqual(base);
|
|
33
|
-
});
|
|
34
|
-
it('不可变:不修改入参', () => {
|
|
35
|
-
const copy = base.slice();
|
|
36
|
-
reorder(base, 0, 3, 'after');
|
|
37
|
-
expect(base).toEqual(copy);
|
|
38
|
-
});
|
|
39
|
-
it('末位拖到首位之前', () => {
|
|
40
|
-
expect(reorder(base, 3, 0, 'before')).toEqual(['d', 'a', 'b', 'c']);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree.test.d.ts","sourceRoot":"","sources":["../../src/transfer/tree.test.ts"],"names":[],"mappings":""}
|