uview-ui-wjf 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 (368) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -0
  3. package/changelog.md +388 -0
  4. package/components/u--form/u--form.vue +92 -0
  5. package/components/u--image/u--image.vue +73 -0
  6. package/components/u--input/u--input.vue +115 -0
  7. package/components/u--text/u--text.vue +72 -0
  8. package/components/u--textarea/u--textarea.vue +85 -0
  9. package/components/u-action-sheet/props.js +54 -0
  10. package/components/u-action-sheet/u-action-sheet.vue +278 -0
  11. package/components/u-album/props.js +59 -0
  12. package/components/u-album/u-album.vue +259 -0
  13. package/components/u-alert/props.js +44 -0
  14. package/components/u-alert/u-alert.vue +243 -0
  15. package/components/u-avatar/props.js +78 -0
  16. package/components/u-avatar/u-avatar.vue +173 -0
  17. package/components/u-avatar-group/props.js +52 -0
  18. package/components/u-avatar-group/u-avatar-group.vue +103 -0
  19. package/components/u-back-top/props.js +54 -0
  20. package/components/u-back-top/u-back-top.vue +129 -0
  21. package/components/u-badge/props.js +72 -0
  22. package/components/u-badge/u-badge.vue +171 -0
  23. package/components/u-button/nvue.scss +46 -0
  24. package/components/u-button/props.js +161 -0
  25. package/components/u-button/u-button.vue +495 -0
  26. package/components/u-button/vue.scss +80 -0
  27. package/components/u-calendar/header.vue +99 -0
  28. package/components/u-calendar/month.vue +579 -0
  29. package/components/u-calendar/props.js +144 -0
  30. package/components/u-calendar/u-calendar.vue +384 -0
  31. package/components/u-calendar/util.js +85 -0
  32. package/components/u-car-keyboard/props.js +14 -0
  33. package/components/u-car-keyboard/u-car-keyboard.vue +311 -0
  34. package/components/u-cell/props.js +110 -0
  35. package/components/u-cell/u-cell.vue +229 -0
  36. package/components/u-cell-group/props.js +14 -0
  37. package/components/u-cell-group/u-cell-group.vue +61 -0
  38. package/components/u-checkbox/props.js +69 -0
  39. package/components/u-checkbox/u-checkbox.vue +344 -0
  40. package/components/u-checkbox-group/props.js +82 -0
  41. package/components/u-checkbox-group/u-checkbox-group.vue +103 -0
  42. package/components/u-circle-progress/props.js +8 -0
  43. package/components/u-circle-progress/u-circle-progress.vue +198 -0
  44. package/components/u-code/props.js +34 -0
  45. package/components/u-code/u-code.vue +129 -0
  46. package/components/u-code-input/props.js +79 -0
  47. package/components/u-code-input/u-code-input.vue +252 -0
  48. package/components/u-col/props.js +29 -0
  49. package/components/u-col/u-col.vue +162 -0
  50. package/components/u-collapse/props.js +19 -0
  51. package/components/u-collapse/u-collapse.vue +90 -0
  52. package/components/u-collapse-item/props.js +59 -0
  53. package/components/u-collapse-item/u-collapse-item.vue +225 -0
  54. package/components/u-column-notice/props.js +55 -0
  55. package/components/u-column-notice/u-column-notice.vue +160 -0
  56. package/components/u-count-down/props.js +24 -0
  57. package/components/u-count-down/u-count-down.vue +163 -0
  58. package/components/u-count-down/utils.js +62 -0
  59. package/components/u-count-to/props.js +59 -0
  60. package/components/u-count-to/u-count-to.vue +184 -0
  61. package/components/u-datetime-picker/props.js +120 -0
  62. package/components/u-datetime-picker/u-datetime-picker.vue +361 -0
  63. package/components/u-divider/props.js +44 -0
  64. package/components/u-divider/u-divider.vue +116 -0
  65. package/components/u-dropdown/props.js +65 -0
  66. package/components/u-dropdown/u-dropdown.vue +127 -0
  67. package/components/u-dropdown-item/props.js +36 -0
  68. package/components/u-dropdown-item/u-dropdown-item.vue +127 -0
  69. package/components/u-empty/props.js +59 -0
  70. package/components/u-empty/u-empty.vue +128 -0
  71. package/components/u-form/props.js +45 -0
  72. package/components/u-form/u-form.vue +214 -0
  73. package/components/u-form-item/props.js +48 -0
  74. package/components/u-form-item/u-form-item.vue +235 -0
  75. package/components/u-gap/props.js +24 -0
  76. package/components/u-gap/u-gap.vue +38 -0
  77. package/components/u-grid/props.js +19 -0
  78. package/components/u-grid/u-grid.vue +97 -0
  79. package/components/u-grid-item/props.js +14 -0
  80. package/components/u-grid-item/u-grid-item.vue +209 -0
  81. package/components/u-icon/icons.js +214 -0
  82. package/components/u-icon/props.js +89 -0
  83. package/components/u-icon/u-icon.vue +237 -0
  84. package/components/u-image/props.js +84 -0
  85. package/components/u-image/u-image.vue +232 -0
  86. package/components/u-index-anchor/props.js +29 -0
  87. package/components/u-index-anchor/u-index-anchor.vue +91 -0
  88. package/components/u-index-item/props.js +5 -0
  89. package/components/u-index-item/u-index-item.vue +87 -0
  90. package/components/u-index-list/props.js +29 -0
  91. package/components/u-index-list/u-index-list.vue +440 -0
  92. package/components/u-input/props.js +187 -0
  93. package/components/u-input/u-input.vue +369 -0
  94. package/components/u-keyboard/props.js +84 -0
  95. package/components/u-keyboard/u-keyboard.vue +164 -0
  96. package/components/u-line/props.js +33 -0
  97. package/components/u-line/u-line.vue +62 -0
  98. package/components/u-line-progress/props.js +28 -0
  99. package/components/u-line-progress/u-line-progress.vue +144 -0
  100. package/components/u-link/props.js +39 -0
  101. package/components/u-link/u-link.vue +83 -0
  102. package/components/u-list/props.js +76 -0
  103. package/components/u-list/u-list.vue +157 -0
  104. package/components/u-list-item/props.js +9 -0
  105. package/components/u-list-item/u-list-item.vue +116 -0
  106. package/components/u-loading-icon/props.js +59 -0
  107. package/components/u-loading-icon/u-loading-icon.vue +343 -0
  108. package/components/u-loading-page/props.js +49 -0
  109. package/components/u-loading-page/u-loading-page.vue +115 -0
  110. package/components/u-loadmore/props.js +94 -0
  111. package/components/u-loadmore/u-loadmore.vue +150 -0
  112. package/components/u-modal/props.js +89 -0
  113. package/components/u-modal/u-modal.vue +228 -0
  114. package/components/u-navbar/props.js +84 -0
  115. package/components/u-navbar/u-navbar.vue +186 -0
  116. package/components/u-no-network/props.js +19 -0
  117. package/components/u-no-network/u-no-network.vue +220 -0
  118. package/components/u-notice-bar/props.js +70 -0
  119. package/components/u-notice-bar/u-notice-bar.vue +101 -0
  120. package/components/u-notify/props.js +49 -0
  121. package/components/u-notify/u-notify.vue +211 -0
  122. package/components/u-number-box/props.js +109 -0
  123. package/components/u-number-box/u-number-box.vue +416 -0
  124. package/components/u-number-keyboard/props.js +19 -0
  125. package/components/u-number-keyboard/u-number-keyboard.vue +196 -0
  126. package/components/u-overlay/props.js +24 -0
  127. package/components/u-overlay/u-overlay.vue +68 -0
  128. package/components/u-parse/node/node.vue +499 -0
  129. package/components/u-parse/parser.js +1075 -0
  130. package/components/u-parse/props.js +45 -0
  131. package/components/u-parse/u-parse.vue +366 -0
  132. package/components/u-picker/props.js +79 -0
  133. package/components/u-picker/u-picker.vue +286 -0
  134. package/components/u-picker-column/props.js +5 -0
  135. package/components/u-picker-column/u-picker-column.vue +27 -0
  136. package/components/u-popup/props.js +79 -0
  137. package/components/u-popup/u-popup.vue +304 -0
  138. package/components/u-radio/props.js +64 -0
  139. package/components/u-radio/u-radio.vue +339 -0
  140. package/components/u-radio-group/props.js +85 -0
  141. package/components/u-radio-group/u-radio-group.vue +108 -0
  142. package/components/u-rate/props.js +69 -0
  143. package/components/u-rate/u-rate.vue +306 -0
  144. package/components/u-read-more/props.js +61 -0
  145. package/components/u-read-more/u-read-more.vue +157 -0
  146. package/components/u-row/props.js +19 -0
  147. package/components/u-row/u-row.vue +93 -0
  148. package/components/u-row-notice/props.js +39 -0
  149. package/components/u-row-notice/u-row-notice.vue +330 -0
  150. package/components/u-safe-bottom/props.js +5 -0
  151. package/components/u-safe-bottom/u-safe-bottom.vue +56 -0
  152. package/components/u-scroll-list/nvue.js +28 -0
  153. package/components/u-scroll-list/other.js +0 -0
  154. package/components/u-scroll-list/props.js +34 -0
  155. package/components/u-scroll-list/scrollWxs.wxs +50 -0
  156. package/components/u-scroll-list/u-scroll-list.vue +224 -0
  157. package/components/u-search/props.js +118 -0
  158. package/components/u-search/u-search.vue +303 -0
  159. package/components/u-skeleton/props.js +59 -0
  160. package/components/u-skeleton/u-skeleton.vue +244 -0
  161. package/components/u-slider/mpother.js +113 -0
  162. package/components/u-slider/mpwxs.js +42 -0
  163. package/components/u-slider/mpwxs.wxs +121 -0
  164. package/components/u-slider/nvue - /345/211/257/346/234/254.js" +180 -0
  165. package/components/u-slider/nvue.js +193 -0
  166. package/components/u-slider/props.js +54 -0
  167. package/components/u-slider/u-slider.vue +55 -0
  168. package/components/u-status-bar/props.js +8 -0
  169. package/components/u-status-bar/u-status-bar.vue +46 -0
  170. package/components/u-steps/props.js +39 -0
  171. package/components/u-steps/u-steps.vue +80 -0
  172. package/components/u-steps-item/props.js +24 -0
  173. package/components/u-steps-item/u-steps-item.vue +316 -0
  174. package/components/u-sticky/props.js +40 -0
  175. package/components/u-sticky/u-sticky.vue +212 -0
  176. package/components/u-subsection/props.js +49 -0
  177. package/components/u-subsection/u-subsection.vue +299 -0
  178. package/components/u-swipe-action/props.js +9 -0
  179. package/components/u-swipe-action/u-swipe-action.vue +67 -0
  180. package/components/u-swipe-action-item/index - backup.wxs +256 -0
  181. package/components/u-swipe-action-item/index.wxs +225 -0
  182. package/components/u-swipe-action-item/nvue - backup.js +270 -0
  183. package/components/u-swipe-action-item/nvue.js +174 -0
  184. package/components/u-swipe-action-item/props.js +41 -0
  185. package/components/u-swipe-action-item/u-swipe-action-item.vue +190 -0
  186. package/components/u-swipe-action-item/wxs.js +15 -0
  187. package/components/u-swiper/props.js +125 -0
  188. package/components/u-swiper/u-swiper.vue +255 -0
  189. package/components/u-swiper-indicator/props.js +29 -0
  190. package/components/u-swiper-indicator/u-swiper-indicator.vue +110 -0
  191. package/components/u-switch/props.js +54 -0
  192. package/components/u-switch/u-switch.vue +177 -0
  193. package/components/u-tabbar/props.js +44 -0
  194. package/components/u-tabbar/u-tabbar.vue +141 -0
  195. package/components/u-tabbar-item/props.js +35 -0
  196. package/components/u-tabbar-item/u-tabbar-item.vue +142 -0
  197. package/components/u-table/props.js +5 -0
  198. package/components/u-table/u-table.vue +29 -0
  199. package/components/u-tabs/props.js +64 -0
  200. package/components/u-tabs/u-tabs.vue +363 -0
  201. package/components/u-tabs-item/props.js +5 -0
  202. package/components/u-tabs-item/u-tabs-item.vue +29 -0
  203. package/components/u-tag/props.js +84 -0
  204. package/components/u-tag/u-tag.vue +358 -0
  205. package/components/u-td/props.js +5 -0
  206. package/components/u-td/u-td.vue +31 -0
  207. package/components/u-text/props.js +110 -0
  208. package/components/u-text/u-text.vue +223 -0
  209. package/components/u-text/value.js +85 -0
  210. package/components/u-textarea/props.js +119 -0
  211. package/components/u-textarea/u-textarea.vue +239 -0
  212. package/components/u-toast/u-toast.vue +291 -0
  213. package/components/u-toolbar/props.js +34 -0
  214. package/components/u-toolbar/u-toolbar.vue +102 -0
  215. package/components/u-tooltip/clipboard.min.js +58 -0
  216. package/components/u-tooltip/props.js +59 -0
  217. package/components/u-tooltip/u-tooltip.vue +366 -0
  218. package/components/u-tr/props.js +5 -0
  219. package/components/u-tr/u-tr.vue +31 -0
  220. package/components/u-transition/nvue.ani-map.js +68 -0
  221. package/components/u-transition/props.js +24 -0
  222. package/components/u-transition/transition.js +157 -0
  223. package/components/u-transition/u-transition.vue +92 -0
  224. package/components/u-transition/vue.ani-style.scss +113 -0
  225. package/components/u-upload/mixin.js +21 -0
  226. package/components/u-upload/props.js +124 -0
  227. package/components/u-upload/u-upload.vue +566 -0
  228. package/components/u-upload/utils.js +151 -0
  229. package/components/uview-ui/uview-ui.vue +15 -0
  230. package/index.js +79 -0
  231. package/index.scss +23 -0
  232. package/libs/config/color.js +17 -0
  233. package/libs/config/config.js +34 -0
  234. package/libs/config/props/actionSheet.js +25 -0
  235. package/libs/config/props/album.js +25 -0
  236. package/libs/config/props/alert.js +22 -0
  237. package/libs/config/props/avatar.js +28 -0
  238. package/libs/config/props/avatarGroup.js +23 -0
  239. package/libs/config/props/backtop.js +27 -0
  240. package/libs/config/props/badge.js +27 -0
  241. package/libs/config/props/button.js +42 -0
  242. package/libs/config/props/calendar.js +42 -0
  243. package/libs/config/props/carKeyboard.js +15 -0
  244. package/libs/config/props/cell.js +35 -0
  245. package/libs/config/props/cellGroup.js +17 -0
  246. package/libs/config/props/checkbox.js +27 -0
  247. package/libs/config/props/checkboxGroup.js +29 -0
  248. package/libs/config/props/circleProgress.js +15 -0
  249. package/libs/config/props/code.js +21 -0
  250. package/libs/config/props/codeInput.js +29 -0
  251. package/libs/config/props/col.js +19 -0
  252. package/libs/config/props/collapse.js +17 -0
  253. package/libs/config/props/collapseItem.js +25 -0
  254. package/libs/config/props/columnNotice.js +24 -0
  255. package/libs/config/props/countDown.js +18 -0
  256. package/libs/config/props/countTo.js +25 -0
  257. package/libs/config/props/datetimePicker.js +37 -0
  258. package/libs/config/props/divider.js +23 -0
  259. package/libs/config/props/empty.js +26 -0
  260. package/libs/config/props/form.js +22 -0
  261. package/libs/config/props/formItem.js +23 -0
  262. package/libs/config/props/gap.js +19 -0
  263. package/libs/config/props/grid.js +17 -0
  264. package/libs/config/props/gridItem.js +16 -0
  265. package/libs/config/props/icon.js +36 -0
  266. package/libs/config/props/image.js +30 -0
  267. package/libs/config/props/indexAnchor.js +19 -0
  268. package/libs/config/props/indexList.js +19 -0
  269. package/libs/config/props/input.js +48 -0
  270. package/libs/config/props/keyboard.js +30 -0
  271. package/libs/config/props/line.js +20 -0
  272. package/libs/config/props/lineProgress.js +19 -0
  273. package/libs/config/props/link.js +26 -0
  274. package/libs/config/props/list.js +28 -0
  275. package/libs/config/props/listItem.js +15 -0
  276. package/libs/config/props/loadingIcon.js +30 -0
  277. package/libs/config/props/loadingPage.js +23 -0
  278. package/libs/config/props/loadmore.js +32 -0
  279. package/libs/config/props/modal.js +31 -0
  280. package/libs/config/props/navbar.js +32 -0
  281. package/libs/config/props/noNetwork.js +18 -0
  282. package/libs/config/props/noticeBar.js +27 -0
  283. package/libs/config/props/notify.js +22 -0
  284. package/libs/config/props/numberBox.js +35 -0
  285. package/libs/config/props/numberKeyboard.js +17 -0
  286. package/libs/config/props/overlay.js +18 -0
  287. package/libs/config/props/parse.js +22 -0
  288. package/libs/config/props/picker.js +29 -0
  289. package/libs/config/props/popup.js +29 -0
  290. package/libs/config/props/radio.js +27 -0
  291. package/libs/config/props/radioGroup.js +30 -0
  292. package/libs/config/props/rate.js +26 -0
  293. package/libs/config/props/readMore.js +22 -0
  294. package/libs/config/props/row.js +17 -0
  295. package/libs/config/props/rowNotice.js +21 -0
  296. package/libs/config/props/scrollList.js +20 -0
  297. package/libs/config/props/search.js +37 -0
  298. package/libs/config/props/section.js +24 -0
  299. package/libs/config/props/skeleton.js +25 -0
  300. package/libs/config/props/slider.js +25 -0
  301. package/libs/config/props/statusBar.js +15 -0
  302. package/libs/config/props/steps.js +21 -0
  303. package/libs/config/props/stepsItem.js +18 -0
  304. package/libs/config/props/sticky.js +20 -0
  305. package/libs/config/props/subsection.js +23 -0
  306. package/libs/config/props/swipeAction.js +15 -0
  307. package/libs/config/props/swipeActionItem.js +21 -0
  308. package/libs/config/props/swiper.js +39 -0
  309. package/libs/config/props/swipterIndicator.js +19 -0
  310. package/libs/config/props/switch.js +24 -0
  311. package/libs/config/props/tabbar.js +22 -0
  312. package/libs/config/props/tabbarItem.js +20 -0
  313. package/libs/config/props/tabs.js +32 -0
  314. package/libs/config/props/tag.js +29 -0
  315. package/libs/config/props/text.js +38 -0
  316. package/libs/config/props/textarea.js +36 -0
  317. package/libs/config/props/toast.js +30 -0
  318. package/libs/config/props/toolbar.js +21 -0
  319. package/libs/config/props/tooltip.js +25 -0
  320. package/libs/config/props/transition.js +18 -0
  321. package/libs/config/props/upload.js +36 -0
  322. package/libs/config/props.js +190 -0
  323. package/libs/config/zIndex.js +20 -0
  324. package/libs/css/color.scss +155 -0
  325. package/libs/css/common.scss +97 -0
  326. package/libs/css/components.scss +15 -0
  327. package/libs/css/flex.scss +257 -0
  328. package/libs/css/h5.scss +0 -0
  329. package/libs/css/mixin.scss +8 -0
  330. package/libs/css/mp.scss +0 -0
  331. package/libs/css/nvue.scss +0 -0
  332. package/libs/css/vue.scss +27 -0
  333. package/libs/function/colorGradient.js +134 -0
  334. package/libs/function/debounce.js +29 -0
  335. package/libs/function/digit.js +167 -0
  336. package/libs/function/index.js +731 -0
  337. package/libs/function/platform.js +75 -0
  338. package/libs/function/test.js +288 -0
  339. package/libs/function/throttle.js +30 -0
  340. package/libs/luch-request/adapters/index.js +97 -0
  341. package/libs/luch-request/core/InterceptorManager.js +50 -0
  342. package/libs/luch-request/core/Request.js +198 -0
  343. package/libs/luch-request/core/buildFullPath.js +20 -0
  344. package/libs/luch-request/core/defaults.js +29 -0
  345. package/libs/luch-request/core/dispatchRequest.js +3 -0
  346. package/libs/luch-request/core/mergeConfig.js +103 -0
  347. package/libs/luch-request/core/settle.js +16 -0
  348. package/libs/luch-request/helpers/buildURL.js +69 -0
  349. package/libs/luch-request/helpers/combineURLs.js +14 -0
  350. package/libs/luch-request/helpers/isAbsoluteURL.js +14 -0
  351. package/libs/luch-request/index.d.ts +116 -0
  352. package/libs/luch-request/index.js +3 -0
  353. package/libs/luch-request/utils/clone.js +264 -0
  354. package/libs/luch-request/utils.js +131 -0
  355. package/libs/mixin/button.js +13 -0
  356. package/libs/mixin/mixin.js +160 -0
  357. package/libs/mixin/mpMixin.js +8 -0
  358. package/libs/mixin/mpShare.js +13 -0
  359. package/libs/mixin/openType.js +25 -0
  360. package/libs/mixin/style.js +228 -0
  361. package/libs/mixin/touch.js +59 -0
  362. package/libs/util/async-validator.js +1343 -0
  363. package/libs/util/calendar.js +546 -0
  364. package/libs/util/dayjs.js +308 -0
  365. package/libs/util/emitter.js +51 -0
  366. package/libs/util/route.js +124 -0
  367. package/package.json +83 -0
  368. package/theme.scss +44 -0
@@ -0,0 +1,61 @@
1
+ <template>
2
+ <view :style="[$u.addStyle(customStyle)]" :class="[customClass]" class="u-cell-group">
3
+ <view v-if="title" class="u-cell-group__title">
4
+ <slot name="title">
5
+ <text class="u-cell-group__title__text">{{ title }}</text>
6
+ </slot>
7
+ </view>
8
+ <view class="u-cell-group__wrapper">
9
+ <u-line v-if="border"></u-line>
10
+ <slot />
11
+ </view>
12
+ </view>
13
+ </template>
14
+
15
+ <script>
16
+ import props from './props.js';
17
+ /**
18
+ * cellGroup 单元格
19
+ * @description cell单元格一般用于一组列表的情况,比如个人中心页,设置页等。
20
+ * @tutorial https://uviewui.com/components/cell.html
21
+ *
22
+ * @property {String} title 分组标题
23
+ * @property {Boolean} border 是否显示外边框 (默认 true )
24
+ * @property {Object} customStyle 定义需要用到的外部样式
25
+ *
26
+ * @event {Function} click 点击cell列表时触发
27
+ * @example <u-cell-group title="设置喜好">
28
+ */
29
+ export default {
30
+ name: 'u-cell-group',
31
+ mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
32
+ }
33
+ </script>
34
+
35
+ <style lang="scss" scoped>
36
+ @import "../../libs/css/components.scss";
37
+
38
+ $u-cell-group-title-padding: 16px 16px 8px !default;
39
+ $u-cell-group-title-font-size: 15px !default;
40
+ $u-cell-group-title-line-height: 16px !default;
41
+ $u-cell-group-title-color: $u-main-color !default;
42
+
43
+ .u-cell-group {
44
+ flex: 1;
45
+
46
+ &__title {
47
+ padding: $u-cell-group-title-padding;
48
+
49
+ &__text {
50
+ font-size: $u-cell-group-title-font-size;
51
+ line-height: $u-cell-group-title-line-height;
52
+ color: $u-cell-group-title-color;
53
+ }
54
+ }
55
+
56
+ &__wrapper {
57
+ position: relative;
58
+ }
59
+ }
60
+ </style>
61
+
@@ -0,0 +1,69 @@
1
+ export default {
2
+ props: {
3
+ // checkbox的名称
4
+ name: {
5
+ type: [String, Number, Boolean],
6
+ default: uni.$u.props.checkbox.name
7
+ },
8
+ // 形状,square为方形,circle为圆型
9
+ shape: {
10
+ type: String,
11
+ default: uni.$u.props.checkbox.shape
12
+ },
13
+ // 整体的大小
14
+ size: {
15
+ type: [String, Number],
16
+ default: uni.$u.props.checkbox.size
17
+ },
18
+ // 是否默认选中
19
+ checked: {
20
+ type: Boolean,
21
+ default: uni.$u.props.checkbox.checked
22
+ },
23
+ // 是否禁用
24
+ disabled: {
25
+ type: [String, Boolean],
26
+ default: uni.$u.props.checkbox.disabled
27
+ },
28
+ // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
29
+ activeColor: {
30
+ type: String,
31
+ default: uni.$u.props.checkbox.activeColor
32
+ },
33
+ // 未选中的颜色
34
+ inactiveColor: {
35
+ type: String,
36
+ default: uni.$u.props.checkbox.inactiveColor
37
+ },
38
+ // 图标的大小,单位px
39
+ iconSize: {
40
+ type: [String, Number],
41
+ default: uni.$u.props.checkbox.iconSize
42
+ },
43
+ // 图标颜色
44
+ iconColor: {
45
+ type: String,
46
+ default: uni.$u.props.checkbox.iconColor
47
+ },
48
+ // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式
49
+ label: {
50
+ type: [String, Number],
51
+ default: uni.$u.props.checkbox.label
52
+ },
53
+ // label的字体大小,px单位
54
+ labelSize: {
55
+ type: [String, Number],
56
+ default: uni.$u.props.checkbox.labelSize
57
+ },
58
+ // label的颜色
59
+ labelColor: {
60
+ type: String,
61
+ default: uni.$u.props.checkbox.labelColor
62
+ },
63
+ // 是否禁止点击提示语选中复选框
64
+ labelDisabled: {
65
+ type: [String, Boolean],
66
+ default: uni.$u.props.checkbox.labelDisabled
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,344 @@
1
+ <template>
2
+ <view
3
+ class="u-checkbox"
4
+ :style="[checkboxStyle]"
5
+ @tap.stop="wrapperClickHandler"
6
+ :class="[`u-checkbox-label--${parentData.iconPlacement}`, parentData.borderBottom && parentData.placement === 'column' && 'u-border-bottom']"
7
+ >
8
+ <view
9
+ class="u-checkbox__icon-wrap"
10
+ @tap.stop="iconClickHandler"
11
+ :class="iconClasses"
12
+ :style="[iconWrapStyle]"
13
+ >
14
+ <slot name="icon">
15
+ <u-icon
16
+ class="u-checkbox__icon-wrap__icon"
17
+ name="checkbox-mark"
18
+ :size="elIconSize"
19
+ :color="elIconColor"
20
+ />
21
+ </slot>
22
+ </view>
23
+ <text
24
+ @tap.stop="labelClickHandler"
25
+ :style="{
26
+ color: elDisabled ? elInactiveColor : elLabelColor,
27
+ fontSize: elLabelSize,
28
+ lineHeight: elLabelSize
29
+ }"
30
+ >{{label}}</text>
31
+ </view>
32
+ </template>
33
+
34
+ <script>
35
+ import props from './props.js';
36
+ /**
37
+ * checkbox 复选框
38
+ * @description 复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便
39
+ * @tutorial https://uviewui.com/components/checkbox.html
40
+ * @property {String | Number | Boolean} name checkbox组件的标示符
41
+ * @property {String} shape 形状,square为方形,circle为圆型
42
+ * @property {String | Number} size 整体的大小
43
+ * @property {Boolean} checked 是否默认选中
44
+ * @property {String | Boolean} disabled 是否禁用
45
+ * @property {String} activeColor 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
46
+ * @property {String} inactiveColor 未选中的颜色
47
+ * @property {String | Number} iconSize 图标的大小,单位px
48
+ * @property {String} iconColor 图标颜色
49
+ * @property {String | Number} label label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式
50
+ * @property {String} labelColor label的颜色
51
+ * @property {String | Number} labelSize label的字体大小,px单位
52
+ * @property {String | Boolean} labelDisabled 是否禁止点击提示语选中复选框
53
+ * @property {Object} customStyle 定义需要用到的外部样式
54
+ *
55
+ * @event {Function} change 任一个checkbox状态发生变化时触发,回调为一个对象
56
+ * @example <u-checkbox v-model="checked" :disabled="false">天涯</u-checkbox>
57
+ */
58
+ export default {
59
+ name: "u-checkbox",
60
+ mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
61
+ data() {
62
+ return {
63
+ isChecked: false,
64
+ // 父组件的默认值,因为头条小程序不支持在computed中使用this.parent.shape的形式
65
+ // 故只能使用如此方法
66
+ parentData: {
67
+ iconSize: 12,
68
+ labelDisabled: null,
69
+ disabled: null,
70
+ shape: 'square',
71
+ activeColor: null,
72
+ inactiveColor: null,
73
+ size: 18,
74
+ value: null,
75
+ iconColor: null,
76
+ placement: 'row',
77
+ borderBottom: false,
78
+ iconPlacement: 'left'
79
+ }
80
+ }
81
+ },
82
+ computed: {
83
+ // 是否禁用,如果父组件u-raios-group禁用的话,将会忽略子组件的配置
84
+ elDisabled() {
85
+ return this.disabled !== '' ? this.disabled : this.parentData.disabled !== null ? this.parentData.disabled : false;
86
+ },
87
+ // 是否禁用label点击
88
+ elLabelDisabled() {
89
+ return this.labelDisabled !== '' ? this.labelDisabled : this.parentData.labelDisabled !== null ? this.parentData.labelDisabled :
90
+ false;
91
+ },
92
+ // 组件尺寸,对应size的值,默认值为21px
93
+ elSize() {
94
+ return this.size ? this.size : (this.parentData.size ? this.parentData.size : 21);
95
+ },
96
+ // 组件的勾选图标的尺寸,默认12px
97
+ elIconSize() {
98
+ return this.iconSize ? this.iconSize : (this.parentData.iconSize ? this.parentData.iconSize : 12);
99
+ },
100
+ // 组件选中激活时的颜色
101
+ elActiveColor() {
102
+ return this.activeColor ? this.activeColor : (this.parentData.activeColor ? this.parentData.activeColor : '#2979ff');
103
+ },
104
+ // 组件选未中激活时的颜色
105
+ elInactiveColor() {
106
+ return this.inactiveColor ? this.inactiveColor : (this.parentData.inactiveColor ? this.parentData.inactiveColor :
107
+ '#c8c9cc');
108
+ },
109
+ // label的颜色
110
+ elLabelColor() {
111
+ return this.labelColor ? this.labelColor : (this.parentData.labelColor ? this.parentData.labelColor : '#606266')
112
+ },
113
+ // 组件的形状
114
+ elShape() {
115
+ return this.shape ? this.shape : (this.parentData.shape ? this.parentData.shape : 'circle');
116
+ },
117
+ // label大小
118
+ elLabelSize() {
119
+ return uni.$u.addUnit(this.labelSize ? this.labelSize : (this.parentData.labelSize ? this.parentData.labelSize :
120
+ '15'))
121
+ },
122
+ elIconColor() {
123
+ const iconColor = this.iconColor ? this.iconColor : (this.parentData.iconColor ? this.parentData.iconColor :
124
+ '#ffffff');
125
+ // 图标的颜色
126
+ if (this.elDisabled) {
127
+ // disabled状态下,已勾选的checkbox图标改为elInactiveColor
128
+ return this.isChecked ? this.elInactiveColor : 'transparent'
129
+ } else {
130
+ return this.isChecked ? iconColor : 'transparent'
131
+ }
132
+ },
133
+ iconClasses() {
134
+ let classes = []
135
+ // 组件的形状
136
+ classes.push('u-checkbox__icon-wrap--' + this.elShape)
137
+ if (this.elDisabled) {
138
+ classes.push('u-checkbox__icon-wrap--disabled')
139
+ }
140
+ if (this.isChecked && this.elDisabled) {
141
+ classes.push('u-checkbox__icon-wrap--disabled--checked')
142
+ }
143
+ // 支付宝,头条小程序无法动态绑定一个数组类名,否则解析出来的结果会带有",",而导致失效
144
+ // #ifdef MP-ALIPAY || MP-TOUTIAO
145
+ classes = classes.join(' ')
146
+ // #endif
147
+ return classes
148
+ },
149
+ iconWrapStyle() {
150
+ // checkbox的整体样式
151
+ const style = {}
152
+ style.backgroundColor = this.isChecked && !this.elDisabled ? this.elActiveColor : '#ffffff'
153
+ style.borderColor = this.isChecked && !this.elDisabled ? this.elActiveColor : this.elInactiveColor
154
+ style.width = uni.$u.addUnit(this.elSize)
155
+ style.height = uni.$u.addUnit(this.elSize)
156
+ // 如果是图标在右边的话,移除它的右边距
157
+ if (this.parentData.iconPlacement === 'right') {
158
+ style.marginRight = 0
159
+ }
160
+ return style
161
+ },
162
+ checkboxStyle() {
163
+ const style = {}
164
+ if (this.parentData.borderBottom && this.parentData.placement === 'row') {
165
+ uni.$u.error('检测到您将borderBottom设置为true,需要同时将u-checkbox-group的placement设置为column才有效')
166
+ }
167
+ // 当父组件设置了显示下边框并且排列形式为纵向时,给内容和边框之间加上一定间隔
168
+ if (this.parentData.borderBottom && this.parentData.placement === 'column') {
169
+ style.paddingBottom = '8px'
170
+ }
171
+ return uni.$u.deepMerge(style, uni.$u.addStyle(this.customStyle))
172
+ }
173
+ },
174
+ mounted() {
175
+ this.init()
176
+ },
177
+ methods: {
178
+ init() {
179
+ // 支付宝小程序不支持provide/inject,所以使用这个方法获取整个父组件,在created定义,避免循环引用
180
+ this.updateParentData()
181
+ if (!this.parent) {
182
+ uni.$u.error('u-checkbox必须搭配u-checkbox-group组件使用')
183
+ }
184
+ // 设置初始化时,是否默认选中的状态,父组件u-checkbox-group的value可能是array,所以额外判断
185
+ if (this.checked) {
186
+ this.isChecked = true
187
+ } else if (uni.$u.test.array(this.parentData.value)) {
188
+ // 查找数组是是否存在this.name元素值
189
+ this.isChecked = this.parentData.value.some(item => {
190
+ return item === this.name
191
+ })
192
+ }
193
+ },
194
+ updateParentData() {
195
+ this.getParentData('u-checkbox-group')
196
+ },
197
+ // 横向两端排列时,点击组件即可触发选中事件
198
+ wrapperClickHandler(e) {
199
+ this.parentData.iconPlacement === 'right' && this.iconClickHandler(e)
200
+ },
201
+ // 点击图标
202
+ iconClickHandler(e) {
203
+ this.preventEvent(e)
204
+ // 如果整体被禁用,不允许被点击
205
+ if (!this.elDisabled) {
206
+ this.setRadioCheckedStatus()
207
+ }
208
+ },
209
+ // 点击label
210
+ labelClickHandler(e) {
211
+ this.preventEvent(e)
212
+ // 如果按钮整体被禁用或者label被禁用,则不允许点击文字修改状态
213
+ if (!this.elLabelDisabled && !this.elDisabled) {
214
+ this.setRadioCheckedStatus()
215
+ }
216
+ },
217
+ emitEvent() {
218
+ this.$emit('change', this.isChecked)
219
+ // 尝试调用u-form的验证方法,进行一定延迟,否则微信小程序更新可能会不及时
220
+ this.$nextTick(() => {
221
+ uni.$u.formValidate(this, 'change')
222
+ })
223
+ },
224
+ // 改变组件选中状态
225
+ // 这里的改变的依据是,更改本组件的checked值为true,同时通过父组件遍历所有u-checkbox实例
226
+ // 将本组件外的其他u-checkbox的checked都设置为false(都被取消选中状态),因而只剩下一个为选中状态
227
+ setRadioCheckedStatus() {
228
+ // 将本组件标记为与原来相反的状态
229
+ this.isChecked = !this.isChecked
230
+ this.emitEvent()
231
+ typeof this.parent.unCheckedOther === 'function' && this.parent.unCheckedOther(this)
232
+ }
233
+ },
234
+ watch:{
235
+ checked(){
236
+ this.isChecked = this.checked
237
+ }
238
+ }
239
+ }
240
+ </script>
241
+
242
+ <style lang="scss" scoped>
243
+ @import "../../libs/css/components.scss";
244
+ $u-checkbox-icon-wrap-margin-right:6px !default;
245
+ $u-checkbox-icon-wrap-font-size:6px !default;
246
+ $u-checkbox-icon-wrap-border-width:1px !default;
247
+ $u-checkbox-icon-wrap-border-color:#c8c9cc !default;
248
+ $u-checkbox-icon-wrap-icon-line-height:0 !default;
249
+ $u-checkbox-icon-wrap-circle-border-radius:100% !default;
250
+ $u-checkbox-icon-wrap-square-border-radius:3px !default;
251
+ $u-checkbox-icon-wrap-checked-color:#fff !default;
252
+ $u-checkbox-icon-wrap-checked-background-color:red !default;
253
+ $u-checkbox-icon-wrap-checked-border-color:#2979ff !default;
254
+ $u-checkbox-icon-wrap-disabled-background-color:#ebedf0 !default;
255
+ $u-checkbox-icon-wrap-disabled-checked-color:#c8c9cc !default;
256
+ $u-checkbox-label-margin-left:5px !default;
257
+ $u-checkbox-label-margin-right:12px !default;
258
+ $u-checkbox-label-color:$u-content-color !default;
259
+ $u-checkbox-label-font-size:15px !default;
260
+ $u-checkbox-label-disabled-color:#c8c9cc !default;
261
+
262
+ .u-checkbox {
263
+ /* #ifndef APP-NVUE */
264
+ @include flex(row);
265
+ /* #endif */
266
+ overflow: hidden;
267
+ flex-direction: row;
268
+ align-items: center;
269
+
270
+ &-label--left {
271
+ flex-direction: row
272
+ }
273
+
274
+ &-label--right {
275
+ flex-direction: row-reverse;
276
+ justify-content: space-between
277
+ }
278
+
279
+ &__icon-wrap {
280
+ /* #ifndef APP-NVUE */
281
+ box-sizing: border-box;
282
+ // nvue下,border-color过渡有问题
283
+ transition-property: border-color, background-color, color;
284
+ transition-duration: 0.2s;
285
+ /* #endif */
286
+ color: $u-content-color;
287
+ @include flex;
288
+ align-items: center;
289
+ justify-content: center;
290
+ color: transparent;
291
+ text-align: center;
292
+ margin-right: $u-checkbox-icon-wrap-margin-right;
293
+
294
+ font-size: $u-checkbox-icon-wrap-font-size;
295
+ border-width: $u-checkbox-icon-wrap-border-width;
296
+ border-color: $u-checkbox-icon-wrap-border-color;
297
+ border-style: solid;
298
+
299
+ /* #ifdef MP-TOUTIAO */
300
+ // 头条小程序兼容性问题,需要设置行高为0,否则图标偏下
301
+ &__icon {
302
+ line-height: $u-checkbox-icon-wrap-icon-line-height;
303
+ }
304
+
305
+ /* #endif */
306
+
307
+ &--circle {
308
+ border-radius: $u-checkbox-icon-wrap-circle-border-radius;
309
+ }
310
+
311
+ &--square {
312
+ border-radius: $u-checkbox-icon-wrap-square-border-radius;
313
+ }
314
+
315
+ &--checked {
316
+ color: $u-checkbox-icon-wrap-checked-color;
317
+ background-color: $u-checkbox-icon-wrap-checked-background-color;
318
+ border-color: $u-checkbox-icon-wrap-checked-border-color;
319
+ }
320
+
321
+ &--disabled {
322
+ background-color: $u-checkbox-icon-wrap-disabled-background-color !important;
323
+ }
324
+
325
+ &--disabled--checked {
326
+ color: $u-checkbox-icon-wrap-disabled-checked-color !important;
327
+ }
328
+ }
329
+
330
+ &__label {
331
+ /* #ifndef APP-NVUE */
332
+ word-wrap: break-word;
333
+ /* #endif */
334
+ margin-left: $u-checkbox-label-margin-left;
335
+ margin-right: $u-checkbox-label-margin-right;
336
+ color: $u-checkbox-label-color;
337
+ font-size: $u-checkbox-label-font-size;
338
+
339
+ &--disabled {
340
+ color: $u-checkbox-label-disabled-color;
341
+ }
342
+ }
343
+ }
344
+ </style>
@@ -0,0 +1,82 @@
1
+ export default {
2
+ props: {
3
+ // 标识符
4
+ name: {
5
+ type: String,
6
+ default: uni.$u.props.checkboxGroup.name
7
+ },
8
+ // 绑定的值
9
+ value: {
10
+ type: Array,
11
+ default: uni.$u.props.checkboxGroup.value
12
+ },
13
+ // 形状,circle-圆形,square-方形
14
+ shape: {
15
+ type: String,
16
+ default: uni.$u.props.checkboxGroup.shape
17
+ },
18
+ // 是否禁用全部checkbox
19
+ disabled: {
20
+ type: Boolean,
21
+ default: uni.$u.props.checkboxGroup.disabled
22
+ },
23
+
24
+ // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值
25
+ activeColor: {
26
+ type: String,
27
+ default: uni.$u.props.checkboxGroup.activeColor
28
+ },
29
+ // 未选中的颜色
30
+ inactiveColor: {
31
+ type: String,
32
+ default: uni.$u.props.checkboxGroup.inactiveColor
33
+ },
34
+
35
+ // 整个组件的尺寸,默认px
36
+ size: {
37
+ type: [String, Number],
38
+ default: uni.$u.props.checkboxGroup.size
39
+ },
40
+ // 布局方式,row-横向,column-纵向
41
+ placement: {
42
+ type: String,
43
+ default: uni.$u.props.checkboxGroup.placement
44
+ },
45
+ // label的字体大小,px单位
46
+ labelSize: {
47
+ type: [String, Number],
48
+ default: uni.$u.props.checkboxGroup.labelSize
49
+ },
50
+ // label的字体颜色
51
+ labelColor: {
52
+ type: [String],
53
+ default: uni.$u.props.checkboxGroup.labelColor
54
+ },
55
+ // 是否禁止点击文本操作
56
+ labelDisabled: {
57
+ type: Boolean,
58
+ default: uni.$u.props.checkboxGroup.labelDisabled
59
+ },
60
+ // 图标颜色
61
+ iconColor: {
62
+ type: String,
63
+ default: uni.$u.props.checkboxGroup.iconColor
64
+ },
65
+ // 图标的大小,单位px
66
+ iconSize: {
67
+ type: [String, Number],
68
+ default: uni.$u.props.checkboxGroup.iconSize
69
+ },
70
+ // 勾选图标的对齐方式,left-左边,right-右边
71
+ iconPlacement: {
72
+ type: String,
73
+ default: uni.$u.props.checkboxGroup.iconPlacement
74
+ },
75
+ // 竖向配列时,是否显示下划线
76
+ borderBottom: {
77
+ type: Boolean,
78
+ default: uni.$u.props.checkboxGroup.borderBottom
79
+ }
80
+
81
+ }
82
+ }
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <view
3
+ class="u-checkbox-group"
4
+ :class="bemClass"
5
+ >
6
+ <slot></slot>
7
+ </view>
8
+ </template>
9
+
10
+ <script>
11
+ import props from './props.js';
12
+ /**
13
+ * checkboxGroup 复选框组
14
+ * @description 复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便
15
+ * @tutorial https://www.uviewui.com/components/checkbox.html
16
+ * @property {String} name 标识符
17
+ * @property {Array} value 绑定的值
18
+ * @property {String} shape 形状,circle-圆形,square-方形 (默认 'square' )
19
+ * @property {Boolean} disabled 是否禁用全部checkbox (默认 false )
20
+ * @property {String} activeColor 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 (默认 '#2979ff' )
21
+ * @property {String} inactiveColor 未选中的颜色 (默认 '#c8c9cc' )
22
+ * @property {String | Number} size 整个组件的尺寸 单位px (默认 18 )
23
+ * @property {String} placement 布局方式,row-横向,column-纵向 (默认 'row' )
24
+ * @property {String | Number} labelSize label的字体大小,px单位 (默认 14 )
25
+ * @property {String} labelColor label的字体颜色 (默认 '#303133' )
26
+ * @property {Boolean} labelDisabled 是否禁止点击文本操作 (默认 false )
27
+ * @property {String} iconColor 图标颜色 (默认 '#ffffff' )
28
+ * @property {String | Number} iconSize 图标的大小,单位px (默认 12 )
29
+ * @property {String} iconPlacement 勾选图标的对齐方式,left-左边,right-右边 (默认 'left' )
30
+ * @property {Boolean} borderBottom placement为row时,是否显示下边框 (默认 false )
31
+ * @event {Function} change 任一个checkbox状态发生变化时触发,回调为一个对象
32
+ * @event {Function} input 修改通过v-model绑定的值时触发,回调为一个对象
33
+ * @example <u-checkbox-group></u-checkbox-group>
34
+ */
35
+ export default {
36
+ name: 'u-checkbox-group',
37
+ mixins: [uni.$u.mpMixin, uni.$u.mixin,props],
38
+ computed: {
39
+ // 这里computed的变量,都是子组件u-checkbox需要用到的,由于头条小程序的兼容性差异,子组件无法实时监听父组件参数的变化
40
+ // 所以需要手动通知子组件,这里返回一个parentData变量,供watch监听,在其中去通知每一个子组件重新从父组件(u-checkbox-group)
41
+ // 拉取父组件新的变化后的参数
42
+ parentData() {
43
+ return [this.value, this.disabled, this.inactiveColor, this.activeColor, this.size, this.labelDisabled, this.shape,
44
+ this.iconSize, this.borderBottom, this.placement
45
+ ]
46
+ },
47
+ bemClass() {
48
+ // this.bem为一个computed变量,在mixin中
49
+ return this.bem('checkbox-group', ['placement'])
50
+ },
51
+ },
52
+ watch: {
53
+ // 当父组件需要子组件需要共享的参数发生了变化,手动通知子组件
54
+ parentData() {
55
+ if (this.children.length) {
56
+ this.children.map(child => {
57
+ // 判断子组件(u-checkbox)如果有init方法的话,就就执行(执行的结果是子组件重新从父组件拉取了最新的值)
58
+ typeof(child.init) === 'function' && child.init()
59
+ })
60
+ }
61
+ },
62
+ },
63
+ data() {
64
+ return {
65
+
66
+ }
67
+ },
68
+ created() {
69
+ this.children = []
70
+ },
71
+ methods: {
72
+ // 将其他的checkbox设置为未选中的状态
73
+ unCheckedOther(childInstance) {
74
+ const values = []
75
+ this.children.map(child => {
76
+ // 将被选中的checkbox,放到数组中返回
77
+ if (child.isChecked) {
78
+ values.push(child.name)
79
+ }
80
+ })
81
+ // 发出事件
82
+ this.$emit('change', values)
83
+ // 修改通过v-model绑定的值
84
+ this.$emit('input', values)
85
+ },
86
+ }
87
+ }
88
+ </script>
89
+
90
+ <style lang="scss" scoped>
91
+ @import "../../libs/css/components.scss";
92
+
93
+ .u-checkbox-group {
94
+
95
+ &--row {
96
+ @include flex;
97
+ }
98
+
99
+ &--column {
100
+ @include flex(column);
101
+ }
102
+ }
103
+ </style>
@@ -0,0 +1,8 @@
1
+ export default {
2
+ props: {
3
+ percentage: {
4
+ type: [String, Number],
5
+ default: uni.$u.props.circleProgress.percentage
6
+ }
7
+ }
8
+ }