@nutui/nutui-react-taro 3.0.0-beta.12 → 3.0.0-beta.14

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 (253) hide show
  1. package/dist/cjs/{utils → hooks}/use-click-away.js +2 -2
  2. package/dist/cjs/{utils → hooks}/use-isomprphic-layout-effect.js +1 -1
  3. package/dist/cjs/{utils → hooks}/use-lock-scroll.js +2 -2
  4. package/dist/cjs/packages/address/address.d.ts +1 -1
  5. package/dist/cjs/packages/address/address.js +1 -1
  6. package/dist/cjs/packages/animate/animate.js +5 -6
  7. package/dist/cjs/packages/animate/style/animate.scss +63 -105
  8. package/dist/cjs/packages/animate/style/style.css +45 -44
  9. package/dist/cjs/packages/animate/style/style.harmony.css +45 -44
  10. package/dist/cjs/packages/avatarcropper/avatarcropper.js +3 -2
  11. package/dist/cjs/packages/badge/badge.js +10 -11
  12. package/dist/cjs/packages/calendar/style/calendar.scss +25 -31
  13. package/dist/cjs/packages/calendar/style/style.css +14 -20
  14. package/dist/cjs/packages/calendar/style/style.harmony.css +14 -20
  15. package/dist/cjs/packages/calendarcard/calendarcard.js +1 -1
  16. package/dist/cjs/packages/calendaritem/calendaritem.js +1 -2
  17. package/dist/cjs/packages/cascader/cascader.js +1 -1
  18. package/dist/cjs/packages/checkbox/checkbox.js +1 -1
  19. package/dist/cjs/packages/checkboxgroup/checkboxgroup.js +1 -1
  20. package/dist/cjs/packages/circleprogress/circleprogress.js +1 -1
  21. package/dist/cjs/packages/collapse/collapse.js +1 -1
  22. package/dist/cjs/packages/configprovider/configprovider.js +1 -1
  23. package/dist/cjs/packages/configprovider/types.d.ts +1 -1
  24. package/dist/cjs/packages/datepicker/datepicker.js +1 -1
  25. package/dist/cjs/packages/datepicker/style/style.css +2 -2
  26. package/dist/cjs/packages/dialog/dialog.js +2 -2
  27. package/dist/cjs/packages/drag/drag.js +3 -2
  28. package/dist/cjs/packages/elevator/elevator.js +1 -1
  29. package/dist/cjs/packages/imagepreview/imagepreview.js +1 -1
  30. package/dist/cjs/packages/input/input.js +1 -1
  31. package/dist/cjs/packages/inputnumber/inputnumber.js +1 -1
  32. package/dist/cjs/packages/lottie/mp.js +3 -2
  33. package/dist/cjs/packages/menuitem/menuitem.js +5 -4
  34. package/dist/cjs/packages/notify/notify.js +1 -1
  35. package/dist/cjs/packages/nutui.react.build.d.ts +3 -1
  36. package/dist/cjs/packages/nutui.react.build.js +122 -118
  37. package/dist/cjs/packages/nutui.react.d.ts +4 -1
  38. package/dist/cjs/packages/nutui.react.js +123 -118
  39. package/dist/cjs/packages/nutui.react.scss.d.ts +1 -0
  40. package/dist/cjs/packages/nutui.react.scss.js +1 -0
  41. package/dist/cjs/packages/overlay/overlay.js +1 -1
  42. package/dist/cjs/packages/pagination/pagination.js +1 -1
  43. package/dist/cjs/packages/picker/picker.js +2 -2
  44. package/dist/cjs/packages/picker/pickerpanel.js +1 -1
  45. package/dist/cjs/packages/picker/style/style.css +2 -2
  46. package/dist/cjs/packages/picker/style/style.harmony.css +2 -2
  47. package/dist/cjs/packages/pickerview/index.d.ts +3 -0
  48. package/dist/cjs/packages/pickerview/index.js +13 -0
  49. package/dist/cjs/packages/pickerview/pickerroller.d.ts +7 -0
  50. package/dist/cjs/packages/pickerview/pickerroller.js +186 -0
  51. package/dist/cjs/packages/pickerview/pickerview.d.ts +4 -0
  52. package/dist/cjs/packages/pickerview/pickerview.js +201 -0
  53. package/dist/cjs/packages/pickerview/style/css.js +1 -0
  54. package/dist/cjs/packages/pickerview/style/index.js +1 -0
  55. package/dist/cjs/packages/pickerview/style/pickerview.scss +79 -0
  56. package/dist/cjs/packages/pickerview/style/style.css +73 -0
  57. package/dist/cjs/packages/pickerview/style/style.harmony.css +83 -0
  58. package/dist/cjs/packages/pickerview/types.d.ts +32 -0
  59. package/dist/cjs/packages/pickerview/types.js +4 -0
  60. package/dist/cjs/packages/pickerview/utils.d.ts +14 -0
  61. package/dist/cjs/packages/pickerview/utils.js +46 -0
  62. package/dist/cjs/packages/popover/popover.d.ts +2 -2
  63. package/dist/cjs/packages/popover/popover.js +1 -1
  64. package/dist/cjs/packages/popover/types.d.ts +3 -2
  65. package/dist/cjs/packages/popup/popup.js +1 -1
  66. package/dist/cjs/packages/progress/progress.js +1 -1
  67. package/dist/cjs/packages/pulltorefresh/pulltorefresh.js +3 -2
  68. package/dist/cjs/packages/radio/radio.js +1 -1
  69. package/dist/cjs/packages/radiogroup/radiogroup.js +1 -1
  70. package/dist/cjs/packages/range/range.js +2 -2
  71. package/dist/cjs/packages/rate/rate.js +2 -2
  72. package/dist/cjs/packages/segmented/segmented.js +1 -1
  73. package/dist/cjs/packages/shortpassword/shortpassword.js +1 -1
  74. package/dist/cjs/packages/sidebar/sidebar.js +3 -3
  75. package/dist/cjs/packages/sticky/sticky.js +3 -2
  76. package/dist/cjs/packages/swipe/swipe.js +2 -2
  77. package/dist/cjs/packages/switch/switch.js +1 -1
  78. package/dist/cjs/packages/tabbar/style/style.css +2 -9
  79. package/dist/cjs/packages/tabbar/tabbar.js +1 -1
  80. package/dist/cjs/packages/tabbaritem/style/style.css +2 -9
  81. package/dist/cjs/packages/tabbaritem/style/style.harmony.css +1 -1
  82. package/dist/cjs/packages/tabbaritem/style/tabbaritem.scss +2 -10
  83. package/dist/cjs/packages/tabbaritem/tabbaritem.js +9 -11
  84. package/dist/cjs/packages/table/table.js +1 -1
  85. package/dist/cjs/packages/tabs/tabs.js +3 -3
  86. package/dist/cjs/packages/textarea/textarea.d.ts +3 -3
  87. package/dist/cjs/packages/textarea/textarea.js +19 -22
  88. package/dist/cjs/packages/toast/toast.js +2 -2
  89. package/dist/cjs/packages/tour/tour.d.ts +1 -1
  90. package/dist/cjs/packages/tour/tour.js +1 -1
  91. package/dist/cjs/packages/uploader/types.d.ts +2 -1
  92. package/dist/cjs/packages/uploader/uploader.js +1 -1
  93. package/dist/cjs/packages/virtuallist/virtuallist.js +2 -2
  94. package/dist/cjs/utils/get-rect-by-taro.js +1 -1
  95. package/dist/cjs/utils/get-system-info.d.ts +19 -0
  96. package/dist/cjs/utils/get-system-info.js +32 -0
  97. package/dist/es/{utils → hooks}/use-click-away.js +3 -2
  98. package/dist/es/{utils → hooks}/use-isomprphic-layout-effect.js +1 -1
  99. package/dist/es/{utils → hooks}/use-lock-scroll.js +2 -2
  100. package/dist/es/packages/address/address.d.ts +1 -1
  101. package/dist/es/packages/address/address.js +1 -1
  102. package/dist/es/packages/animate/animate.js +5 -6
  103. package/dist/es/packages/animate/style/animate.scss +63 -105
  104. package/dist/es/packages/animate/style/style.css +45 -44
  105. package/dist/es/packages/animate/style/style.harmony.css +45 -44
  106. package/dist/es/packages/audio/audio.d.ts +30 -10
  107. package/dist/es/packages/avatarcropper/avatarcropper.js +3 -2
  108. package/dist/es/packages/badge/badge.js +10 -11
  109. package/dist/es/packages/calendar/calendar.d.ts +27 -135
  110. package/dist/es/packages/calendar/style/calendar.scss +25 -31
  111. package/dist/es/packages/calendar/style/style.css +14 -20
  112. package/dist/es/packages/calendar/style/style.harmony.css +14 -20
  113. package/dist/es/packages/calendarcard/calendarcard.js +1 -1
  114. package/dist/es/packages/calendaritem/calendaritem.js +1 -2
  115. package/dist/es/packages/cascader/cascader.js +1 -1
  116. package/dist/es/packages/checkbox/checkbox.js +1 -1
  117. package/dist/es/packages/checkboxgroup/checkboxgroup.js +1 -1
  118. package/dist/es/packages/circleprogress/circleprogress.d.ts +1 -1
  119. package/dist/es/packages/circleprogress/circleprogress.js +1 -1
  120. package/dist/es/packages/collapse/collapse.js +1 -1
  121. package/dist/es/packages/configprovider/configprovider.js +1 -1
  122. package/dist/es/packages/configprovider/types.d.ts +1 -1
  123. package/dist/es/packages/datepicker/datepicker.js +1 -1
  124. package/dist/es/packages/datepicker/style/style.css +2 -2
  125. package/dist/es/packages/dialog/dialog.js +2 -2
  126. package/dist/es/packages/drag/drag.js +4 -3
  127. package/dist/es/packages/elevator/elevator.js +1 -1
  128. package/dist/es/packages/form/form.d.ts +1 -1
  129. package/dist/es/packages/imagepreview/imagepreview.js +1 -1
  130. package/dist/es/packages/input/input.js +1 -1
  131. package/dist/es/packages/inputnumber/inputnumber.js +1 -1
  132. package/dist/es/packages/lottie/mp.js +4 -3
  133. package/dist/es/packages/menuitem/menuitem.js +6 -5
  134. package/dist/es/packages/noticebar/noticebar.d.ts +1 -1
  135. package/dist/es/packages/notify/notify.js +1 -1
  136. package/dist/es/packages/nutui.react.build.d.ts +3 -1
  137. package/dist/es/packages/nutui.react.build.js +3 -1
  138. package/dist/es/packages/overlay/overlay.js +1 -1
  139. package/dist/es/packages/pagination/pagination.js +1 -1
  140. package/dist/es/packages/picker/picker.js +2 -2
  141. package/dist/es/packages/picker/pickerpanel.js +1 -1
  142. package/dist/es/packages/picker/style/style.css +2 -2
  143. package/dist/es/packages/picker/style/style.harmony.css +2 -2
  144. package/dist/es/packages/pickerview/index.d.ts +3 -0
  145. package/dist/es/packages/pickerview/index.js +2 -0
  146. package/dist/es/packages/pickerview/pickerroller.d.ts +7 -0
  147. package/dist/es/packages/pickerview/pickerroller.js +175 -0
  148. package/dist/es/packages/pickerview/pickerview.d.ts +4 -0
  149. package/dist/es/packages/pickerview/pickerview.js +189 -0
  150. package/dist/es/packages/pickerview/style/css.js +1 -0
  151. package/dist/es/packages/pickerview/style/index.js +1 -0
  152. package/dist/es/packages/pickerview/style/pickerview.scss +79 -0
  153. package/dist/es/packages/pickerview/style/style.css +73 -0
  154. package/dist/es/packages/pickerview/style/style.harmony.css +83 -0
  155. package/dist/es/packages/pickerview/types.d.ts +32 -0
  156. package/dist/es/packages/pickerview/types.js +1 -0
  157. package/dist/es/packages/pickerview/utils.d.ts +14 -0
  158. package/dist/es/packages/pickerview/utils.js +28 -0
  159. package/dist/es/packages/popover/popover.d.ts +2 -2
  160. package/dist/es/packages/popover/popover.js +1 -1
  161. package/dist/es/packages/popover/types.d.ts +3 -2
  162. package/dist/es/packages/popup/popup.js +1 -1
  163. package/dist/es/packages/progress/progress.js +1 -1
  164. package/dist/es/packages/pulltorefresh/pulltorefresh.js +3 -2
  165. package/dist/es/packages/radio/radio.js +1 -1
  166. package/dist/es/packages/radiogroup/radiogroup.js +1 -1
  167. package/dist/es/packages/range/range.js +2 -2
  168. package/dist/es/packages/rate/rate.js +2 -2
  169. package/dist/es/packages/segmented/segmented.js +1 -1
  170. package/dist/es/packages/shortpassword/shortpassword.js +1 -1
  171. package/dist/es/packages/sidebar/sidebar.js +3 -3
  172. package/dist/es/packages/sticky/sticky.js +4 -3
  173. package/dist/es/packages/swipe/swipe.js +2 -2
  174. package/dist/es/packages/switch/switch.js +1 -1
  175. package/dist/es/packages/tabbar/style/style.css +2 -9
  176. package/dist/es/packages/tabbar/tabbar.js +1 -1
  177. package/dist/es/packages/tabbaritem/style/style.css +2 -9
  178. package/dist/es/packages/tabbaritem/style/style.harmony.css +1 -1
  179. package/dist/es/packages/tabbaritem/style/tabbaritem.scss +2 -10
  180. package/dist/es/packages/tabbaritem/tabbaritem.js +9 -11
  181. package/dist/es/packages/table/table.js +1 -1
  182. package/dist/es/packages/tabs/tabs.js +3 -3
  183. package/dist/es/packages/textarea/textarea.d.ts +3 -3
  184. package/dist/es/packages/textarea/textarea.js +20 -23
  185. package/dist/es/packages/toast/toast.js +2 -2
  186. package/dist/es/packages/tour/tour.d.ts +1 -1
  187. package/dist/es/packages/tour/tour.js +1 -1
  188. package/dist/es/packages/uploader/types.d.ts +2 -1
  189. package/dist/es/packages/uploader/uploader.js +1 -1
  190. package/dist/es/packages/virtuallist/virtuallist.d.ts +1 -1
  191. package/dist/es/packages/virtuallist/virtuallist.js +2 -2
  192. package/dist/es/utils/get-rect-by-taro.js +1 -1
  193. package/dist/es/utils/get-system-info.d.ts +19 -0
  194. package/dist/es/utils/get-system-info.js +19 -0
  195. package/dist/nutui.react.umd.js +529 -172
  196. package/dist/style.css +1 -1
  197. package/dist/style.scss +24 -23
  198. package/dist/styles/variables.scss +3 -1
  199. package/package.json +1 -80
  200. /package/dist/cjs/{utils → hooks}/use-click-away.d.ts +0 -0
  201. /package/dist/cjs/{utils → hooks}/use-client-rect.d.ts +0 -0
  202. /package/dist/cjs/{utils → hooks}/use-client-rect.js +0 -0
  203. /package/dist/cjs/{utils → hooks}/use-custom-event.d.ts +0 -0
  204. /package/dist/cjs/{utils → hooks}/use-custom-event.js +0 -0
  205. /package/dist/cjs/{utils → hooks}/use-force-update.d.ts +0 -0
  206. /package/dist/cjs/{utils → hooks}/use-force-update.js +0 -0
  207. /package/dist/cjs/{utils → hooks}/use-isomprphic-layout-effect.d.ts +0 -0
  208. /package/dist/cjs/{utils → hooks}/use-lock-scoll-taro.d.ts +0 -0
  209. /package/dist/cjs/{utils → hooks}/use-lock-scoll-taro.js +0 -0
  210. /package/dist/cjs/{utils → hooks}/use-lock-scroll.d.ts +0 -0
  211. /package/dist/cjs/{utils → hooks}/use-memo.d.ts +0 -0
  212. /package/dist/cjs/{utils → hooks}/use-memo.js +0 -0
  213. /package/dist/cjs/{utils → hooks}/use-props-value.d.ts +0 -0
  214. /package/dist/cjs/{utils → hooks}/use-props-value.js +0 -0
  215. /package/dist/cjs/{utils → hooks}/use-ref-state.d.ts +0 -0
  216. /package/dist/cjs/{utils → hooks}/use-ref-state.js +0 -0
  217. /package/dist/cjs/{utils → hooks}/use-refs.d.ts +0 -0
  218. /package/dist/cjs/{utils → hooks}/use-refs.js +0 -0
  219. /package/dist/cjs/{utils → hooks}/use-taro-rect.d.ts +0 -0
  220. /package/dist/cjs/{utils → hooks}/use-taro-rect.js +0 -0
  221. /package/dist/cjs/{utils → hooks}/use-touch.d.ts +0 -0
  222. /package/dist/cjs/{utils → hooks}/use-touch.js +0 -0
  223. /package/dist/cjs/{utils → hooks}/use-uuid.d.ts +0 -0
  224. /package/dist/cjs/{utils → hooks}/use-uuid.js +0 -0
  225. /package/dist/cjs/{utils → hooks}/use-watch.d.ts +0 -0
  226. /package/dist/cjs/{utils → hooks}/use-watch.js +0 -0
  227. /package/dist/es/{utils → hooks}/use-click-away.d.ts +0 -0
  228. /package/dist/es/{utils → hooks}/use-client-rect.d.ts +0 -0
  229. /package/dist/es/{utils → hooks}/use-client-rect.js +0 -0
  230. /package/dist/es/{utils → hooks}/use-custom-event.d.ts +0 -0
  231. /package/dist/es/{utils → hooks}/use-custom-event.js +0 -0
  232. /package/dist/es/{utils → hooks}/use-force-update.d.ts +0 -0
  233. /package/dist/es/{utils → hooks}/use-force-update.js +0 -0
  234. /package/dist/es/{utils → hooks}/use-isomprphic-layout-effect.d.ts +0 -0
  235. /package/dist/es/{utils → hooks}/use-lock-scoll-taro.d.ts +0 -0
  236. /package/dist/es/{utils → hooks}/use-lock-scoll-taro.js +0 -0
  237. /package/dist/es/{utils → hooks}/use-lock-scroll.d.ts +0 -0
  238. /package/dist/es/{utils → hooks}/use-memo.d.ts +0 -0
  239. /package/dist/es/{utils → hooks}/use-memo.js +0 -0
  240. /package/dist/es/{utils → hooks}/use-props-value.d.ts +0 -0
  241. /package/dist/es/{utils → hooks}/use-props-value.js +0 -0
  242. /package/dist/es/{utils → hooks}/use-ref-state.d.ts +0 -0
  243. /package/dist/es/{utils → hooks}/use-ref-state.js +0 -0
  244. /package/dist/es/{utils → hooks}/use-refs.d.ts +0 -0
  245. /package/dist/es/{utils → hooks}/use-refs.js +0 -0
  246. /package/dist/es/{utils → hooks}/use-taro-rect.d.ts +0 -0
  247. /package/dist/es/{utils → hooks}/use-taro-rect.js +0 -0
  248. /package/dist/es/{utils → hooks}/use-touch.d.ts +0 -0
  249. /package/dist/es/{utils → hooks}/use-touch.js +0 -0
  250. /package/dist/es/{utils → hooks}/use-uuid.d.ts +0 -0
  251. /package/dist/es/{utils → hooks}/use-uuid.js +0 -0
  252. /package/dist/es/{utils → hooks}/use-watch.d.ts +0 -0
  253. /package/dist/es/{utils → hooks}/use-watch.js +0 -0
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
13
+ var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
14
+ var _components = require("@tarojs/components");
15
+ var _usetouch = require("../../hooks/use-touch");
16
+ var _supportspassive = require("../../utils/supports-passive");
17
+ var _platformtaro = require("../../utils/platform-taro");
18
+ var _utils = require("../../utils");
19
+ var _utils1 = require("./utils");
20
+ var InternalPickerRoller = function InternalPickerRoller(props, ref) {
21
+ var _props_keyIndex = props.keyIndex, keyIndex = _props_keyIndex === void 0 ? 0 : _props_keyIndex, _props_options = props.options, options = _props_options === void 0 ? [] : _props_options, _props_threeDimensional = props.threeDimensional, threeDimensional = _props_threeDimensional === void 0 ? true : _props_threeDimensional, _props_duration = props.duration, duration = _props_duration === void 0 ? 1000 : _props_duration, onSelect = props.onSelect, _props_renderLabel = props.renderLabel, renderLabel = _props_renderLabel === void 0 ? function renderLabel(item) {
22
+ return item.label;
23
+ } : _props_renderLabel;
24
+ var DEFAULT_DURATION = 200;
25
+ var INERTIA_TIME = 300;
26
+ var INERTIA_DISTANCE = 15;
27
+ var ROTATION = 20;
28
+ var touch = (0, _usetouch.useTouch)();
29
+ var _useState = (0, _sliced_to_array._)((0, _react.useState)(1), 2), currentIndex = _useState[0], setCurrentIndex = _useState[1];
30
+ var lineSpacing = (0, _react.useRef)(36);
31
+ var _useState1 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), touchTime = _useState1[0], setTouchTime = _useState1[1];
32
+ var _useState2 = (0, _sliced_to_array._)((0, _react.useState)('0deg'), 2), touchDeg = _useState2[0], setTouchDeg = _useState2[1];
33
+ var isMoving = (0, _react.useRef)(false);
34
+ var rollerRef = (0, _react.useRef)(null);
35
+ var pickerRollerRef = (0, _react.useRef)(null);
36
+ var _useState3 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), startTime = _useState3[0], setStartTime = _useState3[1];
37
+ var _useState4 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), startY = _useState4[0], setStartY = _useState4[1];
38
+ var transformY = (0, _react.useRef)(0);
39
+ var _useState5 = (0, _sliced_to_array._)((0, _react.useState)(0), 2), scrollDistance = _useState5[0], setScrollDistance = _useState5[1];
40
+ var _useStyles = (0, _utils1.useStyles)(touchTime, touchDeg, scrollDistance, lineSpacing, ROTATION), touchRollerStyle = _useStyles.touchRollerStyle, touchTiledStyle = _useStyles.touchTiledStyle, rollerStyle = _useStyles.rollerStyle;
41
+ var isItemHidden = function isItemHidden(index) {
42
+ return index >= currentIndex + 8 || index <= currentIndex - 8;
43
+ };
44
+ var applyTransform = function applyTransform(type, deg) {
45
+ var time = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : DEFAULT_DURATION, translateY = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0;
46
+ setTouchTime(type !== 'end' ? 0 : time);
47
+ setTouchDeg(deg);
48
+ setScrollDistance(translateY);
49
+ };
50
+ var handleMove = function handleMove(move, type, time) {
51
+ var updatedMove = move + transformY.current;
52
+ if (type === 'end') {
53
+ updatedMove = Math.max(Math.min(updatedMove, 0), -(options.length - 1) * lineSpacing.current);
54
+ // 滚动距离为lineSpacing.current的倍数值
55
+ var endMove = Math.round(updatedMove / lineSpacing.current) * lineSpacing.current;
56
+ var deg = "".concat((Math.abs(Math.round(endMove / lineSpacing.current)) + 1) * ROTATION, "deg");
57
+ applyTransform(type, deg, time, endMove);
58
+ setCurrentIndex(Math.abs(Math.round(endMove / lineSpacing.current)) + 1);
59
+ } else {
60
+ var currentDeg = (-updatedMove / lineSpacing.current + 1) * ROTATION;
61
+ var deg1 = Math.min(Math.max(currentDeg, 0), (options.length + 1) * ROTATION);
62
+ if (deg1 >= 0 && deg1 < (options.length + 1) * ROTATION) {
63
+ applyTransform('', "".concat(deg1, "deg"), undefined, updatedMove);
64
+ setCurrentIndex(Math.abs(Math.round(updatedMove / lineSpacing.current)) + 1);
65
+ }
66
+ }
67
+ };
68
+ var selectValue = function selectValue(move) {
69
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(options === null || options === void 0 ? void 0 : options[Math.round(-move / lineSpacing.current)], keyIndex);
70
+ };
71
+ var handleTouchStart = function handleTouchStart(event) {
72
+ touch.start(event);
73
+ setStartY(touch.deltaY.current);
74
+ setStartTime(Date.now());
75
+ transformY.current = scrollDistance;
76
+ };
77
+ var handleTouchMove = function handleTouchMove(event) {
78
+ touch.move(event);
79
+ if (touch.isVertical) {
80
+ isMoving.current = true;
81
+ (0, _utils.preventDefault)(event, true);
82
+ }
83
+ var move = touch.deltaY.current - startY;
84
+ handleMove(move);
85
+ };
86
+ var handleTouchEnd = function handleTouchEnd() {
87
+ if (!isMoving.current) return;
88
+ var move = touch.deltaY.current - startY;
89
+ var moveTime = Date.now() - startTime;
90
+ if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {
91
+ var distance = (0, _utils1.momentum)(move, moveTime);
92
+ handleMove(distance, 'end', +duration);
93
+ } else {
94
+ handleMove(move, 'end');
95
+ }
96
+ setTimeout(function() {
97
+ touch.reset();
98
+ }, 0);
99
+ };
100
+ var updateStatus = function updateStatus(shouldSelect, value) {
101
+ var selectedValue = value || props.value;
102
+ var index = options.findIndex(function(item) {
103
+ return item.value === selectedValue;
104
+ });
105
+ setCurrentIndex(index === -1 ? 1 : index + 1);
106
+ var move = index * lineSpacing.current;
107
+ shouldSelect && selectValue(-move);
108
+ handleMove(-move);
109
+ };
110
+ var stopMomentumScroll = function stopMomentumScroll() {
111
+ isMoving.current = false;
112
+ setTouchTime(0);
113
+ selectValue(scrollDistance);
114
+ };
115
+ // lineSpacing.current CSS variable
116
+ (0, _react.useEffect)(function() {
117
+ var element = pickerRollerRef.current;
118
+ if (element && (0, _platformtaro.web)()) {
119
+ var computedStyle = getComputedStyle(element);
120
+ var currentLineSpacing = computedStyle.getPropertyValue('--nutui-picker-item-height');
121
+ !!currentLineSpacing && (lineSpacing.current = parseFloat(currentLineSpacing));
122
+ }
123
+ }, [
124
+ pickerRollerRef.current
125
+ ]);
126
+ (0, _react.useEffect)(function() {
127
+ isMoving.current = false;
128
+ setScrollDistance(0);
129
+ transformY.current = 0;
130
+ updateStatus(false);
131
+ }, [
132
+ options,
133
+ props.value
134
+ ]);
135
+ (0, _react.useImperativeHandle)(ref, function() {
136
+ return {
137
+ stopMomentum: stopMomentumScroll,
138
+ moving: isMoving.current
139
+ };
140
+ });
141
+ (0, _react.useEffect)(function() {
142
+ var _pickerRollerRef_current, _pickerRollerRef_current1, _pickerRollerRef_current2;
143
+ var eventOptions = _supportspassive.passiveSupported ? {
144
+ passive: false,
145
+ once: true
146
+ } : false;
147
+ (_pickerRollerRef_current = pickerRollerRef.current) === null || _pickerRollerRef_current === void 0 ? void 0 : _pickerRollerRef_current.addEventListener('touchstart', handleTouchStart, eventOptions);
148
+ (_pickerRollerRef_current1 = pickerRollerRef.current) === null || _pickerRollerRef_current1 === void 0 ? void 0 : _pickerRollerRef_current1.addEventListener('touchmove', handleTouchMove, eventOptions);
149
+ (_pickerRollerRef_current2 = pickerRollerRef.current) === null || _pickerRollerRef_current2 === void 0 ? void 0 : _pickerRollerRef_current2.addEventListener('touchend', handleTouchEnd, eventOptions);
150
+ return function() {
151
+ var _pickerRollerRef_current, _pickerRollerRef_current1, _pickerRollerRef_current2;
152
+ (_pickerRollerRef_current = pickerRollerRef.current) === null || _pickerRollerRef_current === void 0 ? void 0 : _pickerRollerRef_current.removeEventListener('touchstart', handleTouchStart, eventOptions);
153
+ (_pickerRollerRef_current1 = pickerRollerRef.current) === null || _pickerRollerRef_current1 === void 0 ? void 0 : _pickerRollerRef_current1.removeEventListener('touchmove', handleTouchMove, eventOptions);
154
+ (_pickerRollerRef_current2 = pickerRollerRef.current) === null || _pickerRollerRef_current2 === void 0 ? void 0 : _pickerRollerRef_current2.removeEventListener('touchend', handleTouchEnd, eventOptions);
155
+ };
156
+ }, [
157
+ pickerRollerRef.current,
158
+ handleTouchStart,
159
+ handleTouchMove,
160
+ handleTouchEnd
161
+ ]);
162
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
163
+ className: "nut-pickerview-list",
164
+ ref: pickerRollerRef
165
+ }, /*#__PURE__*/ _react.default.createElement(_components.View, {
166
+ className: "nut-pickerview-roller",
167
+ ref: rollerRef,
168
+ style: threeDimensional ? touchRollerStyle() : touchTiledStyle(),
169
+ onTransitionEnd: stopMomentumScroll
170
+ }, threeDimensional && options.map(function(item, index) {
171
+ var _item_value;
172
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
173
+ className: "nut-pickerview-roller-item ".concat(isItemHidden(index + 1) && 'nut-pickerview-roller-item-hidden'),
174
+ style: rollerStyle(index),
175
+ key: (_item_value = item.value) !== null && _item_value !== void 0 ? _item_value : index
176
+ }, renderLabel(item));
177
+ }), !threeDimensional && options.map(function(item, index) {
178
+ var _item_value;
179
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
180
+ className: "nut-pickerview-roller-item-tiled",
181
+ key: (_item_value = item.value) !== null && _item_value !== void 0 ? _item_value : index
182
+ }, renderLabel(item));
183
+ })));
184
+ };
185
+ var PickerRoller = /*#__PURE__*/ _react.default.forwardRef(InternalPickerRoller);
186
+ var _default = PickerRoller;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { PickerViewProps } from './types';
3
+ declare const PickerView: React.ForwardRefExoticComponent<Partial<PickerViewProps> & React.RefAttributes<unknown>>;
4
+ export default PickerView;
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
12
+ var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
13
+ var _object_spread = require("@swc/helpers/_/_object_spread");
14
+ var _object_spread_props = require("@swc/helpers/_/_object_spread_props");
15
+ var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
16
+ var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
17
+ var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
18
+ var _classnames = /*#__PURE__*/ _interop_require_default._(require("classnames"));
19
+ var _components = require("@tarojs/components");
20
+ var _reactfastcompare = /*#__PURE__*/ _interop_require_default._(require("react-fast-compare"));
21
+ var _typings = require("../../utils/typings");
22
+ var _usepropsvalue = require("../../hooks/use-props-value");
23
+ var _pickerroller = /*#__PURE__*/ _interop_require_default._(require("./pickerroller"));
24
+ var defaultProps = (0, _object_spread_props._)((0, _object_spread._)({}, _typings.ComponentDefaults), {
25
+ options: [],
26
+ defaultValue: [],
27
+ value: undefined,
28
+ renderLabel: function renderLabel(item) {
29
+ return item.label;
30
+ }
31
+ });
32
+ var InternalPickerView = function InternalPickerView(props, ref) {
33
+ var _$_object_spread = (0, _object_spread._)({}, defaultProps, props), options = _$_object_spread.options, _object_spread_defaultValue = _$_object_spread.defaultValue, defaultValue = _object_spread_defaultValue === void 0 ? [] : _object_spread_defaultValue, value = _$_object_spread.value, duration = _$_object_spread.duration, threeDimensional = _$_object_spread.threeDimensional, renderLabel = _$_object_spread.renderLabel, className = _$_object_spread.className, style = _$_object_spread.style, onChange = _$_object_spread.onChange;
34
+ var classPrefix = 'nut-pickerview';
35
+ var cls = (0, _classnames.default)(classPrefix, className);
36
+ var _usePropsValue = (0, _sliced_to_array._)((0, _usepropsvalue.usePropsValue)({
37
+ value: value,
38
+ defaultValue: (0, _to_consumable_array._)(defaultValue),
39
+ finalValue: (0, _to_consumable_array._)(defaultValue)
40
+ }), 1), selectedValue = _usePropsValue[0];
41
+ var _useState = (0, _sliced_to_array._)((0, _react.useState)(selectedValue), 2), innerValue = _useState[0], setInnerValue = _useState[1];
42
+ var _useState1 = (0, _sliced_to_array._)((0, _react.useState)([]), 2), innerOptions = _useState1[0], setInnerOptions = _useState1[1];
43
+ var changeIndex = (0, _react.useRef)(0);
44
+ /**
45
+ * 数据类型:级联、多列
46
+ */ var columnsType = (0, _react.useMemo)(function() {
47
+ var firstColumn = props.options[0] || [];
48
+ if (Array.isArray(firstColumn) && firstColumn.length > 0 && 'children' in firstColumn[0]) {
49
+ return 'cascade';
50
+ }
51
+ return 'multiple';
52
+ }, [
53
+ props.options
54
+ ]);
55
+ var formatCascadeOptions = function formatCascadeOptions(options, value) {
56
+ var _loop = function _loop() {
57
+ var currentOptions = columnOptions.children;
58
+ formatted.push(currentOptions);
59
+ var currentValue = value === null || value === void 0 ? void 0 : value[columnIndex];
60
+ if (currentValue === 0) {
61
+ // 如果 currentValue 为 0,返回第一个 children
62
+ columnOptions = currentOptions[0];
63
+ } else if (currentValue) {
64
+ // 如果 currentValue 存在,查找匹配的项
65
+ var index = currentOptions.findIndex(function(columnItem) {
66
+ return columnItem.value === currentValue;
67
+ });
68
+ columnOptions = currentOptions[index === -1 ? 0 : index] // 如果未找到,默认取第一个
69
+ ;
70
+ } else {
71
+ return "break" // 如果 currentValue 不存在,终止循环
72
+ ;
73
+ }
74
+ columnIndex++;
75
+ };
76
+ if (!options.length) return [] // 如果 options 为空,直接返回空数组
77
+ ;
78
+ var formatted = [];
79
+ var columnOptions = {
80
+ label: '',
81
+ value: '',
82
+ children: options
83
+ };
84
+ var columnIndex = 0;
85
+ while(columnOptions && columnOptions.children){
86
+ var _ret = _loop();
87
+ if (_ret === "break") break;
88
+ }
89
+ return formatted;
90
+ };
91
+ var formatOptions = (0, _react.useMemo)(function() {
92
+ if (columnsType === 'cascade') {
93
+ var _props_options;
94
+ return formatCascadeOptions(props === null || props === void 0 ? void 0 : (_props_options = props.options) === null || _props_options === void 0 ? void 0 : _props_options[0], innerValue);
95
+ }
96
+ return props.options;
97
+ }, [
98
+ innerValue,
99
+ options,
100
+ columnsType
101
+ ]);
102
+ (0, _react.useEffect)(function() {
103
+ var options = props.options;
104
+ if (Array.isArray(options) && options.length && options !== innerOptions) {
105
+ setInnerOptions(formatOptions);
106
+ }
107
+ }, [
108
+ props.options,
109
+ innerValue
110
+ ]);
111
+ (0, _react.useEffect)(function() {
112
+ if (selectedValue !== innerValue) {
113
+ setInnerValue(selectedValue);
114
+ }
115
+ }, [
116
+ selectedValue
117
+ ]);
118
+ var handleSelect = (0, _react.useCallback)(function(option, index) {
119
+ var newValue = option === null || option === void 0 ? void 0 : option.value;
120
+ if (!newValue || innerValue[index] === newValue) return;
121
+ changeIndex.current = index;
122
+ if (columnsType === 'multiple') {
123
+ setInnerValue(function(prev) {
124
+ var next = (0, _to_consumable_array._)(prev);
125
+ next[index] = newValue;
126
+ return next;
127
+ });
128
+ } else {
129
+ var _option_children, _option_children1, _props_options;
130
+ var startIndex = index;
131
+ var values = [];
132
+ values[index] = option.value;
133
+ while(option === null || option === void 0 ? void 0 : (_option_children = option.children) === null || _option_children === void 0 ? void 0 : _option_children[0]){
134
+ values[index + 1] = option.children[0].value;
135
+ index++;
136
+ option = option.children[0];
137
+ }
138
+ // 当前改变列的下一列 children 值为空
139
+ if (option === null || option === void 0 ? void 0 : (_option_children1 = option.children) === null || _option_children1 === void 0 ? void 0 : _option_children1.length) {
140
+ values[index + 1] = '';
141
+ }
142
+ var combineResult = (0, _to_consumable_array._)(innerValue.slice(0, startIndex)).concat((0, _to_consumable_array._)(values.splice(startIndex)));
143
+ setInnerValue((0, _to_consumable_array._)(combineResult));
144
+ var optionFirst = props === null || props === void 0 ? void 0 : (_props_options = props.options) === null || _props_options === void 0 ? void 0 : _props_options[0];
145
+ if (!(0, _reactfastcompare.default)(formatCascadeOptions(optionFirst, combineResult), innerOptions)) {
146
+ setInnerOptions(formatCascadeOptions(optionFirst, combineResult));
147
+ }
148
+ }
149
+ }, [
150
+ innerValue,
151
+ props.options,
152
+ columnsType,
153
+ innerOptions
154
+ ]);
155
+ var selectedOptions = (0, _react.useMemo)(function() {
156
+ return innerOptions.map(function(columnOptions, index) {
157
+ var selectedOption = columnOptions.find(function(item) {
158
+ return item.value === innerValue[index];
159
+ });
160
+ return selectedOption;
161
+ // return selectedOption || columnOptions[0]
162
+ }).filter(Boolean);
163
+ }, [
164
+ innerOptions,
165
+ innerValue
166
+ ]);
167
+ (0, _react.useEffect)(function() {
168
+ onChange === null || onChange === void 0 ? void 0 : onChange({
169
+ value: innerValue,
170
+ index: changeIndex.current,
171
+ selectedOptions: selectedOptions
172
+ });
173
+ }, [
174
+ innerValue,
175
+ selectedOptions,
176
+ onChange
177
+ ]);
178
+ return /*#__PURE__*/ _react.default.createElement(_components.View, {
179
+ className: cls,
180
+ style: style
181
+ }, innerOptions.map(function(item, index) {
182
+ var _props_setRefs;
183
+ return /*#__PURE__*/ _react.default.createElement(_pickerroller.default, {
184
+ ref: props === null || props === void 0 ? void 0 : (_props_setRefs = props.setRefs) === null || _props_setRefs === void 0 ? void 0 : _props_setRefs.call(props, index),
185
+ key: index,
186
+ keyIndex: index,
187
+ value: innerValue[index],
188
+ options: item,
189
+ renderLabel: renderLabel,
190
+ onSelect: handleSelect,
191
+ duration: duration,
192
+ threeDimensional: threeDimensional
193
+ });
194
+ }), (innerOptions === null || innerOptions === void 0 ? void 0 : innerOptions.length) ? /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(_components.View, {
195
+ className: "nut-pickerview-mask"
196
+ }), /*#__PURE__*/ _react.default.createElement(_components.View, {
197
+ className: "nut-pickerview-indicator"
198
+ })) : null);
199
+ };
200
+ var PickerView = /*#__PURE__*/ _react.default.forwardRef(InternalPickerView);
201
+ var _default = PickerView;
@@ -0,0 +1 @@
1
+ import './style.css'
@@ -0,0 +1 @@
1
+ import './pickerview.scss';
@@ -0,0 +1,79 @@
1
+ .nut-pickerview {
2
+ --nutui-picker-item-height: 36px;
3
+ position: relative;
4
+ display: flex;
5
+ width: 100%;
6
+ height: $picker-list-height;
7
+ $pickerview-top: calc(($picker-list-height - $picker-item-height) / 2);
8
+ overflow: hidden;
9
+
10
+ &-mask,
11
+ &-indicator {
12
+ position: absolute;
13
+ left: 0;
14
+ right: 0;
15
+ z-index: 3;
16
+ pointer-events: none;
17
+ }
18
+
19
+ &-mask {
20
+ top: 0;
21
+ bottom: 0;
22
+ background-image: $picker-mask-background;
23
+ background-position: top, bottom;
24
+ background-size: 100% $pickerview-top;
25
+ background-repeat: no-repeat;
26
+ transform: translateZ(0);
27
+ }
28
+
29
+ &-indicator {
30
+ top: $pickerview-top;
31
+ height: $picker-item-height;
32
+ border: $picker-item-active-line-border;
33
+ border-left: 0;
34
+ border-right: 0;
35
+ box-sizing: border-box;
36
+ }
37
+
38
+ &-list {
39
+ position: relative;
40
+ flex: 1;
41
+ height: $picker-list-height;
42
+ overflow: hidden;
43
+ touch-action: none;
44
+ }
45
+
46
+ &-roller {
47
+ position: absolute;
48
+ top: $pickerview-top;
49
+ width: 100%;
50
+ height: $picker-item-height;
51
+ z-index: 1;
52
+ transform-style: preserve-3d;
53
+ }
54
+
55
+ &-roller-item {
56
+ position: absolute;
57
+ top: 0;
58
+ backface-visibility: hidden;
59
+ -moz-backface-visibility: hidden;
60
+ -webkit-backface-visibility: hidden;
61
+ &-hidden {
62
+ visibility: hidden;
63
+ opacity: 0;
64
+ }
65
+ }
66
+
67
+ &-roller-item,
68
+ &-roller-item-tiled {
69
+ width: 100%;
70
+ height: $picker-item-height;
71
+ line-height: $picker-item-height;
72
+ color: $picker-item-text-color;
73
+ font-size: $picker-item-text-font-size;
74
+ text-align: center;
75
+ overflow: hidden;
76
+ text-overflow: ellipsis;
77
+ white-space: nowrap;
78
+ }
79
+ }
@@ -0,0 +1,73 @@
1
+ /* #ifdef harmony */
2
+ /* #endif */
3
+ /* #ifndef harmony */
4
+ /* #endif */
5
+ .nut-pickerview {
6
+ --nutui-picker-item-height: 36px;
7
+ position: relative;
8
+ display: flex;
9
+ width: 100%;
10
+ height: calc(var(--nutui-picker-item-height, 36px) * 7);
11
+ overflow: hidden;
12
+ }
13
+ .nut-pickerview-mask, .nut-pickerview-indicator {
14
+ position: absolute;
15
+ left: 0;
16
+ right: 0;
17
+ z-index: 3;
18
+ pointer-events: none;
19
+ }
20
+ .nut-pickerview-mask {
21
+ top: 0;
22
+ bottom: 0;
23
+ background-image: var(--picker-mask-background, linear-gradient(180deg, var(--nutui-white-12), var(--nutui-white-7)), linear-gradient(0deg, var(--nutui-white-12), var(--nutui-white-7)));
24
+ background-position: top, bottom;
25
+ background-size: 100% calc((var(--nutui-picker-item-height, 36px) * 7 - var(--nutui-picker-item-height, 36px)) / 2);
26
+ background-repeat: no-repeat;
27
+ transform: translateZ(0);
28
+ }
29
+ .nut-pickerview-indicator {
30
+ top: calc((var(--nutui-picker-item-height, 36px) * 7 - var(--nutui-picker-item-height, 36px)) / 2);
31
+ height: var(--nutui-picker-item-height, 36px);
32
+ border: var(--nutui-picker-item-active-line-border, 1px solid var(--nutui-color-border, rgba(0, 0, 0, 0.06)));
33
+ border-left: 0;
34
+ border-right: 0;
35
+ box-sizing: border-box;
36
+ }
37
+ .nut-pickerview-list {
38
+ position: relative;
39
+ flex: 1;
40
+ height: calc(var(--nutui-picker-item-height, 36px) * 7);
41
+ overflow: hidden;
42
+ touch-action: none;
43
+ }
44
+ .nut-pickerview-roller {
45
+ position: absolute;
46
+ top: calc((var(--nutui-picker-item-height, 36px) * 7 - var(--nutui-picker-item-height, 36px)) / 2);
47
+ width: 100%;
48
+ height: var(--nutui-picker-item-height, 36px);
49
+ z-index: 1;
50
+ transform-style: preserve-3d;
51
+ }
52
+ .nut-pickerview-roller-item {
53
+ position: absolute;
54
+ top: 0;
55
+ backface-visibility: hidden;
56
+ -moz-backface-visibility: hidden;
57
+ -webkit-backface-visibility: hidden;
58
+ }
59
+ .nut-pickerview-roller-item-hidden {
60
+ visibility: hidden;
61
+ opacity: 0;
62
+ }
63
+ .nut-pickerview-roller-item, .nut-pickerview-roller-item-tiled {
64
+ width: 100%;
65
+ height: var(--nutui-picker-item-height, 36px);
66
+ line-height: var(--nutui-picker-item-height, 36px);
67
+ color: var(--nutui-picker-item-text-color, var(--nutui-color-title, #1a1a1a));
68
+ font-size: var(--nutui-picker-item-text-font-size, var(--nutui-font-size-base, 14px));
69
+ text-align: center;
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ white-space: nowrap;
73
+ }
@@ -0,0 +1,83 @@
1
+ /* #ifdef harmony */
2
+ /* #endif */
3
+ /* #ifndef harmony */
4
+ /* #endif */
5
+ .nut-pickerview {
6
+ position: relative;
7
+ display: flex;
8
+ width: 100%;
9
+ height: calc(36px * 7);
10
+ overflow: hidden;
11
+ }
12
+ .nut-pickerview-mask, .nut-pickerview-indicator {
13
+ position: absolute;
14
+ left: 0;
15
+ right: 0;
16
+ z-index: 3;
17
+ pointer-events: none;
18
+ }
19
+ .nut-pickerview-mask {
20
+ top: 0;
21
+ bottom: 0;
22
+ background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4)), linear-gradient(0deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.4));
23
+ background-position: top, bottom;
24
+ background-size: 100% calc((36px * 7 - 36px) / 2);
25
+ background-repeat: no-repeat;
26
+ transform: translateZ(0);
27
+ }
28
+ .nut-pickerview-indicator {
29
+ top: calc((36px * 7 - 36px) / 2);
30
+ height: 36px;
31
+ border: 1px solid rgba(0, 0, 0, 0.06);
32
+ border-left: 0;
33
+ border-right: 0;
34
+ box-sizing: border-box;
35
+ }
36
+ .nut-pickerview-list {
37
+ position: relative;
38
+ flex: 1;
39
+ height: calc(36px * 7);
40
+ overflow: hidden;
41
+ touch-action: none;
42
+ }
43
+ .nut-pickerview-roller {
44
+ position: absolute;
45
+ top: calc((36px * 7 - 36px) / 2);
46
+ width: 100%;
47
+ height: 36px;
48
+ z-index: 1;
49
+ transform-style: preserve-3d;
50
+ }
51
+ .nut-pickerview-roller-item {
52
+ position: absolute;
53
+ top: 0;
54
+ backface-visibility: hidden;
55
+ -moz-backface-visibility: hidden;
56
+ -webkit-backface-visibility: hidden;
57
+ }
58
+ .nut-pickerview-roller-item-hidden {
59
+ visibility: hidden;
60
+ opacity: 0;
61
+ }
62
+ .nut-pickerview-roller-item {
63
+ width: 100%;
64
+ height: 36px;
65
+ line-height: 36px;
66
+ color: #1a1a1a;
67
+ font-size: 14px;
68
+ text-align: center;
69
+ overflow: hidden;
70
+ text-overflow: ellipsis;
71
+ white-space: nowrap;
72
+ }
73
+ .nut-pickerview-roller-item-tiled {
74
+ width: 100%;
75
+ height: 36px;
76
+ line-height: 36px;
77
+ color: #1a1a1a;
78
+ font-size: 14px;
79
+ text-align: center;
80
+ overflow: hidden;
81
+ text-overflow: ellipsis;
82
+ white-space: nowrap;
83
+ }
@@ -0,0 +1,32 @@
1
+ import { BasicComponent } from "../../utils/typings";
2
+ export type PickerValue = string | number | null;
3
+ export interface PickerOptionItem {
4
+ label: string | number;
5
+ value: string | number;
6
+ children?: PickerOptionItem[];
7
+ }
8
+ export type PickerOptions = PickerOptionItem[];
9
+ export interface PickerRollerProps {
10
+ options: PickerOptionItem[];
11
+ keyIndex: number;
12
+ value: PickerValue;
13
+ threeDimensional?: boolean;
14
+ duration?: number | string;
15
+ onSelect: (option: PickerOptionItem, index: number) => void;
16
+ renderLabel: (item: PickerOptionItem) => React.ReactNode;
17
+ }
18
+ export interface PickerOnChangeCallbackParameter {
19
+ value: PickerValue[];
20
+ index: number;
21
+ selectedOptions: PickerOptionItem[];
22
+ }
23
+ export interface PickerViewProps extends BasicComponent {
24
+ setRefs?: (ref: any) => any;
25
+ options: PickerOptions[];
26
+ value?: PickerValue[];
27
+ defaultValue?: PickerValue[];
28
+ threeDimensional?: boolean;
29
+ duration?: number | string;
30
+ renderLabel: (item: PickerOptionItem) => React.ReactNode;
31
+ onChange?: (arg0: PickerOnChangeCallbackParameter) => void;
32
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });