misp-ui-library-test 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/README.md +113 -0
  2. package/dist/theme-chalk/alert/index.scss +152 -0
  3. package/dist/theme-chalk/avatar/index.scss +51 -0
  4. package/dist/theme-chalk/backtop/index.scss +38 -0
  5. package/dist/theme-chalk/badge/index.scss +63 -0
  6. package/dist/theme-chalk/breadcrumb/index.scss +36 -0
  7. package/dist/theme-chalk/breadcrumb-item/index.scss +36 -0
  8. package/dist/theme-chalk/button/index.scss +157 -0
  9. package/dist/theme-chalk/card/index.scss +38 -0
  10. package/dist/theme-chalk/chart/index.scss +21 -0
  11. package/dist/theme-chalk/checkbox/index.scss +358 -0
  12. package/dist/theme-chalk/col/index.scss +131 -0
  13. package/dist/theme-chalk/container/index.scss +40 -0
  14. package/dist/theme-chalk/css/alert.css +484 -0
  15. package/dist/theme-chalk/css/avatar.css +409 -0
  16. package/dist/theme-chalk/css/backtop.css +401 -0
  17. package/dist/theme-chalk/css/badge.css +419 -0
  18. package/dist/theme-chalk/css/breadcrumb-item.css +395 -0
  19. package/dist/theme-chalk/css/breadcrumb.css +395 -0
  20. package/dist/theme-chalk/css/button.css +587 -0
  21. package/dist/theme-chalk/css/card.css +397 -0
  22. package/dist/theme-chalk/css/chart.css +386 -0
  23. package/dist/theme-chalk/css/checkbox.css +648 -0
  24. package/dist/theme-chalk/css/col.css +2111 -0
  25. package/dist/theme-chalk/css/container.css +404 -0
  26. package/dist/theme-chalk/css/dialog.css +505 -0
  27. package/dist/theme-chalk/css/divider.css +405 -0
  28. package/dist/theme-chalk/css/drawer.css +546 -0
  29. package/dist/theme-chalk/css/empty.css +394 -0
  30. package/dist/theme-chalk/css/form.css +561 -0
  31. package/dist/theme-chalk/css/icon.css +1534 -0
  32. package/dist/theme-chalk/css/image.css +400 -0
  33. package/dist/theme-chalk/css/input-number.css +424 -0
  34. package/dist/theme-chalk/css/input.css +721 -0
  35. package/dist/theme-chalk/css/link.css +424 -0
  36. package/dist/theme-chalk/css/loading.css +483 -0
  37. package/dist/theme-chalk/css/message-box.css +479 -0
  38. package/dist/theme-chalk/css/message.css +456 -0
  39. package/dist/theme-chalk/css/no-data.css +397 -0
  40. package/dist/theme-chalk/css/notification.css +431 -0
  41. package/dist/theme-chalk/css/page-header.css +396 -0
  42. package/dist/theme-chalk/css/pagination.css +565 -0
  43. package/dist/theme-chalk/css/popover.css +421 -0
  44. package/dist/theme-chalk/css/popper.css +454 -0
  45. package/dist/theme-chalk/css/progress.css +451 -0
  46. package/dist/theme-chalk/css/radio.css +626 -0
  47. package/dist/theme-chalk/css/rate.css +414 -0
  48. package/dist/theme-chalk/css/result.css +403 -0
  49. package/dist/theme-chalk/css/row.css +433 -0
  50. package/dist/theme-chalk/css/scrollbar.css +422 -0
  51. package/dist/theme-chalk/css/select.css +1897 -0
  52. package/dist/theme-chalk/css/skeleton-item.css +407 -0
  53. package/dist/theme-chalk/css/skeleton.css +390 -0
  54. package/dist/theme-chalk/css/slider.css +460 -0
  55. package/dist/theme-chalk/css/spinner.css +403 -0
  56. package/dist/theme-chalk/css/statistic.css +396 -0
  57. package/dist/theme-chalk/css/status-timeline-chart.css +388 -0
  58. package/dist/theme-chalk/css/step.css +496 -0
  59. package/dist/theme-chalk/css/steps.css +496 -0
  60. package/dist/theme-chalk/css/switch.css +507 -0
  61. package/dist/theme-chalk/css/tab-pane.css +457 -0
  62. package/dist/theme-chalk/css/table.css +461 -0
  63. package/dist/theme-chalk/css/tabs-navigation.css +925 -0
  64. package/dist/theme-chalk/css/tabs.css +457 -0
  65. package/dist/theme-chalk/css/tag.css +599 -0
  66. package/dist/theme-chalk/css/time-picker.css +683 -0
  67. package/dist/theme-chalk/css/timeline-item.css +459 -0
  68. package/dist/theme-chalk/css/timeline.css +459 -0
  69. package/dist/theme-chalk/css/tooltip.css +485 -0
  70. package/dist/theme-chalk/css/tree.css +473 -0
  71. package/dist/theme-chalk/css/upload.css +665 -0
  72. package/dist/theme-chalk/dialog/index.scss +168 -0
  73. package/dist/theme-chalk/divider/index.scss +46 -0
  74. package/dist/theme-chalk/drawer/index.scss +172 -0
  75. package/dist/theme-chalk/empty/index.scss +36 -0
  76. package/dist/theme-chalk/fonts/element-icons.ttf +0 -0
  77. package/dist/theme-chalk/fonts/element-icons.woff +0 -0
  78. package/dist/theme-chalk/form/index.scss +220 -0
  79. package/dist/theme-chalk/icon/index.scss +1171 -0
  80. package/dist/theme-chalk/image/index.scss +39 -0
  81. package/dist/theme-chalk/index.scss +127 -0
  82. package/dist/theme-chalk/input/index.scss +363 -0
  83. package/dist/theme-chalk/input-number/index.scss +71 -0
  84. package/dist/theme-chalk/link/index.scss +75 -0
  85. package/dist/theme-chalk/loading/index.scss +131 -0
  86. package/dist/theme-chalk/message/index.scss +100 -0
  87. package/dist/theme-chalk/message-box/index.scss +131 -0
  88. package/dist/theme-chalk/mixins.scss +203 -0
  89. package/dist/theme-chalk/no-data/index.scss +36 -0
  90. package/dist/theme-chalk/notification/index.scss +76 -0
  91. package/dist/theme-chalk/page-header/index.scss +36 -0
  92. package/dist/theme-chalk/pagination/index.scss +225 -0
  93. package/dist/theme-chalk/popover/index.scss +56 -0
  94. package/dist/theme-chalk/popper/index.scss +89 -0
  95. package/dist/theme-chalk/progress/index.scss +105 -0
  96. package/dist/theme-chalk/radio/index.scss +328 -0
  97. package/dist/theme-chalk/rate/index.scss +56 -0
  98. package/dist/theme-chalk/reset.scss +262 -0
  99. package/dist/theme-chalk/result/index.scss +46 -0
  100. package/dist/theme-chalk/row/index.scss +88 -0
  101. package/dist/theme-chalk/scrollbar/index.scss +67 -0
  102. package/dist/theme-chalk/select/index.scss +223 -0
  103. package/dist/theme-chalk/skeleton/index.scss +30 -0
  104. package/dist/theme-chalk/skeleton-item/index.scss +49 -0
  105. package/dist/theme-chalk/slider/index.scss +113 -0
  106. package/dist/theme-chalk/spinner/index.scss +40 -0
  107. package/dist/theme-chalk/statistic/index.scss +38 -0
  108. package/dist/theme-chalk/status-timeline-chart/index.scss +23 -0
  109. package/dist/theme-chalk/step/index.scss +160 -0
  110. package/dist/theme-chalk/steps/index.scss +160 -0
  111. package/dist/theme-chalk/switch/index.scss +153 -0
  112. package/dist/theme-chalk/tab-pane/index.scss +112 -0
  113. package/dist/theme-chalk/table/index.scss +110 -0
  114. package/dist/theme-chalk/tabs/index.scss +112 -0
  115. package/dist/theme-chalk/tabs-navigation/index.scss +631 -0
  116. package/dist/theme-chalk/tag/index.scss +138 -0
  117. package/dist/theme-chalk/themes/blue.scss +76 -0
  118. package/dist/theme-chalk/themes/dark.scss +99 -0
  119. package/dist/theme-chalk/themes/index.scss +260 -0
  120. package/dist/theme-chalk/themes/light.scss +99 -0
  121. package/dist/theme-chalk/time-picker/index.scss +332 -0
  122. package/dist/theme-chalk/timeline/index.scss +119 -0
  123. package/dist/theme-chalk/timeline-item/index.scss +119 -0
  124. package/dist/theme-chalk/tooltip/index.scss +122 -0
  125. package/dist/theme-chalk/tree/index.scss +125 -0
  126. package/dist/theme-chalk/upload/index.scss +348 -0
  127. package/dist/theme-chalk/variables.scss +93 -0
  128. package/dist/vue2-ui-library.cjs.temp.js.map +1 -0
  129. package/dist/vue2-ui-library.common.js +28 -0
  130. package/dist/vue2-ui-library.common.js.map +1 -0
  131. package/dist/vue2-ui-library.esm.js +29 -0
  132. package/dist/vue2-ui-library.umd.js +27 -0
  133. package/package.json +161 -0
  134. package/src/directives/clickoutside/index.js +111 -0
  135. package/src/directives/init/index.js +50 -0
  136. package/src/directives/resize/index.js +69 -0
  137. package/src/index.js +174 -0
  138. package/src/mixins/emitter.js +47 -0
  139. package/src/mixins/focus.js +42 -0
  140. package/src/mixins/locale.js +24 -0
  141. package/src/mixins/migrating.js +46 -0
  142. package/src/packages/alert/index.js +12 -0
  143. package/src/packages/alert/src/main.vue +98 -0
  144. package/src/packages/aside/index.js +12 -0
  145. package/src/packages/aside/src/main.vue +20 -0
  146. package/src/packages/auto-grid-layout/index.js +18 -0
  147. package/src/packages/auto-grid-layout/prop.js +92 -0
  148. package/src/packages/auto-grid-layout/src/components/GridItem.vue +759 -0
  149. package/src/packages/auto-grid-layout/src/components/GridLayout.vue +367 -0
  150. package/src/packages/auto-grid-layout/src/main.vue +287 -0
  151. package/src/packages/auto-grid-layout/src/utils/DOM.js +46 -0
  152. package/src/packages/auto-grid-layout/src/utils/interact.js +333 -0
  153. package/src/packages/auto-grid-layout/src/utils/responsiveUtils.js +75 -0
  154. package/src/packages/auto-grid-layout/src/utils/utils.js +339 -0
  155. package/src/packages/autocomplete/index.js +12 -0
  156. package/src/packages/autocomplete/src/main.vue +170 -0
  157. package/src/packages/avatar/index.js +12 -0
  158. package/src/packages/avatar/src/main.vue +87 -0
  159. package/src/packages/backtop/index.js +12 -0
  160. package/src/packages/backtop/src/main.vue +120 -0
  161. package/src/packages/badge/index.js +12 -0
  162. package/src/packages/badge/src/main.vue +53 -0
  163. package/src/packages/breadcrumb/index.js +12 -0
  164. package/src/packages/breadcrumb/src/main.vue +34 -0
  165. package/src/packages/breadcrumb-item/index.js +12 -0
  166. package/src/packages/breadcrumb-item/src/main.vue +41 -0
  167. package/src/packages/button/index.js +13 -0
  168. package/src/packages/button/src/main.vue +106 -0
  169. package/src/packages/calendar/index.js +12 -0
  170. package/src/packages/calendar/src/main.vue +173 -0
  171. package/src/packages/card/index.js +12 -0
  172. package/src/packages/card/src/main.vue +26 -0
  173. package/src/packages/carousel/index.js +12 -0
  174. package/src/packages/carousel/src/main.vue +186 -0
  175. package/src/packages/carousel-item/index.js +12 -0
  176. package/src/packages/carousel-item/src/main.vue +34 -0
  177. package/src/packages/cascader/index.js +12 -0
  178. package/src/packages/cascader/src/main.vue +232 -0
  179. package/src/packages/chart/index.js +7 -0
  180. package/src/packages/chart/src/axis-chart.js +700 -0
  181. package/src/packages/chart/src/main.vue +828 -0
  182. package/src/packages/chart/src/utils.js +21 -0
  183. package/src/packages/checkbox/index.js +44 -0
  184. package/src/packages/checkbox/src/main.vue +312 -0
  185. package/src/packages/col/index.js +12 -0
  186. package/src/packages/col/src/main.vue +85 -0
  187. package/src/packages/collapse/index.js +12 -0
  188. package/src/packages/collapse/src/main.vue +69 -0
  189. package/src/packages/collapse-item/index.js +12 -0
  190. package/src/packages/collapse-item/src/main.vue +75 -0
  191. package/src/packages/color-picker/index.js +12 -0
  192. package/src/packages/color-picker/src/main.vue +206 -0
  193. package/src/packages/container/index.js +12 -0
  194. package/src/packages/container/src/main.vue +33 -0
  195. package/src/packages/date-picker/index.js +12 -0
  196. package/src/packages/date-picker/src/main.vue +246 -0
  197. package/src/packages/descriptions/index.js +12 -0
  198. package/src/packages/descriptions/src/main.vue +89 -0
  199. package/src/packages/descriptions-item/index.js +12 -0
  200. package/src/packages/descriptions-item/src/main.vue +26 -0
  201. package/src/packages/dialog/index.js +12 -0
  202. package/src/packages/dialog/src/main.vue +336 -0
  203. package/src/packages/divider/index.js +12 -0
  204. package/src/packages/divider/src/main.vue +37 -0
  205. package/src/packages/drawer/index.js +7 -0
  206. package/src/packages/drawer/src/main.vue +310 -0
  207. package/src/packages/dropdown/index.js +12 -0
  208. package/src/packages/dropdown/src/main.vue +82 -0
  209. package/src/packages/dropdown-menu-item/index.js +12 -0
  210. package/src/packages/dropdown-menu-item/src/main.vue +29 -0
  211. package/src/packages/empty/index.js +12 -0
  212. package/src/packages/empty/src/img-empty.vue +12 -0
  213. package/src/packages/empty/src/main.vue +49 -0
  214. package/src/packages/footer/index.js +12 -0
  215. package/src/packages/footer/src/main.vue +20 -0
  216. package/src/packages/form/index.js +13 -0
  217. package/src/packages/form/src/form-field.vue +790 -0
  218. package/src/packages/form/src/form-item.vue +464 -0
  219. package/src/packages/form/src/label-wrap.vue +127 -0
  220. package/src/packages/form/src/main.vue +442 -0
  221. package/src/packages/form-item/index.js +11 -0
  222. package/src/packages/header/index.js +12 -0
  223. package/src/packages/header/src/main.vue +20 -0
  224. package/src/packages/icon/index.js +12 -0
  225. package/src/packages/icon/src/main.vue +48 -0
  226. package/src/packages/image/index.js +12 -0
  227. package/src/packages/image/src/main.vue +224 -0
  228. package/src/packages/input/index.js +13 -0
  229. package/src/packages/input/src/calcTextareaHeight.js +123 -0
  230. package/src/packages/input/src/main.vue +510 -0
  231. package/src/packages/input-number/index.js +12 -0
  232. package/src/packages/input-number/src/main.vue +121 -0
  233. package/src/packages/link/index.js +12 -0
  234. package/src/packages/link/src/main.vue +53 -0
  235. package/src/packages/loading/index.js +17 -0
  236. package/src/packages/loading/src/directive.js +54 -0
  237. package/src/packages/loading/src/main.vue +38 -0
  238. package/src/packages/loading/src/service.js +63 -0
  239. package/src/packages/main/index.js +12 -0
  240. package/src/packages/main/src/main.vue +12 -0
  241. package/src/packages/menu/index.js +12 -0
  242. package/src/packages/menu/src/main.vue +117 -0
  243. package/src/packages/menu-item/index.js +12 -0
  244. package/src/packages/menu-item/src/main.vue +61 -0
  245. package/src/packages/message/index.js +95 -0
  246. package/src/packages/message/src/main.vue +131 -0
  247. package/src/packages/message-box/index.js +75 -0
  248. package/src/packages/message-box/src/main.vue +207 -0
  249. package/src/packages/no-data/index.js +8 -0
  250. package/src/packages/no-data/src/main.vue +23 -0
  251. package/src/packages/notification/index.js +72 -0
  252. package/src/packages/notification/src/main.vue +139 -0
  253. package/src/packages/option/index.js +13 -0
  254. package/src/packages/page-header/index.js +12 -0
  255. package/src/packages/page-header/src/main.vue +27 -0
  256. package/src/packages/pagination/index.js +12 -0
  257. package/src/packages/pagination/src/main.vue +255 -0
  258. package/src/packages/popconfirm/index.js +12 -0
  259. package/src/packages/popconfirm/src/main.vue +89 -0
  260. package/src/packages/popover/index.js +12 -0
  261. package/src/packages/popover/src/main.vue +452 -0
  262. package/src/packages/progress/index.js +12 -0
  263. package/src/packages/progress/src/main.vue +236 -0
  264. package/src/packages/radio/index.js +44 -0
  265. package/src/packages/radio/src/main.vue +291 -0
  266. package/src/packages/rate/index.js +12 -0
  267. package/src/packages/rate/src/main.vue +129 -0
  268. package/src/packages/result/index.js +12 -0
  269. package/src/packages/result/src/main.vue +52 -0
  270. package/src/packages/row/index.js +12 -0
  271. package/src/packages/row/src/main.vue +57 -0
  272. package/src/packages/scrollbar/index.js +12 -0
  273. package/src/packages/scrollbar/src/bar.vue +116 -0
  274. package/src/packages/scrollbar/src/main.vue +124 -0
  275. package/src/packages/select/index.js +15 -0
  276. package/src/packages/select/src/clickoutside.js +20 -0
  277. package/src/packages/select/src/main.vue +1055 -0
  278. package/src/packages/select/src/navigation-mixin.js +49 -0
  279. package/src/packages/select/src/option.vue +249 -0
  280. package/src/packages/select/src/select-dropdown.vue +95 -0
  281. package/src/packages/select/src/utils.js +5 -0
  282. package/src/packages/skeleton/index.js +12 -0
  283. package/src/packages/skeleton/src/main.vue +76 -0
  284. package/src/packages/skeleton-item/index.js +12 -0
  285. package/src/packages/skeleton-item/src/img-placeholder.vue +13 -0
  286. package/src/packages/skeleton-item/src/main.vue +22 -0
  287. package/src/packages/slider/index.js +12 -0
  288. package/src/packages/slider/src/main.vue +176 -0
  289. package/src/packages/spinner/index.js +12 -0
  290. package/src/packages/spinner/src/main.vue +27 -0
  291. package/src/packages/statistic/index.js +12 -0
  292. package/src/packages/statistic/src/main.vue +100 -0
  293. package/src/packages/status-timeline-chart/index.js +7 -0
  294. package/src/packages/status-timeline-chart/src/constants.js +20 -0
  295. package/src/packages/status-timeline-chart/src/main.vue +499 -0
  296. package/src/packages/status-timeline-chart/src/option-builder.js +475 -0
  297. package/src/packages/step/index.js +12 -0
  298. package/src/packages/step/src/main.vue +183 -0
  299. package/src/packages/steps/index.js +12 -0
  300. package/src/packages/steps/src/main.vue +57 -0
  301. package/src/packages/submenu/index.js +12 -0
  302. package/src/packages/submenu/src/main.vue +68 -0
  303. package/src/packages/switch/index.js +12 -0
  304. package/src/packages/switch/src/main.vue +166 -0
  305. package/src/packages/tab-pane/index.js +12 -0
  306. package/src/packages/tab-pane/src/main.vue +74 -0
  307. package/src/packages/table/index.js +8 -0
  308. package/src/packages/table/src/components/PagePagination.vue +82 -0
  309. package/src/packages/table/src/main.vue +153 -0
  310. package/src/packages/tabs/index.js +12 -0
  311. package/src/packages/tabs/src/main.vue +167 -0
  312. package/src/packages/tabs-navigation/index.js +7 -0
  313. package/src/packages/tabs-navigation/src/main.vue +462 -0
  314. package/src/packages/tag/index.js +12 -0
  315. package/src/packages/tag/src/main.vue +194 -0
  316. package/src/packages/time-picker/index.js +17 -0
  317. package/src/packages/time-picker/src/date-utils.js +455 -0
  318. package/src/packages/time-picker/src/main.vue +321 -0
  319. package/src/packages/time-picker/src/pane/date-range.vue +193 -0
  320. package/src/packages/time-picker/src/pane/date-time-range.vue +362 -0
  321. package/src/packages/time-picker/src/pane/date-time.vue +362 -0
  322. package/src/packages/time-picker/src/pane/date.vue +441 -0
  323. package/src/packages/time-picker/src/pane/time.vue +260 -0
  324. package/src/packages/time-picker/src/time-input.vue +203 -0
  325. package/src/packages/time-picker/src/time-range-input.vue +170 -0
  326. package/src/packages/timeline/index.js +12 -0
  327. package/src/packages/timeline/src/main.vue +24 -0
  328. package/src/packages/timeline-item/index.js +12 -0
  329. package/src/packages/timeline-item/src/main.vue +78 -0
  330. package/src/packages/tooltip/index.js +12 -0
  331. package/src/packages/tooltip/src/main.js +367 -0
  332. package/src/packages/transfer/index.js +8 -0
  333. package/src/packages/transfer/src/main.vue +229 -0
  334. package/src/packages/transfer/src/transfer-panel.vue +245 -0
  335. package/src/packages/transitions/collapse-transition.js +75 -0
  336. package/src/packages/tree/index.js +12 -0
  337. package/src/packages/tree/src/main.vue +322 -0
  338. package/src/packages/tree/src/model/node.js +348 -0
  339. package/src/packages/tree/src/model/tree-store.js +354 -0
  340. package/src/packages/tree/src/model/util.js +10 -0
  341. package/src/packages/tree/src/tree-node.vue +262 -0
  342. package/src/packages/upload/index.js +9 -0
  343. package/src/packages/upload/src/main.vue +415 -0
  344. package/src/playground/mixins/element.js +98 -0
  345. package/src/playground/types/element.js +197 -0
  346. package/src/playground/types/layout.js +80 -0
  347. package/src/plugins/i18n.js +125 -0
  348. package/src/styles/fonts/element-icons.ttf +0 -0
  349. package/src/styles/fonts/element-icons.woff +0 -0
  350. package/src/styles/index.scss +138 -0
  351. package/src/styles/reset.scss +257 -0
  352. package/src/styles/themes/blue.scss +75 -0
  353. package/src/styles/themes/dark.scss +98 -0
  354. package/src/styles/themes/index.scss +34 -0
  355. package/src/styles/themes/light.scss +98 -0
  356. package/src/styles/themes/variables.scss +233 -0
  357. package/src/styles/variables.scss +146 -0
  358. package/src/utils/async-validator/index.js +659 -0
  359. package/src/utils/browser/index.js +39 -0
  360. package/src/utils/color.js +76 -0
  361. package/src/utils/dom/index.js +421 -0
  362. package/src/utils/dom/scrollbar-width.js +49 -0
  363. package/src/utils/draggable/core.js +379 -0
  364. package/src/utils/draggable/draggable.js +478 -0
  365. package/src/utils/draggable/index.js +61 -0
  366. package/src/utils/draggable/sortable.js +751 -0
  367. package/src/utils/lodash/index.js +2395 -0
  368. package/src/utils/moment/index.js +909 -0
  369. package/src/utils/playground/index.js +37 -0
  370. package/src/utils/popper/index.js +308 -0
  371. package/src/utils/popper/popper.js +1132 -0
  372. package/src/utils/popper/popup-manager.js +288 -0
  373. package/src/utils/popper/popup.js +344 -0
@@ -0,0 +1,186 @@
1
+ <template>
2
+ <div class="ui-carousel" :class="{ 'is-vertical': direction === 'vertical' }" @mouseenter.stop="handleMouseEnter" @mouseleave.stop="handleMouseLeave">
3
+ <div class="ui-carousel__container" :style="{ height: height }">
4
+ <div class="ui-carousel__track" :style="trackStyle">
5
+ <slot></slot>
6
+ </div>
7
+ <div class="ui-carousel__arrows" v-if="arrow === 'always' || arrow === 'hover'">
8
+ <button class="ui-carousel__arrow ui-carousel__arrow--left" @click="prev">
9
+ <i class="icon-arrow-left"></i>
10
+ </button>
11
+ <button class="ui-carousel__arrow ui-carousel__arrow--right" @click="next">
12
+ <i class="icon-arrow-right"></i>
13
+ </button>
14
+ </div>
15
+ <div class="ui-carousel__indicators" v-if="indicator !== 'none'">
16
+ <button
17
+ v-for="(item, index) in items"
18
+ :key="index"
19
+ class="ui-carousel__indicator"
20
+ :class="{ 'is-active': activeIndex === index }"
21
+ @click="setActiveItem(index)"
22
+ >
23
+ <span></span>
24
+ </button>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ export default {
32
+ name: 'UiCarousel',
33
+
34
+ componentName: 'UiCarousel',
35
+
36
+ props: {
37
+ height: {
38
+ type: String,
39
+ default: '300px'
40
+ },
41
+ initialIndex: {
42
+ type: Number,
43
+ default: 0
44
+ },
45
+ autoplay: {
46
+ type: Boolean,
47
+ default: true
48
+ },
49
+ interval: {
50
+ type: Number,
51
+ default: 3000
52
+ },
53
+ trigger: {
54
+ type: String,
55
+ default: 'hover',
56
+ validator: val => ['hover', 'click'].indexOf(val) > -1
57
+ },
58
+ direction: {
59
+ type: String,
60
+ default: 'horizontal',
61
+ validator: val => ['horizontal', 'vertical'].indexOf(val) > -1
62
+ },
63
+ loop: {
64
+ type: Boolean,
65
+ default: true
66
+ },
67
+ arrow: {
68
+ type: String,
69
+ default: 'hover',
70
+ validator: val => ['always', 'hover', 'never'].indexOf(val) > -1
71
+ },
72
+ indicator: {
73
+ type: String,
74
+ default: 'inside',
75
+ validator: val => ['inside', 'outside', 'none'].indexOf(val) > -1
76
+ }
77
+ },
78
+
79
+ data() {
80
+ return {
81
+ items: [],
82
+ activeIndex: this.initialIndex,
83
+ timer: null,
84
+ isHover: false
85
+ };
86
+ },
87
+
88
+ computed: {
89
+ trackStyle() {
90
+ const offset = this.direction === 'vertical' ? 'translateY' : 'translateX';
91
+ const firstItem = this.items[0] || {};
92
+ const value = this.direction === 'vertical' ? (firstItem.height || 0) : (firstItem.width || 0);
93
+ return {
94
+ transform: `${offset}(-${this.activeIndex * 100}%)`,
95
+ transition: 'transform 0.3s ease'
96
+ };
97
+ }
98
+ },
99
+
100
+ provide() {
101
+ return {
102
+ carousel: this
103
+ };
104
+ },
105
+
106
+ watch: {
107
+ activeIndex(val, oldVal) {
108
+ this.$emit('change', val, oldVal);
109
+ },
110
+ autoplay(val) {
111
+ val ? this.startTimer() : this.stopTimer();
112
+ }
113
+ },
114
+
115
+ mounted() {
116
+ this.$nextTick(() => {
117
+ this.updateItems();
118
+ this.startTimer();
119
+ });
120
+ },
121
+
122
+ beforeDestroy() {
123
+ this.stopTimer();
124
+ },
125
+
126
+ methods: {
127
+ updateItems() {
128
+ this.items = this.$slots.default
129
+ .filter(slot => slot.tag && slot.componentOptions && slot.componentOptions.Ctor.options.name === 'UiCarouselItem')
130
+ .map(slot => ({
131
+ vm: slot.componentInstance,
132
+ width: (slot.elm && slot.elm.offsetWidth) || 0,
133
+ height: (slot.elm && slot.elm.offsetHeight) || 0
134
+ }));
135
+ },
136
+ handleMouseEnter() {
137
+ if (this.trigger === 'hover') {
138
+ this.isHover = true;
139
+ if (this.autoplay) {
140
+ this.stopTimer();
141
+ }
142
+ }
143
+ },
144
+ handleMouseLeave() {
145
+ this.isHover = false;
146
+ if (this.autoplay) {
147
+ this.startTimer();
148
+ }
149
+ },
150
+ startTimer() {
151
+ if (!this.autoplay || this.isHover) return;
152
+ this.timer = setInterval(() => {
153
+ this.next();
154
+ }, this.interval);
155
+ },
156
+ stopTimer() {
157
+ if (this.timer) {
158
+ clearInterval(this.timer);
159
+ this.timer = null;
160
+ }
161
+ },
162
+ setActiveItem(index) {
163
+ if (index < 0 || index >= this.items.length) return;
164
+ this.activeIndex = index;
165
+ },
166
+ prev() {
167
+ let index = this.activeIndex - 1;
168
+ if (index < 0) {
169
+ index = this.loop ? this.items.length - 1 : 0;
170
+ }
171
+ if (index >= 0 && index < this.items.length) {
172
+ this.activeIndex = index;
173
+ }
174
+ },
175
+ next() {
176
+ let index = this.activeIndex + 1;
177
+ if (index >= this.items.length) {
178
+ index = this.loop ? 0 : this.items.length - 1;
179
+ }
180
+ if (index >= 0 && index < this.items.length) {
181
+ this.activeIndex = index;
182
+ }
183
+ }
184
+ }
185
+ };
186
+ </script>
@@ -0,0 +1,12 @@
1
+ /**
2
+ * CarouselItem 组件
3
+ */
4
+
5
+ import UiCarouselItem from './src/main.vue'
6
+
7
+ // 自动安装
8
+ UiCarouselItem.install = function(Vue) {
9
+ Vue.component(UiCarouselItem.name, UiCarouselItem)
10
+ }
11
+
12
+ export default UiCarouselItem
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <div class="ui-carousel-item" :class="{ 'is-active': isActive }">
3
+ <slot></slot>
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name: 'UiCarouselItem',
10
+
11
+ inject: ['carousel'],
12
+
13
+ data() {
14
+ return {
15
+ isActive: false
16
+ };
17
+ },
18
+
19
+ watch: {
20
+ 'carousel.activeIndex'(val) {
21
+ this.isActive = val === this.index;
22
+ }
23
+ },
24
+
25
+ mounted() {
26
+ this.index = this.carousel.items.length;
27
+ this.carousel.updateItems();
28
+ },
29
+
30
+ beforeDestroy() {
31
+ this.carousel.updateItems();
32
+ }
33
+ };
34
+ </script>
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cascader 组件
3
+ */
4
+
5
+ import UiCascader from './src/main.vue'
6
+
7
+ // 自动安装
8
+ UiCascader.install = function(Vue) {
9
+ Vue.component(UiCascader.name, UiCascader)
10
+ }
11
+
12
+ export default UiCascader
@@ -0,0 +1,232 @@
1
+ <template>
2
+ <div class="ui-cascader" :class="{ 'is-focus': isFocus }">
3
+ <ui-input
4
+ v-model="inputValue"
5
+ :placeholder="placeholder"
6
+ :disabled="disabled"
7
+ readonly
8
+ @focus="handleFocus"
9
+ @blur="handleBlur"
10
+ @clear="handleClear"
11
+ >
12
+ <i slot="prefix" class="ui-input__icon icon-list"></i>
13
+ </ui-input>
14
+ <transition name="ui-zoom-in-top">
15
+ <div v-show="pickerVisible" class="ui-cascader__panel" ref="cascaderPanel">
16
+ <div class="ui-cascader__menus">
17
+ <div
18
+ v-for="(menu, level) in menus"
19
+ :key="level"
20
+ class="ui-cascader__menu"
21
+ >
22
+ <div
23
+ v-for="item in menu"
24
+ :key="item.value"
25
+ class="ui-cascader__item"
26
+ :class="{ 'is-active': isActive(item, level), 'is-disabled': item.disabled }"
27
+ @click="handleItemClick(item, level)"
28
+ @mouseenter="handleItemHover(item, level)"
29
+ >
30
+ {{ item.label }}
31
+ <i v-if="item.children && item.children.length" class="ui-cascader__arrow icon-arrow-right"></i>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </transition>
37
+ </div>
38
+ </template>
39
+
40
+ <script>
41
+ export default {
42
+ name: 'UiCascader',
43
+
44
+ props: {
45
+ value: {},
46
+ options: {
47
+ type: Array,
48
+ default: () => []
49
+ },
50
+ placeholder: {
51
+ type: String,
52
+ default: '请选择'
53
+ },
54
+ disabled: Boolean,
55
+ props: {
56
+ type: Object,
57
+ default: () => ({
58
+ value: 'value',
59
+ label: 'label',
60
+ children: 'children',
61
+ disabled: 'disabled'
62
+ })
63
+ },
64
+ showAllLevels: {
65
+ type: Boolean,
66
+ default: true
67
+ },
68
+ separator: {
69
+ type: String,
70
+ default: '/'
71
+ }
72
+ },
73
+
74
+ data() {
75
+ return {
76
+ pickerVisible: false,
77
+ isFocus: false,
78
+ inputValue: '',
79
+ activeValues: [],
80
+ menus: [],
81
+ selectedOptions: []
82
+ };
83
+ },
84
+
85
+ computed: {
86
+ valueKey() {
87
+ return this.props.value;
88
+ },
89
+ labelKey() {
90
+ return this.props.label;
91
+ },
92
+ childrenKey() {
93
+ return this.props.children;
94
+ },
95
+ disabledKey() {
96
+ return this.props.disabled;
97
+ }
98
+ },
99
+
100
+ watch: {
101
+ value(val) {
102
+ this.updateInputValue();
103
+ },
104
+ options: {
105
+ handler() {
106
+ this.initMenus();
107
+ },
108
+ deep: true
109
+ }
110
+ },
111
+
112
+ methods: {
113
+ initMenus() {
114
+ this.menus = [this.options];
115
+ },
116
+ updateInputValue() {
117
+ if (!this.value || !Array.isArray(this.value)) {
118
+ this.inputValue = '';
119
+ return;
120
+ }
121
+
122
+ const selectedOptions = this.getSelectedOptions(this.value);
123
+ if (this.showAllLevels) {
124
+ this.inputValue = selectedOptions.map(opt => opt[this.labelKey]).join(this.separator);
125
+ } else {
126
+ const lastOption = selectedOptions[selectedOptions.length - 1];
127
+ this.inputValue = lastOption ? lastOption[this.labelKey] : '';
128
+ }
129
+ this.selectedOptions = selectedOptions;
130
+ },
131
+ getSelectedOptions(values) {
132
+ const options = [];
133
+ let currentOptions = this.options;
134
+
135
+ for (let i = 0; i < values.length; i++) {
136
+ const value = values[i];
137
+ const option = currentOptions.find(opt => opt[this.valueKey] === value);
138
+ if (option) {
139
+ options.push(option);
140
+ currentOptions = option[this.childrenKey] || [];
141
+ } else {
142
+ break;
143
+ }
144
+ }
145
+
146
+ return options;
147
+ },
148
+ isActive(item, level) {
149
+ return this.activeValues[level] === item[this.valueKey];
150
+ },
151
+ handleItemClick(item, level) {
152
+ if (item[this.disabledKey]) return;
153
+
154
+ const hasChildren = item[this.childrenKey] && item[this.childrenKey].length > 0;
155
+
156
+ this.activeValues = this.activeValues.slice(0, level + 1);
157
+ this.activeValues[level] = item[this.valueKey];
158
+
159
+ if (hasChildren) {
160
+ if (this.menus[level + 1]) {
161
+ this.menus.splice(level + 1);
162
+ }
163
+ this.menus.push(item[this.childrenKey]);
164
+ } else {
165
+ this.selectItem(item);
166
+ }
167
+ },
168
+ handleItemHover(item, level) {
169
+ // 用于 hover 触发子菜单
170
+ },
171
+ selectItem(item) {
172
+ const values = this.activeValues.map((val, index) => {
173
+ const menu = this.menus[index];
174
+ const selectedItem = menu.find(opt => opt[this.valueKey] === val);
175
+ return selectedItem;
176
+ }).filter(Boolean);
177
+
178
+ this.selectedOptions = values;
179
+
180
+ if (this.showAllLevels) {
181
+ this.inputValue = values.map(opt => opt[this.labelKey]).join(this.separator);
182
+ } else {
183
+ this.inputValue = item[this.labelKey];
184
+ }
185
+
186
+ const valueArray = values.map(opt => opt[this.valueKey]);
187
+ this.$emit('input', valueArray);
188
+ this.$emit('change', valueArray);
189
+ this.pickerVisible = false;
190
+ },
191
+ handleFocus() {
192
+ if (this.disabled) return;
193
+ this.pickerVisible = true;
194
+ this.isFocus = true;
195
+ this.initMenus();
196
+ },
197
+ handleBlur() {
198
+ this.isFocus = false;
199
+ },
200
+ handleClear() {
201
+ this.inputValue = '';
202
+ this.activeValues = [];
203
+ this.selectedOptions = [];
204
+ this.$emit('input', []);
205
+ this.$emit('change', []);
206
+ },
207
+ handleDocumentClick(event) {
208
+ if (this.$el && !this.$el.contains(event.target)) {
209
+ this.pickerVisible = false;
210
+ }
211
+ }
212
+ },
213
+
214
+ watch: {
215
+ pickerVisible(val) {
216
+ if (val) {
217
+ document.addEventListener('click', this.handleDocumentClick);
218
+ } else {
219
+ document.removeEventListener('click', this.handleDocumentClick);
220
+ }
221
+ }
222
+ },
223
+
224
+ mounted() {
225
+ this.updateInputValue();
226
+ },
227
+
228
+ beforeDestroy() {
229
+ document.removeEventListener('click', this.handleDocumentClick);
230
+ }
231
+ };
232
+ </script>
@@ -0,0 +1,7 @@
1
+ import UiChart from './src/main.vue'
2
+
3
+ UiChart.install = function(Vue) {
4
+ Vue.component(UiChart.name, UiChart)
5
+ }
6
+
7
+ export default UiChart