@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.
Files changed (476) hide show
  1. package/dist/components.json +1 -1
  2. package/package.json +7 -8
  3. package/src/_floating/use-floating.ts +0 -208
  4. package/src/anchor/Anchor.a11y.test.ts +0 -49
  5. package/src/anchor/Anchor.kbd.test.ts +0 -70
  6. package/src/anchor/Anchor.svelte +0 -359
  7. package/src/anchor/AnchorKbdFixture.svelte +0 -24
  8. package/src/anchor/index.ts +0 -3
  9. package/src/anchor/meta.ts +0 -70
  10. package/src/anchor/types.ts +0 -8
  11. package/src/autocomplete/AutoComplete.a11y.test.ts +0 -49
  12. package/src/autocomplete/AutoComplete.kbd.test.ts +0 -69
  13. package/src/autocomplete/AutoComplete.svelte +0 -706
  14. package/src/autocomplete/AutoCompleteKbdFixture.svelte +0 -24
  15. package/src/autocomplete/index.ts +0 -2
  16. package/src/autocomplete/meta.ts +0 -41
  17. package/src/avatar/Avatar.a11y.test.ts +0 -37
  18. package/src/avatar/Avatar.svelte +0 -315
  19. package/src/avatar/AvatarGroup.svelte +0 -142
  20. package/src/avatar/context.ts +0 -21
  21. package/src/avatar/index.ts +0 -10
  22. package/src/avatar/meta.ts +0 -73
  23. package/src/back-top/BackTop.a11y.test.ts +0 -40
  24. package/src/back-top/BackTop.svelte +0 -314
  25. package/src/back-top/index.ts +0 -2
  26. package/src/back-top/meta.ts +0 -108
  27. package/src/badge/Badge.a11y.test.ts +0 -35
  28. package/src/badge/Badge.svelte +0 -328
  29. package/src/badge/BadgeA11yFixture.svelte +0 -18
  30. package/src/badge/index.ts +0 -2
  31. package/src/badge/meta.ts +0 -62
  32. package/src/banner/Banner.a11y.test.ts +0 -48
  33. package/src/banner/Banner.svelte +0 -368
  34. package/src/banner/index.ts +0 -3
  35. package/src/banner/meta.ts +0 -121
  36. package/src/breadcrumb/Breadcrumb.a11y.test.ts +0 -35
  37. package/src/breadcrumb/Breadcrumb.kbd.test.ts +0 -45
  38. package/src/breadcrumb/Breadcrumb.svelte +0 -414
  39. package/src/breadcrumb/BreadcrumbKbdFixture.svelte +0 -23
  40. package/src/breadcrumb/Item.svelte +0 -77
  41. package/src/breadcrumb/context.ts +0 -27
  42. package/src/breadcrumb/index.ts +0 -21
  43. package/src/breadcrumb/meta.ts +0 -128
  44. package/src/breadcrumb/types.ts +0 -4
  45. package/src/button/Button.a11y.test.ts +0 -54
  46. package/src/button/Button.svelte +0 -176
  47. package/src/button/index.ts +0 -2
  48. package/src/button/meta.ts +0 -28
  49. package/src/calendar/Calendar.a11y.test.ts +0 -51
  50. package/src/calendar/Calendar.kbd.test.ts +0 -59
  51. package/src/calendar/Calendar.svelte +0 -1344
  52. package/src/calendar/CalendarKbdFixture.svelte +0 -23
  53. package/src/calendar/index.ts +0 -3
  54. package/src/calendar/meta.ts +0 -117
  55. package/src/card/Card.a11y.test.ts +0 -38
  56. package/src/card/Card.svelte +0 -341
  57. package/src/card/CardMeta.svelte +0 -60
  58. package/src/card/index.ts +0 -8
  59. package/src/card/meta.ts +0 -83
  60. package/src/carousel/Carousel.a11y.test.ts +0 -53
  61. package/src/carousel/Carousel.kbd.test.ts +0 -67
  62. package/src/carousel/Carousel.svelte +0 -806
  63. package/src/carousel/CarouselA11yFixture.svelte +0 -25
  64. package/src/carousel/CarouselKbdFixture.svelte +0 -24
  65. package/src/carousel/index.ts +0 -2
  66. package/src/carousel/meta.ts +0 -74
  67. package/src/cascader/Cascader.a11y.test.ts +0 -59
  68. package/src/cascader/Cascader.kbd.test.ts +0 -56
  69. package/src/cascader/Cascader.svelte +0 -1570
  70. package/src/cascader/CascaderKbdFixture.svelte +0 -31
  71. package/src/cascader/index.ts +0 -3
  72. package/src/cascader/meta.ts +0 -57
  73. package/src/cascader/types.ts +0 -9
  74. package/src/checkbox/Checkbox.svelte +0 -281
  75. package/src/checkbox/CheckboxGroup.a11y.test.ts +0 -43
  76. package/src/checkbox/CheckboxGroup.kbd.test.ts +0 -40
  77. package/src/checkbox/CheckboxGroup.svelte +0 -122
  78. package/src/checkbox/CheckboxGroupKbdFixture.svelte +0 -20
  79. package/src/checkbox/context.ts +0 -31
  80. package/src/checkbox/index.ts +0 -4
  81. package/src/checkbox/meta.ts +0 -67
  82. package/src/collapse/Collapse.a11y.test.ts +0 -53
  83. package/src/collapse/Collapse.kbd.test.ts +0 -89
  84. package/src/collapse/Collapse.svelte +0 -406
  85. package/src/collapse/CollapseA11yFixture.svelte +0 -27
  86. package/src/collapse/CollapseKbdFixture.svelte +0 -25
  87. package/src/collapse/CollapsePanel.svelte +0 -102
  88. package/src/collapse/context.ts +0 -54
  89. package/src/collapse/index.ts +0 -17
  90. package/src/collapse/meta.ts +0 -79
  91. package/src/collapse/types.ts +0 -5
  92. package/src/color-picker/ColorPicker.a11y.test.ts +0 -60
  93. package/src/color-picker/ColorPicker.kbd.test.ts +0 -73
  94. package/src/color-picker/ColorPicker.svelte +0 -985
  95. package/src/color-picker/ColorPickerKbdFixture.svelte +0 -25
  96. package/src/color-picker/index.ts +0 -2
  97. package/src/color-picker/meta.ts +0 -47
  98. package/src/config-provider/ConfigProvider.svelte +0 -227
  99. package/src/config-provider/context.ts +0 -29
  100. package/src/config-provider/index.ts +0 -48
  101. package/src/config-provider/meta.ts +0 -128
  102. package/src/date-picker/DatePicker.a11y.test.ts +0 -45
  103. package/src/date-picker/DatePicker.kbd.test.ts +0 -71
  104. package/src/date-picker/DatePicker.svelte +0 -1798
  105. package/src/date-picker/DatePickerKbdFixture.svelte +0 -26
  106. package/src/date-picker/RangePicker.kbd.test.ts +0 -69
  107. package/src/date-picker/RangePicker.svelte +0 -775
  108. package/src/date-picker/RangePickerKbdFixture.svelte +0 -30
  109. package/src/date-picker/index.ts +0 -4
  110. package/src/date-picker/meta.ts +0 -67
  111. package/src/date-picker/range-meta.ts +0 -44
  112. package/src/descriptions/Descriptions.a11y.test.ts +0 -33
  113. package/src/descriptions/Descriptions.svelte +0 -287
  114. package/src/descriptions/DescriptionsItem.svelte +0 -43
  115. package/src/descriptions/context.ts +0 -21
  116. package/src/descriptions/index.ts +0 -16
  117. package/src/descriptions/meta.ts +0 -45
  118. package/src/descriptions/types.ts +0 -6
  119. package/src/divider/Divider.a11y.test.ts +0 -23
  120. package/src/divider/Divider.svelte +0 -154
  121. package/src/divider/index.ts +0 -2
  122. package/src/divider/meta.ts +0 -23
  123. package/src/drawer/Drawer.a11y.test.ts +0 -41
  124. package/src/drawer/Drawer.kbd.test.ts +0 -67
  125. package/src/drawer/Drawer.svelte +0 -554
  126. package/src/drawer/DrawerKbdFixture.svelte +0 -28
  127. package/src/drawer/index.ts +0 -2
  128. package/src/drawer/meta.ts +0 -127
  129. package/src/dropdown/Dropdown.a11y.test.ts +0 -46
  130. package/src/dropdown/Dropdown.kbd.test.ts +0 -56
  131. package/src/dropdown/Dropdown.svelte +0 -573
  132. package/src/dropdown/DropdownA11yFixture.svelte +0 -24
  133. package/src/dropdown/DropdownDivider.svelte +0 -17
  134. package/src/dropdown/DropdownItem.svelte +0 -127
  135. package/src/dropdown/DropdownItemNode.svelte +0 -355
  136. package/src/dropdown/DropdownKbdFixture.svelte +0 -26
  137. package/src/dropdown/DropdownMenu.svelte +0 -24
  138. package/src/dropdown/DropdownSubMenu.svelte +0 -212
  139. package/src/dropdown/DropdownTitle.svelte +0 -34
  140. package/src/dropdown/context.ts +0 -13
  141. package/src/dropdown/index.ts +0 -36
  142. package/src/dropdown/meta.ts +0 -97
  143. package/src/dropdown/types.test.ts +0 -50
  144. package/src/dropdown/types.ts +0 -67
  145. package/src/empty/Empty.a11y.test.ts +0 -24
  146. package/src/empty/Empty.svelte +0 -304
  147. package/src/empty/index.ts +0 -2
  148. package/src/empty/meta.ts +0 -41
  149. package/src/form/Field.svelte +0 -492
  150. package/src/form/FieldArray.svelte +0 -75
  151. package/src/form/Form.a11y.test.ts +0 -39
  152. package/src/form/Form.svelte +0 -243
  153. package/src/form/FormA11yFixture.svelte +0 -31
  154. package/src/form/FormCascader.svelte +0 -82
  155. package/src/form/FormCheckbox.svelte +0 -83
  156. package/src/form/FormDatePicker.svelte +0 -80
  157. package/src/form/FormErrorMessage.svelte +0 -44
  158. package/src/form/FormInput.svelte +0 -95
  159. package/src/form/FormLabel.svelte +0 -46
  160. package/src/form/FormRadio.svelte +0 -83
  161. package/src/form/FormRating.svelte +0 -85
  162. package/src/form/FormSection.svelte +0 -45
  163. package/src/form/FormSelect.svelte +0 -96
  164. package/src/form/FormSlider.svelte +0 -95
  165. package/src/form/FormSlot.svelte +0 -51
  166. package/src/form/FormSwitch.svelte +0 -82
  167. package/src/form/FormTagInput.svelte +0 -79
  168. package/src/form/FormTreeSelect.svelte +0 -85
  169. package/src/form/FormUpload.svelte +0 -92
  170. package/src/form/context.ts +0 -47
  171. package/src/form/index.ts +0 -22
  172. package/src/form/meta.ts +0 -85
  173. package/src/grid/Col.svelte +0 -142
  174. package/src/grid/Grid.a11y.test.ts +0 -14
  175. package/src/grid/GridA11yFixture.svelte +0 -12
  176. package/src/grid/Row.svelte +0 -116
  177. package/src/grid/index.ts +0 -3
  178. package/src/grid/meta.ts +0 -72
  179. package/src/grid/use-breakpoint.svelte.ts +0 -48
  180. package/src/highlight/Highlight.a11y.test.ts +0 -25
  181. package/src/highlight/Highlight.svelte +0 -99
  182. package/src/highlight/index.ts +0 -2
  183. package/src/highlight/meta.ts +0 -80
  184. package/src/icon/Icon.svelte +0 -156
  185. package/src/icon/index.ts +0 -2
  186. package/src/icon/meta.ts +0 -41
  187. package/src/image/Image.a11y.test.ts +0 -30
  188. package/src/image/Image.svelte +0 -387
  189. package/src/image/ImagePreview.kbd.test.ts +0 -52
  190. package/src/image/ImagePreview.svelte +0 -309
  191. package/src/image/ImagePreviewGroup.svelte +0 -93
  192. package/src/image/ImagePreviewKbdFixture.svelte +0 -32
  193. package/src/image/context.ts +0 -26
  194. package/src/image/index.ts +0 -15
  195. package/src/image/meta.ts +0 -131
  196. package/src/index.ts +0 -208
  197. package/src/input/Input.a11y.test.ts +0 -58
  198. package/src/input/Input.svelte +0 -505
  199. package/src/input/index.ts +0 -2
  200. package/src/input/meta.ts +0 -40
  201. package/src/input-number/InputNumber.a11y.test.ts +0 -43
  202. package/src/input-number/InputNumber.kbd.test.ts +0 -41
  203. package/src/input-number/InputNumber.svelte +0 -674
  204. package/src/input-number/InputNumberKbdFixture.svelte +0 -15
  205. package/src/input-number/index.ts +0 -2
  206. package/src/input-number/meta.ts +0 -65
  207. package/src/layout/Content.svelte +0 -37
  208. package/src/layout/Footer.svelte +0 -49
  209. package/src/layout/Header.svelte +0 -46
  210. package/src/layout/Layout.a11y.test.ts +0 -34
  211. package/src/layout/Layout.svelte +0 -60
  212. package/src/layout/LayoutA11yFixture.svelte +0 -21
  213. package/src/layout/Sider.svelte +0 -207
  214. package/src/layout/index.ts +0 -26
  215. package/src/layout/meta.ts +0 -116
  216. package/src/list/List.a11y.test.ts +0 -69
  217. package/src/list/List.bench.ts +0 -26
  218. package/src/list/List.kbd.test.ts +0 -71
  219. package/src/list/List.svelte +0 -920
  220. package/src/list/ListA11yFixture.svelte +0 -38
  221. package/src/list/ListBenchFixture.svelte +0 -22
  222. package/src/list/ListItem.svelte +0 -175
  223. package/src/list/ListKbdFixture.svelte +0 -31
  224. package/src/list/ListMeta.svelte +0 -73
  225. package/src/list/context.ts +0 -39
  226. package/src/list/index.ts +0 -21
  227. package/src/list/meta.ts +0 -99
  228. package/src/locale-provider/LocaleProvider.svelte +0 -110
  229. package/src/locale-provider/context.ts +0 -22
  230. package/src/locale-provider/index.ts +0 -21
  231. package/src/locale-provider/meta.ts +0 -93
  232. package/src/locale-provider/use-locale.ts +0 -25
  233. package/src/lottie-icon/LottieIcon.svelte +0 -330
  234. package/src/lottie-icon/index.ts +0 -9
  235. package/src/lottie-icon/meta.ts +0 -162
  236. package/src/menu/Menu.a11y.test.ts +0 -54
  237. package/src/menu/Menu.kbd.test.ts +0 -69
  238. package/src/menu/Menu.svelte +0 -762
  239. package/src/menu/MenuKbdFixture.svelte +0 -22
  240. package/src/menu/MenuPopupNode.svelte +0 -525
  241. package/src/menu/index.ts +0 -4
  242. package/src/menu/meta.ts +0 -137
  243. package/src/menu/types.ts +0 -120
  244. package/src/meta.test.ts +0 -173
  245. package/src/modal/ConfirmModal.svelte +0 -173
  246. package/src/modal/Modal.a11y.test.ts +0 -46
  247. package/src/modal/Modal.kbd.test.ts +0 -65
  248. package/src/modal/Modal.svelte +0 -511
  249. package/src/modal/ModalKbdFixture.svelte +0 -24
  250. package/src/modal/command.svelte.ts +0 -103
  251. package/src/modal/index.ts +0 -30
  252. package/src/modal/meta.ts +0 -165
  253. package/src/modal/z-stack.ts +0 -26
  254. package/src/notification/NotificationContainer.svelte +0 -192
  255. package/src/notification/NotificationItem.a11y.test.ts +0 -73
  256. package/src/notification/NotificationItem.svelte +0 -368
  257. package/src/notification/index.ts +0 -9
  258. package/src/notification/meta.ts +0 -120
  259. package/src/notification/store.ts +0 -191
  260. package/src/overflow-list/OverflowList.a11y.test.ts +0 -46
  261. package/src/overflow-list/OverflowList.kbd.test.ts +0 -34
  262. package/src/overflow-list/OverflowList.svelte +0 -539
  263. package/src/overflow-list/OverflowListA11yFixture.svelte +0 -22
  264. package/src/overflow-list/OverflowListKbdFixture.svelte +0 -21
  265. package/src/overflow-list/index.ts +0 -2
  266. package/src/overflow-list/meta.ts +0 -138
  267. package/src/pagination/Pagination.a11y.test.ts +0 -62
  268. package/src/pagination/Pagination.kbd.test.ts +0 -66
  269. package/src/pagination/Pagination.svelte +0 -428
  270. package/src/pagination/PaginationKbdFixture.svelte +0 -15
  271. package/src/pagination/index.ts +0 -2
  272. package/src/pagination/meta.ts +0 -73
  273. package/src/popconfirm/Popconfirm.a11y.test.ts +0 -46
  274. package/src/popconfirm/Popconfirm.kbd.test.ts +0 -42
  275. package/src/popconfirm/Popconfirm.svelte +0 -724
  276. package/src/popconfirm/PopconfirmA11yFixture.svelte +0 -34
  277. package/src/popconfirm/PopconfirmKbdFixture.svelte +0 -17
  278. package/src/popconfirm/index.ts +0 -2
  279. package/src/popconfirm/meta.ts +0 -200
  280. package/src/popover/Popover.a11y.test.ts +0 -58
  281. package/src/popover/Popover.kbd.test.ts +0 -42
  282. package/src/popover/Popover.svelte +0 -643
  283. package/src/popover/PopoverA11yFixture.svelte +0 -35
  284. package/src/popover/PopoverKbdFixture.svelte +0 -18
  285. package/src/popover/index.ts +0 -2
  286. package/src/popover/meta.ts +0 -103
  287. package/src/progress/Progress.a11y.test.ts +0 -37
  288. package/src/progress/Progress.svelte +0 -423
  289. package/src/progress/index.ts +0 -3
  290. package/src/progress/meta.ts +0 -132
  291. package/src/radio/Radio.svelte +0 -330
  292. package/src/radio/RadioGroup.a11y.test.ts +0 -43
  293. package/src/radio/RadioGroup.kbd.test.ts +0 -75
  294. package/src/radio/RadioGroup.svelte +0 -199
  295. package/src/radio/RadioGroupKbdFixture.svelte +0 -21
  296. package/src/radio/context.ts +0 -42
  297. package/src/radio/index.ts +0 -4
  298. package/src/radio/meta.ts +0 -68
  299. package/src/rating/Rating.a11y.test.ts +0 -41
  300. package/src/rating/Rating.kbd.test.ts +0 -48
  301. package/src/rating/Rating.svelte +0 -407
  302. package/src/rating/RatingKbdFixture.svelte +0 -15
  303. package/src/rating/index.ts +0 -2
  304. package/src/rating/meta.ts +0 -40
  305. package/src/resize-observer/ResizeObserver.svelte +0 -169
  306. package/src/resize-observer/action.ts +0 -80
  307. package/src/resize-observer/index.ts +0 -9
  308. package/src/resize-observer/meta.ts +0 -102
  309. package/src/scroll-list/ScrollColumn.svelte +0 -592
  310. package/src/scroll-list/ScrollList.svelte +0 -257
  311. package/src/scroll-list/index.ts +0 -4
  312. package/src/scroll-list/meta.ts +0 -93
  313. package/src/scroll-list/types.ts +0 -18
  314. package/src/select/Select.a11y.test.ts +0 -59
  315. package/src/select/Select.kbd.test.ts +0 -59
  316. package/src/select/Select.svelte +0 -1155
  317. package/src/select/SelectKbdFixture.svelte +0 -29
  318. package/src/select/index.ts +0 -3
  319. package/src/select/meta.ts +0 -78
  320. package/src/select/types.ts +0 -2
  321. package/src/side-sheet/SideSheet.a11y.test.ts +0 -53
  322. package/src/side-sheet/SideSheet.kbd.test.ts +0 -63
  323. package/src/side-sheet/SideSheet.svelte +0 -659
  324. package/src/side-sheet/SideSheetKbdFixture.svelte +0 -30
  325. package/src/side-sheet/index.ts +0 -2
  326. package/src/side-sheet/meta.ts +0 -116
  327. package/src/skeleton/Skeleton.a11y.test.ts +0 -35
  328. package/src/skeleton/Skeleton.svelte +0 -131
  329. package/src/skeleton/SkeletonAvatar.svelte +0 -82
  330. package/src/skeleton/SkeletonButton.svelte +0 -90
  331. package/src/skeleton/SkeletonImage.svelte +0 -100
  332. package/src/skeleton/SkeletonParagraph.svelte +0 -103
  333. package/src/skeleton/SkeletonTitle.svelte +0 -74
  334. package/src/skeleton/context.ts +0 -11
  335. package/src/skeleton/index.ts +0 -8
  336. package/src/skeleton/meta.ts +0 -65
  337. package/src/slider/Slider.a11y.test.ts +0 -44
  338. package/src/slider/Slider.kbd.test.ts +0 -74
  339. package/src/slider/Slider.svelte +0 -716
  340. package/src/slider/SliderKbdFixture.svelte +0 -21
  341. package/src/slider/index.ts +0 -2
  342. package/src/slider/meta.ts +0 -55
  343. package/src/space/Space.a11y.test.ts +0 -22
  344. package/src/space/Space.svelte +0 -109
  345. package/src/space/SpaceA11yFixture.svelte +0 -17
  346. package/src/space/index.ts +0 -2
  347. package/src/space/meta.ts +0 -27
  348. package/src/spin/Spin.a11y.test.ts +0 -29
  349. package/src/spin/Spin.svelte +0 -293
  350. package/src/spin/SpinA11yFixture.svelte +0 -18
  351. package/src/spin/index.ts +0 -2
  352. package/src/spin/meta.ts +0 -72
  353. package/src/steps/Steps.a11y.test.ts +0 -39
  354. package/src/steps/Steps.kbd.test.ts +0 -73
  355. package/src/steps/Steps.svelte +0 -392
  356. package/src/steps/StepsKbdFixture.svelte +0 -21
  357. package/src/steps/index.ts +0 -3
  358. package/src/steps/meta.ts +0 -59
  359. package/src/steps/types.ts +0 -8
  360. package/src/switch/Switch.a11y.test.ts +0 -46
  361. package/src/switch/Switch.kbd.test.ts +0 -40
  362. package/src/switch/Switch.svelte +0 -310
  363. package/src/switch/SwitchKbdFixture.svelte +0 -22
  364. package/src/switch/index.ts +0 -2
  365. package/src/switch/meta.ts +0 -44
  366. package/src/table/Table.a11y.test.ts +0 -70
  367. package/src/table/Table.bench.ts +0 -51
  368. package/src/table/Table.kbd.test.ts +0 -94
  369. package/src/table/Table.svelte +0 -2327
  370. package/src/table/TableKbdFixture.svelte +0 -35
  371. package/src/table/grid-nav.test.ts +0 -173
  372. package/src/table/grid-nav.ts +0 -146
  373. package/src/table/index.ts +0 -13
  374. package/src/table/meta.ts +0 -121
  375. package/src/table/types.ts +0 -133
  376. package/src/tabs/TabPane.svelte +0 -92
  377. package/src/tabs/Tabs.a11y.test.ts +0 -47
  378. package/src/tabs/Tabs.kbd.test.ts +0 -74
  379. package/src/tabs/Tabs.svelte +0 -1128
  380. package/src/tabs/TabsA11yFixture.svelte +0 -20
  381. package/src/tabs/TabsKbdFixture.svelte +0 -25
  382. package/src/tabs/context.ts +0 -43
  383. package/src/tabs/index.ts +0 -14
  384. package/src/tabs/meta.ts +0 -152
  385. package/src/tabs/types.ts +0 -6
  386. package/src/tag/Tag.a11y.test.ts +0 -33
  387. package/src/tag/Tag.svelte +0 -366
  388. package/src/tag/TagA11yFixture.svelte +0 -18
  389. package/src/tag/index.ts +0 -2
  390. package/src/tag/meta.ts +0 -92
  391. package/src/tag-input/TagInput.a11y.test.ts +0 -41
  392. package/src/tag-input/TagInput.svelte +0 -544
  393. package/src/tag-input/index.ts +0 -2
  394. package/src/tag-input/meta.ts +0 -43
  395. package/src/tag-input/reorder.test.ts +0 -59
  396. package/src/tag-input/reorder.ts +0 -41
  397. package/src/test-utils/LocaleHarness.svelte +0 -29
  398. package/src/test-utils/a11y.ts +0 -108
  399. package/src/test-utils/kbd.ts +0 -52
  400. package/src/textarea/TextArea.a11y.test.ts +0 -44
  401. package/src/textarea/TextArea.svelte +0 -420
  402. package/src/textarea/index.ts +0 -2
  403. package/src/textarea/meta.ts +0 -104
  404. package/src/time-picker/TimePicker.a11y.test.ts +0 -45
  405. package/src/time-picker/TimePicker.kbd.test.ts +0 -70
  406. package/src/time-picker/TimePicker.svelte +0 -1023
  407. package/src/time-picker/TimePickerKbdFixture.svelte +0 -23
  408. package/src/time-picker/index.ts +0 -2
  409. package/src/time-picker/meta.ts +0 -64
  410. package/src/timeline/Timeline.a11y.test.ts +0 -54
  411. package/src/timeline/Timeline.svelte +0 -599
  412. package/src/timeline/TimelineItem.svelte +0 -164
  413. package/src/timeline/context.ts +0 -28
  414. package/src/timeline/index.ts +0 -16
  415. package/src/timeline/meta.ts +0 -129
  416. package/src/timeline/types.ts +0 -9
  417. package/src/toast/Toast.a11y.test.ts +0 -67
  418. package/src/toast/ToastContainer.svelte +0 -184
  419. package/src/toast/ToastItem.svelte +0 -247
  420. package/src/toast/index.ts +0 -9
  421. package/src/toast/live-region.ts +0 -78
  422. package/src/toast/meta.ts +0 -95
  423. package/src/toast/store.ts +0 -187
  424. package/src/tooltip/Tooltip.a11y.test.ts +0 -41
  425. package/src/tooltip/Tooltip.kbd.test.ts +0 -37
  426. package/src/tooltip/Tooltip.svelte +0 -416
  427. package/src/tooltip/TooltipA11yFixture.svelte +0 -31
  428. package/src/tooltip/TooltipKbdFixture.svelte +0 -16
  429. package/src/tooltip/index.ts +0 -2
  430. package/src/tooltip/meta.ts +0 -59
  431. package/src/tooltip/placement.ts +0 -6
  432. package/src/transfer/Transfer.a11y.test.ts +0 -63
  433. package/src/transfer/Transfer.kbd.test.ts +0 -75
  434. package/src/transfer/Transfer.svelte +0 -1451
  435. package/src/transfer/TransferKbdFixture.svelte +0 -23
  436. package/src/transfer/group.test.ts +0 -55
  437. package/src/transfer/group.ts +0 -61
  438. package/src/transfer/index.ts +0 -3
  439. package/src/transfer/meta.ts +0 -55
  440. package/src/transfer/reorder.test.ts +0 -52
  441. package/src/transfer/reorder.ts +0 -42
  442. package/src/transfer/tree.test.ts +0 -44
  443. package/src/transfer/tree.ts +0 -52
  444. package/src/transfer/types.ts +0 -32
  445. package/src/tree/Tree.a11y.test.ts +0 -63
  446. package/src/tree/Tree.kbd.test.ts +0 -91
  447. package/src/tree/Tree.svelte +0 -1500
  448. package/src/tree/TreeKbdFixture.svelte +0 -30
  449. package/src/tree/index.ts +0 -3
  450. package/src/tree/meta.ts +0 -152
  451. package/src/tree-select/TreeSelect.a11y.test.ts +0 -52
  452. package/src/tree-select/TreeSelect.kbd.test.ts +0 -53
  453. package/src/tree-select/TreeSelect.svelte +0 -1611
  454. package/src/tree-select/TreeSelectKbdFixture.svelte +0 -20
  455. package/src/tree-select/index.ts +0 -3
  456. package/src/tree-select/meta.ts +0 -73
  457. package/src/tree-select/types.ts +0 -11
  458. package/src/tree-select/virtual.test.ts +0 -104
  459. package/src/typography/Link.svelte +0 -120
  460. package/src/typography/Paragraph.svelte +0 -92
  461. package/src/typography/Text.svelte +0 -93
  462. package/src/typography/Title.svelte +0 -91
  463. package/src/typography/Typography.a11y.test.ts +0 -34
  464. package/src/typography/TypographyA11yFixture.svelte +0 -27
  465. package/src/typography/TypographyBase.svelte +0 -807
  466. package/src/typography/index.ts +0 -16
  467. package/src/typography/meta.ts +0 -158
  468. package/src/upload/Upload.a11y.test.ts +0 -58
  469. package/src/upload/Upload.svelte +0 -1094
  470. package/src/upload/UploadA11yFixture.svelte +0 -23
  471. package/src/upload/index.ts +0 -3
  472. package/src/upload/meta.ts +0 -64
  473. package/src/upload/types.ts +0 -16
  474. package/src/virtual-list/VirtualList.svelte +0 -401
  475. package/src/virtual-list/index.ts +0 -2
  476. package/src/virtual-list/meta.ts +0 -106
@@ -1,35 +0,0 @@
1
- <!--
2
- 仅供 Table.kbd.test.ts(browser project)使用的键盘 e2e 夹具。
3
- 交互态(列带 sorter)下 Table 升级为 WAI-ARIA Grid Pattern:role=grid +
4
- columnheader/gridcell + 单元格 roving tabindex。前后各放一个按钮,验证
5
- Tab 进入 grid 只停在单一 roving 单元格(roving 单停靠点),而非逐格进 Tab 序。
6
- -->
7
- <script lang="ts">
8
- import { LocaleProvider } from '../locale-provider/index.js';
9
- import Table from './Table.svelte';
10
-
11
- interface Row {
12
- key: string;
13
- name: string;
14
- age: number;
15
- [k: string]: unknown;
16
- }
17
-
18
- const dataSource: Row[] = [
19
- { key: '1', name: 'Alice', age: 30 },
20
- { key: '2', name: 'Bob', age: 25 },
21
- { key: '3', name: 'Carol', age: 28 },
22
- ];
23
-
24
- // 列带 sorter → isInteractive → gridEnabled,触发 grid 键盘漫游。
25
- const columns = [
26
- { key: 'name', dataIndex: 'name', title: 'Name', sorter: true },
27
- { key: 'age', dataIndex: 'age', title: 'Age', sorter: true },
28
- ];
29
- </script>
30
-
31
- <LocaleProvider locale="en_US">
32
- <button type="button" data-testid="before">before</button>
33
- <Table {columns} {dataSource} rowKey="key" ariaLabel="Users grid" />
34
- <button type="button" data-testid="after">after</button>
35
- </LocaleProvider>
@@ -1,173 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import {
3
- buildGridCols,
4
- nextGridCoord,
5
- isFocusCell,
6
- rovingTabindexAt,
7
- type GridCoord,
8
- } from './grid-nav.js';
9
-
10
- // Table 交互态 Grid Pattern 二维漫游纯逻辑用例(WAI-ARIA APG Grid)。
11
- // 渲染层把 row=-1 当表头、0..n-1 当数据行,col 索引进 buildGridCols 扁平表。
12
- // 委托键盘事件无法可靠合成(红线),故对纯坐标算法做穷尽边界测试。
13
-
14
- const params = (over: Partial<Parameters<typeof nextGridCoord>[2]> = {}) => ({
15
- current: { row: 0, col: 0 } as GridCoord,
16
- rowCount: 5,
17
- colCount: 4,
18
- pageRows: 3,
19
- ...over,
20
- });
21
-
22
- const move = (
23
- key: string,
24
- current: GridCoord,
25
- over: Partial<Parameters<typeof nextGridCoord>[2]> = {},
26
- mods: { ctrl?: boolean; meta?: boolean } = {},
27
- ) => nextGridCoord(key, mods, params({ ...over, current }));
28
-
29
- describe('buildGridCols — 网格列扁平表', () => {
30
- it('仅数据列时 1:1 映射', () => {
31
- const cols = buildGridCols({ hasExpand: false, hasSelection: false, dataColumnCount: 3 });
32
- expect(cols).toEqual([
33
- { kind: 'data', dataCol: 0 },
34
- { kind: 'data', dataCol: 1 },
35
- { kind: 'data', dataCol: 2 },
36
- ]);
37
- });
38
-
39
- it('expand + selection 前置占位列在数据列之前', () => {
40
- const cols = buildGridCols({ hasExpand: true, hasSelection: true, dataColumnCount: 2 });
41
- expect(cols.map((c) => c.kind)).toEqual(['expand', 'selection', 'data', 'data']);
42
- // 第一个数据列的网格列索引 = 2(前置 2 列)
43
- expect(cols.findIndex((c) => c.kind === 'data')).toBe(2);
44
- });
45
-
46
- it('仅 selection 时占位 1 列', () => {
47
- const cols = buildGridCols({ hasExpand: false, hasSelection: true, dataColumnCount: 1 });
48
- expect(cols.map((c) => c.kind)).toEqual(['selection', 'data']);
49
- });
50
- });
51
-
52
- describe('roving tabindex — 单一 Tab 停靠点派生', () => {
53
- it('未聚焦时表头首格 (-1,0) 为唯一 tabindex=0', () => {
54
- const focus = { row: 0, col: 0, hasFocused: false };
55
- expect(isFocusCell(-1, 0, focus)).toBe(true);
56
- expect(rovingTabindexAt(-1, 0, focus)).toBe(0);
57
- // 其余全部 -1
58
- expect(rovingTabindexAt(0, 0, focus)).toBe(-1);
59
- expect(rovingTabindexAt(-1, 1, focus)).toBe(-1);
60
- expect(rovingTabindexAt(2, 3, focus)).toBe(-1);
61
- });
62
-
63
- it('聚焦后仅当前焦点坐标 tabindex=0,其余 -1', () => {
64
- const focus = { row: 2, col: 1, hasFocused: true };
65
- expect(rovingTabindexAt(2, 1, focus)).toBe(0);
66
- // 同行不同列 / 同列不同行 / 表头 均 -1(整 grid 单一停靠点)
67
- expect(rovingTabindexAt(2, 0, focus)).toBe(-1);
68
- expect(rovingTabindexAt(1, 1, focus)).toBe(-1);
69
- expect(rovingTabindexAt(-1, 0, focus)).toBe(-1);
70
- });
71
-
72
- it('聚焦后表头首格不再是停靠点', () => {
73
- const focus = { row: 0, col: 0, hasFocused: true };
74
- expect(isFocusCell(-1, 0, focus)).toBe(false);
75
- expect(isFocusCell(0, 0, focus)).toBe(true);
76
- });
77
- });
78
-
79
- describe('nextGridCoord — 行向漫游(↑↓)', () => {
80
- it('ArrowDown 逐行下移', () => {
81
- expect(move('ArrowDown', { row: 0, col: 1 })).toEqual({ row: 1, col: 1 });
82
- });
83
-
84
- it('ArrowDown 到最后一行后 clamp(不环绕)', () => {
85
- expect(move('ArrowDown', { row: 4, col: 1 })).toEqual({ row: 4, col: 1 });
86
- });
87
-
88
- it('ArrowUp 从首数据行回到表头行(-1)', () => {
89
- expect(move('ArrowUp', { row: 0, col: 2 })).toEqual({ row: -1, col: 2 });
90
- });
91
-
92
- it('ArrowUp 在表头行 clamp 到 -1(不越过表头)', () => {
93
- expect(move('ArrowUp', { row: -1, col: 2 })).toEqual({ row: -1, col: 2 });
94
- });
95
-
96
- it('ArrowDown 从表头进入首数据行', () => {
97
- expect(move('ArrowDown', { row: -1, col: 0 })).toEqual({ row: 0, col: 0 });
98
- });
99
- });
100
-
101
- describe('nextGridCoord — 列向漫游(←→)', () => {
102
- it('ArrowRight 逐列右移', () => {
103
- expect(move('ArrowRight', { row: 2, col: 0 })).toEqual({ row: 2, col: 1 });
104
- });
105
-
106
- it('ArrowRight 到末列 clamp(不环绕)', () => {
107
- expect(move('ArrowRight', { row: 2, col: 3 })).toEqual({ row: 2, col: 3 });
108
- });
109
-
110
- it('ArrowLeft 到首列 clamp(不环绕)', () => {
111
- expect(move('ArrowLeft', { row: 2, col: 0 })).toEqual({ row: 2, col: 0 });
112
- });
113
- });
114
-
115
- describe('nextGridCoord — Home / End(行内)', () => {
116
- it('Home 跳行内首列,行不变', () => {
117
- expect(move('Home', { row: 3, col: 2 })).toEqual({ row: 3, col: 0 });
118
- });
119
-
120
- it('End 跳行内末列,行不变', () => {
121
- expect(move('End', { row: 3, col: 1 })).toEqual({ row: 3, col: 3 });
122
- });
123
- });
124
-
125
- describe('nextGridCoord — Ctrl/Cmd+Home / End(表格首末)', () => {
126
- it('Ctrl+Home 跳表头首格 (-1,0)', () => {
127
- expect(move('Home', { row: 4, col: 3 }, {}, { ctrl: true })).toEqual({ row: -1, col: 0 });
128
- });
129
-
130
- it('Cmd+End 跳末数据行末格', () => {
131
- expect(move('End', { row: 0, col: 0 }, {}, { meta: true })).toEqual({ row: 4, col: 3 });
132
- });
133
- });
134
-
135
- describe('nextGridCoord — PageUp / PageDown(翻屏)', () => {
136
- it('PageDown 下翻 pageRows 行', () => {
137
- expect(move('PageDown', { row: 0, col: 1 }, { pageRows: 3 })).toEqual({ row: 3, col: 1 });
138
- });
139
-
140
- it('PageDown 越界 clamp 到末行', () => {
141
- expect(move('PageDown', { row: 3, col: 1 }, { pageRows: 3 })).toEqual({ row: 4, col: 1 });
142
- });
143
-
144
- it('PageUp 上翻 pageRows 行', () => {
145
- expect(move('PageUp', { row: 4, col: 2 }, { pageRows: 3 })).toEqual({ row: 1, col: 2 });
146
- });
147
-
148
- it('PageUp 越界 clamp 到表头行(-1)', () => {
149
- expect(move('PageUp', { row: 1, col: 2 }, { pageRows: 3 })).toEqual({ row: -1, col: 2 });
150
- });
151
-
152
- it('PageDown 从表头落到首屏末行', () => {
153
- expect(move('PageDown', { row: -1, col: 0 }, { pageRows: 3 })).toEqual({ row: 2, col: 0 });
154
- });
155
- });
156
-
157
- describe('nextGridCoord — 非漫游键 / 边界', () => {
158
- it('非漫游键返回 null(不拦截)', () => {
159
- expect(move('a', { row: 0, col: 0 })).toBeNull();
160
- expect(move('Tab', { row: 0, col: 0 })).toBeNull();
161
- expect(move('Enter', { row: 0, col: 0 })).toBeNull();
162
- });
163
-
164
- it('空数据表(rowCount=0)下移仍 clamp 到表头行', () => {
165
- expect(move('ArrowDown', { row: -1, col: 0 }, { rowCount: 0 })).toEqual({ row: -1, col: 0 });
166
- });
167
-
168
- it('不修改入参坐标对象(纯函数)', () => {
169
- const cur = { row: 0, col: 0 };
170
- nextGridCoord('ArrowDown', {}, params({ current: cur }));
171
- expect(cur).toEqual({ row: 0, col: 0 });
172
- });
173
- });
@@ -1,146 +0,0 @@
1
- /**
2
- * Table 交互态 Grid Pattern — 纯函数二维漫游核心(与 DOM/Svelte 无关,可单测)。
3
- *
4
- * 焦点坐标用「逻辑索引」表示:
5
- * - row: -1 = 表头行;0..rowCount-1 = 数据行(逻辑序,与虚拟化是否渲染无关)。
6
- * - col: 索引进「网格列」扁平表 [expand?, selection?, ...dataColumns]。
7
- *
8
- * 渲染层持有 row/col 的 $state 与命令式 focus(),本模块只据按键算「下一坐标」
9
- * (WAI-ARIA APG Grid Pattern 二维漫游 + Home/End/Ctrl+Home/End/PageUp/PageDown)。
10
- *
11
- * See specs/components/show/Table.spec.md §6(无障碍 · grid 键盘)。
12
- */
13
-
14
- import { nextRovingIndex } from '@chenzy-design/core';
15
-
16
- export type GridColKind = 'expand' | 'selection' | 'data';
17
- export interface GridCol {
18
- kind: GridColKind;
19
- /** data 列对应的原 columns 索引;非 data 列为 -1 */
20
- dataCol: number;
21
- }
22
-
23
- export interface GridCoord {
24
- /** -1 = 表头行;>=0 = 数据行逻辑索引 */
25
- row: number;
26
- /** 网格列索引 */
27
- col: number;
28
- }
29
-
30
- /**
31
- * 构建网格列扁平表:前置 expand / selection 占位列 + 数据列。
32
- * 仅用于焦点坐标 ↔ 实际列的换算。
33
- */
34
- export function buildGridCols(opts: {
35
- hasExpand: boolean;
36
- hasSelection: boolean;
37
- dataColumnCount: number;
38
- }): GridCol[] {
39
- const out: GridCol[] = [];
40
- if (opts.hasExpand) out.push({ kind: 'expand', dataCol: -1 });
41
- if (opts.hasSelection) out.push({ kind: 'selection', dataCol: -1 });
42
- for (let i = 0; i < opts.dataColumnCount; i++) {
43
- out.push({ kind: 'data', dataCol: i });
44
- }
45
- return out;
46
- }
47
-
48
- /**
49
- * 某 (row,col) 是否为当前 roving 焦点格(纯函数,render 期只读)。
50
- * 未聚焦过(hasFocused=false)时,首个 tab 停靠点固定为表头首格 (-1, 0)。
51
- */
52
- export function isFocusCell(
53
- row: number,
54
- col: number,
55
- focus: { row: number; col: number; hasFocused: boolean },
56
- ): boolean {
57
- if (!focus.hasFocused) return row === -1 && col === 0;
58
- return row === focus.row && col === focus.col;
59
- }
60
-
61
- /**
62
- * 单元格 roving tabindex:焦点格 0,其余 -1(WAI-ARIA roving,单一 Tab 停靠点)。
63
- */
64
- export function rovingTabindexAt(
65
- row: number,
66
- col: number,
67
- focus: { row: number; col: number; hasFocused: boolean },
68
- ): 0 | -1 {
69
- return isFocusCell(row, col, focus) ? 0 : -1;
70
- }
71
-
72
- export interface GridNavParams {
73
- /** 当前焦点坐标 */
74
- current: GridCoord;
75
- /** 数据行数(不含表头) */
76
- rowCount: number;
77
- /** 网格列数 */
78
- colCount: number;
79
- /** PageUp/PageDown 每次翻动的行数(>=1) */
80
- pageRows: number;
81
- }
82
-
83
- /**
84
- * 据键盘事件 key + 修饰键算出下一焦点坐标(纯函数,不改入参)。
85
- * 返回 null 表示该键不是漫游键(不处理)。
86
- *
87
- * 行向:ArrowUp/Down 逐行(表头 row=-1 为上界,最后数据行为下界,不环绕)。
88
- * 列向:ArrowLeft/Right 逐列(复用 core nextRovingIndex,clamp 不环绕)。
89
- * Home/End:行内首/末列;Ctrl/Cmd+Home/End:跳表头首格 / 末数据行末格。
90
- * PageUp/PageDown:上/下翻 pageRows 行(clamp 到 [-1, lastRow])。
91
- */
92
- export function nextGridCoord(
93
- key: string,
94
- modifiers: { ctrl?: boolean; meta?: boolean },
95
- params: GridNavParams,
96
- ): GridCoord | null {
97
- const { current, rowCount, colCount, pageRows } = params;
98
- const lastRow = rowCount - 1;
99
- const lastCol = colCount - 1;
100
- const ctrlOrMeta = !!modifiers.ctrl || !!modifiers.meta;
101
- let { row, col } = current;
102
-
103
- switch (key) {
104
- case 'ArrowUp':
105
- row = row <= -1 ? -1 : row - 1;
106
- break;
107
- case 'ArrowDown':
108
- row = row >= lastRow ? lastRow : row + 1;
109
- break;
110
- case 'ArrowLeft':
111
- col = nextRovingIndex(col, colCount, 'prev');
112
- break;
113
- case 'ArrowRight':
114
- col = nextRovingIndex(col, colCount, 'next');
115
- break;
116
- case 'Home':
117
- if (ctrlOrMeta) {
118
- row = -1;
119
- col = 0;
120
- } else {
121
- col = 0;
122
- }
123
- break;
124
- case 'End':
125
- if (ctrlOrMeta) {
126
- row = lastRow;
127
- col = lastCol;
128
- } else {
129
- col = lastCol;
130
- }
131
- break;
132
- case 'PageDown':
133
- row = row < 0 ? Math.min(lastRow, pageRows - 1) : Math.min(lastRow, row + pageRows);
134
- break;
135
- case 'PageUp':
136
- row = row < 0 ? -1 : Math.max(-1, row - pageRows);
137
- break;
138
- default:
139
- return null;
140
- }
141
-
142
- // colCount 为 0 时 col clamp 到 0;lastRow < -1(无数据行)时 row 不超过 -1。
143
- if (lastRow < -1) row = -1;
144
- if (row > lastRow && lastRow >= -1) row = Math.max(-1, lastRow);
145
- return { row, col };
146
- }
@@ -1,13 +0,0 @@
1
- export { default as Table } from './Table.svelte';
2
- export { meta as tableMeta } from './meta.js';
3
- export type {
4
- ColumnDef,
5
- RowSelection,
6
- Expandable,
7
- TreeTable,
8
- TableChangeInfo,
9
- TableChangeAction,
10
- TableScrollInfo,
11
- ScrollConfig,
12
- } from './types.js';
13
- export type { RowKey, SortState, SortOrder } from '@chenzy-design/core';
package/src/table/meta.ts DELETED
@@ -1,121 +0,0 @@
1
- /**
2
- * Machine-readable component metadata for AI/docs consumption.
3
- * Table — see specs/components/show/Table.spec.md
4
- */
5
- export const meta = {
6
- name: 'Table',
7
- category: 'show',
8
- description:
9
- '表格:列定义驱动渲染,三态排序(升/降/无)、客户端分页、行选择(含半选 indeterminate);sortState / rowSelection.selectedRowKeys / pagination.current 受控不回写,仅经 onSortChange / onChange 通知。复用 @chenzy-design/core 纯函数算法与 Pagination 组件。支持行展开 expandable(受控/非受控)。固定列 fixed、列筛选 filters/onFilter、列宽拖拽 resizable(本地覆盖宽度不写回 columns)。树形数据 tree(行含 children 自动嵌套,第一列展开三角+缩进,排序/分页作用于顶层行,扁平化用 core flattenTreeRows 纯函数,受控展开 keys 不回写)。树形行选择父子联动 rowSelection.checkStrictly(默认 false 勾父连带后代+半选,true 父子独立;联动用 core conductRows/toggleRowCheck 纯函数)。行虚拟滚动 virtualized:仅渲染视口内行切片(复用 core fixedRange),首尾 padding spacer tr 撑总高,保持原生 table 语义;thead sticky 固定顶部;与 pagination 互斥(虚拟时忽略分页)。',
10
- exports: ['Table'],
11
- props: [
12
- { name: 'columns', type: 'ColumnDef<T>[]', default: '[]', desc: '列定义:key/dataIndex/title/width/fixed/resizable/align/ellipsis/sorter/filters/onFilter/render' },
13
- { name: 'dataSource', type: 'T[]', default: '[]', desc: '数据行' },
14
- { name: 'rowKey', type: "string | ((record: T) => RowKey)", default: "'key'", desc: '行唯一键解析' },
15
- { name: 'size', type: "'small'|'default'|'large'", default: "'default'" },
16
- { name: 'bordered', type: 'boolean', default: 'false', desc: '单元格边框' },
17
- { name: 'stripe', type: 'boolean', default: 'false', desc: '斑马纹' },
18
- { name: 'loading', type: 'boolean', default: 'false', desc: '半透明遮罩 + spinner' },
19
- { name: 'sortState', type: 'SortState', default: 'undefined', desc: '受控排序态;受控时不回写,仅 onSortChange' },
20
- { name: 'defaultSortState', type: 'SortState', default: '{ key: null, order: null }', desc: '非受控初始排序' },
21
- { name: 'onSortChange', type: '(state: SortState) => void', default: 'undefined' },
22
- {
23
- name: 'pagination',
24
- type: "false | { pageSize?: number; current?: number; defaultCurrent?: number; onChange?: (page: number) => void }",
25
- default: 'undefined',
26
- desc: 'false 关闭;对象/缺省启用内置分页(pageSize 默认 10)。current 受控不回写',
27
- },
28
- {
29
- name: 'rowSelection',
30
- type: 'RowSelection<T>',
31
- default: 'undefined',
32
- desc: 'selectedRowKeys 受控不回写;defaultSelectedRowKeys / onChange / getCheckboxProps;checkStrictly(默认 false) 树形父子联动开关:false 勾父连带勾后代+后代部分选中父行半选,true 父子独立',
33
- },
34
- {
35
- name: 'expandable',
36
- type: 'Expandable<T>',
37
- default: 'undefined',
38
- desc: 'expandedRowRender / rowExpandable / expandedRowKeys 受控不回写 / defaultExpandedRowKeys / onExpand',
39
- },
40
- {
41
- name: 'tree',
42
- type: 'boolean | TreeTable',
43
- default: 'undefined',
44
- desc: '树形数据:true 或 { childrenColumnName(默认 children) / indentSize(默认 16) / expandedRowKeys 受控不回写 / defaultExpandedRowKeys / onExpand }。第一列内展开三角+逐级缩进;排序/分页/筛选作用于顶层行',
45
- },
46
- { name: 'rowClassName', type: '(record: T, index: number) => string', default: 'undefined' },
47
- { name: 'empty', type: 'string', default: "'暂无数据'", desc: '空数据占位文案' },
48
- { name: 'ariaLabel', type: 'string', default: 'undefined', desc: 'table aria-label' },
49
- { name: 'onRowClick', type: '(info: { record: T; index: number }) => void', default: 'undefined' },
50
- { name: 'virtualized', type: 'boolean', default: 'false', desc: '行虚拟滚动:仅渲染视口内行,适合大数据(1000+)。启用时忽略 pagination(全量滚动)、表头 sticky 固定顶部;假定行等高,不建议与 expandable 混用' },
51
- { name: 'height', type: 'number', default: '400', desc: '虚拟滚动视口高度(px),virtualized 时生效' },
52
- { name: 'rowHeight', type: 'number', default: '48', desc: '虚拟滚动行高(px),virtualized 时生效' },
53
- ],
54
- events: [
55
- { name: 'onSortChange', desc: '表头排序切换(三态循环)' },
56
- { name: 'rowSelection.onChange', desc: '行选择变更,回传 keys 与对应 rows' },
57
- { name: 'pagination.onChange', desc: '页码变更' },
58
- { name: 'onRowClick', desc: '行点击(复选框/排序按钮已阻止冒泡)' },
59
- ],
60
- slots: [
61
- { name: 'column.render', desc: '单元格自定义渲染 Snippet<[{ value, record, index }]>' },
62
- { name: 'empty', desc: '空态文案经 empty prop 配置(字符串)' },
63
- ],
64
- a11y: {
65
- hasRole: true,
66
- focusable: true,
67
- pattern: 'grid|table',
68
- keyboard: '↑↓ 行 / ←→ 列 / Home·End 行内首末 / Ctrl·Cmd+Home·End 表首末 / PageUp·PageDown 翻屏 / Enter·F2 进入单元格交互、Esc 退出',
69
- note: '交互态(排序/筛选/行选择/展开/树形/行点击任一)遵循 WAI-ARIA APG Grid Pattern:role=grid + aria-rowcount/colcount(虚拟化为逻辑总数) + role=row(aria-rowindex 真实序) + role=columnheader/rowheader/gridcell + aria-colindex;单元格 roving tabindex(整 grid 单一 Tab 停靠点,纯派生),二维方向键漫游(纯函数 nextGridCoord),命令式 focusCell 聚焦;虚拟化下方向键移到未渲染行先滚动进视口再 tick 后聚焦,焦点行被回收时回退到 grid 容器并 announce(不掉 body);Enter/F2 进入单元格内控件交互模式、Esc 退出回导航(导航模式下单元格内控件 tabindex=-1 不破坏 roving)。纯展示表(无交互)降级为 role=table 省漫游。可排序列 aria-sort(ascending/descending/none);行选择原生 checkbox,全选 aria-label「全选」、行选「选择此行」,半选经 attachment 命令式设 input.indeterminate(只写属性、不读几何、无响应式循环);焦点环 --cd-focus-ring;reduced-motion 关闭 spinner 与图标过渡。',
70
- },
71
- tokens: [
72
- '--cd-table-bg',
73
- '--cd-table-header-bg',
74
- '--cd-table-header-text',
75
- '--cd-table-cell-text',
76
- '--cd-table-border-color',
77
- '--cd-table-row-hover-bg',
78
- '--cd-table-row-selected-bg',
79
- '--cd-table-row-stripe-bg',
80
- '--cd-table-cell-padding-y',
81
- '--cd-table-cell-padding-x',
82
- '--cd-table-cell-padding-y-small',
83
- '--cd-table-cell-padding-y-large',
84
- '--cd-table-sort-active-color',
85
- '--cd-table-sort-icon-color',
86
- '--cd-table-loading-mask',
87
- '--cd-table-empty-color',
88
- '--cd-table-radius',
89
- ],
90
- responsive: false,
91
- examples: [
92
- {
93
- title: '基础',
94
- code: '<Table {columns} dataSource={data} rowKey="id" />',
95
- },
96
- {
97
- title: '可排序',
98
- code: '<Table columns={[{ dataIndex: "age", title: "年龄", sorter: true }]} dataSource={data} />',
99
- },
100
- {
101
- title: '行选择 + 分页',
102
- code: '<Table {columns} dataSource={data} rowSelection={{ onChange: (keys) => (selected = keys) }} pagination={{ pageSize: 10 }} />',
103
- },
104
- {
105
- title: '列宽拖拽',
106
- code: '<Table columns={[{ dataIndex: "name", title: "姓名", width: 160, resizable: true }]} dataSource={data} />',
107
- },
108
- {
109
- title: '树形数据',
110
- code: '<Table {columns} dataSource={treeRows} rowKey="key" tree={{ defaultExpandedRowKeys: [1] }} />',
111
- },
112
- {
113
- title: '树形行选择父子联动',
114
- code: '<Table {columns} dataSource={treeRows} rowKey="key" tree rowSelection={{ onChange: (keys) => (selected = keys) }} />',
115
- },
116
- {
117
- title: '行虚拟滚动(大数据)',
118
- code: '<Table {columns} dataSource={bigData} rowKey="id" virtualized height={400} rowHeight={48} />',
119
- },
120
- ],
121
- } as const;
@@ -1,133 +0,0 @@
1
- /**
2
- * Table 公共类型 — 由 Table.svelte 消费、index.ts 对外 re-export。
3
- * 拆成独立模块以避免 .svelte 组件无法导出类型声明的限制。
4
- * See specs/components/show/Table.spec.md
5
- */
6
- import type { Snippet } from 'svelte';
7
- import type { RowKey } from '@chenzy-design/core';
8
-
9
- export type Align = 'left' | 'center' | 'right';
10
- export type TableSize = 'small' | 'default' | 'large';
11
-
12
- export interface ColumnDef<T> {
13
- /** 列唯一键,缺省回退 dataIndex / 列索引 */
14
- key?: string;
15
- /** 取值字段 */
16
- dataIndex?: keyof T & string;
17
- /** 表头文案 */
18
- title: string;
19
- /** 列宽 */
20
- width?: number | string;
21
- /** 固定列:横向滚动时左/右侧 sticky 锁定(需配合 width 数值) */
22
- fixed?: 'left' | 'right';
23
- /** 列宽可拖拽调整:列头右侧出现拖拽手柄,指针拖拽实时改列宽 */
24
- resizable?: boolean;
25
- /** 对齐方式,默认 left */
26
- align?: Align;
27
- /** 单元格溢出省略 */
28
- ellipsis?: boolean;
29
- /** true 按 dataIndex 默认比较;或自定义比较器 */
30
- sorter?: boolean | ((a: T, b: T) => number);
31
- /** 受控排序状态(当前列)*/
32
- sortOrder?: 'ascend' | 'descend' | null;
33
- /** 默认排序状态 */
34
- defaultSortOrder?: 'ascend' | 'descend' | null;
35
- /** 列头筛选项(下拉多选);配合 onFilter 过滤数据 */
36
- filters?: { text: string; value: string | number }[];
37
- /** 受控列筛选值 */
38
- filteredValue?: (string | number)[] | null;
39
- /** 是否多选筛选,默认 true */
40
- filterMultiple?: boolean;
41
- /** 行是否匹配某筛选值;缺省时按 dataIndex 全等比较 */
42
- onFilter?: (value: string | number, record: T) => boolean;
43
- /** 单元格自定义渲染 */
44
- render?: Snippet<[{ value: unknown; record: T; index: number }]>;
45
- }
46
-
47
- export interface Expandable<T> {
48
- /** 展开行内容渲染 */
49
- expandedRowRender: Snippet<[{ record: T; index: number }]>;
50
- /** 该行是否可展开,默认全部可展开 */
51
- rowExpandable?: (record: T) => boolean;
52
- /** 受控展开行 key 列表 */
53
- expandedRowKeys?: RowKey[];
54
- /** 非受控初始展开 */
55
- defaultExpandedRowKeys?: RowKey[];
56
- /** 展开/收起回调 */
57
- onExpand?: (expanded: boolean, record: T) => void;
58
- }
59
-
60
- export interface TreeTable {
61
- /** 子行字段名,默认 'children' */
62
- childrenColumnName?: string;
63
- /** 每层缩进像素,默认 16 */
64
- indentSize?: number;
65
- /** 非受控初始展开行 key 列表 */
66
- defaultExpandedRowKeys?: RowKey[];
67
- /** 受控展开行 key 列表;受控时不回写,仅 onExpand 通知 */
68
- expandedRowKeys?: RowKey[];
69
- /** 展开/收起回调 */
70
- onExpand?: (expanded: boolean, key: RowKey) => void;
71
- }
72
-
73
- export interface RowSelection<T> {
74
- /** 受控选中行 key 列表 */
75
- selectedRowKeys?: RowKey[];
76
- /** 非受控初始选中 */
77
- defaultSelectedRowKeys?: RowKey[];
78
- /** 选择变更回调 */
79
- onChange?: (keys: RowKey[], rows: T[]) => void;
80
- /** 逐行定制复选框属性(如 disabled) */
81
- getCheckboxProps?: (record: T) => { disabled?: boolean };
82
- /**
83
- * 树形表父子选择是否独立。默认 false:勾选父行连带勾选所有后代,
84
- * 后代部分选中时父行显示半选(indeterminate)。true 时父子互不联动
85
- * (等同非树形表逐行选择,向后兼容)。仅在 tree 启用时生效。
86
- */
87
- checkStrictly?: boolean;
88
- /** 选择方式: checkbox(多选)或 radio(单选),默认 checkbox */
89
- type?: 'checkbox' | 'radio';
90
- /** 单行选择回调 */
91
- onSelect?: (record: T, selected: boolean, selectedRows: T[]) => void;
92
- /** 全选回调 */
93
- onSelectAll?: (selected: boolean, selectedRows: T[], changedRows: T[]) => void;
94
- /** 选择列固定 */
95
- fixed?: boolean | 'left';
96
- /** 选择列宽度 */
97
- columnWidth?: number | string;
98
- /** 隐藏全选框 */
99
- hideSelectAll?: boolean;
100
- }
101
-
102
- export interface ScrollConfig {
103
- x?: number | string;
104
- y?: number | string;
105
- scrollToFirstRowOnChange?: boolean;
106
- }
107
-
108
- /** 聚合 onChange 的 extra.action 取值 */
109
- export type TableChangeAction = 'paginate' | 'sort' | 'filter';
110
-
111
- /** 聚合 onChange 载荷(排序/筛选/分页任一变化的主入口,spec §4) */
112
- export interface TableChangeInfo {
113
- pagination: { current: number; pageSize: number };
114
- filters: Record<string, (string | number)[]>;
115
- sorter: SortStateLike;
116
- extra: { action: TableChangeAction };
117
- }
118
-
119
- /** onScroll 载荷(spec §4,含触底用于无限加载) */
120
- export interface TableScrollInfo {
121
- scrollLeft: number;
122
- scrollTop: number;
123
- atLeft: boolean;
124
- atRight: boolean;
125
- atTop: boolean;
126
- atBottom: boolean;
127
- }
128
-
129
- // 局部别名,避免在本文件引入对 SortState 的运行期依赖说明
130
- type SortStateLike = import('@chenzy-design/core').SortState;
131
-
132
- export type { RowKey } from '@chenzy-design/core';
133
- export type { SortState, SortOrder } from '@chenzy-design/core';