@nutui/nutui-react-taro 1.4.4-beta.0 → 1.4.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/Address.js +5 -5
  3. package/dist/esm/Audio.js +5 -5
  4. package/dist/esm/AvatarContext-7153ad2b.js +3 -1
  5. package/dist/esm/AvatarGroup.js +4 -4
  6. package/dist/esm/Calendar.js +5 -5
  7. package/dist/esm/CalendarItem.js +4 -4
  8. package/dist/esm/Card.js +4 -3
  9. package/dist/esm/Cell.js +2 -2
  10. package/dist/esm/ConfigProvider.js +3 -3
  11. package/dist/esm/CountDown.js +4 -4
  12. package/dist/esm/DatePicker.js +5 -5
  13. package/dist/esm/Dialog.js +4 -4
  14. package/dist/esm/Ellipsis.js +4 -4
  15. package/dist/esm/Empty.js +4 -4
  16. package/dist/esm/FixedNav.js +4 -4
  17. package/dist/esm/Form.js +4 -4
  18. package/dist/esm/FormItem.js +3 -3
  19. package/dist/esm/Grid.js +4 -4
  20. package/dist/esm/GridItem.js +4 -4
  21. package/dist/esm/Image.js +4 -4
  22. package/dist/esm/Infiniteloading.js +4 -4
  23. package/dist/esm/Input.js +4 -4
  24. package/dist/esm/MenuItem.js +4 -4
  25. package/dist/esm/NoticeBar.js +2 -2
  26. package/dist/esm/NumberKeyboard.js +4 -4
  27. package/dist/esm/Pagination.js +4 -4
  28. package/dist/esm/Picker.js +4 -4
  29. package/dist/esm/PullToRefresh.js +4 -4
  30. package/dist/esm/Range.js +4 -4
  31. package/dist/esm/SearchBar.js +4 -4
  32. package/dist/esm/ShortPassword.js +4 -4
  33. package/dist/esm/SideNavBar.js +4 -4
  34. package/dist/esm/Signature.js +4 -4
  35. package/dist/esm/Sticky.js +4 -4
  36. package/dist/esm/Table.js +4 -4
  37. package/dist/esm/Tag.js +3 -2
  38. package/dist/esm/TextArea.js +4 -4
  39. package/dist/esm/TimeDetail.js +4 -4
  40. package/dist/esm/TimePannel.js +4 -4
  41. package/dist/esm/TimeSelect.js +6 -6
  42. package/dist/esm/Uploader.js +4 -4
  43. package/dist/esm/UserContext-68f62e66.js +3 -1
  44. package/dist/esm/UserContext-b4181162.js +3 -1
  45. package/dist/esm/UserContext-be8097d2.js +3 -1
  46. package/dist/esm/VirtualList.js +6 -4
  47. package/dist/esm/WaterMark.js +4 -4
  48. package/dist/esm/actionsheet.taro-a58d3d12.js +45 -83
  49. package/dist/esm/address.taro-79cc7c96.js +461 -0
  50. package/dist/esm/animate.taro-b0e83dd5.js +32 -46
  51. package/dist/esm/animatingnumbers.taro-6f40a2e9.js +93 -134
  52. package/dist/esm/audio.taro-4fadc583.js +161 -0
  53. package/dist/esm/avatar.taro-85ced995.js +93 -119
  54. package/dist/esm/avatargroup-1d900174.js +34 -0
  55. package/dist/esm/backtop.taro-99107c30.js +39 -62
  56. package/dist/esm/badge.taro-fe9171ec.js +40 -58
  57. package/dist/esm/barrage.taro-0e157b5e.js +61 -91
  58. package/dist/esm/bem-893ad28d.js +3 -6
  59. package/dist/esm/button.taro-4ce133b9.js +87 -98
  60. package/dist/esm/calendar.taro-4ed72058.js +38 -0
  61. package/dist/esm/calendaritem.taro-1ebe428d.js +571 -0
  62. package/dist/esm/card.taro-39055e82.js +32 -0
  63. package/dist/esm/cascader.taro-d8cb1c3e.js +397 -636
  64. package/dist/esm/cell.taro-9a04a92e.js +64 -0
  65. package/dist/esm/cellgroup.taro-e094471c.js +18 -27
  66. package/dist/esm/checkbox.taro-0bda9796.js +160 -232
  67. package/dist/esm/circleprogress.taro-47db537c.js +99 -120
  68. package/dist/esm/col.taro-b61c7cba.js +33 -50
  69. package/dist/esm/collapse.taro-af58206c.js +73 -86
  70. package/dist/esm/collapseitem-ce1849d2.js +75 -139
  71. package/dist/esm/configprovider-5eea4f5d.js +19 -0
  72. package/dist/esm/configprovider.taro-26882dd2.js +42 -0
  73. package/dist/esm/countdown.taro-9e40de9c.js +225 -0
  74. package/dist/esm/datepicker.taro-7220e495.js +270 -0
  75. package/dist/esm/dialog.taro-1c03960e.js +123 -0
  76. package/dist/esm/divider.taro-5236fe6a.js +27 -27
  77. package/dist/esm/drag.taro-82b6b27a.js +99 -138
  78. package/dist/esm/elevator.taro-d7d65470.js +185 -259
  79. package/dist/esm/ellipsis.taro-49b6db0c.js +232 -0
  80. package/dist/esm/empty.taro-7bd813f9.js +62 -0
  81. package/dist/esm/fixednav.taro-5ad15202.js +53 -0
  82. package/dist/esm/form.taro-71d32671.js +179 -0
  83. package/dist/esm/formitem.taro-3089489b.js +89 -0
  84. package/dist/esm/grid.taro-e6decfce.js +58 -0
  85. package/dist/esm/grid.taro.context-39636af9.js +4 -2
  86. package/dist/esm/griditem.taro-4cade72e.js +90 -0
  87. package/dist/esm/icon-8dc4de10.js +43 -51
  88. package/dist/esm/icon.taro-1d0d4fb7.js +43 -51
  89. package/dist/esm/image.taro-e6dc5867.js +64 -0
  90. package/dist/esm/imagepreview.taro-3400ea03.js +158 -205
  91. package/dist/esm/index.taro-a36f96fb.js +149 -210
  92. package/dist/esm/indicator.taro-183ea169.js +29 -43
  93. package/dist/esm/infiniteloading.taro-6c2a2e95.js +142 -0
  94. package/dist/esm/input.taro-fd566407.js +243 -0
  95. package/dist/esm/inputnumber.taro-dc39b853.js +129 -177
  96. package/dist/esm/layout.taro-358f014f.js +6 -9
  97. package/dist/esm/menu.taro-4abed328.js +89 -132
  98. package/dist/esm/menuitem.taro-6e8b27c3.js +130 -0
  99. package/dist/esm/navbar.taro-c931c078.js +69 -105
  100. package/dist/esm/noticebar.taro-69ea7673.js +450 -0
  101. package/dist/esm/notify.taro-308e5892.js +66 -97
  102. package/dist/esm/numberkeyboard.taro-194519e4.js +158 -0
  103. package/dist/esm/nutui-react.es.js +44 -44
  104. package/dist/esm/offsetContext-bfb02c25.js +3 -1
  105. package/dist/esm/overlay.taro-98367bc1.js +59 -74
  106. package/dist/esm/pagination.taro-bb490de9.js +124 -0
  107. package/dist/esm/picker.taro-2a8ded7c.js +420 -0
  108. package/dist/esm/popover.taro-46d813e8.js +132 -222
  109. package/dist/esm/popup.taro-cb777e09.js +125 -178
  110. package/dist/esm/price.taro-8801462e.js +75 -86
  111. package/dist/esm/progress.taro-623bc807.js +84 -118
  112. package/dist/esm/pulltorefresh.taro-cab7b51c.js +221 -0
  113. package/dist/esm/range.taro-5d6ff217.js +332 -0
  114. package/dist/esm/rate.taro-10197384.js +64 -111
  115. package/dist/esm/row.taro-37a895de.js +38 -42
  116. package/dist/esm/searchbar.taro-839dd622.js +148 -0
  117. package/dist/esm/shortpassword.taro-182d46f7.js +111 -0
  118. package/dist/esm/sidenavbar.taro-006cf38b.js +35 -0
  119. package/dist/esm/sidenavbaritem.taro-fee11d26.js +9 -22
  120. package/dist/esm/signature.taro-33632585.js +143 -0
  121. package/dist/esm/skeleton.taro-853ce460.js +51 -88
  122. package/dist/esm/step.taro-1c94e067.js +49 -78
  123. package/dist/esm/steps.taro-acf205a0.js +21 -30
  124. package/dist/esm/sticky.taro-d0553f48.js +13 -0
  125. package/dist/esm/subsidenavbar.taro-f46b4c73.js +58 -75
  126. package/dist/esm/swipe.taro-83bc248f.js +164 -254
  127. package/dist/esm/swiper.taro-852f6615.js +424 -505
  128. package/dist/esm/swiperitem-86a3578a.js +20 -28
  129. package/dist/esm/switch.taro-bae2dca0.js +43 -64
  130. package/dist/esm/tabbar.taro-86cece39.js +47 -57
  131. package/dist/esm/tabbaritem.taro-8dfb8055.js +51 -79
  132. package/dist/esm/table.taro-cb4dd2c3.js +92 -0
  133. package/dist/esm/tabpane.taro-91cd6cf4.js +17 -22
  134. package/dist/esm/tabs.taro-e71875fa.js +121 -165
  135. package/dist/esm/tag.taro-00fe554d.js +89 -0
  136. package/dist/esm/textarea.taro-42600f8c.js +74 -0
  137. package/dist/esm/timedetail.taro-c5f564fd.js +44 -0
  138. package/dist/esm/timepannel.taro-29f9dd86.js +22 -0
  139. package/dist/esm/timeselect.taro-3ecce65d.js +133 -0
  140. package/dist/esm/toast.taro-0804b6b4.js +99 -137
  141. package/dist/esm/trendarrow.taro-5a7153e4.js +63 -90
  142. package/dist/esm/types/src/packages/cell/cell.taro.d.ts +0 -1
  143. package/dist/esm/types/src/packages/noticebar/noticebar.d.ts +5 -4
  144. package/dist/esm/types/src/packages/noticebar/noticebar.taro.d.ts +5 -4
  145. package/dist/esm/types/src/packages/uploader/uploader.d.ts +1 -1
  146. package/dist/esm/types/src/packages/virtuallist/virtuallist.taro.d.ts +13 -2
  147. package/dist/esm/typings-1c5f2628.js +7 -6
  148. package/dist/esm/uploader.taro-f80d76d9.js +392 -0
  149. package/dist/esm/useClientRect-bf69d7b3.js +5 -25
  150. package/dist/esm/useTouch-a2ea68c6.js +63 -93
  151. package/dist/esm/video-8a3518c5.js +59 -83
  152. package/dist/esm/virtuallist.taro-e3345ced.js +215 -0
  153. package/dist/esm/watermark.taro-cd9db98a.js +114 -0
  154. package/dist/esm/zh-CN-dfc384d0.js +128 -133
  155. package/dist/locales/base.js +1 -1
  156. package/dist/locales/en-US.js +1 -1
  157. package/dist/locales/id-ID.js +1 -1
  158. package/dist/locales/zh-CN.js +1 -1
  159. package/dist/locales/zh-TW.js +1 -1
  160. package/dist/locales/zh-UG.js +1 -1
  161. package/dist/nutui.react.es.js +634 -5664
  162. package/dist/nutui.react.umd.js +634 -5664
  163. package/dist/packages/noticebar/noticebar.scss +17 -0
  164. package/dist/packages/radio/radio.scss +3 -1
  165. package/dist/packages/row/row.scss +2 -0
  166. package/dist/packages/searchbar/searchbar.scss +1 -1
  167. package/dist/packages/tag/tag.scss +13 -5
  168. package/dist/packages/virtuallist/virtuallist.scss +24 -0
  169. package/dist/style.css +1 -1
  170. package/dist/style.es.js +1 -1
  171. package/dist/styles/temp.scss +2340 -0
  172. package/dist/styles/theme-dark.scss +7 -0
  173. package/dist/styles/theme-default.scss +11 -0
  174. package/dist/styles/variables.scss +1945 -710
  175. package/dist/types/index.d.ts +16 -23
  176. package/package.json +9 -4
  177. package/dist/esm/address.taro-1e2aea24.js +0 -615
  178. package/dist/esm/audio.taro-fddcdfc0.js +0 -228
  179. package/dist/esm/avatargroup-f7f600ff.js +0 -42
  180. package/dist/esm/calendar.taro-72974415.js +0 -83
  181. package/dist/esm/calendaritem.taro-84e889eb.js +0 -580
  182. package/dist/esm/card.taro-a530dfb3.js +0 -61
  183. package/dist/esm/cell.taro-cf50c4f2.js +0 -109
  184. package/dist/esm/configprovider-c7d60e20.js +0 -18
  185. package/dist/esm/configprovider.taro-8bdb3a28.js +0 -50
  186. package/dist/esm/countdown.taro-d7dc8681.js +0 -246
  187. package/dist/esm/datepicker.taro-7199f521.js +0 -304
  188. package/dist/esm/dialog.taro-f54cfbf0.js +0 -187
  189. package/dist/esm/ellipsis.taro-c0de6ff4.js +0 -309
  190. package/dist/esm/empty.taro-dbc66496.js +0 -81
  191. package/dist/esm/fixednav.taro-9e759320.js +0 -97
  192. package/dist/esm/form.taro-880014b1.js +0 -181
  193. package/dist/esm/formitem.taro-3695f4a7.js +0 -136
  194. package/dist/esm/grid.taro-c2cc12d6.js +0 -81
  195. package/dist/esm/griditem.taro-892153cd.js +0 -122
  196. package/dist/esm/image.taro-c30973d5.js +0 -105
  197. package/dist/esm/infiniteloading.taro-b5ddf3cc.js +0 -188
  198. package/dist/esm/input.taro-104130c1.js +0 -361
  199. package/dist/esm/menuitem.taro-216e9f7d.js +0 -193
  200. package/dist/esm/noticebar.taro-94002898.js +0 -368
  201. package/dist/esm/numberkeyboard.taro-5e8f0ddf.js +0 -245
  202. package/dist/esm/pagination.taro-9925ffab.js +0 -169
  203. package/dist/esm/picker.taro-3b5cc054.js +0 -540
  204. package/dist/esm/pulltorefresh.taro-f26a20dd.js +0 -302
  205. package/dist/esm/range.taro-c41e9b90.js +0 -469
  206. package/dist/esm/searchbar.taro-01ed4ea4.js +0 -236
  207. package/dist/esm/shortpassword.taro-3a3bf412.js +0 -190
  208. package/dist/esm/sidenavbar.taro-06026f31.js +0 -66
  209. package/dist/esm/signature.taro-17648cac.js +0 -192
  210. package/dist/esm/sticky.taro-36013e97.js +0 -16
  211. package/dist/esm/table.taro-adda6622.js +0 -139
  212. package/dist/esm/tag.taro-bd900990.js +0 -104
  213. package/dist/esm/textarea.taro-83d5fe73.js +0 -102
  214. package/dist/esm/timedetail.taro-105f5380.js +0 -68
  215. package/dist/esm/timepannel.taro-c66c63dd.js +0 -30
  216. package/dist/esm/timeselect.taro-fc7ec6ee.js +0 -172
  217. package/dist/esm/uploader.taro-a1edf38f.js +0 -529
  218. package/dist/esm/virtuallist.taro-4add61c3.js +0 -315
  219. package/dist/esm/watermark.taro-323d1cf3.js +0 -132
@@ -1,540 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
5
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
6
- var _excluded = ["isVisible", "title", "listData", "defaultValueData", "onConfirm", "onClose", "onCloseUpdate", "onChange", "className", "style", "threeDimensional", "swipeDuration"];
7
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
- import _regeneratorRuntime from "@babel/runtime/regenerator";
10
- import React__default, { useState, useRef, useEffect, useImperativeHandle } from 'react';
11
- import { P as Popup } from './popup.taro-cb777e09.js';
12
- import { u as useTouch } from './useTouch-a2ea68c6.js';
13
- import { g as getRectByTaro } from './useClientRect-bf69d7b3.js';
14
- import { u as useConfig } from './configprovider.taro-8bdb3a28.js';
15
- import { c as cn } from './bem-893ad28d.js';
16
- var InternalPickerSlot = function InternalPickerSlot(props, ref) {
17
- var _props$keyIndex = props.keyIndex,
18
- keyIndex = _props$keyIndex === void 0 ? 0 : _props$keyIndex,
19
- defaultValue = props.defaultValue,
20
- _props$listData = props.listData,
21
- listData = _props$listData === void 0 ? [] : _props$listData,
22
- _props$threeDimension = props.threeDimensional,
23
- threeDimensional = _props$threeDimension === void 0 ? true : _props$threeDimension,
24
- _props$swipeDuration = props.swipeDuration,
25
- swipeDuration = _props$swipeDuration === void 0 ? 1000 : _props$swipeDuration,
26
- _props$itemShow = props.itemShow,
27
- itemShow = _props$itemShow === void 0 ? false : _props$itemShow,
28
- chooseItem = props.chooseItem;
29
- var touch = useTouch();
30
- var DEFAULT_DURATION = 200;
31
- // 触发惯性滑动条件:
32
- // 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `MOMENTUM_TIME` 且 move
33
- // 距离大于 `MOMENTUM_DISTANCE` 时,执行惯性滑动
34
- var INERTIA_TIME = 300;
35
- var INERTIA_DISTANCE = 15;
36
- var _useState = useState(1),
37
- _useState2 = _slicedToArray(_useState, 2),
38
- currIndex = _useState2[0],
39
- setCurrIndex = _useState2[1];
40
- // let lineSpacing = 36
41
- var lineSpacing = useRef(36);
42
- var _useState3 = useState(0),
43
- _useState4 = _slicedToArray(_useState3, 2),
44
- touchTime = _useState4[0],
45
- setTouchTime = _useState4[1];
46
- var _useState5 = useState('0deg'),
47
- _useState6 = _slicedToArray(_useState5, 2),
48
- touchDeg = _useState6[0],
49
- setTouchDeg = _useState6[1];
50
- var rotation = 20;
51
- var moving = useRef(false);
52
- var timer;
53
- var listbox = useRef(null);
54
- var rollerRef = useRef(null);
55
- var pickerSlotRef = useRef(null);
56
- var _useState7 = useState(0),
57
- _useState8 = _slicedToArray(_useState7, 2),
58
- startTime = _useState8[0],
59
- setStartTime = _useState8[1];
60
- var _useState9 = useState(0),
61
- _useState10 = _slicedToArray(_useState9, 2),
62
- startY = _useState10[0],
63
- setStartY = _useState10[1];
64
- var transformY = useRef(0);
65
- var _useState11 = useState(0),
66
- _useState12 = _slicedToArray(_useState11, 2),
67
- scrollDistance = _useState12[0],
68
- setScrollDistance = _useState12[1];
69
- var isHidden = function isHidden(index) {
70
- if (index >= currIndex + 8 || index <= currIndex - 8) {
71
- return true;
72
- }
73
- return false;
74
- };
75
- var setTransform = function setTransform() {
76
- var translateY = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
77
- var type = arguments.length > 1 ? arguments[1] : undefined;
78
- var time = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_DURATION;
79
- var deg = arguments.length > 3 ? arguments[3] : undefined;
80
- var nTime = time;
81
- if (type !== 'end') {
82
- nTime = 0;
83
- }
84
- setTouchTime(nTime);
85
- setTouchDeg(deg);
86
- setScrollDistance(translateY);
87
- };
88
- var setMove = function setMove(move, type, time) {
89
- var updateMove = move + transformY.current;
90
- if (type === 'end') {
91
- // 限定滚动距离
92
- if (updateMove > 0) {
93
- updateMove = 0;
94
- }
95
- if (updateMove < -(listData.length - 1) * lineSpacing.current) {
96
- updateMove = -(listData.length - 1) * lineSpacing.current;
97
- }
98
- // 设置滚动距离为lineSpacing的倍数值
99
- var endMove = Math.round(updateMove / lineSpacing.current) * lineSpacing.current;
100
- var deg = "".concat((Math.abs(Math.round(endMove / lineSpacing.current)) + 1) * rotation, "deg");
101
- setTransform(endMove, type, time, deg);
102
- setCurrIndex(Math.abs(Math.round(endMove / lineSpacing.current)) + 1);
103
- } else {
104
- var _deg = 0;
105
- var currentDeg = (-updateMove / lineSpacing.current + 1) * rotation;
106
- // picker 滚动的最大角度
107
- var maxDeg = (listData.length + 1) * rotation;
108
- var minDeg = 0;
109
- _deg = Math.min(Math.max(currentDeg, minDeg), maxDeg);
110
- if (minDeg < _deg && _deg < maxDeg) {
111
- setTransform(updateMove, '', undefined, "".concat(_deg, "deg"));
112
- setCurrIndex(Math.abs(Math.round(updateMove / lineSpacing.current)) + 1);
113
- }
114
- }
115
- };
116
- var setChooseValue = function setChooseValue(move) {
117
- chooseItem && chooseItem(listData === null || listData === void 0 ? void 0 : listData[Math.round(-move / lineSpacing.current)], keyIndex);
118
- };
119
- // 开始滚动
120
- var touchStart = function touchStart(event) {
121
- touch.start(event);
122
- setStartY(touch.deltaY);
123
- setStartTime(Date.now());
124
- transformY.current = scrollDistance;
125
- };
126
- var touchMove = function touchMove(event) {
127
- touch.move(event);
128
- if (touch.isVertical) {
129
- moving.current = true;
130
- preventDefault(event, true);
131
- }
132
- var move = touch.deltaY - startY;
133
- setMove(move);
134
- };
135
- var touchEnd = function touchEnd(event) {
136
- if (!moving.current) return;
137
- var move = touch.deltaY - startY;
138
- var moveTime = Date.now() - startTime;
139
- // 区分是否为惯性滚动
140
- if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {
141
- // 惯性滚动
142
- var distance = momentum(move, moveTime);
143
- setMove(distance, 'end', +swipeDuration);
144
- } else {
145
- setMove(move, 'end');
146
- }
147
- setTimeout(function () {
148
- touch.reset();
149
- }, 0);
150
- };
151
- // 惯性滚动 距离
152
- var momentum = function momentum(distance, duration) {
153
- var nDistance = distance;
154
- // 惯性滚动的速度
155
- var speed = Math.abs(nDistance / duration);
156
- // 惯性滚动的距离
157
- nDistance = speed / 0.003 * (nDistance < 0 ? -1 : 1);
158
- return nDistance;
159
- };
160
- var modifyStatus = function modifyStatus(type, val) {
161
- var value = val || defaultValue;
162
- var index = -1;
163
- if (value) {
164
- listData.some(function (item, idx) {
165
- if (item.value === value) {
166
- index = idx;
167
- return true;
168
- }
169
- return false;
170
- });
171
- } else {
172
- listData.forEach(function (item, i) {
173
- if (item.value === defaultValue) {
174
- index = i;
175
- }
176
- });
177
- }
178
- setCurrIndex(index === -1 ? 1 : index + 1);
179
- var move = index === -1 ? 0 : index * lineSpacing.current;
180
- type && setChooseValue(-move);
181
- setMove(-move);
182
- };
183
- // 惯性滚动结束
184
- var stopMomentum = function stopMomentum() {
185
- moving.current = false;
186
- setTouchTime(0);
187
- setChooseValue(scrollDistance);
188
- };
189
- // 阻止默认事件
190
- var preventDefault = function preventDefault(event, isStopPropagation) {
191
- /* istanbul ignore else */
192
- if (typeof event.cancelable !== 'boolean' || event.cancelable) {
193
- event.preventDefault();
194
- }
195
- if (isStopPropagation) {
196
- event.stopPropagation();
197
- }
198
- };
199
- var getReference = /*#__PURE__*/function () {
200
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
201
- var refe;
202
- return _regeneratorRuntime.wrap(function _callee$(_context) {
203
- while (1) {
204
- switch (_context.prev = _context.next) {
205
- case 0:
206
- _context.next = 2;
207
- return getRectByTaro(listbox === null || listbox === void 0 ? void 0 : listbox.current);
208
- case 2:
209
- refe = _context.sent;
210
- lineSpacing.current = refe.height ? refe.height : 36;
211
- modifyStatus(true);
212
- case 5:
213
- case "end":
214
- return _context.stop();
215
- }
216
- }
217
- }, _callee);
218
- }));
219
- return function getReference() {
220
- return _ref2.apply(this, arguments);
221
- };
222
- }();
223
- var touchRollerStyle = function touchRollerStyle() {
224
- return {
225
- transition: "transform ".concat(touchTime, "ms cubic-bezier(0.17, 0.89, 0.45, 1)"),
226
- transform: "rotate3d(1, 0, 0, ".concat(touchDeg, ")")
227
- };
228
- };
229
- var touchTileStyle = function touchTileStyle() {
230
- return {
231
- transition: "transform ".concat(touchTime, "ms cubic-bezier(0.17, 0.89, 0.45, 1)"),
232
- transform: "translate3d(0, ".concat(scrollDistance, "px, 0)")
233
- };
234
- };
235
- useEffect(function () {
236
- setScrollDistance(0);
237
- transformY.current = 0;
238
- modifyStatus(false);
239
- return function () {
240
- clearTimeout(timer);
241
- };
242
- }, [listData]);
243
- useEffect(function () {
244
- if (itemShow) {
245
- setTimeout(function () {
246
- getReference();
247
- }, 200);
248
- }
249
- }, [itemShow]);
250
- useImperativeHandle(ref, function () {
251
- return {
252
- stopMomentum: stopMomentum,
253
- moving: moving.current
254
- };
255
- });
256
- return React__default.createElement("div", {
257
- className: "nut-picker-list",
258
- ref: pickerSlotRef,
259
- onTouchStart: touchStart,
260
- onTouchMove: touchMove,
261
- onTouchEnd: touchEnd
262
- }, React__default.createElement("div", {
263
- className: "nut-picker-roller",
264
- ref: rollerRef,
265
- style: threeDimensional ? touchRollerStyle() : touchTileStyle(),
266
- onTransitionEnd: stopMomentum
267
- }, threeDimensional && listData.map(function (item, index) {
268
- return React__default.createElement("div", {
269
- className: "nut-picker-roller-item ".concat(isHidden(index + 1) && 'nut-picker-roller-item-hidden'),
270
- style: {
271
- transform: "rotate3d(1, 0, 0, ".concat(-rotation * (index + 1), "deg) translate3d(0px, 0px, 104px)"),
272
- height: "".concat(lineSpacing.current, "px"),
273
- lineHeight: "".concat(lineSpacing.current, "px")
274
- },
275
- key: item.value ? item.value : index
276
- }, React__default.createElement(React__default.Fragment, null, item.text ? item.text : item));
277
- }), !threeDimensional && listData.map(function (item, index) {
278
- return React__default.createElement("div", {
279
- className: "nut-picker-roller-item-tile",
280
- key: item.value ? item.value : index,
281
- style: {
282
- height: "".concat(lineSpacing.current, "px"),
283
- lineHeight: "".concat(lineSpacing.current, "px")
284
- }
285
- }, React__default.createElement(React__default.Fragment, null, item.text ? item.text : item));
286
- })), React__default.createElement("div", {
287
- className: "nut-picker-mask"
288
- }), React__default.createElement("div", {
289
- className: "nut-picker-indicator",
290
- ref: listbox
291
- }));
292
- };
293
- var PickerSlot = React__default.forwardRef(InternalPickerSlot);
294
- function useRefs() {
295
- var refs = React__default.useRef([]);
296
- var setRefs = React__default.useCallback(function (index) {
297
- return function (el) {
298
- if (el) refs.current[index] = el;
299
- };
300
- }, []);
301
- var reset = React__default.useCallback(function () {
302
- refs.current = [];
303
- }, []);
304
- return [refs.current, setRefs, reset];
305
- }
306
- var InternalPicker = function InternalPicker(props, ref) {
307
- var _useConfig = useConfig(),
308
- locale = _useConfig.locale;
309
- var isVisible = props.isVisible,
310
- title = props.title,
311
- _props$listData2 = props.listData,
312
- listData = _props$listData2 === void 0 ? [] : _props$listData2,
313
- defaultValueData = props.defaultValueData,
314
- onConfirm = props.onConfirm,
315
- onClose = props.onClose,
316
- onCloseUpdate = props.onCloseUpdate,
317
- onChange = props.onChange,
318
- className = props.className,
319
- style = props.style,
320
- threeDimensional = props.threeDimensional,
321
- swipeDuration = props.swipeDuration,
322
- rest = _objectWithoutProperties(props, _excluded);
323
- var _useState13 = useState([]),
324
- _useState14 = _slicedToArray(_useState13, 2),
325
- chooseValueData = _useState14[0],
326
- setchooseValueData = _useState14[1]; // 选择的数据的 value 值, 每一条数据的 value 值
327
- var _useState15 = useState(0),
328
- _useState16 = _slicedToArray(_useState15, 2),
329
- columnIndex = _useState16[0],
330
- setcolumnIndex = _useState16[1]; // 选中列
331
- var pickerRef = useRef(null);
332
- var _useRefs = useRefs(),
333
- _useRefs2 = _slicedToArray(_useRefs, 2),
334
- refs = _useRefs2[0],
335
- setRefs = _useRefs2[1];
336
- var _useState17 = useState([]),
337
- _useState18 = _slicedToArray(_useState17, 2),
338
- columnsList = _useState18[0],
339
- setColumnsList = _useState18[1]; // 格式化后每一列的数据
340
- var b = cn('picker');
341
- var isConfirmEvent = useRef(false);
342
- // 默认值修改
343
- useEffect(function () {
344
- if (defaultValueData && defaultValueData.length !== 0 && defaultValueData.toString() !== chooseValueData.toString()) {
345
- var data = _toConsumableArray(defaultValueData);
346
- setchooseValueData(data);
347
- setColumnsList(normalListData());
348
- }
349
- }, [defaultValueData]);
350
- // 选中值进行修改
351
- useEffect(function () {
352
- onChange && onChange(columnIndex, chooseValueData, selectedOptions());
353
- if (isConfirmEvent.current) {
354
- isConfirmEvent.current = false;
355
- onConfirm && onConfirm(chooseValueData, selectedOptions());
356
- }
357
- }, [chooseValueData]);
358
- // 列表格式修改
359
- useEffect(function () {
360
- init();
361
- }, [listData]);
362
- var closeActionSheet = function closeActionSheet() {
363
- onClose && onClose(chooseValueData, selectedOptions());
364
- onCloseUpdate && onCloseUpdate(chooseValueData, selectedOptions(), pickerRef);
365
- };
366
- // 点击确定
367
- var confirm = function confirm() {
368
- var movings = false;
369
- refs.forEach(function (_ref) {
370
- if (_ref.moving) movings = true;
371
- _ref.stopMomentum();
372
- });
373
- if (movings) {
374
- isConfirmEvent.current = true;
375
- } else {
376
- onConfirm && onConfirm(chooseValueData, selectedOptions());
377
- }
378
- onClose && onClose(chooseValueData, selectedOptions());
379
- setTimeout(function () {
380
- isConfirmEvent.current = false;
381
- }, 0);
382
- };
383
- var selectedOptions = function selectedOptions() {
384
- var optins = [];
385
- columnsList.map(function (column, index) {
386
- var currOptions = [];
387
- currOptions = column.filter(function (item) {
388
- return item.value === chooseValueData[index];
389
- });
390
- if (currOptions[0]) {
391
- optins.push(currOptions[0]);
392
- } else {
393
- column[0] && optins.push(column[0]);
394
- }
395
- return column;
396
- });
397
- return optins;
398
- };
399
- // 选择每一列的数据
400
- var _chooseItem = function chooseItem(option, columnIndex) {
401
- if (option && Object.keys(option).length) {
402
- // 是否移动后是否与之前有差异
403
- if (chooseValueData[columnIndex] !== option.value) {
404
- if (columnsType() === 'cascade') {
405
- chooseValueData[columnIndex] = option.value ? option.value : '';
406
- setchooseValueData(_toConsumableArray(chooseValueData));
407
- var index = columnIndex;
408
- var cursor = option;
409
- while (cursor && cursor.children && cursor.children[0]) {
410
- chooseValueData[index + 1] = cursor.children[0].value;
411
- setchooseValueData(_toConsumableArray(chooseValueData));
412
- index++;
413
- var cc = cursor.children[0];
414
- cursor = cc;
415
- }
416
- // 当前改变列的下一列 children 值为空
417
- if (cursor && cursor.children) {
418
- chooseValueData[index + 1] = '';
419
- setchooseValueData(_toConsumableArray(chooseValueData));
420
- }
421
- setColumnsList(normalListData());
422
- } else {
423
- setchooseValueData(function (data) {
424
- var cdata = _toConsumableArray(data);
425
- cdata[columnIndex] = Object.prototype.hasOwnProperty.call(option, 'value') ? option.value : '';
426
- return cdata;
427
- });
428
- }
429
- setcolumnIndex(columnIndex);
430
- }
431
- }
432
- };
433
- // 传入的数据格式化
434
- var normalListData = function normalListData() {
435
- var type = columnsType();
436
- switch (type) {
437
- case 'multiple':
438
- return listData;
439
- case 'cascade':
440
- // 级联数据处理
441
- return formatCascade(listData, chooseValueData);
442
- default:
443
- return [listData];
444
- }
445
- };
446
- // 每一列的类型
447
- var columnsType = function columnsType() {
448
- var firstColumn = listData[0];
449
- if (firstColumn) {
450
- if (Array.isArray(firstColumn)) {
451
- return 'multiple';
452
- }
453
- if ('children' in firstColumn) {
454
- return 'cascade';
455
- }
456
- }
457
- return 'single';
458
- };
459
- // 级联数据格式化
460
- var formatCascade = function formatCascade(columns, defaultValues) {
461
- var formatted = [];
462
- var cursor = {
463
- text: '',
464
- value: '',
465
- children: columns
466
- };
467
- var columnIndex = 0;
468
- var _loop = function _loop() {
469
- var options = cursor.children;
470
- var value = defaultValues[columnIndex];
471
- var index = options.findIndex(function (columnItem) {
472
- return columnItem.value === value;
473
- });
474
- if (index === -1) index = 0;
475
- cursor = cursor.children[index];
476
- columnIndex++;
477
- formatted.push(options);
478
- };
479
- while (cursor && cursor.children) {
480
- _loop();
481
- }
482
- return formatted;
483
- };
484
- var init = function init() {
485
- var data = [];
486
- var normalData = normalListData();
487
- setColumnsList(normalData);
488
- normalData.length > 0 && normalData.map(function (item) {
489
- item[0] && data.push(item[0].value);
490
- return item;
491
- });
492
- if (!defaultValueData && chooseValueData.length === 0) {
493
- setchooseValueData([].concat(data));
494
- }
495
- };
496
- var renderToolbar = function renderToolbar() {
497
- return React__default.createElement("div", {
498
- className: b('control')
499
- }, React__default.createElement("span", {
500
- className: b('cancel-btn'),
501
- onClick: function onClick() {
502
- return closeActionSheet();
503
- }
504
- }, locale.cancel), React__default.createElement("div", {
505
- className: b('title')
506
- }, title || ''), React__default.createElement("span", {
507
- className: b('confirm-btn'),
508
- onClick: confirm
509
- }, locale.confirm));
510
- };
511
- return React__default.createElement(Popup, {
512
- visible: isVisible,
513
- position: "bottom",
514
- onClose: function onClose() {
515
- closeActionSheet();
516
- }
517
- }, React__default.createElement("div", _objectSpread({
518
- className: "".concat(b(), " ").concat(className || ''),
519
- style: style
520
- }, rest), renderToolbar(), React__default.createElement("div", {
521
- className: b('panel'),
522
- ref: pickerRef
523
- }, columnsList === null || columnsList === void 0 ? void 0 : columnsList.map(function (item, index) {
524
- return React__default.createElement(PickerSlot, {
525
- ref: setRefs(index),
526
- defaultValue: chooseValueData === null || chooseValueData === void 0 ? void 0 : chooseValueData[index],
527
- listData: item,
528
- threeDimensional: threeDimensional,
529
- chooseItem: function chooseItem(value, index) {
530
- return _chooseItem(value, index);
531
- },
532
- swipeDuration: swipeDuration,
533
- key: index,
534
- keyIndex: index,
535
- itemShow: isVisible
536
- });
537
- }))));
538
- };
539
- var Picker = React__default.forwardRef(InternalPicker);
540
- export { Picker as P };