@qi-tian-da-sheng/bin-project-ui 1.0.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 (614) hide show
  1. package/README.md +269 -0
  2. package/es/bin-ui.css +1 -0
  3. package/es/index.mjs +125 -0
  4. package/es/packages/components/abstract/index.mjs +6 -0
  5. package/es/packages/components/abstract/src/partial.vue.mjs +42 -0
  6. package/es/packages/components/abstract/src/partial.vue2.mjs +4 -0
  7. package/es/packages/components/badge/index.mjs +6 -0
  8. package/es/packages/components/badge/src/badge.mjs +69 -0
  9. package/es/packages/components/badge/src/badge.vue.mjs +44 -0
  10. package/es/packages/components/badge/src/badge.vue2.mjs +4 -0
  11. package/es/packages/components/button/index.mjs +6 -0
  12. package/es/packages/components/button/src/button.mjs +95 -0
  13. package/es/packages/components/button/src/button.vue.mjs +56 -0
  14. package/es/packages/components/button/src/button.vue2.mjs +4 -0
  15. package/es/packages/components/dialog/index.mjs +6 -0
  16. package/es/packages/components/dialog/src/dialog.mjs +99 -0
  17. package/es/packages/components/dialog/src/dialog.vue.mjs +140 -0
  18. package/es/packages/components/dialog/src/dialog.vue2.mjs +4 -0
  19. package/es/packages/components/divider/index.mjs +6 -0
  20. package/es/packages/components/divider/src/divider.mjs +44 -0
  21. package/es/packages/components/divider/src/divider.vue.mjs +48 -0
  22. package/es/packages/components/divider/src/divider.vue2.mjs +4 -0
  23. package/es/packages/components/drawer/index.mjs +6 -0
  24. package/es/packages/components/drawer/src/drawer.mjs +109 -0
  25. package/es/packages/components/drawer/src/drawer.vue.mjs +148 -0
  26. package/es/packages/components/drawer/src/drawer.vue2.mjs +4 -0
  27. package/es/packages/components/dropdown/index.mjs +8 -0
  28. package/es/packages/components/dropdown/src/dropdown-item.mjs +57 -0
  29. package/es/packages/components/dropdown/src/dropdown-item.vue.mjs +51 -0
  30. package/es/packages/components/dropdown/src/dropdown-item.vue2.mjs +4 -0
  31. package/es/packages/components/dropdown/src/dropdown.mjs +108 -0
  32. package/es/packages/components/dropdown/src/dropdown.vue.mjs +92 -0
  33. package/es/packages/components/dropdown/src/dropdown.vue2.mjs +4 -0
  34. package/es/packages/components/floating/index.mjs +6 -0
  35. package/es/packages/components/floating/src/creat-floating-container.mjs +6 -0
  36. package/es/packages/components/floating/src/floating-props.mjs +101 -0
  37. package/es/packages/components/floating/src/floating.vue.mjs +127 -0
  38. package/es/packages/components/floating/src/floating.vue2.mjs +4 -0
  39. package/es/packages/components/grid/index.mjs +8 -0
  40. package/es/packages/components/grid/src/col.mjs +34 -0
  41. package/es/packages/components/grid/src/col.vue.mjs +28 -0
  42. package/es/packages/components/grid/src/col.vue2.mjs +4 -0
  43. package/es/packages/components/grid/src/row.mjs +35 -0
  44. package/es/packages/components/grid/src/row.vue.mjs +30 -0
  45. package/es/packages/components/grid/src/row.vue2.mjs +4 -0
  46. package/es/packages/components/icon/index.mjs +6 -0
  47. package/es/packages/components/icon/src/icon.mjs +31 -0
  48. package/es/packages/components/icon/src/icon.vue.mjs +31 -0
  49. package/es/packages/components/icon/src/icon.vue2.mjs +4 -0
  50. package/es/packages/components/input/index.mjs +6 -0
  51. package/es/packages/components/input/src/input.mjs +75 -0
  52. package/es/packages/components/input/src/input.vue.mjs +161 -0
  53. package/es/packages/components/input/src/input.vue2.mjs +4 -0
  54. package/es/packages/components/installer.mjs +69 -0
  55. package/es/packages/components/layout/index.mjs +14 -0
  56. package/es/packages/components/layout/src/aside.mjs +12 -0
  57. package/es/packages/components/layout/src/aside.vue.mjs +28 -0
  58. package/es/packages/components/layout/src/aside.vue2.mjs +4 -0
  59. package/es/packages/components/layout/src/content.vue.mjs +19 -0
  60. package/es/packages/components/layout/src/content.vue2.mjs +4 -0
  61. package/es/packages/components/layout/src/footer.mjs +12 -0
  62. package/es/packages/components/layout/src/footer.vue.mjs +24 -0
  63. package/es/packages/components/layout/src/footer.vue2.mjs +4 -0
  64. package/es/packages/components/layout/src/header.mjs +12 -0
  65. package/es/packages/components/layout/src/header.vue.mjs +24 -0
  66. package/es/packages/components/layout/src/header.vue2.mjs +4 -0
  67. package/es/packages/components/layout/src/layout.vue.mjs +24 -0
  68. package/es/packages/components/layout/src/layout.vue2.mjs +4 -0
  69. package/es/packages/components/link/index.mjs +6 -0
  70. package/es/packages/components/link/src/link.mjs +50 -0
  71. package/es/packages/components/link/src/link.vue.mjs +48 -0
  72. package/es/packages/components/link/src/link.vue2.mjs +4 -0
  73. package/es/packages/components/menu/index.mjs +12 -0
  74. package/es/packages/components/menu/src/head-menu-props.mjs +63 -0
  75. package/es/packages/components/menu/src/head-menu.vue.mjs +123 -0
  76. package/es/packages/components/menu/src/head-menu.vue2.mjs +4 -0
  77. package/es/packages/components/menu/src/menu-item-props.mjs +74 -0
  78. package/es/packages/components/menu/src/menu-item.vue.mjs +66 -0
  79. package/es/packages/components/menu/src/menu-item.vue2.mjs +4 -0
  80. package/es/packages/components/menu/src/menu-props.mjs +78 -0
  81. package/es/packages/components/menu/src/menu.vue.mjs +88 -0
  82. package/es/packages/components/menu/src/menu.vue2.mjs +4 -0
  83. package/es/packages/components/menu/src/submenu-props.mjs +45 -0
  84. package/es/packages/components/menu/src/submenu.vue.mjs +190 -0
  85. package/es/packages/components/menu/src/submenu.vue2.mjs +4 -0
  86. package/es/packages/components/menu/src/v-menu.mjs +78 -0
  87. package/es/packages/components/message/index.mjs +7 -0
  88. package/es/packages/components/message/src/confirm.mjs +47 -0
  89. package/es/packages/components/message/src/message-box.mjs +93 -0
  90. package/es/packages/components/message/src/message-box.vue.mjs +195 -0
  91. package/es/packages/components/message/src/message-box.vue2.mjs +4 -0
  92. package/es/packages/components/message/src/message.mjs +31 -0
  93. package/es/packages/components/message/src/notify.mjs +38 -0
  94. package/es/packages/components/popconfirm/index.mjs +6 -0
  95. package/es/packages/components/popconfirm/src/popconfirm.mjs +115 -0
  96. package/es/packages/components/popconfirm/src/popconfirm.vue.mjs +83 -0
  97. package/es/packages/components/popconfirm/src/popconfirm.vue2.mjs +4 -0
  98. package/es/packages/components/scrollbar/index.mjs +6 -0
  99. package/es/packages/components/scrollbar/src/scrollbar.mjs +28 -0
  100. package/es/packages/components/scrollbar/src/scrollbar.vue.mjs +138 -0
  101. package/es/packages/components/scrollbar/src/scrollbar.vue2.mjs +4 -0
  102. package/es/packages/components/switch/index.mjs +6 -0
  103. package/es/packages/components/switch/src/switch-txt.vue.mjs +48 -0
  104. package/es/packages/components/switch/src/switch-txt.vue2.mjs +4 -0
  105. package/es/packages/components/switch/src/switch.mjs +137 -0
  106. package/es/packages/components/switch/src/switch.vue.mjs +103 -0
  107. package/es/packages/components/switch/src/switch.vue2.mjs +4 -0
  108. package/es/packages/components/tabs/index.mjs +8 -0
  109. package/es/packages/components/tabs/src/tab-nav-bar.vue.mjs +63 -0
  110. package/es/packages/components/tabs/src/tab-nav-bar.vue2.mjs +4 -0
  111. package/es/packages/components/tabs/src/tab-nav-item.vue.mjs +74 -0
  112. package/es/packages/components/tabs/src/tab-nav-item.vue2.mjs +4 -0
  113. package/es/packages/components/tabs/src/tab-nav.vue.mjs +223 -0
  114. package/es/packages/components/tabs/src/tab-nav.vue2.mjs +4 -0
  115. package/es/packages/components/tabs/src/tab-panel-props.mjs +59 -0
  116. package/es/packages/components/tabs/src/tab-panel.vue.mjs +36 -0
  117. package/es/packages/components/tabs/src/tab-panel.vue2.mjs +4 -0
  118. package/es/packages/components/tabs/src/tabs-props.mjs +96 -0
  119. package/es/packages/components/tabs/src/tabs.vue.mjs +97 -0
  120. package/es/packages/components/tabs/src/tabs.vue2.mjs +4 -0
  121. package/es/packages/components/tag/index.mjs +6 -0
  122. package/es/packages/components/tag/src/tag.mjs +58 -0
  123. package/es/packages/components/tag/src/tag.vue.mjs +53 -0
  124. package/es/packages/components/tag/src/tag.vue2.mjs +4 -0
  125. package/es/packages/components/tooltip/index.mjs +6 -0
  126. package/es/packages/components/tooltip/src/tooltip.mjs +96 -0
  127. package/es/packages/components/tooltip/src/tooltip.vue.mjs +65 -0
  128. package/es/packages/components/tooltip/src/tooltip.vue2.mjs +4 -0
  129. package/es/packages/hooks/useAlert.mjs +53 -0
  130. package/es/packages/hooks/useAttrs.mjs +35 -0
  131. package/es/packages/hooks/useBadge.mjs +46 -0
  132. package/es/packages/hooks/useCollapseAnimation.mjs +25 -0
  133. package/es/packages/hooks/useDefaultValue.mjs +19 -0
  134. package/es/packages/hooks/useDragSort.mjs +54 -0
  135. package/es/packages/hooks/useDraggable.mjs +40 -0
  136. package/es/packages/hooks/useFlag.mjs +19 -0
  137. package/es/packages/hooks/useLockScroll.mjs +21 -0
  138. package/es/packages/hooks/useMark.mjs +25 -0
  139. package/es/packages/hooks/useNS.mjs +34 -0
  140. package/es/packages/hooks/useVModel.mjs +24 -0
  141. package/es/packages/tools/decorator/debounce.mjs +25 -0
  142. package/es/packages/tools/decorator/single-ton.mjs +11 -0
  143. package/es/packages/tools/decorator/throttle.mjs +19 -0
  144. package/es/packages/tools/element/alert.mjs +70 -0
  145. package/es/packages/tools/element/badge.mjs +64 -0
  146. package/es/packages/tools/element/mark.mjs +39 -0
  147. package/es/packages/tools/element/render-node.mjs +52 -0
  148. package/es/packages/tools/extra/css.mjs +11 -0
  149. package/es/packages/tools/extra/delay.mjs +10 -0
  150. package/es/packages/tools/extra/fn-union.mjs +9 -0
  151. package/es/packages/tools/extra/types.mjs +47 -0
  152. package/es/packages/tools/managers/index-manager.mjs +17 -0
  153. package/es/packages/tools/managers/layout-manager.mjs +78 -0
  154. package/es/packages/tools/vn/with-install.mjs +10 -0
  155. package/examples/App.vue +312 -0
  156. package/examples/basic/button/ButtonIndex.vue +68 -0
  157. package/examples/basic/button/basic.vue +101 -0
  158. package/examples/basic/button/icon.vue +32 -0
  159. package/examples/basic/button/loading.vue +65 -0
  160. package/examples/basic/icon/IconIndex.vue +40 -0
  161. package/examples/basic/icon/basic.vue +34 -0
  162. package/examples/basic/icon/list.vue +104 -0
  163. package/examples/components/ApiTable.vue +135 -0
  164. package/examples/components/DemoBlock.vue +146 -0
  165. package/examples/components/page-styles.less +22 -0
  166. package/examples/data/badge/BadgeIndex.vue +70 -0
  167. package/examples/data/badge/basic.vue +45 -0
  168. package/examples/data/badge/max.vue +32 -0
  169. package/examples/data/badge/use.vue +32 -0
  170. package/examples/data/badge/variant.vue +79 -0
  171. package/examples/data/tag/TagIndex.vue +64 -0
  172. package/examples/data/tag/basic.vue +78 -0
  173. package/examples/data/tag/closable.vue +70 -0
  174. package/examples/data/tag/size.vue +39 -0
  175. package/examples/data/tooltip/TooltipIndex.vue +39 -0
  176. package/examples/data/tooltip/basic.vue +125 -0
  177. package/examples/data/tooltip/slot.vue +17 -0
  178. package/examples/data/tooltip/theme.vue +14 -0
  179. package/examples/dataInput/input/InputIndex.vue +105 -0
  180. package/examples/dataInput/input/basic.vue +44 -0
  181. package/examples/dataInput/input/check.vue +48 -0
  182. package/examples/dataInput/input/clearable.vue +29 -0
  183. package/examples/dataInput/input/disabled.vue +11 -0
  184. package/examples/dataInput/input/icon.vue +25 -0
  185. package/examples/dataInput/input/limit.vue +28 -0
  186. package/examples/dataInput/input/size.vue +32 -0
  187. package/examples/dataInput/input/sockets.vue +62 -0
  188. package/examples/dataInput/input/type.vue +14 -0
  189. package/examples/dataInput/switch/SwitchIndex.vue +80 -0
  190. package/examples/dataInput/switch/basic.vue +38 -0
  191. package/examples/dataInput/switch/change.vue +37 -0
  192. package/examples/dataInput/switch/disabled.vue +33 -0
  193. package/examples/dataInput/switch/icon.vue +22 -0
  194. package/examples/dataInput/switch/size.vue +28 -0
  195. package/examples/dataInput/switch/text.vue +23 -0
  196. package/examples/dataInput/switch/type.vue +20 -0
  197. package/examples/feedback/confirm/ConfirmIndex.vue +29 -0
  198. package/examples/feedback/confirm/basic.vue +34 -0
  199. package/examples/feedback/confirm/btnText.vue +28 -0
  200. package/examples/feedback/confirm/closeType.vue +54 -0
  201. package/examples/feedback/confirm/draggable.vue +28 -0
  202. package/examples/feedback/confirm/offset.vue +27 -0
  203. package/examples/feedback/confirm/type.vue +68 -0
  204. package/examples/feedback/dialog/DialogIndex.vue +32 -0
  205. package/examples/feedback/dialog/basic.vue +46 -0
  206. package/examples/feedback/dialog/beforeClose.vue +45 -0
  207. package/examples/feedback/dialog/close.vue +31 -0
  208. package/examples/feedback/dialog/define.vue +43 -0
  209. package/examples/feedback/dialog/draggable.vue +31 -0
  210. package/examples/feedback/dialog/mark.vue +29 -0
  211. package/examples/feedback/dialog/part.vue +33 -0
  212. package/examples/feedback/dialog/top.vue +39 -0
  213. package/examples/feedback/drawer/DrawerIndex.vue +24 -0
  214. package/examples/feedback/drawer/basic.vue +30 -0
  215. package/examples/feedback/drawer/headFoot.vue +39 -0
  216. package/examples/feedback/drawer/part.vue +42 -0
  217. package/examples/feedback/message/MessageIndex.vue +30 -0
  218. package/examples/feedback/message/basic.vue +87 -0
  219. package/examples/feedback/message/close.vue +27 -0
  220. package/examples/feedback/message/icon.vue +27 -0
  221. package/examples/feedback/message/offset.vue +26 -0
  222. package/examples/feedback/message/time.vue +43 -0
  223. package/examples/feedback/message/type.vue +67 -0
  224. package/examples/feedback/notify/NotifyIndex.vue +23 -0
  225. package/examples/feedback/notify/basic.vue +46 -0
  226. package/examples/feedback/notify/position.vue +46 -0
  227. package/examples/feedback/notify/type.vue +36 -0
  228. package/examples/feedback/popconfirm/PopconfirmIndex.vue +20 -0
  229. package/examples/feedback/popconfirm/basic.vue +36 -0
  230. package/examples/feedback/popconfirm/custom.vue +37 -0
  231. package/examples/layout/divider/DividerIndex.vue +25 -0
  232. package/examples/layout/divider/basic.vue +15 -0
  233. package/examples/layout/divider/content.vue +15 -0
  234. package/examples/layout/divider/type.vue +13 -0
  235. package/examples/layout/divider/vertical.vue +12 -0
  236. package/examples/layout/grid/GridIndex.vue +19 -0
  237. package/examples/layout/grid/basic.vue +47 -0
  238. package/examples/layout/layoutContainer/LayoutIndex.vue +24 -0
  239. package/examples/layout/layoutContainer/assembly.vue +100 -0
  240. package/examples/layout/layoutContainer/basic.vue +78 -0
  241. package/examples/layout/layoutContainer/side.vue +77 -0
  242. package/examples/main.ts +12 -0
  243. package/examples/navi/dropdown/DropdownIndex.vue +94 -0
  244. package/examples/navi/dropdown/basic.vue +40 -0
  245. package/examples/navi/dropdown/centers.vue +24 -0
  246. package/examples/navi/dropdown/other.vue +55 -0
  247. package/examples/navi/dropdown/scroll.vue +23 -0
  248. package/examples/navi/menu/HeadMenu.vue +158 -0
  249. package/examples/navi/menu/MenuIndex.vue +16 -0
  250. package/examples/navi/menu/SideMenu.vue +13 -0
  251. package/examples/navi/tabs/TabsIndex.vue +63 -0
  252. package/examples/navi/tabs/basic.vue +81 -0
  253. package/examples/navi/tabs/editor.vue +130 -0
  254. package/examples/navi/tabs/position.vue +46 -0
  255. package/examples/style.css +48 -0
  256. package/index.html +13 -0
  257. package/index.ts +27 -0
  258. package/lib/bin-ui.css +1 -0
  259. package/lib/index.js +1 -0
  260. package/lib/packages/components/abstract/index.js +1 -0
  261. package/lib/packages/components/abstract/src/partial.vue.js +1 -0
  262. package/lib/packages/components/abstract/src/partial.vue2.js +1 -0
  263. package/lib/packages/components/badge/index.js +1 -0
  264. package/lib/packages/components/badge/src/badge.js +1 -0
  265. package/lib/packages/components/badge/src/badge.vue.js +1 -0
  266. package/lib/packages/components/badge/src/badge.vue2.js +1 -0
  267. package/lib/packages/components/button/index.js +1 -0
  268. package/lib/packages/components/button/src/button.js +1 -0
  269. package/lib/packages/components/button/src/button.vue.js +1 -0
  270. package/lib/packages/components/button/src/button.vue2.js +1 -0
  271. package/lib/packages/components/dialog/index.js +1 -0
  272. package/lib/packages/components/dialog/src/dialog.js +1 -0
  273. package/lib/packages/components/dialog/src/dialog.vue.js +1 -0
  274. package/lib/packages/components/dialog/src/dialog.vue2.js +1 -0
  275. package/lib/packages/components/divider/index.js +1 -0
  276. package/lib/packages/components/divider/src/divider.js +1 -0
  277. package/lib/packages/components/divider/src/divider.vue.js +1 -0
  278. package/lib/packages/components/divider/src/divider.vue2.js +1 -0
  279. package/lib/packages/components/drawer/index.js +1 -0
  280. package/lib/packages/components/drawer/src/drawer.js +1 -0
  281. package/lib/packages/components/drawer/src/drawer.vue.js +1 -0
  282. package/lib/packages/components/drawer/src/drawer.vue2.js +1 -0
  283. package/lib/packages/components/dropdown/index.js +1 -0
  284. package/lib/packages/components/dropdown/src/dropdown-item.js +1 -0
  285. package/lib/packages/components/dropdown/src/dropdown-item.vue.js +1 -0
  286. package/lib/packages/components/dropdown/src/dropdown-item.vue2.js +1 -0
  287. package/lib/packages/components/dropdown/src/dropdown.js +1 -0
  288. package/lib/packages/components/dropdown/src/dropdown.vue.js +1 -0
  289. package/lib/packages/components/dropdown/src/dropdown.vue2.js +1 -0
  290. package/lib/packages/components/floating/index.js +1 -0
  291. package/lib/packages/components/floating/src/creat-floating-container.js +1 -0
  292. package/lib/packages/components/floating/src/floating-props.js +1 -0
  293. package/lib/packages/components/floating/src/floating.vue.js +1 -0
  294. package/lib/packages/components/floating/src/floating.vue2.js +1 -0
  295. package/lib/packages/components/grid/index.js +1 -0
  296. package/lib/packages/components/grid/src/col.js +1 -0
  297. package/lib/packages/components/grid/src/col.vue.js +1 -0
  298. package/lib/packages/components/grid/src/col.vue2.js +1 -0
  299. package/lib/packages/components/grid/src/row.js +1 -0
  300. package/lib/packages/components/grid/src/row.vue.js +1 -0
  301. package/lib/packages/components/grid/src/row.vue2.js +1 -0
  302. package/lib/packages/components/icon/index.js +1 -0
  303. package/lib/packages/components/icon/src/icon.js +1 -0
  304. package/lib/packages/components/icon/src/icon.vue.js +1 -0
  305. package/lib/packages/components/icon/src/icon.vue2.js +1 -0
  306. package/lib/packages/components/input/index.js +1 -0
  307. package/lib/packages/components/input/src/input.js +1 -0
  308. package/lib/packages/components/input/src/input.vue.js +1 -0
  309. package/lib/packages/components/input/src/input.vue2.js +1 -0
  310. package/lib/packages/components/installer.js +1 -0
  311. package/lib/packages/components/layout/index.js +1 -0
  312. package/lib/packages/components/layout/src/aside.js +1 -0
  313. package/lib/packages/components/layout/src/aside.vue.js +1 -0
  314. package/lib/packages/components/layout/src/aside.vue2.js +1 -0
  315. package/lib/packages/components/layout/src/content.vue.js +1 -0
  316. package/lib/packages/components/layout/src/content.vue2.js +1 -0
  317. package/lib/packages/components/layout/src/footer.js +1 -0
  318. package/lib/packages/components/layout/src/footer.vue.js +1 -0
  319. package/lib/packages/components/layout/src/footer.vue2.js +1 -0
  320. package/lib/packages/components/layout/src/header.js +1 -0
  321. package/lib/packages/components/layout/src/header.vue.js +1 -0
  322. package/lib/packages/components/layout/src/header.vue2.js +1 -0
  323. package/lib/packages/components/layout/src/layout.vue.js +1 -0
  324. package/lib/packages/components/layout/src/layout.vue2.js +1 -0
  325. package/lib/packages/components/link/index.js +1 -0
  326. package/lib/packages/components/link/src/link.js +1 -0
  327. package/lib/packages/components/link/src/link.vue.js +1 -0
  328. package/lib/packages/components/link/src/link.vue2.js +1 -0
  329. package/lib/packages/components/menu/index.js +1 -0
  330. package/lib/packages/components/menu/src/head-menu-props.js +1 -0
  331. package/lib/packages/components/menu/src/head-menu.vue.js +1 -0
  332. package/lib/packages/components/menu/src/head-menu.vue2.js +1 -0
  333. package/lib/packages/components/menu/src/menu-item-props.js +1 -0
  334. package/lib/packages/components/menu/src/menu-item.vue.js +1 -0
  335. package/lib/packages/components/menu/src/menu-item.vue2.js +1 -0
  336. package/lib/packages/components/menu/src/menu-props.js +1 -0
  337. package/lib/packages/components/menu/src/menu.vue.js +1 -0
  338. package/lib/packages/components/menu/src/menu.vue2.js +1 -0
  339. package/lib/packages/components/menu/src/submenu-props.js +1 -0
  340. package/lib/packages/components/menu/src/submenu.vue.js +1 -0
  341. package/lib/packages/components/menu/src/submenu.vue2.js +1 -0
  342. package/lib/packages/components/menu/src/v-menu.js +1 -0
  343. package/lib/packages/components/message/index.js +1 -0
  344. package/lib/packages/components/message/src/confirm.js +1 -0
  345. package/lib/packages/components/message/src/message-box.js +1 -0
  346. package/lib/packages/components/message/src/message-box.vue.js +1 -0
  347. package/lib/packages/components/message/src/message-box.vue2.js +1 -0
  348. package/lib/packages/components/message/src/message.js +1 -0
  349. package/lib/packages/components/message/src/notify.js +1 -0
  350. package/lib/packages/components/popconfirm/index.js +1 -0
  351. package/lib/packages/components/popconfirm/src/popconfirm.js +1 -0
  352. package/lib/packages/components/popconfirm/src/popconfirm.vue.js +1 -0
  353. package/lib/packages/components/popconfirm/src/popconfirm.vue2.js +1 -0
  354. package/lib/packages/components/scrollbar/index.js +1 -0
  355. package/lib/packages/components/scrollbar/src/scrollbar.js +1 -0
  356. package/lib/packages/components/scrollbar/src/scrollbar.vue.js +1 -0
  357. package/lib/packages/components/scrollbar/src/scrollbar.vue2.js +1 -0
  358. package/lib/packages/components/switch/index.js +1 -0
  359. package/lib/packages/components/switch/src/switch-txt.vue.js +1 -0
  360. package/lib/packages/components/switch/src/switch-txt.vue2.js +1 -0
  361. package/lib/packages/components/switch/src/switch.js +1 -0
  362. package/lib/packages/components/switch/src/switch.vue.js +1 -0
  363. package/lib/packages/components/switch/src/switch.vue2.js +1 -0
  364. package/lib/packages/components/tabs/index.js +1 -0
  365. package/lib/packages/components/tabs/src/tab-nav-bar.vue.js +1 -0
  366. package/lib/packages/components/tabs/src/tab-nav-bar.vue2.js +1 -0
  367. package/lib/packages/components/tabs/src/tab-nav-item.vue.js +1 -0
  368. package/lib/packages/components/tabs/src/tab-nav-item.vue2.js +1 -0
  369. package/lib/packages/components/tabs/src/tab-nav.vue.js +1 -0
  370. package/lib/packages/components/tabs/src/tab-nav.vue2.js +1 -0
  371. package/lib/packages/components/tabs/src/tab-panel-props.js +1 -0
  372. package/lib/packages/components/tabs/src/tab-panel.vue.js +1 -0
  373. package/lib/packages/components/tabs/src/tab-panel.vue2.js +1 -0
  374. package/lib/packages/components/tabs/src/tabs-props.js +1 -0
  375. package/lib/packages/components/tabs/src/tabs.vue.js +1 -0
  376. package/lib/packages/components/tabs/src/tabs.vue2.js +1 -0
  377. package/lib/packages/components/tag/index.js +1 -0
  378. package/lib/packages/components/tag/src/tag.js +1 -0
  379. package/lib/packages/components/tag/src/tag.vue.js +1 -0
  380. package/lib/packages/components/tag/src/tag.vue2.js +1 -0
  381. package/lib/packages/components/tooltip/index.js +1 -0
  382. package/lib/packages/components/tooltip/src/tooltip.js +1 -0
  383. package/lib/packages/components/tooltip/src/tooltip.vue.js +1 -0
  384. package/lib/packages/components/tooltip/src/tooltip.vue2.js +1 -0
  385. package/lib/packages/hooks/useAlert.js +1 -0
  386. package/lib/packages/hooks/useAttrs.js +1 -0
  387. package/lib/packages/hooks/useBadge.js +1 -0
  388. package/lib/packages/hooks/useCollapseAnimation.js +1 -0
  389. package/lib/packages/hooks/useDefaultValue.js +1 -0
  390. package/lib/packages/hooks/useDragSort.js +1 -0
  391. package/lib/packages/hooks/useDraggable.js +1 -0
  392. package/lib/packages/hooks/useFlag.js +1 -0
  393. package/lib/packages/hooks/useLockScroll.js +1 -0
  394. package/lib/packages/hooks/useMark.js +1 -0
  395. package/lib/packages/hooks/useNS.js +1 -0
  396. package/lib/packages/hooks/useVModel.js +1 -0
  397. package/lib/packages/tools/decorator/debounce.js +1 -0
  398. package/lib/packages/tools/decorator/single-ton.js +1 -0
  399. package/lib/packages/tools/decorator/throttle.js +1 -0
  400. package/lib/packages/tools/element/alert.js +1 -0
  401. package/lib/packages/tools/element/badge.js +1 -0
  402. package/lib/packages/tools/element/mark.js +1 -0
  403. package/lib/packages/tools/element/render-node.js +1 -0
  404. package/lib/packages/tools/extra/css.js +1 -0
  405. package/lib/packages/tools/extra/delay.js +1 -0
  406. package/lib/packages/tools/extra/fn-union.js +1 -0
  407. package/lib/packages/tools/extra/types.js +1 -0
  408. package/lib/packages/tools/managers/index-manager.js +1 -0
  409. package/lib/packages/tools/managers/layout-manager.js +1 -0
  410. package/lib/packages/tools/vn/with-install.js +1 -0
  411. package/package.json +82 -0
  412. package/packages/components/__tests__/utils.ts +54 -0
  413. package/packages/components/abstract/index.ts +13 -0
  414. package/packages/components/abstract/src/partial.vue +79 -0
  415. package/packages/components/badge/__tests__/badge.spec.ts +152 -0
  416. package/packages/components/badge/index.ts +13 -0
  417. package/packages/components/badge/src/badge.ts +95 -0
  418. package/packages/components/badge/src/badge.vue +78 -0
  419. package/packages/components/button/__tests__/button.spec.ts +195 -0
  420. package/packages/components/button/index.ts +13 -0
  421. package/packages/components/button/src/button.ts +167 -0
  422. package/packages/components/button/src/button.vue +101 -0
  423. package/packages/components/dialog/index.ts +13 -0
  424. package/packages/components/dialog/src/dialog.ts +182 -0
  425. package/packages/components/dialog/src/dialog.vue +193 -0
  426. package/packages/components/divider/index.ts +13 -0
  427. package/packages/components/divider/src/divider.ts +71 -0
  428. package/packages/components/divider/src/divider.vue +56 -0
  429. package/packages/components/drawer/index.ts +13 -0
  430. package/packages/components/drawer/src/drawer.ts +196 -0
  431. package/packages/components/drawer/src/drawer.vue +205 -0
  432. package/packages/components/dropdown/index.ts +16 -0
  433. package/packages/components/dropdown/src/dropdown-item.ts +95 -0
  434. package/packages/components/dropdown/src/dropdown-item.vue +65 -0
  435. package/packages/components/dropdown/src/dropdown.ts +172 -0
  436. package/packages/components/dropdown/src/dropdown.vue +109 -0
  437. package/packages/components/dropdown/src/type.ts +148 -0
  438. package/packages/components/floating/index.ts +13 -0
  439. package/packages/components/floating/src/creat-floating-container.ts +17 -0
  440. package/packages/components/floating/src/floating-props.ts +127 -0
  441. package/packages/components/floating/src/floating.vue +216 -0
  442. package/packages/components/floating/src/type.ts +91 -0
  443. package/packages/components/global.d.ts +46 -0
  444. package/packages/components/grid/index.ts +16 -0
  445. package/packages/components/grid/src/col.ts +43 -0
  446. package/packages/components/grid/src/col.vue +33 -0
  447. package/packages/components/grid/src/row.ts +54 -0
  448. package/packages/components/grid/src/row.vue +36 -0
  449. package/packages/components/icon/index.ts +13 -0
  450. package/packages/components/icon/src/icon.ts +47 -0
  451. package/packages/components/icon/src/icon.vue +42 -0
  452. package/packages/components/index.ts +32 -0
  453. package/packages/components/input/__tests__/input.spec.ts +379 -0
  454. package/packages/components/input/index.ts +13 -0
  455. package/packages/components/input/src/input.ts +151 -0
  456. package/packages/components/input/src/input.vue +300 -0
  457. package/packages/components/installer.ts +69 -0
  458. package/packages/components/layout/index.ts +26 -0
  459. package/packages/components/layout/src/aside.ts +19 -0
  460. package/packages/components/layout/src/aside.vue +35 -0
  461. package/packages/components/layout/src/content.ts +11 -0
  462. package/packages/components/layout/src/content.vue +18 -0
  463. package/packages/components/layout/src/footer.ts +19 -0
  464. package/packages/components/layout/src/footer.vue +26 -0
  465. package/packages/components/layout/src/header.ts +19 -0
  466. package/packages/components/layout/src/header.vue +26 -0
  467. package/packages/components/layout/src/layout.ts +11 -0
  468. package/packages/components/layout/src/layout.vue +34 -0
  469. package/packages/components/link/index.ts +13 -0
  470. package/packages/components/link/src/link.ts +92 -0
  471. package/packages/components/link/src/link.vue +52 -0
  472. package/packages/components/menu/index.ts +28 -0
  473. package/packages/components/menu/src/head-menu-props.ts +80 -0
  474. package/packages/components/menu/src/head-menu.vue +191 -0
  475. package/packages/components/menu/src/menu-item-props.ts +93 -0
  476. package/packages/components/menu/src/menu-item.vue +85 -0
  477. package/packages/components/menu/src/menu-props.ts +98 -0
  478. package/packages/components/menu/src/menu.vue +110 -0
  479. package/packages/components/menu/src/submenu-props.ts +58 -0
  480. package/packages/components/menu/src/submenu.vue +270 -0
  481. package/packages/components/menu/src/type.ts +346 -0
  482. package/packages/components/menu/src/v-menu.ts +142 -0
  483. package/packages/components/message/index.ts +27 -0
  484. package/packages/components/message/src/confirm.ts +136 -0
  485. package/packages/components/message/src/message-box.ts +168 -0
  486. package/packages/components/message/src/message-box.vue +204 -0
  487. package/packages/components/message/src/message.ts +111 -0
  488. package/packages/components/message/src/notify.ts +179 -0
  489. package/packages/components/package.json +6 -0
  490. package/packages/components/popconfirm/index.ts +13 -0
  491. package/packages/components/popconfirm/src/popconfirm.ts +188 -0
  492. package/packages/components/popconfirm/src/popconfirm.vue +98 -0
  493. package/packages/components/scrollbar/index.ts +13 -0
  494. package/packages/components/scrollbar/src/scrollbar.ts +54 -0
  495. package/packages/components/scrollbar/src/scrollbar.vue +277 -0
  496. package/packages/components/switch/__tests__/switch.spec.ts +259 -0
  497. package/packages/components/switch/index.ts +13 -0
  498. package/packages/components/switch/src/switch-txt.vue +61 -0
  499. package/packages/components/switch/src/switch.ts +225 -0
  500. package/packages/components/switch/src/switch.vue +152 -0
  501. package/packages/components/tabs/index.ts +16 -0
  502. package/packages/components/tabs/src/tab-nav-bar.vue +86 -0
  503. package/packages/components/tabs/src/tab-nav-item.vue +80 -0
  504. package/packages/components/tabs/src/tab-nav.vue +298 -0
  505. package/packages/components/tabs/src/tab-panel-props.ts +77 -0
  506. package/packages/components/tabs/src/tab-panel.vue +52 -0
  507. package/packages/components/tabs/src/tabs-props.ts +122 -0
  508. package/packages/components/tabs/src/tabs.vue +144 -0
  509. package/packages/components/tabs/src/type.ts +194 -0
  510. package/packages/components/tag/index.ts +13 -0
  511. package/packages/components/tag/src/tag.ts +145 -0
  512. package/packages/components/tag/src/tag.vue +80 -0
  513. package/packages/components/tooltip/index.ts +13 -0
  514. package/packages/components/tooltip/src/tooltip.ts +150 -0
  515. package/packages/components/tooltip/src/tooltip.vue +70 -0
  516. package/packages/hooks/index.ts +16 -0
  517. package/packages/hooks/package.json +7 -0
  518. package/packages/hooks/useAlert.ts +93 -0
  519. package/packages/hooks/useAttrs.ts +59 -0
  520. package/packages/hooks/useBadge.ts +103 -0
  521. package/packages/hooks/useCollapseAnimation.ts +55 -0
  522. package/packages/hooks/useDefaultValue.ts +41 -0
  523. package/packages/hooks/useDragSort.ts +125 -0
  524. package/packages/hooks/useDraggable.ts +97 -0
  525. package/packages/hooks/useFlag.ts +36 -0
  526. package/packages/hooks/useLockScroll.ts +45 -0
  527. package/packages/hooks/useMark.ts +53 -0
  528. package/packages/hooks/useNS.ts +328 -0
  529. package/packages/hooks/useVModel.ts +65 -0
  530. package/packages/styles/animate.css +31 -0
  531. package/packages/styles/animation/_index.less +17 -0
  532. package/packages/styles/animation/extra.less +21 -0
  533. package/packages/styles/animation/fade/fade.less +11 -0
  534. package/packages/styles/animation/fade/fadeDown.less +37 -0
  535. package/packages/styles/animation/fade/fadeLeft.less +36 -0
  536. package/packages/styles/animation/fade/fadeRight.less +37 -0
  537. package/packages/styles/animation/fade/fadeUp.less +36 -0
  538. package/packages/styles/animation/only.less +15 -0
  539. package/packages/styles/animation/scale/scale.less +46 -0
  540. package/packages/styles/animation/scale/scaleHorizontal.less +64 -0
  541. package/packages/styles/animation/scale/scaleVertical.less +62 -0
  542. package/packages/styles/components/_index.less +30 -0
  543. package/packages/styles/components/badge/_index.less +90 -0
  544. package/packages/styles/components/button/_index.less +246 -0
  545. package/packages/styles/components/dialog/_index.less +46 -0
  546. package/packages/styles/components/divider/_index.less +89 -0
  547. package/packages/styles/components/drawer/_index.less +73 -0
  548. package/packages/styles/components/dropdown/_index.less +92 -0
  549. package/packages/styles/components/floating/_index.less +78 -0
  550. package/packages/styles/components/grid/_index.less +50 -0
  551. package/packages/styles/components/icon/_index.less +27 -0
  552. package/packages/styles/components/input/_index.less +133 -0
  553. package/packages/styles/components/layout/_index.less +70 -0
  554. package/packages/styles/components/link/_index.less +73 -0
  555. package/packages/styles/components/menu/_index.less +146 -0
  556. package/packages/styles/components/message/_index.less +236 -0
  557. package/packages/styles/components/popconfirm/_index.less +22 -0
  558. package/packages/styles/components/scrollbar/_index.less +116 -0
  559. package/packages/styles/components/switch/_index.less +228 -0
  560. package/packages/styles/components/tabs/_index.less +340 -0
  561. package/packages/styles/components/tag/_index.less +83 -0
  562. package/packages/styles/components/tooltip/_index.less +22 -0
  563. package/packages/styles/extra/_index.less +6 -0
  564. package/packages/styles/extra/alert.less +26 -0
  565. package/packages/styles/extra/mark.less +23 -0
  566. package/packages/styles/global.less +12 -0
  567. package/packages/styles/icons/iconfont.css +411 -0
  568. package/packages/styles/icons/iconfont.js +1 -0
  569. package/packages/styles/icons/iconfont.json +702 -0
  570. package/packages/styles/icons/iconfont.ttf +0 -0
  571. package/packages/styles/icons/iconfont.woff +0 -0
  572. package/packages/styles/icons/iconfont.woff2 +0 -0
  573. package/packages/styles/mixn/_index.less +12 -0
  574. package/packages/styles/mixn/background.less +65 -0
  575. package/packages/styles/mixn/border.less +31 -0
  576. package/packages/styles/mixn/layout.less +80 -0
  577. package/packages/styles/mixn/reset.less +13 -0
  578. package/packages/styles/mixn/status.less +95 -0
  579. package/packages/styles/mixn/tools.less +111 -0
  580. package/packages/styles/package.json +5 -0
  581. package/packages/styles/plugin/index.js +79 -0
  582. package/packages/styles/theme/_index.less +9 -0
  583. package/packages/styles/theme/dark.less +260 -0
  584. package/packages/styles/theme/font.less +85 -0
  585. package/packages/styles/theme/light.less +263 -0
  586. package/packages/styles/theme/radius.less +20 -0
  587. package/packages/styles/theme/size.less +89 -0
  588. package/packages/styles/variable.less +7 -0
  589. package/packages/tools/decorator/debounce.ts +53 -0
  590. package/packages/tools/decorator/single-ton.ts +17 -0
  591. package/packages/tools/decorator/throttle.ts +50 -0
  592. package/packages/tools/element/alert.ts +117 -0
  593. package/packages/tools/element/badge.ts +109 -0
  594. package/packages/tools/element/mark.ts +73 -0
  595. package/packages/tools/element/render-node.ts +225 -0
  596. package/packages/tools/extra/css.ts +40 -0
  597. package/packages/tools/extra/delay.ts +16 -0
  598. package/packages/tools/extra/fn-union.ts +17 -0
  599. package/packages/tools/extra/types.ts +88 -0
  600. package/packages/tools/index.ts +27 -0
  601. package/packages/tools/managers/index-manager.ts +25 -0
  602. package/packages/tools/managers/layout-manager.ts +102 -0
  603. package/packages/tools/package.json +7 -0
  604. package/packages/tools/vn/with-install.ts +32 -0
  605. package/packages/typings/base.ts +69 -0
  606. package/packages/typings/index.ts +7 -0
  607. package/packages/typings/package.json +7 -0
  608. package/packages/typings/sui-options.ts +8 -0
  609. package/pnpm-workspace.yaml +2 -0
  610. package/tsconfig.app.json +42 -0
  611. package/tsconfig.json +7 -0
  612. package/tsconfig.node.json +22 -0
  613. package/vite.config.ts +116 -0
  614. package/vitest.config.ts +44 -0
@@ -0,0 +1,225 @@
1
+ /*
2
+ * @description: 渲染 PNode
3
+ * @author: MC.Yang
4
+ */
5
+ import {ComponentInternalInstance, Fragment, getCurrentInstance, h, isVNode, VNode} from 'vue';
6
+ import {camelCase, ensureArray, isArray, isEmpty, isFunction, isObject, isString, kebabCase} from "../extra/types";
7
+
8
+ /**
9
+ * 类型守卫函数,用于检查一个值是否是 RenderContext
10
+ * @param obj 选项参数
11
+ * @param stats 属性
12
+ */
13
+ function isRenderContext(obj: any, stats: string = 'defaultNode'): obj is RenderContext {
14
+ return isObject(obj) && stats in obj;
15
+ }
16
+
17
+ /**
18
+ * 是否为空节点,需要过滤掉注释节点。注释节点也会被认为是空节点
19
+ * @param node 节点
20
+ */
21
+ function isEmptyNode(node: any) {
22
+ if ([undefined, null, ''].includes(node)) return true;
23
+ const innerNodes = node instanceof Array ? node : [node];
24
+ const r = innerNodes.filter((node) => node?.type?.toString() !== 'Symbol(Comment)');
25
+ return !r.length;
26
+ }
27
+
28
+ /**
29
+ * 渲染上下文
30
+ */
31
+ export interface RenderContext {
32
+ defaultNode?: VNode | string;
33
+ params?: Record<string, any>;
34
+ slotFirst?: boolean;
35
+ // 是否不打印 LOG
36
+ silent?: boolean;
37
+ }
38
+
39
+ /**
40
+ * 选项类型
41
+ */
42
+ export type OptionsType = VNode | RenderContext | string;
43
+
44
+ /**
45
+ * 得到默认的 Node
46
+ * @param options 选项
47
+ */
48
+ export function getDefaultNode(options?: OptionsType) {
49
+ let defaultNode;
50
+ if (isRenderContext(options)) {
51
+ defaultNode = options.defaultNode;
52
+ } else if (isVNode(options) || isString(options)) {
53
+ defaultNode = options;
54
+ }
55
+
56
+ return defaultNode;
57
+ }
58
+
59
+ /**
60
+ * 得到子节点 Node
61
+ * @param content 内容
62
+ */
63
+ export function getChildren(content: VNode[]) {
64
+ const childList: VNode[] = [];
65
+ const innerGetChildren = (content: VNode[]) => {
66
+ if (!isArray(content)) return;
67
+ content.forEach((item: VNode) => {
68
+ if (item.children && isArray(item.children)) {
69
+ if (item.type !== Fragment) return;
70
+ innerGetChildren(item.children as VNode[]);
71
+ } else {
72
+ childList.push(item);
73
+ }
74
+ });
75
+ return childList;
76
+ };
77
+
78
+ return innerGetChildren(content);
79
+ }
80
+
81
+ /**
82
+ * 得到参数
83
+ * @param options 选项
84
+ */
85
+ export function getParams(options?: OptionsType) {
86
+ return isObject(options) && isRenderContext(options, 'params') ? options.params : {};
87
+ }
88
+
89
+ /**
90
+ * 得到第一个插槽
91
+ * @param options 选项
92
+ */
93
+ export function getSlotFirst(options?: OptionsType) {
94
+ return isObject(options) && isRenderContext(options, 'slotFirst') ? options.slotFirst : {};
95
+ }
96
+
97
+ /**
98
+ * 同时支持驼峰命名和中划线命名的插槽,示例:value-display 和 valueDisplay
99
+ * @param instance 组件实例
100
+ * @param name 插槽和属性名称
101
+ * @param params 参数
102
+ */
103
+ export function handleSlots(instance: ComponentInternalInstance, name: string, params: Record<string, any> | undefined) {
104
+ // 检查是否存在 驼峰命名 的插槽(过滤注释节点)
105
+ let node = instance.slots[camelCase(name)]?.(params);
106
+ if (node && node.filter((t) => t.type !== Symbol.for('v-cmt')).length) return node;
107
+ // 检查是否存在 中划线命名 的插槽(过滤注释节点)
108
+ node = instance.slots[kebabCase(name)]?.(params);
109
+ if (node && node.filter((t) => t.type !== Symbol.for('v-cmt')).length) return node;
110
+ return null;
111
+ }
112
+
113
+ /**
114
+ * 通过渲染 PNode,props 和 插槽同时处理,也能处理默认值为 true 则渲染默认节点的情况
115
+ * 优先级:Props 大于插槽
116
+ * 如果 props 值为 true ,则使用插槽渲染。如果也没有插槽的情况下,则使用 defaultNode 渲染
117
+ * @param instance 组件实例
118
+ * @param name 插槽和属性名称
119
+ * @param options 值可能为默认渲染节点,也可能是默认渲染节点和参数的集合
120
+ * @example renderPNode(instance, 'closeBtn') 优先级 props function 大于 插槽
121
+ * @example renderPNode(instance, 'closeBtn', <close-icon />)。 当属性值为 true 时则渲染 <close-icon />
122
+ * @example renderPNode(instance, 'closeBtn', { defaultNode: <close-icon />, params })。 params 为渲染节点时所需的参数
123
+ */
124
+ export const renderPNode = (instance: ComponentInternalInstance, name: string, options?: OptionsType) => {
125
+ const params = getParams(options);
126
+ const defaultNode = getDefaultNode(options);
127
+ const slotFirst = getSlotFirst(options);
128
+
129
+ // 处理 props 类型的 Node
130
+ let propsNode;
131
+ if (Object.keys(instance.props).includes(name)) {
132
+ propsNode = instance.props[name];
133
+ }
134
+
135
+ // propsNode 为 false 不渲染
136
+ if (propsNode === false || propsNode === null) return;
137
+ if (propsNode === true) {
138
+ return handleSlots(instance, name, params) || defaultNode;
139
+ }
140
+
141
+ // 同名 props 和 slot 优先处理 props
142
+ if (isFunction(propsNode)) return propsNode(h, params);
143
+ const isPropsEmpty = [undefined, params, ''].includes(propsNode);
144
+ // Props 为空,但插槽存在
145
+ if ((isPropsEmpty || slotFirst) && (instance.slots[camelCase(name)] || instance.slots[kebabCase(name)])) {
146
+ return handleSlots(instance, name, params);
147
+ }
148
+ return ensureArray(propsNode);
149
+ };
150
+
151
+ /**
152
+ * 通过渲染 PNode,props 和 插槽同时处理,也能处理默认值为 true 则渲染默认节点的情况
153
+ * 优先级:Props 大于插槽
154
+ * 如果 props 值为 true ,则使用插槽渲染。如果也没有插槽的情况下,则使用 defaultNode 渲染
155
+ * @example renderPNode('closeBtn') 优先级 props function 大于 插槽
156
+ * @example renderPNode('closeBtn', <close-icon />)。 当属性值为 true 时则渲染 <close-icon />
157
+ * @example renderPNode('closeBtn', { defaultNode: <close-icon />, params })。 params 为渲染节点时所需的参数
158
+ */
159
+ export const usePNode = () => {
160
+ return function (name: string, options?: OptionsType) {
161
+ const instance = getCurrentInstance();
162
+ if (instance == null) return undefined;
163
+ return renderPNode(instance, name, options);
164
+ };
165
+ };
166
+
167
+ /**
168
+ * 通过渲染 PNode,props 和 插槽同时处理。与 renderPNode 区别在于 属性值为 undefined 时会渲染默认节点
169
+ * @param instance 组件实例
170
+ * @param name 插槽和属性名称
171
+ * @param options 选项
172
+ * @example renderPNode(instance, 'closeBtn')
173
+ * @example renderPNode(instance, 'closeBtn', <close-icon />)。this.closeBtn 为空时,则兜底渲染 <close-icon />
174
+ * @example renderPNode(instance, 'closeBtn', { defaultNode: <close-icon />, params }) 。params 为渲染节点时所需的参数
175
+ */
176
+ export const renderPNodeDefault = (instance: ComponentInternalInstance, name: string = 'default', options?: OptionsType) => {
177
+ return renderPNode(instance, name, options) || getDefaultNode(options);
178
+ };
179
+
180
+ /**
181
+ * 通过渲染 PNode,props 和 插槽同时处理。与 renderPNode 区别在于 属性值为 undefined 时会渲染默认节点
182
+ * @example renderPNode('closeBtn')
183
+ * @example renderPNode('closeBtn', <close-icon />)。this.closeBtn 为空时,则兜底渲染 <close-icon />
184
+ * @example renderPNode('closeBtn', { defaultNode: <close-icon />, params }) 。params 为渲染节点时所需的参数
185
+ */
186
+ export const usePNodeDefault = () => {
187
+ return function (name: string = 'default', options?: OptionsType) {
188
+ const instance = getCurrentInstance();
189
+ if (instance == null) return undefined;
190
+ return renderPNodeDefault(instance, name, options);
191
+ };
192
+ };
193
+
194
+ /**
195
+ * 用于处理相同名称的 PNode 渲染
196
+ * @param instance 组件实例
197
+ * @param name1 第一个名称,优先级高于 name2
198
+ * @param name2 第二个名称
199
+ * @param options defaultNode 默认渲染内容:当 name1 和 name2 都为空时会启动默认内容渲染
200
+ * @example renderContent(instance, 'default', 'content')
201
+ * @example renderContent(instance, 'default', 'content', '我是默认内容')
202
+ * @example renderContent(instance, 'default', 'content', { defaultNode: '我是默认内容', params })
203
+ */
204
+ export const renderContent = (instance: ComponentInternalInstance, name1: string, name2: string, options?: OptionsType) => {
205
+
206
+ const node1 = renderPNode(instance, name1, options);
207
+ const node2 = renderPNode(instance, name2, options);
208
+
209
+ const res = isEmptyNode(node1) ? node2 : node1;
210
+ return ensureArray(isEmpty(res) ? getDefaultNode(options) : res);
211
+ };
212
+
213
+ /**
214
+ * 用于处理相同名称的 PNode 渲染
215
+ * @example renderContent('default', 'content')
216
+ * @example renderContent('default', 'content', '我是默认内容')
217
+ * @example renderContent('default', 'content', { defaultNode: '我是默认内容', params })
218
+ */
219
+ export const useContent = () => {
220
+ return function (name1: string, name2: string, options?: OptionsType) {
221
+ const instance = getCurrentInstance();
222
+ if (instance == null) return undefined;
223
+ return renderContent(instance, name1, name2, options);
224
+ };
225
+ };
@@ -0,0 +1,40 @@
1
+ /*
2
+ * @description: CSS 样式工具
3
+ * @author: MC.Yang
4
+ */
5
+ import {isEmpty, isNumber, isString} from "./types";
6
+ import {ElementTypes} from "@bin-ui/typings";
7
+
8
+ type Des = 'fade' |'light' |'lighter' |'dark';
9
+ type Clr = ElementTypes | 'primary' | 'cyan' | 'gray' | Des | undefined
10
+
11
+ /**
12
+ * @description 拼接 css 颜色变量字符串
13
+ * @param args 参数
14
+ */
15
+ export const getClrVar = function (...args: Array<Clr>): string {
16
+
17
+ // 各参数中有一个为空则返回空字符串
18
+ for (let item of args) {
19
+ if (!isString(item)) {
20
+ return '';
21
+ }
22
+ }
23
+
24
+ const strList = Array.from(args.map(item => item));
25
+ const str = strList.join('-');
26
+ return `var(--pixel-color-${str})`;
27
+ }
28
+
29
+
30
+ export const px = (num: number | undefined | string, dft?: number): string => {
31
+ if (isEmpty(num) && !isEmpty(dft)) {
32
+ return `${dft}px`
33
+
34
+ }
35
+ if (isNumber(Number(num))) {
36
+ return `${num}px`
37
+ }
38
+ return '0'
39
+ }
40
+
@@ -0,0 +1,16 @@
1
+ /*
2
+ * @description: 延迟工具
3
+ * @author: MC.Yang
4
+ */
5
+
6
+ /**
7
+ * @description 延时一段时间
8
+ * @param timeout 延时时间
9
+ */
10
+ export const delay = function (timeout:number = 0) {
11
+ return new Promise(resolve => {
12
+ setTimeout(() => {
13
+ resolve("ok");
14
+ },timeout);
15
+ })
16
+ }
@@ -0,0 +1,17 @@
1
+ /*
2
+ * @description: 函数工具
3
+ * @author: MC.Yang
4
+ */
5
+
6
+ /**
7
+ * @description 将函数聚合,不负责返回值
8
+ * @param args 函数体
9
+ */
10
+ export const fnUnion = function (...args:Array<Function>) {
11
+ return function (){
12
+ for (let i = 0; i < args.length; i++) {
13
+ args[i]();
14
+ }
15
+ }
16
+ }
17
+
@@ -0,0 +1,88 @@
1
+ /*
2
+ * @description: 公共的工具
3
+ * @author: MC.Yang
4
+ */
5
+ export const isString = (val: unknown): val is string => typeof val === 'string';
6
+ export const isNumber = (val: unknown): val is number => typeof val === 'number';
7
+ export const isBoolean = (val: unknown): val is boolean => typeof val === 'boolean';
8
+ export const isUndefined = (val: unknown): val is undefined => val === undefined;
9
+ export const isSymbol = (val: unknown): val is symbol => typeof val === 'symbol';
10
+ export const isObject = (val: unknown): val is Object => typeof val === 'object' && val !== null;
11
+ export const isFunction = (val: unknown): val is Function => typeof val === 'function';
12
+ export const isPromise = <T = any>(val: any): val is Promise<T> => !!val && typeof val.then === 'function';
13
+
14
+ export const isDate = (val: unknown): val is Date => val instanceof Date && !isNaN(val.getTime());
15
+ export const isMap = (val: unknown): val is Map<any, any> => val instanceof Map;
16
+ export const isSet = (val: unknown): val is Set<any> => val instanceof Set;
17
+ export const isArray = (val: unknown): val is Array<any> => Array.isArray(val);
18
+ export const isRegExp = (val: unknown): val is RegExp => val instanceof RegExp;
19
+
20
+ export const isEmpty = (val: unknown) => {
21
+ if (val === null || val === undefined) {
22
+ return true;
23
+ }
24
+
25
+ if (typeof val === 'string') {
26
+ return !val.trim().length;
27
+ }
28
+
29
+ if (Array.isArray(val)) {
30
+ return !val.length;
31
+ }
32
+
33
+ if (typeof val === 'object') {
34
+ for (const key in val) {
35
+ if (val.hasOwnProperty(key)) {
36
+ return false;
37
+ }
38
+ }
39
+ return true;
40
+ }
41
+
42
+ return false;
43
+ }
44
+
45
+ /**
46
+ * 转换成数组
47
+ * @param value 值
48
+ */
49
+ export function ensureArray<T>(value: T | T[]): T[] | null {
50
+ if (isEmpty(value)) {
51
+ return null;
52
+ }
53
+ if (isArray(value)) {
54
+ return value;
55
+ } else {
56
+ return [value];
57
+ }
58
+ }
59
+
60
+ /**
61
+ * 将字符串转换为驼峰格式
62
+ * @param str 要转换的字符串
63
+ * @returns 驼色大小写字符串
64
+ */
65
+ export function camelCase(str: string): string {
66
+ return str
67
+ .replace(/[^\w\s-_]/g, '') // 移除所有非字母数字、空格、连字符或下划线的字符
68
+ .replace(/[-\s_]+(.)?/g, function (match, chr) { // 替换空格、连字符或下划线及其后的字符
69
+ // console.log(match);
70
+ return chr ? chr.toUpperCase() : ''; // 将字符转换为大写(如果存在)
71
+ })
72
+ .replace(/^./, function (match) { // 处理第一个字符,确保它是小写(如果原始字符串以小写字母开头)
73
+ return match.toLowerCase();
74
+ });
75
+ }
76
+
77
+ /**
78
+ * 将字符串转换为串格式
79
+ * @param str 要转换的字符串
80
+ * @returns 串格式字符串
81
+ */
82
+ export function kebabCase(str: string): string {
83
+ return str
84
+ .match(/[A-Z]?[a-z]+|[0-9]+/g)! // 匹配大写字母开头的小写字母序列或数字序列
85
+ .map(word => word.toLowerCase()) // 将每个单词转换为小写
86
+ .join('-'); // 使用连字符连接单词
87
+ }
88
+
@@ -0,0 +1,27 @@
1
+ /*
2
+ * @description: 工具类
3
+ * @author: MC.Yang
4
+ */
5
+
6
+ // element
7
+ export * from "./element/alert.ts";
8
+ export * from "./element/badge.ts";
9
+ export * from "./element/mark.ts";
10
+
11
+ // decorator
12
+ export * from "./decorator/debounce";
13
+ export * from "./decorator/throttle";
14
+ export * from "./decorator/single-ton";
15
+
16
+ // vn
17
+ export * from "./vn/with-install";
18
+
19
+ // manager
20
+ export * from "./managers/index-manager";
21
+ export * from "./managers/layout-manager";
22
+
23
+ // extra
24
+ export * from "./extra/delay";
25
+ export * from "./extra/fn-union";
26
+ export * from "./extra/types";
27
+ export * from "./extra/css";
@@ -0,0 +1,25 @@
1
+ /*
2
+ * @description: 元素层级管理器
3
+ * @author: MC.Yang
4
+ */
5
+ import {singleTon} from "../decorator/single-ton";
6
+
7
+ /**
8
+ * @description 元素层级管理器, 不断递增 z-index
9
+ */
10
+ class IdxManager {
11
+ protected index: number
12
+
13
+ constructor(index: number = 2000) {
14
+ this.index = index;
15
+ }
16
+
17
+ nextIndex() {
18
+ return this.index++;
19
+ }
20
+ }
21
+
22
+ const IndexManager = singleTon(IdxManager);
23
+
24
+ export {IndexManager}
25
+
@@ -0,0 +1,102 @@
1
+ export type position = 'down' | 'up';
2
+
3
+ /**
4
+ * @description 布局管理器, 放入其中的元素将会自动布局
5
+ */
6
+ class LayoutManager {
7
+ protected position: position
8
+ protected appList: Array<HTMLElement>
9
+
10
+ constructor(position: position) {
11
+ this.position = position;
12
+ this.appList = [] as Array<HTMLElement>;
13
+ }
14
+
15
+ /**
16
+ * @description 在尾部添加一个元素
17
+ * @param el HTMLElement
18
+ */
19
+ push(el: HTMLElement) {
20
+ this.appList.push(el);
21
+ this.update();
22
+ }
23
+
24
+ /**
25
+ * @description 删除一个元素
26
+ * @param el HTMLElement
27
+ */
28
+ delete(el: HTMLElement) {
29
+ const pos = this.appList.indexOf(el);
30
+ this.appList.splice(pos, 1);
31
+ this.update();
32
+ }
33
+
34
+ /**
35
+ * @description 下一个元素的位置
36
+ */
37
+ nextPos() {
38
+ let res = 0;
39
+ this.appList.forEach(item => {
40
+ res += parseInt(item.getAttribute('data-space') as string) + item.offsetHeight;
41
+ })
42
+ return res;
43
+ }
44
+
45
+ /**
46
+ * @description 获取元素
47
+ * @param index 索引
48
+ */
49
+ getEl(index: number): HTMLElement | undefined {
50
+ return this.appList[index];
51
+ }
52
+
53
+ /**
54
+ * @description 获取的索引
55
+ * @param el HTMLElement
56
+ */
57
+ getIndexOf(el: HTMLElement): number {
58
+ return this.appList.indexOf(el);
59
+ }
60
+
61
+ /**
62
+ * @description 更新元素位置
63
+ * @protected
64
+ */
65
+ protected update() {
66
+ if (this.position === 'up') {
67
+ this._layoutUp();
68
+ }
69
+ if (this.position === 'down') {
70
+ this._layoutDown();
71
+ }
72
+ }
73
+
74
+ /**
75
+ * @description 向上布局
76
+ * @protected
77
+ */
78
+ protected _layoutUp() {
79
+ let bottom = 0;
80
+ this.appList.forEach(item => {
81
+ bottom += parseInt(item.getAttribute('data-space') as string);
82
+ item.style.bottom = `${bottom}px`;
83
+ bottom += item.offsetHeight;
84
+ })
85
+ }
86
+
87
+ /**
88
+ * @description 向下布局
89
+ * @protected
90
+ */
91
+ protected _layoutDown() {
92
+ let top = 0;
93
+ this.appList.forEach(item => {
94
+ top += parseInt(item.getAttribute('data-space') as string);
95
+ item.style.top = `${top}px`;
96
+ top += item.offsetHeight;
97
+ })
98
+ }
99
+
100
+ }
101
+
102
+ export {LayoutManager}
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@bin-ui/tools",
3
+ "main": "index.ts",
4
+ "private": true,
5
+ "sideEffects": false,
6
+ "dependencies": {}
7
+ }
@@ -0,0 +1,32 @@
1
+ /*
2
+ * @description: 安装注册
3
+ * @author: MC.Yang
4
+ */
5
+ import {App, Component, Directive, Plugin} from "vue";
6
+ import {DefineComponent} from "vue";
7
+
8
+ /**
9
+ * 组件注册与安装
10
+ * @param comp 组件
11
+ * @param alias 别名
12
+ * @param directive 指令
13
+ */
14
+ function withInstall<T extends Component | DefineComponent>(
15
+ comp: T,
16
+ alias?: string,
17
+ directive?: { name: string; comp: Directive<T & Plugin> },
18
+ ): T & Plugin {
19
+ const componentPlugin = comp as T & Component & Plugin;
20
+ componentPlugin.install = (app: App, name?: string) => {
21
+ const componentName = alias || name || componentPlugin.name;
22
+ if (componentName) {
23
+ app.component(componentName, comp);
24
+ directive && app.directive(directive.name, directive.comp);
25
+ }
26
+ };
27
+ return componentPlugin as T & Plugin;
28
+ }
29
+
30
+ export default {withInstall};
31
+
32
+ export {withInstall};
@@ -0,0 +1,69 @@
1
+ /*
2
+ * @description: 基础类型定义
3
+ * @author: MC.Yang
4
+ */
5
+
6
+ /**
7
+ * PNode
8
+ */
9
+ type VNode = import('vue').VNode;
10
+ export type SlotReturnValue = VNode | string | boolean | null | undefined | SlotReturnArray;
11
+ export type SlotReturnArray = Array<SlotReturnValue>;
12
+ export type PNodeReturnValue = SlotReturnValue;
13
+ /**
14
+ * 严格执行是否有参数,不允许出现 props?:T
15
+ */
16
+ export type PNode<T = undefined> = T extends undefined
17
+ ? (h: typeof import('vue').h) => PNodeReturnValue
18
+ : (h: typeof import('vue').h, props: T) => PNodeReturnValue;
19
+
20
+ /**
21
+ * 链接的跳转方式,如:当前页面打开、新页面打开等,同 HTML 属性 target 含义相同
22
+ * "_self":内容在当前页面显示。
23
+ * "_blank":内容在新页面显示。
24
+ * “three”:内容在对应窗口显示
25
+ * "_top":在当前窗体打开链接,并替换当前的整个窗体(框架页),清除所有包含的框架
26
+ * "_parent":在父窗体中打开链接,在窗口与顶级框架中,等同于_self
27
+ */
28
+ export type TargetType = '_blank' | '_self' | '_parent' | '_top' | 'three';
29
+
30
+ /**
31
+ * 消息触发器类型
32
+ */
33
+ export type MessageTriggerTypes = 'system' | 'esc' | 'mark' | 'icon';
34
+
35
+ /**
36
+ * 元素类型
37
+ */
38
+ export type ElementTypes = 'success' | 'info' | 'warning' | 'danger';
39
+
40
+ /**
41
+ * 元素大小
42
+ */
43
+ export type ElementSizes = 'small' | 'normal' | 'large';
44
+
45
+ /**
46
+ * 浮动触发类型
47
+ */
48
+ export type FloatingTrigger = 'hover' | 'click' | 'focus' | 'clickToOpen' | 'unset';
49
+
50
+ /**
51
+ * 样式类型
52
+ */
53
+ type fade = 'fadeDown' | 'fadeRight' | 'fadeUp' | 'fadeLeft';
54
+ type fadeModifier = 'half' | 'completely';
55
+ type scale = 'scaleVertical' | 'scaleHorizontal'
56
+ type scaleModifier = 'center' | 'start' | 'end';
57
+ export type Transition =
58
+ `p-transition-${fade}`
59
+ | `p-transition-fade`
60
+ | `p-transition-${fade}--${fadeModifier}`
61
+ | 'p-transition-none'
62
+ | `p-transition-${scale}`
63
+ | `p-transition-${scale}--${scaleModifier}`
64
+ | `p-transition-scale`
65
+ | `p-transition-scale--${fadeModifier}`
66
+ | `p-transition-collapse--vertical`
67
+ | `p-transition-collapse--horizontal`
68
+ ;
69
+
@@ -0,0 +1,7 @@
1
+ /*
2
+ * @description: 选项
3
+ * @author: MC.Yang
4
+ */
5
+
6
+ export * from "./base"
7
+ export * from "./sui-options"
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@bin-ui/typings",
3
+ "main": "index.ts",
4
+ "private": true,
5
+ "sideEffects": false,
6
+ "dependencies": {}
7
+ }
@@ -0,0 +1,8 @@
1
+ /*
2
+ * @description: 选项
3
+ * @author: MC.Yang
4
+ */
5
+
6
+ export declare interface SuiOptions {
7
+ zIndex:number
8
+ }
@@ -0,0 +1,2 @@
1
+ packages:
2
+ - 'packages/*'