@tplc/wot 1.0.7 → 1.0.9

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 (520) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/common/AbortablePromise.ts +3 -11
  3. package/components/common/abstracts/_config.scss +1 -1
  4. package/components/common/abstracts/_function.scss +26 -13
  5. package/components/common/abstracts/_mixin.scss +117 -71
  6. package/components/common/abstracts/variable.scss +325 -697
  7. package/components/common/base64.ts +1 -2
  8. package/components/common/canvasHelper.ts +1 -1
  9. package/components/common/interceptor.ts +43 -0
  10. package/components/common/props.ts +8 -8
  11. package/components/common/util.ts +145 -60
  12. package/components/composables/index.ts +11 -0
  13. package/components/composables/useChildren.ts +9 -18
  14. package/components/composables/useCountDown.ts +2 -2
  15. package/components/composables/useLockScroll.ts +1 -3
  16. package/components/composables/useParent.ts +4 -4
  17. package/components/composables/usePopover.ts +43 -60
  18. package/components/composables/useQueue.ts +2 -2
  19. package/components/composables/useTouch.ts +2 -3
  20. package/components/composables/useTranslate.ts +2 -13
  21. package/components/composables/useUpload.ts +389 -0
  22. package/components/wd-action-sheet/index.scss +22 -22
  23. package/components/wd-action-sheet/types.ts +11 -21
  24. package/components/wd-action-sheet/wd-action-sheet.vue +21 -40
  25. package/components/wd-backtop/index.scss +5 -5
  26. package/components/wd-backtop/types.ts +3 -15
  27. package/components/wd-backtop/wd-backtop.vue +12 -20
  28. package/components/wd-badge/index.scss +14 -10
  29. package/components/wd-badge/types.ts +6 -9
  30. package/components/wd-badge/wd-badge.vue +29 -37
  31. package/components/wd-button/index.scss +76 -80
  32. package/components/wd-button/types.ts +43 -13
  33. package/components/wd-button/wd-button.vue +41 -22
  34. package/components/wd-calendar/index.scss +58 -145
  35. package/components/wd-calendar/types.ts +23 -41
  36. package/components/wd-calendar/wd-calendar.vue +123 -130
  37. package/components/wd-calendar-view/month/index.scss +33 -65
  38. package/components/wd-calendar-view/month/month.vue +80 -113
  39. package/components/wd-calendar-view/month/types.ts +2 -1
  40. package/components/wd-calendar-view/monthPanel/index.scss +15 -15
  41. package/components/wd-calendar-view/monthPanel/month-panel.vue +64 -78
  42. package/components/wd-calendar-view/monthPanel/types.ts +58 -10
  43. package/components/wd-calendar-view/types.ts +12 -36
  44. package/components/wd-calendar-view/utils.ts +14 -36
  45. package/components/wd-calendar-view/wd-calendar-view.vue +7 -7
  46. package/components/wd-calendar-view/year/index.scss +18 -13
  47. package/components/wd-calendar-view/year/types.ts +2 -1
  48. package/components/wd-calendar-view/year/year.vue +25 -43
  49. package/components/wd-calendar-view/yearPanel/index.scss +4 -4
  50. package/components/wd-calendar-view/yearPanel/types.ts +2 -2
  51. package/components/wd-calendar-view/yearPanel/year-panel.vue +36 -41
  52. package/components/wd-card/index.scss +11 -10
  53. package/components/wd-card/types.ts +1 -1
  54. package/components/wd-card/wd-card.vue +6 -9
  55. package/components/wd-cell/index.scss +56 -41
  56. package/components/wd-cell/types.ts +23 -8
  57. package/components/wd-cell/wd-cell.vue +48 -18
  58. package/components/wd-cell-group/index.scss +8 -7
  59. package/components/wd-cell-group/types.ts +1 -1
  60. package/components/wd-cell-group/wd-cell-group.vue +5 -5
  61. package/components/wd-checkbox/index.scss +35 -35
  62. package/components/wd-checkbox/types.ts +6 -6
  63. package/components/wd-checkbox/wd-checkbox.vue +12 -20
  64. package/components/wd-checkbox-group/index.scss +4 -4
  65. package/components/wd-checkbox-group/types.ts +2 -2
  66. package/components/wd-checkbox-group/wd-checkbox-group.vue +9 -12
  67. package/components/wd-circle/index.scss +5 -5
  68. package/components/wd-circle/types.ts +2 -2
  69. package/components/wd-circle/wd-circle.vue +18 -40
  70. package/components/wd-col/index.scss +2 -2
  71. package/components/wd-col/types.ts +1 -1
  72. package/components/wd-col/wd-col.vue +11 -53
  73. package/components/wd-col-picker/index.scss +41 -115
  74. package/components/wd-col-picker/types.ts +10 -14
  75. package/components/wd-col-picker/wd-col-picker.vue +103 -155
  76. package/components/wd-collapse/index.scss +7 -13
  77. package/components/wd-collapse/types.ts +4 -10
  78. package/components/wd-collapse/wd-collapse.vue +22 -55
  79. package/components/wd-collapse-item/index.scss +16 -5
  80. package/components/wd-collapse-item/types.ts +14 -2
  81. package/components/wd-collapse-item/wd-collapse-item.vue +70 -81
  82. package/components/wd-config-provider/types.ts +69 -40
  83. package/components/wd-config-provider/wd-config-provider.vue +11 -11
  84. package/components/wd-count-down/index.scss +3 -2
  85. package/components/wd-count-down/types.ts +1 -1
  86. package/components/wd-count-down/wd-count-down.vue +5 -5
  87. package/components/wd-count-to/index.scss +2 -1
  88. package/components/wd-count-to/types.ts +10 -3
  89. package/components/wd-count-to/wd-count-to.vue +9 -18
  90. package/components/wd-curtain/index.scss +28 -23
  91. package/components/wd-curtain/types.ts +46 -9
  92. package/components/wd-curtain/wd-curtain.vue +45 -47
  93. package/components/wd-datetime-picker/index.scss +65 -145
  94. package/components/wd-datetime-picker/types.ts +41 -31
  95. package/components/wd-datetime-picker/wd-datetime-picker.vue +307 -333
  96. package/components/wd-datetime-picker-view/types.ts +29 -46
  97. package/components/wd-datetime-picker-view/util.ts +30 -0
  98. package/components/wd-datetime-picker-view/wd-datetime-picker-view.vue +104 -119
  99. package/components/wd-divider/index.scss +78 -10
  100. package/components/wd-divider/types.ts +26 -3
  101. package/components/wd-divider/wd-divider.vue +33 -10
  102. package/components/wd-drop-menu/index.scss +17 -45
  103. package/components/wd-drop-menu/types.ts +3 -3
  104. package/components/wd-drop-menu/wd-drop-menu.vue +61 -25
  105. package/components/wd-drop-menu-item/index.scss +15 -15
  106. package/components/wd-drop-menu-item/types.ts +18 -15
  107. package/components/wd-drop-menu-item/wd-drop-menu-item.vue +33 -54
  108. package/components/wd-fab/index.scss +13 -12
  109. package/components/wd-fab/types.ts +9 -4
  110. package/components/wd-fab/wd-fab.vue +70 -51
  111. package/components/wd-floating-panel/index.scss +64 -0
  112. package/components/wd-floating-panel/type.ts +32 -0
  113. package/components/wd-floating-panel/wd-floating-panel.vue +140 -0
  114. package/components/wd-form/types.ts +8 -16
  115. package/components/wd-form/wd-form.vue +67 -45
  116. package/components/wd-form-item/index.scss +3 -2
  117. package/components/wd-form-item/types.ts +2 -8
  118. package/components/wd-form-item/wd-form-item.vue +3 -3
  119. package/components/wd-grid/index.scss +2 -2
  120. package/components/wd-grid/types.ts +5 -0
  121. package/components/wd-grid/wd-grid.vue +11 -12
  122. package/components/wd-grid-item/index.scss +44 -33
  123. package/components/wd-grid-item/types.ts +7 -4
  124. package/components/wd-grid-item/wd-grid-item.vue +39 -44
  125. package/components/wd-icon/index.scss +311 -303
  126. package/components/wd-icon/types.ts +3 -3
  127. package/components/wd-icon/wd-icon.vue +6 -6
  128. package/components/wd-img/types.ts +1 -1
  129. package/components/wd-img/wd-img.vue +12 -4
  130. package/components/wd-img-cropper/index.scss +43 -39
  131. package/components/wd-img-cropper/types.ts +6 -8
  132. package/components/wd-img-cropper/wd-img-cropper.vue +132 -127
  133. package/components/wd-index-anchor/index.scss +7 -6
  134. package/components/wd-index-anchor/type.ts +2 -2
  135. package/components/wd-index-anchor/wd-index-anchor.vue +3 -9
  136. package/components/wd-index-bar/index.scss +5 -5
  137. package/components/wd-index-bar/type.ts +3 -2
  138. package/components/wd-index-bar/wd-index-bar.vue +15 -51
  139. package/components/wd-input/index.scss +44 -33
  140. package/components/wd-input/placeholder.css +20 -0
  141. package/components/wd-input/types.ts +40 -19
  142. package/components/wd-input/wd-input.vue +58 -42
  143. package/components/wd-input-number/index.scss +23 -31
  144. package/components/wd-input-number/types.ts +42 -14
  145. package/components/wd-input-number/wd-input-number.vue +374 -141
  146. package/components/wd-keyboard/constants.ts +81 -0
  147. package/components/wd-keyboard/index.scss +102 -0
  148. package/components/wd-keyboard/key/index.scss +79 -0
  149. package/components/wd-keyboard/key/index.vue +71 -0
  150. package/components/wd-keyboard/key/types.ts +11 -0
  151. package/components/wd-keyboard/types.ts +92 -0
  152. package/components/wd-keyboard/wd-keyboard.vue +206 -0
  153. package/components/wd-loading/index.scss +9 -6
  154. package/components/wd-loading/types.ts +1 -1
  155. package/components/wd-loading/wd-loading.vue +9 -9
  156. package/components/wd-loadmore/index.scss +5 -5
  157. package/components/wd-loadmore/types.ts +8 -2
  158. package/components/wd-loadmore/wd-loadmore.vue +28 -13
  159. package/components/wd-message-box/index.scss +21 -34
  160. package/components/wd-message-box/index.ts +30 -29
  161. package/components/wd-message-box/types.ts +33 -8
  162. package/components/wd-message-box/wd-message-box.vue +130 -152
  163. package/components/wd-navbar/index.scss +14 -24
  164. package/components/wd-navbar/types.ts +1 -1
  165. package/components/wd-navbar/wd-navbar.vue +14 -45
  166. package/components/wd-navbar-capsule/index.scss +16 -15
  167. package/components/wd-navbar-capsule/types.ts +8 -0
  168. package/components/wd-navbar-capsule/wd-navbar-capsule.vue +8 -4
  169. package/components/wd-notice-bar/index.scss +15 -33
  170. package/components/wd-notice-bar/types.ts +14 -3
  171. package/components/wd-notice-bar/wd-notice-bar.vue +109 -66
  172. package/components/wd-notify/index.scss +5 -5
  173. package/components/wd-notify/index.ts +17 -15
  174. package/components/wd-notify/types.ts +4 -0
  175. package/components/wd-notify/wd-notify.vue +21 -19
  176. package/components/wd-number-keyboard/index.scss +10 -10
  177. package/components/wd-number-keyboard/key/index.scss +7 -5
  178. package/components/wd-number-keyboard/key/index.vue +6 -9
  179. package/components/wd-number-keyboard/key/types.ts +1 -1
  180. package/components/wd-number-keyboard/types.ts +4 -0
  181. package/components/wd-number-keyboard/wd-number-keyboard.vue +22 -44
  182. package/components/wd-overlay/index.scss +3 -3
  183. package/components/wd-overlay/types.ts +2 -2
  184. package/components/wd-overlay/wd-overlay.vue +7 -15
  185. package/components/wd-pagination/index.scss +17 -17
  186. package/components/wd-pagination/types.ts +1 -1
  187. package/components/wd-pagination/wd-pagination.vue +10 -21
  188. package/components/wd-password-input/index.scss +7 -6
  189. package/components/wd-password-input/types.ts +2 -8
  190. package/components/wd-password-input/wd-password-input.vue +6 -15
  191. package/components/wd-picker/index.scss +46 -153
  192. package/components/wd-picker/types.ts +22 -19
  193. package/components/wd-picker/wd-picker.vue +89 -86
  194. package/components/wd-picker-view/index.scss +13 -12
  195. package/components/wd-picker-view/types.ts +16 -26
  196. package/components/wd-picker-view/wd-picker-view.vue +32 -24
  197. package/components/wd-popover/index.scss +29 -36
  198. package/components/wd-popover/types.ts +1 -1
  199. package/components/wd-popover/wd-popover.vue +20 -56
  200. package/components/wd-popup/index.scss +47 -75
  201. package/components/wd-popup/types.ts +40 -4
  202. package/components/wd-popup/wd-popup.vue +100 -157
  203. package/components/wd-progress/index.scss +20 -14
  204. package/components/wd-progress/types.ts +10 -6
  205. package/components/wd-progress/wd-progress.vue +137 -141
  206. package/components/wd-radio/index.scss +54 -53
  207. package/components/wd-radio/types.ts +15 -6
  208. package/components/wd-radio/wd-radio.vue +41 -59
  209. package/components/wd-radio-group/index.scss +5 -5
  210. package/components/wd-radio-group/types.ts +4 -1
  211. package/components/wd-radio-group/wd-radio-group.vue +6 -9
  212. package/components/wd-rate/index.scss +1 -1
  213. package/components/wd-rate/types.ts +10 -5
  214. package/components/wd-rate/wd-rate.vue +35 -17
  215. package/components/wd-resize/index.scss +2 -1
  216. package/components/wd-resize/types.ts +1 -1
  217. package/components/wd-resize/wd-resize.vue +11 -22
  218. package/components/wd-root-portal/wd-root-portal.vue +50 -0
  219. package/components/wd-row/index.scss +1 -1
  220. package/components/wd-row/types.ts +1 -1
  221. package/components/wd-row/wd-row.vue +14 -35
  222. package/components/wd-search/index.scss +29 -29
  223. package/components/wd-search/types.ts +22 -3
  224. package/components/wd-search/wd-search.vue +70 -120
  225. package/components/wd-segmented/index.scss +19 -15
  226. package/components/wd-segmented/types.ts +16 -4
  227. package/components/wd-segmented/wd-segmented.vue +34 -34
  228. package/components/wd-select-picker/index.scss +55 -122
  229. package/components/wd-select-picker/types.ts +29 -36
  230. package/components/wd-select-picker/wd-select-picker.vue +128 -274
  231. package/components/wd-sidebar/index.scss +5 -5
  232. package/components/wd-sidebar/types.ts +22 -3
  233. package/components/wd-sidebar/wd-sidebar.vue +26 -4
  234. package/components/wd-sidebar-item/index.scss +17 -13
  235. package/components/wd-sidebar-item/types.ts +3 -3
  236. package/components/wd-sidebar-item/wd-sidebar-item.vue +12 -10
  237. package/components/wd-signature/index.scss +31 -0
  238. package/components/wd-signature/types.ts +263 -0
  239. package/components/wd-signature/wd-signature.vue +630 -0
  240. package/components/wd-skeleton/index.scss +8 -13
  241. package/components/wd-skeleton/types.ts +6 -6
  242. package/components/wd-skeleton/wd-skeleton.vue +15 -31
  243. package/components/wd-slider/index.scss +24 -17
  244. package/components/wd-slider/types.ts +45 -17
  245. package/components/wd-slider/wd-slider.vue +275 -297
  246. package/components/wd-sort-button/index.scss +10 -7
  247. package/components/wd-sort-button/types.ts +1 -1
  248. package/components/wd-sort-button/wd-sort-button.vue +7 -14
  249. package/components/wd-status-tip/index.scss +8 -8
  250. package/components/wd-status-tip/types.ts +8 -2
  251. package/components/wd-status-tip/wd-status-tip.vue +14 -37
  252. package/components/wd-step/index.scss +29 -30
  253. package/components/wd-step/types.ts +1 -1
  254. package/components/wd-step/wd-step.vue +8 -9
  255. package/components/wd-steps/index.scss +1 -1
  256. package/components/wd-steps/types.ts +1 -1
  257. package/components/wd-steps/wd-steps.vue +5 -5
  258. package/components/wd-sticky/index.scss +1 -1
  259. package/components/wd-sticky/types.ts +1 -1
  260. package/components/wd-sticky/wd-sticky.vue +21 -29
  261. package/components/wd-sticky-box/index.scss +1 -1
  262. package/components/wd-sticky-box/wd-sticky-box.vue +7 -6
  263. package/components/wd-swipe-action/index.scss +1 -1
  264. package/components/wd-swipe-action/types.ts +2 -5
  265. package/components/wd-swipe-action/wd-swipe-action.vue +9 -22
  266. package/components/wd-swiper-nav/index.scss +22 -16
  267. package/components/wd-swiper-nav/types.ts +1 -9
  268. package/components/wd-swiper-nav/wd-swiper-nav.vue +2 -5
  269. package/components/wd-switch/index.scss +15 -15
  270. package/components/wd-switch/types.ts +8 -6
  271. package/components/wd-switch/wd-switch.vue +15 -15
  272. package/components/wd-tab/index.scss +11 -3
  273. package/components/wd-tab/types.ts +11 -1
  274. package/components/wd-tab/wd-tab.vue +28 -36
  275. package/components/wd-tabbar/index.scss +12 -7
  276. package/components/wd-tabbar/types.ts +3 -18
  277. package/components/wd-tabbar/wd-tabbar.vue +10 -23
  278. package/components/wd-tabbar-item/index.scss +15 -12
  279. package/components/wd-tabbar-item/types.ts +3 -3
  280. package/components/wd-tabbar-item/wd-tabbar-item.vue +11 -13
  281. package/components/wd-table/index.scss +40 -9
  282. package/components/wd-table/types.ts +13 -15
  283. package/components/wd-table/wd-table.vue +123 -94
  284. package/components/wd-table-col/index.scss +6 -4
  285. package/components/wd-table-col/types.ts +1 -1
  286. package/components/wd-table-col/wd-table-col.vue +12 -12
  287. package/components/wd-tag/index.scss +19 -19
  288. package/components/wd-tag/types.ts +1 -1
  289. package/components/wd-tag/wd-tag.vue +14 -20
  290. package/components/wd-text/index.scss +4 -1
  291. package/components/wd-text/types.ts +4 -4
  292. package/components/wd-text/wd-text.vue +12 -11
  293. package/components/wd-textarea/index.scss +51 -41
  294. package/components/wd-textarea/placeholder.css +20 -0
  295. package/components/wd-textarea/types.ts +24 -34
  296. package/components/wd-textarea/wd-textarea.vue +53 -33
  297. package/components/wd-toast/index.scss +31 -18
  298. package/components/wd-toast/index.ts +26 -43
  299. package/components/wd-toast/types.ts +117 -3
  300. package/components/wd-toast/wd-toast.vue +49 -69
  301. package/components/wd-tooltip/index.scss +21 -16
  302. package/components/wd-tooltip/types.ts +8 -3
  303. package/components/wd-tooltip/wd-tooltip.vue +17 -43
  304. package/components/wd-tour/index.scss +123 -0
  305. package/components/wd-tour/types.ts +153 -0
  306. package/components/wd-tour/wd-tour.vue +509 -0
  307. package/components/wd-transition/index.scss +39 -35
  308. package/components/wd-transition/types.ts +27 -9
  309. package/components/wd-transition/wd-transition.vue +45 -34
  310. package/components/wd-upload/index.scss +23 -21
  311. package/components/wd-upload/types.ts +43 -30
  312. package/components/wd-upload/wd-upload.vue +183 -247
  313. package/components/wd-video-preview/index.scss +9 -9
  314. package/components/wd-video-preview/types.ts +1 -1
  315. package/components/wd-video-preview/wd-video-preview.vue +18 -22
  316. package/components/wd-watermark/index.scss +7 -7
  317. package/components/wd-watermark/types.ts +2 -8
  318. package/components/wd-watermark/wd-watermark.vue +38 -135
  319. package/dayjs/constant.js +26 -0
  320. package/dayjs/index.d.ts +430 -0
  321. package/dayjs/index.js +542 -0
  322. package/dayjs/locale/en.js +13 -0
  323. package/dayjs/utils.js +59 -0
  324. package/global.d.ts +97 -91
  325. package/index.ts +2 -10
  326. package/locale/index.ts +3 -15
  327. package/locale/lang/ar-SA.ts +133 -0
  328. package/locale/lang/de-DE.ts +133 -0
  329. package/locale/lang/en-US.ts +31 -26
  330. package/locale/lang/es-ES.ts +133 -0
  331. package/locale/lang/fr-FR.ts +133 -0
  332. package/locale/lang/ja-JP.ts +133 -0
  333. package/locale/lang/ko-KR.ts +133 -0
  334. package/locale/lang/pt-PT.ts +133 -0
  335. package/locale/lang/ru-RU.ts +133 -0
  336. package/locale/lang/th-TH.ts +28 -22
  337. package/locale/lang/tr-TR.ts +138 -0
  338. package/locale/lang/ug-CN.ts +137 -0
  339. package/locale/lang/vi-VN.ts +27 -30
  340. package/locale/lang/zh-CN.ts +32 -22
  341. package/locale/lang/zh-HK.ts +18 -31
  342. package/locale/lang/zh-TW.ts +22 -31
  343. package/package.json +1 -1
  344. package/types/components/common/interceptor.d.ts +15 -0
  345. package/types/components/common/util.d.ts +61 -1
  346. package/types/components/composables/useCell.d.ts +1 -1
  347. package/types/components/composables/useLockScroll.d.ts +1 -2
  348. package/types/components/composables/useParent.d.ts +1 -1
  349. package/types/components/composables/usePopover.d.ts +2 -2
  350. package/types/components/composables/useUpload.d.ts +41 -0
  351. package/types/components/wd-action-sheet/types.d.ts +13 -4
  352. package/types/components/wd-action-sheet/wd-action-sheet.vue.d.ts +20 -11
  353. package/types/components/wd-backtop/types.d.ts +1 -9
  354. package/types/components/wd-backtop/wd-backtop.vue.d.ts +6 -25
  355. package/types/components/wd-badge/types.d.ts +3 -6
  356. package/types/components/wd-badge/wd-badge.vue.d.ts +7 -14
  357. package/types/components/wd-button/types.d.ts +44 -8
  358. package/types/components/wd-button/wd-button.vue.d.ts +13 -9
  359. package/types/components/wd-calendar/types.d.ts +24 -18
  360. package/types/components/wd-calendar/wd-calendar.vue.d.ts +48 -32
  361. package/types/components/wd-calendar-view/month/month.vue.d.ts +11 -3
  362. package/types/components/wd-calendar-view/month/types.d.ts +4 -0
  363. package/types/components/wd-calendar-view/monthPanel/month-panel.vue.d.ts +18 -12
  364. package/types/components/wd-calendar-view/monthPanel/types.d.ts +48 -6
  365. package/types/components/wd-calendar-view/types.d.ts +11 -4
  366. package/types/components/wd-calendar-view/utils.d.ts +3 -12
  367. package/types/components/wd-calendar-view/wd-calendar-view.vue.d.ts +1 -1
  368. package/types/components/wd-calendar-view/year/types.d.ts +4 -0
  369. package/types/components/wd-calendar-view/year/year.vue.d.ts +11 -3
  370. package/types/components/wd-cell/types.d.ts +37 -1
  371. package/types/components/wd-cell/wd-cell.vue.d.ts +53 -9
  372. package/types/components/wd-checkbox/wd-checkbox.vue.d.ts +2 -2
  373. package/types/components/wd-checkbox-group/wd-checkbox-group.vue.d.ts +2 -2
  374. package/types/components/wd-circle/wd-circle.vue.d.ts +3 -3
  375. package/types/components/wd-col-picker/types.d.ts +14 -0
  376. package/types/components/wd-col-picker/wd-col-picker.vue.d.ts +36 -19
  377. package/types/components/wd-collapse/types.d.ts +1 -5
  378. package/types/components/wd-collapse/wd-collapse.vue.d.ts +3 -11
  379. package/types/components/wd-collapse-item/types.d.ts +19 -1
  380. package/types/components/wd-collapse-item/wd-collapse-item.vue.d.ts +20 -1
  381. package/types/components/wd-config-provider/types.d.ts +64 -7
  382. package/types/components/wd-config-provider/wd-config-provider.vue.d.ts +1 -1
  383. package/types/components/wd-count-to/types.d.ts +11 -0
  384. package/types/components/wd-count-to/wd-count-to.vue.d.ts +13 -4
  385. package/types/components/wd-curtain/types.d.ts +56 -0
  386. package/types/components/wd-curtain/wd-curtain.vue.d.ts +152 -77
  387. package/types/components/wd-datetime-picker/types.d.ts +49 -15
  388. package/types/components/wd-datetime-picker/wd-datetime-picker.vue.d.ts +75 -38
  389. package/types/components/wd-datetime-picker-view/types.d.ts +36 -14
  390. package/types/components/wd-datetime-picker-view/util.d.ts +12 -0
  391. package/types/components/wd-datetime-picker-view/wd-datetime-picker-view.vue.d.ts +35 -9
  392. package/types/components/wd-divider/types.d.ts +32 -4
  393. package/types/components/wd-divider/wd-divider.vue.d.ts +30 -7
  394. package/types/components/wd-drop-menu/types.d.ts +3 -3
  395. package/types/components/wd-drop-menu/wd-drop-menu.vue.d.ts +8 -8
  396. package/types/components/wd-drop-menu-item/types.d.ts +27 -15
  397. package/types/components/wd-drop-menu-item/wd-drop-menu-item.vue.d.ts +47 -36
  398. package/types/components/wd-fab/types.d.ts +19 -3
  399. package/types/components/wd-fab/wd-fab.vue.d.ts +13 -1
  400. package/types/components/wd-floating-panel/type.d.ts +54 -0
  401. package/types/components/wd-floating-panel/wd-floating-panel.vue.d.ts +109 -0
  402. package/types/components/wd-form/types.d.ts +1 -1
  403. package/types/components/wd-form/wd-form.vue.d.ts +2 -2
  404. package/types/components/wd-form-item/wd-form-item.vue.d.ts +2 -2
  405. package/types/components/wd-grid/types.d.ts +5 -0
  406. package/types/components/wd-grid/wd-grid.vue.d.ts +2 -0
  407. package/types/components/wd-grid-item/types.d.ts +4 -1
  408. package/types/components/wd-grid-item/wd-grid-item.vue.d.ts +3 -3
  409. package/types/components/wd-icon/types.d.ts +1 -1
  410. package/types/components/wd-icon/wd-icon.vue.d.ts +3 -3
  411. package/types/components/wd-img/types.d.ts +4 -1
  412. package/types/components/wd-img/wd-img.vue.d.ts +11 -4
  413. package/types/components/wd-img-cropper/types.d.ts +7 -0
  414. package/types/components/wd-img-cropper/wd-img-cropper.vue.d.ts +12 -3
  415. package/types/components/wd-index-bar/type.d.ts +2 -1
  416. package/types/components/wd-index-bar/wd-index-bar.vue.d.ts +1 -5
  417. package/types/components/wd-input/types.d.ts +53 -37
  418. package/types/components/wd-input/wd-input.vue.d.ts +50 -52
  419. package/types/components/wd-input-number/types.d.ts +51 -6
  420. package/types/components/wd-input-number/wd-input-number.vue.d.ts +152 -125
  421. package/types/components/wd-keyboard/constants.d.ts +8 -0
  422. package/types/components/wd-keyboard/key/index.vue.d.ts +70 -0
  423. package/types/components/wd-keyboard/key/types.d.ts +23 -0
  424. package/types/components/wd-keyboard/types.d.ts +137 -0
  425. package/types/components/wd-keyboard/wd-keyboard.vue.d.ts +200 -0
  426. package/types/components/wd-loading/wd-loading.vue.d.ts +2 -2
  427. package/types/components/wd-loadmore/types.d.ts +7 -4
  428. package/types/components/wd-loadmore/wd-loadmore.vue.d.ts +5 -9
  429. package/types/components/wd-message-box/index.d.ts +3 -8
  430. package/types/components/wd-message-box/types.d.ts +36 -5
  431. package/types/components/wd-message-box/wd-message-box.vue.d.ts +18 -2
  432. package/types/components/wd-navbar/wd-navbar.vue.d.ts +3 -3
  433. package/types/components/wd-navbar-capsule/types.d.ts +12 -0
  434. package/types/components/wd-navbar-capsule/wd-navbar-capsule.vue.d.ts +27 -4
  435. package/types/components/wd-notice-bar/types.d.ts +9 -1
  436. package/types/components/wd-notice-bar/wd-notice-bar.vue.d.ts +7 -5
  437. package/types/components/wd-notify/types.d.ts +7 -0
  438. package/types/components/wd-notify/wd-notify.vue.d.ts +13 -4
  439. package/types/components/wd-number-keyboard/types.d.ts +7 -0
  440. package/types/components/wd-number-keyboard/wd-number-keyboard.vue.d.ts +18 -9
  441. package/types/components/wd-overlay/wd-overlay.vue.d.ts +2 -2
  442. package/types/components/wd-pagination/wd-pagination.vue.d.ts +1 -1
  443. package/types/components/wd-password-input/wd-password-input.vue.d.ts +2 -2
  444. package/types/components/wd-picker/types.d.ts +28 -2
  445. package/types/components/wd-picker/wd-picker.vue.d.ts +55 -19
  446. package/types/components/wd-picker-view/types.d.ts +10 -0
  447. package/types/components/wd-picker-view/wd-picker-view.vue.d.ts +15 -3
  448. package/types/components/wd-popover/wd-popover.vue.d.ts +4 -4
  449. package/types/components/wd-popup/types.d.ts +44 -5
  450. package/types/components/wd-popup/wd-popup.vue.d.ts +35 -24
  451. package/types/components/wd-progress/types.d.ts +6 -3
  452. package/types/components/wd-progress/wd-progress.vue.d.ts +4 -6
  453. package/types/components/wd-qr-code/uqrcode.vue.d.ts +3 -3
  454. package/types/components/wd-qr-code/wd-qr-code.vue.d.ts +4 -4
  455. package/types/components/wd-radio/types.d.ts +8 -0
  456. package/types/components/wd-radio/wd-radio.vue.d.ts +7 -0
  457. package/types/components/wd-radio-group/types.d.ts +7 -1
  458. package/types/components/wd-radio-group/wd-radio-group.vue.d.ts +11 -2
  459. package/types/components/wd-rate/types.d.ts +9 -0
  460. package/types/components/wd-rate/wd-rate.vue.d.ts +13 -4
  461. package/types/components/wd-root-portal/wd-root-portal.vue.d.ts +26 -0
  462. package/types/components/wd-search/types.d.ts +16 -1
  463. package/types/components/wd-search/wd-search.vue.d.ts +28 -8
  464. package/types/components/wd-segmented/types.d.ts +10 -1
  465. package/types/components/wd-segmented/wd-segmented.vue.d.ts +6 -4
  466. package/types/components/wd-select-picker/types.d.ts +37 -22
  467. package/types/components/wd-select-picker/wd-select-picker.vue.d.ts +59 -30
  468. package/types/components/wd-sidebar/types.d.ts +19 -3
  469. package/types/components/wd-sidebar/wd-sidebar.vue.d.ts +4 -2
  470. package/types/components/wd-signature/types.d.ts +252 -0
  471. package/types/components/wd-signature/wd-signature.vue.d.ts +229 -0
  472. package/types/components/wd-skeleton/types.d.ts +3 -4
  473. package/types/components/wd-skeleton/wd-skeleton.vue.d.ts +10 -10
  474. package/types/components/wd-slider/types.d.ts +39 -15
  475. package/types/components/wd-slider/wd-slider.vue.d.ts +12 -38
  476. package/types/components/wd-sort-button/wd-sort-button.vue.d.ts +3 -3
  477. package/types/components/wd-status-tip/types.d.ts +9 -0
  478. package/types/components/wd-status-tip/wd-status-tip.vue.d.ts +69 -49
  479. package/types/components/wd-steps/wd-steps.vue.d.ts +1 -1
  480. package/types/components/wd-sticky/wd-sticky.vue.d.ts +3 -7
  481. package/types/components/wd-swipe-action/wd-swipe-action.vue.d.ts +3 -3
  482. package/types/components/wd-swiper/wd-swiper.vue.d.ts +4 -4
  483. package/types/components/wd-swiper-nav/types.d.ts +0 -14
  484. package/types/components/wd-swiper-nav/wd-swiper-nav.vue.d.ts +0 -18
  485. package/types/components/wd-switch/types.d.ts +0 -1
  486. package/types/components/wd-switch/wd-switch.vue.d.ts +2 -5
  487. package/types/components/wd-tab/types.d.ts +16 -3
  488. package/types/components/wd-tab/wd-tab.vue.d.ts +12 -4
  489. package/types/components/wd-tabbar/types.d.ts +1 -1
  490. package/types/components/wd-tabbar/wd-tabbar.vue.d.ts +5 -5
  491. package/types/components/wd-tabbar-item/wd-tabbar-item.vue.d.ts +1 -1
  492. package/types/components/wd-table/types.d.ts +12 -8
  493. package/types/components/wd-table/wd-table.vue.d.ts +16 -13
  494. package/types/components/wd-table-col/wd-table-col.vue.d.ts +1 -1
  495. package/types/components/wd-tabs/wd-tabs.vue.d.ts +7 -7
  496. package/types/components/wd-tag/wd-tag.vue.d.ts +4 -4
  497. package/types/components/wd-text/types.d.ts +2 -2
  498. package/types/components/wd-text/wd-text.vue.d.ts +7 -7
  499. package/types/components/wd-textarea/types.d.ts +41 -39
  500. package/types/components/wd-textarea/wd-textarea.vue.d.ts +46 -46
  501. package/types/components/wd-toast/index.d.ts +1 -6
  502. package/types/components/wd-toast/types.d.ts +127 -5
  503. package/types/components/wd-toast/wd-toast.vue.d.ts +101 -0
  504. package/types/components/wd-tooltip/types.d.ts +1 -1
  505. package/types/components/wd-tooltip/wd-tooltip.vue.d.ts +7 -7
  506. package/types/components/wd-tour/types.d.ts +194 -0
  507. package/types/components/wd-tour/wd-tour.vue.d.ts +267 -0
  508. package/types/components/wd-transition/types.d.ts +22 -7
  509. package/types/components/wd-transition/wd-transition.vue.d.ts +33 -20
  510. package/types/components/wd-upload/types.d.ts +39 -10
  511. package/types/components/wd-upload/wd-upload.vue.d.ts +42 -16
  512. package/types/components/wd-watermark/wd-watermark.vue.d.ts +7 -7
  513. package/types/locale/index.d.ts +0 -3
  514. package/types/locale/lang/zh-CN.d.ts +9 -0
  515. package/components/wd-datetime-picker-view/index.scss +0 -0
  516. package/components/wd-form/index.scss +0 -10
  517. package/components/wd-upload/utils.ts +0 -152
  518. package/types/components/common/dayjs.d.ts +0 -26
  519. package/types/components/wd-upload/utils.d.ts +0 -11
  520. package/types/locale/lang/en-US.d.ts +0 -128
@@ -1,43 +1,14 @@
1
1
  import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
2
- import {
3
- baseProps,
4
- makeBooleanProp,
5
- makeNumberProp,
6
- makeRequiredProp,
7
- makeStringProp,
8
- } from '../common/props'
2
+ import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
9
3
 
10
4
  export type DateTimeType = 'date' | 'year-month' | 'time' | 'datetime' | 'year'
11
5
 
12
- /**
13
- * @description 根据传入的值和类型,获取当前的选项数组,便于传入 pickerView
14
- * @param value
15
- * @param type picker类型
16
- * @return {Array} pickerValue
17
- */
18
- export function getPickerValue(value: string | number, type: DateTimeType) {
19
- const values: number[] = []
20
- const date = new Date(value)
21
- if (type === 'time') {
22
- const pair = String(value).split(':')
23
- values.push(parseInt(pair[0]), parseInt(pair[1]))
24
- } else {
25
- values.push(date.getFullYear(), date.getMonth() + 1)
26
- if (type === 'date') {
27
- values.push(date.getDate())
28
- } else if (type === 'datetime') {
29
- values.push(date.getDate(), date.getHours(), date.getMinutes())
30
- }
31
- }
32
- return values
33
- }
34
-
35
6
  export const datetimePickerViewProps = {
36
7
  ...baseProps,
37
8
  /**
38
9
  * 选中项,当 type 为 time 时,类型为字符串,否则为 时间戳
39
10
  */
40
- modelValue: makeRequiredProp([String, Number, Date]),
11
+ modelValue: makeRequiredProp([String, Number]),
41
12
  /**
42
13
  * 加载中
43
14
  */
@@ -50,7 +21,17 @@ export const datetimePickerViewProps = {
50
21
  * picker内部滚筒高
51
22
  */
52
23
  columnsHeight: makeNumberProp(217),
24
+ /**
25
+ * picker item的高度
26
+ */
27
+ itemHeight: makeNumberProp(35),
28
+ /**
29
+ * 选项的key
30
+ */
53
31
  valueKey: makeStringProp('value'),
32
+ /**
33
+ * 选项的label
34
+ */
54
35
  labelKey: makeStringProp('label'),
55
36
  /**
56
37
  * 选择器类型,可选值:date / year-month / time
@@ -92,30 +73,36 @@ export const datetimePickerViewProps = {
92
73
  * 最大分钟,time类型时生效
93
74
  */
94
75
  maxMinute: makeNumberProp(59),
76
+ /**
77
+ * 是否显示秒选择,仅在 time 和 datetime 类型下生效
78
+ */
79
+ useSecond: makeBooleanProp(false),
80
+ /**
81
+ * 最小秒数,仅在 time 和 datetime 类型下生效
82
+ */
83
+ minSecond: makeNumberProp(0),
84
+ /**
85
+ * 最大秒数,仅在 time 和 datetime 类型下生效
86
+ */
87
+ maxSecond: makeNumberProp(59),
95
88
  /**
96
89
  * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
97
90
  */
98
- immediateChange: makeBooleanProp(false),
99
- startSymbol: makeBooleanProp(false),
91
+ immediateChange: makeBooleanProp(false)
100
92
  }
101
93
 
102
- export type DatetimePickerViewColumnType = 'year' | 'month' | 'date' | 'hour' | 'minute'
94
+ export type DatetimePickerViewColumnType = 'year' | 'month' | 'date' | 'hour' | 'minute' | 'second'
103
95
 
104
96
  export type DatetimePickerViewOption = {
105
97
  label: string
106
98
  value: number
107
99
  }
108
100
 
109
- export type DatetimePickerViewFilter = (
110
- type: DatetimePickerViewColumnType,
111
- values: number[],
112
- ) => number[]
101
+ export type DatetimePickerViewFilter = (type: DatetimePickerViewColumnType, values: number[]) => number[]
113
102
 
114
103
  export type DatetimePickerViewFormatter = (type: string, value: string) => string
115
104
 
116
- export type DatetimePickerViewColumnFormatter = (
117
- picker: DatetimePickerViewInstance,
118
- ) => DatetimePickerViewOption[][]
105
+ export type DatetimePickerViewColumnFormatter = (picker: DatetimePickerViewExpose) => DatetimePickerViewOption[][]
119
106
 
120
107
  export type DatetimePickerViewProps = ExtractPropTypes<typeof datetimePickerViewProps>
121
108
 
@@ -124,14 +111,10 @@ export type DatetimePickerViewExpose = {
124
111
  setColumns: (columnList: DatetimePickerViewOption[][]) => void
125
112
  getSelects: () => Record<string, any> | Record<string, any>[] | undefined
126
113
  correctValue: (value: string | number) => string | number
127
- getPickerValue: (value: string | number, type: DateTimeType) => number[]
128
114
  getOriginColumns: () => {
129
115
  type: DatetimePickerViewColumnType
130
116
  values: number[]
131
117
  }[]
132
118
  }
133
119
 
134
- export type DatetimePickerViewInstance = ComponentPublicInstance<
135
- DatetimePickerViewProps,
136
- DatetimePickerViewExpose
137
- >
120
+ export type DatetimePickerViewInstance = ComponentPublicInstance<DatetimePickerViewProps, DatetimePickerViewExpose>
@@ -0,0 +1,30 @@
1
+ import { type DateTimeType } from './types'
2
+
3
+ /**
4
+ * @description 根据传入的值和类型,获取当前的选项数组,便于传入 pickerView
5
+ * @param value
6
+ * @param type picker类型
7
+ * @param useSecond 是否使用秒,仅在 time 和 datetime 类型下生效
8
+ */
9
+ export function getPickerValue(value: string | number, type: DateTimeType, useSecond: boolean = false) {
10
+ const values: number[] = []
11
+ const date = new Date(value)
12
+ if (type === 'time') {
13
+ const pair = String(value).split(':')
14
+ values.push(parseInt(pair[0]), parseInt(pair[1]))
15
+ if (useSecond && pair[2]) {
16
+ values.push(parseInt(pair[2]))
17
+ }
18
+ } else {
19
+ values.push(date.getFullYear(), date.getMonth() + 1)
20
+ if (type === 'date') {
21
+ values.push(date.getDate())
22
+ } else if (type === 'datetime') {
23
+ values.push(date.getDate(), date.getHours(), date.getMinutes())
24
+ if (useSecond) {
25
+ values.push(date.getSeconds())
26
+ }
27
+ }
28
+ }
29
+ return values
30
+ }
@@ -1,42 +1,37 @@
1
1
  <template>
2
- <view>
3
- <wd-picker-view
4
- ref="datePickerview"
5
- :custom-class="customClass"
6
- :custom-style="customStyle"
7
- :immediate-change="immediateChange"
8
- v-model="pickerValue"
9
- :columns="columns"
10
- :columns-height="columnsHeight"
11
- :columnChange="columnChange"
12
- :loading="loading"
13
- :loading-color="loadingColor"
14
- @change="onChange"
15
- @pickstart="onPickStart"
16
- @pickend="onPickEnd"
17
- ></wd-picker-view>
18
- </view>
2
+ <wd-picker-view
3
+ ref="datePickerview"
4
+ :custom-class="customClass"
5
+ :custom-style="customStyle"
6
+ :immediate-change="immediateChange"
7
+ v-model="pickerValue"
8
+ :columns="columns"
9
+ :columns-height="columnsHeight"
10
+ :item-height="itemHeight"
11
+ :columnChange="columnChange"
12
+ :loading="loading"
13
+ :loading-color="loadingColor"
14
+ @change="onChange"
15
+ @pickstart="onPickStart"
16
+ @pickend="onPickEnd"
17
+ ></wd-picker-view>
19
18
  </template>
20
19
  <script lang="ts">
21
20
  export default {
22
21
  name: 'wd-datetime-picker-view',
23
22
  virtualHost: true,
24
23
  addGlobalClass: true,
25
- styleIsolation: 'shared',
24
+ styleIsolation: 'shared'
26
25
  }
27
26
  </script>
28
27
 
29
28
  <script lang="ts" setup>
29
+ import wdPickerView from '../wd-picker-view/wd-picker-view.vue'
30
30
  import { getCurrentInstance, onBeforeMount, ref, watch } from 'vue'
31
- import { debounce, isFunction, isDef, padZero, range, isArray } from '../common/util'
32
- import {
33
- getPickerValue,
34
- datetimePickerViewProps,
35
- type DatetimePickerViewColumnType,
36
- type DatetimePickerViewOption,
37
- type DatetimePickerViewExpose,
38
- } from './types'
31
+ import { debounce, isDef, padZero, range, isArray, isString } from '../common/util'
32
+ import { datetimePickerViewProps, type DatetimePickerViewColumnType, type DatetimePickerViewOption, type DatetimePickerViewExpose } from './types'
39
33
  import type { PickerViewInstance } from '../wd-picker-view/types'
34
+ import { getPickerValue } from './util'
40
35
 
41
36
  // 本地时间戳
42
37
  /** @description 判断时间戳是否合法 */
@@ -77,25 +72,15 @@ const innerValue = ref<null | string | number>(null)
77
72
  const columns = ref<DatetimePickerViewOption[][]>([])
78
73
  // 传递给pickerView的value的数据
79
74
  const pickerValue = ref<string | number | boolean | string[] | number[] | boolean[]>([])
80
- // 自定义组件是否已经调用created hook
75
+ // 是否已经初始化
81
76
  const created = ref<boolean>(false)
82
77
 
83
78
  const { proxy } = getCurrentInstance() as any
84
79
 
85
- defineExpose<DatetimePickerViewExpose>({
86
- updateColumns,
87
- setColumns,
88
- getSelects,
89
- correctValue,
90
- getPickerValue,
91
- getOriginColumns,
92
- ...props,
93
- })
94
80
  /**
95
81
  * @description updateValue 防抖函数的占位符
96
82
  */
97
83
  const updateValue = debounce(() => {
98
- // 只有等created hook初始化数据之后,observer才能执行此操作
99
84
  if (!created.value) return
100
85
  const val = correctValue(props.modelValue)
101
86
  const isEqual = val === innerValue.value
@@ -114,7 +99,7 @@ watch(
114
99
  const value = correctValue(val)
115
100
  updateColumnValue(value)
116
101
  },
117
- { deep: true, immediate: true },
102
+ { deep: true, immediate: true }
118
103
  )
119
104
 
120
105
  watch(
@@ -124,62 +109,33 @@ watch(
124
109
  if (type.indexOf(target) === -1) {
125
110
  console.error(`type must be one of ${type}`)
126
111
  }
127
- // 每次type更新时都需要刷新整个列表
128
- updateValue()
129
- },
130
- { deep: true, immediate: true },
131
- )
132
-
133
- watch(
134
- () => props.filter,
135
- (fn) => {
136
- if (fn && !isFunction(fn)) {
137
- console.error('The type of filter must be Function')
138
- }
139
- updateValue()
140
- },
141
- { deep: true, immediate: true },
142
- )
143
-
144
- watch(
145
- () => props.formatter,
146
- (fn) => {
147
- if (fn && !isFunction(fn)) {
148
- console.error('The type of formatter must be Function')
149
- }
150
- updateValue()
151
112
  },
152
- { deep: true, immediate: true },
153
- )
154
-
155
- watch(
156
- () => props.columnFormatter,
157
- (fn) => {
158
- if (fn && !isFunction(fn)) {
159
- console.error('The type of columnFormatter must be Function')
160
- }
161
- updateValue()
162
- },
163
- { deep: true, immediate: true },
113
+ { deep: true, immediate: true }
164
114
  )
165
115
 
166
116
  watch(
167
117
  [
118
+ () => props.type,
119
+ () => props.filter,
120
+ () => props.formatter,
121
+ () => props.columnFormatter,
168
122
  () => props.minDate,
169
123
  () => props.maxDate,
170
124
  () => props.minHour,
171
125
  () => props.maxHour,
172
126
  () => props.minMinute,
173
- () => props.minMinute,
174
127
  () => props.maxMinute,
128
+ () => props.minSecond,
129
+ () => props.maxSecond,
130
+ () => props.useSecond
175
131
  ],
176
132
  () => {
177
133
  updateValue()
178
134
  },
179
135
  {
180
136
  deep: true,
181
- immediate: true,
182
- },
137
+ immediate: true
138
+ }
183
139
  )
184
140
 
185
141
  onBeforeMount(() => {
@@ -199,7 +155,7 @@ function onChange({ value }: { value: string | string[] }) {
199
155
  // 这个地方的value返回的是picker数组,实际上在此处我们应该返回 change 的是 value date类型的值
200
156
  emit('change', {
201
157
  value: result,
202
- picker: proxy.$.exposed,
158
+ picker: proxy.$.exposed
203
159
  })
204
160
  }
205
161
 
@@ -216,7 +172,7 @@ function updateColumns(): DatetimePickerViewOption[][] {
216
172
  return column.values.map((value) => {
217
173
  return {
218
174
  label: formatter ? formatter(column.type, padZero(value)) : padZero(value),
219
- value,
175
+ value
220
176
  }
221
177
  })
222
178
  })
@@ -248,7 +204,7 @@ function getOriginColumns() {
248
204
 
249
205
  return {
250
206
  type,
251
- values,
207
+ values
252
208
  }
253
209
  })
254
210
  }
@@ -259,50 +215,58 @@ function getOriginColumns() {
259
215
  */
260
216
  function getRanges(): Array<{ type: DatetimePickerViewColumnType; range: number[] }> {
261
217
  if (props.type === 'time') {
262
- return [
218
+ const result: Array<{ type: DatetimePickerViewColumnType; range: number[] }> = [
263
219
  {
264
220
  type: 'hour',
265
- range: [props.minHour, props.maxHour],
221
+ range: [props.minHour, props.maxHour]
266
222
  },
267
223
  {
268
224
  type: 'minute',
269
- range: [props.minMinute, props.maxMinute],
270
- },
225
+ range: [props.minMinute, props.maxMinute]
226
+ }
271
227
  ]
228
+ if (props.useSecond) {
229
+ result.push({
230
+ type: 'second',
231
+ range: [props.minSecond, props.maxSecond]
232
+ })
233
+ }
234
+ return result
272
235
  }
273
236
 
274
- const { maxYear, maxDate, maxMonth, maxHour, maxMinute } = getBoundary(
275
- 'max',
276
- innerValue.value as number,
277
- )
278
- const { minYear, minDate, minMonth, minHour, minMinute } = getBoundary(
279
- 'min',
280
- innerValue.value as number,
281
- )
237
+ const { maxYear, maxDate, maxMonth, maxHour, maxMinute, maxSecond } = getBoundary('max', innerValue.value as number)
238
+ const { minYear, minDate, minMonth, minHour, minMinute, minSecond } = getBoundary('min', innerValue.value as number)
282
239
 
283
240
  const result: Array<{ type: DatetimePickerViewColumnType; range: number[] }> = [
284
241
  {
285
242
  type: 'year',
286
- range: [minYear, maxYear],
243
+ range: [minYear, maxYear]
287
244
  },
288
245
  {
289
246
  type: 'month',
290
- range: [minMonth, maxMonth],
247
+ range: [minMonth, maxMonth]
291
248
  },
292
249
  {
293
250
  type: 'date',
294
- range: [minDate, maxDate],
251
+ range: [minDate, maxDate]
295
252
  },
296
253
  {
297
254
  type: 'hour',
298
- range: [minHour, maxHour],
255
+ range: [minHour, maxHour]
299
256
  },
300
257
  {
301
258
  type: 'minute',
302
- range: [minMinute, maxMinute],
303
- },
259
+ range: [minMinute, maxMinute]
260
+ }
304
261
  ]
305
262
 
263
+ if (props.type === 'datetime' && props.useSecond) {
264
+ result.push({
265
+ type: 'second',
266
+ range: [minSecond, maxSecond]
267
+ })
268
+ }
269
+
306
270
  if (props.type === 'date') result.splice(3, 2)
307
271
  if (props.type === 'year-month') result.splice(2, 3)
308
272
  if (props.type === 'year') result.splice(1, 4)
@@ -321,15 +285,19 @@ function correctValue(value: string | number | Date): string | number {
321
285
  value = props.minDate
322
286
  } else if (!isDateType && !value) {
323
287
  // 非Date类型,无入参,使用最小小时代替
324
- value = `${padZero(props.minHour)}:00`
288
+ value = props.useSecond ? `${padZero(props.minHour)}:00:00` : `${padZero(props.minHour)}:00`
325
289
  }
326
290
 
327
291
  // 当type为time时
328
292
  if (!isDateType) {
329
293
  // 非Date类型,直接走此逻辑
330
- let [hour, minute] = (value as string).split(':')
294
+ let [hour, minute, second = '00'] = (isString(value) ? value : value.toString()).split(':')
331
295
  hour = padZero(range(Number(hour), props.minHour, props.maxHour))
332
296
  minute = padZero(range(Number(minute), props.minMinute, props.maxMinute))
297
+ if (props.useSecond) {
298
+ second = padZero(range(Number(second), props.minSecond, props.maxSecond))
299
+ return `${hour}:${minute}:${second}`
300
+ }
333
301
  return `${hour}:${minute}`
334
302
  }
335
303
 
@@ -352,12 +320,14 @@ function getBoundary(type: 'min' | 'max', innerValue: number) {
352
320
  let date: number = 1
353
321
  let hour: number = 0
354
322
  let minute: number = 0
323
+ let second: number = 0
355
324
 
356
325
  if (type === 'max') {
357
326
  month = 12
358
327
  date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1)
359
328
  hour = 23
360
329
  minute = 59
330
+ second = 59
361
331
  }
362
332
 
363
333
  if (value.getFullYear() === year) {
@@ -368,6 +338,9 @@ function getBoundary(type: 'min' | 'max', innerValue: number) {
368
338
  hour = boundary.getHours()
369
339
  if (value.getHours() === hour) {
370
340
  minute = boundary.getMinutes()
341
+ if (value.getMinutes() === minute) {
342
+ second = boundary.getSeconds()
343
+ }
371
344
  }
372
345
  }
373
346
  }
@@ -378,6 +351,7 @@ function getBoundary(type: 'min' | 'max', innerValue: number) {
378
351
  [`${type}Date`]: date,
379
352
  [`${type}Hour`]: hour,
380
353
  [`${type}Minute`]: minute,
354
+ [`${type}Second`]: second
381
355
  }
382
356
  }
383
357
 
@@ -387,13 +361,13 @@ function getBoundary(type: 'min' | 'max', innerValue: number) {
387
361
  * @return {Array}
388
362
  */
389
363
  function updateColumnValue(value: string | number) {
390
- const values = getPickerValue(value, props.type)
364
+ const values = getPickerValue(value, props.type, props.useSecond)
391
365
  // 更新pickerView的value,columns
392
366
  if (props.modelValue !== value) {
393
367
  emit('update:modelValue', value)
394
368
  emit('change', {
395
369
  value,
396
- picker: proxy.$.exposed,
370
+ picker: proxy.$.exposed
397
371
  })
398
372
  }
399
373
  innerValue.value = value
@@ -406,13 +380,17 @@ function updateColumnValue(value: string | number) {
406
380
  * @return {date} innerValue
407
381
  */
408
382
  function updateInnerValue() {
409
- const { type } = props
383
+ const { type, useSecond } = props
410
384
  let innerValue: string | number = ''
411
385
  const pickerVal = datePickerview.value?.getValues() || []
412
386
  const values = isArray(pickerVal) ? pickerVal : [pickerVal]
413
387
 
414
388
  if (type === 'time') {
415
- innerValue = `${padZero(values[0])}:${padZero(values[1])}`
389
+ if (useSecond) {
390
+ innerValue = `${padZero(values[0])}:${padZero(values[1])}:${padZero(values[2])}`
391
+ } else {
392
+ innerValue = `${padZero(values[0])}:${padZero(values[1])}`
393
+ }
416
394
  return innerValue
417
395
  }
418
396
 
@@ -427,21 +405,22 @@ function updateInnerValue() {
427
405
  // 处理 date 日期 索引位2
428
406
  let date: string | number = 1
429
407
  if (type !== 'year-month' && type !== 'year') {
430
- date =
431
- (Number(values[2]) && parseInt(String(values[2]))) > maxDate
432
- ? maxDate
433
- : values[2] && parseInt(String(values[2]))
408
+ date = (Number(values[2]) && parseInt(String(values[2]))) > maxDate ? maxDate : values[2] && parseInt(String(values[2]))
434
409
  }
435
410
 
436
- // 处理 时分 索引位3,4
411
+ // 处理 时分秒 索引位3,4,5
437
412
  let hour = 0
438
413
  let minute = 0
414
+ let second = 0
439
415
 
440
416
  if (type === 'datetime') {
441
417
  hour = Number(values[3]) && parseInt(values[3])
442
418
  minute = Number(values[4]) && parseInt(values[4])
419
+ if (useSecond) {
420
+ second = Number(values[5]) && parseInt(values[5])
421
+ }
443
422
  }
444
- const value = new Date(Number(year), Number(month) - 1, Number(date), hour, minute).getTime()
423
+ const value = new Date(Number(year), Number(month) - 1, Number(date), hour, minute, second).getTime()
445
424
 
446
425
  innerValue = correctValue(value)
447
426
  return innerValue
@@ -464,16 +443,20 @@ function columnChange(picker: PickerViewInstance) {
464
443
  date = date > maxDate ? maxDate : date
465
444
  let hour: number = 0
466
445
  let minute: number = 0
446
+ let second: number = 0
467
447
  if (props.type === 'datetime') {
468
448
  hour = Number(values[3])
469
449
  minute = Number(values[4])
450
+ if (props.useSecond) {
451
+ second = Number(values[5])
452
+ }
470
453
  }
471
- const value = new Date(year, month - 1, date, hour, minute).getTime()
454
+ const value = new Date(year, month - 1, date, hour, minute, second).getTime()
472
455
  /** 根据计算选中项的时间戳,重新计算所有的选项列表 */
473
456
  // 更新选中时间戳
474
457
  innerValue.value = correctValue(value)
475
- // 根据innerValue获取最新的时间表,重新生成对应的数据源
476
458
 
459
+ // 根据innerValue获取最新的时间表,重新生成对应的数据源
477
460
  const newColumns = updateColumns()
478
461
  // 深拷贝联动之前的选中项
479
462
  const selectedIndex = picker.getSelectedIndex().slice(0)
@@ -488,9 +471,7 @@ function columnChange(picker: PickerViewInstance) {
488
471
  picker.setColumnData(
489
472
  nextColumnIndex,
490
473
  nextColumnData,
491
- selectedIndex[nextColumnIndex] <= nextColumnData.length - 1
492
- ? selectedIndex[nextColumnIndex]
493
- : 0,
474
+ selectedIndex[nextColumnIndex] <= nextColumnData.length - 1 ? selectedIndex[nextColumnIndex] : 0
494
475
  )
495
476
  })
496
477
  }
@@ -507,8 +488,12 @@ function getSelects() {
507
488
  if (isArray(pickerVal)) return pickerVal
508
489
  return [pickerVal]
509
490
  }
510
- </script>
511
491
 
512
- <style lang="scss" scoped>
513
- @import './index';
514
- </style>
492
+ defineExpose<DatetimePickerViewExpose>({
493
+ updateColumns,
494
+ setColumns,
495
+ getSelects,
496
+ correctValue,
497
+ getOriginColumns
498
+ })
499
+ </script>
@@ -14,19 +14,87 @@
14
14
  @include b(divider) {
15
15
  position: relative;
16
16
  display: flex;
17
- align-items: center;
18
17
  padding: $-divider-padding;
19
- font-size: $-divider-fs;
18
+ margin: $-divider-margin;
19
+ align-items: center;
20
20
  color: $-divider-color;
21
+ font-size: $-divider-fs;
21
22
 
22
- @include e(line) {
23
- display: block;
23
+ &::after,
24
+ &::before {
24
25
  flex: 1;
25
- height: 1px;
26
- background: $-divider-line-color;
27
- transform: scaleY(0.5);
26
+ display: block;
27
+ box-sizing: border-box;
28
+ border-style: solid;
29
+ border-color: $-divider-line-color;
30
+ border-width: $-divider-line-height 0 0;
28
31
  }
29
- @include e(content) {
30
- padding: 0 12px;
32
+
33
+ &::before {
34
+ content: '';
31
35
  }
32
- }
36
+
37
+ @include m(center, left, right) {
38
+ &::after {
39
+ content: '';
40
+ margin-left: $-divider-content-left-margin;
41
+ }
42
+
43
+ &::before {
44
+ margin-right: $-divider-content-right-margin;
45
+ }
46
+ }
47
+
48
+ @include m(left) {
49
+ &::before {
50
+ max-width: $-divider-content-left-width;
51
+ }
52
+ }
53
+
54
+ @include m(right) {
55
+ &::after {
56
+ max-width: $-divider-content-right-width;
57
+ }
58
+ }
59
+
60
+ @include when(hairline) {
61
+
62
+ &::before,
63
+ &::after {
64
+ transform: scaleY(0.5);
65
+ }
66
+ }
67
+
68
+ @include when(dashed) {
69
+
70
+ &::before,
71
+ &::after {
72
+ border-style: dashed;
73
+ }
74
+ }
75
+
76
+ @include m(vertical) {
77
+ display: inline-block;
78
+ width: $-divider-vertical-line-width;
79
+ height: $-divider-vertical-height;
80
+ margin: $-divider-vertical-content-margin;
81
+ padding: 0;
82
+ vertical-align: middle;
83
+
84
+ &::before {
85
+ height: 100%;
86
+ border-width: 0 0 0 $-divider-vertical-line-width;
87
+ }
88
+
89
+ &::after {
90
+ display: none;
91
+ }
92
+
93
+ @include when(hairline) {
94
+ &::before {
95
+ transform: scaleX(0.5);
96
+ }
97
+ }
98
+ }
99
+
100
+ }