@chenzy-design/svelte 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components.json +1 -1
- package/package.json +7 -8
- package/src/_floating/use-floating.ts +0 -208
- package/src/anchor/Anchor.a11y.test.ts +0 -49
- package/src/anchor/Anchor.kbd.test.ts +0 -70
- package/src/anchor/Anchor.svelte +0 -359
- package/src/anchor/AnchorKbdFixture.svelte +0 -24
- package/src/anchor/index.ts +0 -3
- package/src/anchor/meta.ts +0 -70
- package/src/anchor/types.ts +0 -8
- package/src/autocomplete/AutoComplete.a11y.test.ts +0 -49
- package/src/autocomplete/AutoComplete.kbd.test.ts +0 -69
- package/src/autocomplete/AutoComplete.svelte +0 -706
- package/src/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
- package/src/autocomplete/index.ts +0 -2
- package/src/autocomplete/meta.ts +0 -41
- package/src/avatar/Avatar.a11y.test.ts +0 -37
- package/src/avatar/Avatar.svelte +0 -315
- package/src/avatar/AvatarGroup.svelte +0 -142
- package/src/avatar/context.ts +0 -21
- package/src/avatar/index.ts +0 -10
- package/src/avatar/meta.ts +0 -73
- package/src/back-top/BackTop.a11y.test.ts +0 -40
- package/src/back-top/BackTop.svelte +0 -314
- package/src/back-top/index.ts +0 -2
- package/src/back-top/meta.ts +0 -108
- package/src/badge/Badge.a11y.test.ts +0 -35
- package/src/badge/Badge.svelte +0 -328
- package/src/badge/BadgeA11yFixture.svelte +0 -18
- package/src/badge/index.ts +0 -2
- package/src/badge/meta.ts +0 -62
- package/src/banner/Banner.a11y.test.ts +0 -48
- package/src/banner/Banner.svelte +0 -368
- package/src/banner/index.ts +0 -3
- package/src/banner/meta.ts +0 -121
- package/src/breadcrumb/Breadcrumb.a11y.test.ts +0 -35
- package/src/breadcrumb/Breadcrumb.kbd.test.ts +0 -45
- package/src/breadcrumb/Breadcrumb.svelte +0 -414
- package/src/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
- package/src/breadcrumb/Item.svelte +0 -77
- package/src/breadcrumb/context.ts +0 -27
- package/src/breadcrumb/index.ts +0 -21
- package/src/breadcrumb/meta.ts +0 -128
- package/src/breadcrumb/types.ts +0 -4
- package/src/button/Button.a11y.test.ts +0 -54
- package/src/button/Button.svelte +0 -176
- package/src/button/index.ts +0 -2
- package/src/button/meta.ts +0 -28
- package/src/calendar/Calendar.a11y.test.ts +0 -51
- package/src/calendar/Calendar.kbd.test.ts +0 -59
- package/src/calendar/Calendar.svelte +0 -1344
- package/src/calendar/CalendarKbdFixture.svelte +0 -23
- package/src/calendar/index.ts +0 -3
- package/src/calendar/meta.ts +0 -117
- package/src/card/Card.a11y.test.ts +0 -38
- package/src/card/Card.svelte +0 -341
- package/src/card/CardMeta.svelte +0 -60
- package/src/card/index.ts +0 -8
- package/src/card/meta.ts +0 -83
- package/src/carousel/Carousel.a11y.test.ts +0 -53
- package/src/carousel/Carousel.kbd.test.ts +0 -67
- package/src/carousel/Carousel.svelte +0 -806
- package/src/carousel/CarouselA11yFixture.svelte +0 -25
- package/src/carousel/CarouselKbdFixture.svelte +0 -24
- package/src/carousel/index.ts +0 -2
- package/src/carousel/meta.ts +0 -74
- package/src/cascader/Cascader.a11y.test.ts +0 -59
- package/src/cascader/Cascader.kbd.test.ts +0 -56
- package/src/cascader/Cascader.svelte +0 -1570
- package/src/cascader/CascaderKbdFixture.svelte +0 -31
- package/src/cascader/index.ts +0 -3
- package/src/cascader/meta.ts +0 -57
- package/src/cascader/types.ts +0 -9
- package/src/checkbox/Checkbox.svelte +0 -281
- package/src/checkbox/CheckboxGroup.a11y.test.ts +0 -43
- package/src/checkbox/CheckboxGroup.kbd.test.ts +0 -40
- package/src/checkbox/CheckboxGroup.svelte +0 -122
- package/src/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
- package/src/checkbox/context.ts +0 -31
- package/src/checkbox/index.ts +0 -4
- package/src/checkbox/meta.ts +0 -67
- package/src/collapse/Collapse.a11y.test.ts +0 -53
- package/src/collapse/Collapse.kbd.test.ts +0 -89
- package/src/collapse/Collapse.svelte +0 -406
- package/src/collapse/CollapseA11yFixture.svelte +0 -27
- package/src/collapse/CollapseKbdFixture.svelte +0 -25
- package/src/collapse/CollapsePanel.svelte +0 -102
- package/src/collapse/context.ts +0 -54
- package/src/collapse/index.ts +0 -17
- package/src/collapse/meta.ts +0 -79
- package/src/collapse/types.ts +0 -5
- package/src/color-picker/ColorPicker.a11y.test.ts +0 -60
- package/src/color-picker/ColorPicker.kbd.test.ts +0 -73
- package/src/color-picker/ColorPicker.svelte +0 -985
- package/src/color-picker/ColorPickerKbdFixture.svelte +0 -25
- package/src/color-picker/index.ts +0 -2
- package/src/color-picker/meta.ts +0 -47
- package/src/config-provider/ConfigProvider.svelte +0 -227
- package/src/config-provider/context.ts +0 -29
- package/src/config-provider/index.ts +0 -48
- package/src/config-provider/meta.ts +0 -128
- package/src/date-picker/DatePicker.a11y.test.ts +0 -45
- package/src/date-picker/DatePicker.kbd.test.ts +0 -71
- package/src/date-picker/DatePicker.svelte +0 -1798
- package/src/date-picker/DatePickerKbdFixture.svelte +0 -26
- package/src/date-picker/RangePicker.kbd.test.ts +0 -69
- package/src/date-picker/RangePicker.svelte +0 -775
- package/src/date-picker/RangePickerKbdFixture.svelte +0 -30
- package/src/date-picker/index.ts +0 -4
- package/src/date-picker/meta.ts +0 -67
- package/src/date-picker/range-meta.ts +0 -44
- package/src/descriptions/Descriptions.a11y.test.ts +0 -33
- package/src/descriptions/Descriptions.svelte +0 -287
- package/src/descriptions/DescriptionsItem.svelte +0 -43
- package/src/descriptions/context.ts +0 -21
- package/src/descriptions/index.ts +0 -16
- package/src/descriptions/meta.ts +0 -45
- package/src/descriptions/types.ts +0 -6
- package/src/divider/Divider.a11y.test.ts +0 -23
- package/src/divider/Divider.svelte +0 -154
- package/src/divider/index.ts +0 -2
- package/src/divider/meta.ts +0 -23
- package/src/drawer/Drawer.a11y.test.ts +0 -41
- package/src/drawer/Drawer.kbd.test.ts +0 -67
- package/src/drawer/Drawer.svelte +0 -554
- package/src/drawer/DrawerKbdFixture.svelte +0 -28
- package/src/drawer/index.ts +0 -2
- package/src/drawer/meta.ts +0 -127
- package/src/dropdown/Dropdown.a11y.test.ts +0 -46
- package/src/dropdown/Dropdown.kbd.test.ts +0 -56
- package/src/dropdown/Dropdown.svelte +0 -573
- package/src/dropdown/DropdownA11yFixture.svelte +0 -24
- package/src/dropdown/DropdownDivider.svelte +0 -17
- package/src/dropdown/DropdownItem.svelte +0 -127
- package/src/dropdown/DropdownItemNode.svelte +0 -355
- package/src/dropdown/DropdownKbdFixture.svelte +0 -26
- package/src/dropdown/DropdownMenu.svelte +0 -24
- package/src/dropdown/DropdownSubMenu.svelte +0 -212
- package/src/dropdown/DropdownTitle.svelte +0 -34
- package/src/dropdown/context.ts +0 -13
- package/src/dropdown/index.ts +0 -36
- package/src/dropdown/meta.ts +0 -97
- package/src/dropdown/types.test.ts +0 -50
- package/src/dropdown/types.ts +0 -67
- package/src/empty/Empty.a11y.test.ts +0 -24
- package/src/empty/Empty.svelte +0 -304
- package/src/empty/index.ts +0 -2
- package/src/empty/meta.ts +0 -41
- package/src/form/Field.svelte +0 -492
- package/src/form/FieldArray.svelte +0 -75
- package/src/form/Form.a11y.test.ts +0 -39
- package/src/form/Form.svelte +0 -243
- package/src/form/FormA11yFixture.svelte +0 -31
- package/src/form/FormCascader.svelte +0 -82
- package/src/form/FormCheckbox.svelte +0 -83
- package/src/form/FormDatePicker.svelte +0 -80
- package/src/form/FormErrorMessage.svelte +0 -44
- package/src/form/FormInput.svelte +0 -95
- package/src/form/FormLabel.svelte +0 -46
- package/src/form/FormRadio.svelte +0 -83
- package/src/form/FormRating.svelte +0 -85
- package/src/form/FormSection.svelte +0 -45
- package/src/form/FormSelect.svelte +0 -96
- package/src/form/FormSlider.svelte +0 -95
- package/src/form/FormSlot.svelte +0 -51
- package/src/form/FormSwitch.svelte +0 -82
- package/src/form/FormTagInput.svelte +0 -79
- package/src/form/FormTreeSelect.svelte +0 -85
- package/src/form/FormUpload.svelte +0 -92
- package/src/form/context.ts +0 -47
- package/src/form/index.ts +0 -22
- package/src/form/meta.ts +0 -85
- package/src/grid/Col.svelte +0 -142
- package/src/grid/Grid.a11y.test.ts +0 -14
- package/src/grid/GridA11yFixture.svelte +0 -12
- package/src/grid/Row.svelte +0 -116
- package/src/grid/index.ts +0 -3
- package/src/grid/meta.ts +0 -72
- package/src/grid/use-breakpoint.svelte.ts +0 -48
- package/src/highlight/Highlight.a11y.test.ts +0 -25
- package/src/highlight/Highlight.svelte +0 -99
- package/src/highlight/index.ts +0 -2
- package/src/highlight/meta.ts +0 -80
- package/src/icon/Icon.svelte +0 -156
- package/src/icon/index.ts +0 -2
- package/src/icon/meta.ts +0 -41
- package/src/image/Image.a11y.test.ts +0 -30
- package/src/image/Image.svelte +0 -387
- package/src/image/ImagePreview.kbd.test.ts +0 -52
- package/src/image/ImagePreview.svelte +0 -309
- package/src/image/ImagePreviewGroup.svelte +0 -93
- package/src/image/ImagePreviewKbdFixture.svelte +0 -32
- package/src/image/context.ts +0 -26
- package/src/image/index.ts +0 -15
- package/src/image/meta.ts +0 -131
- package/src/index.ts +0 -208
- package/src/input/Input.a11y.test.ts +0 -58
- package/src/input/Input.svelte +0 -505
- package/src/input/index.ts +0 -2
- package/src/input/meta.ts +0 -40
- package/src/input-number/InputNumber.a11y.test.ts +0 -43
- package/src/input-number/InputNumber.kbd.test.ts +0 -41
- package/src/input-number/InputNumber.svelte +0 -674
- package/src/input-number/InputNumberKbdFixture.svelte +0 -15
- package/src/input-number/index.ts +0 -2
- package/src/input-number/meta.ts +0 -65
- package/src/layout/Content.svelte +0 -37
- package/src/layout/Footer.svelte +0 -49
- package/src/layout/Header.svelte +0 -46
- package/src/layout/Layout.a11y.test.ts +0 -34
- package/src/layout/Layout.svelte +0 -60
- package/src/layout/LayoutA11yFixture.svelte +0 -21
- package/src/layout/Sider.svelte +0 -207
- package/src/layout/index.ts +0 -26
- package/src/layout/meta.ts +0 -116
- package/src/list/List.a11y.test.ts +0 -69
- package/src/list/List.bench.ts +0 -26
- package/src/list/List.kbd.test.ts +0 -71
- package/src/list/List.svelte +0 -920
- package/src/list/ListA11yFixture.svelte +0 -38
- package/src/list/ListBenchFixture.svelte +0 -22
- package/src/list/ListItem.svelte +0 -175
- package/src/list/ListKbdFixture.svelte +0 -31
- package/src/list/ListMeta.svelte +0 -73
- package/src/list/context.ts +0 -39
- package/src/list/index.ts +0 -21
- package/src/list/meta.ts +0 -99
- package/src/locale-provider/LocaleProvider.svelte +0 -110
- package/src/locale-provider/context.ts +0 -22
- package/src/locale-provider/index.ts +0 -21
- package/src/locale-provider/meta.ts +0 -93
- package/src/locale-provider/use-locale.ts +0 -25
- package/src/lottie-icon/LottieIcon.svelte +0 -330
- package/src/lottie-icon/index.ts +0 -9
- package/src/lottie-icon/meta.ts +0 -162
- package/src/menu/Menu.a11y.test.ts +0 -54
- package/src/menu/Menu.kbd.test.ts +0 -69
- package/src/menu/Menu.svelte +0 -762
- package/src/menu/MenuKbdFixture.svelte +0 -22
- package/src/menu/MenuPopupNode.svelte +0 -525
- package/src/menu/index.ts +0 -4
- package/src/menu/meta.ts +0 -137
- package/src/menu/types.ts +0 -120
- package/src/meta.test.ts +0 -173
- package/src/modal/ConfirmModal.svelte +0 -173
- package/src/modal/Modal.a11y.test.ts +0 -46
- package/src/modal/Modal.kbd.test.ts +0 -65
- package/src/modal/Modal.svelte +0 -511
- package/src/modal/ModalKbdFixture.svelte +0 -24
- package/src/modal/command.svelte.ts +0 -103
- package/src/modal/index.ts +0 -30
- package/src/modal/meta.ts +0 -165
- package/src/modal/z-stack.ts +0 -26
- package/src/notification/NotificationContainer.svelte +0 -192
- package/src/notification/NotificationItem.a11y.test.ts +0 -73
- package/src/notification/NotificationItem.svelte +0 -368
- package/src/notification/index.ts +0 -9
- package/src/notification/meta.ts +0 -120
- package/src/notification/store.ts +0 -191
- package/src/overflow-list/OverflowList.a11y.test.ts +0 -46
- package/src/overflow-list/OverflowList.kbd.test.ts +0 -34
- package/src/overflow-list/OverflowList.svelte +0 -539
- package/src/overflow-list/OverflowListA11yFixture.svelte +0 -22
- package/src/overflow-list/OverflowListKbdFixture.svelte +0 -21
- package/src/overflow-list/index.ts +0 -2
- package/src/overflow-list/meta.ts +0 -138
- package/src/pagination/Pagination.a11y.test.ts +0 -62
- package/src/pagination/Pagination.kbd.test.ts +0 -66
- package/src/pagination/Pagination.svelte +0 -428
- package/src/pagination/PaginationKbdFixture.svelte +0 -15
- package/src/pagination/index.ts +0 -2
- package/src/pagination/meta.ts +0 -73
- package/src/popconfirm/Popconfirm.a11y.test.ts +0 -46
- package/src/popconfirm/Popconfirm.kbd.test.ts +0 -42
- package/src/popconfirm/Popconfirm.svelte +0 -724
- package/src/popconfirm/PopconfirmA11yFixture.svelte +0 -34
- package/src/popconfirm/PopconfirmKbdFixture.svelte +0 -17
- package/src/popconfirm/index.ts +0 -2
- package/src/popconfirm/meta.ts +0 -200
- package/src/popover/Popover.a11y.test.ts +0 -58
- package/src/popover/Popover.kbd.test.ts +0 -42
- package/src/popover/Popover.svelte +0 -643
- package/src/popover/PopoverA11yFixture.svelte +0 -35
- package/src/popover/PopoverKbdFixture.svelte +0 -18
- package/src/popover/index.ts +0 -2
- package/src/popover/meta.ts +0 -103
- package/src/progress/Progress.a11y.test.ts +0 -37
- package/src/progress/Progress.svelte +0 -423
- package/src/progress/index.ts +0 -3
- package/src/progress/meta.ts +0 -132
- package/src/radio/Radio.svelte +0 -330
- package/src/radio/RadioGroup.a11y.test.ts +0 -43
- package/src/radio/RadioGroup.kbd.test.ts +0 -75
- package/src/radio/RadioGroup.svelte +0 -199
- package/src/radio/RadioGroupKbdFixture.svelte +0 -21
- package/src/radio/context.ts +0 -42
- package/src/radio/index.ts +0 -4
- package/src/radio/meta.ts +0 -68
- package/src/rating/Rating.a11y.test.ts +0 -41
- package/src/rating/Rating.kbd.test.ts +0 -48
- package/src/rating/Rating.svelte +0 -407
- package/src/rating/RatingKbdFixture.svelte +0 -15
- package/src/rating/index.ts +0 -2
- package/src/rating/meta.ts +0 -40
- package/src/resize-observer/ResizeObserver.svelte +0 -169
- package/src/resize-observer/action.ts +0 -80
- package/src/resize-observer/index.ts +0 -9
- package/src/resize-observer/meta.ts +0 -102
- package/src/scroll-list/ScrollColumn.svelte +0 -592
- package/src/scroll-list/ScrollList.svelte +0 -257
- package/src/scroll-list/index.ts +0 -4
- package/src/scroll-list/meta.ts +0 -93
- package/src/scroll-list/types.ts +0 -18
- package/src/select/Select.a11y.test.ts +0 -59
- package/src/select/Select.kbd.test.ts +0 -59
- package/src/select/Select.svelte +0 -1155
- package/src/select/SelectKbdFixture.svelte +0 -29
- package/src/select/index.ts +0 -3
- package/src/select/meta.ts +0 -78
- package/src/select/types.ts +0 -2
- package/src/side-sheet/SideSheet.a11y.test.ts +0 -53
- package/src/side-sheet/SideSheet.kbd.test.ts +0 -63
- package/src/side-sheet/SideSheet.svelte +0 -659
- package/src/side-sheet/SideSheetKbdFixture.svelte +0 -30
- package/src/side-sheet/index.ts +0 -2
- package/src/side-sheet/meta.ts +0 -116
- package/src/skeleton/Skeleton.a11y.test.ts +0 -35
- package/src/skeleton/Skeleton.svelte +0 -131
- package/src/skeleton/SkeletonAvatar.svelte +0 -82
- package/src/skeleton/SkeletonButton.svelte +0 -90
- package/src/skeleton/SkeletonImage.svelte +0 -100
- package/src/skeleton/SkeletonParagraph.svelte +0 -103
- package/src/skeleton/SkeletonTitle.svelte +0 -74
- package/src/skeleton/context.ts +0 -11
- package/src/skeleton/index.ts +0 -8
- package/src/skeleton/meta.ts +0 -65
- package/src/slider/Slider.a11y.test.ts +0 -44
- package/src/slider/Slider.kbd.test.ts +0 -74
- package/src/slider/Slider.svelte +0 -716
- package/src/slider/SliderKbdFixture.svelte +0 -21
- package/src/slider/index.ts +0 -2
- package/src/slider/meta.ts +0 -55
- package/src/space/Space.a11y.test.ts +0 -22
- package/src/space/Space.svelte +0 -109
- package/src/space/SpaceA11yFixture.svelte +0 -17
- package/src/space/index.ts +0 -2
- package/src/space/meta.ts +0 -27
- package/src/spin/Spin.a11y.test.ts +0 -29
- package/src/spin/Spin.svelte +0 -293
- package/src/spin/SpinA11yFixture.svelte +0 -18
- package/src/spin/index.ts +0 -2
- package/src/spin/meta.ts +0 -72
- package/src/steps/Steps.a11y.test.ts +0 -39
- package/src/steps/Steps.kbd.test.ts +0 -73
- package/src/steps/Steps.svelte +0 -392
- package/src/steps/StepsKbdFixture.svelte +0 -21
- package/src/steps/index.ts +0 -3
- package/src/steps/meta.ts +0 -59
- package/src/steps/types.ts +0 -8
- package/src/switch/Switch.a11y.test.ts +0 -46
- package/src/switch/Switch.kbd.test.ts +0 -40
- package/src/switch/Switch.svelte +0 -310
- package/src/switch/SwitchKbdFixture.svelte +0 -22
- package/src/switch/index.ts +0 -2
- package/src/switch/meta.ts +0 -44
- package/src/table/Table.a11y.test.ts +0 -70
- package/src/table/Table.bench.ts +0 -51
- package/src/table/Table.kbd.test.ts +0 -94
- package/src/table/Table.svelte +0 -2327
- package/src/table/TableKbdFixture.svelte +0 -35
- package/src/table/grid-nav.test.ts +0 -173
- package/src/table/grid-nav.ts +0 -146
- package/src/table/index.ts +0 -13
- package/src/table/meta.ts +0 -121
- package/src/table/types.ts +0 -133
- package/src/tabs/TabPane.svelte +0 -92
- package/src/tabs/Tabs.a11y.test.ts +0 -47
- package/src/tabs/Tabs.kbd.test.ts +0 -74
- package/src/tabs/Tabs.svelte +0 -1128
- package/src/tabs/TabsA11yFixture.svelte +0 -20
- package/src/tabs/TabsKbdFixture.svelte +0 -25
- package/src/tabs/context.ts +0 -43
- package/src/tabs/index.ts +0 -14
- package/src/tabs/meta.ts +0 -152
- package/src/tabs/types.ts +0 -6
- package/src/tag/Tag.a11y.test.ts +0 -33
- package/src/tag/Tag.svelte +0 -366
- package/src/tag/TagA11yFixture.svelte +0 -18
- package/src/tag/index.ts +0 -2
- package/src/tag/meta.ts +0 -92
- package/src/tag-input/TagInput.a11y.test.ts +0 -41
- package/src/tag-input/TagInput.svelte +0 -544
- package/src/tag-input/index.ts +0 -2
- package/src/tag-input/meta.ts +0 -43
- package/src/tag-input/reorder.test.ts +0 -59
- package/src/tag-input/reorder.ts +0 -41
- package/src/test-utils/LocaleHarness.svelte +0 -29
- package/src/test-utils/a11y.ts +0 -108
- package/src/test-utils/kbd.ts +0 -52
- package/src/textarea/TextArea.a11y.test.ts +0 -44
- package/src/textarea/TextArea.svelte +0 -420
- package/src/textarea/index.ts +0 -2
- package/src/textarea/meta.ts +0 -104
- package/src/time-picker/TimePicker.a11y.test.ts +0 -45
- package/src/time-picker/TimePicker.kbd.test.ts +0 -70
- package/src/time-picker/TimePicker.svelte +0 -1023
- package/src/time-picker/TimePickerKbdFixture.svelte +0 -23
- package/src/time-picker/index.ts +0 -2
- package/src/time-picker/meta.ts +0 -64
- package/src/timeline/Timeline.a11y.test.ts +0 -54
- package/src/timeline/Timeline.svelte +0 -599
- package/src/timeline/TimelineItem.svelte +0 -164
- package/src/timeline/context.ts +0 -28
- package/src/timeline/index.ts +0 -16
- package/src/timeline/meta.ts +0 -129
- package/src/timeline/types.ts +0 -9
- package/src/toast/Toast.a11y.test.ts +0 -67
- package/src/toast/ToastContainer.svelte +0 -184
- package/src/toast/ToastItem.svelte +0 -247
- package/src/toast/index.ts +0 -9
- package/src/toast/live-region.ts +0 -78
- package/src/toast/meta.ts +0 -95
- package/src/toast/store.ts +0 -187
- package/src/tooltip/Tooltip.a11y.test.ts +0 -41
- package/src/tooltip/Tooltip.kbd.test.ts +0 -37
- package/src/tooltip/Tooltip.svelte +0 -416
- package/src/tooltip/TooltipA11yFixture.svelte +0 -31
- package/src/tooltip/TooltipKbdFixture.svelte +0 -16
- package/src/tooltip/index.ts +0 -2
- package/src/tooltip/meta.ts +0 -59
- package/src/tooltip/placement.ts +0 -6
- package/src/transfer/Transfer.a11y.test.ts +0 -63
- package/src/transfer/Transfer.kbd.test.ts +0 -75
- package/src/transfer/Transfer.svelte +0 -1451
- package/src/transfer/TransferKbdFixture.svelte +0 -23
- package/src/transfer/group.test.ts +0 -55
- package/src/transfer/group.ts +0 -61
- package/src/transfer/index.ts +0 -3
- package/src/transfer/meta.ts +0 -55
- package/src/transfer/reorder.test.ts +0 -52
- package/src/transfer/reorder.ts +0 -42
- package/src/transfer/tree.test.ts +0 -44
- package/src/transfer/tree.ts +0 -52
- package/src/transfer/types.ts +0 -32
- package/src/tree/Tree.a11y.test.ts +0 -63
- package/src/tree/Tree.kbd.test.ts +0 -91
- package/src/tree/Tree.svelte +0 -1500
- package/src/tree/TreeKbdFixture.svelte +0 -30
- package/src/tree/index.ts +0 -3
- package/src/tree/meta.ts +0 -152
- package/src/tree-select/TreeSelect.a11y.test.ts +0 -52
- package/src/tree-select/TreeSelect.kbd.test.ts +0 -53
- package/src/tree-select/TreeSelect.svelte +0 -1611
- package/src/tree-select/TreeSelectKbdFixture.svelte +0 -20
- package/src/tree-select/index.ts +0 -3
- package/src/tree-select/meta.ts +0 -73
- package/src/tree-select/types.ts +0 -11
- package/src/tree-select/virtual.test.ts +0 -104
- package/src/typography/Link.svelte +0 -120
- package/src/typography/Paragraph.svelte +0 -92
- package/src/typography/Text.svelte +0 -93
- package/src/typography/Title.svelte +0 -91
- package/src/typography/Typography.a11y.test.ts +0 -34
- package/src/typography/TypographyA11yFixture.svelte +0 -27
- package/src/typography/TypographyBase.svelte +0 -807
- package/src/typography/index.ts +0 -16
- package/src/typography/meta.ts +0 -158
- package/src/upload/Upload.a11y.test.ts +0 -58
- package/src/upload/Upload.svelte +0 -1094
- package/src/upload/UploadA11yFixture.svelte +0 -23
- package/src/upload/index.ts +0 -3
- package/src/upload/meta.ts +0 -64
- package/src/upload/types.ts +0 -16
- package/src/virtual-list/VirtualList.svelte +0 -401
- package/src/virtual-list/index.ts +0 -2
- package/src/virtual-list/meta.ts +0 -106
package/src/tag-input/meta.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Machine-readable component metadata for AI/docs consumption.
|
|
3
|
-
* See specs/00-foundation/ai-friendly.spec.md.
|
|
4
|
-
*/
|
|
5
|
-
export const meta = {
|
|
6
|
-
name: 'TagInput',
|
|
7
|
-
category: 'input',
|
|
8
|
-
description: '标签输入框,支持回车 / 分隔符提交、退格删除、去重、上限与失焦提交。',
|
|
9
|
-
props: [
|
|
10
|
-
{ name: 'value', type: 'string[]', default: 'undefined' },
|
|
11
|
-
{ name: 'defaultValue', type: 'string[]', default: '[]' },
|
|
12
|
-
{ name: 'inputValue', type: 'string', default: 'undefined' },
|
|
13
|
-
{ name: 'defaultInputValue', type: 'string', default: "''" },
|
|
14
|
-
{ name: 'placeholder', type: 'string', default: 'undefined' },
|
|
15
|
-
{ name: 'size', type: "'small'|'default'|'large'", default: 'default' },
|
|
16
|
-
{ name: 'status', type: "'default'|'warning'|'error'", default: 'default' },
|
|
17
|
-
{ name: 'disabled', type: 'boolean', default: 'false' },
|
|
18
|
-
{ name: 'readonly', type: 'boolean', default: 'false' },
|
|
19
|
-
{ name: 'max', type: 'number', default: 'undefined' },
|
|
20
|
-
{ name: 'maxLength', type: 'number', default: 'undefined' },
|
|
21
|
-
{ name: 'maxTagTextLength', type: 'number', default: 'undefined' },
|
|
22
|
-
{ name: 'separator', type: 'string|string[]', default: "['Enter']" },
|
|
23
|
-
{ name: 'addOnBlur', type: 'boolean', default: 'false' },
|
|
24
|
-
{ name: 'allowDuplicates', type: 'boolean', default: 'false' },
|
|
25
|
-
{ name: 'trimWhitespace', type: 'boolean', default: 'true' },
|
|
26
|
-
{ name: 'draggable', type: 'boolean', default: 'false' },
|
|
27
|
-
{ name: 'onChange', type: '(tags: string[]) => void', default: 'undefined' },
|
|
28
|
-
{ name: 'onInputChange', type: '(value: string) => void', default: 'undefined' },
|
|
29
|
-
{ name: 'ariaLabel', type: 'string', default: 'undefined' },
|
|
30
|
-
],
|
|
31
|
-
a11y: {
|
|
32
|
-
role: 'group',
|
|
33
|
-
notes: [
|
|
34
|
-
'容器 role=group + aria-label',
|
|
35
|
-
'每个标签删除按钮含 aria-label,文案取自 locale(TagInput.remove,默认中文「删除」)',
|
|
36
|
-
'键盘:分隔符(默认 Enter)提交、输入为空时 Backspace 删除末尾标签',
|
|
37
|
-
'draggable 仅为鼠标增强(HTML5 DnD);键盘增删标签交互不受影响',
|
|
38
|
-
'error 状态时 aria-invalid 标注于内部输入',
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
i18nKeys: ['TagInput.remove'],
|
|
42
|
-
tokens: ['--cd-input-*', '--cd-focus-ring', '--cd-motion-*', '--cd-color-fill-*'],
|
|
43
|
-
} as const;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { computeInsertSide, reorder } from './reorder.js';
|
|
3
|
-
|
|
4
|
-
describe('tag-input/reorder', () => {
|
|
5
|
-
describe('computeInsertSide', () => {
|
|
6
|
-
it('left half → before', () => {
|
|
7
|
-
expect(computeInsertSide(0, 100)).toBe('before');
|
|
8
|
-
expect(computeInsertSide(49, 100)).toBe('before');
|
|
9
|
-
});
|
|
10
|
-
it('mid and right half → after', () => {
|
|
11
|
-
expect(computeInsertSide(50, 100)).toBe('after');
|
|
12
|
-
expect(computeInsertSide(99, 100)).toBe('after');
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
describe('reorder', () => {
|
|
17
|
-
const list = ['a', 'b', 'c', 'd'];
|
|
18
|
-
|
|
19
|
-
it('moves an item forward (before a later target)', () => {
|
|
20
|
-
expect(reorder(list, 0, 2, 'before')).toEqual(['b', 'a', 'c', 'd']);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('moves an item forward (after a later target)', () => {
|
|
24
|
-
expect(reorder(list, 0, 2, 'after')).toEqual(['b', 'c', 'a', 'd']);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('moves an item backward (before an earlier target)', () => {
|
|
28
|
-
expect(reorder(list, 3, 1, 'before')).toEqual(['a', 'd', 'b', 'c']);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('moves an item backward (after an earlier target)', () => {
|
|
32
|
-
expect(reorder(list, 3, 1, 'after')).toEqual(['a', 'b', 'd', 'c']);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it('moves to the very end', () => {
|
|
36
|
-
expect(reorder(list, 0, 3, 'after')).toEqual(['b', 'c', 'd', 'a']);
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
it('moves to the very start', () => {
|
|
40
|
-
expect(reorder(list, 3, 0, 'before')).toEqual(['d', 'a', 'b', 'c']);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('no-op when result position equals source (drop after previous neighbor)', () => {
|
|
44
|
-
expect(reorder(list, 1, 0, 'after')).toEqual(list);
|
|
45
|
-
expect(reorder(list, 1, 2, 'before')).toEqual(list);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it('returns a new array (immutable)', () => {
|
|
49
|
-
const out = reorder(list, 0, 1, 'after');
|
|
50
|
-
expect(out).not.toBe(list);
|
|
51
|
-
expect(list).toEqual(['a', 'b', 'c', 'd']);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('out-of-range indices return a copy unchanged', () => {
|
|
55
|
-
expect(reorder(list, -1, 2, 'before')).toEqual(list);
|
|
56
|
-
expect(reorder(list, 0, 9, 'after')).toEqual(list);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
});
|
package/src/tag-input/reorder.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 标签拖拽重排的纯函数 (红线 #2):不触碰组件状态,仅做数组计算,便于单测。
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/** dragover 时根据指针在目标标签内的水平位置判断插入在其「前」或「后」。 */
|
|
6
|
-
export type InsertSide = 'before' | 'after';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 以目标标签中线为界:指针在左半区插入到目标之前,右半区插入到目标之后。
|
|
10
|
-
* @param offsetX 指针相对目标标签左边缘的水平偏移
|
|
11
|
-
* @param width 目标标签宽度
|
|
12
|
-
*/
|
|
13
|
-
export function computeInsertSide(offsetX: number, width: number): InsertSide {
|
|
14
|
-
return offsetX < width / 2 ? 'before' : 'after';
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* 把 `from` 处的元素移动到目标 `to` 的 `before`/`after` 侧,返回新数组(不可变)。
|
|
19
|
-
* 越界或目标即自身(移动后位置不变)时原样返回原数组的浅拷贝。
|
|
20
|
-
*/
|
|
21
|
-
export function reorder<T>(
|
|
22
|
-
list: readonly T[],
|
|
23
|
-
from: number,
|
|
24
|
-
to: number,
|
|
25
|
-
side: InsertSide,
|
|
26
|
-
): T[] {
|
|
27
|
-
const n = list.length;
|
|
28
|
-
if (from < 0 || from >= n || to < 0 || to >= n) return list.slice();
|
|
29
|
-
|
|
30
|
-
// 目标插入下标(在「移除 from 之前」的坐标系中)。
|
|
31
|
-
let insert = side === 'before' ? to : to + 1;
|
|
32
|
-
// 移除被拖项后,位于其右侧的插入点需左移一位。
|
|
33
|
-
if (from < insert) insert -= 1;
|
|
34
|
-
|
|
35
|
-
if (insert === from) return list.slice();
|
|
36
|
-
|
|
37
|
-
const next = list.slice();
|
|
38
|
-
const removed = next.splice(from, 1);
|
|
39
|
-
next.splice(insert, 0, ...removed);
|
|
40
|
-
return next;
|
|
41
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
LocaleHarness — a11y 测试专用包装组件。
|
|
3
|
-
把被测组件包进 <LocaleProvider>,使 useLocale() 能拿到 context(默认 en_US)。
|
|
4
|
-
通过 component prop 接收被测组件构造器,props 透传,children 作为默认插槽渲染。
|
|
5
|
-
注意:仅用于测试,不对外导出。
|
|
6
|
-
-->
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
import type { Component, Snippet } from 'svelte';
|
|
9
|
-
import { LocaleProvider } from '../locale-provider/index.js';
|
|
10
|
-
|
|
11
|
-
interface Props {
|
|
12
|
-
// 被测组件构造器(Svelte 5 Component)。
|
|
13
|
-
component: Component<any>;
|
|
14
|
-
// 透传给被测组件的 props。
|
|
15
|
-
props?: Record<string, unknown>;
|
|
16
|
-
// 语言码,默认 en_US。
|
|
17
|
-
locale?: string;
|
|
18
|
-
// 默认插槽内容(如 Button 的文字)。
|
|
19
|
-
children?: Snippet;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
let { component: Cmp, props = {}, locale = 'en_US', children }: Props = $props();
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<LocaleProvider {locale}>
|
|
26
|
-
<Cmp {...props}>
|
|
27
|
-
{#if children}{@render children()}{/if}
|
|
28
|
-
</Cmp>
|
|
29
|
-
</LocaleProvider>
|
package/src/test-utils/a11y.ts
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
// a11y 渲染测试基建(仅 dom project / jsdom 下使用)。
|
|
2
|
-
//
|
|
3
|
-
// 提供两个帮手:
|
|
4
|
-
// - renderWithLocale:用 testing-library 的 render 把组件挂到 jsdom,
|
|
5
|
-
// 并用 LocaleHarness 包一层 LocaleProvider(默认 en_US),使 useLocale() 可用。
|
|
6
|
-
// - expectNoAxeViolations:对容器跑 axe-core,断言 0 violations。
|
|
7
|
-
//
|
|
8
|
-
// 设计取舍:本套件只做 axe 静态规则 + role/aria 断言,不测真实键盘/焦点行为
|
|
9
|
-
// (jsdom 焦点模型不完整、委托事件合成不可靠——见项目已知教训)。焦点陷阱/键盘
|
|
10
|
-
// 导航留给将来 Playwright。
|
|
11
|
-
import { render, type RenderResult } from '@testing-library/svelte';
|
|
12
|
-
import type { Component } from 'svelte';
|
|
13
|
-
import axe, { type RunOptions, type Result } from 'axe-core';
|
|
14
|
-
|
|
15
|
-
// 被测组件的宽松构造器类型——props 形态各异,测试帮手不关心其精确 prop 签名。
|
|
16
|
-
// 用 Record<string, unknown> 而非 any,既满足 eslint no-explicit-any,又能接收任意组件。
|
|
17
|
-
type AnyComponent = Component<Record<string, unknown>>;
|
|
18
|
-
import { expect } from 'vitest';
|
|
19
|
-
import LocaleHarness from './LocaleHarness.svelte';
|
|
20
|
-
|
|
21
|
-
export interface RenderWithLocaleOptions {
|
|
22
|
-
/** 透传给被测组件的 props。 */
|
|
23
|
-
props?: Record<string, unknown>;
|
|
24
|
-
/** 语言码,默认 en_US。 */
|
|
25
|
-
locale?: string;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* 把组件包进 LocaleProvider 渲染到 jsdom。
|
|
30
|
-
* 返回 testing-library 的 RenderResult(含 container / baseElement / queries)。
|
|
31
|
-
*
|
|
32
|
-
* 用法:
|
|
33
|
-
* const { container } = renderWithLocale(Button, { props: { type: 'primary' } });
|
|
34
|
-
*
|
|
35
|
-
* 纯展示组件(无 useLocale)同样可用——Provider 包裹无副作用。
|
|
36
|
-
*/
|
|
37
|
-
export function renderWithLocale(
|
|
38
|
-
component: AnyComponent,
|
|
39
|
-
options: RenderWithLocaleOptions = {},
|
|
40
|
-
): RenderResult<AnyComponent> {
|
|
41
|
-
const { props = {}, locale = 'en_US' } = options;
|
|
42
|
-
return render(LocaleHarness as unknown as AnyComponent, {
|
|
43
|
-
props: { component, props, locale },
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// jsdom 下不可靠 / 无意义、需禁用的 axe 规则及原因:
|
|
48
|
-
// - color-contrast:jsdom 不做布局与渲染,拿不到真实计算后的颜色/尺寸,
|
|
49
|
-
// 对比度无法计算(axe 本就会 incomplete,这里显式关掉避免噪音)。对比度
|
|
50
|
-
// 交给将来的真实浏览器(Playwright)或专门的 token 对比度校验。
|
|
51
|
-
const JSDOM_DISABLED_RULES = ['color-contrast'] as const;
|
|
52
|
-
|
|
53
|
-
export interface AxeAssertOptions {
|
|
54
|
-
/** 额外要禁用的规则 id(在默认禁用项之外追加)。 */
|
|
55
|
-
disableRules?: string[];
|
|
56
|
-
/** 覆盖默认 runOptions(一般不需要)。 */
|
|
57
|
-
runOptions?: RunOptions;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function formatViolations(violations: Result[]): string {
|
|
61
|
-
return violations
|
|
62
|
-
.map((v) => {
|
|
63
|
-
const nodes = v.nodes.map((n) => ` - ${n.html}\n ${n.failureSummary ?? ''}`).join('\n');
|
|
64
|
-
return ` [${v.id}] ${v.help} (${v.impact ?? 'n/a'})\n ${v.helpUrl}\n${nodes}`;
|
|
65
|
-
})
|
|
66
|
-
.join('\n\n');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* 对容器跑 axe-core,断言 0 violations。
|
|
71
|
-
* 默认规则集:WCAG 2.0/2.1 A & AA(axe tags wcag2a/wcag2aa/wcag21a/wcag21aa)。
|
|
72
|
-
* 默认禁用 jsdom 下不可靠的规则(见 JSDOM_DISABLED_RULES)。
|
|
73
|
-
*
|
|
74
|
-
* 用法:await expectNoAxeViolations(container);
|
|
75
|
-
*/
|
|
76
|
-
export async function expectNoAxeViolations(
|
|
77
|
-
container: Element,
|
|
78
|
-
options: AxeAssertOptions = {},
|
|
79
|
-
): Promise<void> {
|
|
80
|
-
const { disableRules = [], runOptions } = options;
|
|
81
|
-
|
|
82
|
-
const rules: RunOptions['rules'] = {};
|
|
83
|
-
for (const id of [...JSDOM_DISABLED_RULES, ...disableRules]) {
|
|
84
|
-
rules[id] = { enabled: false };
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const results = await axe.run(
|
|
88
|
-
container,
|
|
89
|
-
runOptions ?? {
|
|
90
|
-
runOnly: {
|
|
91
|
-
type: 'tag',
|
|
92
|
-
values: ['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa'],
|
|
93
|
-
},
|
|
94
|
-
rules,
|
|
95
|
-
},
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
if (results.violations.length > 0) {
|
|
99
|
-
throw new Error(
|
|
100
|
-
`Expected no axe violations but found ${results.violations.length}:\n\n${formatViolations(
|
|
101
|
-
results.violations,
|
|
102
|
-
)}`,
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// 给 vitest 一个显式断言计数,便于报告/快照。
|
|
107
|
-
expect(results.violations).toHaveLength(0);
|
|
108
|
-
}
|
package/src/test-utils/kbd.ts
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
// 键盘 e2e 测试基建(仅 browser project / 真实 chromium 下使用)。
|
|
2
|
-
//
|
|
3
|
-
// 与 a11y.ts(jsdom + axe)的关键区别:本套件在真实 chromium 里 mount 组件,
|
|
4
|
-
// 用 vitest browser 的 userEvent 触发真实键盘/Tab,并用 page locator 的
|
|
5
|
-
// `.toHaveFocus()` 断言真实 document.activeElement。jsdom 测不了的焦点陷阱、
|
|
6
|
-
// roving 漫游、焦点归还都在这里覆盖。
|
|
7
|
-
//
|
|
8
|
-
// 渲染走 vitest-browser-svelte 的 render(基于 @testing-library/svelte-core,
|
|
9
|
-
// 真实 mount 到 document.body),外层用 LocaleHarness 包一层 LocaleProvider
|
|
10
|
-
// (复用 a11y 套件的同一 harness),使 useLocale() 可用。
|
|
11
|
-
import { render } from 'vitest-browser-svelte';
|
|
12
|
-
import { userEvent } from 'vitest/browser';
|
|
13
|
-
import type { Component } from 'svelte';
|
|
14
|
-
import LocaleHarness from './LocaleHarness.svelte';
|
|
15
|
-
|
|
16
|
-
// 被测组件的宽松构造器类型——props 形态各异,帮手不关心精确 prop 签名。
|
|
17
|
-
type AnyComponent = Component<Record<string, unknown>>;
|
|
18
|
-
|
|
19
|
-
export interface RenderKbdOptions {
|
|
20
|
-
/** 透传给被测组件的 props。 */
|
|
21
|
-
props?: Record<string, unknown>;
|
|
22
|
-
/** 语言码,默认 en_US。 */
|
|
23
|
-
locale?: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* 在真实浏览器里把组件包进 LocaleProvider 渲染。
|
|
28
|
-
* 返回 vitest-browser-svelte 的 RenderResult(含 baseElement / container / 各 locator 查询)。
|
|
29
|
-
*
|
|
30
|
-
* 用法:
|
|
31
|
-
* const screen = renderKbd(Modal, { props: { open: true, title: '...' } });
|
|
32
|
-
* const dialog = screen.baseElement.querySelector('[role="dialog"]');
|
|
33
|
-
*/
|
|
34
|
-
export function renderKbd(component: AnyComponent, options: RenderKbdOptions = {}) {
|
|
35
|
-
const { props = {}, locale = 'en_US' } = options;
|
|
36
|
-
return render(LocaleHarness as unknown as AnyComponent, {
|
|
37
|
-
props: { component, props, locale },
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* 直接渲染一个已自带 LocaleProvider/不需要 locale 的 fixture 组件。
|
|
43
|
-
* fixture 通常无 props(构造器类型为 Component<Record<string, never>>),
|
|
44
|
-
* 故入参用宽松的 Component<any> 接收,避免与具体 fixture 的精确 props 类型冲突。
|
|
45
|
-
*/
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
-
export function renderKbdFixture(component: Component<any>, props: Record<string, unknown> = {}) {
|
|
48
|
-
return render(component as AnyComponent, { props });
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// 重新导出 userEvent,键盘 e2e 统一从这里取(tab()/keyboard()/click())。
|
|
52
|
-
export { userEvent };
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// TextArea a11y:原生 <textarea> + ariaLabel 可访问名;error 态 aria-invalid;
|
|
2
|
-
// showClear 清除按钮 locale 可访问名。
|
|
3
|
-
import { describe, it, expect } from 'vitest';
|
|
4
|
-
import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
|
|
5
|
-
import TextArea from './TextArea.svelte';
|
|
6
|
-
|
|
7
|
-
describe('TextArea a11y', () => {
|
|
8
|
-
it('默认渲染:ariaLabel 提供可访问名,无 axe violations', async () => {
|
|
9
|
-
const { container } = renderWithLocale(TextArea, {
|
|
10
|
-
props: { ariaLabel: 'Bio', placeholder: 'Tell us about yourself' },
|
|
11
|
-
});
|
|
12
|
-
const ta = container.querySelector('textarea');
|
|
13
|
-
expect(ta).not.toBeNull();
|
|
14
|
-
expect(ta?.getAttribute('aria-label')).toBe('Bio');
|
|
15
|
-
await expectNoAxeViolations(container);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it('error 状态:aria-invalid=true', async () => {
|
|
19
|
-
const { container } = renderWithLocale(TextArea, {
|
|
20
|
-
props: { ariaLabel: 'Notes', status: 'error' },
|
|
21
|
-
});
|
|
22
|
-
const ta = container.querySelector('textarea');
|
|
23
|
-
expect(ta?.getAttribute('aria-invalid')).toBe('true');
|
|
24
|
-
await expectNoAxeViolations(container);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('showClear + showCount:清除按钮 locale 可访问名,无 axe violations', async () => {
|
|
28
|
-
const { container } = renderWithLocale(TextArea, {
|
|
29
|
-
props: {
|
|
30
|
-
ariaLabel: 'Comment',
|
|
31
|
-
defaultValue: 'hello',
|
|
32
|
-
showClear: true,
|
|
33
|
-
showCount: true,
|
|
34
|
-
maxLength: 100,
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
const clearBtn = container.querySelector('.cd-textarea__clear');
|
|
38
|
-
expect(clearBtn).not.toBeNull();
|
|
39
|
-
const label = clearBtn?.getAttribute('aria-label');
|
|
40
|
-
expect(label).toBeTruthy();
|
|
41
|
-
expect(label).not.toBe('Textarea.clear');
|
|
42
|
-
await expectNoAxeViolations(container);
|
|
43
|
-
});
|
|
44
|
-
});
|