@nutui/nutui-react-taro 1.4.4 → 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,270 +1,196 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
- var _excluded = ["height", "acceptKey", "indexList", "isSticky", "spaceHeight", "titleHeight", "className", "onClickItem", "onClickIndex", "children"];
6
- 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; }
7
- 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; }
8
1
  import React__default, { createContext, useRef, useState, useEffect } from 'react';
9
2
  import Taro from '@tarojs/taro';
10
3
  import { ScrollView } from '@tarojs/components';
11
4
  import { c as cn } from './bem-893ad28d.js';
12
- var elevatorContext = createContext({});
13
- var defaultProps = {
14
- height: '200px',
15
- acceptKey: 'title',
16
- indexList: [],
17
- isSticky: false,
18
- spaceHeight: 23,
19
- titleHeight: 35,
20
- className: 'weapp-elevator'
5
+
6
+ const elevatorContext = createContext({});
7
+ const defaultProps = {
8
+ height: '200px',
9
+ acceptKey: 'title',
10
+ indexList: [],
11
+ isSticky: false,
12
+ spaceHeight: 23,
13
+ titleHeight: 35,
14
+ className: 'weapp-elevator',
21
15
  };
22
- var Elevator = function Elevator(props) {
23
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
24
- height = _defaultProps$props.height,
25
- acceptKey = _defaultProps$props.acceptKey,
26
- indexList = _defaultProps$props.indexList,
27
- isSticky = _defaultProps$props.isSticky,
28
- spaceHeight = _defaultProps$props.spaceHeight,
29
- titleHeight = _defaultProps$props.titleHeight,
30
- className = _defaultProps$props.className,
31
- onClickItem = _defaultProps$props.onClickItem,
32
- onClickIndex = _defaultProps$props.onClickIndex,
33
- children = _defaultProps$props.children,
34
- rest = _objectWithoutProperties(_defaultProps$props, _excluded);
35
- var b = cn('elevator');
36
- var listview = useRef(null);
37
- var initData = {
38
- anchorIndex: 0,
39
- listHeight: [],
40
- listGroup: [],
41
- scrollY: 0,
42
- diff: -1,
43
- fixedTop: 0
44
- };
45
- var touchState = useRef({
46
- y1: 0,
47
- y2: 0
48
- });
49
- var _useState = useState(0),
50
- _useState2 = _slicedToArray(_useState, 2),
51
- scrollY = _useState2[0],
52
- setScrollY = _useState2[1];
53
- var _useState3 = useState({}),
54
- _useState4 = _slicedToArray(_useState3, 2),
55
- currentData = _useState4[0],
56
- setCurrentData = _useState4[1];
57
- var _useState5 = useState(''),
58
- _useState6 = _slicedToArray(_useState5, 2),
59
- currentKey = _useState6[0],
60
- setCurrentKey = _useState6[1];
61
- var _useState7 = useState(0),
62
- _useState8 = _slicedToArray(_useState7, 2),
63
- currentIndex = _useState8[0],
64
- setCurrentIndex = _useState8[1];
65
- var _useState9 = useState(0),
66
- _useState10 = _slicedToArray(_useState9, 2),
67
- codeIndex = _useState10[0],
68
- setCodeIndex = _useState10[1];
69
- var _useState11 = useState(false),
70
- _useState12 = _slicedToArray(_useState11, 2),
71
- scrollStart = _useState12[0],
72
- setScrollStart = _useState12[1];
73
- var state = useRef(initData);
74
- var _useState13 = useState(0),
75
- _useState14 = _slicedToArray(_useState13, 2),
76
- scrollTop = _useState14[0],
77
- setScrollTop = _useState14[1];
78
- // 重置滚动参数
79
- var resetScrollState = function resetScrollState() {
80
- setScrollStart(false);
81
- };
82
- var clientHeight = function clientHeight() {
83
- return listview.current ? listview.current.clientHeight : 0;
84
- };
85
- var getData = function getData(el) {
86
- if (!el.dataset.index) {
87
- return '0';
88
- }
89
- return el.dataset.index;
90
- };
91
- var calculateHeight = function calculateHeight() {
92
- var height = 0;
93
- state.current.listHeight.push(height);
94
- for (var i = 0; i < state.current.listGroup.length; i++) {
95
- var query = Taro.createSelectorQuery();
96
- query.selectAll(".".concat(className, " .elevator__item__").concat(i)).boundingClientRect();
97
- // eslint-disable-next-line no-loop-func
98
- query.exec(function (res) {
99
- if (res[0][0]) height += res[0][0].height;
100
- // console.log(res, res[0][0].height, height, 'res')
101
- state.current.listHeight.push(height);
102
- });
103
- }
104
- };
105
- var scrollTo = function scrollTo(index) {
106
- if (!index && index !== 0) {
107
- return;
108
- }
109
- if (!state.current.listHeight.length) {
110
- calculateHeight();
111
- }
112
- var cacheIndex = index;
113
- if (index < 0) {
114
- cacheIndex = 0;
115
- }
116
- if (index > state.current.listHeight.length - 2) {
117
- cacheIndex = state.current.listHeight.length - 2;
118
- }
119
- setCodeIndex(cacheIndex);
120
- setScrollTop(state.current.listHeight[cacheIndex]);
121
- };
122
- var touchMove = function touchMove(e) {
123
- var firstTouch = e.touches[0];
124
- touchState.current.y2 = firstTouch.pageY;
125
- var delta = (touchState.current.y2 - touchState.current.y1) / spaceHeight || 0;
126
- var cacheIndex = state.current.anchorIndex + Math.floor(delta);
127
- setCodeIndex(cacheIndex);
128
- scrollTo(cacheIndex);
129
- };
130
- var touchEnd = function touchEnd() {
131
- resetScrollState();
132
- };
133
- var touchStart = function touchStart(e) {
134
- setScrollStart(true);
135
- var index = Number(getData(e.target));
136
- var firstTouch = e.touches[0];
137
- touchState.current.y1 = firstTouch.pageY;
138
- state.current.anchorIndex = +index;
139
- setCodeIndex(function (codeIndex) {
140
- return codeIndex + index;
16
+ const Elevator = (props) => {
17
+ const { height, acceptKey, indexList, isSticky, spaceHeight, titleHeight, className, onClickItem, onClickIndex, children, ...rest } = {
18
+ ...defaultProps,
19
+ ...props,
20
+ };
21
+ const b = cn('elevator');
22
+ const listview = useRef(null);
23
+ const initData = {
24
+ anchorIndex: 0,
25
+ listHeight: [],
26
+ listGroup: [],
27
+ scrollY: 0,
28
+ diff: -1,
29
+ fixedTop: 0,
30
+ };
31
+ const touchState = useRef({
32
+ y1: 0,
33
+ y2: 0,
141
34
  });
142
- scrollTo(index);
143
- };
144
- var handleClickItem = function handleClickItem(key, item) {
145
- onClickItem && onClickItem(key, item);
146
- setCurrentData(item);
147
- setCurrentKey(key);
148
- };
149
- var handleClickIndex = function handleClickIndex(key) {
150
- onClickIndex && onClickIndex(key);
151
- };
152
- var setListGroup = function setListGroup() {
153
- if (listview.current) {
154
- Taro.createSelectorQuery().selectAll(".".concat(className, " .nut-elevator__list__item")).node(function (el) {
155
- state.current.listGroup = _toConsumableArray(Object.keys(el));
156
- calculateHeight();
157
- }).exec();
158
- }
159
- };
160
- var listViewScroll = function listViewScroll(e) {
161
- var listHeight = state.current.listHeight;
162
- if (!listHeight.length) {
163
- calculateHeight();
164
- }
165
- var target = e.target;
166
- var scrollTop = target.scrollTop;
167
- state.current.scrollY = Math.floor(scrollTop);
168
- setScrollY(scrollTop);
169
- for (var i = 0; i < listHeight.length - 1; i++) {
170
- var height1 = listHeight[i];
171
- var height2 = listHeight[i + 1];
172
- if (state.current.scrollY >= height1 && state.current.scrollY < height2) {
173
- setCurrentIndex(i);
174
- state.current.diff = height2 - state.current.scrollY;
175
- return;
176
- }
177
- }
178
- setCurrentIndex(listHeight.length - 2);
179
- };
180
- useEffect(function () {
181
- if (listview.current) {
182
- Taro.nextTick(function () {
183
- setListGroup();
184
- });
185
- }
186
- }, [listview]);
187
- useEffect(function () {
188
- var _state$current = state.current,
189
- listHeight = _state$current.listHeight,
190
- diff = _state$current.diff,
191
- scrollY = _state$current.scrollY;
192
- var fixedTop = diff > 0 && diff < titleHeight ? diff - titleHeight : 0;
193
- if (scrollY + clientHeight() === listHeight[listHeight.length - 1]) {
194
- if (fixedTop !== 0) {
195
- fixedTop = 0;
196
- }
197
- }
198
- if (state.current.fixedTop === fixedTop) return;
199
- state.current.fixedTop = fixedTop;
200
- }, [state.current.diff, titleHeight]);
201
- return React__default.createElement("div", _objectSpread({
202
- className: "".concat(b(), " ").concat(className, " ")
203
- }, rest), isSticky && scrollY > 0 ? React__default.createElement("div", {
204
- className: b('list__fixed')
205
- }, React__default.createElement("span", {
206
- className: "fixed-title"
207
- }, indexList[currentIndex][acceptKey])) : null, React__default.createElement("div", {
208
- className: b('list'),
209
- style: {
210
- height: Number.isNaN(+height) ? height : "".concat(height, "px")
211
- }
212
- }, React__default.createElement(ScrollView, {
213
- scrollTop: scrollTop,
214
- scrollY: true,
215
- className: b('list__inner'),
216
- ref: listview,
217
- onScroll: listViewScroll
218
- }, indexList.map(function (item, idx) {
219
- return React__default.createElement("div", {
220
- className: "".concat(b('list__item'), " elevator__item__").concat(idx),
221
- key: idx
222
- }, React__default.createElement("div", {
223
- className: b('list__item__code')
224
- }, item[acceptKey]), React__default.createElement(React__default.Fragment, null, item.list.map(function (subitem) {
225
- return React__default.createElement("div", {
226
- className: b('list__item__name', {
227
- highcolor: currentData.id === subitem.id && currentKey === item[acceptKey]
228
- }),
229
- key: subitem.id,
230
- onClick: function onClick() {
231
- return handleClickItem(item[acceptKey], subitem);
35
+ const [scrollY, setScrollY] = useState(0);
36
+ const [currentData, setCurrentData] = useState({});
37
+ const [currentKey, setCurrentKey] = useState('');
38
+ const [currentIndex, setCurrentIndex] = useState(0);
39
+ const [codeIndex, setCodeIndex] = useState(0);
40
+ const [scrollStart, setScrollStart] = useState(false);
41
+ const state = useRef(initData);
42
+ const [scrollTop, setScrollTop] = useState(0);
43
+ // 重置滚动参数
44
+ const resetScrollState = () => {
45
+ setScrollStart(false);
46
+ };
47
+ const clientHeight = () => {
48
+ return listview.current ? listview.current.clientHeight : 0;
49
+ };
50
+ const getData = (el) => {
51
+ if (!el.dataset.index) {
52
+ return '0';
53
+ }
54
+ return el.dataset.index;
55
+ };
56
+ const calculateHeight = () => {
57
+ let height = 0;
58
+ state.current.listHeight.push(height);
59
+ for (let i = 0; i < state.current.listGroup.length; i++) {
60
+ const query = Taro.createSelectorQuery();
61
+ query
62
+ .selectAll(`.${className} .elevator__item__${i}`)
63
+ .boundingClientRect();
64
+ // eslint-disable-next-line no-loop-func
65
+ query.exec((res) => {
66
+ if (res[0][0])
67
+ height += res[0][0].height;
68
+ // console.log(res, res[0][0].height, height, 'res')
69
+ state.current.listHeight.push(height);
70
+ });
71
+ }
72
+ };
73
+ const scrollTo = (index) => {
74
+ if (!index && index !== 0) {
75
+ return;
76
+ }
77
+ if (!state.current.listHeight.length) {
78
+ calculateHeight();
79
+ }
80
+ let cacheIndex = index;
81
+ if (index < 0) {
82
+ cacheIndex = 0;
83
+ }
84
+ if (index > state.current.listHeight.length - 2) {
85
+ cacheIndex = state.current.listHeight.length - 2;
86
+ }
87
+ setCodeIndex(cacheIndex);
88
+ setScrollTop(state.current.listHeight[cacheIndex]);
89
+ };
90
+ const touchMove = (e) => {
91
+ const firstTouch = e.touches[0];
92
+ touchState.current.y2 = firstTouch.pageY;
93
+ const delta = (touchState.current.y2 - touchState.current.y1) / spaceHeight || 0;
94
+ const cacheIndex = state.current.anchorIndex + Math.floor(delta);
95
+ setCodeIndex(cacheIndex);
96
+ scrollTo(cacheIndex);
97
+ };
98
+ const touchEnd = () => {
99
+ resetScrollState();
100
+ };
101
+ const touchStart = (e) => {
102
+ setScrollStart(true);
103
+ const index = Number(getData(e.target));
104
+ const firstTouch = e.touches[0];
105
+ touchState.current.y1 = firstTouch.pageY;
106
+ state.current.anchorIndex = +index;
107
+ setCodeIndex((codeIndex) => {
108
+ return codeIndex + index;
109
+ });
110
+ scrollTo(index);
111
+ };
112
+ const handleClickItem = (key, item) => {
113
+ onClickItem && onClickItem(key, item);
114
+ setCurrentData(item);
115
+ setCurrentKey(key);
116
+ };
117
+ const handleClickIndex = (key) => {
118
+ onClickIndex && onClickIndex(key);
119
+ };
120
+ const setListGroup = () => {
121
+ if (listview.current) {
122
+ Taro.createSelectorQuery()
123
+ .selectAll(`.${className} .nut-elevator__list__item`)
124
+ .node((el) => {
125
+ state.current.listGroup = [...Object.keys(el)];
126
+ calculateHeight();
127
+ })
128
+ .exec();
129
+ }
130
+ };
131
+ const listViewScroll = (e) => {
132
+ const { listHeight } = state.current;
133
+ if (!listHeight.length) {
134
+ calculateHeight();
135
+ }
136
+ const target = e.target;
137
+ const { scrollTop } = target;
138
+ state.current.scrollY = Math.floor(scrollTop);
139
+ setScrollY(scrollTop);
140
+ for (let i = 0; i < listHeight.length - 1; i++) {
141
+ const height1 = listHeight[i];
142
+ const height2 = listHeight[i + 1];
143
+ if (state.current.scrollY >= height1 && state.current.scrollY < height2) {
144
+ setCurrentIndex(i);
145
+ state.current.diff = height2 - state.current.scrollY;
146
+ return;
147
+ }
148
+ }
149
+ setCurrentIndex(listHeight.length - 2);
150
+ };
151
+ useEffect(() => {
152
+ if (listview.current) {
153
+ Taro.nextTick(() => {
154
+ setListGroup();
155
+ });
156
+ }
157
+ }, [listview]);
158
+ useEffect(() => {
159
+ const { listHeight, diff, scrollY } = state.current;
160
+ let fixedTop = diff > 0 && diff < titleHeight ? diff - titleHeight : 0;
161
+ if (scrollY + clientHeight() === listHeight[listHeight.length - 1]) {
162
+ if (fixedTop !== 0) {
163
+ fixedTop = 0;
164
+ }
232
165
  }
233
- }, children ? React__default.createElement(React__default.Fragment, null, React__default.createElement(elevatorContext.Provider, {
234
- value: subitem
235
- }, children)) : subitem.name);
236
- })));
237
- }))), indexList.length && scrollStart ? React__default.createElement("div", {
238
- className: b('code--current', {
239
- current: true
240
- })
241
- }, indexList[codeIndex][acceptKey]) : null, React__default.createElement("div", {
242
- className: b('bars')
243
- }, React__default.createElement("div", {
244
- className: b('bars__inner'),
245
- onTouchStart: function onTouchStart(event) {
246
- return touchStart(event);
247
- },
248
- onTouchMove: function onTouchMove(event) {
249
- return touchMove(event);
250
- },
251
- onTouchEnd: touchEnd,
252
- style: {
253
- touchAction: 'pan-y'
254
- }
255
- }, indexList.map(function (item, index) {
256
- return React__default.createElement("div", {
257
- className: "".concat(b('bars__inner__item', {
258
- active: item[acceptKey] === indexList[currentIndex][acceptKey]
259
- }), " "),
260
- "data-index": index,
261
- key: index,
262
- onClick: function onClick() {
263
- return handleClickIndex(item[acceptKey]);
264
- }
265
- }, item[acceptKey]);
266
- }))));
166
+ if (state.current.fixedTop === fixedTop)
167
+ return;
168
+ state.current.fixedTop = fixedTop;
169
+ }, [state.current.diff, titleHeight]);
170
+ return (React__default.createElement("div", { className: `${b()} ${className} `, ...rest },
171
+ isSticky && scrollY > 0 ? (React__default.createElement("div", { className: b('list__fixed') },
172
+ React__default.createElement("span", { className: "fixed-title" }, indexList[currentIndex][acceptKey]))) : null,
173
+ React__default.createElement("div", { className: b('list'), style: { height: Number.isNaN(+height) ? height : `${height}px` } },
174
+ React__default.createElement(ScrollView, { scrollTop: scrollTop, scrollY: true, className: b('list__inner'), ref: listview, onScroll: listViewScroll }, indexList.map((item, idx) => {
175
+ return (React__default.createElement("div", { className: `${b('list__item')} elevator__item__${idx}`, key: idx },
176
+ React__default.createElement("div", { className: b('list__item__code') }, item[acceptKey]),
177
+ React__default.createElement(React__default.Fragment, null, item.list.map((subitem) => {
178
+ return (React__default.createElement("div", { className: b('list__item__name', {
179
+ highcolor: currentData.id === subitem.id &&
180
+ currentKey === item[acceptKey],
181
+ }), key: subitem.id, onClick: () => handleClickItem(item[acceptKey], subitem) }, children ? (React__default.createElement(React__default.Fragment, null,
182
+ React__default.createElement(elevatorContext.Provider, { value: subitem }, children))) : (subitem.name)));
183
+ }))));
184
+ }))),
185
+ indexList.length && scrollStart ? (React__default.createElement("div", { className: b('code--current', { current: true }) }, indexList[codeIndex][acceptKey])) : null,
186
+ React__default.createElement("div", { className: b('bars') },
187
+ React__default.createElement("div", { className: b('bars__inner'), onTouchStart: (event) => touchStart(event), onTouchMove: (event) => touchMove(event), onTouchEnd: touchEnd, style: { touchAction: 'pan-y' } }, indexList.map((item, index) => {
188
+ return (React__default.createElement("div", { className: `${b('bars__inner__item', {
189
+ active: item[acceptKey] === indexList[currentIndex][acceptKey],
190
+ })} `, "data-index": index, key: index, onClick: () => handleClickIndex(item[acceptKey]) }, item[acceptKey]));
191
+ })))));
267
192
  };
268
193
  Elevator.defaultProps = defaultProps;
269
194
  Elevator.displayName = 'NutElevator';
195
+
270
196
  export { Elevator as E };