@kine-design/core 0.0.1-beta.1 → 0.0.1-beta.10

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 (426) hide show
  1. package/.vlaude/last-session-id +1 -0
  2. package/.vlaude/session-switch.signal +1 -0
  3. package/assets/style/global.css +1 -0
  4. package/assets/style/var/Wuxing.css +71 -0
  5. package/assets/style/var.css +23 -0
  6. package/components/base/affix/api.ts +16 -0
  7. package/components/base/affix/index.ts +17 -0
  8. package/components/base/affix/props.d.ts +34 -0
  9. package/components/base/affix/useAffix.ts +124 -0
  10. package/components/base/alert/api.ts +18 -0
  11. package/components/base/alert/index.ts +15 -0
  12. package/components/base/alert/props.d.ts +50 -0
  13. package/components/base/anchor/api.ts +20 -0
  14. package/components/base/anchor/index.ts +18 -0
  15. package/components/base/anchor/props.d.ts +46 -0
  16. package/components/base/anchor/useAnchor.ts +84 -0
  17. package/components/base/autoComplete/api.ts +24 -0
  18. package/components/base/autoComplete/index.ts +17 -0
  19. package/components/base/autoComplete/props.d.ts +75 -0
  20. package/components/base/autoComplete/useAutoComplete.ts +157 -0
  21. package/components/base/avatar/api.ts +17 -0
  22. package/components/base/avatar/avatar.css +61 -0
  23. package/components/base/avatar/index.ts +15 -0
  24. package/components/base/avatar/props.d.ts +37 -0
  25. package/components/base/backTop/api.ts +17 -0
  26. package/components/base/backTop/index.ts +17 -0
  27. package/components/base/backTop/props.d.ts +38 -0
  28. package/components/base/backTop/useBackTop.ts +62 -0
  29. package/components/base/badge/api.ts +22 -0
  30. package/components/base/badge/index.ts +15 -0
  31. package/components/base/badge/props.d.ts +50 -0
  32. package/components/base/button/api.ts +28 -0
  33. package/components/base/button/button.css +34 -0
  34. package/components/base/button/index.ts +17 -0
  35. package/components/base/button/props.d.ts +66 -0
  36. package/components/base/button/useButton.ts +37 -0
  37. package/components/base/card/api.ts +17 -0
  38. package/components/base/card/index.ts +15 -0
  39. package/components/base/card/props.d.ts +37 -0
  40. package/components/base/carousel/api.ts +28 -0
  41. package/components/base/carousel/index.ts +17 -0
  42. package/components/base/carousel/props.d.ts +72 -0
  43. package/components/base/carousel/useCarousel.ts +150 -0
  44. package/components/base/cascader/api.ts +23 -0
  45. package/components/base/cascader/index.ts +18 -0
  46. package/components/base/cascader/props.d.ts +103 -0
  47. package/components/base/cascader/useCascader.ts +335 -0
  48. package/components/base/checkbox/api.ts +24 -0
  49. package/components/base/checkbox/checkbox.css +0 -0
  50. package/components/base/checkbox/index.ts +17 -0
  51. package/components/base/checkbox/props.d.ts +77 -0
  52. package/components/base/checkbox/useCheckbox.ts +43 -0
  53. package/components/base/collapse/api.ts +21 -0
  54. package/components/base/collapse/index.ts +18 -0
  55. package/components/base/collapse/props.d.ts +45 -0
  56. package/components/base/collapse/useCollapse.ts +81 -0
  57. package/components/base/datePicker/__tests__/useDatePicker.test.ts +244 -0
  58. package/components/base/datePicker/api.ts +22 -0
  59. package/components/base/datePicker/index.ts +19 -0
  60. package/components/base/datePicker/props.d.ts +86 -0
  61. package/components/base/datePicker/useDatePicker.ts +392 -0
  62. package/components/base/divider/api.ts +15 -0
  63. package/components/base/divider/divider.css +11 -0
  64. package/components/base/divider/index.ts +15 -0
  65. package/components/base/divider/props.d.ts +30 -0
  66. package/components/base/dropdown/api.ts +33 -0
  67. package/components/base/dropdown/index.ts +18 -0
  68. package/components/base/dropdown/props.d.ts +60 -0
  69. package/components/base/dropdown/useDropdown.ts +124 -0
  70. package/components/base/empty/api.ts +15 -0
  71. package/components/base/empty/index.ts +15 -0
  72. package/components/base/empty/props.d.ts +26 -0
  73. package/components/base/image/__tests__/useImage.test.ts +176 -0
  74. package/components/base/image/api.ts +25 -0
  75. package/components/base/image/index.ts +18 -0
  76. package/components/base/image/props.d.ts +67 -0
  77. package/components/base/image/useImage.ts +119 -0
  78. package/components/base/input/api.ts +23 -0
  79. package/components/base/input/index.ts +17 -0
  80. package/components/base/input/input.css +19 -0
  81. package/components/base/input/props.d.ts +85 -0
  82. package/components/base/input/useInput.ts +63 -0
  83. package/components/base/inputNumber/__tests__/useInputNumber.test.ts +189 -0
  84. package/components/base/inputNumber/api.ts +23 -0
  85. package/components/base/inputNumber/index.ts +17 -0
  86. package/components/base/inputNumber/props.d.ts +78 -0
  87. package/components/base/inputNumber/useInputNumber.ts +182 -0
  88. package/components/base/li/api.ts +15 -0
  89. package/components/base/li/index.ts +15 -0
  90. package/components/base/li/props.d.ts +30 -0
  91. package/components/base/list/api.ts +16 -0
  92. package/components/base/list/index.ts +17 -0
  93. package/components/base/list/props.d.ts +33 -0
  94. package/components/base/list/useList.ts +36 -0
  95. package/components/base/loading/api.ts +17 -0
  96. package/components/base/loading/index.ts +15 -0
  97. package/components/base/loading/props.d.ts +40 -0
  98. package/components/base/popover/api.ts +28 -0
  99. package/components/base/popover/index.ts +17 -0
  100. package/components/base/popover/props.d.ts +73 -0
  101. package/components/base/popover/usePopover.ts +193 -0
  102. package/components/base/progress/api.ts +20 -0
  103. package/components/base/progress/index.ts +17 -0
  104. package/components/base/progress/props.d.ts +68 -0
  105. package/components/base/progress/useProgress.ts +28 -0
  106. package/components/base/radio/api.ts +19 -0
  107. package/components/base/radio/index.ts +19 -0
  108. package/components/base/radio/props.d.ts +59 -0
  109. package/components/base/radio/useRadio.ts +11 -0
  110. package/components/base/rate/api.ts +18 -0
  111. package/components/base/rate/index.ts +17 -0
  112. package/components/base/rate/props.d.ts +49 -0
  113. package/components/base/rate/useRate.ts +76 -0
  114. package/components/base/result/api.ts +20 -0
  115. package/components/base/result/index.ts +15 -0
  116. package/components/base/result/props.d.ts +36 -0
  117. package/components/base/select/api.ts +34 -0
  118. package/components/base/select/index.ts +18 -0
  119. package/components/base/select/props.d.ts +152 -0
  120. package/components/base/select/select.css +7 -0
  121. package/components/base/select/useSelect.ts +281 -0
  122. package/components/base/select/useSelectTools.ts +60 -0
  123. package/components/base/skeleton/api.ts +18 -0
  124. package/components/base/skeleton/index.ts +15 -0
  125. package/components/base/skeleton/props.d.ts +41 -0
  126. package/components/base/slider/api.ts +22 -0
  127. package/components/base/slider/index.ts +17 -0
  128. package/components/base/slider/props.d.ts +79 -0
  129. package/components/base/slider/useSlider.ts +87 -0
  130. package/components/base/space/api.ts +17 -0
  131. package/components/base/space/index.ts +15 -0
  132. package/components/base/space/props.d.ts +39 -0
  133. package/components/base/steps/__tests__/useSteps.test.ts +46 -0
  134. package/components/base/steps/api.ts +30 -0
  135. package/components/base/steps/index.ts +22 -0
  136. package/components/base/steps/props.d.ts +88 -0
  137. package/components/base/steps/useSteps.ts +101 -0
  138. package/components/base/switch/api.ts +22 -0
  139. package/components/base/switch/index.ts +19 -0
  140. package/components/base/switch/props.d.ts +66 -0
  141. package/components/base/switch/useSwitch.tsx +80 -0
  142. package/components/base/tabs/api.ts +23 -0
  143. package/components/base/tabs/index.ts +18 -0
  144. package/components/base/tabs/props.d.ts +41 -0
  145. package/components/base/tabs/useTabs.ts +67 -0
  146. package/components/base/tag/api.ts +17 -0
  147. package/components/base/tag/index.ts +15 -0
  148. package/components/base/tag/props.d.ts +51 -0
  149. package/components/base/timePicker/__tests__/useTimePicker.test.ts +124 -0
  150. package/components/base/timePicker/api.ts +24 -0
  151. package/components/base/timePicker/index.ts +18 -0
  152. package/components/base/timePicker/props.d.ts +86 -0
  153. package/components/base/timePicker/useTimePicker.ts +161 -0
  154. package/components/base/timeline/api.ts +24 -0
  155. package/components/base/timeline/index.ts +16 -0
  156. package/components/base/timeline/props.d.ts +60 -0
  157. package/components/base/tooltip/api.ts +21 -0
  158. package/components/base/tooltip/index.ts +18 -0
  159. package/components/base/tooltip/props.d.ts +46 -0
  160. package/components/base/tooltip/useTooltip.ts +208 -0
  161. package/components/base/transfer/api.ts +18 -0
  162. package/components/base/transfer/index.ts +17 -0
  163. package/components/base/transfer/props.d.ts +63 -0
  164. package/components/base/transfer/useTransfer.ts +208 -0
  165. package/components/base/tree/__tests__/tree.test.ts +223 -0
  166. package/components/base/tree/api.ts +47 -0
  167. package/components/base/tree/index.ts +29 -0
  168. package/components/base/tree/props.d.ts +108 -0
  169. package/components/base/tree/tree.ts +263 -0
  170. package/components/base/tree/useTree.ts +114 -0
  171. package/components/message/confirm/api.ts +21 -0
  172. package/components/message/confirm/index.ts +15 -0
  173. package/components/message/confirm/props.d.ts +69 -0
  174. package/components/message/dialog/api.ts +20 -0
  175. package/components/message/dialog/index.ts +15 -0
  176. package/components/message/dialog/props.d.ts +62 -0
  177. package/components/message/drawer/api.ts +33 -0
  178. package/components/message/drawer/index.ts +15 -0
  179. package/components/message/drawer/props.d.ts +80 -0
  180. package/components/message/message/api.ts +27 -0
  181. package/components/message/message/index.ts +20 -0
  182. package/components/message/message/props.d.ts +54 -0
  183. package/components/message/message/useMessage.ts +61 -0
  184. package/components/message/notification/__tests__/useNotification.test.ts +129 -0
  185. package/components/message/notification/api.ts +23 -0
  186. package/components/message/notification/index.ts +19 -0
  187. package/components/message/notification/props.d.ts +64 -0
  188. package/components/message/notification/useNotification.ts +79 -0
  189. package/components/message/popover/MPopover.tsx +94 -0
  190. package/components/message/popover/api.ts +54 -0
  191. package/components/message/popover/index.ts +17 -0
  192. package/components/message/popover/popover.css +21 -0
  193. package/components/message/popover/props.d.ts +76 -0
  194. package/components/message/popover/usePopover.ts +234 -0
  195. package/components/other/darkMode/api.ts +17 -0
  196. package/components/other/darkMode/index.ts +17 -0
  197. package/components/other/darkMode/props.d.ts +37 -0
  198. package/components/other/darkMode/useDarkMode.ts +129 -0
  199. package/components/template/border/api.ts +18 -0
  200. package/components/template/border/index.ts +15 -0
  201. package/components/template/border/props.d.ts +41 -0
  202. package/components/template/breadcrumb/api.ts +15 -0
  203. package/components/template/breadcrumb/index.ts +15 -0
  204. package/components/template/breadcrumb/props.d.ts +45 -0
  205. package/components/template/descriptions/api.ts +23 -0
  206. package/components/template/descriptions/index.ts +16 -0
  207. package/components/template/descriptions/props.d.ts +54 -0
  208. package/components/template/form/api.ts +23 -0
  209. package/components/template/form/index.ts +20 -0
  210. package/components/template/form/props.d.ts +60 -0
  211. package/components/template/grid/api.ts +20 -0
  212. package/components/template/grid/index.ts +15 -0
  213. package/components/template/grid/props.d.ts +48 -0
  214. package/components/template/menu/__tests__/useMenu.test.ts +157 -0
  215. package/components/template/menu/api.ts +26 -0
  216. package/components/template/menu/index.ts +18 -0
  217. package/components/template/menu/props.d.ts +93 -0
  218. package/components/template/menu/useMenu.ts +155 -0
  219. package/components/template/pagination/__tests__/usePagination.test.ts +138 -0
  220. package/components/template/pagination/api.ts +22 -0
  221. package/components/template/pagination/index.ts +19 -0
  222. package/components/template/pagination/props.d.ts +65 -0
  223. package/components/template/pagination/usePagination.ts +186 -0
  224. package/components/template/table/__tests__/useTable.test.ts +138 -0
  225. package/components/template/table/api.ts +18 -0
  226. package/components/template/table/index.ts +18 -0
  227. package/components/template/table/props.d.ts +36 -0
  228. package/components/template/table/useTable.ts +136 -0
  229. package/components/template/tableColumn/api.ts +17 -0
  230. package/components/template/tableColumn/index.ts +15 -0
  231. package/components/template/tableColumn/props.d.ts +32 -0
  232. package/components/template/virtualList/api.ts +16 -0
  233. package/components/template/virtualList/index.ts +17 -0
  234. package/components/template/virtualList/props.d.ts +25 -0
  235. package/components/template/virtualList/useVirtualList.ts +237 -0
  236. package/components/types/hook.d.ts +24 -0
  237. package/components/types/props.d.ts +57 -0
  238. package/components/types/template.d.ts +59 -0
  239. package/compositions/commandPalette/index.ts +11 -0
  240. package/compositions/commandPalette/types.ts +29 -0
  241. package/compositions/commandPalette/useCommandPalette.ts +135 -0
  242. package/compositions/common/__tests__/useDebounceFn.test.ts +62 -0
  243. package/compositions/common/__tests__/useEventListener.test.ts +98 -0
  244. package/compositions/common/__tests__/usePopover.test.ts +43 -0
  245. package/compositions/common/__tests__/useTeleport.test.ts +32 -0
  246. package/compositions/common/defineCore.ts +55 -0
  247. package/compositions/common/testAnchor.ts +211 -0
  248. package/compositions/common/useComponentSize.ts +17 -0
  249. package/compositions/common/useDebounceFn.ts +27 -0
  250. package/compositions/common/useDrag.ts +65 -0
  251. package/compositions/common/useElementSize.ts +37 -0
  252. package/compositions/common/useEventListener.ts +48 -0
  253. package/compositions/common/usePopover.ts +45 -0
  254. package/compositions/common/useResizeObserver.ts +47 -0
  255. package/compositions/common/useTeleport.ts +24 -0
  256. package/compositions/contextMenu/index.ts +10 -0
  257. package/compositions/contextMenu/types.ts +21 -0
  258. package/compositions/contextMenu/useContextMenu.ts +101 -0
  259. package/compositions/editor/index.ts +18 -0
  260. package/compositions/editor/types.ts +147 -0
  261. package/compositions/editor/useEditor.ts +224 -0
  262. package/compositions/index.ts +15 -0
  263. package/compositions/input/__tests__/useBooleanInput.test.ts +73 -0
  264. package/compositions/input/useBooleanInput.ts +52 -0
  265. package/compositions/modal/__tests__/useModal.test.ts +110 -0
  266. package/compositions/modal/useModal.ts +72 -0
  267. package/compositions/overlay/index.ts +14 -0
  268. package/compositions/overlay/useOverlayStack.ts +146 -0
  269. package/compositions/peekView/index.ts +10 -0
  270. package/compositions/peekView/usePeekView.ts +99 -0
  271. package/compositions/popper/useClickAway.ts +41 -0
  272. package/compositions/popper/usePopper.ts +63 -0
  273. package/compositions/theme/index.ts +17 -0
  274. package/compositions/theme/presets/compact.ts +117 -0
  275. package/compositions/theme/presets/dark.ts +113 -0
  276. package/compositions/theme/presets/index.ts +11 -0
  277. package/compositions/theme/presets/light.ts +113 -0
  278. package/compositions/theme/types.ts +46 -0
  279. package/compositions/theme/useTheme.ts +269 -0
  280. package/compositions/toast/index.ts +10 -0
  281. package/compositions/toast/useToast.ts +176 -0
  282. package/compositions/tooltip/index.ts +9 -0
  283. package/compositions/tooltip/useTooltip.ts +10 -0
  284. package/compositions/utils/__tests__/filters.test.ts +136 -0
  285. package/compositions/utils/filters.ts +135 -0
  286. package/compositions/virtualList/__tests__/useHeightCache.test.ts +97 -0
  287. package/compositions/virtualList/enums.ts +52 -0
  288. package/compositions/virtualList/useContainerObserver.ts +89 -0
  289. package/compositions/virtualList/useEntries.ts +248 -0
  290. package/compositions/virtualList/useHeightCache.ts +83 -0
  291. package/compositions/virtualList/useSentinelObserver.ts +81 -0
  292. package/dist/components/base/affix/index.d.ts +2 -1
  293. package/dist/components/base/affix/useAffix.d.ts +7 -5
  294. package/dist/components/base/anchor/index.d.ts +2 -1
  295. package/dist/components/base/anchor/useAnchor.d.ts +3 -2
  296. package/dist/components/base/autoComplete/useAutoComplete.d.ts +14 -5
  297. package/dist/components/base/avatar/index.d.ts +1 -0
  298. package/dist/components/base/backTop/index.d.ts +2 -1
  299. package/dist/components/base/backTop/useBackTop.d.ts +2 -2
  300. package/dist/components/base/button/index.d.ts +3 -21
  301. package/dist/components/base/button/useButton.d.ts +5 -2
  302. package/dist/components/base/carousel/useCarousel.d.ts +7 -3
  303. package/dist/components/base/cascader/useCascader.d.ts +25 -12
  304. package/dist/components/base/checkbox/index.d.ts +2 -1
  305. package/dist/components/base/checkbox/useCheckbox.d.ts +5 -3
  306. package/dist/components/base/collapse/index.d.ts +2 -1
  307. package/dist/components/base/collapse/useCollapse.d.ts +4 -3
  308. package/dist/components/base/datePicker/__tests__/useDatePicker.test.d.ts +1 -0
  309. package/dist/components/base/datePicker/useDatePicker.d.ts +140 -8
  310. package/dist/components/base/dropdown/index.d.ts +2 -1
  311. package/dist/components/base/dropdown/useDropdown.d.ts +13 -6
  312. package/dist/components/base/image/__tests__/useImage.test.d.ts +1 -0
  313. package/dist/components/base/image/useImage.d.ts +5 -5
  314. package/dist/components/base/input/index.d.ts +2 -1
  315. package/dist/components/base/input/useInput.d.ts +4 -2
  316. package/dist/components/base/inputNumber/__tests__/useInputNumber.test.d.ts +1 -0
  317. package/dist/components/base/inputNumber/index.d.ts +2 -1
  318. package/dist/components/base/inputNumber/useInputNumber.d.ts +4 -3
  319. package/dist/components/base/li/index.d.ts +1 -0
  320. package/dist/components/base/list/index.d.ts +2 -1
  321. package/dist/components/base/list/useList.d.ts +1 -1
  322. package/dist/components/base/popover/index.d.ts +2 -1
  323. package/dist/components/base/popover/usePopover.d.ts +10 -9
  324. package/dist/components/base/progress/index.d.ts +2 -1
  325. package/dist/components/base/progress/useProgress.d.ts +2 -2
  326. package/dist/components/base/rate/index.d.ts +2 -1
  327. package/dist/components/base/rate/useRate.d.ts +3 -2
  328. package/dist/components/base/select/useSelect.d.ts +10 -9
  329. package/dist/components/base/slider/index.d.ts +2 -1
  330. package/dist/components/base/slider/useSlider.d.ts +5 -4
  331. package/dist/components/base/steps/__tests__/useSteps.test.d.ts +1 -0
  332. package/dist/components/base/steps/index.d.ts +1 -1
  333. package/dist/components/base/steps/useSteps.d.ts +5 -5
  334. package/dist/components/base/switch/index.d.ts +2 -1
  335. package/dist/components/base/switch/useSwitch.d.ts +9 -3
  336. package/dist/components/base/tabs/index.d.ts +1 -1
  337. package/dist/components/base/tabs/useTabs.d.ts +4 -3
  338. package/dist/components/base/tag/index.d.ts +1 -0
  339. package/dist/components/base/timePicker/__tests__/useTimePicker.test.d.ts +1 -0
  340. package/dist/components/base/timePicker/useTimePicker.d.ts +14 -6
  341. package/dist/components/base/tooltip/index.d.ts +2 -1
  342. package/dist/components/base/tooltip/useTooltip.d.ts +24 -11
  343. package/dist/components/base/transfer/useTransfer.d.ts +17 -16
  344. package/dist/components/base/tree/__tests__/tree.test.d.ts +1 -0
  345. package/dist/components/base/tree/index.d.ts +1 -1
  346. package/dist/components/base/tree/useTree.d.ts +2 -1
  347. package/dist/components/message/drawer/index.d.ts +2 -2
  348. package/dist/components/message/message/useMessage.d.ts +11 -1
  349. package/dist/components/message/notification/__tests__/useNotification.test.d.ts +1 -0
  350. package/dist/components/message/notification/useNotification.d.ts +17 -1
  351. package/dist/components/message/popover/MPopover.d.ts +6 -1
  352. package/dist/components/message/popover/index.d.ts +1 -1
  353. package/dist/components/message/popover/usePopover.d.ts +7 -7
  354. package/dist/components/other/darkMode/useDarkMode.d.ts +3 -4
  355. package/dist/components/template/menu/__tests__/useMenu.test.d.ts +1 -0
  356. package/dist/components/template/menu/index.d.ts +0 -1
  357. package/dist/components/template/menu/useMenu.d.ts +2 -1
  358. package/dist/components/template/pagination/__tests__/usePagination.test.d.ts +1 -0
  359. package/dist/components/template/pagination/index.d.ts +2 -1
  360. package/dist/components/template/table/__tests__/useTable.test.d.ts +1 -0
  361. package/dist/components/template/virtualList/index.d.ts +0 -1
  362. package/dist/components/template/virtualList/useVirtualList.d.ts +10 -7
  363. package/dist/compositions/commandPalette/index.d.ts +11 -0
  364. package/dist/compositions/commandPalette/types.d.ts +20 -0
  365. package/dist/compositions/commandPalette/useCommandPalette.d.ts +32 -0
  366. package/dist/compositions/common/__tests__/useDebounceFn.test.d.ts +1 -0
  367. package/dist/compositions/common/__tests__/useEventListener.test.d.ts +1 -0
  368. package/dist/compositions/common/__tests__/usePopover.test.d.ts +1 -0
  369. package/dist/compositions/common/__tests__/useTeleport.test.d.ts +1 -0
  370. package/dist/compositions/common/testAnchor.d.ts +40 -0
  371. package/dist/compositions/common/useComponentSize.d.ts +6 -0
  372. package/dist/compositions/common/useDrag.d.ts +1 -1
  373. package/dist/compositions/common/useElementSize.d.ts +2 -2
  374. package/dist/compositions/common/useEventListener.d.ts +2 -2
  375. package/dist/compositions/common/useTeleport.d.ts +4 -2
  376. package/dist/compositions/contextMenu/index.d.ts +10 -0
  377. package/dist/compositions/contextMenu/types.d.ts +12 -0
  378. package/dist/compositions/contextMenu/useContextMenu.d.ts +52 -0
  379. package/dist/compositions/editor/index.d.ts +10 -0
  380. package/dist/compositions/editor/types.d.ts +132 -0
  381. package/dist/compositions/editor/useEditor.d.ts +13 -0
  382. package/dist/compositions/index.d.ts +15 -0
  383. package/dist/compositions/input/__tests__/useBooleanInput.test.d.ts +1 -0
  384. package/dist/compositions/modal/__tests__/useModal.test.d.ts +1 -0
  385. package/dist/compositions/modal/useModal.d.ts +3 -2
  386. package/dist/compositions/overlay/index.d.ts +10 -0
  387. package/dist/compositions/overlay/useOverlayStack.d.ts +188 -0
  388. package/dist/compositions/peekView/index.d.ts +10 -0
  389. package/dist/compositions/peekView/usePeekView.d.ts +16 -0
  390. package/dist/compositions/popper/useClickAway.d.ts +3 -3
  391. package/dist/compositions/theme/index.d.ts +11 -0
  392. package/dist/compositions/theme/presets/compact.d.ts +6 -0
  393. package/dist/compositions/theme/presets/dark.d.ts +2 -0
  394. package/dist/compositions/theme/presets/index.d.ts +11 -0
  395. package/dist/compositions/theme/presets/light.d.ts +2 -0
  396. package/dist/compositions/theme/types.d.ts +41 -0
  397. package/dist/compositions/theme/useTheme.d.ts +167 -0
  398. package/dist/compositions/toast/index.d.ts +10 -0
  399. package/dist/compositions/toast/useToast.d.ts +71 -0
  400. package/dist/compositions/tooltip/index.d.ts +9 -0
  401. package/dist/compositions/tooltip/useTooltip.d.ts +10 -0
  402. package/dist/compositions/utils/__tests__/filters.test.d.ts +1 -0
  403. package/dist/compositions/virtualList/__tests__/useHeightCache.test.d.ts +1 -0
  404. package/dist/core.js +7050 -4188
  405. package/dist/index.d.ts +1 -0
  406. package/dist/runtime/defineHook.d.ts +1 -1
  407. package/dist/tools/__tests__/empty.test.d.ts +1 -0
  408. package/dist/tools/empty.d.ts +2 -2
  409. package/dist/tools/types.d.ts +1 -1
  410. package/dist/vitest.config.d.ts +10 -0
  411. package/index.css +1 -0
  412. package/index.ts +73 -0
  413. package/package.json +41 -22
  414. package/runtime/defineHook.ts +21 -0
  415. package/tools/__tests__/empty.test.ts +91 -0
  416. package/tools/empty.ts +81 -0
  417. package/tools/index.ts +15 -0
  418. package/tools/types.ts +11 -0
  419. package/tsconfig.json +8 -0
  420. package/types/common/common.d.ts +25 -0
  421. package/types/common/model.d.ts +25 -0
  422. package/types/index.d.ts +11 -0
  423. package/types/props.d.ts +13 -0
  424. package/vite.config.build.ts +41 -0
  425. package/vitest.config.ts +17 -0
  426. package/dist/vite.config.build.d.ts +0 -2
@@ -0,0 +1,263 @@
1
+ /**
2
+ * @description Tree 核心数据结构类,负责树节点的构建、缓存和状态管理
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { TreeConfig, TreeData, TreeNodeData, TreeStatusKey } from './props';
10
+
11
+ /** 节点缓存 Map 类型 */
12
+ export type TreeDataMap = Map<TreeNodeData['key'], TreeNodeData>;
13
+
14
+ /** 默认字段映射配置 */
15
+ export const DEFAULT_CONFIG: TreeConfig = {
16
+ key: 'key',
17
+ label: 'label',
18
+ value: 'value',
19
+ children: 'children',
20
+ expand: 'expand',
21
+ };
22
+
23
+ /** 合并用户配置与默认配置 */
24
+ export const mergeConfig = (config: Partial<TreeConfig>): TreeConfig => {
25
+ if (config === DEFAULT_CONFIG) {
26
+ return DEFAULT_CONFIG;
27
+ }
28
+ return {
29
+ key: config.key ?? DEFAULT_CONFIG.key,
30
+ label: config.label ?? DEFAULT_CONFIG.label,
31
+ value: config.value ?? DEFAULT_CONFIG.value,
32
+ children: config.children ?? DEFAULT_CONFIG.children,
33
+ expand: config.expand ?? DEFAULT_CONFIG.expand,
34
+ };
35
+ };
36
+
37
+ export interface TreeNodeOptions {
38
+ data: TreeData | TreeData[];
39
+ config?: TreeConfig;
40
+ defaultExpandAll?: boolean;
41
+ checkStrictly?: boolean;
42
+ }
43
+
44
+ export interface TreeAttrs {
45
+ defaultExpandAll: boolean;
46
+ checkStrictly: boolean;
47
+ }
48
+
49
+ export default class Tree {
50
+ /** 源数据(已深拷贝) */
51
+ #source: TreeNodeData[];
52
+ /** 节点缓存 Map,key 为节点标识 */
53
+ #cacheMap: TreeDataMap;
54
+ /** 字段映射配置 */
55
+ #config: TreeConfig = DEFAULT_CONFIG;
56
+ /** 初始化配置(defaultExpandAll / checkStrictly) */
57
+ #initialConfig: TreeAttrs;
58
+
59
+ constructor(options: TreeNodeOptions) {
60
+ const {
61
+ data,
62
+ config = DEFAULT_CONFIG,
63
+ defaultExpandAll = false,
64
+ checkStrictly = true,
65
+ } = options;
66
+ this.#cacheMap = new Map<TreeNodeData['key'], TreeNodeData>();
67
+ this.#source = Array.isArray(data) ? data : [data];
68
+ this.#config = mergeConfig(config);
69
+ this.#initialConfig = { defaultExpandAll, checkStrictly };
70
+ this.#init();
71
+ }
72
+
73
+ /** 暴露配置,供组件层读取 */
74
+ get config() {
75
+ return this.#config;
76
+ }
77
+
78
+ /** 递归生成单个 TreeNodeData,并写入 cacheMap */
79
+ #genTreeNodeData(data: TreeData, parentKey?: TreeData['key']): TreeNodeData {
80
+ const { defaultExpandAll } = this.#initialConfig;
81
+ const { key: k, children: c, expand: e } = this.#config;
82
+
83
+ const node: TreeNodeData = {
84
+ ...data,
85
+ expand: defaultExpandAll || !!(data[e!] as boolean | undefined),
86
+ selected: false,
87
+ checked: false,
88
+ indeterminate: false,
89
+ parent: parentKey ? this.#cacheMap.get(parentKey) : undefined,
90
+ isRoot: !parentKey,
91
+ };
92
+
93
+ // 使用节点自身的 key 字段值作为 Map 键
94
+ this.#cacheMap.set(node[k] as TreeNodeData['key'], node);
95
+
96
+ // 递归处理子节点
97
+ const nodeChildren = node[c] as TreeNodeData[] | undefined;
98
+ if (nodeChildren && nodeChildren.length > 0) {
99
+ node[c] = this.#genCacheMap(nodeChildren, node[k] as TreeData['key']) as unknown;
100
+ }
101
+
102
+ return node;
103
+ }
104
+
105
+ /** 清空缓存 */
106
+ #clearCache() {
107
+ this.#cacheMap.clear();
108
+ }
109
+
110
+ /** 初始化:清空缓存后重新构建 */
111
+ #init() {
112
+ this.#clearCache();
113
+ this.#genCacheMap();
114
+ }
115
+
116
+ /** 递归批量构建节点并填充 cacheMap */
117
+ #genCacheMap(data: TreeNodeData[] = this.#source, parentKey?: TreeData['key']): TreeNodeData[] {
118
+ const len = data.length;
119
+ const treeNodeData: TreeNodeData[] = [];
120
+ for (let i = 0; i < len; i++) {
121
+ const treeNode = this.#genTreeNodeData(data[i], parentKey);
122
+ treeNodeData.push(treeNode);
123
+ }
124
+ return treeNodeData;
125
+ }
126
+
127
+ /** 获取所有缓存节点列表 */
128
+ #getCacheList(): TreeNodeData[] {
129
+ return Array.from(this.#cacheMap.values());
130
+ }
131
+
132
+ /**
133
+ * 向上递归更新父节点的选中/半选状态
134
+ * 规则:所有子节点选中 → 父节点选中;部分选中或有半选 → 父节点半选
135
+ */
136
+ #setParentChecked(parent: TreeNodeData) {
137
+ if (parent.disabled) {
138
+ return;
139
+ }
140
+ const { children: c } = this.#config;
141
+ const children: TreeNodeData[] = (parent[c] as TreeNodeData[]) ?? [];
142
+ const allChecked = children.every(child => child.checked);
143
+ const oneChecked = children.some(child => child.checked);
144
+ const onIndeterminate = children.some(child => child.indeterminate);
145
+
146
+ if (allChecked) {
147
+ parent.indeterminate = false;
148
+ parent.checked = true;
149
+ } else {
150
+ parent.indeterminate = oneChecked || onIndeterminate;
151
+ parent.checked = false;
152
+ }
153
+
154
+ // 继续向上传播
155
+ if (parent.parent) {
156
+ this.#setParentChecked(parent.parent);
157
+ }
158
+ }
159
+
160
+ /** 递归设置子节点的某个状态字段 */
161
+ #setChildrenStatus(statusKey: TreeStatusKey, nodes: TreeNodeData[], value: boolean) {
162
+ const { children: c } = this.#config;
163
+ nodes.forEach(node => {
164
+ if (node.disabled) {
165
+ return;
166
+ }
167
+ (node as Record<string, unknown>)[statusKey] = value;
168
+ const nodeChildren = node[c] as TreeNodeData[] | undefined;
169
+ if (nodeChildren) {
170
+ this.#setChildrenStatus(statusKey, nodeChildren, value);
171
+ }
172
+ });
173
+ }
174
+
175
+ // ==================== 公开方法 ====================
176
+
177
+ /** 获取某节点的直接子节点 key 列表 */
178
+ getChildrenKeys(node: TreeNodeData): TreeNodeData['key'][] {
179
+ const { children: c, key: k } = this.#config;
180
+ const children = node[c] as TreeNodeData[] | undefined;
181
+ if (children) {
182
+ return children.map((it) => it[k] as TreeNodeData['key']);
183
+ }
184
+ return [];
185
+ }
186
+
187
+ /** 根据 key 数组批量获取节点 */
188
+ getNodesByKeys(keys: TreeNodeData['key'][]): TreeNodeData[] {
189
+ return keys.map(key => this.#cacheMap.get(key)!);
190
+ }
191
+
192
+ /**
193
+ * 获取树形数据
194
+ * @param keys 若传入则返回对应 key 的节点列表,否则返回所有根节点
195
+ */
196
+ getTreeData(keys?: TreeNodeData['key'][]): TreeNodeData[] {
197
+ if (keys) {
198
+ return this.getNodesByKeys(keys);
199
+ }
200
+ return this.#getCacheList().filter(it => it.isRoot);
201
+ }
202
+
203
+ /** 获取当前所有选中 key 和展开 key */
204
+ getKeys(): { checkedKeys: TreeNodeData['key'][]; expandKeys: TreeNodeData['key'][] } {
205
+ const expandKeys: TreeNodeData['key'][] = [];
206
+ const checkedKeys: TreeNodeData['key'][] = [];
207
+ const iterator = this.#cacheMap[Symbol.iterator]();
208
+ let next = iterator.next();
209
+ while (!next.done) {
210
+ const [, node] = next.value;
211
+ const key = Reflect.get(node as Record<string, unknown>, this.#config.key as string) as TreeNodeData['key'];
212
+ // 排除半选状态
213
+ if (node.checked && !node.indeterminate) {
214
+ checkedKeys.push(key);
215
+ }
216
+ if (node.children && node.expand) {
217
+ expandKeys.push(key);
218
+ }
219
+ next = iterator.next();
220
+ }
221
+ return { checkedKeys, expandKeys };
222
+ }
223
+
224
+ /** 切换节点展开/收起状态 */
225
+ toggleExpand(node: TreeNodeData, value?: boolean) {
226
+ if (value !== undefined) {
227
+ node.expand = value;
228
+ } else {
229
+ node.expand = !node.expand;
230
+ }
231
+ }
232
+
233
+ /**
234
+ * 设置节点 checkbox 选中状态
235
+ * checkStrictly=true(默认)时级联更新子节点和父节点状态
236
+ */
237
+ setNodeCheckbox(node: TreeNodeData, checked: boolean) {
238
+ node.checked = checked;
239
+ node.indeterminate = false;
240
+ const { checkStrictly } = this.#initialConfig;
241
+ if (!checkStrictly) {
242
+ return;
243
+ }
244
+ // 向下级联:设置所有子孙节点
245
+ if (node.children) {
246
+ this.#setChildrenStatus('checked', node.children, checked);
247
+ }
248
+ // 向上级联:更新父节点的半选/全选状态
249
+ if (node.parent) {
250
+ this.#setParentChecked(node.parent);
251
+ }
252
+ }
253
+
254
+ /** 根据 key 数组批量设置节点为选中状态 */
255
+ setCheckedByKeys(keys: TreeNodeData['key'][]) {
256
+ const nodes = this.getNodesByKeys(keys);
257
+ nodes.forEach(node => {
258
+ if (node) {
259
+ this.setNodeCheckbox(node, true);
260
+ }
261
+ });
262
+ }
263
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @description Tree 组件 composable,封装树的初始化与交互逻辑
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { shallowRef } from 'vue';
10
+ import Tree from './tree';
11
+ import { TreeData, TreeNodeData, TreeProps } from './props';
12
+
13
+ /** fixKey 内部递归实现:为无 key 的节点生成唯一 key */
14
+ const _fixKey = (data: TreeData[], key: string | number = 'key', prefixKey: string | number): TreeData[] => {
15
+ let keyStart = 0;
16
+ return data.map(d => {
17
+ if (!d[key]) {
18
+ d[key] = `${prefixKey}${keyStart++}`;
19
+ }
20
+ if (d.children) {
21
+ d.children = _fixKey(d.children as TreeData[], key, d[key] as string | number) as TreeData[];
22
+ }
23
+ return d;
24
+ });
25
+ };
26
+
27
+ /**
28
+ * 为没有 key 的节点递归生成唯一标识
29
+ * @param data 树数据(数组或单节点)
30
+ * @param key key 字段名,默认 'key'
31
+ * @param prefixKey 前缀 key,用于构造子节点唯一 id
32
+ */
33
+ export const fixKey = (
34
+ data: TreeData | TreeData[],
35
+ key: string | number,
36
+ prefixKey: string | number = '',
37
+ ): TreeData | TreeData[] => {
38
+ return Array.isArray(data)
39
+ ? _fixKey(data, key ?? 'key', prefixKey)
40
+ : _fixKey([data], key ?? 'key', prefixKey)[0];
41
+ };
42
+
43
+ export interface UseTreeOptions {
44
+ props: TreeProps;
45
+ event: {
46
+ /** 触发 shallowRef 更新,通知 Vue 重新渲染 */
47
+ triggerTree: () => void;
48
+ };
49
+ }
50
+
51
+ /**
52
+ * useTree — Tree 组件逻辑 composable
53
+ *
54
+ * 返回:
55
+ * - treeRef:Tree 实例的 shallowRef
56
+ * - initTreeRef:重新初始化 Tree(数据变化时调用)
57
+ * - handleToggleExpand:切换节点展开/收起
58
+ * - handleToggleChecked:切换节点 checkbox 选中状态
59
+ * - getNodesByKeys:根据 key 批量获取节点
60
+ */
61
+ export const useTree = (options: UseTreeOptions) => {
62
+ const { props, event } = options;
63
+ const treeRef = shallowRef<Tree>();
64
+
65
+ /**
66
+ * 初始化 Tree 实例
67
+ * 使用 structuredClone 深拷贝数据,避免直接修改外部数据源
68
+ */
69
+ const initTreeRef = (data: TreeData | TreeData[] | undefined = props.data) => {
70
+ // 统一转为数组
71
+ const rawArr = Array.isArray(data) ? data : (data ? [data] : []);
72
+ // 深拷贝避免污染原始数据(不使用 structuredClone,因为 Vue 响应式代理无法被 clone)
73
+ const cloned = JSON.parse(JSON.stringify(rawArr)) as TreeData[];
74
+ // 为无 key 节点补充 key
75
+ const keyField = props.config?.key ?? 'key';
76
+ const fixed = fixKey(cloned, keyField) as TreeData[];
77
+
78
+ treeRef.value = new Tree({
79
+ data: fixed,
80
+ config: props.config,
81
+ defaultExpandAll: props.defaultExpandAll,
82
+ checkStrictly: props.checkStrictly,
83
+ });
84
+ };
85
+
86
+ // 组件挂载时立即初始化
87
+ initTreeRef();
88
+
89
+ /** 切换节点展开/收起,并触发 Vue 响应式更新 */
90
+ const handleToggleExpand = (node: TreeNodeData, e: MouseEvent) => {
91
+ e.stopPropagation();
92
+ treeRef.value?.toggleExpand(node);
93
+ event.triggerTree();
94
+ };
95
+
96
+ /** 切换节点 checkbox 选中状态,并触发 Vue 响应式更新 */
97
+ const handleToggleChecked = (node: TreeNodeData, checked: boolean) => {
98
+ treeRef.value?.setNodeCheckbox(node, checked);
99
+ event.triggerTree();
100
+ };
101
+
102
+ /** 根据 key 数组获取节点列表(透传给 MTreeNode 使用) */
103
+ const getNodesByKeys = (keys: TreeNodeData['key'][]): TreeNodeData[] => {
104
+ return treeRef.value!.getTreeData(keys);
105
+ };
106
+
107
+ return {
108
+ treeRef,
109
+ getNodesByKeys,
110
+ handleToggleExpand,
111
+ handleToggleChecked,
112
+ initTreeRef,
113
+ };
114
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @description confirm runtime props 定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO } from '../../types/props';
10
+ import { ConfirmProps } from './props';
11
+
12
+ export const props: MCOPO<ConfirmProps> = {
13
+ visible: { type: Boolean, default: false },
14
+ mask: { type: Object, default: () => ({ show: true, clickClose: false }) },
15
+ teleport: { type: Object, default: () => ({ to: 'body' }) },
16
+ content: { type: String, default: '' },
17
+ confirmText: { type: String, default: '确定' },
18
+ cancelText: { type: String, default: '取消' },
19
+ title: { type: String, default: undefined },
20
+ loading: { type: Boolean, default: false },
21
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description confirm core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const ConfirmCore = {
12
+ props,
13
+ };
14
+
15
+ export type { ConfirmProps } from './props';
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @description confirm props 类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import type { ModelMask } from '../../../types/common/model.d.ts';
10
+ import type { MTeleportProps } from '../../../types/common/common.d.ts';
11
+
12
+ export declare type ConfirmProps = {
13
+ /**
14
+ * @description confirm mask option
15
+ * 确认框背景配置
16
+ * @type ModelMask
17
+ * @default { show: true, clickClose: false }
18
+ */
19
+ mask?: ModelMask;
20
+ /**
21
+ * @description confirm teleport
22
+ * 确认框传送目标
23
+ * @type MTeleportProps
24
+ * @default { to: 'body' }
25
+ */
26
+ teleport?: MTeleportProps;
27
+ /**
28
+ * @description confirm content
29
+ * 确认框内容
30
+ * @type string
31
+ * @default ''
32
+ */
33
+ content?: string;
34
+ /**
35
+ * @description confirm button text
36
+ * 确认按钮文字
37
+ * @type string
38
+ * @default '确定'
39
+ */
40
+ confirmText?: string;
41
+ /**
42
+ * @description cancel button text
43
+ * 取消按钮文字
44
+ * @type string
45
+ * @default '取消'
46
+ */
47
+ cancelText?: string;
48
+ /**
49
+ * @description confirm dialog visible
50
+ * 确认框是否显示(由 composable 内部管理)
51
+ * @type boolean
52
+ * @default false
53
+ */
54
+ visible?: boolean;
55
+ /**
56
+ * @description confirm title
57
+ * 确认框标题,传入时渲染标题栏
58
+ * @type string
59
+ * @default undefined
60
+ */
61
+ title?: string;
62
+ /**
63
+ * @description confirm button loading state
64
+ * 确认按钮 loading 状态,loading 时禁用按钮并显示 spinner
65
+ * @type boolean
66
+ * @default false
67
+ */
68
+ loading?: boolean;
69
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @description dialog runtime props 定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { DialogProps } from './props';
11
+
12
+ export const props: MCOPO<DialogProps> = {
13
+ visible: { type: Boolean, default: false },
14
+ mask: { type: Object, default: () => ({ show: true, clickClose: true }) },
15
+ closeBtn: { type: Boolean, default: true },
16
+ teleport: { type: Object, default: () => ({ to: 'body' }) },
17
+ title: { type: String, default: undefined },
18
+ width: { type: String, default: undefined },
19
+ beforeClose: { type: Function as unknown as MPropType<NonNullable<DialogProps['beforeClose']>>, default: undefined },
20
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description dialog core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const DialogCore = {
12
+ props,
13
+ };
14
+
15
+ export type { DialogProps } from './props';
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @description dialog props 类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import type { MTeleportProps } from '../../../types/common/common.d.ts';
10
+ import type { ModelMask } from '../../../types/common/model.d.ts';
11
+
12
+ export declare type DialogProps = {
13
+ /**
14
+ * @description dialog visible value
15
+ * 弹窗是否显示
16
+ * @type boolean
17
+ * @default false
18
+ */
19
+ visible?: boolean;
20
+ /**
21
+ * @description dialog mask option
22
+ * 弹窗遮罩配置
23
+ * @type ModelMask
24
+ * @default { show: true, clickClose: true }
25
+ */
26
+ mask?: ModelMask;
27
+ /**
28
+ * @description close button visible
29
+ * 是否显示关闭按钮
30
+ * @type boolean
31
+ * @default true
32
+ */
33
+ closeBtn?: boolean;
34
+ /**
35
+ * @description dialog teleport
36
+ * 弹窗传送目标
37
+ * @type MTeleportProps
38
+ * @default { to: 'body' }
39
+ */
40
+ teleport?: MTeleportProps;
41
+ /**
42
+ * @description dialog title
43
+ * 弹窗标题,传入时渲染标题栏
44
+ * @type string
45
+ * @default undefined
46
+ */
47
+ title?: string;
48
+ /**
49
+ * @description dialog width
50
+ * 弹窗宽度,支持 px / % 等合法 CSS 宽度值
51
+ * @type string
52
+ * @default undefined
53
+ */
54
+ width?: string;
55
+ /**
56
+ * @description callback before close, return false or Promise.reject to prevent close
57
+ * 关闭前的回调,返回 false 或 reject 的 Promise 可阻止关闭
58
+ * @type () => boolean | Promise<boolean>
59
+ * @default undefined
60
+ */
61
+ beforeClose?: () => boolean | Promise<boolean>;
62
+ };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @description drawer api
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { DrawerProps } from './props';
11
+ import type { ModelMask } from '../../../types/common/model.d.ts';
12
+ import type { MTeleportProps } from '../../../types/common/common.d.ts';
13
+
14
+ export const props: MCOPO<DrawerProps> = {
15
+ visible: { type: Boolean, default: false },
16
+ mask: {
17
+ type: Object as MPropType<ModelMask>,
18
+ default: () => ({ show: true, clickClose: true }),
19
+ },
20
+ drawerClass: { type: Array, default: () => [] },
21
+ direction: {
22
+ type: String as MPropType<'top' | 'right' | 'bottom' | 'left'>,
23
+ default: 'right',
24
+ },
25
+ teleport: {
26
+ type: Object as MPropType<MTeleportProps>,
27
+ default: () => ({ to: 'body' }),
28
+ },
29
+ title: { type: String, default: undefined },
30
+ width: { type: String, default: undefined },
31
+ height: { type: String, default: undefined },
32
+ beforeClose: { type: Function as unknown as MPropType<NonNullable<DrawerProps['beforeClose']>>, default: undefined },
33
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description drawer core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const DrawerCore = {
12
+ props,
13
+ };
14
+
15
+ export type { DrawerProps } from './props';