@tarojs/components-react 4.1.9-alpha.0 → 4.1.9-beta.1
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.
- package/dist/components/picker/picker-group.js +71 -16
- package/dist/components/picker/picker-group.js.map +1 -1
- package/dist/original/components/picker/picker-group.js +71 -16
- package/dist/original/components/picker/picker-group.js.map +1 -1
- package/dist/solid/components/picker/picker-group.js +71 -16
- package/dist/solid/components/picker/picker-group.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import { View, ScrollView } from '@tarojs/components';
|
|
2
|
+
import Taro from '@tarojs/taro';
|
|
2
3
|
import * as React from 'react';
|
|
3
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
5
|
|
|
5
6
|
const PICKER_LINE_HEIGHT = 34; // px
|
|
6
7
|
const PICKER_VISIBLE_ITEMS = 7; // 可见行数
|
|
7
8
|
const PICKER_BLANK_ITEMS = 3; // 空白行数
|
|
9
|
+
// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop
|
|
10
|
+
const setTargetScrollTopWithScale = (setTargetScrollTop, baseValue, randomOffset) => {
|
|
11
|
+
Taro.getSystemInfo({
|
|
12
|
+
success: res => {
|
|
13
|
+
var _a;
|
|
14
|
+
// 使用类型断言访问可能不存在的 lengthScaleRatio 属性
|
|
15
|
+
const lengthScaleRatio = (_a = res.lengthScaleRatio) !== null && _a !== void 0 ? _a : 1;
|
|
16
|
+
if (!res.lengthScaleRatio) {
|
|
17
|
+
console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用默认值 1');
|
|
18
|
+
}
|
|
19
|
+
const scaledValue = baseValue * lengthScaleRatio;
|
|
20
|
+
const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue;
|
|
21
|
+
setTargetScrollTop(finalValue);
|
|
22
|
+
},
|
|
23
|
+
fail: err => {
|
|
24
|
+
console.error('获取系统信息失败:', err);
|
|
25
|
+
// 失败时使用默认值 1
|
|
26
|
+
const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue;
|
|
27
|
+
setTargetScrollTop(finalValue);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
};
|
|
8
31
|
function PickerGroupBasic(props) {
|
|
9
32
|
const {
|
|
10
33
|
range = [],
|
|
@@ -25,8 +48,13 @@ function PickerGroupBasic(props) {
|
|
|
25
48
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
26
49
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
27
50
|
React.useEffect(() => {
|
|
28
|
-
|
|
29
|
-
|
|
51
|
+
var _a;
|
|
52
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
53
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
54
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
55
|
+
} else {
|
|
56
|
+
console.warn('Height measurement anomaly');
|
|
57
|
+
}
|
|
30
58
|
}
|
|
31
59
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
32
60
|
// 获取选中的索引
|
|
@@ -36,7 +64,8 @@ function PickerGroupBasic(props) {
|
|
|
36
64
|
// 当selectedIndex变化时,调整滚动位置
|
|
37
65
|
React.useEffect(() => {
|
|
38
66
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
39
|
-
|
|
67
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
68
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
40
69
|
setCurrentIndex(selectedIndex);
|
|
41
70
|
}
|
|
42
71
|
}, [selectedIndex, range]);
|
|
@@ -55,7 +84,9 @@ function PickerGroupBasic(props) {
|
|
|
55
84
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
56
85
|
const newIndex = getSelectedIndex(scrollTop);
|
|
57
86
|
setIsTouching(false);
|
|
58
|
-
|
|
87
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
88
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
89
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
59
90
|
updateIndex(newIndex, columnId);
|
|
60
91
|
onColumnChange === null || onColumnChange === void 0 ? void 0 : onColumnChange({
|
|
61
92
|
columnId,
|
|
@@ -141,8 +172,13 @@ function PickerGroupTime(props) {
|
|
|
141
172
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
142
173
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
143
174
|
React.useEffect(() => {
|
|
144
|
-
|
|
145
|
-
|
|
175
|
+
var _a;
|
|
176
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
177
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
178
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
179
|
+
} else {
|
|
180
|
+
console.warn('Height measurement anomaly');
|
|
181
|
+
}
|
|
146
182
|
}
|
|
147
183
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
148
184
|
const getSelectedIndex = scrollTop => {
|
|
@@ -151,7 +187,8 @@ function PickerGroupTime(props) {
|
|
|
151
187
|
// 当selectedIndex变化时,调整滚动位置
|
|
152
188
|
React.useEffect(() => {
|
|
153
189
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
154
|
-
|
|
190
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
191
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
155
192
|
setCurrentIndex(selectedIndex);
|
|
156
193
|
}
|
|
157
194
|
}, [selectedIndex, range]);
|
|
@@ -174,7 +211,9 @@ function PickerGroupTime(props) {
|
|
|
174
211
|
const isLimited = Boolean(updateIndex(newIndex, columnId, true));
|
|
175
212
|
// 如果没有触发限位,才执行归中逻辑
|
|
176
213
|
if (!isLimited) {
|
|
177
|
-
|
|
214
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
215
|
+
const randomOffset = Math.random() * 0.001;
|
|
216
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
178
217
|
}
|
|
179
218
|
}, 100);
|
|
180
219
|
};
|
|
@@ -254,8 +293,13 @@ function PickerGroupDate(props) {
|
|
|
254
293
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
255
294
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
256
295
|
React.useEffect(() => {
|
|
257
|
-
|
|
258
|
-
|
|
296
|
+
var _a;
|
|
297
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
298
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
299
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
300
|
+
} else {
|
|
301
|
+
console.warn('Height measurement anomaly');
|
|
302
|
+
}
|
|
259
303
|
}
|
|
260
304
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
261
305
|
const getSelectedIndex = scrollTop => {
|
|
@@ -264,7 +308,8 @@ function PickerGroupDate(props) {
|
|
|
264
308
|
// 当selectedIndex变化时,调整滚动位置
|
|
265
309
|
React.useEffect(() => {
|
|
266
310
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
267
|
-
|
|
311
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
312
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
268
313
|
setCurrentIndex(selectedIndex);
|
|
269
314
|
}
|
|
270
315
|
}, [selectedIndex, range]);
|
|
@@ -283,7 +328,9 @@ function PickerGroupDate(props) {
|
|
|
283
328
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
284
329
|
const newIndex = getSelectedIndex(scrollTop);
|
|
285
330
|
setIsTouching(false);
|
|
286
|
-
|
|
331
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
332
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
333
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
287
334
|
// 更新日期值
|
|
288
335
|
if (updateDay) {
|
|
289
336
|
// 解析文本中的数字(移除年、月、日等后缀)
|
|
@@ -370,8 +417,13 @@ function PickerGroupRegion(props) {
|
|
|
370
417
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
371
418
|
const isUserBeginScrollRef = React.useRef(false);
|
|
372
419
|
React.useEffect(() => {
|
|
373
|
-
|
|
374
|
-
|
|
420
|
+
var _a;
|
|
421
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
422
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
423
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
424
|
+
} else {
|
|
425
|
+
console.warn('Height measurement anomaly');
|
|
426
|
+
}
|
|
375
427
|
}
|
|
376
428
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
377
429
|
const getSelectedIndex = scrollTop => {
|
|
@@ -380,7 +432,8 @@ function PickerGroupRegion(props) {
|
|
|
380
432
|
// 当selectedIndex变化时,调整滚动位置
|
|
381
433
|
React.useEffect(() => {
|
|
382
434
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
383
|
-
|
|
435
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
436
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
384
437
|
setCurrentIndex(selectedIndex);
|
|
385
438
|
}
|
|
386
439
|
}, [selectedIndex, range]);
|
|
@@ -398,7 +451,9 @@ function PickerGroupRegion(props) {
|
|
|
398
451
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
399
452
|
const newIndex = getSelectedIndex(scrollTop);
|
|
400
453
|
setIsTouching(false);
|
|
401
|
-
|
|
454
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
455
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
456
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
402
457
|
updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current);
|
|
403
458
|
}, 100);
|
|
404
459
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker-group.js","sources":["../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001)\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","targetScrollTop","setTargetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","current","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_jsx","View","id","ref","el","className","style","height","color","itemSelectedColor","undefined","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","_jsxs","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"picker-group.js","sources":["../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\n// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop\nconst setTargetScrollTopWithScale = (\n setTargetScrollTop: (value: number) => void,\n baseValue: number,\n randomOffset?: number\n) => {\n Taro.getSystemInfo({\n success: (res) => {\n // 使用类型断言访问可能不存在的 lengthScaleRatio 属性\n const lengthScaleRatio = (res as any).lengthScaleRatio ?? 1\n if (!(res as any).lengthScaleRatio) {\n console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用默认值 1')\n }\n const scaledValue = baseValue * lengthScaleRatio\n const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue\n setTargetScrollTop(finalValue)\n },\n fail: (err) => {\n console.error('获取系统信息失败:', err)\n // 失败时使用默认值 1\n const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue\n setTargetScrollTop(finalValue)\n }\n })\n}\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","setTargetScrollTopWithScale","setTargetScrollTop","baseValue","randomOffset","Taro","getSystemInfo","success","res","lengthScaleRatio","_a","console","warn","scaledValue","finalValue","undefined","fail","err","error","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","targetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","process","env","TARO_PLATFORM","current","scrollHeigh","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_jsx","View","id","ref","el","className","style","height","color","itemSelectedColor","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","_jsxs","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
|
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import { View, ScrollView } from '@tarojs/components';
|
|
2
|
+
import Taro from '@tarojs/taro';
|
|
2
3
|
import * as React from 'react';
|
|
3
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
5
|
|
|
5
6
|
const PICKER_LINE_HEIGHT = 34; // px
|
|
6
7
|
const PICKER_VISIBLE_ITEMS = 7; // 可见行数
|
|
7
8
|
const PICKER_BLANK_ITEMS = 3; // 空白行数
|
|
9
|
+
// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop
|
|
10
|
+
const setTargetScrollTopWithScale = (setTargetScrollTop, baseValue, randomOffset) => {
|
|
11
|
+
Taro.getSystemInfo({
|
|
12
|
+
success: res => {
|
|
13
|
+
var _a;
|
|
14
|
+
// 使用类型断言访问可能不存在的 lengthScaleRatio 属性
|
|
15
|
+
const lengthScaleRatio = (_a = res.lengthScaleRatio) !== null && _a !== void 0 ? _a : 1;
|
|
16
|
+
if (!res.lengthScaleRatio) {
|
|
17
|
+
console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用默认值 1');
|
|
18
|
+
}
|
|
19
|
+
const scaledValue = baseValue * lengthScaleRatio;
|
|
20
|
+
const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue;
|
|
21
|
+
setTargetScrollTop(finalValue);
|
|
22
|
+
},
|
|
23
|
+
fail: err => {
|
|
24
|
+
console.error('获取系统信息失败:', err);
|
|
25
|
+
// 失败时使用默认值 1
|
|
26
|
+
const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue;
|
|
27
|
+
setTargetScrollTop(finalValue);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
};
|
|
8
31
|
function PickerGroupBasic(props) {
|
|
9
32
|
const {
|
|
10
33
|
range = [],
|
|
@@ -25,8 +48,13 @@ function PickerGroupBasic(props) {
|
|
|
25
48
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
26
49
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
27
50
|
React.useEffect(() => {
|
|
28
|
-
|
|
29
|
-
|
|
51
|
+
var _a;
|
|
52
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
53
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
54
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
55
|
+
} else {
|
|
56
|
+
console.warn('Height measurement anomaly');
|
|
57
|
+
}
|
|
30
58
|
}
|
|
31
59
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
32
60
|
// 获取选中的索引
|
|
@@ -36,7 +64,8 @@ function PickerGroupBasic(props) {
|
|
|
36
64
|
// 当selectedIndex变化时,调整滚动位置
|
|
37
65
|
React.useEffect(() => {
|
|
38
66
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
39
|
-
|
|
67
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
68
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
40
69
|
setCurrentIndex(selectedIndex);
|
|
41
70
|
}
|
|
42
71
|
}, [selectedIndex, range]);
|
|
@@ -55,7 +84,9 @@ function PickerGroupBasic(props) {
|
|
|
55
84
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
56
85
|
const newIndex = getSelectedIndex(scrollTop);
|
|
57
86
|
setIsTouching(false);
|
|
58
|
-
|
|
87
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
88
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
89
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
59
90
|
updateIndex(newIndex, columnId);
|
|
60
91
|
onColumnChange === null || onColumnChange === void 0 ? void 0 : onColumnChange({
|
|
61
92
|
columnId,
|
|
@@ -141,8 +172,13 @@ function PickerGroupTime(props) {
|
|
|
141
172
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
142
173
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
143
174
|
React.useEffect(() => {
|
|
144
|
-
|
|
145
|
-
|
|
175
|
+
var _a;
|
|
176
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
177
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
178
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
179
|
+
} else {
|
|
180
|
+
console.warn('Height measurement anomaly');
|
|
181
|
+
}
|
|
146
182
|
}
|
|
147
183
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
148
184
|
const getSelectedIndex = scrollTop => {
|
|
@@ -151,7 +187,8 @@ function PickerGroupTime(props) {
|
|
|
151
187
|
// 当selectedIndex变化时,调整滚动位置
|
|
152
188
|
React.useEffect(() => {
|
|
153
189
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
154
|
-
|
|
190
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
191
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
155
192
|
setCurrentIndex(selectedIndex);
|
|
156
193
|
}
|
|
157
194
|
}, [selectedIndex, range]);
|
|
@@ -174,7 +211,9 @@ function PickerGroupTime(props) {
|
|
|
174
211
|
const isLimited = Boolean(updateIndex(newIndex, columnId, true));
|
|
175
212
|
// 如果没有触发限位,才执行归中逻辑
|
|
176
213
|
if (!isLimited) {
|
|
177
|
-
|
|
214
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
215
|
+
const randomOffset = Math.random() * 0.001;
|
|
216
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
178
217
|
}
|
|
179
218
|
}, 100);
|
|
180
219
|
};
|
|
@@ -254,8 +293,13 @@ function PickerGroupDate(props) {
|
|
|
254
293
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
255
294
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
256
295
|
React.useEffect(() => {
|
|
257
|
-
|
|
258
|
-
|
|
296
|
+
var _a;
|
|
297
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
298
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
299
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
300
|
+
} else {
|
|
301
|
+
console.warn('Height measurement anomaly');
|
|
302
|
+
}
|
|
259
303
|
}
|
|
260
304
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
261
305
|
const getSelectedIndex = scrollTop => {
|
|
@@ -264,7 +308,8 @@ function PickerGroupDate(props) {
|
|
|
264
308
|
// 当selectedIndex变化时,调整滚动位置
|
|
265
309
|
React.useEffect(() => {
|
|
266
310
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
267
|
-
|
|
311
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
312
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
268
313
|
setCurrentIndex(selectedIndex);
|
|
269
314
|
}
|
|
270
315
|
}, [selectedIndex, range]);
|
|
@@ -283,7 +328,9 @@ function PickerGroupDate(props) {
|
|
|
283
328
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
284
329
|
const newIndex = getSelectedIndex(scrollTop);
|
|
285
330
|
setIsTouching(false);
|
|
286
|
-
|
|
331
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
332
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
333
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
287
334
|
// 更新日期值
|
|
288
335
|
if (updateDay) {
|
|
289
336
|
// 解析文本中的数字(移除年、月、日等后缀)
|
|
@@ -370,8 +417,13 @@ function PickerGroupRegion(props) {
|
|
|
370
417
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
371
418
|
const isUserBeginScrollRef = React.useRef(false);
|
|
372
419
|
React.useEffect(() => {
|
|
373
|
-
|
|
374
|
-
|
|
420
|
+
var _a;
|
|
421
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
422
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
423
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
424
|
+
} else {
|
|
425
|
+
console.warn('Height measurement anomaly');
|
|
426
|
+
}
|
|
375
427
|
}
|
|
376
428
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
377
429
|
const getSelectedIndex = scrollTop => {
|
|
@@ -380,7 +432,8 @@ function PickerGroupRegion(props) {
|
|
|
380
432
|
// 当selectedIndex变化时,调整滚动位置
|
|
381
433
|
React.useEffect(() => {
|
|
382
434
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
383
|
-
|
|
435
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
436
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
384
437
|
setCurrentIndex(selectedIndex);
|
|
385
438
|
}
|
|
386
439
|
}, [selectedIndex, range]);
|
|
@@ -398,7 +451,9 @@ function PickerGroupRegion(props) {
|
|
|
398
451
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
399
452
|
const newIndex = getSelectedIndex(scrollTop);
|
|
400
453
|
setIsTouching(false);
|
|
401
|
-
|
|
454
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
455
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
456
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
402
457
|
updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current);
|
|
403
458
|
}, 100);
|
|
404
459
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker-group.js","sources":["../../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001)\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","targetScrollTop","setTargetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","current","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_jsx","View","id","ref","el","className","style","height","color","itemSelectedColor","undefined","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","_jsxs","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"picker-group.js","sources":["../../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\n// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop\nconst setTargetScrollTopWithScale = (\n setTargetScrollTop: (value: number) => void,\n baseValue: number,\n randomOffset?: number\n) => {\n Taro.getSystemInfo({\n success: (res) => {\n // 使用类型断言访问可能不存在的 lengthScaleRatio 属性\n const lengthScaleRatio = (res as any).lengthScaleRatio ?? 1\n if (!(res as any).lengthScaleRatio) {\n console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用默认值 1')\n }\n const scaledValue = baseValue * lengthScaleRatio\n const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue\n setTargetScrollTop(finalValue)\n },\n fail: (err) => {\n console.error('获取系统信息失败:', err)\n // 失败时使用默认值 1\n const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue\n setTargetScrollTop(finalValue)\n }\n })\n}\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","setTargetScrollTopWithScale","setTargetScrollTop","baseValue","randomOffset","Taro","getSystemInfo","success","res","lengthScaleRatio","_a","console","warn","scaledValue","finalValue","undefined","fail","err","error","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","targetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","process","env","TARO_PLATFORM","current","scrollHeigh","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_jsx","View","id","ref","el","className","style","height","color","itemSelectedColor","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","_jsxs","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
|
|
@@ -1,11 +1,34 @@
|
|
|
1
1
|
import { createComponent } from 'solid-js/web';
|
|
2
2
|
import { View, ScrollView } from '@tarojs/components';
|
|
3
|
+
import Taro from '@tarojs/taro';
|
|
3
4
|
import * as React from 'react';
|
|
4
5
|
|
|
5
6
|
// 定义常量
|
|
6
7
|
const PICKER_LINE_HEIGHT = 34; // px
|
|
7
8
|
const PICKER_VISIBLE_ITEMS = 7; // 可见行数
|
|
8
9
|
const PICKER_BLANK_ITEMS = 3; // 空白行数
|
|
10
|
+
// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop
|
|
11
|
+
const setTargetScrollTopWithScale = (setTargetScrollTop, baseValue, randomOffset) => {
|
|
12
|
+
Taro.getSystemInfo({
|
|
13
|
+
success: res => {
|
|
14
|
+
var _a;
|
|
15
|
+
// 使用类型断言访问可能不存在的 lengthScaleRatio 属性
|
|
16
|
+
const lengthScaleRatio = (_a = res.lengthScaleRatio) !== null && _a !== void 0 ? _a : 1;
|
|
17
|
+
if (!res.lengthScaleRatio) {
|
|
18
|
+
console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用默认值 1');
|
|
19
|
+
}
|
|
20
|
+
const scaledValue = baseValue * lengthScaleRatio;
|
|
21
|
+
const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue;
|
|
22
|
+
setTargetScrollTop(finalValue);
|
|
23
|
+
},
|
|
24
|
+
fail: err => {
|
|
25
|
+
console.error('获取系统信息失败:', err);
|
|
26
|
+
// 失败时使用默认值 1
|
|
27
|
+
const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue;
|
|
28
|
+
setTargetScrollTop(finalValue);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
};
|
|
9
32
|
function PickerGroupBasic(props) {
|
|
10
33
|
const {
|
|
11
34
|
range = [],
|
|
@@ -26,8 +49,13 @@ function PickerGroupBasic(props) {
|
|
|
26
49
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
27
50
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
28
51
|
React.useEffect(() => {
|
|
29
|
-
|
|
30
|
-
|
|
52
|
+
var _a;
|
|
53
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
54
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
55
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
56
|
+
} else {
|
|
57
|
+
console.warn('Height measurement anomaly');
|
|
58
|
+
}
|
|
31
59
|
}
|
|
32
60
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
33
61
|
// 获取选中的索引
|
|
@@ -37,7 +65,8 @@ function PickerGroupBasic(props) {
|
|
|
37
65
|
// 当selectedIndex变化时,调整滚动位置
|
|
38
66
|
React.useEffect(() => {
|
|
39
67
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
40
|
-
|
|
68
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
69
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
41
70
|
setCurrentIndex(selectedIndex);
|
|
42
71
|
}
|
|
43
72
|
}, [selectedIndex, range]);
|
|
@@ -56,7 +85,9 @@ function PickerGroupBasic(props) {
|
|
|
56
85
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
57
86
|
const newIndex = getSelectedIndex(scrollTop);
|
|
58
87
|
setIsTouching(false);
|
|
59
|
-
|
|
88
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
89
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
90
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
60
91
|
updateIndex(newIndex, columnId);
|
|
61
92
|
onColumnChange === null || onColumnChange === void 0 ? void 0 : onColumnChange({
|
|
62
93
|
columnId,
|
|
@@ -149,8 +180,13 @@ function PickerGroupTime(props) {
|
|
|
149
180
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
150
181
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
151
182
|
React.useEffect(() => {
|
|
152
|
-
|
|
153
|
-
|
|
183
|
+
var _a;
|
|
184
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
185
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
186
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
187
|
+
} else {
|
|
188
|
+
console.warn('Height measurement anomaly');
|
|
189
|
+
}
|
|
154
190
|
}
|
|
155
191
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
156
192
|
const getSelectedIndex = scrollTop => {
|
|
@@ -159,7 +195,8 @@ function PickerGroupTime(props) {
|
|
|
159
195
|
// 当selectedIndex变化时,调整滚动位置
|
|
160
196
|
React.useEffect(() => {
|
|
161
197
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
162
|
-
|
|
198
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
199
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
163
200
|
setCurrentIndex(selectedIndex);
|
|
164
201
|
}
|
|
165
202
|
}, [selectedIndex, range]);
|
|
@@ -182,7 +219,9 @@ function PickerGroupTime(props) {
|
|
|
182
219
|
const isLimited = Boolean(updateIndex(newIndex, columnId, true));
|
|
183
220
|
// 如果没有触发限位,才执行归中逻辑
|
|
184
221
|
if (!isLimited) {
|
|
185
|
-
|
|
222
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
223
|
+
const randomOffset = Math.random() * 0.001;
|
|
224
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
186
225
|
}
|
|
187
226
|
}, 100);
|
|
188
227
|
};
|
|
@@ -269,8 +308,13 @@ function PickerGroupDate(props) {
|
|
|
269
308
|
const [isTouching, setIsTouching] = React.useState(false);
|
|
270
309
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
271
310
|
React.useEffect(() => {
|
|
272
|
-
|
|
273
|
-
|
|
311
|
+
var _a;
|
|
312
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
313
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
314
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
315
|
+
} else {
|
|
316
|
+
console.warn('Height measurement anomaly');
|
|
317
|
+
}
|
|
274
318
|
}
|
|
275
319
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
276
320
|
const getSelectedIndex = scrollTop => {
|
|
@@ -279,7 +323,8 @@ function PickerGroupDate(props) {
|
|
|
279
323
|
// 当selectedIndex变化时,调整滚动位置
|
|
280
324
|
React.useEffect(() => {
|
|
281
325
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
282
|
-
|
|
326
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
327
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
283
328
|
setCurrentIndex(selectedIndex);
|
|
284
329
|
}
|
|
285
330
|
}, [selectedIndex, range]);
|
|
@@ -298,7 +343,9 @@ function PickerGroupDate(props) {
|
|
|
298
343
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
299
344
|
const newIndex = getSelectedIndex(scrollTop);
|
|
300
345
|
setIsTouching(false);
|
|
301
|
-
|
|
346
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
347
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
348
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
302
349
|
// 更新日期值
|
|
303
350
|
if (updateDay) {
|
|
304
351
|
// 解析文本中的数字(移除年、月、日等后缀)
|
|
@@ -392,8 +439,13 @@ function PickerGroupRegion(props) {
|
|
|
392
439
|
const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT);
|
|
393
440
|
const isUserBeginScrollRef = React.useRef(false);
|
|
394
441
|
React.useEffect(() => {
|
|
395
|
-
|
|
396
|
-
|
|
442
|
+
var _a;
|
|
443
|
+
if (process.env.TARO_PLATFORM !== 'harmony') {
|
|
444
|
+
if (scrollViewRef.current && ((_a = scrollViewRef.current) === null || _a === void 0 ? void 0 : _a.scrollHeigh)) {
|
|
445
|
+
itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length;
|
|
446
|
+
} else {
|
|
447
|
+
console.warn('Height measurement anomaly');
|
|
448
|
+
}
|
|
397
449
|
}
|
|
398
450
|
}, [range.length]); // 只在range长度变化时重新计算
|
|
399
451
|
const getSelectedIndex = scrollTop => {
|
|
@@ -402,7 +454,8 @@ function PickerGroupRegion(props) {
|
|
|
402
454
|
// 当selectedIndex变化时,调整滚动位置
|
|
403
455
|
React.useEffect(() => {
|
|
404
456
|
if (scrollViewRef.current && range.length > 0 && !isTouching) {
|
|
405
|
-
|
|
457
|
+
const baseValue = selectedIndex * itemHeightRef.current;
|
|
458
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue);
|
|
406
459
|
setCurrentIndex(selectedIndex);
|
|
407
460
|
}
|
|
408
461
|
}, [selectedIndex, range]);
|
|
@@ -420,7 +473,9 @@ function PickerGroupRegion(props) {
|
|
|
420
473
|
const scrollTop = scrollViewRef.current.scrollTop;
|
|
421
474
|
const newIndex = getSelectedIndex(scrollTop);
|
|
422
475
|
setIsTouching(false);
|
|
423
|
-
|
|
476
|
+
const baseValue = newIndex * itemHeightRef.current;
|
|
477
|
+
const randomOffset = Math.random() * 0.001; // 随机数为了在一个项内滚动时强制刷新
|
|
478
|
+
setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset);
|
|
424
479
|
updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current);
|
|
425
480
|
}, 100);
|
|
426
481
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picker-group.js","sources":["../../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001)\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (scrollViewRef.current) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n setTargetScrollTop(selectedIndex * itemHeightRef.current)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n setTargetScrollTop(newIndex * itemHeightRef.current + Math.random() * 0.001) // 随机数为了在一个项内滚动时强制刷新\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","targetScrollTop","setTargetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","current","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_$createComponent","View","id","key","ref","el","className","style","height","color","itemSelectedColor","undefined","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"picker-group.js","sources":["../../../../src/components/picker/picker-group.tsx"],"sourcesContent":["import { ScrollView, View } from '@tarojs/components'\nimport Taro from '@tarojs/taro'\nimport * as React from 'react'\n\n// 添加类型定义\ntype TaroScrollView = React.ElementRef<typeof ScrollView>\ntype TaroView = React.ElementRef<typeof View>\n\nexport interface PickerGroupProps {\n mode?: 'basic' | 'time' | 'date' | 'region'\n range: any[]\n rangeKey?: string\n columnId: string\n updateIndex: (index: number, columnId: string, needRevise?: boolean) => void // 替换updateHeight\n onColumnChange?: (e: { columnId: string, index: number }) => void // 修改回调参数名称\n updateDay?: (value: number, fields: number) => void\n selectedIndex?: number // 添加selectedIndex参数\n _updateTrigger?: any // 仅用于强制触发更新\n colors?: {\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n }\n}\n\n// 定义常量\nconst PICKER_LINE_HEIGHT = 34 // px\nconst PICKER_VISIBLE_ITEMS = 7 // 可见行数\nconst PICKER_BLANK_ITEMS = 3 // 空白行数\n\n// 辅助函数:获取系统信息的 lengthScaleRatio 并设置 targetScrollTop\nconst setTargetScrollTopWithScale = (\n setTargetScrollTop: (value: number) => void,\n baseValue: number,\n randomOffset?: number\n) => {\n Taro.getSystemInfo({\n success: (res) => {\n // 使用类型断言访问可能不存在的 lengthScaleRatio 属性\n const lengthScaleRatio = (res as any).lengthScaleRatio ?? 1\n if (!(res as any).lengthScaleRatio) {\n console.warn('Taro.getSystemInfo: lengthScaleRatio 不存在,使用默认值 1')\n }\n const scaledValue = baseValue * lengthScaleRatio\n const finalValue = randomOffset !== undefined ? scaledValue + randomOffset : scaledValue\n setTargetScrollTop(finalValue)\n },\n fail: (err) => {\n console.error('获取系统信息失败:', err)\n // 失败时使用默认值 1\n const finalValue = randomOffset !== undefined ? baseValue + randomOffset : baseValue\n setTargetScrollTop(finalValue)\n }\n })\n}\n\nexport function PickerGroupBasic(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n onColumnChange,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n // 使用selectedIndex初始化当前索引\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n // 触摸状态用于优化用户体验\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n // 获取选中的索引\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId)\n onColumnChange?.({ columnId, index: newIndex })\n }, 100)\n }\n // 滚动处理 - 在滚动时计算索引然后更新选中项样式\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 时间选择器实现\nexport function PickerGroupTime(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const itemRefs = React.useRef<Array<TaroView | null>>([])\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n setIsTouching(false)\n // 调用updateIndex执行限位逻辑,获取是否触发了限位\n const isLimited = Boolean(updateIndex(newIndex, columnId, true))\n // 如果没有触发限位,才执行归中逻辑\n if (!isLimited) {\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n ref={(el) => (itemRefs.current[index] = el)}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{\n height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS,\n }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 日期选择器实现\nexport function PickerGroupDate(props: PickerGroupProps) {\n const {\n range = [],\n columnId,\n updateDay,\n selectedIndex = 0,\n colors = {},\n } = props\n\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const scrollViewRef = React.useRef<TaroScrollView>(null)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 是否处于归中状态\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n\n // 简化为直接在滚动结束时通知父组件\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n\n // 更新日期值\n if (updateDay) {\n // 解析文本中的数字(移除年、月、日等后缀)\n const valueText = range[newIndex] || ''\n const numericValue = parseInt(valueText.replace(/[^0-9]/g, ''))\n updateDay(isNaN(numericValue) ? 0 : numericValue, parseInt(columnId))\n }\n }, 100)\n }\n\n // 滚动处理\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {item}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => setIsTouching(true)}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 地区选择器实现\nexport function PickerGroupRegion(props: PickerGroupProps) {\n const {\n range = [],\n rangeKey,\n columnId,\n updateIndex,\n selectedIndex = 0, // 使用selectedIndex参数,默认为0\n colors = {},\n } = props\n\n const scrollViewRef = React.useRef<any>(null)\n const [targetScrollTop, setTargetScrollTop] = React.useState(0)\n const [currentIndex, setCurrentIndex] = React.useState(selectedIndex)\n const [isTouching, setIsTouching] = React.useState(false)\n\n const itemHeightRef = React.useRef(PICKER_LINE_HEIGHT)\n const isUserBeginScrollRef = React.useRef(false)\n React.useEffect(() => {\n if (process.env.TARO_PLATFORM !== 'harmony') {\n if (scrollViewRef.current && scrollViewRef.current?.scrollHeigh) {\n itemHeightRef.current = scrollViewRef.current.scrollHeight / scrollViewRef.current.childNodes.length\n } else {\n console.warn('Height measurement anomaly')\n }\n }\n }, [range.length]) // 只在range长度变化时重新计算\n\n const getSelectedIndex = (scrollTop: number) => {\n return Math.round(scrollTop / itemHeightRef.current)\n }\n\n // 当selectedIndex变化时,调整滚动位置\n React.useEffect(() => {\n if (scrollViewRef.current && range.length > 0 && !isTouching) {\n const baseValue = selectedIndex * itemHeightRef.current\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue)\n setCurrentIndex(selectedIndex)\n }\n }, [selectedIndex, range])\n\n // 滚动结束处理\n const isCenterTimerId = React.useRef<NodeJS.Timeout | null>(null)\n const handleScrollEnd = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项\n isCenterTimerId.current = setTimeout(() => {\n if (!scrollViewRef.current) return\n\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n\n setIsTouching(false)\n const baseValue = newIndex * itemHeightRef.current\n const randomOffset = Math.random() * 0.001 // 随机数为了在一个项内滚动时强制刷新\n setTargetScrollTopWithScale(setTargetScrollTop, baseValue, randomOffset)\n updateIndex(newIndex, columnId, false, isUserBeginScrollRef.current)\n }, 100)\n }\n\n // 滚动处理 - 在滚动时计算索引\n const handleScroll = () => {\n if (!scrollViewRef.current) return\n if (isCenterTimerId.current) {\n clearTimeout(isCenterTimerId.current)\n isCenterTimerId.current = null\n }\n const scrollTop = scrollViewRef.current.scrollTop\n const newIndex = getSelectedIndex(scrollTop)\n if (newIndex !== currentIndex) {\n setCurrentIndex(newIndex)\n }\n }\n\n // 渲染选项\n const pickerItem = range.map((item, index) => {\n const content = rangeKey && item && typeof item === 'object' ? item[rangeKey] : item\n\n return (\n <View\n id={`picker-item-${columnId}-${index}`}\n key={index}\n className={`taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`}\n style={{\n height: PICKER_LINE_HEIGHT,\n color: index === currentIndex\n ? (colors.itemSelectedColor || undefined)\n : (colors.itemDefaultColor || undefined)\n }}\n >\n {content}\n </View>\n )\n })\n\n const realPickerItems = [\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-top-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ...pickerItem,\n ...new Array(PICKER_BLANK_ITEMS)\n .fill(null)\n .map((_, idx) => (\n <View\n key={`blank-bottom-${idx}`}\n className=\"taro-picker__item taro-picker__item--blank\"\n style={{ height: PICKER_LINE_HEIGHT }}\n />\n )),\n ]\n return (\n <View className=\"taro-picker__group\">\n <View className=\"taro-picker__mask\" />\n <View className=\"taro-picker__indicator\" />\n <ScrollView\n ref={scrollViewRef}\n scrollY\n showScrollbar={false}\n className=\"taro-picker__content\"\n style={{ height: PICKER_LINE_HEIGHT * PICKER_VISIBLE_ITEMS }}\n scrollTop={targetScrollTop}\n onScroll={handleScroll}\n onTouchStart={() => {\n setIsTouching(true)\n isUserBeginScrollRef.current = true\n }}\n onScrollEnd={handleScrollEnd}\n scrollWithAnimation\n >\n {realPickerItems}\n </ScrollView>\n </View>\n )\n}\n\n// 默认导出,根据 mode 自动分发\nexport function PickerGroup(props: PickerGroupProps) {\n switch (props.mode) {\n case 'time':\n return <PickerGroupTime {...props} />\n case 'date':\n return <PickerGroupDate {...props} />\n case 'region':\n return <PickerGroupRegion {...props} />\n default:\n return <PickerGroupBasic {...props} />\n }\n}\n"],"names":["PICKER_LINE_HEIGHT","PICKER_VISIBLE_ITEMS","PICKER_BLANK_ITEMS","setTargetScrollTopWithScale","setTargetScrollTop","baseValue","randomOffset","Taro","getSystemInfo","success","res","lengthScaleRatio","_a","console","warn","scaledValue","finalValue","undefined","fail","err","error","PickerGroupBasic","props","range","rangeKey","columnId","updateIndex","onColumnChange","selectedIndex","colors","targetScrollTop","React","useState","scrollViewRef","useRef","itemRefs","currentIndex","setCurrentIndex","isTouching","setIsTouching","itemHeightRef","useEffect","process","env","TARO_PLATFORM","current","scrollHeigh","scrollHeight","childNodes","length","getSelectedIndex","scrollTop","Math","round","isCenterTimerId","handleScrollEnd","clearTimeout","setTimeout","newIndex","random","index","handleScroll","pickerItem","map","item","content","_$createComponent","View","id","key","ref","el","className","style","height","color","itemSelectedColor","itemDefaultColor","children","realPickerItems","Array","fill","_","idx","ScrollView","scrollY","showScrollbar","onScroll","onTouchStart","onScrollEnd","scrollWithAnimation","PickerGroupTime","isLimited","Boolean","PickerGroupDate","updateDay","valueText","numericValue","parseInt","replace","isNaN","PickerGroupRegion","isUserBeginScrollRef","PickerGroup","mode"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tarojs/components-react",
|
|
3
|
-
"version": "4.1.9-
|
|
3
|
+
"version": "4.1.9-beta.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main:h5": "dist/index.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"identity-obj-proxy": "^3.0.0",
|
|
30
30
|
"swiper": "11.1.15",
|
|
31
31
|
"tslib": "^2.6.2",
|
|
32
|
-
"@tarojs/components": "4.1.9-
|
|
33
|
-
"@tarojs/
|
|
34
|
-
"@tarojs/
|
|
32
|
+
"@tarojs/components": "4.1.9-beta.1",
|
|
33
|
+
"@tarojs/shared": "4.1.9-beta.1",
|
|
34
|
+
"@tarojs/taro": "4.1.9-beta.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@babel/plugin-transform-runtime": "^7.24.1",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"jest-environment-jsdom": "^29.7.0",
|
|
48
48
|
"solid-js": "^1.8.16",
|
|
49
49
|
"ts-jest": "^29.1.1",
|
|
50
|
-
"@tarojs/
|
|
51
|
-
"@tarojs/
|
|
50
|
+
"@tarojs/runtime": "4.1.9-beta.1",
|
|
51
|
+
"@tarojs/helper": "4.1.9-beta.1"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
54
|
"react": "*",
|