@tarojs/components-react 4.1.5-beta.7 → 4.1.5-beta.8

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.
@@ -9,17 +9,6 @@ import { jsx, jsxs } from 'react/jsx-runtime';
9
9
 
10
10
  const EMPTY_ARRAY = [];
11
11
  const EMPTY_OBJECT = {};
12
- // 语言映射函数
13
- function getLanguageText(lang) {
14
- const isEnglish = lang === 'en-US' || lang === 'en-GB';
15
- return {
16
- confirm: isEnglish ? 'Confirm' : '确定',
17
- cancel: isEnglish ? 'Cancel' : '取消',
18
- year: isEnglish ? 'Year ' : '年',
19
- month: isEnglish ? 'Month ' : '月',
20
- day: isEnglish ? 'Day ' : '日'
21
- };
22
- }
23
12
  // 数据验证函数
24
13
  function validateRegionData(data) {
25
14
  let componentName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Picker';
@@ -120,15 +109,14 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
120
109
  level = 'region',
121
110
  regionData,
122
111
  textProps = EMPTY_OBJECT,
123
- colors = EMPTY_OBJECT,
124
112
  onChange,
125
113
  onColumnChange,
126
114
  onCancel,
127
115
  children,
128
- formType,
129
- lang
116
+ style,
117
+ formType
130
118
  } = props,
131
- restProps = __rest(props, ["mode", "disabled", "range", "rangeKey", "value", "start", "end", "fields", "headerText", "level", "regionData", "textProps", "colors", "onChange", "onColumnChange", "onCancel", "children", "formType", "lang"]);
119
+ restProps = __rest(props, ["mode", "disabled", "range", "rangeKey", "value", "start", "end", "fields", "headerText", "level", "regionData", "textProps", "onChange", "onColumnChange", "onCancel", "children", "style", "formType"]);
132
120
  const indexRef = React__default.useRef([]);
133
121
  const pickerDateRef = React__default.useRef();
134
122
  // 记录是否是用户滚动
@@ -183,8 +171,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
183
171
  } else if (mode === 'date') {
184
172
  const val = value;
185
173
  let _value = verifyDate(val) || new Date(new Date().setHours(0, 0, 0, 0));
186
- const _start = verifyDate(start) || new Date('1875/01/01');
187
- const _end = verifyDate(end) || new Date('2100/01/01');
174
+ const _start = verifyDate(start) || new Date('1970/01/01');
175
+ const _end = verifyDate(end) || new Date('2999/01/01');
188
176
  if (!(_start <= _end)) {
189
177
  throw new Error(`Picker start time must be less than end time.`);
190
178
  }
@@ -276,18 +264,15 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
276
264
  // 隐藏 Picker
277
265
  const hidePicker = React__default.useCallback(() => {
278
266
  isInitializationCompletedRef.current = false;
279
- // 动画暂时不支持,暂时屏蔽相关样式挂载逻辑
280
- // setState(prev => ({ ...prev, fadeOut: true }))
281
- // setTimeout(() => {
282
- // setState(prev => ({
283
- // ...prev,
284
- // hidden: true,
285
- // fadeOut: false
286
- // }))
287
- // }, 350)
288
267
  setState(prev => Object.assign(Object.assign({}, prev), {
289
- hidden: true
268
+ fadeOut: true
290
269
  }));
270
+ setTimeout(() => {
271
+ setState(prev => Object.assign(Object.assign({}, prev), {
272
+ hidden: true,
273
+ fadeOut: false
274
+ }));
275
+ }, 350);
291
276
  }, []);
292
277
  // 更新索引
293
278
  const updateIndex = React__default.useCallback(function (index, columnId) {
@@ -601,8 +586,6 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
601
586
  onColumnChange: handleColumnChange,
602
587
  columnId: String(index),
603
588
  selectedIndex: state.selectedIndices[index] // 传递对应列的selectedIndex
604
- ,
605
- colors: colors
606
589
  }, index));
607
590
  }
608
591
  case 'time':
@@ -613,16 +596,12 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
613
596
  updateIndex: updateIndex,
614
597
  columnId: "0",
615
598
  selectedIndex: state.selectedIndices[0] // 传递小时列的selectedIndex
616
- ,
617
- colors: colors
618
599
  }, `hour-${state.timestamp}`), /*#__PURE__*/jsx(PickerGroup, {
619
600
  mode: "time",
620
601
  range: minutesRange,
621
602
  updateIndex: updateIndex,
622
603
  columnId: "1",
623
604
  selectedIndex: state.selectedIndices[1] // 传递分钟列的selectedIndex
624
- ,
625
- colors: colors
626
605
  }, `minute-${state.timestamp}`)];
627
606
  }
628
607
  case 'date':
@@ -635,11 +614,9 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
635
614
  } = pickerDateRef.current;
636
615
  const currentYear = _updateValue[0];
637
616
  const currentMonth = _updateValue[1];
638
- const langText = getLanguageText(lang);
639
- const isEnglish = lang === 'en-US' || lang === 'en-GB';
640
- const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear()).map(item => isEnglish ? `${langText.year}${item}` : `${item}${langText.year}`);
641
- const monthRange = getMonthRange(_start, _end, currentYear).map(item => isEnglish ? `${langText.month}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.month}`);
642
- const dayRange = getDayRange(_start, _end, currentYear, currentMonth).map(item => isEnglish ? `${langText.day}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.day}`);
617
+ const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear()).map(item => `${item}年`);
618
+ const monthRange = getMonthRange(_start, _end, currentYear).map(item => `${item < 10 ? `0${item}` : item}月`);
619
+ const dayRange = getDayRange(_start, _end, currentYear, currentMonth).map(item => `${item < 10 ? `0${item}` : item}日`);
643
620
  const renderView = [/*#__PURE__*/jsx(PickerGroup, {
644
621
  mode: "date",
645
622
  range: yearRange,
@@ -647,8 +624,6 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
647
624
  updateIndex: updateIndex,
648
625
  columnId: "0",
649
626
  selectedIndex: state.selectedIndices[0] // 传递年份列的selectedIndex
650
- ,
651
- colors: colors
652
627
  }, `year`)];
653
628
  if (fields === 'month' || fields === 'day') {
654
629
  renderView.push(/*#__PURE__*/jsx(PickerGroup, {
@@ -658,8 +633,6 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
658
633
  updateIndex: updateIndex,
659
634
  columnId: "1",
660
635
  selectedIndex: state.selectedIndices[1] // 传递月份列的selectedIndex
661
- ,
662
- colors: colors
663
636
  }, `month`));
664
637
  }
665
638
  if (fields === 'day') {
@@ -670,8 +643,6 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
670
643
  updateIndex: updateIndex,
671
644
  columnId: "2",
672
645
  selectedIndex: state.selectedIndices[2] // 传递日期列的selectedIndex
673
- ,
674
- colors: colors
675
646
  }, `day`));
676
647
  }
677
648
  return renderView;
@@ -705,8 +676,7 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
705
676
  rangeKey: "value",
706
677
  updateIndex: updateIndex,
707
678
  columnId: String(i),
708
- selectedIndex: state.selectedIndices[i],
709
- colors: colors
679
+ selectedIndex: state.selectedIndices[i]
710
680
  }, `region-${i}`));
711
681
  }
712
682
  return columns;
@@ -718,11 +688,9 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
718
688
  updateIndex: updateIndex,
719
689
  columnId: "0",
720
690
  selectedIndex: state.selectedIndices[0] // 传递selector模式的selectedIndex
721
- ,
722
- colors: colors
723
691
  });
724
692
  }
725
- }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, columnsCount, lang, colors]);
693
+ }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, columnsCount]);
726
694
  // 动画类名控制逻辑
727
695
  const clsMask = classNames('taro-picker__mask-overlay', 'taro-picker__animate-fade-in', {
728
696
  'taro-picker__animate-fade-out': state.fadeOut
@@ -735,15 +703,14 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
735
703
  showPicker,
736
704
  hidePicker
737
705
  }));
738
- // 获取语言文本
739
- const langText = getLanguageText(lang);
740
706
  return /*#__PURE__*/jsxs(View, {
741
707
  ref: ref // 直接绑定 ref
742
708
  ,
709
+ style: style,
743
710
  ...(formType ? {
744
711
  'data-form-type': formType
745
712
  } : {}),
746
- ...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'formType']),
713
+ ...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'style', 'formType']),
747
714
  children: [/*#__PURE__*/jsx(View, {
748
715
  onClick: showPicker,
749
716
  children: children
@@ -759,20 +726,14 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
759
726
  children: [/*#__PURE__*/jsx(View, {
760
727
  className: "taro-picker__action",
761
728
  onClick: handleCancel,
762
- style: {
763
- color: colors.cancelButtonColor
764
- },
765
- children: (_a = textProps.cancelText) !== null && _a !== void 0 ? _a : langText.cancel
729
+ children: (_a = textProps.cancelText) !== null && _a !== void 0 ? _a : '取消'
766
730
  }), headerText && /*#__PURE__*/jsx(View, {
767
731
  className: "taro-picker__title",
768
732
  children: headerText
769
733
  }), /*#__PURE__*/jsx(View, {
770
734
  className: "taro-picker__action",
771
735
  onClick: handleChange,
772
- style: {
773
- color: colors.confirmButtonColor
774
- },
775
- children: (_b = textProps.okText) !== null && _b !== void 0 ? _b : langText.confirm
736
+ children: (_b = textProps.okText) !== null && _b !== void 0 ? _b : '确定'
776
737
  })]
777
738
  }), /*#__PURE__*/jsx(View, {
778
739
  className: "taro-picker__bd",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/picker/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport { View } from '@tarojs/components'\nimport classNames from 'classnames'\nimport React from 'react'\n\nimport {\n compareTime,\n getDayRange,\n getMonthRange,\n getYearRange,\n hoursRange,\n minutesRange,\n omit,\n verifyDate,\n verifyTime,\n verifyValue\n} from '../../utils'\nimport { PickerGroup } from './picker-group'\n\n// 定义 RegionData 类型,与 Taro 官方保持一致\nexport interface RegionData {\n value: string\n code: string\n postcode?: string\n children?: RegionData[]\n}\n\n// 稳定的空数组引用,避免每次渲染都创建新引用\nconst EMPTY_ARRAY: any[] = []\nconst EMPTY_OBJECT: Record<string, any> = {}\n\n// 语言映射函数\nfunction getLanguageText(lang?: string) {\n const isEnglish = lang === 'en-US' || lang === 'en-GB'\n return {\n confirm: isEnglish ? 'Confirm' : '确定',\n cancel: isEnglish ? 'Cancel' : '取消',\n year: isEnglish ? 'Year ' : '年',\n month: isEnglish ? 'Month ' : '月',\n day: isEnglish ? 'Day ' : '日'\n }\n}\n\n// 数据验证函数\nfunction validateRegionData(data: RegionData[], componentName = 'Picker'): { valid: boolean, error?: string } {\n if (!data) {\n return { valid: false, error: `${componentName}: regionData is required for region mode` }\n }\n\n if (!Array.isArray(data)) {\n return { valid: false, error: `${componentName}: regionData must be an array` }\n }\n\n if (data.length === 0) {\n return { valid: false, error: `${componentName}: regionData cannot be empty` }\n }\n\n // 检查数据结构\n const validateItem = (item: RegionData, path: string): { valid: boolean, error?: string } => {\n if (!item || typeof item !== 'object') {\n return { valid: false, error: `${componentName}: Invalid item at ${path}` }\n }\n\n if (!item.value || typeof item.value !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'value' field at ${path}` }\n }\n\n if (!item.code || typeof item.code !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'code' field at ${path}` }\n }\n\n if (item.postcode !== undefined && typeof item.postcode !== 'string') {\n return { valid: false, error: `${componentName}: Invalid 'postcode' field at ${path}` }\n }\n\n if (item.children && !Array.isArray(item.children)) {\n return { valid: false, error: `${componentName}: 'children' must be an array at ${path}` }\n }\n\n if (item.children) {\n for (let i = 0; i < item.children.length; i++) {\n const childResult = validateItem(item.children[i], `${path}.children[${i}]`)\n if (!childResult.valid) return childResult\n }\n }\n\n return { valid: true }\n }\n\n for (let i = 0; i < data.length; i++) {\n const result = validateItem(data[i], `regionData[${i}]`)\n if (!result.valid) return result\n }\n\n return { valid: true }\n}\n\nexport type Mode = 'selector' | 'multiSelector' | 'time' | 'date' | 'region'\nexport type Fields = 'day' | 'month' | 'year'\nexport type RegionLevel = 'province' | 'city' | 'region'\nexport type PickerValue = number | number[] | string | string[]\n\nexport interface PickerText {\n okText?: string\n cancelText?: string\n}\n\nexport interface PickerColors {\n confirmButtonColor?: string // 确定按钮颜色\n cancelButtonColor?: string // 取消按钮颜色\n itemDefaultColor?: string // 选项字体默认颜色\n itemSelectedColor?: string // 选项字体选中颜色\n}\n\nexport interface PickerDate {\n _value: Date\n _start: Date\n _end: Date\n _updateValue: [number, number, number]\n}\n\ninterface IProps {\n mode?: Mode\n disabled?: boolean\n range?: any[]\n rangeKey?: string\n value?: PickerValue\n start?: string\n end?: string\n fields?: Fields\n name?: string\n headerText?: string\n regionData?: RegionData[] // 省市区/县数据(region 模式专用)\n level?: RegionLevel\n textProps?: PickerText\n colors?: PickerColors // 颜色配置\n onChange?: (e: { detail: { value: PickerValue, code?: string, postcode?: string } }) => void\n onColumnChange?: (e: { detail: { column: number, value: number } }) => void\n onCancel?: () => void\n children?: React.ReactNode\n forwardedRef?: React.MutableRefObject<HTMLDivElement | null>\n formType?: string\n lang?: string // 语言参数,支持 'zh-CN'、'en-US'、'en-GB'\n}\n\ninterface IState {\n pickerValue: PickerValue\n selectedIndices: number[] // 索引数组\n hidden: boolean\n fadeOut: boolean\n isWillLoadCalled: boolean\n timestamp: number\n}\n\n// 普通函数\nfunction getRegionColumnsCount(level: RegionLevel): number {\n switch (level) {\n case 'province': return 1\n case 'city': return 2\n case 'region': return 3\n default: return 3 // 默认显示省市区/县三列\n }\n}\n\n// 暴露给外部的 ref 类型\nexport interface PickerRef {\n showPicker: () => void\n hidePicker: () => void\n}\n\nconst Picker = React.forwardRef<PickerRef, IProps>((props, ref) => {\n const {\n mode = 'selector',\n disabled = false,\n range = EMPTY_ARRAY,\n rangeKey,\n value,\n start = '',\n end = '',\n fields = 'day',\n headerText,\n level = 'region',\n regionData,\n textProps = EMPTY_OBJECT,\n colors = EMPTY_OBJECT,\n onChange,\n onColumnChange,\n onCancel,\n children,\n formType,\n lang,\n ...restProps\n } = props\n const indexRef = React.useRef<number[]>([])\n const pickerDateRef = React.useRef<PickerDate>()\n // 记录是否是用户滚动\n const isInitializationCompletedRef = React.useRef(false)\n\n const [state, setState] = React.useState<IState>({\n pickerValue: value || EMPTY_ARRAY,\n selectedIndices: EMPTY_ARRAY.slice(), // 索引数组\n hidden: true,\n fadeOut: false,\n isWillLoadCalled: false,\n timestamp: 0 // 用以部分模式下强制刷新组件的的时间戳,多用于反复限位\n })\n\n // 在组件内部\n const [columnsCount, setColumnsCount] = React.useState(() => getRegionColumnsCount(level))\n\n // 只在level变化时更新列数\n React.useEffect(() => {\n setColumnsCount(getRegionColumnsCount(level))\n }, [level])\n\n // 获取当前索引数组\n const getIndices = React.useCallback(() => {\n return indexRef.current\n }, [])\n\n // 处理属性变化\n const handleProps = React.useCallback(() => {\n if (mode === 'selector') {\n const val = value as number\n indexRef.current = [verifyValue(val, range) ? Math.floor(val) : 0]\n } else if (mode === 'multiSelector') {\n const val = value as number[]\n indexRef.current = []\n range.forEach((rangeItem, index) => {\n const valItem = val?.[index]\n const item = verifyValue(valItem, rangeItem as any[]) ? Math.floor(valItem) : 0\n indexRef.current.push(item)\n })\n } else if (mode === 'time') {\n let val = value as string\n if (!verifyTime(val)) {\n console.warn('time picker value illegal')\n val = '0:0'\n }\n const time = val.split(':').map(n => +n)\n\n // 在 hoursRange 和 minutesRange 中找到对应的索引\n const hourIndex = hoursRange.findIndex(item => parseInt(item) === time[0])\n const minuteIndex = minutesRange.findIndex(item => parseInt(item) === time[1])\n\n // 确保索引在有效范围内\n const safeHourIndex = hourIndex >= 0 ? hourIndex : 0 // 默认为第一项\n const safeMinuteIndex = minuteIndex >= 0 ? minuteIndex : 0 // 默认为第一项\n\n indexRef.current = [\n Math.max(0, Math.min(safeHourIndex, hoursRange.length - 1)),\n Math.max(0, Math.min(safeMinuteIndex, minutesRange.length - 1))\n ]\n } else if (mode === 'date') {\n const val = value as string\n let _value = verifyDate(val) || new Date(new Date().setHours(0, 0, 0, 0))\n const _start = verifyDate(start) || new Date('1875/01/01')\n const _end = verifyDate(end) || new Date('2100/01/01')\n if (!(_start <= _end)) {\n throw new Error(`Picker start time must be less than end time.`)\n }\n if (!(_value >= _start && _value <= _end)) {\n _value = _start\n }\n const currentYear = _value.getFullYear()\n const currentMonth = _value.getMonth() + 1\n const currentDay = _value.getDate()\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n indexRef.current = [\n yearRange.indexOf(currentYear),\n monthRange.indexOf(currentMonth),\n dayRange.indexOf(currentDay)\n ]\n if (\n !pickerDateRef.current ||\n pickerDateRef.current._value.getTime() !== _value.getTime() ||\n pickerDateRef.current._start.getTime() !== _start.getTime() ||\n pickerDateRef.current._end.getTime() !== _end.getTime()\n ) {\n pickerDateRef.current = {\n _value,\n _start,\n _end,\n _updateValue: [currentYear, currentMonth, currentDay]\n }\n }\n } else if (mode === 'region') {\n // region 模式处理 - 验证数据\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n indexRef.current = [0]\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n indexRef.current = [0]\n return\n }\n\n // 获取列数\n const val = Array.isArray(value) ? value : []\n\n // 根据level和当前值确定索引\n indexRef.current = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData?.length) {\n indexRef.current.push(0)\n continue\n }\n let idx = 0\n if (typeof val[i] === 'number') {\n const rawIdx = val[i] as number\n idx = (rawIdx >= 0 && rawIdx < currentData.length) ? rawIdx : 0\n } else if (typeof val[i] === 'string') {\n const parsed = parseInt(val[i] as string, 10)\n idx = (parsed >= 0 && parsed < currentData.length) ? parsed : 0\n }\n indexRef.current.push(idx)\n currentData = currentData[idx]?.children || []\n }\n } else {\n throw new Error(`Picker not support \"${mode}\" mode.`)\n }\n\n // 更新索引值\n const newIndices = getIndices()\n setState(prev => ({\n ...prev,\n selectedIndices: newIndices,\n pickerValue: value || EMPTY_ARRAY\n }))\n }, [mode, range, value, start, end, fields, regionData, level, columnsCount, getIndices])\n\n // 组件初始化\n React.useEffect(() => {\n setState(prev => ({ ...prev, isWillLoadCalled: true }))\n handleProps()\n }, [])\n\n // 属性变化监听 - 添加 value 依赖以支持联动选择器\n React.useEffect(() => {\n if (state.isWillLoadCalled) {\n handleProps()\n }\n }, [handleProps, state.isWillLoadCalled, JSON.stringify(value)])\n\n // 显示 Picker\n const showPicker = React.useCallback(() => {\n if (disabled) return\n isInitializationCompletedRef.current = false\n const newIndices = getIndices()\n setState(prev => ({\n ...prev,\n selectedIndices: newIndices,\n hidden: false\n }))\n }, [disabled, getIndices])\n\n // 隐藏 Picker\n const hidePicker = React.useCallback(() => {\n isInitializationCompletedRef.current = false\n // 动画暂时不支持,暂时屏蔽相关样式挂载逻辑\n // setState(prev => ({ ...prev, fadeOut: true }))\n // setTimeout(() => {\n // setState(prev => ({\n // ...prev,\n // hidden: true,\n // fadeOut: false\n // }))\n // }, 350)\n setState(prev => ({ ...prev, hidden: true }))\n }, [])\n\n // 更新索引\n const updateIndex = React.useCallback((index: number, columnId: string, needRevise: boolean = false, isUserScrollRef: boolean = false) => {\n const columnIndex = Number(columnId)\n let finalIndices = [...state.selectedIndices]\n finalIndices[columnIndex] = index\n let hasLimited = false\n\n // region 模式的级联更新逻辑\n if (mode === 'region' && regionData) {\n if (isUserScrollRef && !isInitializationCompletedRef.current) {\n isInitializationCompletedRef.current = true\n }\n if (!isInitializationCompletedRef.current) {\n return\n }\n // 重置后续列\n for (let i = columnIndex + 1; i < columnsCount; i++) {\n finalIndices[i] = 0\n }\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n return // 直接返回\n }\n\n // time picker\n if (needRevise && mode === 'time') {\n let startTime = start\n let endTime = end\n\n if (!verifyTime(startTime)) startTime = '00:00'\n if (!verifyTime(endTime)) endTime = '23:59'\n if (!compareTime(startTime, endTime)) return false\n\n const timeRanges = [hoursRange.slice(), minutesRange.slice()]\n // 然后基于更新后的索引数组计算时间\n const timeStr = finalIndices.map((idx, i) => {\n const rangeIdx = Math.max(0, Math.min(idx, timeRanges[i].length - 1))\n return timeRanges[i][rangeIdx] || '00'\n }).join(':')\n\n // 检查是否需要限位\n if (!compareTime(startTime, timeStr)) {\n // 修正到 start\n const startParts = startTime.split(':').map(part => parseInt(part))\n const newIndices = startParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n } else if (!compareTime(timeStr, endTime)) {\n // 修正到 end\n const endParts = endTime.split(':').map(part => parseInt(part))\n const newIndices = endParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n }\n\n // 触发限位,更新状态,其它状态不用主动触发滚动\n if (hasLimited) {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n timestamp: Date.now()\n }))\n } else {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n\n return hasLimited\n }\n\n // 常规更新\n finalIndices[columnIndex] = index\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n\n return false // 没有限位\n }, [start, end, mode, regionData, state.selectedIndices, columnsCount])\n\n // 更新日期\n const updateDay = React.useCallback((value: number, fields: number) => {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n\n // 更新当前字段的值\n _updateValue[fields] = value\n\n // 获取当前年月日\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const currentDay = _updateValue[2]\n\n // 保存原始值用于后面比较\n const originalValues = [..._updateValue]\n\n // 准备最终的索引数组 - 复制当前索引状态作为起点\n const finalIndices = [...state.selectedIndices]\n\n // 获取基础范围数据\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n let dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 根据修改的字段进行不同处理\n if (fields === 0) {\n // 年份索引直接更新\n finalIndices[0] = yearRange.indexOf(currentYear)\n\n // 月份限位处理\n if (monthRange.length > 0) {\n if (currentMonth > monthRange[monthRange.length - 1]) {\n _updateValue[1] = monthRange[monthRange.length - 1]\n }\n if (currentMonth < monthRange[0]) {\n _updateValue[1] = monthRange[0]\n }\n\n // 更新月份索引\n finalIndices[1] = monthRange.indexOf(_updateValue[1])\n\n // 重新计算日期范围\n dayRange = getDayRange(_start, _end, currentYear, _updateValue[1])\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n }\n } else if (fields === 1) { // 月份变化\n // 月份索引直接更新\n finalIndices[1] = monthRange.indexOf(currentMonth)\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n } else if (fields === 2) { // 日期变化\n // 日期索引直接更新\n finalIndices[2] = dayRange.indexOf(currentDay)\n }\n\n // 只在有实际变化时更新状态\n if (\n JSON.stringify(originalValues) !== JSON.stringify(_updateValue) ||\n JSON.stringify(finalIndices) !== JSON.stringify(state.selectedIndices)\n ) {\n // 一次性更新状态\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n }, [state.selectedIndices])\n\n // 处理确认\n const handleChange = React.useCallback(() => {\n const newIndices = [...state.selectedIndices]\n indexRef.current = newIndices\n\n let newValue: PickerValue = newIndices.length && mode !== 'selector'\n ? newIndices\n : newIndices[0]\n\n if (mode === 'time') {\n const range = [hoursRange.slice(), minutesRange.slice()]\n\n // 安全的时间处理,添加边界检查\n const timeArr = newIndices.map<string>((idx, i) => {\n const index = Math.max(0, Math.min(idx, range[i].length - 1))\n return range[i][index] || (i === 0 ? '00' : '00')\n })\n\n // 确保时间值有效\n const validTimeArr = timeArr.map(time => {\n const num = parseInt(time)\n return isNaN(num) ? '00' : time\n })\n\n indexRef.current = validTimeArr.map(item => parseInt(item))\n newValue = validTimeArr.join(':')\n }\n\n if (mode === 'date') {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 添加边界检查,确保索引有效\n const yearIndex = Math.min(Math.max(Math.floor(newIndices[0]), 0), yearRange.length - 1)\n const monthIndex = Math.min(Math.max(Math.floor(newIndices[1]), 0), monthRange.length - 1)\n const dayIndex = Math.min(Math.max(Math.floor(newIndices[2]), 0), dayRange.length - 1)\n\n const year = yearRange[yearIndex]\n const month = monthRange[monthIndex]\n const day = dayRange[dayIndex]\n\n // 确保所有值都存在\n if (year === undefined || month === undefined || day === undefined) {\n console.warn('Date picker: invalid date values', { year, month, day })\n return\n }\n\n if (fields === 'year') {\n newValue = year.toString()\n } else if (fields === 'month') {\n // YYYY-MM 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}`\n } else {\n // YYYY-MM-DD 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n onChange?.({ detail: { value: newValue } })\n return\n }\n\n if (mode === 'region') {\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n return\n }\n\n // 直接使用索引数组\n const selectedCodes: string[] = []\n let postcode = ''\n\n // 安全获取选中值\n let currentData = regionData\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData || currentData.length === 0) break\n\n const index = newIndices[i] || 0\n if (index < 0 || index >= currentData.length) break\n\n const item = currentData[index]\n selectedCodes.push(item.code)\n\n // 如果是最后一项,获取邮政编码\n if (i === columnsCount - 1 && item.postcode) {\n postcode = item.postcode\n }\n\n // 准备下一级数据\n currentData = item.children || []\n }\n\n // 检查索引数组长度是否符合要求\n if (newIndices.length < columnsCount) {\n console.warn('Region picker: incomplete selection')\n return\n }\n\n // 触发 onChange 事件,包含 code 信息\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newIndices\n }))\n\n onChange?.({\n detail: {\n value: newIndices,\n code: selectedCodes.join(','),\n postcode\n }\n })\n return\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n // 触发 onChange 事件,格式与原始组件一致\n onChange?.({ detail: { value: newValue } })\n }, [hidePicker, state.selectedIndices, mode, fields, onChange, regionData, columnsCount])\n\n // 处理列变化\n const handleColumnChange = React.useCallback((e: { columnId: string, index: number }) => {\n const { columnId, index } = e\n onColumnChange?.({\n detail: {\n column: Number(columnId),\n value: index\n }\n })\n }, [onColumnChange])\n\n // 处理取消\n const handleCancel = React.useCallback(() => {\n hidePicker()\n onCancel?.()\n }, [hidePicker, onCancel])\n\n // 渲染选择器组\n const renderPickerGroup = React.useMemo(() => {\n switch (mode) {\n case 'multiSelector': {\n return range.map((rangeItem, index) => (\n <PickerGroup\n key={index}\n range={rangeItem}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n onColumnChange={handleColumnChange}\n columnId={String(index)}\n selectedIndex={state.selectedIndices[index]} // 传递对应列的selectedIndex\n colors={colors}\n />\n ))\n }\n case 'time': {\n return [\n <PickerGroup\n key={`hour-${state.timestamp}`}\n mode=\"time\"\n range={hoursRange}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递小时列的selectedIndex\n colors={colors}\n />,\n <PickerGroup\n key={`minute-${state.timestamp}`}\n mode=\"time\"\n range={minutesRange}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递分钟列的selectedIndex\n colors={colors}\n />\n ]\n }\n case 'date': {\n if (!pickerDateRef.current) return null\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n\n const langText = getLanguageText(lang)\n const isEnglish = lang === 'en-US' || lang === 'en-GB'\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n .map(item => isEnglish ? `${langText.year}${item}` : `${item}${langText.year}`)\n const monthRange = getMonthRange(_start, _end, currentYear)\n .map(item => isEnglish ? `${langText.month}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.month}`)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n .map(item => isEnglish ? `${langText.day}${item < 10 ? `0${item}` : item}` : `${item < 10 ? `0${item}` : item}${langText.day}`)\n\n const renderView = [\n <PickerGroup\n key={`year`}\n mode=\"date\"\n range={yearRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递年份列的selectedIndex\n colors={colors}\n />\n ]\n if (fields === 'month' || fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`month`}\n mode=\"date\"\n range={monthRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递月份列的selectedIndex\n colors={colors}\n />\n )\n }\n if (fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`day`}\n mode=\"date\"\n range={dayRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"2\"\n selectedIndex={state.selectedIndices[2]} // 传递日期列的selectedIndex\n colors={colors}\n />\n )\n }\n return renderView\n }\n case 'region': {\n // region 模式处理 - 自动识别数据层级\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return null\n }\n\n // 简化验证逻辑\n if (!validateRegionData(regionData, 'Picker').valid) {\n return null\n }\n\n const columns: JSX.Element[] = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (i > 0 && currentData?.length) {\n // 获取上一级选中项的children作为当前列数据\n const prevIndex = state.selectedIndices[i - 1] || 0\n if (prevIndex >= 0 && prevIndex < currentData.length) {\n currentData = currentData[prevIndex].children || []\n } else {\n currentData = []\n }\n }\n\n columns.push(\n <PickerGroup\n key={`region-${i}`}\n mode=\"region\"\n range={currentData}\n rangeKey=\"value\"\n updateIndex={updateIndex}\n columnId={String(i)}\n selectedIndex={state.selectedIndices[i]}\n colors={colors}\n />\n )\n }\n\n return columns\n }\n default:\n return (\n <PickerGroup\n range={range}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递selector模式的selectedIndex\n colors={colors}\n />\n )\n }\n }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, columnsCount, lang, colors])\n\n // 动画类名控制逻辑\n const clsMask = classNames('taro-picker__mask-overlay', 'taro-picker__animate-fade-in', {\n 'taro-picker__animate-fade-out': state.fadeOut\n })\n const clsSlider = classNames('taro-picker', 'taro-picker__animate-slide-up', {\n 'taro-picker__animate-slide-down': state.fadeOut\n })\n\n // 暴露方法给外部\n React.useImperativeHandle(ref, () => ({\n showPicker,\n hidePicker\n }))\n\n // 获取语言文本\n const langText = getLanguageText(lang)\n\n return (\n <View\n ref={ref as any} // 直接绑定 ref\n {...(formType ? { 'data-form-type': formType } : {})}\n {...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'formType'])}\n >\n <View onClick={showPicker}>\n {children}\n </View>\n {!state.hidden && (\n <View className=\"taro-picker__overlay\">\n <View className={clsMask} onClick={handleCancel} />\n <View className={clsSlider}>\n <View className=\"taro-picker__hd\">\n <View\n className=\"taro-picker__action\"\n onClick={handleCancel}\n style={{ color: colors.cancelButtonColor }}\n >\n {textProps.cancelText ?? langText.cancel}\n </View>\n {headerText && (\n <View className=\"taro-picker__title\">{headerText}</View>\n )}\n <View\n className=\"taro-picker__action\"\n onClick={handleChange}\n style={{ color: colors.confirmButtonColor }}\n >\n {textProps.okText ?? langText.confirm}\n </View>\n </View>\n <View className=\"taro-picker__bd\">{renderPickerGroup}</View>\n </View>\n </View>\n )}\n </View>\n )\n})\n\nPicker.displayName = 'Picker'\nexport default Picker\n"],"names":["EMPTY_ARRAY","EMPTY_OBJECT","getLanguageText","lang","isEnglish","confirm","cancel","year","month","day","validateRegionData","data","componentName","arguments","length","undefined","valid","error","Array","isArray","validateItem","item","path","value","code","postcode","children","i","childResult","result","getRegionColumnsCount","level","Picker","React","forwardRef","props","ref","mode","disabled","range","rangeKey","start","end","fields","headerText","regionData","textProps","colors","onChange","onColumnChange","onCancel","formType","restProps","__rest","indexRef","useRef","pickerDateRef","isInitializationCompletedRef","state","setState","useState","pickerValue","selectedIndices","slice","hidden","fadeOut","isWillLoadCalled","timestamp","columnsCount","setColumnsCount","useEffect","getIndices","useCallback","current","handleProps","val","verifyValue","Math","floor","forEach","rangeItem","index","valItem","push","verifyTime","console","warn","time","split","map","n","hourIndex","hoursRange","findIndex","parseInt","minuteIndex","minutesRange","safeHourIndex","safeMinuteIndex","max","min","_value","verifyDate","Date","setHours","_start","_end","Error","currentYear","getFullYear","currentMonth","getMonth","currentDay","getDate","yearRange","getYearRange","monthRange","getMonthRange","dayRange","getDayRange","indexOf","getTime","_updateValue","validation","currentData","idx","rawIdx","parsed","_a","newIndices","prev","Object","assign","JSON","stringify","showPicker","hidePicker","updateIndex","columnId","needRevise","isUserScrollRef","columnIndex","Number","finalIndices","hasLimited","startTime","endTime","compareTime","timeRanges","timeStr","rangeIdx","join","startParts","part","endParts","now","updateDay","originalValues","handleChange","newValue","timeArr","validTimeArr","num","isNaN","yearIndex","monthIndex","dayIndex","toString","detail","selectedCodes","handleColumnChange","e","column","handleCancel","renderPickerGroup","useMemo","_jsx","PickerGroup","String","selectedIndex","langText","renderView","columns","prevIndex","clsMask","classNames","clsSlider","useImperativeHandle","_jsxs","View","omit","onClick","className","style","color","cancelButtonColor","cancelText","confirmButtonColor","_b","okText","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/picker/index.tsx"],"sourcesContent":["import './style/index.scss'\n\nimport { View } from '@tarojs/components'\nimport classNames from 'classnames'\nimport React from 'react'\n\nimport {\n compareTime,\n getDayRange,\n getMonthRange,\n getYearRange,\n hoursRange,\n minutesRange,\n omit,\n verifyDate,\n verifyTime,\n verifyValue\n} from '../../utils'\nimport { PickerGroup } from './picker-group'\n\n// 定义 RegionData 类型,与 Taro 官方保持一致\nexport interface RegionData {\n value: string\n code: string\n postcode?: string\n children?: RegionData[]\n}\n\n// 稳定的空数组引用,避免每次渲染都创建新引用\nconst EMPTY_ARRAY: any[] = []\nconst EMPTY_OBJECT: Record<string, any> = {}\n\n// 数据验证函数\nfunction validateRegionData(data: RegionData[], componentName = 'Picker'): { valid: boolean, error?: string } {\n if (!data) {\n return { valid: false, error: `${componentName}: regionData is required for region mode` }\n }\n\n if (!Array.isArray(data)) {\n return { valid: false, error: `${componentName}: regionData must be an array` }\n }\n\n if (data.length === 0) {\n return { valid: false, error: `${componentName}: regionData cannot be empty` }\n }\n\n // 检查数据结构\n const validateItem = (item: RegionData, path: string): { valid: boolean, error?: string } => {\n if (!item || typeof item !== 'object') {\n return { valid: false, error: `${componentName}: Invalid item at ${path}` }\n }\n\n if (!item.value || typeof item.value !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'value' field at ${path}` }\n }\n\n if (!item.code || typeof item.code !== 'string') {\n return { valid: false, error: `${componentName}: Missing or invalid 'code' field at ${path}` }\n }\n\n if (item.postcode !== undefined && typeof item.postcode !== 'string') {\n return { valid: false, error: `${componentName}: Invalid 'postcode' field at ${path}` }\n }\n\n if (item.children && !Array.isArray(item.children)) {\n return { valid: false, error: `${componentName}: 'children' must be an array at ${path}` }\n }\n\n if (item.children) {\n for (let i = 0; i < item.children.length; i++) {\n const childResult = validateItem(item.children[i], `${path}.children[${i}]`)\n if (!childResult.valid) return childResult\n }\n }\n\n return { valid: true }\n }\n\n for (let i = 0; i < data.length; i++) {\n const result = validateItem(data[i], `regionData[${i}]`)\n if (!result.valid) return result\n }\n\n return { valid: true }\n}\n\nexport type Mode = 'selector' | 'multiSelector' | 'time' | 'date' | 'region'\nexport type Fields = 'day' | 'month' | 'year'\nexport type RegionLevel = 'province' | 'city' | 'region'\nexport type PickerValue = number | number[] | string | string[]\n\nexport interface PickerText {\n okText?: string\n cancelText?: string\n}\n\nexport interface PickerDate {\n _value: Date\n _start: Date\n _end: Date\n _updateValue: [number, number, number]\n}\n\ninterface IProps {\n mode?: Mode\n disabled?: boolean\n range?: any[]\n rangeKey?: string\n value?: PickerValue\n start?: string\n end?: string\n fields?: Fields\n name?: string\n headerText?: string\n regionData?: RegionData[] // 省市区/县数据(region 模式专用)\n level?: RegionLevel\n textProps?: PickerText\n onChange?: (e: { detail: { value: PickerValue, code?: string, postcode?: string } }) => void\n onColumnChange?: (e: { detail: { column: number, value: number } }) => void\n onCancel?: () => void\n children?: React.ReactNode\n style?: React.CSSProperties\n forwardedRef?: React.MutableRefObject<HTMLDivElement | null>\n formType?: string\n}\n\ninterface IState {\n pickerValue: PickerValue\n selectedIndices: number[] // 索引数组\n hidden: boolean\n fadeOut: boolean\n isWillLoadCalled: boolean\n timestamp: number\n}\n\n// 普通函数\nfunction getRegionColumnsCount(level: RegionLevel): number {\n switch (level) {\n case 'province': return 1\n case 'city': return 2\n case 'region': return 3\n default: return 3 // 默认显示省市区/县三列\n }\n}\n\n// 暴露给外部的 ref 类型\nexport interface PickerRef {\n showPicker: () => void\n hidePicker: () => void\n}\n\nconst Picker = React.forwardRef<PickerRef, IProps>((props, ref) => {\n const {\n mode = 'selector',\n disabled = false,\n range = EMPTY_ARRAY,\n rangeKey,\n value,\n start = '',\n end = '',\n fields = 'day',\n headerText,\n level = 'region',\n regionData,\n textProps = EMPTY_OBJECT,\n onChange,\n onColumnChange,\n onCancel,\n children,\n style,\n formType,\n ...restProps\n } = props\n const indexRef = React.useRef<number[]>([])\n const pickerDateRef = React.useRef<PickerDate>()\n // 记录是否是用户滚动\n const isInitializationCompletedRef = React.useRef(false)\n\n const [state, setState] = React.useState<IState>({\n pickerValue: value || EMPTY_ARRAY,\n selectedIndices: EMPTY_ARRAY.slice(), // 索引数组\n hidden: true,\n fadeOut: false,\n isWillLoadCalled: false,\n timestamp: 0 // 用以部分模式下强制刷新组件的的时间戳,多用于反复限位\n })\n\n // 在组件内部\n const [columnsCount, setColumnsCount] = React.useState(() => getRegionColumnsCount(level))\n\n // 只在level变化时更新列数\n React.useEffect(() => {\n setColumnsCount(getRegionColumnsCount(level))\n }, [level])\n\n // 获取当前索引数组\n const getIndices = React.useCallback(() => {\n return indexRef.current\n }, [])\n\n // 处理属性变化\n const handleProps = React.useCallback(() => {\n if (mode === 'selector') {\n const val = value as number\n indexRef.current = [verifyValue(val, range) ? Math.floor(val) : 0]\n } else if (mode === 'multiSelector') {\n const val = value as number[]\n indexRef.current = []\n range.forEach((rangeItem, index) => {\n const valItem = val?.[index]\n const item = verifyValue(valItem, rangeItem as any[]) ? Math.floor(valItem) : 0\n indexRef.current.push(item)\n })\n } else if (mode === 'time') {\n let val = value as string\n if (!verifyTime(val)) {\n console.warn('time picker value illegal')\n val = '0:0'\n }\n const time = val.split(':').map(n => +n)\n\n // 在 hoursRange 和 minutesRange 中找到对应的索引\n const hourIndex = hoursRange.findIndex(item => parseInt(item) === time[0])\n const minuteIndex = minutesRange.findIndex(item => parseInt(item) === time[1])\n\n // 确保索引在有效范围内\n const safeHourIndex = hourIndex >= 0 ? hourIndex : 0 // 默认为第一项\n const safeMinuteIndex = minuteIndex >= 0 ? minuteIndex : 0 // 默认为第一项\n\n indexRef.current = [\n Math.max(0, Math.min(safeHourIndex, hoursRange.length - 1)),\n Math.max(0, Math.min(safeMinuteIndex, minutesRange.length - 1))\n ]\n } else if (mode === 'date') {\n const val = value as string\n let _value = verifyDate(val) || new Date(new Date().setHours(0, 0, 0, 0))\n const _start = verifyDate(start) || new Date('1970/01/01')\n const _end = verifyDate(end) || new Date('2999/01/01')\n if (!(_start <= _end)) {\n throw new Error(`Picker start time must be less than end time.`)\n }\n if (!(_value >= _start && _value <= _end)) {\n _value = _start\n }\n const currentYear = _value.getFullYear()\n const currentMonth = _value.getMonth() + 1\n const currentDay = _value.getDate()\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n indexRef.current = [\n yearRange.indexOf(currentYear),\n monthRange.indexOf(currentMonth),\n dayRange.indexOf(currentDay)\n ]\n if (\n !pickerDateRef.current ||\n pickerDateRef.current._value.getTime() !== _value.getTime() ||\n pickerDateRef.current._start.getTime() !== _start.getTime() ||\n pickerDateRef.current._end.getTime() !== _end.getTime()\n ) {\n pickerDateRef.current = {\n _value,\n _start,\n _end,\n _updateValue: [currentYear, currentMonth, currentDay]\n }\n }\n } else if (mode === 'region') {\n // region 模式处理 - 验证数据\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n indexRef.current = [0]\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n indexRef.current = [0]\n return\n }\n\n // 获取列数\n const val = Array.isArray(value) ? value : []\n\n // 根据level和当前值确定索引\n indexRef.current = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData?.length) {\n indexRef.current.push(0)\n continue\n }\n let idx = 0\n if (typeof val[i] === 'number') {\n const rawIdx = val[i] as number\n idx = (rawIdx >= 0 && rawIdx < currentData.length) ? rawIdx : 0\n } else if (typeof val[i] === 'string') {\n const parsed = parseInt(val[i] as string, 10)\n idx = (parsed >= 0 && parsed < currentData.length) ? parsed : 0\n }\n indexRef.current.push(idx)\n currentData = currentData[idx]?.children || []\n }\n } else {\n throw new Error(`Picker not support \"${mode}\" mode.`)\n }\n\n // 更新索引值\n const newIndices = getIndices()\n setState(prev => ({\n ...prev,\n selectedIndices: newIndices,\n pickerValue: value || EMPTY_ARRAY\n }))\n }, [mode, range, value, start, end, fields, regionData, level, columnsCount, getIndices])\n\n // 组件初始化\n React.useEffect(() => {\n setState(prev => ({ ...prev, isWillLoadCalled: true }))\n handleProps()\n }, [])\n\n // 属性变化监听 - 添加 value 依赖以支持联动选择器\n React.useEffect(() => {\n if (state.isWillLoadCalled) {\n handleProps()\n }\n }, [handleProps, state.isWillLoadCalled, JSON.stringify(value)])\n\n // 显示 Picker\n const showPicker = React.useCallback(() => {\n if (disabled) return\n isInitializationCompletedRef.current = false\n const newIndices = getIndices()\n setState(prev => ({\n ...prev,\n selectedIndices: newIndices,\n hidden: false\n }))\n }, [disabled, getIndices])\n\n // 隐藏 Picker\n const hidePicker = React.useCallback(() => {\n isInitializationCompletedRef.current = false\n setState(prev => ({ ...prev, fadeOut: true }))\n setTimeout(() => {\n setState(prev => ({\n ...prev,\n hidden: true,\n fadeOut: false\n }))\n }, 350)\n }, [])\n\n // 更新索引\n const updateIndex = React.useCallback((index: number, columnId: string, needRevise: boolean = false, isUserScrollRef: boolean = false) => {\n const columnIndex = Number(columnId)\n let finalIndices = [...state.selectedIndices]\n finalIndices[columnIndex] = index\n let hasLimited = false\n\n // region 模式的级联更新逻辑\n if (mode === 'region' && regionData) {\n if (isUserScrollRef && !isInitializationCompletedRef.current) {\n isInitializationCompletedRef.current = true\n }\n if (!isInitializationCompletedRef.current) {\n return\n }\n // 重置后续列\n for (let i = columnIndex + 1; i < columnsCount; i++) {\n finalIndices[i] = 0\n }\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n return // 直接返回\n }\n\n // time picker\n if (needRevise && mode === 'time') {\n let startTime = start\n let endTime = end\n\n if (!verifyTime(startTime)) startTime = '00:00'\n if (!verifyTime(endTime)) endTime = '23:59'\n if (!compareTime(startTime, endTime)) return false\n\n const timeRanges = [hoursRange.slice(), minutesRange.slice()]\n // 然后基于更新后的索引数组计算时间\n const timeStr = finalIndices.map((idx, i) => {\n const rangeIdx = Math.max(0, Math.min(idx, timeRanges[i].length - 1))\n return timeRanges[i][rangeIdx] || '00'\n }).join(':')\n\n // 检查是否需要限位\n if (!compareTime(startTime, timeStr)) {\n // 修正到 start\n const startParts = startTime.split(':').map(part => parseInt(part))\n const newIndices = startParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n } else if (!compareTime(timeStr, endTime)) {\n // 修正到 end\n const endParts = endTime.split(':').map(part => parseInt(part))\n const newIndices = endParts.map((time, i) => {\n const idx = timeRanges[i].findIndex(item => parseInt(item) === time)\n return idx >= 0 ? idx : 0\n })\n\n finalIndices = [...newIndices]\n hasLimited = true\n }\n\n // 触发限位,更新状态,其它状态不用主动触发滚动\n if (hasLimited) {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n timestamp: Date.now()\n }))\n } else {\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n\n return hasLimited\n }\n\n // 常规更新\n finalIndices[columnIndex] = index\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n\n return false // 没有限位\n }, [start, end, mode, regionData, state.selectedIndices, columnsCount])\n\n // 更新日期\n const updateDay = React.useCallback((value: number, fields: number) => {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n\n // 更新当前字段的值\n _updateValue[fields] = value\n\n // 获取当前年月日\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const currentDay = _updateValue[2]\n\n // 保存原始值用于后面比较\n const originalValues = [..._updateValue]\n\n // 准备最终的索引数组 - 复制当前索引状态作为起点\n const finalIndices = [...state.selectedIndices]\n\n // 获取基础范围数据\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n let dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 根据修改的字段进行不同处理\n if (fields === 0) {\n // 年份索引直接更新\n finalIndices[0] = yearRange.indexOf(currentYear)\n\n // 月份限位处理\n if (monthRange.length > 0) {\n if (currentMonth > monthRange[monthRange.length - 1]) {\n _updateValue[1] = monthRange[monthRange.length - 1]\n }\n if (currentMonth < monthRange[0]) {\n _updateValue[1] = monthRange[0]\n }\n\n // 更新月份索引\n finalIndices[1] = monthRange.indexOf(_updateValue[1])\n\n // 重新计算日期范围\n dayRange = getDayRange(_start, _end, currentYear, _updateValue[1])\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n }\n } else if (fields === 1) { // 月份变化\n // 月份索引直接更新\n finalIndices[1] = monthRange.indexOf(currentMonth)\n\n // 日期限位处理\n if (dayRange.length > 0) {\n if (currentDay > dayRange[dayRange.length - 1]) {\n _updateValue[2] = dayRange[dayRange.length - 1]\n }\n if (currentDay < dayRange[0]) {\n _updateValue[2] = dayRange[0]\n }\n\n // 更新日期索引\n finalIndices[2] = dayRange.indexOf(_updateValue[2])\n }\n } else if (fields === 2) { // 日期变化\n // 日期索引直接更新\n finalIndices[2] = dayRange.indexOf(currentDay)\n }\n\n // 只在有实际变化时更新状态\n if (\n JSON.stringify(originalValues) !== JSON.stringify(_updateValue) ||\n JSON.stringify(finalIndices) !== JSON.stringify(state.selectedIndices)\n ) {\n // 一次性更新状态\n setState(prev => ({\n ...prev,\n selectedIndices: finalIndices,\n }))\n }\n }, [state.selectedIndices])\n\n // 处理确认\n const handleChange = React.useCallback(() => {\n const newIndices = [...state.selectedIndices]\n indexRef.current = newIndices\n\n let newValue: PickerValue = newIndices.length && mode !== 'selector'\n ? newIndices\n : newIndices[0]\n\n if (mode === 'time') {\n const range = [hoursRange.slice(), minutesRange.slice()]\n\n // 安全的时间处理,添加边界检查\n const timeArr = newIndices.map<string>((idx, i) => {\n const index = Math.max(0, Math.min(idx, range[i].length - 1))\n return range[i][index] || (i === 0 ? '00' : '00')\n })\n\n // 确保时间值有效\n const validTimeArr = timeArr.map(time => {\n const num = parseInt(time)\n return isNaN(num) ? '00' : time\n })\n\n indexRef.current = validTimeArr.map(item => parseInt(item))\n newValue = validTimeArr.join(':')\n }\n\n if (mode === 'date') {\n if (!pickerDateRef.current) return\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n const monthRange = getMonthRange(_start, _end, currentYear)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n\n // 添加边界检查,确保索引有效\n const yearIndex = Math.min(Math.max(Math.floor(newIndices[0]), 0), yearRange.length - 1)\n const monthIndex = Math.min(Math.max(Math.floor(newIndices[1]), 0), monthRange.length - 1)\n const dayIndex = Math.min(Math.max(Math.floor(newIndices[2]), 0), dayRange.length - 1)\n\n const year = yearRange[yearIndex]\n const month = monthRange[monthIndex]\n const day = dayRange[dayIndex]\n\n // 确保所有值都存在\n if (year === undefined || month === undefined || day === undefined) {\n console.warn('Date picker: invalid date values', { year, month, day })\n return\n }\n\n if (fields === 'year') {\n newValue = year.toString()\n } else if (fields === 'month') {\n // YYYY-MM 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}`\n } else {\n // YYYY-MM-DD 格式\n newValue = `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n onChange?.({ detail: { value: newValue } })\n return\n }\n\n if (mode === 'region') {\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return\n }\n\n const validation = validateRegionData(regionData, 'Picker')\n if (!validation.valid) {\n console.error(validation.error)\n return\n }\n\n // 直接使用索引数组\n const selectedCodes: string[] = []\n let postcode = ''\n\n // 安全获取选中值\n let currentData = regionData\n for (let i = 0; i < columnsCount; i++) {\n if (!currentData || currentData.length === 0) break\n\n const index = newIndices[i] || 0\n if (index < 0 || index >= currentData.length) break\n\n const item = currentData[index]\n selectedCodes.push(item.code)\n\n // 如果是最后一项,获取邮政编码\n if (i === columnsCount - 1 && item.postcode) {\n postcode = item.postcode\n }\n\n // 准备下一级数据\n currentData = item.children || []\n }\n\n // 检查索引数组长度是否符合要求\n if (newIndices.length < columnsCount) {\n console.warn('Region picker: incomplete selection')\n return\n }\n\n // 触发 onChange 事件,包含 code 信息\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newIndices\n }))\n\n onChange?.({\n detail: {\n value: newIndices,\n code: selectedCodes.join(','),\n postcode\n }\n })\n return\n }\n\n hidePicker()\n setState(prev => ({\n ...prev,\n pickerValue: newValue\n }))\n\n // 触发 onChange 事件,格式与原始组件一致\n onChange?.({ detail: { value: newValue } })\n }, [hidePicker, state.selectedIndices, mode, fields, onChange, regionData, columnsCount])\n\n // 处理列变化\n const handleColumnChange = React.useCallback((e: { columnId: string, index: number }) => {\n const { columnId, index } = e\n onColumnChange?.({\n detail: {\n column: Number(columnId),\n value: index\n }\n })\n }, [onColumnChange])\n\n // 处理取消\n const handleCancel = React.useCallback(() => {\n hidePicker()\n onCancel?.()\n }, [hidePicker, onCancel])\n\n // 渲染选择器组\n const renderPickerGroup = React.useMemo(() => {\n switch (mode) {\n case 'multiSelector': {\n return range.map((rangeItem, index) => (\n <PickerGroup\n key={index}\n range={rangeItem}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n onColumnChange={handleColumnChange}\n columnId={String(index)}\n selectedIndex={state.selectedIndices[index]} // 传递对应列的selectedIndex\n />\n ))\n }\n case 'time': {\n return [\n <PickerGroup\n key={`hour-${state.timestamp}`}\n mode=\"time\"\n range={hoursRange}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递小时列的selectedIndex\n />,\n <PickerGroup\n key={`minute-${state.timestamp}`}\n mode=\"time\"\n range={minutesRange}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递分钟列的selectedIndex\n />\n ]\n }\n case 'date': {\n if (!pickerDateRef.current) return null\n\n const { _start, _end, _updateValue } = pickerDateRef.current\n const currentYear = _updateValue[0]\n const currentMonth = _updateValue[1]\n\n const yearRange = getYearRange(_start.getFullYear(), _end.getFullYear())\n .map(item => `${item}年`)\n const monthRange = getMonthRange(_start, _end, currentYear)\n .map(item => `${item < 10 ? `0${item}` : item}月`)\n const dayRange = getDayRange(_start, _end, currentYear, currentMonth)\n .map(item => `${item < 10 ? `0${item}` : item}日`)\n\n const renderView = [\n <PickerGroup\n key={`year`}\n mode=\"date\"\n range={yearRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递年份列的selectedIndex\n />\n ]\n if (fields === 'month' || fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`month`}\n mode=\"date\"\n range={monthRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"1\"\n selectedIndex={state.selectedIndices[1]} // 传递月份列的selectedIndex\n />\n )\n }\n if (fields === 'day') {\n renderView.push(\n <PickerGroup\n key={`day`}\n mode=\"date\"\n range={dayRange}\n updateDay={updateDay}\n updateIndex={updateIndex}\n columnId=\"2\"\n selectedIndex={state.selectedIndices[2]} // 传递日期列的selectedIndex\n />\n )\n }\n return renderView\n }\n case 'region': {\n // region 模式处理 - 自动识别数据层级\n if (!regionData) {\n console.error('Picker: regionData is required for region mode')\n return null\n }\n\n // 简化验证逻辑\n if (!validateRegionData(regionData, 'Picker').valid) {\n return null\n }\n\n const columns: JSX.Element[] = []\n let currentData = regionData\n\n for (let i = 0; i < columnsCount; i++) {\n if (i > 0 && currentData?.length) {\n // 获取上一级选中项的children作为当前列数据\n const prevIndex = state.selectedIndices[i - 1] || 0\n if (prevIndex >= 0 && prevIndex < currentData.length) {\n currentData = currentData[prevIndex].children || []\n } else {\n currentData = []\n }\n }\n\n columns.push(\n <PickerGroup\n key={`region-${i}`}\n mode=\"region\"\n range={currentData}\n rangeKey=\"value\"\n updateIndex={updateIndex}\n columnId={String(i)}\n selectedIndex={state.selectedIndices[i]}\n />\n )\n }\n\n return columns\n }\n default:\n return (\n <PickerGroup\n range={range}\n rangeKey={rangeKey}\n updateIndex={updateIndex}\n columnId=\"0\"\n selectedIndex={state.selectedIndices[0]} // 传递selector模式的selectedIndex\n />\n )\n }\n }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, columnsCount])\n\n // 动画类名控制逻辑\n const clsMask = classNames('taro-picker__mask-overlay', 'taro-picker__animate-fade-in', {\n 'taro-picker__animate-fade-out': state.fadeOut\n })\n const clsSlider = classNames('taro-picker', 'taro-picker__animate-slide-up', {\n 'taro-picker__animate-slide-down': state.fadeOut\n })\n\n // 暴露方法给外部\n React.useImperativeHandle(ref, () => ({\n showPicker,\n hidePicker\n }))\n\n return (\n <View\n ref={ref as any} // 直接绑定 ref\n style={style}\n {...(formType ? { 'data-form-type': formType } : {})}\n {...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'style', 'formType'])}\n >\n <View onClick={showPicker}>\n {children}\n </View>\n {!state.hidden && (\n <View className=\"taro-picker__overlay\">\n <View className={clsMask} onClick={handleCancel} />\n <View className={clsSlider}>\n <View className=\"taro-picker__hd\">\n <View className=\"taro-picker__action\" onClick={handleCancel}>\n {textProps.cancelText ?? '取消'}\n </View>\n {headerText && (\n <View className=\"taro-picker__title\">{headerText}</View>\n )}\n <View className=\"taro-picker__action\" onClick={handleChange}>\n {textProps.okText ?? '确定'}\n </View>\n </View>\n <View className=\"taro-picker__bd\">{renderPickerGroup}</View>\n </View>\n </View>\n )}\n </View>\n )\n})\n\nPicker.displayName = 'Picker'\nexport default Picker\n"],"names":["EMPTY_ARRAY","EMPTY_OBJECT","validateRegionData","data","componentName","arguments","length","undefined","valid","error","Array","isArray","validateItem","item","path","value","code","postcode","children","i","childResult","result","getRegionColumnsCount","level","Picker","React","forwardRef","props","ref","mode","disabled","range","rangeKey","start","end","fields","headerText","regionData","textProps","onChange","onColumnChange","onCancel","style","formType","restProps","__rest","indexRef","useRef","pickerDateRef","isInitializationCompletedRef","state","setState","useState","pickerValue","selectedIndices","slice","hidden","fadeOut","isWillLoadCalled","timestamp","columnsCount","setColumnsCount","useEffect","getIndices","useCallback","current","handleProps","val","verifyValue","Math","floor","forEach","rangeItem","index","valItem","push","verifyTime","console","warn","time","split","map","n","hourIndex","hoursRange","findIndex","parseInt","minuteIndex","minutesRange","safeHourIndex","safeMinuteIndex","max","min","_value","verifyDate","Date","setHours","_start","_end","Error","currentYear","getFullYear","currentMonth","getMonth","currentDay","getDate","yearRange","getYearRange","monthRange","getMonthRange","dayRange","getDayRange","indexOf","getTime","_updateValue","validation","currentData","idx","rawIdx","parsed","_a","newIndices","prev","Object","assign","JSON","stringify","showPicker","hidePicker","setTimeout","updateIndex","columnId","needRevise","isUserScrollRef","columnIndex","Number","finalIndices","hasLimited","startTime","endTime","compareTime","timeRanges","timeStr","rangeIdx","join","startParts","part","endParts","now","updateDay","originalValues","handleChange","newValue","timeArr","validTimeArr","num","isNaN","yearIndex","monthIndex","dayIndex","year","month","day","toString","detail","selectedCodes","handleColumnChange","e","column","handleCancel","renderPickerGroup","useMemo","_jsx","PickerGroup","String","selectedIndex","renderView","columns","prevIndex","clsMask","classNames","clsSlider","useImperativeHandle","_jsxs","View","omit","onClick","className","cancelText","okText","_b","displayName"],"mappings":"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"}
@@ -12,9 +12,7 @@ function PickerGroupBasic(props) {
12
12
  columnId,
13
13
  updateIndex,
14
14
  onColumnChange,
15
- selectedIndex = 0,
16
- // 使用selectedIndex参数,默认为0
17
- colors = {}
15
+ selectedIndex = 0 // 使用selectedIndex参数,默认为0
18
16
  } = props;
19
17
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
20
18
  const scrollViewRef = React.useRef(null);
@@ -51,7 +49,6 @@ function PickerGroupBasic(props) {
51
49
  }
52
50
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
53
51
  isCenterTimerId.current = setTimeout(() => {
54
- if (!scrollViewRef.current) return;
55
52
  const scrollTop = scrollViewRef.current.scrollTop;
56
53
  const newIndex = getSelectedIndex(scrollTop);
57
54
  setIsTouching(false);
@@ -84,8 +81,7 @@ function PickerGroupBasic(props) {
84
81
  ref: el => itemRefs.current[index] = el,
85
82
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
86
83
  style: {
87
- height: PICKER_LINE_HEIGHT,
88
- color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
84
+ height: PICKER_LINE_HEIGHT
89
85
  },
90
86
  children: content
91
87
  }, index);
@@ -131,8 +127,7 @@ function PickerGroupTime(props) {
131
127
  rangeKey,
132
128
  columnId,
133
129
  updateIndex,
134
- selectedIndex = 0,
135
- colors = {}
130
+ selectedIndex = 0
136
131
  } = props;
137
132
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
138
133
  const scrollViewRef = React.useRef(null);
@@ -166,7 +161,6 @@ function PickerGroupTime(props) {
166
161
  }
167
162
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
168
163
  isCenterTimerId.current = setTimeout(() => {
169
- if (!scrollViewRef.current) return;
170
164
  const scrollTop = scrollViewRef.current.scrollTop;
171
165
  const newIndex = getSelectedIndex(scrollTop);
172
166
  setIsTouching(false);
@@ -199,8 +193,7 @@ function PickerGroupTime(props) {
199
193
  ref: el => itemRefs.current[index] = el,
200
194
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
201
195
  style: {
202
- height: PICKER_LINE_HEIGHT,
203
- color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
196
+ height: PICKER_LINE_HEIGHT
204
197
  },
205
198
  children: content
206
199
  }, index);
@@ -245,8 +238,7 @@ function PickerGroupDate(props) {
245
238
  range = [],
246
239
  columnId,
247
240
  updateDay,
248
- selectedIndex = 0,
249
- colors = {}
241
+ selectedIndex = 0
250
242
  } = props;
251
243
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
252
244
  const scrollViewRef = React.useRef(null);
@@ -279,7 +271,6 @@ function PickerGroupDate(props) {
279
271
  }
280
272
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
281
273
  isCenterTimerId.current = setTimeout(() => {
282
- if (!scrollViewRef.current) return;
283
274
  const scrollTop = scrollViewRef.current.scrollTop;
284
275
  const newIndex = getSelectedIndex(scrollTop);
285
276
  setIsTouching(false);
@@ -312,8 +303,7 @@ function PickerGroupDate(props) {
312
303
  id: `picker-item-${columnId}-${index}`,
313
304
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
314
305
  style: {
315
- height: PICKER_LINE_HEIGHT,
316
- color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
306
+ height: PICKER_LINE_HEIGHT
317
307
  },
318
308
  children: item
319
309
  }, index);
@@ -359,9 +349,7 @@ function PickerGroupRegion(props) {
359
349
  rangeKey,
360
350
  columnId,
361
351
  updateIndex,
362
- selectedIndex = 0,
363
- // 使用selectedIndex参数,默认为0
364
- colors = {}
352
+ selectedIndex = 0 // 使用selectedIndex参数,默认为0
365
353
  } = props;
366
354
  const scrollViewRef = React.useRef(null);
367
355
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
@@ -394,7 +382,6 @@ function PickerGroupRegion(props) {
394
382
  }
395
383
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
396
384
  isCenterTimerId.current = setTimeout(() => {
397
- if (!scrollViewRef.current) return;
398
385
  const scrollTop = scrollViewRef.current.scrollTop;
399
386
  const newIndex = getSelectedIndex(scrollTop);
400
387
  setIsTouching(false);
@@ -422,8 +409,7 @@ function PickerGroupRegion(props) {
422
409
  id: `picker-item-${columnId}-${index}`,
423
410
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
424
411
  style: {
425
- height: PICKER_LINE_HEIGHT,
426
- color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
412
+ height: PICKER_LINE_HEIGHT
427
413
  },
428
414
  children: content
429
415
  }, index);