@tuya-miniapp/smart-ui 2.6.4-beta-7 → 2.6.4-beta-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 (629) hide show
  1. package/dist/calendar/calendar.wxml +1 -1
  2. package/dist/common/style/clearfix.css +1 -0
  3. package/dist/common/style/clearfix.wxss +1 -0
  4. package/dist/common/style/ellipsis.css +1 -0
  5. package/dist/common/style/ellipsis.wxss +1 -0
  6. package/dist/common/style/hairline.css +1 -0
  7. package/dist/common/style/hairline.wxss +1 -0
  8. package/dist/common/style/mixins/clearfix.css +0 -0
  9. package/dist/common/style/mixins/clearfix.wxss +0 -0
  10. package/dist/common/style/mixins/ellipsis.css +0 -0
  11. package/dist/common/style/mixins/ellipsis.wxss +0 -0
  12. package/dist/common/style/mixins/hairline.css +1 -0
  13. package/dist/common/style/mixins/hairline.wxss +1 -0
  14. package/dist/common/style/var.css +1 -0
  15. package/dist/common/style/var.wxss +1 -0
  16. package/dist/datetime-picker/index.js +2 -2
  17. package/dist/image/index.js +1 -1
  18. package/dist/loading/index.css +1 -1
  19. package/dist/loading/index.js +5 -5
  20. package/dist/loading/index.wxs +5 -5
  21. package/dist/loading/index.wxss +1 -1
  22. package/dist/picker/index.css +1 -1
  23. package/dist/picker/index.js +11 -4
  24. package/dist/picker/index.wxml +4 -3
  25. package/dist/picker/index.wxs +1 -1
  26. package/dist/picker/index.wxss +1 -1
  27. package/dist/picker/shared.d.ts +11 -0
  28. package/dist/picker/shared.js +11 -0
  29. package/dist/picker-column/index.css +1 -1
  30. package/dist/picker-column/index.js +202 -266
  31. package/dist/picker-column/index.wxml +41 -24
  32. package/dist/picker-column/index.wxs +581 -43
  33. package/dist/picker-column/index.wxss +1 -1
  34. package/dist/popup/index.css +1 -0
  35. package/dist/popup/index.wxss +1 -0
  36. package/dist/rate/index.css +1 -0
  37. package/dist/rate/index.wxss +1 -0
  38. package/dist/row/index.css +1 -0
  39. package/dist/row/index.wxss +1 -0
  40. package/dist/search/index.css +1 -0
  41. package/dist/search/index.wxss +1 -0
  42. package/dist/sidebar/index.css +1 -0
  43. package/dist/sidebar/index.wxss +1 -0
  44. package/dist/sidebar-item/index.css +1 -0
  45. package/dist/sidebar-item/index.wxss +1 -0
  46. package/dist/skeleton/index.css +1 -0
  47. package/dist/skeleton/index.wxss +1 -0
  48. package/dist/slider/index.css +1 -0
  49. package/dist/slider/index.wxss +1 -0
  50. package/dist/stepper/index.css +1 -0
  51. package/dist/stepper/index.wxss +1 -0
  52. package/dist/steps/index.css +1 -0
  53. package/dist/steps/index.wxss +1 -0
  54. package/dist/sticky/index.css +1 -0
  55. package/dist/sticky/index.wxss +1 -0
  56. package/dist/swipe-cell/index.css +1 -0
  57. package/dist/swipe-cell/index.wxss +1 -0
  58. package/dist/switch/index.css +1 -0
  59. package/dist/switch/index.wxss +1 -0
  60. package/dist/tab/index.css +1 -0
  61. package/dist/tab/index.wxss +1 -0
  62. package/dist/tabbar/index.css +1 -0
  63. package/dist/tabbar/index.wxss +1 -0
  64. package/dist/tabbar-item/index.css +1 -0
  65. package/dist/tabbar-item/index.wxss +1 -0
  66. package/dist/tabs/index.css +1 -0
  67. package/dist/tabs/index.wxss +1 -0
  68. package/dist/tag/index.css +1 -0
  69. package/dist/tag/index.wxss +1 -0
  70. package/dist/toast/index.css +1 -0
  71. package/dist/toast/index.wxss +1 -0
  72. package/dist/transition/index.css +1 -0
  73. package/dist/transition/index.wxss +1 -0
  74. package/dist/tree-select/index.css +1 -0
  75. package/dist/tree-select/index.wxss +1 -0
  76. package/dist/wxs/utils.wxs +42 -1
  77. package/lib/action-sheet/index.css +1 -0
  78. package/lib/action-sheet/index.d.ts +1 -0
  79. package/lib/action-sheet/index.js +121 -0
  80. package/lib/action-sheet/index.json +8 -0
  81. package/lib/action-sheet/index.wxml +87 -0
  82. package/lib/action-sheet/index.wxss +1 -0
  83. package/lib/area/index.css +1 -0
  84. package/lib/area/index.d.ts +1 -0
  85. package/lib/area/index.js +234 -0
  86. package/lib/area/index.json +6 -0
  87. package/lib/area/index.wxml +20 -0
  88. package/lib/area/index.wxs +8 -0
  89. package/lib/area/index.wxss +1 -0
  90. package/lib/battery/index.d.ts +1 -0
  91. package/lib/battery/index.js +105 -0
  92. package/lib/battery/index.json +4 -0
  93. package/lib/battery/index.wxml +1 -0
  94. package/lib/bottom-sheet/index.css +1 -0
  95. package/lib/bottom-sheet/index.d.ts +1 -0
  96. package/lib/bottom-sheet/index.js +82 -0
  97. package/lib/bottom-sheet/index.json +8 -0
  98. package/lib/bottom-sheet/index.wxml +43 -0
  99. package/lib/bottom-sheet/index.wxs +12 -0
  100. package/lib/bottom-sheet/index.wxss +1 -0
  101. package/lib/button/index.css +1 -0
  102. package/lib/button/index.d.ts +1 -0
  103. package/lib/button/index.js +64 -0
  104. package/lib/button/index.json +7 -0
  105. package/lib/button/index.wxml +64 -0
  106. package/lib/button/index.wxs +39 -0
  107. package/lib/button/index.wxss +1 -0
  108. package/lib/calendar/calendar.wxml +84 -0
  109. package/lib/calendar/index.css +1 -0
  110. package/lib/calendar/index.d.ts +1 -0
  111. package/lib/calendar/index.js +465 -0
  112. package/lib/calendar/index.json +12 -0
  113. package/lib/calendar/index.wxml +25 -0
  114. package/lib/calendar/index.wxs +59 -0
  115. package/lib/calendar/index.wxss +1 -0
  116. package/lib/calendar-header/index.css +1 -0
  117. package/lib/calendar-header/index.d.ts +1 -0
  118. package/lib/calendar-header/index.js +75 -0
  119. package/lib/calendar-header/index.json +6 -0
  120. package/lib/calendar-header/index.wxml +27 -0
  121. package/lib/calendar-header/index.wxss +1 -0
  122. package/lib/calendar-month/index.css +1 -0
  123. package/lib/calendar-month/index.d.ts +1 -0
  124. package/lib/calendar-month/index.js +179 -0
  125. package/lib/calendar-month/index.json +3 -0
  126. package/lib/calendar-month/index.wxml +22 -0
  127. package/lib/calendar-month/index.wxs +73 -0
  128. package/lib/calendar-month/index.wxss +1 -0
  129. package/lib/calendar-month-list/index.css +1 -0
  130. package/lib/calendar-month-list/index.d.ts +1 -0
  131. package/lib/calendar-month-list/index.js +105 -0
  132. package/lib/calendar-month-list/index.json +7 -0
  133. package/lib/calendar-month-list/index.wxml +15 -0
  134. package/lib/calendar-month-list/index.wxss +1 -0
  135. package/lib/calendar-utils/types.d.ts +7 -0
  136. package/lib/calendar-utils/types.js +2 -0
  137. package/lib/calendar-utils/utils.d.ts +21 -0
  138. package/lib/calendar-utils/utils.js +175 -0
  139. package/lib/calendar-utils/utils.wxs +25 -0
  140. package/lib/calendar-year-list/index.css +1 -0
  141. package/lib/calendar-year-list/index.d.ts +1 -0
  142. package/lib/calendar-year-list/index.js +115 -0
  143. package/lib/calendar-year-list/index.json +7 -0
  144. package/lib/calendar-year-list/index.wxml +15 -0
  145. package/lib/calendar-year-list/index.wxss +1 -0
  146. package/lib/cascader/index.css +1 -0
  147. package/lib/cascader/index.d.ts +1 -0
  148. package/lib/cascader/index.js +207 -0
  149. package/lib/cascader/index.json +8 -0
  150. package/lib/cascader/index.wxml +56 -0
  151. package/lib/cascader/index.wxs +21 -0
  152. package/lib/cascader/index.wxss +1 -0
  153. package/lib/cell/index.css +1 -0
  154. package/lib/cell/index.d.ts +1 -0
  155. package/lib/cell/index.js +48 -0
  156. package/lib/cell/index.json +6 -0
  157. package/lib/cell/index.wxml +47 -0
  158. package/lib/cell/index.wxs +17 -0
  159. package/lib/cell/index.wxss +1 -0
  160. package/lib/cell-group/index.css +1 -0
  161. package/lib/cell-group/index.d.ts +1 -0
  162. package/lib/cell-group/index.js +14 -0
  163. package/lib/cell-group/index.json +3 -0
  164. package/lib/cell-group/index.wxml +15 -0
  165. package/lib/cell-group/index.wxs +14 -0
  166. package/lib/cell-group/index.wxss +1 -0
  167. package/lib/checkbox/index.css +1 -0
  168. package/lib/checkbox/index.d.ts +1 -0
  169. package/lib/checkbox/index.js +84 -0
  170. package/lib/checkbox/index.json +6 -0
  171. package/lib/checkbox/index.wxml +32 -0
  172. package/lib/checkbox/index.wxs +20 -0
  173. package/lib/checkbox/index.wxss +1 -0
  174. package/lib/checkbox-group/index.css +1 -0
  175. package/lib/checkbox-group/index.d.ts +1 -0
  176. package/lib/checkbox-group/index.js +39 -0
  177. package/lib/checkbox-group/index.json +3 -0
  178. package/lib/checkbox-group/index.wxml +5 -0
  179. package/lib/checkbox-group/index.wxss +1 -0
  180. package/lib/circle/index.css +1 -0
  181. package/lib/circle/index.d.ts +1 -0
  182. package/lib/circle/index.js +134 -0
  183. package/lib/circle/index.json +3 -0
  184. package/lib/circle/index.rjs +232 -0
  185. package/lib/circle/index.wxml +8 -0
  186. package/lib/circle/index.wxss +1 -0
  187. package/lib/col/index.css +1 -0
  188. package/lib/col/index.d.ts +1 -0
  189. package/lib/col/index.js +11 -0
  190. package/lib/col/index.json +3 -0
  191. package/lib/col/index.wxml +9 -0
  192. package/lib/col/index.wxs +18 -0
  193. package/lib/col/index.wxss +1 -0
  194. package/lib/collapse/index.css +1 -0
  195. package/lib/collapse/index.d.ts +1 -0
  196. package/lib/collapse/index.js +48 -0
  197. package/lib/collapse/index.json +3 -0
  198. package/lib/collapse/index.wxml +3 -0
  199. package/lib/collapse/index.wxss +1 -0
  200. package/lib/collapse-item/animate.d.ts +2 -0
  201. package/lib/collapse-item/animate.js +43 -0
  202. package/lib/collapse-item/index.css +1 -0
  203. package/lib/collapse-item/index.d.ts +1 -0
  204. package/lib/collapse-item/index.js +64 -0
  205. package/lib/collapse-item/index.json +6 -0
  206. package/lib/collapse-item/index.wxml +45 -0
  207. package/lib/collapse-item/index.wxss +1 -0
  208. package/lib/common/appLog.d.ts +10 -0
  209. package/lib/common/appLog.js +112 -0
  210. package/lib/common/color.d.ts +7 -0
  211. package/lib/common/color.js +10 -0
  212. package/lib/common/component.d.ts +4 -0
  213. package/lib/common/component.js +49 -0
  214. package/lib/common/index.css +1 -0
  215. package/lib/common/index.wxss +1 -0
  216. package/lib/common/relation.d.ts +15 -0
  217. package/lib/common/relation.js +65 -0
  218. package/lib/common/style/clearfix.css +1 -0
  219. package/lib/common/style/clearfix.wxss +1 -0
  220. package/lib/common/style/ellipsis.css +1 -0
  221. package/lib/common/style/ellipsis.wxss +1 -0
  222. package/lib/common/style/hairline.css +1 -0
  223. package/lib/common/style/hairline.wxss +1 -0
  224. package/lib/common/style/mixins/clearfix.css +0 -0
  225. package/lib/common/style/mixins/clearfix.wxss +0 -0
  226. package/lib/common/style/mixins/ellipsis.css +0 -0
  227. package/lib/common/style/mixins/ellipsis.wxss +0 -0
  228. package/lib/common/style/mixins/hairline.css +1 -0
  229. package/lib/common/style/mixins/hairline.wxss +1 -0
  230. package/lib/common/style/var.css +1 -0
  231. package/lib/common/style/var.wxss +1 -0
  232. package/lib/common/ty.d.ts +7 -0
  233. package/lib/common/ty.js +35 -0
  234. package/lib/common/utils.d.ts +24 -0
  235. package/lib/common/utils.js +140 -0
  236. package/lib/common/validator.d.ts +9 -0
  237. package/lib/common/validator.js +43 -0
  238. package/lib/common/version.d.ts +15 -0
  239. package/lib/common/version.js +70 -0
  240. package/lib/config-provider/index.d.ts +1 -0
  241. package/lib/config-provider/index.js +11 -0
  242. package/lib/config-provider/index.json +3 -0
  243. package/lib/config-provider/index.wxml +5 -0
  244. package/lib/config-provider/index.wxs +29 -0
  245. package/lib/count-down/index.css +1 -0
  246. package/lib/count-down/index.d.ts +1 -0
  247. package/lib/count-down/index.js +104 -0
  248. package/lib/count-down/index.json +3 -0
  249. package/lib/count-down/index.wxml +4 -0
  250. package/lib/count-down/index.wxss +1 -0
  251. package/lib/count-down/utils.d.ts +10 -0
  252. package/lib/count-down/utils.js +64 -0
  253. package/lib/custom-keyboard/index.css +1 -0
  254. package/lib/custom-keyboard/index.d.ts +1 -0
  255. package/lib/custom-keyboard/index.js +156 -0
  256. package/lib/custom-keyboard/index.json +9 -0
  257. package/lib/custom-keyboard/index.wxml +44 -0
  258. package/lib/custom-keyboard/index.wxss +1 -0
  259. package/lib/datetime-picker/index.css +1 -0
  260. package/lib/datetime-picker/index.d.ts +1 -0
  261. package/lib/datetime-picker/index.js +512 -0
  262. package/lib/datetime-picker/index.json +6 -0
  263. package/lib/datetime-picker/index.wxml +22 -0
  264. package/lib/datetime-picker/index.wxss +1 -0
  265. package/lib/definitions/index.d.ts +29 -0
  266. package/lib/definitions/index.js +2 -0
  267. package/lib/dialog/dialog.d.ts +74 -0
  268. package/lib/dialog/dialog.js +137 -0
  269. package/lib/dialog/index.css +1 -0
  270. package/lib/dialog/index.d.ts +1 -0
  271. package/lib/dialog/index.js +222 -0
  272. package/lib/dialog/index.json +10 -0
  273. package/lib/dialog/index.wxml +144 -0
  274. package/lib/dialog/index.wxss +1 -0
  275. package/lib/divider/index.css +1 -0
  276. package/lib/divider/index.d.ts +1 -0
  277. package/lib/divider/index.js +14 -0
  278. package/lib/divider/index.json +4 -0
  279. package/lib/divider/index.wxml +9 -0
  280. package/lib/divider/index.wxs +18 -0
  281. package/lib/divider/index.wxss +1 -0
  282. package/lib/dropdown-item/index.css +1 -0
  283. package/lib/dropdown-item/index.d.ts +1 -0
  284. package/lib/dropdown-item/index.js +150 -0
  285. package/lib/dropdown-item/index.json +8 -0
  286. package/lib/dropdown-item/index.wxml +52 -0
  287. package/lib/dropdown-item/index.wxss +1 -0
  288. package/lib/dropdown-item/shared.d.ts +5 -0
  289. package/lib/dropdown-item/shared.js +2 -0
  290. package/lib/dropdown-menu/index.css +1 -0
  291. package/lib/dropdown-menu/index.d.ts +1 -0
  292. package/lib/dropdown-menu/index.js +137 -0
  293. package/lib/dropdown-menu/index.json +6 -0
  294. package/lib/dropdown-menu/index.wxml +24 -0
  295. package/lib/dropdown-menu/index.wxs +16 -0
  296. package/lib/dropdown-menu/index.wxss +1 -0
  297. package/lib/empty/index.css +1 -0
  298. package/lib/empty/index.d.ts +1 -0
  299. package/lib/empty/index.js +31 -0
  300. package/lib/empty/index.json +4 -0
  301. package/lib/empty/index.wxml +22 -0
  302. package/lib/empty/index.wxs +13 -0
  303. package/lib/empty/index.wxss +1 -0
  304. package/lib/field/cell-input.wxml +59 -0
  305. package/lib/field/cell-textarea.wxml +28 -0
  306. package/lib/field/index.css +1 -0
  307. package/lib/field/index.d.ts +1 -0
  308. package/lib/field/index.js +158 -0
  309. package/lib/field/index.json +7 -0
  310. package/lib/field/index.wxml +4 -0
  311. package/lib/field/index.wxs +19 -0
  312. package/lib/field/index.wxss +1 -0
  313. package/lib/field/input.wxml +30 -0
  314. package/lib/field/props.d.ts +4 -0
  315. package/lib/field/props.js +59 -0
  316. package/lib/field/textarea.wxml +32 -0
  317. package/lib/field/types.d.ts +8 -0
  318. package/lib/field/types.js +2 -0
  319. package/lib/goods-action/index.css +1 -0
  320. package/lib/goods-action/index.d.ts +1 -0
  321. package/lib/goods-action/index.js +17 -0
  322. package/lib/goods-action/index.json +3 -0
  323. package/lib/goods-action/index.wxml +5 -0
  324. package/lib/goods-action/index.wxss +1 -0
  325. package/lib/goods-action-button/index.css +1 -0
  326. package/lib/goods-action-button/index.d.ts +1 -0
  327. package/lib/goods-action-button/index.js +46 -0
  328. package/lib/goods-action-button/index.json +6 -0
  329. package/lib/goods-action-button/index.wxml +35 -0
  330. package/lib/goods-action-button/index.wxss +1 -0
  331. package/lib/goods-action-icon/index.css +1 -0
  332. package/lib/goods-action-icon/index.d.ts +1 -0
  333. package/lib/goods-action-icon/index.js +29 -0
  334. package/lib/goods-action-icon/index.json +7 -0
  335. package/lib/goods-action-icon/index.wxml +41 -0
  336. package/lib/goods-action-icon/index.wxss +1 -0
  337. package/lib/grid/index.css +1 -0
  338. package/lib/grid/index.d.ts +1 -0
  339. package/lib/grid/index.js +57 -0
  340. package/lib/grid/index.json +3 -0
  341. package/lib/grid/index.wxml +8 -0
  342. package/lib/grid/index.wxs +13 -0
  343. package/lib/grid/index.wxss +1 -0
  344. package/lib/grid-item/index.css +1 -0
  345. package/lib/grid-item/index.d.ts +1 -0
  346. package/lib/grid-item/index.js +54 -0
  347. package/lib/grid-item/index.json +6 -0
  348. package/lib/grid-item/index.wxml +27 -0
  349. package/lib/grid-item/index.wxs +32 -0
  350. package/lib/grid-item/index.wxss +1 -0
  351. package/lib/icon/index.css +1 -0
  352. package/lib/icon/index.d.ts +1 -0
  353. package/lib/icon/index.js +23 -0
  354. package/lib/icon/index.json +6 -0
  355. package/lib/icon/index.wxml +30 -0
  356. package/lib/icon/index.wxs +98 -0
  357. package/lib/icon/index.wxss +1 -0
  358. package/lib/image/index.css +1 -0
  359. package/lib/image/index.d.ts +1 -0
  360. package/lib/image/index.js +75 -0
  361. package/lib/image/index.json +7 -0
  362. package/lib/image/index.wxml +40 -0
  363. package/lib/image/index.wxs +42 -0
  364. package/lib/image/index.wxss +1 -0
  365. package/lib/index-anchor/index.css +1 -0
  366. package/lib/index-anchor/index.d.ts +1 -0
  367. package/lib/index-anchor/index.js +28 -0
  368. package/lib/index-anchor/index.json +3 -0
  369. package/lib/index-anchor/index.wxml +14 -0
  370. package/lib/index-anchor/index.wxss +1 -0
  371. package/lib/index-bar/index.css +1 -0
  372. package/lib/index-bar/index.d.ts +1 -0
  373. package/lib/index-bar/index.js +244 -0
  374. package/lib/index-bar/index.json +3 -0
  375. package/lib/index-bar/index.wxml +22 -0
  376. package/lib/index-bar/index.wxss +1 -0
  377. package/lib/info/index.css +1 -0
  378. package/lib/info/index.d.ts +1 -0
  379. package/lib/info/index.js +10 -0
  380. package/lib/info/index.json +3 -0
  381. package/lib/info/index.wxml +7 -0
  382. package/lib/info/index.wxss +1 -0
  383. package/lib/loading/index.css +1 -0
  384. package/lib/loading/index.d.ts +1 -0
  385. package/lib/loading/index.js +44 -0
  386. package/lib/loading/index.json +3 -0
  387. package/lib/loading/index.wxml +17 -0
  388. package/lib/loading/index.wxs +38 -0
  389. package/lib/loading/index.wxss +1 -0
  390. package/lib/mixins/basic.d.ts +1 -0
  391. package/lib/mixins/basic.js +30 -0
  392. package/lib/mixins/button.d.ts +1 -0
  393. package/lib/mixins/button.js +54 -0
  394. package/lib/mixins/link.d.ts +1 -0
  395. package/lib/mixins/link.js +26 -0
  396. package/lib/mixins/page-scroll.d.ts +6 -0
  397. package/lib/mixins/page-scroll.js +47 -0
  398. package/lib/mixins/touch.d.ts +1 -0
  399. package/lib/mixins/touch.js +39 -0
  400. package/lib/mixins/transition.d.ts +1 -0
  401. package/lib/mixins/transition.js +235 -0
  402. package/lib/nav-bar/index.css +1 -0
  403. package/lib/nav-bar/index.d.ts +1 -0
  404. package/lib/nav-bar/index.js +116 -0
  405. package/lib/nav-bar/index.json +6 -0
  406. package/lib/nav-bar/index.wxml +70 -0
  407. package/lib/nav-bar/index.wxs +14 -0
  408. package/lib/nav-bar/index.wxss +1 -0
  409. package/lib/normal-slider/index.css +1 -0
  410. package/lib/normal-slider/index.d.ts +1 -0
  411. package/lib/normal-slider/index.js +160 -0
  412. package/lib/normal-slider/index.json +6 -0
  413. package/lib/normal-slider/index.wxml +35 -0
  414. package/lib/normal-slider/index.wxss +1 -0
  415. package/lib/notice-bar/index.css +1 -0
  416. package/lib/notice-bar/index.d.ts +1 -0
  417. package/lib/notice-bar/index.js +178 -0
  418. package/lib/notice-bar/index.json +6 -0
  419. package/lib/notice-bar/index.wxml +52 -0
  420. package/lib/notice-bar/index.wxs +11 -0
  421. package/lib/notice-bar/index.wxss +1 -0
  422. package/lib/notify/index.css +1 -0
  423. package/lib/notify/index.d.ts +1 -0
  424. package/lib/notify/index.js +80 -0
  425. package/lib/notify/index.json +6 -0
  426. package/lib/notify/index.wxml +22 -0
  427. package/lib/notify/index.wxs +22 -0
  428. package/lib/notify/index.wxss +1 -0
  429. package/lib/notify/notify.d.ts +29 -0
  430. package/lib/notify/notify.js +72 -0
  431. package/lib/overlay/index.css +1 -0
  432. package/lib/overlay/index.d.ts +1 -0
  433. package/lib/overlay/index.js +32 -0
  434. package/lib/overlay/index.json +6 -0
  435. package/lib/overlay/index.wxml +7 -0
  436. package/lib/overlay/index.wxss +1 -0
  437. package/lib/overlay/overlay.wxml +10 -0
  438. package/lib/picker/index.css +1 -0
  439. package/lib/picker/index.d.ts +1 -0
  440. package/lib/picker/index.js +193 -0
  441. package/lib/picker/index.json +7 -0
  442. package/lib/picker/index.wxml +48 -0
  443. package/lib/picker/index.wxs +44 -0
  444. package/lib/picker/index.wxss +1 -0
  445. package/lib/picker/shared.d.ts +44 -0
  446. package/lib/picker/shared.js +47 -0
  447. package/lib/picker/toolbar.wxml +23 -0
  448. package/lib/picker-column/index.css +1 -0
  449. package/lib/picker-column/index.d.ts +1 -0
  450. package/lib/picker-column/index.js +335 -0
  451. package/lib/picker-column/index.json +3 -0
  452. package/lib/picker-column/index.wxml +60 -0
  453. package/lib/picker-column/index.wxs +617 -0
  454. package/lib/picker-column/index.wxss +1 -0
  455. package/lib/popover/index.css +1 -0
  456. package/lib/popover/index.d.ts +1 -0
  457. package/lib/popover/index.js +220 -0
  458. package/lib/popover/index.json +7 -0
  459. package/lib/popover/index.wxml +31 -0
  460. package/lib/popover/index.wxss +1 -0
  461. package/lib/popup/index.css +1 -0
  462. package/lib/popup/index.d.ts +1 -0
  463. package/lib/popup/index.js +122 -0
  464. package/lib/popup/index.json +7 -0
  465. package/lib/popup/index.wxml +21 -0
  466. package/lib/popup/index.wxs +23 -0
  467. package/lib/popup/index.wxss +1 -0
  468. package/lib/popup/popup.wxml +16 -0
  469. package/lib/progress/index.css +1 -0
  470. package/lib/progress/index.d.ts +1 -0
  471. package/lib/progress/index.js +52 -0
  472. package/lib/progress/index.json +3 -0
  473. package/lib/progress/index.wxml +20 -0
  474. package/lib/progress/index.wxs +36 -0
  475. package/lib/progress/index.wxss +1 -0
  476. package/lib/radio/index.css +1 -0
  477. package/lib/radio/index.d.ts +1 -0
  478. package/lib/radio/index.js +75 -0
  479. package/lib/radio/index.json +6 -0
  480. package/lib/radio/index.wxml +32 -0
  481. package/lib/radio/index.wxs +33 -0
  482. package/lib/radio/index.wxss +1 -0
  483. package/lib/radio-group/index.css +1 -0
  484. package/lib/radio-group/index.d.ts +1 -0
  485. package/lib/radio-group/index.js +29 -0
  486. package/lib/radio-group/index.json +3 -0
  487. package/lib/radio-group/index.wxml +5 -0
  488. package/lib/radio-group/index.wxss +1 -0
  489. package/lib/rate/index.css +1 -0
  490. package/lib/rate/index.d.ts +1 -0
  491. package/lib/rate/index.js +107 -0
  492. package/lib/rate/index.json +6 -0
  493. package/lib/rate/index.wxml +35 -0
  494. package/lib/rate/index.wxss +1 -0
  495. package/lib/row/index.css +1 -0
  496. package/lib/row/index.d.ts +1 -0
  497. package/lib/row/index.js +26 -0
  498. package/lib/row/index.json +3 -0
  499. package/lib/row/index.wxml +5 -0
  500. package/lib/row/index.wxs +18 -0
  501. package/lib/row/index.wxss +1 -0
  502. package/lib/search/index.css +1 -0
  503. package/lib/search/index.d.ts +1 -0
  504. package/lib/search/index.js +106 -0
  505. package/lib/search/index.json +7 -0
  506. package/lib/search/index.wxml +57 -0
  507. package/lib/search/index.wxss +1 -0
  508. package/lib/sidebar/index.css +1 -0
  509. package/lib/sidebar/index.d.ts +1 -0
  510. package/lib/sidebar/index.js +36 -0
  511. package/lib/sidebar/index.json +3 -0
  512. package/lib/sidebar/index.wxml +3 -0
  513. package/lib/sidebar/index.wxss +1 -0
  514. package/lib/sidebar-item/index.css +1 -0
  515. package/lib/sidebar-item/index.d.ts +1 -0
  516. package/lib/sidebar-item/index.js +32 -0
  517. package/lib/sidebar-item/index.json +6 -0
  518. package/lib/sidebar-item/index.wxml +18 -0
  519. package/lib/sidebar-item/index.wxss +1 -0
  520. package/lib/skeleton/index.css +1 -0
  521. package/lib/skeleton/index.d.ts +1 -0
  522. package/lib/skeleton/index.js +48 -0
  523. package/lib/skeleton/index.json +4 -0
  524. package/lib/skeleton/index.wxml +29 -0
  525. package/lib/skeleton/index.wxss +1 -0
  526. package/lib/slider/index.css +1 -0
  527. package/lib/slider/index.d.ts +1 -0
  528. package/lib/slider/index.js +208 -0
  529. package/lib/slider/index.json +3 -0
  530. package/lib/slider/index.wxml +68 -0
  531. package/lib/slider/index.wxs +14 -0
  532. package/lib/slider/index.wxss +1 -0
  533. package/lib/stepper/index.css +1 -0
  534. package/lib/stepper/index.d.ts +1 -0
  535. package/lib/stepper/index.js +225 -0
  536. package/lib/stepper/index.json +6 -0
  537. package/lib/stepper/index.wxml +45 -0
  538. package/lib/stepper/index.wxs +32 -0
  539. package/lib/stepper/index.wxss +1 -0
  540. package/lib/steps/index.css +1 -0
  541. package/lib/steps/index.d.ts +1 -0
  542. package/lib/steps/index.js +39 -0
  543. package/lib/steps/index.json +6 -0
  544. package/lib/steps/index.wxml +54 -0
  545. package/lib/steps/index.wxss +1 -0
  546. package/lib/sticky/index.css +1 -0
  547. package/lib/sticky/index.d.ts +1 -0
  548. package/lib/sticky/index.js +128 -0
  549. package/lib/sticky/index.json +3 -0
  550. package/lib/sticky/index.wxml +8 -0
  551. package/lib/sticky/index.wxs +25 -0
  552. package/lib/sticky/index.wxss +1 -0
  553. package/lib/swipe-cell/index.css +1 -0
  554. package/lib/swipe-cell/index.d.ts +1 -0
  555. package/lib/swipe-cell/index.js +142 -0
  556. package/lib/swipe-cell/index.json +3 -0
  557. package/lib/swipe-cell/index.wxml +21 -0
  558. package/lib/swipe-cell/index.wxss +1 -0
  559. package/lib/switch/index.css +1 -0
  560. package/lib/switch/index.d.ts +1 -0
  561. package/lib/switch/index.js +42 -0
  562. package/lib/switch/index.json +6 -0
  563. package/lib/switch/index.wxml +39 -0
  564. package/lib/switch/index.wxs +26 -0
  565. package/lib/switch/index.wxss +1 -0
  566. package/lib/tab/index.css +1 -0
  567. package/lib/tab/index.d.ts +1 -0
  568. package/lib/tab/index.js +66 -0
  569. package/lib/tab/index.json +3 -0
  570. package/lib/tab/index.wxml +8 -0
  571. package/lib/tab/index.wxss +1 -0
  572. package/lib/tabbar/index.css +1 -0
  573. package/lib/tabbar/index.d.ts +1 -0
  574. package/lib/tabbar/index.js +73 -0
  575. package/lib/tabbar/index.json +3 -0
  576. package/lib/tabbar/index.wxml +12 -0
  577. package/lib/tabbar/index.wxss +1 -0
  578. package/lib/tabbar-item/index.css +1 -0
  579. package/lib/tabbar-item/index.d.ts +1 -0
  580. package/lib/tabbar-item/index.js +79 -0
  581. package/lib/tabbar-item/index.json +7 -0
  582. package/lib/tabbar-item/index.wxml +32 -0
  583. package/lib/tabbar-item/index.wxss +1 -0
  584. package/lib/tabs/index.css +1 -0
  585. package/lib/tabs/index.d.ts +1 -0
  586. package/lib/tabs/index.js +329 -0
  587. package/lib/tabs/index.json +7 -0
  588. package/lib/tabs/index.wxml +67 -0
  589. package/lib/tabs/index.wxs +99 -0
  590. package/lib/tabs/index.wxss +1 -0
  591. package/lib/tag/index.css +1 -0
  592. package/lib/tag/index.d.ts +1 -0
  593. package/lib/tag/index.js +34 -0
  594. package/lib/tag/index.json +6 -0
  595. package/lib/tag/index.wxml +17 -0
  596. package/lib/tag/index.wxs +13 -0
  597. package/lib/tag/index.wxss +1 -0
  598. package/lib/toast/icons.d.ts +3 -0
  599. package/lib/toast/icons.js +12 -0
  600. package/lib/toast/index.css +1 -0
  601. package/lib/toast/index.d.ts +1 -0
  602. package/lib/toast/index.js +63 -0
  603. package/lib/toast/index.json +9 -0
  604. package/lib/toast/index.wxml +33 -0
  605. package/lib/toast/index.wxss +1 -0
  606. package/lib/toast/toast.d.ts +35 -0
  607. package/lib/toast/toast.js +116 -0
  608. package/lib/transition/index.css +1 -0
  609. package/lib/transition/index.d.ts +1 -0
  610. package/lib/transition/index.js +15 -0
  611. package/lib/transition/index.json +3 -0
  612. package/lib/transition/index.wxml +9 -0
  613. package/lib/transition/index.wxs +17 -0
  614. package/lib/transition/index.wxss +1 -0
  615. package/lib/tree-select/index.css +1 -0
  616. package/lib/tree-select/index.d.ts +1 -0
  617. package/lib/tree-select/index.js +74 -0
  618. package/lib/tree-select/index.json +8 -0
  619. package/lib/tree-select/index.wxml +41 -0
  620. package/lib/tree-select/index.wxs +12 -0
  621. package/lib/tree-select/index.wxss +1 -0
  622. package/lib/wxs/add-unit.wxs +12 -0
  623. package/lib/wxs/array.wxs +5 -0
  624. package/lib/wxs/bem.wxs +39 -0
  625. package/lib/wxs/memoize.wxs +55 -0
  626. package/lib/wxs/object.wxs +13 -0
  627. package/lib/wxs/style.wxs +46 -0
  628. package/lib/wxs/utils.wxs +51 -0
  629. package/package.json +1 -1
@@ -1,17 +1,14 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { SmartComponent } from '../common/component';
11
2
  import { range } from '../common/utils';
12
3
  import { isObj } from '../common/validator';
13
4
  import ty from '../common/ty';
14
5
  const DEFAULT_DURATION = 400;
6
+ const compIdList = [];
7
+ const getId = () => {
8
+ const id = 'smart-picker-column-' + compIdList.length;
9
+ compIdList.push(id);
10
+ return id;
11
+ };
15
12
  SmartComponent({
16
13
  classes: ['active-class'],
17
14
  props: {
@@ -31,7 +28,7 @@ SmartComponent({
31
28
  if (!this.data.isInit)
32
29
  return;
33
30
  this.updateUint(value);
34
- this.updateVisibleOptions(this.data.currentIndex);
31
+ this.checkIndexUpdateList();
35
32
  },
36
33
  },
37
34
  defaultIndex: {
@@ -40,19 +37,18 @@ SmartComponent({
40
37
  },
41
38
  changeAnimation: {
42
39
  type: Boolean,
43
- value: true,
40
+ value: false,
44
41
  },
45
42
  fontStyle: {
46
43
  type: String,
47
44
  value: '',
48
45
  },
49
46
  activeIndex: {
50
- type: Number,
51
- value: -1,
52
- observer(index) {
47
+ type: null,
48
+ observer() {
53
49
  if (!this.data.isInit)
54
50
  return;
55
- this.setIndex(index, false, this.data.changeAnimation, this.data.animationTime);
51
+ this.checkIndexUpdateList();
56
52
  },
57
53
  },
58
54
  unit: {
@@ -63,172 +59,80 @@ SmartComponent({
63
59
  type: Number,
64
60
  value: 300,
65
61
  },
62
+ loop: {
63
+ type: Boolean,
64
+ value: false,
65
+ },
66
66
  },
67
67
  data: {
68
- startY: 0,
69
- offset: 0,
70
- duration: 0,
71
- startOffset: 0,
72
- optionsV: [],
73
- currentIndex: -1,
74
- renderNum: 0,
75
- renderStart: 0,
76
- animate: false,
77
- playing: false,
78
68
  isInit: false,
79
69
  maxText: '',
80
- timer: null,
81
- preOffsetList: [],
70
+ optionsVIndexList: [],
71
+ offsetActiveIndex: 0,
72
+ endTimer: null,
73
+ offsetList: [],
74
+ moving: false,
75
+ movingDirection: 'down',
76
+ startY: 0,
77
+ offsetting: 0,
78
+ animationIndex: 0,
79
+ isDestroy: false,
82
80
  },
83
81
  created() {
84
- const { defaultIndex, activeIndex, options } = this.data;
85
- this.updateUint(options);
86
- this.setIndex(activeIndex !== -1 ? activeIndex : defaultIndex, false, this.data.changeAnimation, this.data.animationTime);
82
+ this.setData({
83
+ instanceId: getId(),
84
+ });
85
+ this.updateUint(this.data.options);
86
+ this.checkIndexUpdateList();
87
87
  this.setData({
88
88
  isInit: true,
89
89
  });
90
90
  },
91
+ destroyed() {
92
+ this.setData({
93
+ isDestroy: true,
94
+ });
95
+ },
91
96
  methods: {
92
- getCount() {
93
- return this.data.options.length;
94
- },
95
- onTouchStart(event) {
96
- if (this.data.disabled) {
97
- return;
98
- }
99
- if (this.data.timer) {
100
- clearTimeout(this.data.timer);
101
- this.setData({
102
- timer: null,
103
- });
104
- }
105
- if (!this.data.playing) {
106
- this.$emit('animation-start');
107
- }
108
- this.setData({
109
- startY: event.touches[0].clientY,
110
- startOffset: this.data.offset,
111
- duration: 100,
112
- playing: true,
113
- timer: null,
114
- preOffsetList: [this.data.offset],
115
- });
116
- },
117
- onTouchMove(event) {
118
- if (this.data.disabled) {
119
- return;
120
- }
121
- const { data } = this;
122
- const { preOffsetList } = data;
123
- const deltaY = event.touches[0].clientY - data.startY;
124
- const offset = range(data.startOffset + deltaY, -(this.getCount() * data.itemHeight), data.itemHeight);
125
- const direction = this.checkIsDown(offset);
126
- // 上一次滚动的索引
127
- const preIndex = range(Math.round(-preOffsetList[preOffsetList.length - 1] / data.itemHeight), 0, this.getCount() - 1);
128
- // 最终定位索引
129
- const index = range(Math.round(-offset / data.itemHeight), 0, this.getCount() - 1);
130
- if ((direction === 'up' && index < data.renderStart + 8) ||
131
- (direction === 'down' && index > data.renderStart + data.renderNum - 8)) {
132
- this.updateVisibleOptions(index);
133
- }
134
- // 索引变化时 粗发震动反馈
135
- if (index !== preIndex) {
136
- // @ts-ignore
137
- this.vibrateShort();
97
+ checkIndexUpdateList() {
98
+ const { activeIndex, defaultIndex } = this.data;
99
+ const count = this.data.options.length;
100
+ const currIndex = activeIndex !== null ? activeIndex : defaultIndex;
101
+ let animationIndex = this.getAnimationIndex(currIndex);
102
+ animationIndex = this.adjustIndex(animationIndex);
103
+ let currActiveIndex = this.data.loop ? ((animationIndex + 1) % count) - 1 : animationIndex;
104
+ if (currActiveIndex < 0) {
105
+ currActiveIndex += count;
138
106
  }
139
- const animationIndex = Math.abs(-offset / data.itemHeight);
107
+ const optionsVIndexList = this.getVisibleOptions(animationIndex);
140
108
  this.setData({
141
- offset,
109
+ activeIndex: currActiveIndex,
142
110
  animationIndex: animationIndex,
143
- preOffsetList: [...data.preOffsetList, offset],
144
- animate: false,
111
+ optionsVIndexList: optionsVIndexList,
145
112
  });
113
+ // if (currActiveIndex !== activeIndex) {
114
+ // this.$emit('change', currActiveIndex);
115
+ // }
146
116
  },
147
- onTouchEnd() {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- const { data } = this;
150
- if (data.disabled) {
151
- return;
152
- }
153
- const { preOffsetList } = data;
154
- let preOffset = Math.max(Math.abs(preOffsetList[preOffsetList.length - 3] - preOffsetList[preOffsetList.length - 4]), Math.abs(preOffsetList[preOffsetList.length - 2] - preOffsetList[preOffsetList.length - 3]), Math.abs(preOffsetList[preOffsetList.length - 1] - preOffsetList[preOffsetList.length - 2]));
155
- if (isNaN(preOffset))
156
- preOffset = 0;
157
- preOffset = Math.min(preOffset, 40);
158
- // 三次同样的距离 说明用户一直在顶部或者底部滑动 或在move途中已经是上下边缘了
159
- const isSameTouch = (preOffsetList[preOffsetList.length - 1] === preOffsetList[preOffsetList.length - 2] &&
160
- preOffsetList[preOffsetList.length - 2] === preOffsetList[preOffsetList.length - 3]) ||
161
- preOffsetList[preOffsetList.length - 1] === -(this.getCount() * data.itemHeight) ||
162
- preOffsetList[preOffsetList.length - 1] === data.itemHeight;
163
- // 是否是向下滚动
164
- const direction = this.checkIsDown();
165
- // 当滚动速度比较慢时(<3) 不增加惯性滚动距离
166
- const offset = Math.abs(preOffset) < 3 || isSameTouch || !direction
167
- ? data.offset
168
- : data.offset + (direction === 'down' ? -preOffset : preOffset) * 10;
169
- // 有数字的最大滚动距离
170
- const countHeight = (this.getCount() - 1) * data.itemHeight;
171
- // 动画最大滚动距离 上下各加一个 data.itemHeight 的滚动空间
172
- const animationOffset = range(offset, -(this.getCount() * data.itemHeight), data.itemHeight);
173
- // 最终定位滚动位置
174
- const finOffset = animationOffset < -countHeight ? -countHeight : animationOffset > 0 ? 0 : animationOffset;
175
- // 获取索引
176
- const index = range(Math.round(-finOffset / data.itemHeight), 0, this.getCount() - 1);
177
- // 获取索引的标准距离
178
- const offsetData = -index * data.itemHeight;
179
- // 增加惯性音效
180
- if (Math.abs(offsetData - data.offset) > data.itemHeight && !isSameTouch) {
181
- const countVibrate = Math.abs(offsetData - data.offset) / data.itemHeight;
182
- // @ts-ignore
183
- this.vibrateShort(Math.floor(countVibrate), data.animationTime);
184
- }
185
- // 最终定位索引
186
- this.setData({
187
- duration: isSameTouch ? 150 : data.animationTime,
188
- animationIndex: index,
189
- offset: offsetData,
190
- animate: true,
191
- });
192
- // 更新列表
193
- if ((direction === 'up' && index < data.renderStart + 8) ||
194
- (direction === 'down' && index > data.renderStart + data.renderNum - 8)) {
195
- yield this.updateVisibleOptions(index);
196
- }
197
- // 更新索引
198
- if (index !== data.currentIndex) {
199
- const time = isSameTouch ? 150 : data.animationTime;
200
- // if (!isSameTouch) {
201
- // this.timer = setInterval(() => {
202
- // if (Math.abs(this.data.animationIndex - index) < 0.5) return clearInterval(this.timer);
203
- // this.setData({
204
- // animationIndex: this.data.animationIndex + (index - data.currentIndex > 0 ? 1 : -1),
205
- // });
206
- // }, data.animationTime / Math.abs(index - data.currentIndex));
207
- // }
208
- return this.setData({
209
- timer: setTimeout(() => __awaiter(this, void 0, void 0, function* () {
210
- this.setIndex(index, true, false, this.data.animationTime);
211
- }), time),
212
- });
213
- }
214
- this.setData({
215
- playing: false,
216
- });
217
- this.$emit('animation-end');
218
- });
117
+ getAnimationIndex(activeIndex) {
118
+ const { animationIndex } = this.data;
119
+ const length = this.data.options.length || 1;
120
+ if (this.data.loop) {
121
+ const newAnimationIndex = this.getNewAnimationIndex(animationIndex, activeIndex, length, this.data.loop);
122
+ return newAnimationIndex;
123
+ }
124
+ return activeIndex;
219
125
  },
220
- checkIsDown(curr) {
221
- const { data } = this;
222
- const { preOffsetList } = data;
223
- const currOffset = curr === undefined ? preOffsetList[preOffsetList.length - 1] : curr;
224
- const preOffset = curr === undefined
225
- ? preOffsetList[preOffsetList.length - 2]
226
- : preOffsetList[preOffsetList.length - 1];
227
- if (currOffset === undefined || preOffset === undefined || currOffset === preOffset)
228
- return;
229
- return currOffset < preOffset ? 'down' : 'up';
126
+ getCount() {
127
+ return this.data.options.length;
230
128
  },
231
129
  vibrateShort(count, time = DEFAULT_DURATION) {
130
+ if (this.data.vibrateTimer) {
131
+ clearInterval(this.data.vibrateTimer);
132
+ this.setData({
133
+ vibrateTimer: null,
134
+ });
135
+ }
232
136
  if (!count) {
233
137
  ty.vibrateShort({ type: 'light' });
234
138
  return;
@@ -240,18 +144,11 @@ SmartComponent({
240
144
  return;
241
145
  }
242
146
  has++;
243
- this.vibrateShort();
147
+ ty.vibrateShort({ type: 'light' });
244
148
  }, time / count - 20);
245
- },
246
- onClickItem(event) {
247
- if (this.data.disabled)
248
- return;
249
- const { index } = event.currentTarget.dataset;
250
- if (index === this.data.currentIndex || index < 0 || index > this.data.options.length - 1) {
251
- return;
252
- }
253
- this.vibrateShort(Math.abs(index - this.data.currentIndex), DEFAULT_DURATION);
254
- this.setIndex(index, true, true, this.data.animationTime);
149
+ this.setData({
150
+ vibrateTimer: timer,
151
+ });
255
152
  },
256
153
  updateUint(options) {
257
154
  const { unit, valueKey } = this.data;
@@ -267,42 +164,111 @@ SmartComponent({
267
164
  this.setData({ maxText });
268
165
  }
269
166
  },
270
- updateVisibleOptions(targetIndex) {
271
- const { options, visibleItemCount, currentIndex } = this.data;
272
- if (visibleItemCount < 20 && options.length > visibleItemCount) {
273
- let renderNum = 0;
274
- let renderStart = 0;
275
- // 选项多于 20 个时,进行列表优化
276
- renderNum = Math.max(visibleItemCount * 2, 20);
277
- renderStart = Math.max(0, targetIndex - renderNum / 2);
278
- const renderEnd = Math.min(options.length, renderStart + renderNum);
279
- if (currentIndex >= 0) {
280
- if (currentIndex < targetIndex) {
281
- renderStart = Math.max(0, currentIndex - renderNum / 2);
282
- }
167
+ getVisibleOptions(currentIndex) {
168
+ let animationIndex = Math.round(currentIndex !== undefined ? currentIndex : this.data.animationIndex);
169
+ const vOptionLength = this.data.visibleItemCount * 4 - 2;
170
+ const rotateAngle = 360 / vOptionLength;
171
+ const partCount = Math.floor(this.data.visibleItemCount / 2) + 3;
172
+ const newArr = new Array(vOptionLength).fill('');
173
+ const newValueArr = new Array(partCount * 2 + 1).fill('');
174
+ if (this.data.loop) {
175
+ // 循环模式:根据 options 首尾填充 newValueArr 数组
176
+ const optionsLength = this.data.options.length;
177
+ if (optionsLength === 0) {
178
+ // 如果没有选项,填充空值
179
+ newValueArr.fill('');
180
+ }
181
+ else {
182
+ newValueArr.forEach((item, index) => {
183
+ // 计算相对于中心的偏移量
184
+ const offset = index - partCount;
185
+ // 计算目标索引,支持循环
186
+ const targetAnimationIndex = animationIndex + offset;
187
+ let targetIndex = ((targetAnimationIndex + 1) % optionsLength) - 1;
188
+ if (targetIndex < 0) {
189
+ targetIndex += optionsLength;
190
+ }
191
+ newValueArr[index] = targetIndex;
192
+ });
283
193
  }
284
- renderNum = renderEnd - renderStart;
285
- const optionsV = options.slice(renderStart, renderEnd);
286
- return this.set({ optionsV, renderStart, renderNum });
287
194
  }
288
- return this.set({
289
- optionsV: options,
290
- renderStart: 0,
291
- renderNum: options.length,
292
- });
195
+ else {
196
+ if (animationIndex < 0) {
197
+ animationIndex = 0;
198
+ }
199
+ if (animationIndex > this.data.options.length - 1) {
200
+ animationIndex = this.data.options.length - 1;
201
+ }
202
+ newValueArr.forEach((item, index) => {
203
+ const valueIndex = animationIndex - partCount + index >= 0
204
+ ? animationIndex - partCount + index
205
+ : undefined;
206
+ if (valueIndex === undefined) {
207
+ return;
208
+ }
209
+ newValueArr[index] = valueIndex;
210
+ });
211
+ }
212
+ let rotate = (animationIndex * rotateAngle) % 360;
213
+ if (rotate < 0) {
214
+ rotate += 360;
215
+ }
216
+ const rotateIndex = Math.round(rotate / rotateAngle);
217
+ // 环形结构填充:以rotateIndex为中心,向两边扩展填充newValueArr
218
+ const centerIndex = rotateIndex; // 中心位置
219
+ const halfLength = Math.floor(newValueArr.length / 2); // newValueArr的一半长度
220
+ // 从中心位置开始,向两边填充
221
+ for (let i = 0; i < newValueArr.length; i++) {
222
+ const targetIndex = (centerIndex - halfLength + i + vOptionLength) % vOptionLength; // 确保索引在0-17范围内
223
+ newArr[targetIndex] = newValueArr[i];
224
+ }
225
+ return newArr;
226
+ },
227
+ getNewAnimationIndex(animationIndex, activeIndex, length, loop) {
228
+ const curOptionsNewIndex = Math.floor((animationIndex + 1) / length) * length + activeIndex;
229
+ const preOptionsNewIndex = curOptionsNewIndex - length;
230
+ const afterOptionsNewIndex = curOptionsNewIndex + length;
231
+ const newAnimationIndex = !loop
232
+ ? activeIndex
233
+ : Math.abs(preOptionsNewIndex - animationIndex) >
234
+ Math.abs(curOptionsNewIndex - animationIndex)
235
+ ? Math.abs(curOptionsNewIndex - animationIndex) >
236
+ Math.abs(afterOptionsNewIndex - animationIndex)
237
+ ? afterOptionsNewIndex
238
+ : curOptionsNewIndex
239
+ : Math.abs(preOptionsNewIndex - animationIndex) >
240
+ Math.abs(afterOptionsNewIndex - animationIndex)
241
+ ? afterOptionsNewIndex
242
+ : preOptionsNewIndex;
243
+ return newAnimationIndex;
293
244
  },
294
245
  adjustIndex(index) {
295
246
  const { data } = this;
296
247
  const count = this.getCount();
297
- index = range(index, 0, count);
298
- for (let i = index; i < count; i++) {
299
- if (!this.isDisabled(data.options[i]))
248
+ if (this.data.loop) {
249
+ for (let i = 0; i < count; i++) {
250
+ const targetIndex = index + i;
251
+ let optionIndex = ((targetIndex + 1) % count) - 1;
252
+ if (optionIndex < 0) {
253
+ optionIndex += count;
254
+ }
255
+ if (!this.isDisabled(data.options[optionIndex]) &&
256
+ data.options[optionIndex] !== undefined) {
257
+ return targetIndex;
258
+ }
259
+ }
260
+ return 0;
261
+ }
262
+ const activeIndex = range(index, 0, count);
263
+ for (let i = activeIndex; i < count; i++) {
264
+ if (!this.isDisabled(data.options[i]) && data.options[i] !== undefined)
300
265
  return i;
301
266
  }
302
- for (let i = index - 1; i >= 0; i--) {
303
- if (!this.isDisabled(data.options[i]))
267
+ for (let i = activeIndex - 1; i >= 0; i--) {
268
+ if (!this.isDisabled(data.options[i]) && data.options[i] !== undefined)
304
269
  return i;
305
270
  }
271
+ return 0;
306
272
  },
307
273
  isDisabled(option) {
308
274
  return isObj(option) && option.disabled;
@@ -311,83 +277,53 @@ SmartComponent({
311
277
  const { data } = this;
312
278
  return isObj(option) && data.valueKey in option ? option[data.valueKey] : option;
313
279
  },
314
- setIndex(index, userAction, animate, time = DEFAULT_DURATION) {
315
- const { data } = this;
316
- index = this.adjustIndex(index) || 0;
317
- const offset = -index * data.itemHeight;
318
- if (this.timer) {
319
- clearTimeout(this.timer);
320
- this.timer = null;
321
- }
322
- if (!data.playing) {
323
- this.$emit('animation-start');
324
- this.setData({
325
- playing: true,
326
- });
327
- }
328
- if (index !== data.currentIndex) {
329
- // 需要动画的情况下,保持最大的截取
330
- this.updateVisibleOptions(index);
331
- if (animate) {
332
- return this.set({
333
- currentIndex: index,
334
- animationIndex: index,
335
- offset,
336
- animate: true,
337
- duration: time,
338
- }).then(() => {
339
- if (!userAction) {
340
- this.setData({
341
- playing: false,
342
- });
343
- this.$emit('animation-end');
344
- return;
345
- }
346
- this.$emit('change', index);
347
- this.setData({
348
- playing: false,
349
- });
350
- this.$emit('animation-end');
351
- });
352
- }
353
- return this.set({
354
- offset,
355
- currentIndex: index,
356
- animationIndex: index,
357
- animate: !!animate,
358
- }).then(() => {
359
- if (!userAction) {
360
- this.setData({
361
- playing: false,
362
- });
363
- this.$emit('animation-end');
364
- return;
365
- }
366
- this.$emit('change', index);
367
- this.setData({
368
- playing: false,
369
- });
370
- this.$emit('animation-end');
371
- });
372
- }
373
- this.setData({
374
- playing: false,
375
- });
376
- this.$emit('animation-end');
377
- return this.set({ offset });
378
- },
379
280
  setValue(value) {
380
281
  const { options } = this.data;
381
282
  for (let i = 0; i < options.length; i++) {
382
283
  if (this.getOptionText(options[i]) === value) {
383
- return this.setIndex(i, false, this.data.changeAnimation, this.data.animationTime);
284
+ return this.setIndex(i);
384
285
  }
385
286
  }
386
287
  return Promise.resolve();
387
288
  },
289
+ setIndex(index) {
290
+ let activeIndex = ((index + 1) % this.data.options.length) - 1;
291
+ if (activeIndex < 0) {
292
+ activeIndex += this.data.options.length;
293
+ }
294
+ this.setData({
295
+ activeIndex: activeIndex,
296
+ animationIndex: index,
297
+ });
298
+ },
388
299
  getValue() {
389
300
  const { data } = this;
390
- return data.options[data.currentIndex];
301
+ return isObj(data.options[data.activeIndex])
302
+ ? data.options[data.activeIndex][data.valueKey]
303
+ : data.options[data.activeIndex];
304
+ },
305
+ activeIndexChange(index) {
306
+ let activeIndex = ((index + 1) % this.data.options.length) - 1;
307
+ if (activeIndex < 0) {
308
+ activeIndex += this.data.options.length;
309
+ }
310
+ const isSame = activeIndex === this.data.activeIndex;
311
+ this.setData({
312
+ activeIndex: activeIndex,
313
+ animationIndex: index,
314
+ });
315
+ !isSame && this.$emit('change', index);
316
+ },
317
+ animationIndexChange(index) {
318
+ this.setData({
319
+ animationIndex: index,
320
+ });
321
+ },
322
+ animationStart() {
323
+ this.$emit('animation-start');
324
+ },
325
+ animationEnd() {
326
+ this.$emit('animation-end');
391
327
  },
392
328
  },
393
329
  });
@@ -4,32 +4,49 @@
4
4
  <view
5
5
  class="{{ utils.bem('picker-column', { disabled }) }} custom-class"
6
6
  style="{{ computed.rootStyle({ itemHeight, visibleItemCount }) }}"
7
- bind:touchstart="onTouchStart"
8
- catch:touchmove="onTouchMove"
9
- bind:touchend="onTouchEnd"
10
- bind:touchcancel="onTouchEnd"
7
+ instanceId="{{instanceId}}"
8
+ id="{{instanceId}}"
9
+ data-isdestroy="{{isDestroy}}"
10
+ data-changeanimation="{{changeAnimation}}"
11
+ data-options="{{options}}"
12
+ data-valuekey="{{valueKey}}"
13
+ data-itemheight="{{itemHeight}}"
14
+ data-visibleitemcount="{{visibleItemCount}}"
15
+ data-activeindex="{{activeIndex}}"
16
+ data-loop="{{loop}}"
17
+ data-animationtime="{{animationTime}}"
18
+ isdestroy="{{isDestroy}}"
19
+ options="{{options}}"
20
+ activeindex="{{activeIndex}}"
21
+ changeanimation="{{changeAnimation}}"
22
+ loop="{{loop}}"
23
+ valuekey="{{valueKey}}"
24
+ itemheight="{{itemHeight}}"
25
+ visibleitemcount="{{visibleItemCount}}"
26
+ animationtime="{{animationTime}}"
27
+ change:isdestroy="{{computed.updateValue(instanceId, 'isDestroy')}}"
28
+ change:options="{{computed.updateValue(instanceId, 'options')}}"
29
+ change:valuekey="{{computed.updateValue(instanceId,'valueKey')}}"
30
+ change:itemheight="{{computed.updateValue(instanceId,'itemHeight')}}"
31
+ change:visibleitemcount="{{computed.updateValue(instanceId, 'visibleItemCount')}}"
32
+ change:activeindex="{{computed.updateValue(instanceId,'activeIndex')}}"
33
+ change:loop="{{computed.updateValue(instanceId,'loop')}}"
34
+ change:animationtime="{{computed.updateValue(instanceId,'animationTime')}}"
35
+ change:instanceid="{{computed.updateValue(instanceId,'instanceId')}}"
36
+ bind:touchstart="{{computed.touchStart(instanceId)}}"
37
+ catch:touchmove="{{computed.touchMove(instanceId)}}"
38
+ bind:touchend="{{computed.touchEnd(instanceId)}}"
39
+ bind:touchcancel="{{computed.touchEnd(instanceId)}}"
11
40
  >
12
- <view class="smart-picker-column__offset" style="height: {{ itemHeight * options.length }}px;{{ computed.wrapperStyle({ offset, itemHeight, visibleItemCount, animate, duration, renderStart, unit }) }}" id="options">
13
- <view class="smart-picker-column__visual" style="{{ computed.wrapperInterStyle({ offset, itemHeight, visibleItemCount, renderStart }) }}">
14
- <view
15
- wx:for="{{ optionsV }}"
16
- wx:for-item="option"
17
- wx:key="*this"
18
- data-index="{{ renderStart + index }}"
19
- style="{{computed.wrapperItemStyle({ itemHeight, fontStyle, activeStyle: renderStart + index === currentIndex ? activeStyle : '', animationIndex, index: renderStart + index, visibleItemCount })}}"
20
- class="{{ computed.wrapperItemClass({ index, renderStart, animationIndex, option })}}"
21
- >
22
- {{ computed.optionText(option, valueKey) }}
23
- </view>
24
- </view>
25
- </view>
26
- <view class="smart-picker-column__mask">
27
- <view
28
- wx:for="{{ visibleItemCount }}"
41
+ <view class="smart-picker-column__offset" style="{{ computed.wrapperStyle({ animationIndex, itemHeight, animationTime, unit, moving, optionsVIndexList, options, valueKey, visibleItemCount, loop, changeAnimation }) }}" id="options">
42
+ <view
43
+ wx:for="{{ optionsVIndexList }}"
44
+ wx:for-item="optionIndex"
29
45
  wx:key="index"
30
- class="smart-picker-column__mask__item"
31
- data-index="{{ currentIndex + index - 2 }}"
32
- bind:tap="onClickItem"
46
+ data-index="{{index}}"
47
+ style="{{computed.wrapperItemStyle({ itemHeight, index, visibleItemCount, fontStyle, activeStyle, instanceId, index, optionsVIndexList, animationIndex, options })}}"
48
+ class="smart-picker-column__item_{{index}} smart-ellipsis {{ computed.wrapperItemClass({ index, animationIndex, optionsVIndexList, instanceId, options })}}"
49
+ bind:tap="{{computed.tapItem(instanceId)}}"
33
50
  >
34
51
  </view>
35
52
  </view>