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

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,6 +9,17 @@ 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
+ }
12
23
  // 数据验证函数
13
24
  function validateRegionData(data) {
14
25
  let componentName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Picker';
@@ -109,14 +120,15 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
109
120
  level = 'region',
110
121
  regionData,
111
122
  textProps = EMPTY_OBJECT,
123
+ colors = EMPTY_OBJECT,
112
124
  onChange,
113
125
  onColumnChange,
114
126
  onCancel,
115
127
  children,
116
- style,
117
- formType
128
+ formType,
129
+ lang
118
130
  } = props,
119
- restProps = __rest(props, ["mode", "disabled", "range", "rangeKey", "value", "start", "end", "fields", "headerText", "level", "regionData", "textProps", "onChange", "onColumnChange", "onCancel", "children", "style", "formType"]);
131
+ restProps = __rest(props, ["mode", "disabled", "range", "rangeKey", "value", "start", "end", "fields", "headerText", "level", "regionData", "textProps", "colors", "onChange", "onColumnChange", "onCancel", "children", "formType", "lang"]);
120
132
  const indexRef = React__default.useRef([]);
121
133
  const pickerDateRef = React__default.useRef();
122
134
  // 记录是否是用户滚动
@@ -171,8 +183,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
171
183
  } else if (mode === 'date') {
172
184
  const val = value;
173
185
  let _value = verifyDate(val) || new Date(new Date().setHours(0, 0, 0, 0));
174
- const _start = verifyDate(start) || new Date('1970/01/01');
175
- const _end = verifyDate(end) || new Date('2999/01/01');
186
+ const _start = verifyDate(start) || new Date('1875/01/01');
187
+ const _end = verifyDate(end) || new Date('2100/01/01');
176
188
  if (!(_start <= _end)) {
177
189
  throw new Error(`Picker start time must be less than end time.`);
178
190
  }
@@ -264,15 +276,18 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
264
276
  // 隐藏 Picker
265
277
  const hidePicker = React__default.useCallback(() => {
266
278
  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)
267
288
  setState(prev => Object.assign(Object.assign({}, prev), {
268
- fadeOut: true
289
+ hidden: true
269
290
  }));
270
- setTimeout(() => {
271
- setState(prev => Object.assign(Object.assign({}, prev), {
272
- hidden: true,
273
- fadeOut: false
274
- }));
275
- }, 350);
276
291
  }, []);
277
292
  // 更新索引
278
293
  const updateIndex = React__default.useCallback(function (index, columnId) {
@@ -586,6 +601,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
586
601
  onColumnChange: handleColumnChange,
587
602
  columnId: String(index),
588
603
  selectedIndex: state.selectedIndices[index] // 传递对应列的selectedIndex
604
+ ,
605
+ colors: colors
589
606
  }, index));
590
607
  }
591
608
  case 'time':
@@ -596,12 +613,16 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
596
613
  updateIndex: updateIndex,
597
614
  columnId: "0",
598
615
  selectedIndex: state.selectedIndices[0] // 传递小时列的selectedIndex
616
+ ,
617
+ colors: colors
599
618
  }, `hour-${state.timestamp}`), /*#__PURE__*/jsx(PickerGroup, {
600
619
  mode: "time",
601
620
  range: minutesRange,
602
621
  updateIndex: updateIndex,
603
622
  columnId: "1",
604
623
  selectedIndex: state.selectedIndices[1] // 传递分钟列的selectedIndex
624
+ ,
625
+ colors: colors
605
626
  }, `minute-${state.timestamp}`)];
606
627
  }
607
628
  case 'date':
@@ -614,9 +635,11 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
614
635
  } = pickerDateRef.current;
615
636
  const currentYear = _updateValue[0];
616
637
  const currentMonth = _updateValue[1];
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}日`);
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}`);
620
643
  const renderView = [/*#__PURE__*/jsx(PickerGroup, {
621
644
  mode: "date",
622
645
  range: yearRange,
@@ -624,6 +647,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
624
647
  updateIndex: updateIndex,
625
648
  columnId: "0",
626
649
  selectedIndex: state.selectedIndices[0] // 传递年份列的selectedIndex
650
+ ,
651
+ colors: colors
627
652
  }, `year`)];
628
653
  if (fields === 'month' || fields === 'day') {
629
654
  renderView.push(/*#__PURE__*/jsx(PickerGroup, {
@@ -633,6 +658,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
633
658
  updateIndex: updateIndex,
634
659
  columnId: "1",
635
660
  selectedIndex: state.selectedIndices[1] // 传递月份列的selectedIndex
661
+ ,
662
+ colors: colors
636
663
  }, `month`));
637
664
  }
638
665
  if (fields === 'day') {
@@ -643,6 +670,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
643
670
  updateIndex: updateIndex,
644
671
  columnId: "2",
645
672
  selectedIndex: state.selectedIndices[2] // 传递日期列的selectedIndex
673
+ ,
674
+ colors: colors
646
675
  }, `day`));
647
676
  }
648
677
  return renderView;
@@ -676,7 +705,8 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
676
705
  rangeKey: "value",
677
706
  updateIndex: updateIndex,
678
707
  columnId: String(i),
679
- selectedIndex: state.selectedIndices[i]
708
+ selectedIndex: state.selectedIndices[i],
709
+ colors: colors
680
710
  }, `region-${i}`));
681
711
  }
682
712
  return columns;
@@ -688,9 +718,11 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
688
718
  updateIndex: updateIndex,
689
719
  columnId: "0",
690
720
  selectedIndex: state.selectedIndices[0] // 传递selector模式的selectedIndex
721
+ ,
722
+ colors: colors
691
723
  });
692
724
  }
693
- }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, columnsCount]);
725
+ }, [mode, range, rangeKey, fields, updateIndex, updateDay, handleColumnChange, pickerDateRef.current, level, regionData, state.selectedIndices, columnsCount, lang, colors]);
694
726
  // 动画类名控制逻辑
695
727
  const clsMask = classNames('taro-picker__mask-overlay', 'taro-picker__animate-fade-in', {
696
728
  'taro-picker__animate-fade-out': state.fadeOut
@@ -703,14 +735,15 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
703
735
  showPicker,
704
736
  hidePicker
705
737
  }));
738
+ // 获取语言文本
739
+ const langText = getLanguageText(lang);
706
740
  return /*#__PURE__*/jsxs(View, {
707
741
  ref: ref // 直接绑定 ref
708
742
  ,
709
- style: style,
710
743
  ...(formType ? {
711
744
  'data-form-type': formType
712
745
  } : {}),
713
- ...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'style', 'formType']),
746
+ ...omit(restProps, ['mode', 'disabled', 'range', 'rangeKey', 'value', 'start', 'end', 'fields', 'name', 'textProps', 'onChange', 'onColumnChange', 'onCancel', 'children', 'formType']),
714
747
  children: [/*#__PURE__*/jsx(View, {
715
748
  onClick: showPicker,
716
749
  children: children
@@ -726,14 +759,20 @@ const Picker = /*#__PURE__*/React__default.forwardRef((props, ref) => {
726
759
  children: [/*#__PURE__*/jsx(View, {
727
760
  className: "taro-picker__action",
728
761
  onClick: handleCancel,
729
- children: (_a = textProps.cancelText) !== null && _a !== void 0 ? _a : '取消'
762
+ style: {
763
+ color: colors.cancelButtonColor
764
+ },
765
+ children: (_a = textProps.cancelText) !== null && _a !== void 0 ? _a : langText.cancel
730
766
  }), headerText && /*#__PURE__*/jsx(View, {
731
767
  className: "taro-picker__title",
732
768
  children: headerText
733
769
  }), /*#__PURE__*/jsx(View, {
734
770
  className: "taro-picker__action",
735
771
  onClick: handleChange,
736
- children: (_b = textProps.okText) !== null && _b !== void 0 ? _b : '确定'
772
+ style: {
773
+ color: colors.confirmButtonColor
774
+ },
775
+ children: (_b = textProps.okText) !== null && _b !== void 0 ? _b : langText.confirm
737
776
  })]
738
777
  }), /*#__PURE__*/jsx(View, {
739
778
  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 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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"}
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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"}
@@ -12,7 +12,9 @@ function PickerGroupBasic(props) {
12
12
  columnId,
13
13
  updateIndex,
14
14
  onColumnChange,
15
- selectedIndex = 0 // 使用selectedIndex参数,默认为0
15
+ selectedIndex = 0,
16
+ // 使用selectedIndex参数,默认为0
17
+ colors = {}
16
18
  } = props;
17
19
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
18
20
  const scrollViewRef = React.useRef(null);
@@ -49,6 +51,7 @@ function PickerGroupBasic(props) {
49
51
  }
50
52
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
51
53
  isCenterTimerId.current = setTimeout(() => {
54
+ if (!scrollViewRef.current) return;
52
55
  const scrollTop = scrollViewRef.current.scrollTop;
53
56
  const newIndex = getSelectedIndex(scrollTop);
54
57
  setIsTouching(false);
@@ -81,7 +84,8 @@ function PickerGroupBasic(props) {
81
84
  ref: el => itemRefs.current[index] = el,
82
85
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
83
86
  style: {
84
- height: PICKER_LINE_HEIGHT
87
+ height: PICKER_LINE_HEIGHT,
88
+ color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
85
89
  },
86
90
  children: content
87
91
  }, index);
@@ -127,7 +131,8 @@ function PickerGroupTime(props) {
127
131
  rangeKey,
128
132
  columnId,
129
133
  updateIndex,
130
- selectedIndex = 0
134
+ selectedIndex = 0,
135
+ colors = {}
131
136
  } = props;
132
137
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
133
138
  const scrollViewRef = React.useRef(null);
@@ -161,6 +166,7 @@ function PickerGroupTime(props) {
161
166
  }
162
167
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
163
168
  isCenterTimerId.current = setTimeout(() => {
169
+ if (!scrollViewRef.current) return;
164
170
  const scrollTop = scrollViewRef.current.scrollTop;
165
171
  const newIndex = getSelectedIndex(scrollTop);
166
172
  setIsTouching(false);
@@ -193,7 +199,8 @@ function PickerGroupTime(props) {
193
199
  ref: el => itemRefs.current[index] = el,
194
200
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
195
201
  style: {
196
- height: PICKER_LINE_HEIGHT
202
+ height: PICKER_LINE_HEIGHT,
203
+ color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
197
204
  },
198
205
  children: content
199
206
  }, index);
@@ -238,7 +245,8 @@ function PickerGroupDate(props) {
238
245
  range = [],
239
246
  columnId,
240
247
  updateDay,
241
- selectedIndex = 0
248
+ selectedIndex = 0,
249
+ colors = {}
242
250
  } = props;
243
251
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
244
252
  const scrollViewRef = React.useRef(null);
@@ -271,6 +279,7 @@ function PickerGroupDate(props) {
271
279
  }
272
280
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
273
281
  isCenterTimerId.current = setTimeout(() => {
282
+ if (!scrollViewRef.current) return;
274
283
  const scrollTop = scrollViewRef.current.scrollTop;
275
284
  const newIndex = getSelectedIndex(scrollTop);
276
285
  setIsTouching(false);
@@ -303,7 +312,8 @@ function PickerGroupDate(props) {
303
312
  id: `picker-item-${columnId}-${index}`,
304
313
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
305
314
  style: {
306
- height: PICKER_LINE_HEIGHT
315
+ height: PICKER_LINE_HEIGHT,
316
+ color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
307
317
  },
308
318
  children: item
309
319
  }, index);
@@ -349,7 +359,9 @@ function PickerGroupRegion(props) {
349
359
  rangeKey,
350
360
  columnId,
351
361
  updateIndex,
352
- selectedIndex = 0 // 使用selectedIndex参数,默认为0
362
+ selectedIndex = 0,
363
+ // 使用selectedIndex参数,默认为0
364
+ colors = {}
353
365
  } = props;
354
366
  const scrollViewRef = React.useRef(null);
355
367
  const [targetScrollTop, setTargetScrollTop] = React.useState(0);
@@ -382,6 +394,7 @@ function PickerGroupRegion(props) {
382
394
  }
383
395
  // 做一个0.1s延时 0.1s之内没有新的滑动 则把选项归到中间 然后更新选中项
384
396
  isCenterTimerId.current = setTimeout(() => {
397
+ if (!scrollViewRef.current) return;
385
398
  const scrollTop = scrollViewRef.current.scrollTop;
386
399
  const newIndex = getSelectedIndex(scrollTop);
387
400
  setIsTouching(false);
@@ -409,7 +422,8 @@ function PickerGroupRegion(props) {
409
422
  id: `picker-item-${columnId}-${index}`,
410
423
  className: `taro-picker__item${index === currentIndex ? ' taro-picker__item--selected' : ''}`,
411
424
  style: {
412
- height: PICKER_LINE_HEIGHT
425
+ height: PICKER_LINE_HEIGHT,
426
+ color: index === currentIndex ? colors.itemSelectedColor || undefined : colors.itemDefaultColor || undefined
413
427
  },
414
428
  children: content
415
429
  }, index);