@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.
Files changed (500) hide show
  1. package/README.md +66 -0
  2. package/dist/badge/Badge.svelte +5 -2
  3. package/dist/badge/Badge.svelte.d.ts.map +1 -1
  4. package/dist/components.json +1 -1
  5. package/package.json +6 -5
  6. package/dist/anchor/Anchor.a11y.test.d.ts +0 -2
  7. package/dist/anchor/Anchor.a11y.test.d.ts.map +0 -1
  8. package/dist/anchor/Anchor.a11y.test.js +0 -44
  9. package/dist/anchor/Anchor.kbd.test.d.ts +0 -2
  10. package/dist/anchor/Anchor.kbd.test.d.ts.map +0 -1
  11. package/dist/anchor/Anchor.kbd.test.js +0 -59
  12. package/dist/anchor/AnchorKbdFixture.svelte +0 -24
  13. package/dist/anchor/AnchorKbdFixture.svelte.d.ts +0 -19
  14. package/dist/anchor/AnchorKbdFixture.svelte.d.ts.map +0 -1
  15. package/dist/autocomplete/AutoComplete.a11y.test.d.ts +0 -2
  16. package/dist/autocomplete/AutoComplete.a11y.test.d.ts.map +0 -1
  17. package/dist/autocomplete/AutoComplete.a11y.test.js +0 -45
  18. package/dist/autocomplete/AutoComplete.kbd.test.d.ts +0 -2
  19. package/dist/autocomplete/AutoComplete.kbd.test.d.ts.map +0 -1
  20. package/dist/autocomplete/AutoComplete.kbd.test.js +0 -60
  21. package/dist/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
  22. package/dist/autocomplete/AutoCompleteKbdFixture.svelte.d.ts +0 -4
  23. package/dist/autocomplete/AutoCompleteKbdFixture.svelte.d.ts.map +0 -1
  24. package/dist/avatar/Avatar.a11y.test.d.ts +0 -2
  25. package/dist/avatar/Avatar.a11y.test.d.ts.map +0 -1
  26. package/dist/avatar/Avatar.a11y.test.js +0 -34
  27. package/dist/back-top/BackTop.a11y.test.d.ts +0 -2
  28. package/dist/back-top/BackTop.a11y.test.d.ts.map +0 -1
  29. package/dist/back-top/BackTop.a11y.test.js +0 -37
  30. package/dist/badge/Badge.a11y.test.d.ts +0 -2
  31. package/dist/badge/Badge.a11y.test.d.ts.map +0 -1
  32. package/dist/badge/Badge.a11y.test.js +0 -32
  33. package/dist/badge/BadgeA11yFixture.svelte +0 -18
  34. package/dist/badge/BadgeA11yFixture.svelte.d.ts +0 -7
  35. package/dist/badge/BadgeA11yFixture.svelte.d.ts.map +0 -1
  36. package/dist/banner/Banner.a11y.test.d.ts +0 -2
  37. package/dist/banner/Banner.a11y.test.d.ts.map +0 -1
  38. package/dist/banner/Banner.a11y.test.js +0 -43
  39. package/dist/breadcrumb/Breadcrumb.a11y.test.d.ts +0 -2
  40. package/dist/breadcrumb/Breadcrumb.a11y.test.d.ts.map +0 -1
  41. package/dist/breadcrumb/Breadcrumb.a11y.test.js +0 -31
  42. package/dist/breadcrumb/Breadcrumb.kbd.test.d.ts +0 -2
  43. package/dist/breadcrumb/Breadcrumb.kbd.test.d.ts.map +0 -1
  44. package/dist/breadcrumb/Breadcrumb.kbd.test.js +0 -37
  45. package/dist/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
  46. package/dist/breadcrumb/BreadcrumbKbdFixture.svelte.d.ts +0 -19
  47. package/dist/breadcrumb/BreadcrumbKbdFixture.svelte.d.ts.map +0 -1
  48. package/dist/button/Button.a11y.test.d.ts +0 -2
  49. package/dist/button/Button.a11y.test.d.ts.map +0 -1
  50. package/dist/button/Button.a11y.test.js +0 -49
  51. package/dist/calendar/Calendar.a11y.test.d.ts +0 -2
  52. package/dist/calendar/Calendar.a11y.test.d.ts.map +0 -1
  53. package/dist/calendar/Calendar.a11y.test.js +0 -46
  54. package/dist/calendar/Calendar.kbd.test.d.ts +0 -2
  55. package/dist/calendar/Calendar.kbd.test.d.ts.map +0 -1
  56. package/dist/calendar/Calendar.kbd.test.js +0 -50
  57. package/dist/calendar/CalendarKbdFixture.svelte +0 -23
  58. package/dist/calendar/CalendarKbdFixture.svelte.d.ts +0 -19
  59. package/dist/calendar/CalendarKbdFixture.svelte.d.ts.map +0 -1
  60. package/dist/card/Card.a11y.test.d.ts +0 -2
  61. package/dist/card/Card.a11y.test.d.ts.map +0 -1
  62. package/dist/card/Card.a11y.test.js +0 -35
  63. package/dist/carousel/Carousel.a11y.test.d.ts +0 -2
  64. package/dist/carousel/Carousel.a11y.test.d.ts.map +0 -1
  65. package/dist/carousel/Carousel.a11y.test.js +0 -43
  66. package/dist/carousel/Carousel.kbd.test.d.ts +0 -2
  67. package/dist/carousel/Carousel.kbd.test.d.ts.map +0 -1
  68. package/dist/carousel/Carousel.kbd.test.js +0 -51
  69. package/dist/carousel/CarouselA11yFixture.svelte +0 -25
  70. package/dist/carousel/CarouselA11yFixture.svelte.d.ts +0 -8
  71. package/dist/carousel/CarouselA11yFixture.svelte.d.ts.map +0 -1
  72. package/dist/carousel/CarouselKbdFixture.svelte +0 -24
  73. package/dist/carousel/CarouselKbdFixture.svelte.d.ts +0 -19
  74. package/dist/carousel/CarouselKbdFixture.svelte.d.ts.map +0 -1
  75. package/dist/cascader/Cascader.a11y.test.d.ts +0 -2
  76. package/dist/cascader/Cascader.a11y.test.d.ts.map +0 -1
  77. package/dist/cascader/Cascader.a11y.test.js +0 -55
  78. package/dist/cascader/Cascader.kbd.test.d.ts +0 -2
  79. package/dist/cascader/Cascader.kbd.test.d.ts.map +0 -1
  80. package/dist/cascader/Cascader.kbd.test.js +0 -47
  81. package/dist/cascader/CascaderKbdFixture.svelte +0 -31
  82. package/dist/cascader/CascaderKbdFixture.svelte.d.ts +0 -19
  83. package/dist/cascader/CascaderKbdFixture.svelte.d.ts.map +0 -1
  84. package/dist/checkbox/CheckboxGroup.a11y.test.d.ts +0 -2
  85. package/dist/checkbox/CheckboxGroup.a11y.test.d.ts.map +0 -1
  86. package/dist/checkbox/CheckboxGroup.a11y.test.js +0 -38
  87. package/dist/checkbox/CheckboxGroup.kbd.test.d.ts +0 -2
  88. package/dist/checkbox/CheckboxGroup.kbd.test.d.ts.map +0 -1
  89. package/dist/checkbox/CheckboxGroup.kbd.test.js +0 -33
  90. package/dist/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
  91. package/dist/checkbox/CheckboxGroupKbdFixture.svelte.d.ts +0 -19
  92. package/dist/checkbox/CheckboxGroupKbdFixture.svelte.d.ts.map +0 -1
  93. package/dist/collapse/Collapse.a11y.test.d.ts +0 -2
  94. package/dist/collapse/Collapse.a11y.test.d.ts.map +0 -1
  95. package/dist/collapse/Collapse.a11y.test.js +0 -46
  96. package/dist/collapse/Collapse.kbd.test.d.ts +0 -2
  97. package/dist/collapse/Collapse.kbd.test.d.ts.map +0 -1
  98. package/dist/collapse/Collapse.kbd.test.js +0 -70
  99. package/dist/collapse/CollapseA11yFixture.svelte +0 -27
  100. package/dist/collapse/CollapseA11yFixture.svelte.d.ts +0 -9
  101. package/dist/collapse/CollapseA11yFixture.svelte.d.ts.map +0 -1
  102. package/dist/collapse/CollapseKbdFixture.svelte +0 -25
  103. package/dist/collapse/CollapseKbdFixture.svelte.d.ts +0 -19
  104. package/dist/collapse/CollapseKbdFixture.svelte.d.ts.map +0 -1
  105. package/dist/color-picker/ColorPicker.a11y.test.d.ts +0 -2
  106. package/dist/color-picker/ColorPicker.a11y.test.d.ts.map +0 -1
  107. package/dist/color-picker/ColorPicker.a11y.test.js +0 -54
  108. package/dist/color-picker/ColorPicker.kbd.test.d.ts +0 -2
  109. package/dist/color-picker/ColorPicker.kbd.test.d.ts.map +0 -1
  110. package/dist/color-picker/ColorPicker.kbd.test.js +0 -59
  111. package/dist/color-picker/ColorPickerKbdFixture.svelte +0 -25
  112. package/dist/color-picker/ColorPickerKbdFixture.svelte.d.ts +0 -4
  113. package/dist/color-picker/ColorPickerKbdFixture.svelte.d.ts.map +0 -1
  114. package/dist/date-picker/DatePicker.a11y.test.d.ts +0 -2
  115. package/dist/date-picker/DatePicker.a11y.test.d.ts.map +0 -1
  116. package/dist/date-picker/DatePicker.a11y.test.js +0 -42
  117. package/dist/date-picker/DatePicker.kbd.test.d.ts +0 -2
  118. package/dist/date-picker/DatePicker.kbd.test.d.ts.map +0 -1
  119. package/dist/date-picker/DatePicker.kbd.test.js +0 -59
  120. package/dist/date-picker/DatePickerKbdFixture.svelte +0 -26
  121. package/dist/date-picker/DatePickerKbdFixture.svelte.d.ts +0 -4
  122. package/dist/date-picker/DatePickerKbdFixture.svelte.d.ts.map +0 -1
  123. package/dist/date-picker/RangePicker.kbd.test.d.ts +0 -2
  124. package/dist/date-picker/RangePicker.kbd.test.d.ts.map +0 -1
  125. package/dist/date-picker/RangePicker.kbd.test.js +0 -60
  126. package/dist/date-picker/RangePickerKbdFixture.svelte +0 -30
  127. package/dist/date-picker/RangePickerKbdFixture.svelte.d.ts +0 -7
  128. package/dist/date-picker/RangePickerKbdFixture.svelte.d.ts.map +0 -1
  129. package/dist/descriptions/Descriptions.a11y.test.d.ts +0 -2
  130. package/dist/descriptions/Descriptions.a11y.test.d.ts.map +0 -1
  131. package/dist/descriptions/Descriptions.a11y.test.js +0 -31
  132. package/dist/divider/Divider.a11y.test.d.ts +0 -2
  133. package/dist/divider/Divider.a11y.test.d.ts.map +0 -1
  134. package/dist/divider/Divider.a11y.test.js +0 -21
  135. package/dist/drawer/Drawer.a11y.test.d.ts +0 -2
  136. package/dist/drawer/Drawer.a11y.test.d.ts.map +0 -1
  137. package/dist/drawer/Drawer.a11y.test.js +0 -33
  138. package/dist/drawer/Drawer.kbd.test.d.ts +0 -2
  139. package/dist/drawer/Drawer.kbd.test.d.ts.map +0 -1
  140. package/dist/drawer/Drawer.kbd.test.js +0 -53
  141. package/dist/drawer/DrawerKbdFixture.svelte +0 -28
  142. package/dist/drawer/DrawerKbdFixture.svelte.d.ts +0 -4
  143. package/dist/drawer/DrawerKbdFixture.svelte.d.ts.map +0 -1
  144. package/dist/dropdown/Dropdown.a11y.test.d.ts +0 -2
  145. package/dist/dropdown/Dropdown.a11y.test.d.ts.map +0 -1
  146. package/dist/dropdown/Dropdown.a11y.test.js +0 -39
  147. package/dist/dropdown/Dropdown.kbd.test.d.ts +0 -2
  148. package/dist/dropdown/Dropdown.kbd.test.d.ts.map +0 -1
  149. package/dist/dropdown/Dropdown.kbd.test.js +0 -47
  150. package/dist/dropdown/DropdownA11yFixture.svelte +0 -24
  151. package/dist/dropdown/DropdownA11yFixture.svelte.d.ts +0 -11
  152. package/dist/dropdown/DropdownA11yFixture.svelte.d.ts.map +0 -1
  153. package/dist/dropdown/DropdownKbdFixture.svelte +0 -26
  154. package/dist/dropdown/DropdownKbdFixture.svelte.d.ts +0 -19
  155. package/dist/dropdown/DropdownKbdFixture.svelte.d.ts.map +0 -1
  156. package/dist/dropdown/types.test.d.ts +0 -2
  157. package/dist/dropdown/types.test.d.ts.map +0 -1
  158. package/dist/dropdown/types.test.js +0 -40
  159. package/dist/empty/Empty.a11y.test.d.ts +0 -2
  160. package/dist/empty/Empty.a11y.test.d.ts.map +0 -1
  161. package/dist/empty/Empty.a11y.test.js +0 -22
  162. package/dist/form/Form.a11y.test.d.ts +0 -2
  163. package/dist/form/Form.a11y.test.d.ts.map +0 -1
  164. package/dist/form/Form.a11y.test.js +0 -36
  165. package/dist/form/FormA11yFixture.svelte +0 -31
  166. package/dist/form/FormA11yFixture.svelte.d.ts +0 -19
  167. package/dist/form/FormA11yFixture.svelte.d.ts.map +0 -1
  168. package/dist/grid/Grid.a11y.test.d.ts +0 -2
  169. package/dist/grid/Grid.a11y.test.d.ts.map +0 -1
  170. package/dist/grid/Grid.a11y.test.js +0 -13
  171. package/dist/grid/GridA11yFixture.svelte +0 -12
  172. package/dist/grid/GridA11yFixture.svelte.d.ts +0 -19
  173. package/dist/grid/GridA11yFixture.svelte.d.ts.map +0 -1
  174. package/dist/highlight/Highlight.a11y.test.d.ts +0 -2
  175. package/dist/highlight/Highlight.a11y.test.d.ts.map +0 -1
  176. package/dist/highlight/Highlight.a11y.test.js +0 -23
  177. package/dist/image/Image.a11y.test.d.ts +0 -2
  178. package/dist/image/Image.a11y.test.d.ts.map +0 -1
  179. package/dist/image/Image.a11y.test.js +0 -27
  180. package/dist/image/ImagePreview.kbd.test.d.ts +0 -2
  181. package/dist/image/ImagePreview.kbd.test.d.ts.map +0 -1
  182. package/dist/image/ImagePreview.kbd.test.js +0 -44
  183. package/dist/image/ImagePreviewKbdFixture.svelte +0 -32
  184. package/dist/image/ImagePreviewKbdFixture.svelte.d.ts +0 -4
  185. package/dist/image/ImagePreviewKbdFixture.svelte.d.ts.map +0 -1
  186. package/dist/input/Input.a11y.test.d.ts +0 -2
  187. package/dist/input/Input.a11y.test.d.ts.map +0 -1
  188. package/dist/input/Input.a11y.test.js +0 -53
  189. package/dist/input-number/InputNumber.a11y.test.d.ts +0 -2
  190. package/dist/input-number/InputNumber.a11y.test.d.ts.map +0 -1
  191. package/dist/input-number/InputNumber.a11y.test.js +0 -40
  192. package/dist/input-number/InputNumber.kbd.test.d.ts +0 -2
  193. package/dist/input-number/InputNumber.kbd.test.d.ts.map +0 -1
  194. package/dist/input-number/InputNumber.kbd.test.js +0 -35
  195. package/dist/input-number/InputNumberKbdFixture.svelte +0 -15
  196. package/dist/input-number/InputNumberKbdFixture.svelte.d.ts +0 -19
  197. package/dist/input-number/InputNumberKbdFixture.svelte.d.ts.map +0 -1
  198. package/dist/layout/Layout.a11y.test.d.ts +0 -2
  199. package/dist/layout/Layout.a11y.test.d.ts.map +0 -1
  200. package/dist/layout/Layout.a11y.test.js +0 -32
  201. package/dist/layout/LayoutA11yFixture.svelte +0 -21
  202. package/dist/layout/LayoutA11yFixture.svelte.d.ts +0 -7
  203. package/dist/layout/LayoutA11yFixture.svelte.d.ts.map +0 -1
  204. package/dist/list/List.a11y.test.d.ts +0 -2
  205. package/dist/list/List.a11y.test.d.ts.map +0 -1
  206. package/dist/list/List.a11y.test.js +0 -62
  207. package/dist/list/List.bench.d.ts +0 -2
  208. package/dist/list/List.bench.d.ts.map +0 -1
  209. package/dist/list/List.bench.js +0 -16
  210. package/dist/list/List.kbd.test.d.ts +0 -2
  211. package/dist/list/List.kbd.test.d.ts.map +0 -1
  212. package/dist/list/List.kbd.test.js +0 -60
  213. package/dist/list/ListA11yFixture.svelte +0 -38
  214. package/dist/list/ListA11yFixture.svelte.d.ts +0 -10
  215. package/dist/list/ListA11yFixture.svelte.d.ts.map +0 -1
  216. package/dist/list/ListBenchFixture.svelte +0 -22
  217. package/dist/list/ListBenchFixture.svelte.d.ts +0 -7
  218. package/dist/list/ListBenchFixture.svelte.d.ts.map +0 -1
  219. package/dist/list/ListKbdFixture.svelte +0 -31
  220. package/dist/list/ListKbdFixture.svelte.d.ts +0 -19
  221. package/dist/list/ListKbdFixture.svelte.d.ts.map +0 -1
  222. package/dist/menu/Menu.a11y.test.d.ts +0 -2
  223. package/dist/menu/Menu.a11y.test.d.ts.map +0 -1
  224. package/dist/menu/Menu.a11y.test.js +0 -49
  225. package/dist/menu/Menu.kbd.test.d.ts +0 -2
  226. package/dist/menu/Menu.kbd.test.d.ts.map +0 -1
  227. package/dist/menu/Menu.kbd.test.js +0 -56
  228. package/dist/menu/MenuKbdFixture.svelte +0 -22
  229. package/dist/menu/MenuKbdFixture.svelte.d.ts +0 -19
  230. package/dist/menu/MenuKbdFixture.svelte.d.ts.map +0 -1
  231. package/dist/meta.test.d.ts +0 -2
  232. package/dist/meta.test.d.ts.map +0 -1
  233. package/dist/meta.test.js +0 -164
  234. package/dist/modal/Modal.a11y.test.d.ts +0 -2
  235. package/dist/modal/Modal.a11y.test.d.ts.map +0 -1
  236. package/dist/modal/Modal.a11y.test.js +0 -38
  237. package/dist/modal/Modal.kbd.test.d.ts +0 -2
  238. package/dist/modal/Modal.kbd.test.d.ts.map +0 -1
  239. package/dist/modal/Modal.kbd.test.js +0 -52
  240. package/dist/modal/ModalKbdFixture.svelte +0 -24
  241. package/dist/modal/ModalKbdFixture.svelte.d.ts +0 -4
  242. package/dist/modal/ModalKbdFixture.svelte.d.ts.map +0 -1
  243. package/dist/notification/NotificationItem.a11y.test.d.ts +0 -2
  244. package/dist/notification/NotificationItem.a11y.test.d.ts.map +0 -1
  245. package/dist/notification/NotificationItem.a11y.test.js +0 -64
  246. package/dist/overflow-list/OverflowList.a11y.test.d.ts +0 -2
  247. package/dist/overflow-list/OverflowList.a11y.test.d.ts.map +0 -1
  248. package/dist/overflow-list/OverflowList.a11y.test.js +0 -41
  249. package/dist/overflow-list/OverflowList.kbd.test.d.ts +0 -2
  250. package/dist/overflow-list/OverflowList.kbd.test.d.ts.map +0 -1
  251. package/dist/overflow-list/OverflowList.kbd.test.js +0 -28
  252. package/dist/overflow-list/OverflowListA11yFixture.svelte +0 -22
  253. package/dist/overflow-list/OverflowListA11yFixture.svelte.d.ts +0 -8
  254. package/dist/overflow-list/OverflowListA11yFixture.svelte.d.ts.map +0 -1
  255. package/dist/overflow-list/OverflowListKbdFixture.svelte +0 -21
  256. package/dist/overflow-list/OverflowListKbdFixture.svelte.d.ts +0 -19
  257. package/dist/overflow-list/OverflowListKbdFixture.svelte.d.ts.map +0 -1
  258. package/dist/pagination/Pagination.a11y.test.d.ts +0 -2
  259. package/dist/pagination/Pagination.a11y.test.d.ts.map +0 -1
  260. package/dist/pagination/Pagination.a11y.test.js +0 -57
  261. package/dist/pagination/Pagination.kbd.test.d.ts +0 -2
  262. package/dist/pagination/Pagination.kbd.test.d.ts.map +0 -1
  263. package/dist/pagination/Pagination.kbd.test.js +0 -54
  264. package/dist/pagination/PaginationKbdFixture.svelte +0 -15
  265. package/dist/pagination/PaginationKbdFixture.svelte.d.ts +0 -19
  266. package/dist/pagination/PaginationKbdFixture.svelte.d.ts.map +0 -1
  267. package/dist/popconfirm/Popconfirm.a11y.test.d.ts +0 -2
  268. package/dist/popconfirm/Popconfirm.a11y.test.d.ts.map +0 -1
  269. package/dist/popconfirm/Popconfirm.a11y.test.js +0 -37
  270. package/dist/popconfirm/Popconfirm.kbd.test.d.ts +0 -2
  271. package/dist/popconfirm/Popconfirm.kbd.test.d.ts.map +0 -1
  272. package/dist/popconfirm/Popconfirm.kbd.test.js +0 -36
  273. package/dist/popconfirm/PopconfirmA11yFixture.svelte +0 -34
  274. package/dist/popconfirm/PopconfirmA11yFixture.svelte.d.ts +0 -11
  275. package/dist/popconfirm/PopconfirmA11yFixture.svelte.d.ts.map +0 -1
  276. package/dist/popconfirm/PopconfirmKbdFixture.svelte +0 -17
  277. package/dist/popconfirm/PopconfirmKbdFixture.svelte.d.ts +0 -19
  278. package/dist/popconfirm/PopconfirmKbdFixture.svelte.d.ts.map +0 -1
  279. package/dist/popover/Popover.a11y.test.d.ts +0 -2
  280. package/dist/popover/Popover.a11y.test.d.ts.map +0 -1
  281. package/dist/popover/Popover.a11y.test.js +0 -47
  282. package/dist/popover/Popover.kbd.test.d.ts +0 -2
  283. package/dist/popover/Popover.kbd.test.d.ts.map +0 -1
  284. package/dist/popover/Popover.kbd.test.js +0 -36
  285. package/dist/popover/PopoverA11yFixture.svelte +0 -35
  286. package/dist/popover/PopoverA11yFixture.svelte.d.ts +0 -11
  287. package/dist/popover/PopoverA11yFixture.svelte.d.ts.map +0 -1
  288. package/dist/popover/PopoverKbdFixture.svelte +0 -18
  289. package/dist/popover/PopoverKbdFixture.svelte.d.ts +0 -19
  290. package/dist/popover/PopoverKbdFixture.svelte.d.ts.map +0 -1
  291. package/dist/progress/Progress.a11y.test.d.ts +0 -2
  292. package/dist/progress/Progress.a11y.test.d.ts.map +0 -1
  293. package/dist/progress/Progress.a11y.test.js +0 -34
  294. package/dist/radio/RadioGroup.a11y.test.d.ts +0 -2
  295. package/dist/radio/RadioGroup.a11y.test.d.ts.map +0 -1
  296. package/dist/radio/RadioGroup.a11y.test.js +0 -38
  297. package/dist/radio/RadioGroup.kbd.test.d.ts +0 -2
  298. package/dist/radio/RadioGroup.kbd.test.d.ts.map +0 -1
  299. package/dist/radio/RadioGroup.kbd.test.js +0 -59
  300. package/dist/radio/RadioGroupKbdFixture.svelte +0 -21
  301. package/dist/radio/RadioGroupKbdFixture.svelte.d.ts +0 -19
  302. package/dist/radio/RadioGroupKbdFixture.svelte.d.ts.map +0 -1
  303. package/dist/rating/Rating.a11y.test.d.ts +0 -2
  304. package/dist/rating/Rating.a11y.test.d.ts.map +0 -1
  305. package/dist/rating/Rating.a11y.test.js +0 -38
  306. package/dist/rating/Rating.kbd.test.d.ts +0 -2
  307. package/dist/rating/Rating.kbd.test.d.ts.map +0 -1
  308. package/dist/rating/Rating.kbd.test.js +0 -41
  309. package/dist/rating/RatingKbdFixture.svelte +0 -15
  310. package/dist/rating/RatingKbdFixture.svelte.d.ts +0 -19
  311. package/dist/rating/RatingKbdFixture.svelte.d.ts.map +0 -1
  312. package/dist/select/Select.a11y.test.d.ts +0 -2
  313. package/dist/select/Select.a11y.test.d.ts.map +0 -1
  314. package/dist/select/Select.a11y.test.js +0 -53
  315. package/dist/select/Select.kbd.test.d.ts +0 -2
  316. package/dist/select/Select.kbd.test.d.ts.map +0 -1
  317. package/dist/select/Select.kbd.test.js +0 -47
  318. package/dist/select/SelectKbdFixture.svelte +0 -29
  319. package/dist/select/SelectKbdFixture.svelte.d.ts +0 -4
  320. package/dist/select/SelectKbdFixture.svelte.d.ts.map +0 -1
  321. package/dist/side-sheet/SideSheet.a11y.test.d.ts +0 -2
  322. package/dist/side-sheet/SideSheet.a11y.test.d.ts.map +0 -1
  323. package/dist/side-sheet/SideSheet.a11y.test.js +0 -46
  324. package/dist/side-sheet/SideSheet.kbd.test.d.ts +0 -2
  325. package/dist/side-sheet/SideSheet.kbd.test.d.ts.map +0 -1
  326. package/dist/side-sheet/SideSheet.kbd.test.js +0 -49
  327. package/dist/side-sheet/SideSheetKbdFixture.svelte +0 -30
  328. package/dist/side-sheet/SideSheetKbdFixture.svelte.d.ts +0 -4
  329. package/dist/side-sheet/SideSheetKbdFixture.svelte.d.ts.map +0 -1
  330. package/dist/skeleton/Skeleton.a11y.test.d.ts +0 -2
  331. package/dist/skeleton/Skeleton.a11y.test.d.ts.map +0 -1
  332. package/dist/skeleton/Skeleton.a11y.test.js +0 -32
  333. package/dist/slider/Slider.a11y.test.d.ts +0 -2
  334. package/dist/slider/Slider.a11y.test.d.ts.map +0 -1
  335. package/dist/slider/Slider.a11y.test.js +0 -40
  336. package/dist/slider/Slider.kbd.test.d.ts +0 -2
  337. package/dist/slider/Slider.kbd.test.d.ts.map +0 -1
  338. package/dist/slider/Slider.kbd.test.js +0 -63
  339. package/dist/slider/SliderKbdFixture.svelte +0 -21
  340. package/dist/slider/SliderKbdFixture.svelte.d.ts +0 -19
  341. package/dist/slider/SliderKbdFixture.svelte.d.ts.map +0 -1
  342. package/dist/space/Space.a11y.test.d.ts +0 -2
  343. package/dist/space/Space.a11y.test.d.ts.map +0 -1
  344. package/dist/space/Space.a11y.test.js +0 -20
  345. package/dist/space/SpaceA11yFixture.svelte +0 -17
  346. package/dist/space/SpaceA11yFixture.svelte.d.ts +0 -7
  347. package/dist/space/SpaceA11yFixture.svelte.d.ts.map +0 -1
  348. package/dist/spin/Spin.a11y.test.d.ts +0 -2
  349. package/dist/spin/Spin.a11y.test.d.ts.map +0 -1
  350. package/dist/spin/Spin.a11y.test.js +0 -27
  351. package/dist/spin/SpinA11yFixture.svelte +0 -18
  352. package/dist/spin/SpinA11yFixture.svelte.d.ts +0 -7
  353. package/dist/spin/SpinA11yFixture.svelte.d.ts.map +0 -1
  354. package/dist/steps/Steps.a11y.test.d.ts +0 -2
  355. package/dist/steps/Steps.a11y.test.d.ts.map +0 -1
  356. package/dist/steps/Steps.a11y.test.js +0 -35
  357. package/dist/steps/Steps.kbd.test.d.ts +0 -2
  358. package/dist/steps/Steps.kbd.test.d.ts.map +0 -1
  359. package/dist/steps/Steps.kbd.test.js +0 -59
  360. package/dist/steps/StepsKbdFixture.svelte +0 -21
  361. package/dist/steps/StepsKbdFixture.svelte.d.ts +0 -19
  362. package/dist/steps/StepsKbdFixture.svelte.d.ts.map +0 -1
  363. package/dist/switch/Switch.a11y.test.d.ts +0 -2
  364. package/dist/switch/Switch.a11y.test.d.ts.map +0 -1
  365. package/dist/switch/Switch.a11y.test.js +0 -42
  366. package/dist/switch/Switch.kbd.test.d.ts +0 -2
  367. package/dist/switch/Switch.kbd.test.d.ts.map +0 -1
  368. package/dist/switch/Switch.kbd.test.js +0 -34
  369. package/dist/switch/SwitchKbdFixture.svelte +0 -22
  370. package/dist/switch/SwitchKbdFixture.svelte.d.ts +0 -4
  371. package/dist/switch/SwitchKbdFixture.svelte.d.ts.map +0 -1
  372. package/dist/table/Table.a11y.test.d.ts +0 -2
  373. package/dist/table/Table.a11y.test.d.ts.map +0 -1
  374. package/dist/table/Table.a11y.test.js +0 -59
  375. package/dist/table/Table.bench.d.ts +0 -2
  376. package/dist/table/Table.bench.d.ts.map +0 -1
  377. package/dist/table/Table.bench.js +0 -31
  378. package/dist/table/Table.kbd.test.d.ts +0 -2
  379. package/dist/table/Table.kbd.test.d.ts.map +0 -1
  380. package/dist/table/Table.kbd.test.js +0 -74
  381. package/dist/table/TableKbdFixture.svelte +0 -35
  382. package/dist/table/TableKbdFixture.svelte.d.ts +0 -19
  383. package/dist/table/TableKbdFixture.svelte.d.ts.map +0 -1
  384. package/dist/table/grid-nav.test.d.ts +0 -2
  385. package/dist/table/grid-nav.test.d.ts.map +0 -1
  386. package/dist/table/grid-nav.test.js +0 -133
  387. package/dist/tabs/Tabs.a11y.test.d.ts +0 -2
  388. package/dist/tabs/Tabs.a11y.test.d.ts.map +0 -1
  389. package/dist/tabs/Tabs.a11y.test.js +0 -43
  390. package/dist/tabs/Tabs.kbd.test.d.ts +0 -2
  391. package/dist/tabs/Tabs.kbd.test.d.ts.map +0 -1
  392. package/dist/tabs/Tabs.kbd.test.js +0 -63
  393. package/dist/tabs/TabsA11yFixture.svelte +0 -20
  394. package/dist/tabs/TabsA11yFixture.svelte.d.ts +0 -8
  395. package/dist/tabs/TabsA11yFixture.svelte.d.ts.map +0 -1
  396. package/dist/tabs/TabsKbdFixture.svelte +0 -25
  397. package/dist/tabs/TabsKbdFixture.svelte.d.ts +0 -7
  398. package/dist/tabs/TabsKbdFixture.svelte.d.ts.map +0 -1
  399. package/dist/tag/Tag.a11y.test.d.ts +0 -2
  400. package/dist/tag/Tag.a11y.test.d.ts.map +0 -1
  401. package/dist/tag/Tag.a11y.test.js +0 -30
  402. package/dist/tag/TagA11yFixture.svelte +0 -18
  403. package/dist/tag/TagA11yFixture.svelte.d.ts +0 -8
  404. package/dist/tag/TagA11yFixture.svelte.d.ts.map +0 -1
  405. package/dist/tag-input/TagInput.a11y.test.d.ts +0 -2
  406. package/dist/tag-input/TagInput.a11y.test.d.ts.map +0 -1
  407. package/dist/tag-input/TagInput.a11y.test.js +0 -38
  408. package/dist/tag-input/reorder.test.d.ts +0 -2
  409. package/dist/tag-input/reorder.test.d.ts.map +0 -1
  410. package/dist/tag-input/reorder.test.js +0 -48
  411. package/dist/test-utils/LocaleHarness.svelte +0 -29
  412. package/dist/test-utils/LocaleHarness.svelte.d.ts +0 -11
  413. package/dist/test-utils/LocaleHarness.svelte.d.ts.map +0 -1
  414. package/dist/test-utils/a11y.d.ts +0 -36
  415. package/dist/test-utils/a11y.d.ts.map +0 -1
  416. package/dist/test-utils/a11y.js +0 -68
  417. package/dist/test-utils/kbd.d.ts +0 -26
  418. package/dist/test-utils/kbd.d.ts.map +0 -1
  419. package/dist/test-utils/kbd.js +0 -38
  420. package/dist/textarea/TextArea.a11y.test.d.ts +0 -2
  421. package/dist/textarea/TextArea.a11y.test.d.ts.map +0 -1
  422. package/dist/textarea/TextArea.a11y.test.js +0 -41
  423. package/dist/time-picker/TimePicker.a11y.test.d.ts +0 -2
  424. package/dist/time-picker/TimePicker.a11y.test.d.ts.map +0 -1
  425. package/dist/time-picker/TimePicker.a11y.test.js +0 -42
  426. package/dist/time-picker/TimePicker.kbd.test.d.ts +0 -2
  427. package/dist/time-picker/TimePicker.kbd.test.d.ts.map +0 -1
  428. package/dist/time-picker/TimePicker.kbd.test.js +0 -59
  429. package/dist/time-picker/TimePickerKbdFixture.svelte +0 -23
  430. package/dist/time-picker/TimePickerKbdFixture.svelte.d.ts +0 -4
  431. package/dist/time-picker/TimePickerKbdFixture.svelte.d.ts.map +0 -1
  432. package/dist/timeline/Timeline.a11y.test.d.ts +0 -2
  433. package/dist/timeline/Timeline.a11y.test.d.ts.map +0 -1
  434. package/dist/timeline/Timeline.a11y.test.js +0 -51
  435. package/dist/toast/Toast.a11y.test.d.ts +0 -2
  436. package/dist/toast/Toast.a11y.test.d.ts.map +0 -1
  437. package/dist/toast/Toast.a11y.test.js +0 -58
  438. package/dist/tooltip/Tooltip.a11y.test.d.ts +0 -2
  439. package/dist/tooltip/Tooltip.a11y.test.d.ts.map +0 -1
  440. package/dist/tooltip/Tooltip.a11y.test.js +0 -33
  441. package/dist/tooltip/Tooltip.kbd.test.d.ts +0 -2
  442. package/dist/tooltip/Tooltip.kbd.test.d.ts.map +0 -1
  443. package/dist/tooltip/Tooltip.kbd.test.js +0 -31
  444. package/dist/tooltip/TooltipA11yFixture.svelte +0 -31
  445. package/dist/tooltip/TooltipA11yFixture.svelte.d.ts +0 -11
  446. package/dist/tooltip/TooltipA11yFixture.svelte.d.ts.map +0 -1
  447. package/dist/tooltip/TooltipKbdFixture.svelte +0 -16
  448. package/dist/tooltip/TooltipKbdFixture.svelte.d.ts +0 -19
  449. package/dist/tooltip/TooltipKbdFixture.svelte.d.ts.map +0 -1
  450. package/dist/transfer/Transfer.a11y.test.d.ts +0 -2
  451. package/dist/transfer/Transfer.a11y.test.d.ts.map +0 -1
  452. package/dist/transfer/Transfer.a11y.test.js +0 -59
  453. package/dist/transfer/Transfer.kbd.test.d.ts +0 -2
  454. package/dist/transfer/Transfer.kbd.test.d.ts.map +0 -1
  455. package/dist/transfer/Transfer.kbd.test.js +0 -64
  456. package/dist/transfer/TransferKbdFixture.svelte +0 -23
  457. package/dist/transfer/TransferKbdFixture.svelte.d.ts +0 -4
  458. package/dist/transfer/TransferKbdFixture.svelte.d.ts.map +0 -1
  459. package/dist/transfer/group.test.d.ts +0 -2
  460. package/dist/transfer/group.test.d.ts.map +0 -1
  461. package/dist/transfer/group.test.js +0 -47
  462. package/dist/transfer/reorder.test.d.ts +0 -2
  463. package/dist/transfer/reorder.test.d.ts.map +0 -1
  464. package/dist/transfer/reorder.test.js +0 -42
  465. package/dist/transfer/tree.test.d.ts +0 -2
  466. package/dist/transfer/tree.test.d.ts.map +0 -1
  467. package/dist/transfer/tree.test.js +0 -39
  468. package/dist/tree/Tree.a11y.test.d.ts +0 -2
  469. package/dist/tree/Tree.a11y.test.d.ts.map +0 -1
  470. package/dist/tree/Tree.a11y.test.js +0 -56
  471. package/dist/tree/Tree.kbd.test.d.ts +0 -2
  472. package/dist/tree/Tree.kbd.test.d.ts.map +0 -1
  473. package/dist/tree/Tree.kbd.test.js +0 -78
  474. package/dist/tree/TreeKbdFixture.svelte +0 -30
  475. package/dist/tree/TreeKbdFixture.svelte.d.ts +0 -19
  476. package/dist/tree/TreeKbdFixture.svelte.d.ts.map +0 -1
  477. package/dist/tree-select/TreeSelect.a11y.test.d.ts +0 -2
  478. package/dist/tree-select/TreeSelect.a11y.test.d.ts.map +0 -1
  479. package/dist/tree-select/TreeSelect.a11y.test.js +0 -48
  480. package/dist/tree-select/TreeSelect.kbd.test.d.ts +0 -2
  481. package/dist/tree-select/TreeSelect.kbd.test.d.ts.map +0 -1
  482. package/dist/tree-select/TreeSelect.kbd.test.js +0 -46
  483. package/dist/tree-select/TreeSelectKbdFixture.svelte +0 -20
  484. package/dist/tree-select/TreeSelectKbdFixture.svelte.d.ts +0 -19
  485. package/dist/tree-select/TreeSelectKbdFixture.svelte.d.ts.map +0 -1
  486. package/dist/tree-select/virtual.test.d.ts +0 -2
  487. package/dist/tree-select/virtual.test.d.ts.map +0 -1
  488. package/dist/tree-select/virtual.test.js +0 -86
  489. package/dist/typography/Typography.a11y.test.d.ts +0 -2
  490. package/dist/typography/Typography.a11y.test.d.ts.map +0 -1
  491. package/dist/typography/Typography.a11y.test.js +0 -31
  492. package/dist/typography/TypographyA11yFixture.svelte +0 -27
  493. package/dist/typography/TypographyA11yFixture.svelte.d.ts +0 -9
  494. package/dist/typography/TypographyA11yFixture.svelte.d.ts.map +0 -1
  495. package/dist/upload/Upload.a11y.test.d.ts +0 -2
  496. package/dist/upload/Upload.a11y.test.d.ts.map +0 -1
  497. package/dist/upload/Upload.a11y.test.js +0 -49
  498. package/dist/upload/UploadA11yFixture.svelte +0 -23
  499. package/dist/upload/UploadA11yFixture.svelte.d.ts +0 -10
  500. package/dist/upload/UploadA11yFixture.svelte.d.ts.map +0 -1
@@ -1,39 +0,0 @@
1
- // Dropdown a11y:触发器 role=button(aria-haspopup=menu/expanded/controls),
2
- // 浮层菜单 portal 到 document.body(use:floating),role=menu + role=menuitem。
3
- // 参照 Modal.a11y.test.ts:浮层在 document.body 全局查询并扫描。
4
- // 不测真实键盘 roving/hover(jsdom 限制,受控 open 强制打开再断言静态 ARIA)。
5
- // 经 DropdownA11yFixture 渲染(不经 LocaleHarness:harness 注入的 children 会命中
6
- // Dropdown 的 {#if children} 分支而跳过 items 渲染)。
7
- import { describe, it, expect } from 'vitest';
8
- import { render } from '@testing-library/svelte';
9
- import { expectNoAxeViolations } from '../test-utils/a11y.js';
10
- import Fixture from './DropdownA11yFixture.svelte';
11
- const ITEMS = [
12
- { key: 'edit', label: 'Edit' },
13
- { key: 'dup', label: 'Duplicate' },
14
- { type: 'divider' },
15
- { key: 'del', label: 'Delete', disabled: true },
16
- ];
17
- describe('Dropdown a11y', () => {
18
- it('默认(收起):触发器 role=button + aria-haspopup=menu,无 axe violations', async () => {
19
- const { container } = render(Fixture, { props: { items: ITEMS } });
20
- const trigger = container.querySelector('.cd-dropdown__trigger');
21
- expect(trigger?.getAttribute('role')).toBe('button');
22
- expect(trigger?.getAttribute('aria-haspopup')).toBe('menu');
23
- expect(trigger?.getAttribute('aria-expanded')).toBe('false');
24
- await expectNoAxeViolations(container);
25
- });
26
- it('open=true:菜单 role=menu(aria-labelledby 指向触发器)+ role=menuitem,无 axe violations', async () => {
27
- render(Fixture, { props: { items: ITEMS, open: true, trigger: 'click' } });
28
- // 菜单 portal 到 body —— 全局查询。
29
- const menu = document.querySelector('[role="menu"]');
30
- expect(menu).not.toBeNull();
31
- // aria-labelledby 指向触发器 id,且该元素存在。
32
- const labelledby = menu?.getAttribute('aria-labelledby');
33
- expect(labelledby).toBeTruthy();
34
- expect(labelledby ? document.getElementById(labelledby) : null).not.toBeNull();
35
- const items = document.querySelectorAll('[role="menuitem"]');
36
- expect(items.length).toBe(3);
37
- await expectNoAxeViolations(document.body);
38
- });
39
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Dropdown.kbd.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dropdown.kbd.test.d.ts","sourceRoot":"","sources":["../../src/dropdown/Dropdown.kbd.test.ts"],"names":[],"mappings":""}
@@ -1,47 +0,0 @@
1
- // Dropdown 键盘 e2e(browser project / 真实 chromium)。
2
- // 测真实焦点 roving + Esc 关闭——浮层菜单 portal 到 body,role=menu/menuitem:
3
- // 1. 触发器(role=button)按 ArrowDown 打开菜单并把真实焦点送到首个 menuitem。
4
- // 2. ↑↓ 真实移动焦点到相邻 menuitem(环绕)。
5
- // 3. Esc 关闭菜单(destroyOnClose → 浮层从 document 移除),aria-expanded 复位。
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 DropdownKbdFixture from './DropdownKbdFixture.svelte';
12
- function loc(el) {
13
- return page.elementLocator(el);
14
- }
15
- describe('Dropdown 键盘 e2e(菜单 roving + Esc)', () => {
16
- it('ArrowDown 打开并聚焦首项;↑↓ 移动焦点;Esc 关闭复位 aria-expanded', async () => {
17
- const { baseElement } = renderKbdFixture(DropdownKbdFixture);
18
- const trigger = baseElement.querySelector('[role="button"]');
19
- expect(trigger).not.toBeNull();
20
- expect(trigger.getAttribute('aria-expanded')).toBe('false');
21
- // 1. 聚焦触发器并按 ArrowDown:打开菜单 + 把真实焦点送到首个 menuitem(rAF 后就绪)。
22
- trigger.focus();
23
- await expect.element(loc(trigger)).toHaveFocus();
24
- await userEvent.keyboard('{ArrowDown}');
25
- // 菜单 portal 到 body —— 在 document 范围查询。
26
- await expect.element(page.getByRole('menu')).toBeInTheDocument();
27
- expect(trigger.getAttribute('aria-expanded')).toBe('true');
28
- const items = Array.from(document.querySelectorAll('[role="menuitem"]'));
29
- expect(items.length).toBe(3);
30
- const [edit, dup, del] = items;
31
- // 真实焦点已落到首个 menuitem。
32
- await expect.element(loc(edit)).toHaveFocus();
33
- // 2. ↓ 移动到下一项;↑ 回上一项;末项 ↓ 环绕回首项。
34
- await userEvent.keyboard('{ArrowDown}');
35
- await expect.element(loc(dup)).toHaveFocus();
36
- await userEvent.keyboard('{ArrowDown}');
37
- await expect.element(loc(del)).toHaveFocus();
38
- await userEvent.keyboard('{ArrowDown}');
39
- await expect.element(loc(edit)).toHaveFocus();
40
- await userEvent.keyboard('{ArrowUp}');
41
- await expect.element(loc(del)).toHaveFocus();
42
- // 3. Esc 关闭:destroyOnClose → 菜单从 document 移除;trigger aria-expanded 复位。
43
- await userEvent.keyboard('{Escape}');
44
- await expect.element(page.getByRole('menu')).not.toBeInTheDocument();
45
- expect(trigger.getAttribute('aria-expanded')).toBe('false');
46
- });
47
- });
@@ -1,24 +0,0 @@
1
- <!--
2
- Dropdown a11y 测试夹具:在 LocaleProvider 内渲染 Dropdown,仅传 items(不传 children)。
3
- 说明:LocaleHarness 总会注入一个 children 插槽,会命中 Dropdown 的 {#if children}
4
- 分支而跳过 items 渲染,故这里直接包 LocaleProvider 渲染、不经 harness。
5
- 仅供 Dropdown.a11y.test.ts 使用,不对外导出。
6
- -->
7
- <script lang="ts">
8
- import type { DropdownItem } from './types.js';
9
- import { LocaleProvider } from '../locale-provider/index.js';
10
- import Dropdown from './Dropdown.svelte';
11
-
12
- interface Props {
13
- items?: DropdownItem[];
14
- open?: boolean;
15
- trigger?: 'hover' | 'click' | 'contextMenu';
16
- locale?: string;
17
- }
18
-
19
- let { items = [], open = false, trigger = 'click', locale = 'en_US' }: Props = $props();
20
- </script>
21
-
22
- <LocaleProvider {locale}>
23
- <Dropdown {items} {open} {trigger} />
24
- </LocaleProvider>
@@ -1,11 +0,0 @@
1
- import type { DropdownItem } from './types.js';
2
- interface Props {
3
- items?: DropdownItem[];
4
- open?: boolean;
5
- trigger?: 'hover' | 'click' | 'contextMenu';
6
- locale?: string;
7
- }
8
- declare const DropdownA11yFixture: import("svelte").Component<Props, {}, "">;
9
- type DropdownA11yFixture = ReturnType<typeof DropdownA11yFixture>;
10
- export default DropdownA11yFixture;
11
- //# sourceMappingURL=DropdownA11yFixture.svelte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropdownA11yFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/dropdown/DropdownA11yFixture.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK7C,UAAU,KAAK;IACb,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBH,QAAA,MAAM,mBAAmB,2CAAwC,CAAC;AAClE,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -1,26 +0,0 @@
1
- <!--
2
- 仅供 Dropdown.kbd.test.ts(browser project)使用的菜单 roving + Esc 键盘 e2e 夹具。
3
- trigger='click'(role=button),键盘可用 Enter/Space/ArrowDown 打开并聚焦首项;
4
- 浮层菜单 portal 到 document.body(use:floating),role=menu + role=menuitem。
5
- destroyOnClose=true:关闭即 {#if} 卸载浮层,便于断言「菜单消失」。
6
- 验证:打开后 ↑↓ 真实移动焦点到相邻 menuitem;Esc 关闭浮层并归还焦点触发器。
7
- -->
8
- <script lang="ts">
9
- import type { DropdownItem } from './types.js';
10
- import { LocaleProvider } from '../locale-provider/index.js';
11
- import Dropdown from './Dropdown.svelte';
12
-
13
- const items: DropdownItem[] = [
14
- { key: 'edit', label: 'Edit' },
15
- { key: 'dup', label: 'Duplicate' },
16
- { key: 'del', label: 'Delete' },
17
- ];
18
- </script>
19
-
20
- <LocaleProvider locale="en_US">
21
- <Dropdown {items} trigger="click" destroyOnClose>
22
- {#snippet triggerContent()}
23
- <span data-testid="trigger-label">Actions</span>
24
- {/snippet}
25
- </Dropdown>
26
- </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 DropdownKbdFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
- [evt: string]: CustomEvent<any>;
16
- }, {}, {}, string>;
17
- type DropdownKbdFixture = InstanceType<typeof DropdownKbdFixture>;
18
- export default DropdownKbdFixture;
19
- //# sourceMappingURL=DropdownKbdFixture.svelte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropdownKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/dropdown/DropdownKbdFixture.svelte.ts"],"names":[],"mappings":"AA8BA,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,kBAAkB;;kBAA+E,CAAC;AACtF,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACpE,eAAe,kBAAkB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../src/dropdown/types.test.ts"],"names":[],"mappings":""}
@@ -1,40 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { isDropdownDivider, isDropdownGroup, hasDropdownChildren, } from './types.js';
3
- describe('dropdown type guards', () => {
4
- const leaf = { key: 'a', label: 'A' };
5
- const submenu = {
6
- key: 'b',
7
- label: 'B',
8
- children: [{ key: 'b1', label: 'B1' }],
9
- };
10
- const divider = { type: 'divider' };
11
- const group = {
12
- type: 'group',
13
- label: 'G',
14
- children: [{ key: 'g1', label: 'G1' }],
15
- };
16
- it('isDropdownDivider only matches divider nodes', () => {
17
- expect(isDropdownDivider(divider)).toBe(true);
18
- expect(isDropdownDivider(leaf)).toBe(false);
19
- expect(isDropdownDivider(group)).toBe(false);
20
- expect(isDropdownDivider(submenu)).toBe(false);
21
- });
22
- it('isDropdownGroup only matches group nodes', () => {
23
- expect(isDropdownGroup(group)).toBe(true);
24
- expect(isDropdownGroup(leaf)).toBe(false);
25
- expect(isDropdownGroup(divider)).toBe(false);
26
- expect(isDropdownGroup(submenu)).toBe(false);
27
- });
28
- it('hasDropdownChildren detects expandable submenu items', () => {
29
- expect(hasDropdownChildren(submenu)).toBe(true);
30
- expect(hasDropdownChildren(leaf)).toBe(false);
31
- expect(hasDropdownChildren({ key: 'c', label: 'C', children: [] })).toBe(false);
32
- });
33
- it('backward compat: a flat item without type is a valid DropdownItem', () => {
34
- const items = [
35
- { key: 'edit', label: '编辑' },
36
- { key: 'del', label: '删除', danger: true, disabled: true },
37
- ];
38
- expect(items.every((i) => !isDropdownDivider(i) && !isDropdownGroup(i))).toBe(true);
39
- });
40
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Empty.a11y.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Empty.a11y.test.d.ts","sourceRoot":"","sources":["../../src/empty/Empty.a11y.test.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- // Empty a11y:预设插画 aria-hidden;外部图片 <img> 带 alt。
2
- import { describe, it, expect } from 'vitest';
3
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
4
- import Empty from './Empty.svelte';
5
- describe('Empty a11y', () => {
6
- it('预设插画:image 容器 aria-hidden,无 axe violations', async () => {
7
- const { container } = renderWithLocale(Empty, {
8
- props: { image: 'noData', description: 'No data available' },
9
- });
10
- const imageBox = container.querySelector('.cd-empty__image');
11
- expect(imageBox?.getAttribute('aria-hidden')).toBe('true');
12
- await expectNoAxeViolations(container);
13
- });
14
- it('外部图片 URL:<img> 带 alt(取标题/空串),无 axe violations', async () => {
15
- const { container } = renderWithLocale(Empty, {
16
- props: { image: 'https://example.com/empty.png', title: 'Nothing here' },
17
- });
18
- const img = container.querySelector('.cd-empty__img');
19
- expect(img?.getAttribute('alt')).toBe('Nothing here');
20
- await expectNoAxeViolations(container);
21
- });
22
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Form.a11y.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Form.a11y.test.d.ts","sourceRoot":"","sources":["../../src/form/Form.a11y.test.ts"],"names":[],"mappings":""}
@@ -1,36 +0,0 @@
1
- // Form a11y:经 FormA11yFixture 组合 Form.Input + Form.Field 自定义控件。
2
- // 验证 label 关联(<label for> ↔ 控件 id)、required → aria-required、
3
- // validateStatus=error → 控件 aria-invalid、extraText/error → aria-describedby。
4
- // 仅静态 ARIA + axe(不测校验交互)。
5
- import { describe, it, expect } from 'vitest';
6
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
7
- import FormA11yFixture from './FormA11yFixture.svelte';
8
- describe('Form a11y', () => {
9
- it('Form.Input:label 经 for/id 关联到 input,required → aria-required', async () => {
10
- const { container } = renderWithLocale(FormA11yFixture, {});
11
- const nameField = container.querySelector('[data-field="name"]');
12
- expect(nameField).not.toBeNull();
13
- const label = nameField?.querySelector('label');
14
- const input = nameField?.querySelector('input');
15
- expect(label).not.toBeNull();
16
- expect(input).not.toBeNull();
17
- // label[for] 精确指向控件 id(WAI-ARIA 首选关联)。
18
- expect(label?.getAttribute('for')).toBe(input?.getAttribute('id'));
19
- expect(input?.getAttribute('aria-required')).toBe('true');
20
- });
21
- it('Form.Field 自定义控件:validateStatus=error → aria-invalid,describedBy 关联存在的元素', async () => {
22
- const { container } = renderWithLocale(FormA11yFixture, {});
23
- const bioField = container.querySelector('[data-field="bio"]');
24
- expect(bioField).not.toBeNull();
25
- const textarea = bioField?.querySelector('textarea');
26
- expect(textarea?.getAttribute('aria-invalid')).toBe('true');
27
- // aria-describedby 指向实际存在的状态文本元素。
28
- const describedBy = textarea?.getAttribute('aria-describedby');
29
- expect(describedBy).toBeTruthy();
30
- expect(container.querySelector(`#${describedBy}`)).not.toBeNull();
31
- });
32
- it('整个表单:无 axe violations', async () => {
33
- const { container } = renderWithLocale(FormA11yFixture, {});
34
- await expectNoAxeViolations(container);
35
- });
36
- });
@@ -1,31 +0,0 @@
1
- <!--
2
- Form a11y 测试夹具:在 Form 内组合 Form.Input(Field+Input)与一个 Form.Field
3
- 自定义控件,覆盖 label 关联(for/id)、aria-required、aria-describedby、
4
- validateStatus 强制 error → aria-invalid。仅供 Form.a11y.test.ts 使用,不导出。
5
- 通过 renderWithLocale 渲染(harness 会注入空 children 插槽,Form 接受 children 故无碍)。
6
- -->
7
- <script lang="ts">
8
- import { Form } from './index.js';
9
- import TextArea from '../textarea/TextArea.svelte';
10
- </script>
11
-
12
- <Form initValues={{ name: 'Ada', bio: '' }}>
13
- <!-- Form.Input:Field + Input,label 经 for/id 关联,required → aria-required -->
14
- <Form.Input field="name" label="Name" required placeholder="Your name" />
15
-
16
- <!-- Form.Field 自定义控件:validateStatus 强制 error → 控件 aria-invalid,
17
- extraText → aria-describedby 关联 -->
18
- <Form.Field field="bio" label="Bio" validateStatus="error" extraText="Some hint">
19
- {#snippet children({ value, onChange, onBlur, status, id, describedBy, required })}
20
- <TextArea
21
- value={value === undefined ? '' : String(value)}
22
- {id}
23
- status={status === 'error' ? 'error' : 'default'}
24
- ariaLabel="Bio"
25
- {...(describedBy !== undefined ? { ariaDescribedby: describedBy } : {})}
26
- onChange={(v) => onChange(v)}
27
- onBlur={() => onBlur()}
28
- />
29
- {/snippet}
30
- </Form.Field>
31
- </Form>
@@ -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 FormA11yFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
- [evt: string]: CustomEvent<any>;
16
- }, {}, {}, string>;
17
- type FormA11yFixture = InstanceType<typeof FormA11yFixture>;
18
- export default FormA11yFixture;
19
- //# sourceMappingURL=FormA11yFixture.svelte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormA11yFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/form/FormA11yFixture.svelte.ts"],"names":[],"mappings":"AA0BA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,eAAe;;kBAA+E,CAAC;AACnF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAe,eAAe,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Grid.a11y.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Grid.a11y.test.d.ts","sourceRoot":"","sources":["../../src/grid/Grid.a11y.test.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- // Grid a11y:Row + Col 24 栅格。纯布局容器,不引入语义角色。
2
- // 仅断言 axe 0 violations(无特殊 ARIA)。
3
- import { describe, it, expect } from 'vitest';
4
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
5
- import GridFixture from './GridA11yFixture.svelte';
6
- describe('Grid a11y', () => {
7
- it('Row + Col:纯布局无语义角色,无 axe violations', async () => {
8
- const { container } = renderWithLocale(GridFixture, {});
9
- expect(container.querySelector('.cd-row')).not.toBeNull();
10
- expect(container.querySelectorAll('.cd-col').length).toBe(2);
11
- await expectNoAxeViolations(container);
12
- });
13
- });
@@ -1,12 +0,0 @@
1
- <!--
2
- 仅供 Grid.a11y.test.ts 使用的测试夹具:Row + Col 24 栅格。
3
- 纯布局容器,不引入语义角色;本套件只断言 axe 0 violations。
4
- -->
5
- <script lang="ts">
6
- import { Row, Col } from './index.js';
7
- </script>
8
-
9
- <Row gutter={16}>
10
- <Col span={12}>Left column</Col>
11
- <Col span={12}>Right column</Col>
12
- </Row>
@@ -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 GridA11yFixture: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
- [evt: string]: CustomEvent<any>;
16
- }, {}, {}, string>;
17
- type GridA11yFixture = InstanceType<typeof GridA11yFixture>;
18
- export default GridA11yFixture;
19
- //# sourceMappingURL=GridA11yFixture.svelte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GridA11yFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/grid/GridA11yFixture.svelte.ts"],"names":[],"mappings":"AAiBA,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,eAAe;;kBAA+E,CAAC;AACnF,KAAK,eAAe,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,eAAe,eAAe,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Highlight.a11y.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Highlight.a11y.test.d.ts","sourceRoot":"","sources":["../../src/highlight/Highlight.a11y.test.ts"],"names":[],"mappings":""}
@@ -1,23 +0,0 @@
1
- // Highlight a11y:命中片段默认渲染 <mark>,纯文本输出。
2
- import { describe, it, expect } from 'vitest';
3
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
4
- import Highlight from './Highlight.svelte';
5
- describe('Highlight a11y', () => {
6
- it('单关键词:命中渲染 <mark>,无 axe violations', async () => {
7
- const { container } = renderWithLocale(Highlight, {
8
- props: { sourceString: 'The quick brown fox', searchWords: 'quick' },
9
- });
10
- const marks = container.querySelectorAll('mark.cd-highlight__mark');
11
- expect(marks.length).toBe(1);
12
- expect(marks[0]?.textContent).toBe('quick');
13
- await expectNoAxeViolations(container);
14
- });
15
- it('多关键词:多处命中,无 axe violations', async () => {
16
- const { container } = renderWithLocale(Highlight, {
17
- props: { sourceString: 'red green red blue', searchWords: ['red', 'blue'] },
18
- });
19
- const marks = container.querySelectorAll('mark.cd-highlight__mark');
20
- expect(marks.length).toBe(3);
21
- await expectNoAxeViolations(container);
22
- });
23
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Image.a11y.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Image.a11y.test.d.ts","sourceRoot":"","sources":["../../src/image/Image.a11y.test.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- // Image a11y:有意义图带 alt;装饰图(alt='')取 role=presentation。
2
- // jsdom 不真正解码图片,状态停在 loading/placeholder,<img> 与 alt/role 仍可断言。
3
- import { describe, it, expect } from 'vitest';
4
- import { renderWithLocale, expectNoAxeViolations } from '../test-utils/a11y.js';
5
- import Image from './Image.svelte';
6
- // Image 的 src 为必填 prop,与 renderWithLocale 的宽松 AnyComponent 形态不严格兼容
7
- // (exactOptionalPropertyTypes),故转为 helper 接受的构造器类型。
8
- const ImageC = Image;
9
- describe('Image a11y', () => {
10
- it('有意义图:<img> 带 alt,无 axe violations', async () => {
11
- const { container } = renderWithLocale(ImageC, {
12
- props: { src: 'https://example.com/p.png', alt: 'A scenic mountain', lazy: false },
13
- });
14
- const img = container.querySelector('img.cd-image__img');
15
- expect(img?.getAttribute('alt')).toBe('A scenic mountain');
16
- expect(img?.getAttribute('role')).toBeNull();
17
- await expectNoAxeViolations(container);
18
- });
19
- it('装饰图(alt=""):role=presentation,无 axe violations', async () => {
20
- const { container } = renderWithLocale(ImageC, {
21
- props: { src: 'https://example.com/deco.png', alt: '', lazy: false },
22
- });
23
- const img = container.querySelector('img.cd-image__img');
24
- expect(img?.getAttribute('role')).toBe('presentation');
25
- await expectNoAxeViolations(container);
26
- });
27
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ImagePreview.kbd.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImagePreview.kbd.test.d.ts","sourceRoot":"","sources":["../../src/image/ImagePreview.kbd.test.ts"],"names":[],"mappings":""}
@@ -1,44 +0,0 @@
1
- // Image 灯箱键盘 e2e(browser project / 真实 chromium)。
2
- // ImagePreview 是 portal 到 body 的全屏 dialog(aria-modal=true):useFocusTrap 把焦点锁在
3
- // 灯箱内 + 关闭归还触发元素;全局 keydown 监听 Esc 关闭、←→ 翻页(onChange 切 current)。
4
- // jsdom 测不了真实焦点陷阱/归还,故真浏览器断 .toHaveFocus()。
5
- // 1. 聚焦 trigger 并点击开灯箱 → 焦点进入灯箱(首个可聚焦 = 关闭按钮)。
6
- // 2. → 翻到下一张(counter 1/3 → 2/3),← 翻回。
7
- // 3. Esc 关闭灯箱 → 焦点归还 trigger。
8
- import { describe, it, expect } from 'vitest';
9
- import { page } from 'vitest/browser';
10
- import { renderKbdFixture, userEvent } from '../test-utils/kbd.js';
11
- import ImagePreviewKbdFixture from './ImagePreviewKbdFixture.svelte';
12
- function loc(el) {
13
- return page.elementLocator(el);
14
- }
15
- function counterText() {
16
- return document.querySelector('.cd-image__preview-counter')?.textContent?.trim() ?? '';
17
- }
18
- describe('Image 灯箱键盘 e2e(focus trap + ←→ 翻页 + Esc 归还)', () => {
19
- it('开灯箱焦点入内;←→ 翻页;Esc 关闭归还 trigger', async () => {
20
- const { baseElement } = renderKbdFixture(ImagePreviewKbdFixture);
21
- const trigger = baseElement.querySelector('[data-testid="trigger"]');
22
- expect(trigger).not.toBeNull();
23
- await userEvent.click(trigger);
24
- // 灯箱 portal 到 body:查 role=dialog(aria-modal=true)。
25
- const overlay = document.querySelector('.cd-image__preview[role="dialog"]');
26
- expect(overlay).not.toBeNull();
27
- expect(overlay.getAttribute('aria-modal')).toBe('true');
28
- // 1. 焦点进入灯箱(focus trap activate;落在内部可聚焦项)。
29
- await expect.poll(() => overlay.contains(document.activeElement)).toBe(true);
30
- expect(counterText()).toBe('1 / 3');
31
- // 2. → 翻到下一张(onChange 切 current)。
32
- await userEvent.keyboard('{ArrowRight}');
33
- await expect.poll(() => counterText()).toBe('2 / 3');
34
- // 焦点仍困在灯箱内。
35
- expect(overlay.contains(document.activeElement)).toBe(true);
36
- // ← 翻回上一张。
37
- await userEvent.keyboard('{ArrowLeft}');
38
- await expect.poll(() => counterText()).toBe('1 / 3');
39
- // 3. Esc 关闭灯箱 → 焦点归还 trigger(focus trap deactivate returnFocus)。
40
- await userEvent.keyboard('{Escape}');
41
- await expect.poll(() => document.querySelector('.cd-image__preview')).toBeNull();
42
- await expect.element(loc(trigger)).toHaveFocus();
43
- });
44
- });
@@ -1,32 +0,0 @@
1
- <!--
2
- 仅供 ImagePreview.kbd.test.ts(browser project)使用的灯箱 e2e 夹具。
3
- 直接渲染 ImagePreview(多图):真实图片加载在 headless 下不可靠,故跳过 Image 触发链,
4
- 直接控制灯箱挂载(show $state)。trigger 按钮先获焦作为焦点归还锚点:
5
- 测试先聚焦 trigger 再开灯箱,验证 focus trap(焦点入灯箱)、←→ 翻页、Esc 关闭归还 trigger。
6
- current 由父级 $state 维护(受控),onChange 更新它(左右键翻页)。
7
- -->
8
- <script lang="ts">
9
- import { LocaleProvider } from '../locale-provider/index.js';
10
- import ImagePreview from './ImagePreview.svelte';
11
-
12
- const images = [
13
- { src: 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==', alt: 'image one' },
14
- { src: 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==', alt: 'image two' },
15
- { src: 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==', alt: 'image three' },
16
- ];
17
-
18
- let show = $state(false);
19
- let current = $state(0);
20
- </script>
21
-
22
- <LocaleProvider locale="en_US">
23
- <button type="button" data-testid="trigger" onclick={() => (show = true)}>open lightbox</button>
24
- {#if show}
25
- <ImagePreview
26
- {images}
27
- {current}
28
- onClose={() => (show = false)}
29
- onChange={(i) => (current = i)}
30
- />
31
- {/if}
32
- </LocaleProvider>
@@ -1,4 +0,0 @@
1
- declare const ImagePreviewKbdFixture: import("svelte").Component<Record<string, never>, {}, "">;
2
- type ImagePreviewKbdFixture = ReturnType<typeof ImagePreviewKbdFixture>;
3
- export default ImagePreviewKbdFixture;
4
- //# sourceMappingURL=ImagePreviewKbdFixture.svelte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ImagePreviewKbdFixture.svelte.d.ts","sourceRoot":"","sources":["../../src/image/ImagePreviewKbdFixture.svelte.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,sBAAsB,2DAAwC,CAAC;AACrE,KAAK,sBAAsB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACxE,eAAe,sBAAsB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Input.a11y.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input.a11y.test.d.ts","sourceRoot":"","sources":["../../src/input/Input.a11y.test.ts"],"names":[],"mappings":""}