# generated by patch-package 1.0.6
#
# declared package:
#   rc-picker: 2.6.10
#
diff --git a/node_modules/rc-picker/.DS_Store b/node_modules/rc-picker/.DS_Store
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/rc-picker/es/PanelContext.d.ts b/node_modules/rc-picker/es/PanelContext.d.ts
index ea55a93..33038bc 100644
--- a/node_modules/rc-picker/es/PanelContext.d.ts
+++ b/node_modules/rc-picker/es/PanelContext.d.ts
@@ -6,6 +6,7 @@ export declare type ContextOperationRefProps = {
 };
 export declare type PanelContextProps = {
     operationRef?: React.MutableRefObject<ContextOperationRefProps | null>;
+    fieldid?: string;
     /** Only work with time panel */
     hideHeader?: boolean;
     panelRef?: React.Ref<HTMLDivElement>;
diff --git a/node_modules/rc-picker/es/Picker.d.ts b/node_modules/rc-picker/es/Picker.d.ts
index ae02d8f..0829e16 100644
--- a/node_modules/rc-picker/es/Picker.d.ts
+++ b/node_modules/rc-picker/es/Picker.d.ts
@@ -33,6 +33,7 @@ export declare type PickerSharedProps<DateType> = {
     /** Make input readOnly to avoid popup keyboard in mobile */
     inputReadOnly?: boolean;
     id?: string;
+    fieldid?: string;
     format?: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
     suffixIcon?: React.ReactNode;
     clearIcon?: React.ReactNode;
diff --git a/node_modules/rc-picker/es/Picker.js b/node_modules/rc-picker/es/Picker.js
index 31c17d4..100e2a7 100644
--- a/node_modules/rc-picker/es/Picker.js
+++ b/node_modules/rc-picker/es/Picker.js
@@ -41,6 +41,7 @@ function InnerPicker(props) {
   var _props$prefixCls = props.prefixCls,
       prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
       id = props.id,
+      fieldid = props.fieldid,
       tabIndex = props.tabIndex,
       style = props.style,
       className = props.className,
@@ -316,6 +317,7 @@ function InnerPicker(props) {
 
   var panelNode = /*#__PURE__*/React.createElement(PickerPanel, _extends({}, panelProps, {
     generateConfig: generateConfig,
+    fieldid: fieldid,
     className: classNames(_defineProperty({}, "".concat(prefixCls, "-panel-focused"), !typing)),
     value: selectedValue,
     locale: locale,
@@ -338,7 +340,17 @@ function InnerPicker(props) {
 
   var panel = /*#__PURE__*/React.createElement("div", {
     className: "".concat(prefixCls, "-panel-container"),
+    onClick: function onClick(e) {
+      e.stopPropagation();
+    },
+    onMouseEnter: function onMouseEnter(e) {
+      e.stopPropagation();
+    },
+    onMouseLeave: function onMouseLeave(e) {
+      e.stopPropagation();
+    },
     onMouseDown: function onMouseDown(e) {
+      e.stopPropagation();
       e.preventDefault();
     }
   }, panelNode);
@@ -409,6 +421,7 @@ function InnerPicker(props) {
   return /*#__PURE__*/React.createElement(PanelContext.Provider, {
     value: {
       operationRef: operationRef,
+      fieldid: fieldid,
       hideHeader: picker === 'time',
       panelRef: panelDivRef,
       onSelect: onContextSelect,
@@ -429,7 +442,9 @@ function InnerPicker(props) {
     popupPlacement: popupPlacement,
     direction: direction
   }, /*#__PURE__*/React.createElement("div", {
-    ref: containerRef,
+    ref: containerRef // @ts-ignore
+    ,
+    fieldid: fieldid,
     className: classNames(prefixCls, className, (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefixCls, "-disabled"), disabled), _defineProperty(_classNames2, "".concat(prefixCls, "-focused"), focused), _defineProperty(_classNames2, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames2)),
     style: style,
     onMouseDown: onMouseDown,
diff --git a/node_modules/rc-picker/es/PickerPanel.d.ts b/node_modules/rc-picker/es/PickerPanel.d.ts
index 53d6a33..c0ddc7d 100644
--- a/node_modules/rc-picker/es/PickerPanel.d.ts
+++ b/node_modules/rc-picker/es/PickerPanel.d.ts
@@ -13,10 +13,12 @@ import type { MonthCellRender } from './panels/MonthPanel/MonthBody';
 export declare type PickerPanelSharedProps<DateType> = {
     prefixCls?: string;
     className?: string;
+    fieldid?: string;
     style?: React.CSSProperties;
     /** @deprecated Will be removed in next big version. Please use `mode` instead */
     mode?: PanelMode;
     tabIndex?: number;
+    linkedPanels?: boolean;
     locale: Locale;
     generateConfig: GenerateConfig<DateType>;
     value?: DateType | null;
diff --git a/node_modules/rc-picker/es/PickerPanel.js b/node_modules/rc-picker/es/PickerPanel.js
index 82a298a..0bfda63 100644
--- a/node_modules/rc-picker/es/PickerPanel.js
+++ b/node_modules/rc-picker/es/PickerPanel.js
@@ -21,6 +21,7 @@ import DatePanel from './panels/DatePanel';
 import WeekPanel from './panels/WeekPanel';
 import MonthPanel from './panels/MonthPanel';
 import QuarterPanel from './panels/QuarterPanel';
+import HalfYearPanel from './panels/HalfYearPanel';
 import YearPanel from './panels/YearPanel';
 import DecadePanel from './panels/DecadePanel';
 import { isEqual } from './utils/dateUtil';
@@ -37,6 +38,7 @@ function PickerPanel(props) {
   var _props$prefixCls = props.prefixCls,
       prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
       className = props.className,
+      fieldid = props.fieldid,
       style = props.style,
       locale = props.locale,
       generateConfig = props.generateConfig,
@@ -45,6 +47,7 @@ function PickerPanel(props) {
       pickerValue = props.pickerValue,
       defaultPickerValue = props.defaultPickerValue,
       disabledDate = props.disabledDate,
+      linkedPanels = props.linkedPanels,
       mode = props.mode,
       _props$picker = props.picker,
       picker = _props$picker === void 0 ? 'date' : _props$picker,
@@ -183,13 +186,13 @@ function PickerPanel(props) {
       sourceMode = _React$useState2[0],
       setSourceMode = _React$useState2[1];
 
-  var onInternalPanelChange = function onInternalPanelChange(newMode, viewValue) {
+  var onInternalPanelChange = function onInternalPanelChange(newMode, viewValue, type, diff) {
     var nextMode = getInternalNextMode(newMode || mergedMode);
     setSourceMode(mergedMode);
     setInnerMode(nextMode);
 
     if (onPanelChange && (mergedMode !== nextMode || isEqual(generateConfig, viewDate, viewDate))) {
-      onPanelChange(viewValue, nextMode);
+      onPanelChange(viewValue, nextMode, type, diff);
     }
   };
 
@@ -271,7 +274,8 @@ function PickerPanel(props) {
     onViewDateChange: setViewDate,
     sourceMode: sourceMode,
     onPanelChange: onInternalPanelChange,
-    disabledDate: disabledDate
+    disabledDate: disabledDate,
+    showTodayBtn: !linkedPanels && mode === 'date'
   });
 
   delete pickerProps.onChange;
@@ -314,6 +318,15 @@ function PickerPanel(props) {
       }));
       break;
 
+    case 'halfYear':
+      panelNode = /*#__PURE__*/React.createElement(HalfYearPanel, _extends({}, pickerProps, {
+        onSelect: function onSelect(date, type) {
+          setViewDate(date);
+          triggerSelect(date, type);
+        }
+      }));
+      break;
+
     case 'week':
       panelNode = /*#__PURE__*/React.createElement(WeekPanel, _extends({}, pickerProps, {
         onSelect: function onSelect(date, type) {
@@ -369,6 +382,7 @@ function PickerPanel(props) {
     extraFooter = getExtraFooter(prefixCls, mergedMode, renderExtraFooter);
     rangesNode = getRanges({
       prefixCls: prefixCls,
+      fieldid: fieldid,
       components: components,
       needConfirmButton: needConfirmButton,
       okDisabled: !mergedValue || disabledDate && disabledDate(mergedValue),
@@ -400,7 +414,10 @@ function PickerPanel(props) {
         if (!disabled) {
           triggerSelect(now, 'mouse', true);
         }
-      }
+      },
+      title: locale.today // @ts-ignore
+      ,
+      fieldid: fieldid && "".concat(fieldid, "_footer_today_btn")
     }, locale.today);
   }
 
@@ -408,8 +425,9 @@ function PickerPanel(props) {
     value: _objectSpread(_objectSpread({}, panelContext), {}, {
       mode: mergedMode,
       hideHeader: 'hideHeader' in props ? hideHeader : panelContext.hideHeader,
-      hidePrevBtn: inRange && panelPosition === 'right',
-      hideNextBtn: inRange && panelPosition === 'left'
+      hidePrevBtn: linkedPanels && inRange && panelPosition === 'right',
+      hideNextBtn: linkedPanels && inRange && panelPosition === 'left' // 左右面板隔离需求时不隐藏下翻页箭头
+
     })
   }, /*#__PURE__*/React.createElement("div", {
     tabIndex: tabIndex,
diff --git a/node_modules/rc-picker/es/PickerTrigger.js b/node_modules/rc-picker/es/PickerTrigger.js
index d47a881..990ccd9 100644
--- a/node_modules/rc-picker/es/PickerTrigger.js
+++ b/node_modules/rc-picker/es/PickerTrigger.js
@@ -75,7 +75,7 @@ function PickerTrigger(_ref) {
     popupClassName: classNames(dropdownClassName, (_classNames = {}, _defineProperty(_classNames, "".concat(dropdownPrefixCls, "-range"), range), _defineProperty(_classNames, "".concat(dropdownPrefixCls, "-rtl"), direction === 'rtl'), _classNames)),
     popupStyle: popupStyle,
     getPopupContainer: getPopupContainer
-  }, children);
+  }, children || /*#__PURE__*/React.createElement("div", null));
 }
 
 export default PickerTrigger;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/RangeContext.d.ts b/node_modules/rc-picker/es/RangeContext.d.ts
index 85ac246..7eb3f21 100644
--- a/node_modules/rc-picker/es/RangeContext.d.ts
+++ b/node_modules/rc-picker/es/RangeContext.d.ts
@@ -9,6 +9,7 @@ export declare type RangeContextProps = {
     hoverRangedValue?: RangeValue<any>;
     inRange?: boolean;
     panelPosition?: 'left' | 'right' | false;
+    fieldid?: string;
 };
 declare const RangeContext: React.Context<RangeContextProps>;
 export default RangeContext;
diff --git a/node_modules/rc-picker/es/RangePicker.d.ts b/node_modules/rc-picker/es/RangePicker.d.ts
index d6bd38d..bbe8ed5 100644
--- a/node_modules/rc-picker/es/RangePicker.d.ts
+++ b/node_modules/rc-picker/es/RangePicker.d.ts
@@ -9,6 +9,8 @@ export declare type RangeInfo = {
 export declare type RangeDateRender<DateType> = (currentDate: DateType, today: DateType, info: RangeInfo) => React.ReactNode;
 export declare type RangePickerSharedProps<DateType> = {
     id?: string;
+    fieldid?: string;
+    linkedPanels?: boolean;
     value?: RangeValue<DateType>;
     defaultValue?: RangeValue<DateType>;
     defaultPickerValue?: [DateType, DateType];
@@ -19,10 +21,9 @@ export declare type RangePickerSharedProps<DateType> = {
     separator?: React.ReactNode;
     allowEmpty?: [boolean, boolean];
     mode?: [PanelMode, PanelMode];
-    onChange?: (values: RangeValue<DateType>, formatString: [string, string]) => void;
+    onChange?: (values: RangeValue<DateType>, formatString: [string, string], label?: string) => void;
     onCalendarChange?: (values: RangeValue<DateType>, formatString: [string, string], info: RangeInfo) => void;
-    onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => void;
-    onFocus?: React.FocusEventHandler<HTMLInputElement>;
+    onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode], type?: 'year' | 'month', diff?: number) => void;
     onBlur?: React.FocusEventHandler<HTMLInputElement>;
     onMouseDown?: React.MouseEventHandler<HTMLDivElement>;
     onMouseUp?: React.MouseEventHandler<HTMLDivElement>;
@@ -30,12 +31,19 @@ export declare type RangePickerSharedProps<DateType> = {
     onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
     onClick?: React.MouseEventHandler<HTMLDivElement>;
     onOk?: (dates: RangeValue<DateType>) => void;
+    onPresetChange?: (label: string, values: RangeValue<DateType>) => void;
+    activePresetLabel?: string;
     direction?: 'ltr' | 'rtl';
     autoComplete?: string;
     /** @private Internal control of active picker. Do not use since it's private usage */
     activePickerIndex?: 0 | 1;
     dateRender?: RangeDateRender<DateType>;
     panelRender?: (originPanel: React.ReactNode) => React.ReactNode;
+    diffValue?: [number, number];
+    headerSelectLeft?: any;
+    headerSelectRight?: any;
+    showSelectMask?: boolean;
+    onInputFocus?: any;
 };
 declare type OmitPickerProps<Props> = Omit<Props, 'value' | 'defaultValue' | 'defaultPickerValue' | 'placeholder' | 'disabled' | 'disabledTime' | 'showToday' | 'showTime' | 'mode' | 'onChange' | 'onSelect' | 'onPanelChange' | 'pickerValue' | 'onPickerValueChange' | 'onOk' | 'dateRender'>;
 declare type RangeShowTimeObject<DateType> = Omit<SharedTimeProps<DateType>, 'defaultValue'> & {
diff --git a/node_modules/rc-picker/es/RangePicker.js b/node_modules/rc-picker/es/RangePicker.js
index 6992e4b..4a6b7b3 100644
--- a/node_modules/rc-picker/es/RangePicker.js
+++ b/node_modules/rc-picker/es/RangePicker.js
@@ -59,6 +59,7 @@ function InnerRangePicker(props) {
   var _props$prefixCls = props.prefixCls,
       prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
       id = props.id,
+      fieldid = props.fieldid,
       style = props.style,
       className = props.className,
       popupStyle = props.popupStyle,
@@ -81,6 +82,8 @@ function InnerRangePicker(props) {
       value = props.value,
       defaultValue = props.defaultValue,
       defaultPickerValue = props.defaultPickerValue,
+      _props$linkedPanels = props.linkedPanels,
+      linkedPanels = _props$linkedPanels === void 0 ? true : _props$linkedPanels,
       open = props.open,
       defaultOpen = props.defaultOpen,
       disabledDate = props.disabledDate,
@@ -109,12 +112,17 @@ function InnerRangePicker(props) {
       onClick = props.onClick,
       _onOk = props.onOk,
       _onKeyDown = props.onKeyDown,
+      onPresetChange = props.onPresetChange,
       components = props.components,
       order = props.order,
       direction = props.direction,
+      activePresetLabel = props.activePresetLabel,
       activePickerIndex = props.activePickerIndex,
       _props$autoComplete = props.autoComplete,
-      autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete;
+      autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete,
+      headerSelectRight = props.headerSelectRight,
+      headerSelectLeft = props.headerSelectLeft,
+      onInputFocus = props.onInputFocus;
   var needConfirmButton = picker === 'date' && !!showTime || picker === 'time'; // We record opened status here in case repeat open with picker
 
   var openRecordsRef = useRef({});
@@ -160,19 +168,7 @@ function InnerRangePicker(props) {
   }),
       _useMergedState4 = _slicedToArray(_useMergedState3, 2),
       mergedValue = _useMergedState4[0],
-      setInnerValue = _useMergedState4[1]; // =========================== View Date ===========================
-  // Config view panel
-
-
-  var _useRangeViewDates = useRangeViewDates({
-    values: mergedValue,
-    picker: picker,
-    defaultDates: defaultPickerValue,
-    generateConfig: generateConfig
-  }),
-      _useRangeViewDates2 = _slicedToArray(_useRangeViewDates, 2),
-      getViewDate = _useRangeViewDates2[0],
-      setViewDate = _useRangeViewDates2[1]; // ========================= Select Values =========================
+      setInnerValue = _useMergedState4[1]; // ========================= Select Values =========================
 
 
   var _useMergedState5 = useMergedState(mergedValue, {
@@ -195,7 +191,19 @@ function InnerRangePicker(props) {
   }),
       _useMergedState6 = _slicedToArray(_useMergedState5, 2),
       selectedValue = _useMergedState6[0],
-      setSelectedValue = _useMergedState6[1]; // ============================= Modes =============================
+      setSelectedValue = _useMergedState6[1]; // =========================== View Date ===========================
+  // Config view panel
+
+
+  var _useRangeViewDates = useRangeViewDates({
+    values: selectedValue || mergedValue,
+    picker: picker,
+    defaultDates: defaultPickerValue,
+    generateConfig: generateConfig
+  }),
+      _useRangeViewDates2 = _slicedToArray(_useRangeViewDates, 2),
+      getViewDate = _useRangeViewDates2[0],
+      setViewDate = _useRangeViewDates2[1]; // ============================= Modes =============================
 
 
   var _useMergedState7 = useMergedState([picker, picker], {
@@ -209,11 +217,11 @@ function InnerRangePicker(props) {
     setInnerModes([picker, picker]);
   }, [picker]);
 
-  var triggerModesChange = function triggerModesChange(modes, values) {
+  var triggerModesChange = function triggerModesChange(modes, values, type, diff) {
     setInnerModes(modes);
 
     if (onPanelChange) {
-      onPanelChange(values, modes);
+      onPanelChange(values, modes, type, diff);
     }
   }; // ========================= Disable Date ==========================
 
@@ -228,7 +236,17 @@ function InnerRangePicker(props) {
   }, openRecordsRef.current[1], openRecordsRef.current[0]),
       _useRangeDisabled2 = _slicedToArray(_useRangeDisabled, 2),
       disabledStartDate = _useRangeDisabled2[0],
-      disabledEndDate = _useRangeDisabled2[1]; // ============================= Open ==============================
+      disabledEndDate = _useRangeDisabled2[1];
+
+  var _useState = useState(getViewDate(0)),
+      _useState2 = _slicedToArray(_useState, 2),
+      leftDate = _useState2[0],
+      setLeftDate = _useState2[1];
+
+  var _useState3 = useState(getClosingViewDate(getViewDate(1), picker, generateConfig)),
+      _useState4 = _slicedToArray(_useState3, 2),
+      rightDate = _useState4[0],
+      setRightDate = _useState4[1]; // ============================= Open ==============================
 
 
   var _useMergedState9 = useMergedState(false, {
@@ -238,6 +256,12 @@ function InnerRangePicker(props) {
       return mergedDisabled[mergedActivePickerIndex] ? false : postOpen;
     },
     onChange: function onChange(newOpen) {
+      if (newOpen) {
+        setInnerModes([picker, picker]);
+        setLeftDate(getViewDate(0));
+        setRightDate(getClosingViewDate(getViewDate(1), picker, generateConfig));
+      }
+
       if (onOpenChange) {
         onOpenChange(newOpen);
       }
@@ -255,10 +279,10 @@ function InnerRangePicker(props) {
   var endOpen = mergedOpen && mergedActivePickerIndex === 1; // ============================= Popup =============================
   // Popup min width
 
-  var _useState = useState(0),
-      _useState2 = _slicedToArray(_useState, 2),
-      popupMinWidth = _useState2[0],
-      setPopupMinWidth = _useState2[1];
+  var _useState5 = useState(0),
+      _useState6 = _slicedToArray(_useState5, 2),
+      popupMinWidth = _useState6[0],
+      setPopupMinWidth = _useState6[1];
 
   useEffect(function () {
     if (!mergedOpen && containerRef.current) {
@@ -304,16 +328,17 @@ function InnerRangePicker(props) {
     }, 0);
   }
 
-  function triggerChange(newValue, sourceIndex) {
+  function triggerChange(newValue, sourceIndex, label) {
     var values = newValue;
     var startValue = getValue(values, 0);
     var endValue = getValue(values, 1); // >>>>> Format start & end values
 
     if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {
       if ( // WeekPicker only compare week
-      picker === 'week' && !isSameWeek(generateConfig, locale.locale, startValue, endValue) || // QuotaPicker only compare week
+      picker === 'week' && !isSameWeek(generateConfig, locale.locale, startValue, endValue) || // HalfYearPicker only compare halfYear
+      picker === 'halfYear' && !isSameQuarter(generateConfig, startValue, endValue, 'halfYear') || // QuotaPicker only compare quarter
       picker === 'quarter' && !isSameQuarter(generateConfig, startValue, endValue) || // Other non-TimePicker compare date
-      picker !== 'week' && picker !== 'quarter' && picker !== 'time' && !isSameDate(generateConfig, startValue, endValue)) {
+      picker !== 'week' && picker !== 'halfYear' && picker !== 'quarter' && picker !== 'time' && !isSameDate(generateConfig, startValue, endValue)) {
         // Clean up end date when start date is after end date
         if (sourceIndex === 0) {
           values = [startValue, null];
@@ -360,7 +385,7 @@ function InnerRangePicker(props) {
       setInnerValue(values);
 
       if (onChange && (!isEqual(generateConfig, getValue(mergedValue, 0), startValue) || !isEqual(generateConfig, getValue(mergedValue, 1), endValue))) {
-        onChange(values, [startStr, endStr]);
+        onChange(values, [startStr, endStr], label || '');
       }
     } // >>>>> Open picker when
     // Always open another picker if possible
@@ -424,6 +449,13 @@ function InnerRangePicker(props) {
     var disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;
 
     if (inputDate && !disabledFunc(inputDate)) {
+      if (index === 0) {
+        // fix: 修复面板未切换到input输入日期问题
+        setLeftDate(inputDate);
+      } else {
+        setRightDate(inputDate);
+      }
+
       setSelectedValue(updateValues(selectedValue, inputDate, index));
       setViewDate(inputDate, index);
     }
@@ -451,16 +483,16 @@ function InnerRangePicker(props) {
       triggerEndTextChange = _useTextValueMapping4[1],
       resetEndText = _useTextValueMapping4[2];
 
-  var _useState3 = useState(null),
-      _useState4 = _slicedToArray(_useState3, 2),
-      rangeHoverValue = _useState4[0],
-      setRangeHoverValue = _useState4[1]; // ========================== Hover Range ==========================
+  var _useState7 = useState(null),
+      _useState8 = _slicedToArray(_useState7, 2),
+      rangeHoverValue = _useState8[0],
+      setRangeHoverValue = _useState8[1]; // ========================== Hover Range ==========================
 
 
-  var _useState5 = useState(null),
-      _useState6 = _slicedToArray(_useState5, 2),
-      hoverRangedValue = _useState6[0],
-      setHoverRangedValue = _useState6[1];
+  var _useState9 = useState(null),
+      _useState10 = _slicedToArray(_useState9, 2),
+      hoverRangedValue = _useState10[0],
+      setHoverRangedValue = _useState10[1];
 
   var _useHoverValue = useHoverValue(startText, {
     formatList: formatList,
@@ -661,8 +693,10 @@ function InnerRangePicker(props) {
     var newValues = typeof range === 'function' ? range() : range;
     return {
       label: label,
+      activePresetLabel: activePresetLabel,
       onClick: function onClick() {
-        triggerChange(newValues, null);
+        onPresetChange(label, newValues);
+        triggerChange(newValues, null, label);
 
         _triggerOpen(false, mergedActivePickerIndex);
       },
@@ -676,6 +710,8 @@ function InnerRangePicker(props) {
   }); // ============================= Panel =============================
 
   function renderPanel() {
+    var _classNames;
+
     var panelPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
     var panelProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
     var panelHoverRangedValue = null;
@@ -703,14 +739,25 @@ function InnerRangePicker(props) {
       };
     }
 
+    var headerSelect = null;
+
+    if (panelPosition === 'left') {
+      headerSelect = panelProps.headerSelectLeft;
+    } else {
+      headerSelect = panelProps.headerSelectRight;
+    }
+
     return /*#__PURE__*/React.createElement(RangeContext.Provider, {
       value: {
+        fieldid: fieldid,
         inRange: true,
         panelPosition: panelPosition,
         rangedValue: rangeHoverValue || selectedValue,
         hoverRangedValue: panelHoverRangedValue
       }
     }, /*#__PURE__*/React.createElement(PickerPanel, _extends({}, props, panelProps, {
+      headerSelect: showTime ? mergedActivePickerIndex === 0 ? headerSelectLeft : headerSelectRight : headerSelect,
+      fieldid: fieldid && panelPosition ? fieldid + '_' + panelPosition : panelPosition === false ? fieldid : undefined,
       dateRender: panelDateRender,
       showTime: panelShowTime,
       mode: mergedModes[mergedActivePickerIndex],
@@ -725,11 +772,12 @@ function InnerRangePicker(props) {
 
         return false;
       },
-      className: classNames(_defineProperty({}, "".concat(prefixCls, "-panel-focused"), mergedActivePickerIndex === 0 ? !startTyping : !endTyping)),
+      linkedPanels: linkedPanels,
+      className: classNames((_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-panel-focused"), mergedActivePickerIndex === 0 ? !startTyping : !endTyping), _defineProperty(_classNames, "".concat(prefixCls, "-panel-unlinked"), !linkedPanels), _classNames)),
       value: getValue(selectedValue, mergedActivePickerIndex),
       locale: locale,
       tabIndex: -1,
-      onPanelChange: function onPanelChange(date, newMode) {
+      onPanelChange: function onPanelChange(date, newMode, type, diff) {
         // clear hover value when panel change
         if (mergedActivePickerIndex === 0) {
           onStartLeave(true);
@@ -739,7 +787,7 @@ function InnerRangePicker(props) {
           onEndLeave(true);
         }
 
-        triggerModesChange(updateValues(mergedModes, newMode, mergedActivePickerIndex), updateValues(selectedValue, date, mergedActivePickerIndex));
+        triggerModesChange(updateValues(mergedModes, newMode, mergedActivePickerIndex), updateValues(selectedValue, date, mergedActivePickerIndex), type, diff);
         var viewDate = date;
 
         if (panelPosition === 'right' && mergedModes[mergedActivePickerIndex] === newMode) {
@@ -761,9 +809,11 @@ function InnerRangePicker(props) {
   if (mergedActivePickerIndex && startInputDivRef.current && separatorRef.current && panelDivRef.current) {
     // Arrow offset
     arrowLeft = startInputDivRef.current.offsetWidth + separatorRef.current.offsetWidth; // If panelWidth - arrowWidth - arrowMarginLeft < arrowLeft, panel should move to right side.
-    // If offsetLeft > arrowLeft, arrow position is absolutely right, because arrowLeft is not calculated with arrow margin.
+    // If arrowOffsetLeft > arrowLeft, arrowMarginLeft = arrowOffsetLeft - arrowLeft
 
-    if (panelDivRef.current.offsetWidth && arrowRef.current.offsetWidth && arrowLeft > panelDivRef.current.offsetWidth - arrowRef.current.offsetWidth - (direction === 'rtl' || arrowRef.current.offsetLeft > arrowLeft ? 0 : arrowRef.current.offsetLeft)) {
+    var arrowMarginLeft = arrowRef.current.offsetLeft > arrowLeft ? arrowRef.current.offsetLeft - arrowLeft : arrowRef.current.offsetLeft;
+
+    if (panelDivRef.current.offsetWidth && arrowRef.current.offsetWidth && arrowLeft > panelDivRef.current.offsetWidth - arrowRef.current.offsetWidth - (direction === 'rtl' ? 0 : arrowMarginLeft)) {
       panelLeft = arrowLeft;
     }
   }
@@ -779,11 +829,13 @@ function InnerRangePicker(props) {
     var extraNode = getExtraFooter(prefixCls, mergedModes[mergedActivePickerIndex], renderExtraFooter);
     var rangesNode = getRanges({
       prefixCls: prefixCls,
+      fieldid: fieldid,
       components: components,
       needConfirmButton: needConfirmButton,
       okDisabled: !getValue(selectedValue, mergedActivePickerIndex) || disabledDate && disabledDate(selectedValue[mergedActivePickerIndex]),
       locale: locale,
       rangeList: rangeList,
+      activePresetLabel: activePresetLabel,
       onOk: function onOk() {
         if (getValue(selectedValue, mergedActivePickerIndex)) {
           // triggerChangeOld(selectedValue);
@@ -800,18 +852,69 @@ function InnerRangePicker(props) {
       var viewDate = getViewDate(mergedActivePickerIndex);
       var nextViewDate = getClosingViewDate(viewDate, picker, generateConfig);
       var currentMode = mergedModes[mergedActivePickerIndex];
+      var modeMap = {
+        // 不同mode要格式化为不同面板开始日期
+        date: 'M',
+        week: 'M',
+        month: 'y',
+        quarter: 'y',
+        halfYear: 'y',
+        year: 'y',
+        decade: 'y'
+      };
       var showDoublePanel = currentMode === picker;
       var leftPanel = renderPanel(showDoublePanel ? 'left' : false, {
-        pickerValue: viewDate,
+        pickerValue: !linkedPanels ? leftDate : viewDate,
         onPickerValueChange: function onPickerValueChange(newViewDate) {
+          // 左右面板分离
+          if (!linkedPanels) {
+            if (
+            /** 右翻页 */
+            !generateConfig.isAfter(viewDate, newViewDate) && (generateConfig.isSame(
+            /** 左右面板要取月初，避免用户值日期不同导致月份isSame判断错误 */
+
+            /** 左面板右翻页后等于右面板 */
+            newViewDate.clone().startOf(modeMap[currentMode]), rightDate.clone().startOf(modeMap[currentMode])) || generateConfig.isAfter(
+            /** 左面板右翻页后大于右面板 */
+            newViewDate.clone().startOf(modeMap[currentMode]), rightDate.clone().startOf(modeMap[currentMode])))) {
+              // 左面板右翻页，且左面板翻页后等于右面板，则右面板也需要 +1
+              setRightDate(getClosingViewDate(newViewDate, picker, generateConfig));
+            } // 左面板一直可翻页
+
+
+            setLeftDate(newViewDate);
+          } // 左右面板关联
+
+
           setViewDate(newViewDate, mergedActivePickerIndex);
-        }
+        },
+        headerSelectLeft: headerSelectLeft
       });
       var rightPanel = renderPanel('right', {
-        pickerValue: nextViewDate,
+        pickerValue: !linkedPanels ? rightDate : nextViewDate,
         onPickerValueChange: function onPickerValueChange(newViewDate) {
+          // 左右面板分离
+          if (!linkedPanels) {
+            if (
+            /** 左翻页 */
+            generateConfig.isAfter(nextViewDate, newViewDate) && (generateConfig.isSame(
+            /** 左右面板要取月初，避免用户值日期不同导致月份isSame判断错误 */
+
+            /** 右面板左翻页后等于左面板 */
+            newViewDate.clone().startOf(modeMap[currentMode]), leftDate.clone().startOf(modeMap[currentMode])) || generateConfig.isAfter(
+            /** 右面板左翻页后小于左面板 */
+            leftDate.clone().startOf(modeMap[currentMode]), newViewDate.clone().startOf(modeMap[currentMode])))) {
+              // 右面板左翻页，且右面板翻页后等于左面板，则左面板也需要 -1
+              setLeftDate(getClosingViewDate(newViewDate, picker, generateConfig, -1));
+            } // 左面板一直可翻页
+
+
+            setRightDate(newViewDate);
+          }
+
           setViewDate(getClosingViewDate(newViewDate, picker, generateConfig, -1), mergedActivePickerIndex);
-        }
+        },
+        headerSelectRight: headerSelectRight
       });
 
       if (direction === 'rtl') {
@@ -933,9 +1036,26 @@ function InnerRangePicker(props) {
     }
   };
 
+  var onStartFocus = function onStartFocus(e) {
+    var startValue = startHoverValue || startText;
+
+    if (onInputFocus) {
+      onInputFocus(mergedActivePickerIndex, startValue, e);
+    }
+  };
+
+  var onEndFocus = function onEndFocus(e) {
+    var endValue = endHoverValue || endText;
+
+    if (onInputFocus) {
+      onInputFocus(mergedActivePickerIndex, endValue, e);
+    }
+  };
+
   return /*#__PURE__*/React.createElement(PanelContext.Provider, {
     value: {
       operationRef: operationRef,
+      fieldid: fieldid,
       hideHeader: picker === 'time',
       onDateMouseEnter: onDateMouseEnter,
       onDateMouseLeave: onDateMouseLeave,
@@ -955,7 +1075,9 @@ function InnerRangePicker(props) {
     range: true,
     direction: direction
   }, /*#__PURE__*/React.createElement("div", _extends({
-    ref: containerRef,
+    ref: containerRef // @ts-ignore
+    ,
+    fieldid: fieldid,
     className: classNames(prefixCls, "".concat(prefixCls, "-range"), className, (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefixCls, "-disabled"), mergedDisabled[0] && mergedDisabled[1]), _defineProperty(_classNames2, "".concat(prefixCls, "-focused"), mergedActivePickerIndex === 0 ? startFocused : endFocused), _defineProperty(_classNames2, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames2)),
     style: style,
     onClick: onPickerClick,
@@ -978,7 +1100,8 @@ function InnerRangePicker(props) {
     placeholder: getValue(placeholder, 0) || '',
     ref: startInputRef
   }, startInputProps, inputSharedProps, {
-    autoComplete: autoComplete
+    autoComplete: autoComplete,
+    onFocus: onStartFocus
   }))), /*#__PURE__*/React.createElement("div", {
     className: "".concat(prefixCls, "-range-separator"),
     ref: separatorRef
@@ -995,7 +1118,8 @@ function InnerRangePicker(props) {
     placeholder: getValue(placeholder, 1) || '',
     ref: endInputRef
   }, endInputProps, inputSharedProps, {
-    autoComplete: autoComplete
+    autoComplete: autoComplete,
+    onFocus: onEndFocus
   }))), /*#__PURE__*/React.createElement("div", {
     className: "".concat(prefixCls, "-active-bar"),
     style: _objectSpread(_objectSpread({}, activeBarPositionStyle), {}, {
diff --git a/node_modules/rc-picker/es/generate/dateFns.js b/node_modules/rc-picker/es/generate/dateFns.js
index 1650d6d..e9ac4e1 100644
--- a/node_modules/rc-picker/es/generate/dateFns.js
+++ b/node_modules/rc-picker/es/generate/dateFns.js
@@ -1,4 +1,4 @@
-import { getDay, getYear as _getYear, getMonth as _getMonth, getDate as _getDate, endOfMonth, getHours, getMinutes, getSeconds, addYears, addMonths, addDays, setYear as _setYear, setMonth as _setMonth, setDate as _setDate, setHours, setMinutes, setSeconds, isAfter as _isAfter, isValid, getWeek as _getWeek, startOfWeek, format as formatDate, parse as parseDate } from 'date-fns';
+import { getDay, getYear as _getYear, getMonth as _getMonth, getDate as _getDate, endOfMonth, getHours, getMinutes, getSeconds, addYears, addMonths, addDays, setYear as _setYear, setMonth as _setMonth, setDate as _setDate, setHours, setMinutes, setSeconds, isAfter as _isAfter, isSameMonth, isValid, getWeek as _getWeek, startOfWeek, format as formatDate, parse as parseDate } from 'date-fns';
 import * as Locale from 'date-fns/locale';
 
 var dealLocal = function dealLocal(str) {
@@ -73,6 +73,9 @@ var generateConfig = {
   isAfter: function isAfter(date1, date2) {
     return _isAfter(date1, date2);
   },
+  isSame: function isSame(date1, date2) {
+    return isSameMonth(date1, date2);
+  },
   isValidate: function isValidate(date) {
     return isValid(date);
   },
diff --git a/node_modules/rc-picker/es/generate/dayjs.js b/node_modules/rc-picker/es/generate/dayjs.js
index dc141bf..6ff8643 100644
--- a/node_modules/rc-picker/es/generate/dayjs.js
+++ b/node_modules/rc-picker/es/generate/dayjs.js
@@ -165,6 +165,9 @@ var generateConfig = {
   isAfter: function isAfter(date1, date2) {
     return date1.isAfter(date2);
   },
+  isSame: function isSame(date1, date2) {
+    return date1.isSame(date2);
+  },
   isValidate: function isValidate(date) {
     return date.isValid();
   },
diff --git a/node_modules/rc-picker/es/generate/index.d.ts b/node_modules/rc-picker/es/generate/index.d.ts
index f564ef7..15b3681 100644
--- a/node_modules/rc-picker/es/generate/index.d.ts
+++ b/node_modules/rc-picker/es/generate/index.d.ts
@@ -19,6 +19,7 @@ export declare type GenerateConfig<DateType> = {
     setMinute: (value: DateType, minute: number) => DateType;
     setSecond: (value: DateType, second: number) => DateType;
     isAfter: (date1: DateType, date2: DateType) => boolean;
+    isSame: (date1: DateType, date2: DateType) => boolean;
     isValidate: (date: DateType) => boolean;
     locale: {
         getWeekFirstDay: (locale: string) => number;
diff --git a/node_modules/rc-picker/es/generate/moment.js b/node_modules/rc-picker/es/generate/moment.js
index 5be50e0..9b01b19 100644
--- a/node_modules/rc-picker/es/generate/moment.js
+++ b/node_modules/rc-picker/es/generate/moment.js
@@ -75,6 +75,9 @@ var generateConfig = {
   isAfter: function isAfter(date1, date2) {
     return date1.isAfter(date2);
   },
+  isSame: function isSame(date1, date2) {
+    return date1.isSame(date2);
+  },
   isValidate: function isValidate(date) {
     return date.isValid();
   },
diff --git a/node_modules/rc-picker/es/interface.d.ts b/node_modules/rc-picker/es/interface.d.ts
index c656f45..26d3497 100644
--- a/node_modules/rc-picker/es/interface.d.ts
+++ b/node_modules/rc-picker/es/interface.d.ts
@@ -1,4 +1,5 @@
 /// <reference types="react" />
+import type { Moment } from 'moment';
 import type { GenerateConfig } from './generate';
 export declare type Locale = {
     locale: string;
@@ -7,6 +8,7 @@ export declare type Locale = {
     yearFormat: string;
     monthFormat?: string;
     quarterFormat?: string;
+    halfYearFormat?: (date: Moment, hasYear?: boolean) => string;
     today: string;
     now: string;
     backToToday: string;
@@ -34,12 +36,13 @@ export declare type Locale = {
     shortWeekDays?: string[];
     shortMonths?: string[];
 };
-export declare type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'year' | 'decade';
+export declare type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'halfYear' | 'year' | 'decade';
 export declare type PickerMode = Exclude<PanelMode, 'datetime' | 'decade'>;
 export declare type PanelRefProps = {
     onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => boolean;
     onBlur?: React.FocusEventHandler<HTMLElement>;
     onClose?: () => void;
+    showSelectMask?: boolean;
 };
 export declare type NullableDateType<DateType> = DateType | null | undefined;
 export declare type OnSelect<DateType> = (value: DateType, type: 'key' | 'mouse' | 'submit') => void;
@@ -64,7 +67,10 @@ export declare type PanelSharedProps<DateType> = {
     operationRef: React.MutableRefObject<PanelRefProps>;
     onSelect: OnSelect<DateType>;
     onViewDateChange: (value: DateType) => void;
-    onPanelChange: (mode: PanelMode | null, viewValue: DateType) => void;
+    onPanelChange: (mode: PanelMode | null, viewValue: DateType, type?: string, diff?: number) => void;
+    sourceMode: any;
+    diffValue?: any;
+    showSelectMask?: boolean;
 };
 export declare type DisabledTimes = {
     disabledHours?: () => number[];
@@ -72,7 +78,7 @@ export declare type DisabledTimes = {
     disabledSeconds?: (hour: number, minute: number) => number[];
 };
 export declare type DisabledTime<DateType> = (date: DateType | null) => DisabledTimes;
-export declare type OnPanelChange<DateType> = (value: DateType, mode: PanelMode) => void;
+export declare type OnPanelChange<DateType> = (value: DateType, mode: PanelMode, type?: 'year' | 'month', diff?: number) => void;
 export declare type EventValue<DateType> = DateType | null;
 export declare type RangeValue<DateType> = [EventValue<DateType>, EventValue<DateType>] | null;
 export declare type Components = {
diff --git a/node_modules/rc-picker/es/locale/en_US.js b/node_modules/rc-picker/es/locale/en_US.js
index a11975c..18fb0cd 100644
--- a/node_modules/rc-picker/es/locale/en_US.js
+++ b/node_modules/rc-picker/es/locale/en_US.js
@@ -18,10 +18,10 @@ var locale = {
   dayFormat: 'D',
   dateTimeFormat: 'M/D/YYYY HH:mm:ss',
   monthBeforeYear: true,
-  previousMonth: 'Previous month (PageUp)',
-  nextMonth: 'Next month (PageDown)',
-  previousYear: 'Last year (Control + left)',
-  nextYear: 'Next year (Control + right)',
+  previousMonth: 'Previous month',
+  nextMonth: 'Next month',
+  previousYear: 'Last year',
+  nextYear: 'Next year',
   previousDecade: 'Last decade',
   nextDecade: 'Next decade',
   previousCentury: 'Last century',
diff --git a/node_modules/rc-picker/es/locale/eu_ES.d.ts b/node_modules/rc-picker/es/locale/eu_ES.d.ts
new file mode 100644
index 0000000..002bafd
--- /dev/null
+++ b/node_modules/rc-picker/es/locale/eu_ES.d.ts
@@ -0,0 +1,3 @@
+import type { Locale } from '../interface';
+declare const locale: Locale;
+export default locale;
diff --git a/node_modules/rc-picker/es/locale/eu_ES.js b/node_modules/rc-picker/es/locale/eu_ES.js
new file mode 100644
index 0000000..a523a61
--- /dev/null
+++ b/node_modules/rc-picker/es/locale/eu_ES.js
@@ -0,0 +1,30 @@
+var locale = {
+  locale: 'eu_ES',
+  today: 'Gaur',
+  now: 'Orain',
+  backToToday: 'Gaur itzuli',
+  ok: 'OK',
+  clear: 'Garbitu',
+  month: 'Hilabete',
+  year: 'Urte',
+  timeSelect: 'Ordua aukeratu',
+  dateSelect: 'Eguna aukeratu',
+  weekSelect: 'Astea aukeratu',
+  monthSelect: 'Hilabetea aukeratu',
+  yearSelect: 'Urtea aukeratu',
+  decadeSelect: 'Hamarkada aukeratu',
+  yearFormat: 'YYYY',
+  dateFormat: 'YYYY/M/D',
+  dayFormat: 'D',
+  dateTimeFormat: 'YYYY/M/D HH:mm:ss',
+  monthBeforeYear: false,
+  previousMonth: 'Aurreko hilabetea (RePag)',
+  nextMonth: 'Urrengo hilabetea (AvPag)',
+  previousYear: 'Aurreko urtea (Control + ezkerra)',
+  nextYear: 'Urrento urtea (Control + eskuina)',
+  previousDecade: 'Aurreko hamarkada',
+  nextDecade: 'Urrengo hamarkada',
+  previousCentury: 'Aurreko mendea',
+  nextCentury: 'Urrengo mendea'
+};
+export default locale;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/locale/uz_UZ.d.ts b/node_modules/rc-picker/es/locale/uz_UZ.d.ts
new file mode 100644
index 0000000..002bafd
--- /dev/null
+++ b/node_modules/rc-picker/es/locale/uz_UZ.d.ts
@@ -0,0 +1,3 @@
+import type { Locale } from '../interface';
+declare const locale: Locale;
+export default locale;
diff --git a/node_modules/rc-picker/es/locale/uz_UZ.js b/node_modules/rc-picker/es/locale/uz_UZ.js
new file mode 100644
index 0000000..9a413e6
--- /dev/null
+++ b/node_modules/rc-picker/es/locale/uz_UZ.js
@@ -0,0 +1,30 @@
+var locale = {
+  locale: 'uz_UZ',
+  today: 'Bugun',
+  now: 'Hozir',
+  backToToday: 'Bugunga qaytish',
+  ok: 'OK',
+  clear: 'Toza',
+  month: 'Oy',
+  year: 'Yil',
+  timeSelect: 'vaqtni tanlang',
+  dateSelect: 'sanani tanlang',
+  weekSelect: 'Haftani tanlang',
+  monthSelect: 'Oyni tanlang',
+  yearSelect: 'Yilni tanlang',
+  decadeSelect: 'O\'n yilni tanlang',
+  yearFormat: 'YYYY',
+  dateFormat: 'M/D/YYYY',
+  dayFormat: 'D',
+  dateTimeFormat: 'M/D/YYYY HH:mm:ss',
+  monthBeforeYear: true,
+  previousMonth: 'Oldingi oy (PageUp)',
+  nextMonth: 'Keyingi oy (PageDown)',
+  previousYear: 'O\'tgan yili (Control + left)',
+  nextYear: 'Keyingi yil (Control + right)',
+  previousDecade: 'Oxirgi o\'n yil',
+  nextDecade: 'Keyingi o\'n yil',
+  previousCentury: 'O\'tgan asr',
+  nextCentury: 'Keyingi asr'
+};
+export default locale;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/locale/vi_VN.js b/node_modules/rc-picker/es/locale/vi_VN.js
index c11bd21..eb638f7 100644
--- a/node_modules/rc-picker/es/locale/vi_VN.js
+++ b/node_modules/rc-picker/es/locale/vi_VN.js
@@ -3,7 +3,7 @@ var locale = {
   today: 'Hôm nay',
   now: 'Bây giờ',
   backToToday: 'Trở về hôm nay',
-  ok: 'OK',
+  ok: 'Chắc chắn',
   clear: 'Xóa',
   month: 'Tháng',
   year: 'Năm',
diff --git a/node_modules/rc-picker/es/locale/zh_CN.js b/node_modules/rc-picker/es/locale/zh_CN.js
index f465031..a419ee3 100644
--- a/node_modules/rc-picker/es/locale/zh_CN.js
+++ b/node_modules/rc-picker/es/locale/zh_CN.js
@@ -10,8 +10,8 @@ var locale = {
   clear: '清除',
   month: '月',
   year: '年',
-  previousMonth: '上个月 (翻页上键)',
-  nextMonth: '下个月 (翻页下键)',
+  previousMonth: '上个月',
+  nextMonth: '下个月',
   monthSelect: '选择月份',
   yearSelect: '选择年份',
   decadeSelect: '选择年代',
@@ -19,8 +19,8 @@ var locale = {
   dayFormat: 'D日',
   dateFormat: 'YYYY年M月D日',
   dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',
-  previousYear: '上一年 (Control键加左方向键)',
-  nextYear: '下一年 (Control键加右方向键)',
+  previousYear: '上一年',
+  nextYear: '下一年',
   previousDecade: '上一年代',
   nextDecade: '下一年代',
   previousCentury: '上一世纪',
diff --git a/node_modules/rc-picker/es/locale/zh_TW.js b/node_modules/rc-picker/es/locale/zh_TW.js
index 6834078..e58904f 100644
--- a/node_modules/rc-picker/es/locale/zh_TW.js
+++ b/node_modules/rc-picker/es/locale/zh_TW.js
@@ -10,8 +10,8 @@ var locale = {
   clear: '清除',
   month: '月',
   year: '年',
-  previousMonth: '上個月 (翻頁上鍵)',
-  nextMonth: '下個月 (翻頁下鍵)',
+  previousMonth: '上個月',
+  nextMonth: '下個月',
   monthSelect: '選擇月份',
   yearSelect: '選擇年份',
   decadeSelect: '選擇年代',
@@ -19,8 +19,8 @@ var locale = {
   dayFormat: 'D日',
   dateFormat: 'YYYY年M月D日',
   dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',
-  previousYear: '上一年 (Control鍵加左方向鍵)',
-  nextYear: '下一年 (Control鍵加右方向鍵)',
+  previousYear: '上一年',
+  nextYear: '下一年',
   previousDecade: '上一年代',
   nextDecade: '下一年代',
   previousCentury: '上一世紀',
diff --git a/node_modules/rc-picker/es/panels/DatePanel/DateHeader.d.ts b/node_modules/rc-picker/es/panels/DatePanel/DateHeader.d.ts
index 6f025ef..a3e7b2a 100644
--- a/node_modules/rc-picker/es/panels/DatePanel/DateHeader.d.ts
+++ b/node_modules/rc-picker/es/panels/DatePanel/DateHeader.d.ts
@@ -13,6 +13,8 @@ export declare type DateHeaderProps<DateType> = {
     onNextMonth: () => void;
     onYearClick: () => void;
     onMonthClick: () => void;
+    onCurrent: () => void;
+    sourceModeCopy: string;
 };
 declare function DateHeader<DateType>(props: DateHeaderProps<DateType>): JSX.Element;
 export default DateHeader;
diff --git a/node_modules/rc-picker/es/panels/DatePanel/DateHeader.js b/node_modules/rc-picker/es/panels/DatePanel/DateHeader.js
index aa24a54..4bb8597 100644
--- a/node_modules/rc-picker/es/panels/DatePanel/DateHeader.js
+++ b/node_modules/rc-picker/es/panels/DatePanel/DateHeader.js
@@ -13,6 +13,7 @@ function DateHeader(props) {
       onPrevMonth = props.onPrevMonth,
       onNextYear = props.onNextYear,
       onPrevYear = props.onPrevYear,
+      onCurrent = props.onCurrent,
       onYearClick = props.onYearClick,
       onMonthClick = props.onMonthClick;
 
@@ -55,7 +56,8 @@ function DateHeader(props) {
     onSuperPrev: onPrevYear,
     onPrev: onPrevMonth,
     onNext: onNextMonth,
-    onSuperNext: onNextYear
+    onSuperNext: onNextYear,
+    onCurrent: onCurrent
   }), monthYearNodes);
 }
 
diff --git a/node_modules/rc-picker/es/panels/DatePanel/index.d.ts b/node_modules/rc-picker/es/panels/DatePanel/index.d.ts
index c5c5681..b17cd8f 100644
--- a/node_modules/rc-picker/es/panels/DatePanel/index.d.ts
+++ b/node_modules/rc-picker/es/panels/DatePanel/index.d.ts
@@ -5,8 +5,11 @@ import type { KeyboardConfig } from '../../utils/uiUtil';
 export declare type DatePanelProps<DateType> = {
     active?: boolean;
     dateRender?: DateRender<DateType>;
+    id?: string;
+    fieldid?: string;
     panelName?: string;
     keyboardConfig?: KeyboardConfig;
+    headerSelect?: any;
 } & PanelSharedProps<DateType> & DateBodyPassProps<DateType>;
 declare function DatePanel<DateType>(props: DatePanelProps<DateType>): JSX.Element;
 export default DatePanel;
diff --git a/node_modules/rc-picker/es/panels/DatePanel/index.js b/node_modules/rc-picker/es/panels/DatePanel/index.js
index a4d7c54..fea98f8 100644
--- a/node_modules/rc-picker/es/panels/DatePanel/index.js
+++ b/node_modules/rc-picker/es/panels/DatePanel/index.js
@@ -1,5 +1,6 @@
 import _extends from "@babel/runtime/helpers/esm/extends";
 import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
+import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
 import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
 import * as React from 'react';
 import classNames from 'classnames';
@@ -7,6 +8,7 @@ import DateBody from './DateBody';
 import DateHeader from './DateHeader';
 import { WEEK_DAY_COUNT } from '../../utils/dateUtil';
 import { createKeyDownHandler } from '../../utils/uiUtil';
+import moment from 'moment';
 var DATE_ROW_COUNT = 6;
 
 function DatePanel(props) {
@@ -19,9 +21,15 @@ function DatePanel(props) {
       generateConfig = props.generateConfig,
       value = props.value,
       viewDate = props.viewDate,
+      id = props.id,
+      fieldid = props.fieldid,
       onViewDateChange = props.onViewDateChange,
       onPanelChange = props.onPanelChange,
-      _onSelect = props.onSelect;
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-").concat(panelName, "-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -46,16 +54,48 @@ function DatePanel(props) {
   var onYearChange = function onYearChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
   var onMonthChange = function onMonthChange(diff) {
     var newDate = generateConfig.addMonth(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'month', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = _slicedToArray(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+
+  var onYearMonthChange = function onYearMonthChange() {
+    var currentDate;
+
+    if (diffValue && diffValue[0] >= 0) {
+      currentDate = moment(viewDate).add(diffValue[0], 'year');
+    } else {
+      currentDate = moment(viewDate).subtract(-diffValue[0], 'year');
+    }
+
+    var newDate = generateConfig.addMonth(currentDate, diffValue[1]);
+    onViewDateChange(newDate);
+  };
+
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearMonthChange();
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
+    id: id ? id + '_panel' : '' // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_panel"),
     className: classNames(panelPrefixCls, _defineProperty({}, "".concat(panelPrefixCls, "-active"), active))
   }, /*#__PURE__*/React.createElement(DateHeader, _extends({}, props, {
     prefixCls: prefixCls,
@@ -79,7 +119,11 @@ function DatePanel(props) {
     },
     onYearClick: function onYearClick() {
       onPanelChange('year', viewDate);
-    }
+    },
+    onCurrent: function onCurrent() {
+      onViewDateChange(generateConfig.getNow());
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(DateBody, _extends({}, props, {
     onSelect: function onSelect(date) {
       return _onSelect(date, 'mouse');
@@ -88,7 +132,17 @@ function DatePanel(props) {
     value: value,
     viewDate: viewDate,
     rowCount: DATE_ROW_COUNT
-  })));
+  })), headerSelect !== undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 export default DatePanel;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/panels/DecadePanel/index.js b/node_modules/rc-picker/es/panels/DecadePanel/index.js
index 336ddc8..fae0559 100644
--- a/node_modules/rc-picker/es/panels/DecadePanel/index.js
+++ b/node_modules/rc-picker/es/panels/DecadePanel/index.js
@@ -38,7 +38,7 @@ function DecadePanel(props) {
   var onDecadesChange = function onDecadesChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
   var onInternalSelect = function onInternalSelect(date) {
diff --git a/node_modules/rc-picker/es/panels/HalfYearPanel/HalfYearBody.d.ts b/node_modules/rc-picker/es/panels/HalfYearPanel/HalfYearBody.d.ts
new file mode 100644
index 0000000..766460d
--- /dev/null
+++ b/node_modules/rc-picker/es/panels/HalfYearPanel/HalfYearBody.d.ts
@@ -0,0 +1,16 @@
+/// <reference types="react" />
+import type { GenerateConfig } from '../../generate';
+import type { Locale } from '../../interface';
+export declare const QUARTER_COL_COUNT = 2;
+export declare type HalfYearBodyProps<DateType> = {
+    prefixCls: string;
+    locale: Locale;
+    generateConfig: GenerateConfig<DateType>;
+    value?: DateType | null;
+    viewDate: DateType;
+    halfYear?: (date: DateType) => string;
+    disabledDate?: (date: DateType) => boolean;
+    onSelect: (value: DateType) => void;
+};
+declare function HalfYearBody<DateType>(props: HalfYearBodyProps<DateType>): JSX.Element;
+export default HalfYearBody;
diff --git a/node_modules/rc-picker/es/panels/HalfYearPanel/HalfYearBody.js b/node_modules/rc-picker/es/panels/HalfYearPanel/HalfYearBody.js
new file mode 100644
index 0000000..be55899
--- /dev/null
+++ b/node_modules/rc-picker/es/panels/HalfYearPanel/HalfYearBody.js
@@ -0,0 +1,83 @@
+import _extends from "@babel/runtime/helpers/esm/extends";
+import * as React from 'react';
+import { isSameQuarter, formatValue } from '../../utils/dateUtil';
+import RangeContext from '../../RangeContext';
+import useCellClassName from '../../hooks/useCellClassName';
+import PanelBody from '../PanelBody';
+import moment from 'moment';
+export var QUARTER_COL_COUNT = 2;
+var QUARTER_ROW_COUNT = 1;
+
+function HalfYearBody(props) {
+  var prefixCls = props.prefixCls,
+      locale = props.locale,
+      value = props.value,
+      viewDate = props.viewDate,
+      generateConfig = props.generateConfig;
+
+  var _React$useContext = React.useContext(RangeContext),
+      rangedValue = _React$useContext.rangedValue,
+      hoverRangedValue = _React$useContext.hoverRangedValue;
+
+  var cellPrefixCls = "".concat(prefixCls, "-cell");
+  var getCellClassName = useCellClassName({
+    cellPrefixCls: cellPrefixCls,
+    value: value,
+    generateConfig: generateConfig,
+    rangedValue: rangedValue,
+    hoverRangedValue: hoverRangedValue,
+    isSameCell: function isSameCell(current, target) {
+      return isSameQuarter(generateConfig, current, target, 'halfYear');
+    },
+    isInView: function isInView() {
+      return true;
+    },
+    offsetCell: function offsetCell(date, offset) {
+      return generateConfig.addMonth(date, offset * 6);
+    }
+  }); // default format
+
+  var _format = function format(date) {
+    var hasYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+    if (moment.isMoment(date)) {
+      var year = hasYear ? date.year() + ' ' : '';
+      return date.month() >= 0 && date.month() <= 5 ? "".concat(year, "\u4E0A\u534A\u5E74") : "".concat(year, "\u4E0B\u534A\u5E74");
+    }
+  };
+
+  var baseHalfYear = generateConfig.setDate(generateConfig.setMonth(viewDate, 0), 1);
+  return /*#__PURE__*/React.createElement(PanelBody, _extends({}, props, {
+    rowNum: QUARTER_ROW_COUNT,
+    colNum: QUARTER_COL_COUNT,
+    baseDate: baseHalfYear,
+    getCellText: function getCellText(date) {
+      return formatValue(date, {
+        locale: locale,
+        format: function format() {
+          var _locale$halfYearForma;
+
+          return ((_locale$halfYearForma = locale.halfYearFormat) === null || _locale$halfYearForma === void 0 ? void 0 : _locale$halfYearForma.call(locale, date, false)) || _format(date, false);
+        },
+        generateConfig: generateConfig
+      });
+    },
+    getCellClassName: getCellClassName,
+    getCellDate: function getCellDate(date, offset) {
+      return generateConfig.addMonth(date, offset * 6);
+    },
+    titleCell: function titleCell(date) {
+      return formatValue(date, {
+        locale: locale,
+        format: function format() {
+          var _locale$halfYearForma2;
+
+          return ((_locale$halfYearForma2 = locale.halfYearFormat) === null || _locale$halfYearForma2 === void 0 ? void 0 : _locale$halfYearForma2.call(locale, date)) || _format(date);
+        },
+        generateConfig: generateConfig
+      });
+    }
+  }));
+}
+
+export default HalfYearBody;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/panels/HalfYearPanel/index.d.ts b/node_modules/rc-picker/es/panels/HalfYearPanel/index.d.ts
new file mode 100644
index 0000000..9a575d9
--- /dev/null
+++ b/node_modules/rc-picker/es/panels/HalfYearPanel/index.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="react" />
+import type { PanelSharedProps } from '../../interface';
+export declare type HalfYearPanelProps<DateType> = {
+    headerSelect?: any;
+} & PanelSharedProps<DateType>;
+declare function HalfYearPanel<DateType>(props: HalfYearPanelProps<DateType>): JSX.Element;
+export default HalfYearPanel;
diff --git a/node_modules/rc-picker/es/panels/HalfYearPanel/index.js b/node_modules/rc-picker/es/panels/HalfYearPanel/index.js
new file mode 100644
index 0000000..8e50653
--- /dev/null
+++ b/node_modules/rc-picker/es/panels/HalfYearPanel/index.js
@@ -0,0 +1,97 @@
+import _extends from "@babel/runtime/helpers/esm/extends";
+import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
+import * as React from 'react';
+import HalfYearHeader from '../QuarterPanel/QuarterHeader';
+import HalfYearBody from './HalfYearBody';
+import { createKeyDownHandler } from '../../utils/uiUtil';
+
+function HalfYearPanel(props) {
+  var prefixCls = props.prefixCls,
+      operationRef = props.operationRef,
+      onViewDateChange = props.onViewDateChange,
+      generateConfig = props.generateConfig,
+      value = props.value,
+      viewDate = props.viewDate,
+      onPanelChange = props.onPanelChange,
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
+  var panelPrefixCls = "".concat(prefixCls, "-halfYear-panel"); // ======================= Keyboard =======================
+
+  operationRef.current = {
+    onKeyDown: function onKeyDown(event) {
+      return createKeyDownHandler(event, {
+        onLeftRight: function onLeftRight(diff) {
+          _onSelect(generateConfig.addMonth(value || viewDate, diff * 6), 'key');
+        },
+        onCtrlLeftRight: function onCtrlLeftRight(diff) {
+          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');
+        },
+        onUpDown: function onUpDown(diff) {
+          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');
+        }
+      });
+    }
+  }; // ==================== View Operation ====================
+
+  var onYearChange = function onYearChange(diff) {
+    var newDate = generateConfig.addYear(viewDate, diff);
+    onViewDateChange(newDate);
+    onPanelChange(null, newDate, 'year', diff);
+  };
+
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = _slicedToArray(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearChange(diffValue[0]);
+    }
+  }, [diffValue]);
+  return (
+    /*#__PURE__*/
+
+    /* HalfYearHeader is the same with QuarterHeader */
+    React.createElement("div", {
+      className: panelPrefixCls
+    }, /*#__PURE__*/React.createElement(HalfYearHeader, _extends({}, props, {
+      prefixCls: prefixCls,
+      onPrevYear: function onPrevYear() {
+        onYearChange(-1);
+      },
+      onNextYear: function onNextYear() {
+        onYearChange(1);
+      },
+      onYearClick: function onYearClick() {
+        onPanelChange('year', viewDate);
+      },
+      sourceModeCopy: sourceModeCopy
+    })), /*#__PURE__*/React.createElement(HalfYearBody, _extends({}, props, {
+      prefixCls: prefixCls,
+      onSelect: function onSelect(date) {
+        _onSelect(date, 'mouse');
+      }
+    })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+      style: {
+        opacity: '0.5',
+        width: '100%',
+        height: '100%',
+        background: '#fff',
+        position: 'absolute',
+        left: 0,
+        zIndex: '100'
+      }
+    }) : null)
+  );
+}
+
+export default HalfYearPanel;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/panels/Header.d.ts b/node_modules/rc-picker/es/panels/Header.d.ts
index 61a7a50..2f7c817 100644
--- a/node_modules/rc-picker/es/panels/Header.d.ts
+++ b/node_modules/rc-picker/es/panels/Header.d.ts
@@ -1,4 +1,5 @@
 import * as React from 'react';
+import type { Locale } from '../interface';
 export declare type HeaderProps = {
     prefixCls: string;
     prevIcon?: React.ReactNode;
@@ -13,7 +14,14 @@ export declare type HeaderProps = {
     onSuperPrev?: () => void;
     /** Next multiple steps */
     onSuperNext?: () => void;
+    /** current date */
+    onCurrent?: () => void;
+    showTodayBtn?: boolean;
+    locale?: Locale;
+    sourceMode?: string;
+    sourceModeCopy?: string;
     children?: React.ReactNode;
+    headerSelect?: React.ReactNode;
 };
-declare function Header({ prefixCls, prevIcon, nextIcon, superPrevIcon, superNextIcon, onSuperPrev, onSuperNext, onPrev, onNext, children, }: HeaderProps): JSX.Element;
+declare function Header({ prefixCls, prevIcon, nextIcon, superPrevIcon, superNextIcon, onSuperPrev, onSuperNext, onPrev, onNext, onCurrent, showTodayBtn, locale, children, sourceMode, sourceModeCopy, headerSelect, }: HeaderProps): JSX.Element;
 export default Header;
diff --git a/node_modules/rc-picker/es/panels/Header.js b/node_modules/rc-picker/es/panels/Header.js
index 159309c..09fa3f9 100644
--- a/node_modules/rc-picker/es/panels/Header.js
+++ b/node_modules/rc-picker/es/panels/Header.js
@@ -18,12 +18,20 @@ function Header(_ref) {
       onSuperNext = _ref.onSuperNext,
       onPrev = _ref.onPrev,
       onNext = _ref.onNext,
-      children = _ref.children;
+      onCurrent = _ref.onCurrent,
+      showTodayBtn = _ref.showTodayBtn,
+      locale = _ref.locale,
+      children = _ref.children,
+      sourceMode = _ref.sourceMode,
+      sourceModeCopy = _ref.sourceModeCopy,
+      headerSelect = _ref.headerSelect;
 
   var _React$useContext = React.useContext(PanelContext),
       hideNextBtn = _React$useContext.hideNextBtn,
-      hidePrevBtn = _React$useContext.hidePrevBtn;
+      hidePrevBtn = _React$useContext.hidePrevBtn,
+      fieldid = _React$useContext.fieldid;
 
+  var sourceModeCopyVar = sourceModeCopy ? sourceModeCopy : sourceMode;
   return /*#__PURE__*/React.createElement("div", {
     className: prefixCls
   }, onSuperPrev && /*#__PURE__*/React.createElement("button", {
@@ -31,28 +39,50 @@ function Header(_ref) {
     onClick: onSuperPrev,
     tabIndex: -1,
     className: "".concat(prefixCls, "-super-prev-btn"),
-    style: hidePrevBtn ? HIDDEN_STYLE : {}
+    style: hidePrevBtn ? HIDDEN_STYLE : {},
+    title: sourceModeCopyVar === 'decade' ? locale.previousDecade : sourceModeCopyVar === 'year' ? locale.previousCentury : locale.previousYear // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_super_prev_btn")
   }, superPrevIcon), onPrev && /*#__PURE__*/React.createElement("button", {
     type: "button",
     onClick: onPrev,
     tabIndex: -1,
     className: "".concat(prefixCls, "-prev-btn"),
-    style: hidePrevBtn ? HIDDEN_STYLE : {}
+    style: hidePrevBtn ? HIDDEN_STYLE : {},
+    title: locale.previousMonth // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_prev_btn")
   }, prevIcon), /*#__PURE__*/React.createElement("div", {
-    className: "".concat(prefixCls, "-view")
-  }, children), onNext && /*#__PURE__*/React.createElement("button", {
+    className: "".concat(prefixCls, "-view") // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_view")
+  }, headerSelect != undefined ? [headerSelect, children] : children), onNext && /*#__PURE__*/React.createElement("button", {
     type: "button",
     onClick: onNext,
     tabIndex: -1,
     className: "".concat(prefixCls, "-next-btn"),
-    style: hideNextBtn ? HIDDEN_STYLE : {}
+    style: hideNextBtn ? HIDDEN_STYLE : {},
+    title: locale.nextMonth // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_next_btn")
   }, nextIcon), onSuperNext && /*#__PURE__*/React.createElement("button", {
     type: "button",
     onClick: onSuperNext,
     tabIndex: -1,
     className: "".concat(prefixCls, "-super-next-btn"),
-    style: hideNextBtn ? HIDDEN_STYLE : {}
-  }, superNextIcon));
+    style: hideNextBtn ? HIDDEN_STYLE : {},
+    title: sourceModeCopyVar === 'decade' ? locale.nextDecade : sourceModeCopyVar === 'year' ? locale.nextCentury : locale.nextYear // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_super_next_btn")
+  }, superNextIcon), showTodayBtn && /*#__PURE__*/React.createElement("button", {
+    type: "button",
+    onClick: onCurrent,
+    tabIndex: -1,
+    className: "".concat(prefixCls, "-today-btn"),
+    title: locale.today // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_header_today_btn")
+  }, locale.locale === 'zh-cn' ? '今' : locale.today));
 }
 
 export default Header;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.d.ts b/node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.d.ts
index d6c1e8d..9cd3255 100644
--- a/node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.d.ts
+++ b/node_modules/rc-picker/es/panels/MonthPanel/MonthHeader.d.ts
@@ -9,6 +9,7 @@ export declare type MonthHeaderProps<DateType> = {
     onPrevYear: () => void;
     onNextYear: () => void;
     onYearClick: () => void;
+    sourceModeCopy: string;
 };
 declare function MonthHeader<DateType>(props: MonthHeaderProps<DateType>): JSX.Element;
 export default MonthHeader;
diff --git a/node_modules/rc-picker/es/panels/MonthPanel/index.d.ts b/node_modules/rc-picker/es/panels/MonthPanel/index.d.ts
index 127375c..d308b0b 100644
--- a/node_modules/rc-picker/es/panels/MonthPanel/index.d.ts
+++ b/node_modules/rc-picker/es/panels/MonthPanel/index.d.ts
@@ -3,6 +3,7 @@ import type { MonthCellRender } from './MonthBody';
 import type { PanelSharedProps } from '../../interface';
 export declare type MonthPanelProps<DateType> = {
     monthCellContentRender?: MonthCellRender<DateType>;
+    headerSelect?: any;
 } & PanelSharedProps<DateType>;
 declare function MonthPanel<DateType>(props: MonthPanelProps<DateType>): JSX.Element;
 export default MonthPanel;
diff --git a/node_modules/rc-picker/es/panels/MonthPanel/index.js b/node_modules/rc-picker/es/panels/MonthPanel/index.js
index 756101d..0047de6 100644
--- a/node_modules/rc-picker/es/panels/MonthPanel/index.js
+++ b/node_modules/rc-picker/es/panels/MonthPanel/index.js
@@ -1,4 +1,5 @@
 import _extends from "@babel/runtime/helpers/esm/extends";
+import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
 import * as React from 'react';
 import MonthHeader from './MonthHeader';
 import MonthBody, { MONTH_COL_COUNT } from './MonthBody';
@@ -12,7 +13,11 @@ function MonthPanel(props) {
       value = props.value,
       viewDate = props.viewDate,
       onPanelChange = props.onPanelChange,
-      _onSelect = props.onSelect;
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-month-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -37,9 +42,24 @@ function MonthPanel(props) {
   var onYearChange = function onYearChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = _slicedToArray(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearChange(diffValue[0]);
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
     className: panelPrefixCls
   }, /*#__PURE__*/React.createElement(MonthHeader, _extends({}, props, {
@@ -52,7 +72,8 @@ function MonthPanel(props) {
     },
     onYearClick: function onYearClick() {
       onPanelChange('year', viewDate);
-    }
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(MonthBody, _extends({}, props, {
     prefixCls: prefixCls,
     onSelect: function onSelect(date) {
@@ -60,7 +81,17 @@ function MonthPanel(props) {
 
       onPanelChange('date', date);
     }
-  })));
+  })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 export default MonthPanel;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.d.ts b/node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.d.ts
index 69bfc4e..d42b042 100644
--- a/node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.d.ts
+++ b/node_modules/rc-picker/es/panels/QuarterPanel/QuarterHeader.d.ts
@@ -9,6 +9,7 @@ export declare type QuarterHeaderProps<DateType> = {
     onPrevYear: () => void;
     onNextYear: () => void;
     onYearClick: () => void;
+    sourceModeCopy: string;
 };
 declare function QuarterHeader<DateType>(props: QuarterHeaderProps<DateType>): JSX.Element;
 export default QuarterHeader;
diff --git a/node_modules/rc-picker/es/panels/QuarterPanel/index.d.ts b/node_modules/rc-picker/es/panels/QuarterPanel/index.d.ts
index a363f0c..04ae68c 100644
--- a/node_modules/rc-picker/es/panels/QuarterPanel/index.d.ts
+++ b/node_modules/rc-picker/es/panels/QuarterPanel/index.d.ts
@@ -1,5 +1,7 @@
 /// <reference types="react" />
 import type { PanelSharedProps } from '../../interface';
-export declare type QuarterPanelProps<DateType> = {} & PanelSharedProps<DateType>;
+export declare type QuarterPanelProps<DateType> = {
+    headerSelect?: any;
+} & PanelSharedProps<DateType>;
 declare function QuarterPanel<DateType>(props: QuarterPanelProps<DateType>): JSX.Element;
 export default QuarterPanel;
diff --git a/node_modules/rc-picker/es/panels/QuarterPanel/index.js b/node_modules/rc-picker/es/panels/QuarterPanel/index.js
index 43f02df..3415e83 100644
--- a/node_modules/rc-picker/es/panels/QuarterPanel/index.js
+++ b/node_modules/rc-picker/es/panels/QuarterPanel/index.js
@@ -1,4 +1,5 @@
 import _extends from "@babel/runtime/helpers/esm/extends";
+import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
 import * as React from 'react';
 import QuarterHeader from './QuarterHeader';
 import QuarterBody from './QuarterBody';
@@ -12,7 +13,11 @@ function QuarterPanel(props) {
       value = props.value,
       viewDate = props.viewDate,
       onPanelChange = props.onPanelChange,
-      _onSelect = props.onSelect;
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-quarter-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -34,9 +39,24 @@ function QuarterPanel(props) {
   var onYearChange = function onYearChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = _slicedToArray(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearChange(diffValue[0]);
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
     className: panelPrefixCls
   }, /*#__PURE__*/React.createElement(QuarterHeader, _extends({}, props, {
@@ -49,13 +69,24 @@ function QuarterPanel(props) {
     },
     onYearClick: function onYearClick() {
       onPanelChange('year', viewDate);
-    }
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(QuarterBody, _extends({}, props, {
     prefixCls: prefixCls,
     onSelect: function onSelect(date) {
       _onSelect(date, 'mouse');
     }
-  })));
+  })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 export default QuarterPanel;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/panels/TimePanel/TimeBody.js b/node_modules/rc-picker/es/panels/TimePanel/TimeBody.js
index 8502118..dce45f6 100644
--- a/node_modules/rc-picker/es/panels/TimePanel/TimeBody.js
+++ b/node_modules/rc-picker/es/panels/TimePanel/TimeBody.js
@@ -182,19 +182,22 @@ function TimeBody(props) {
 
 
   addColumnNode(showHour, /*#__PURE__*/React.createElement(TimeUnitColumn, {
-    key: "hour"
+    key: "hour",
+    className: "".concat(columnPrefixCls, "-hour")
   }), hour, hours, function (num) {
     onSelect(setTime(isPM, num, minute, second), 'mouse');
   }); // Minute
 
   addColumnNode(showMinute, /*#__PURE__*/React.createElement(TimeUnitColumn, {
-    key: "minute"
+    key: "minute",
+    className: "".concat(columnPrefixCls, "-minute")
   }), minute, minutes, function (num) {
     onSelect(setTime(isPM, hour, num, second), 'mouse');
   }); // Second
 
   addColumnNode(showSecond, /*#__PURE__*/React.createElement(TimeUnitColumn, {
-    key: "second"
+    key: "second",
+    className: "".concat(columnPrefixCls, "-second")
   }), second, seconds, function (num) {
     onSelect(setTime(isPM, hour, minute, num), 'mouse');
   }); // 12 Hours
@@ -206,7 +209,8 @@ function TimeBody(props) {
   }
 
   addColumnNode(use12Hours === true, /*#__PURE__*/React.createElement(TimeUnitColumn, {
-    key: "12hours"
+    key: "12hours",
+    className: "".concat(columnPrefixCls, "-12hours")
   }), PMIndex, [{
     label: 'AM',
     value: 0,
diff --git a/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.d.ts b/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.d.ts
index 69cad3e..c63fc7e 100644
--- a/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.d.ts
+++ b/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.d.ts
@@ -6,6 +6,7 @@ export declare type Unit = {
 };
 export declare type TimeUnitColumnProps = {
     prefixCls?: string;
+    className?: string;
     units?: Unit[];
     value?: number;
     active?: boolean;
diff --git a/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js b/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js
index b8557b4..6c9aa08 100644
--- a/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js
+++ b/node_modules/rc-picker/es/panels/TimePanel/TimeUnitColumn.js
@@ -7,6 +7,7 @@ import PanelContext from '../../PanelContext';
 
 function TimeUnitColumn(props) {
   var prefixCls = props.prefixCls,
+      className = props.className,
       units = props.units,
       onSelect = props.onSelect,
       value = props.value,
@@ -46,7 +47,7 @@ function TimeUnitColumn(props) {
     };
   }, [open]);
   return /*#__PURE__*/React.createElement("ul", {
-    className: classNames("".concat(prefixCls, "-column"), _defineProperty({}, "".concat(prefixCls, "-column-active"), active)),
+    className: classNames("".concat(prefixCls, "-column"), className, _defineProperty({}, "".concat(prefixCls, "-column-active"), active)),
     ref: ulRef,
     style: {
       position: 'relative'
diff --git a/node_modules/rc-picker/es/panels/TimePanel/index.d.ts b/node_modules/rc-picker/es/panels/TimePanel/index.d.ts
index 77cf193..00207c3 100644
--- a/node_modules/rc-picker/es/panels/TimePanel/index.d.ts
+++ b/node_modules/rc-picker/es/panels/TimePanel/index.d.ts
@@ -1,6 +1,7 @@
 /// <reference types="react" />
 import type { PanelSharedProps, DisabledTimes } from '../../interface';
 export declare type SharedTimeProps<DateType> = {
+    fieldid?: string;
     format?: string;
     showNow?: boolean;
     showHour?: boolean;
diff --git a/node_modules/rc-picker/es/panels/TimePanel/index.js b/node_modules/rc-picker/es/panels/TimePanel/index.js
index e614894..90498e6 100644
--- a/node_modules/rc-picker/es/panels/TimePanel/index.js
+++ b/node_modules/rc-picker/es/panels/TimePanel/index.js
@@ -19,6 +19,7 @@ function TimePanel(props) {
       format = _props$format === void 0 ? 'HH:mm:ss' : _props$format,
       prefixCls = props.prefixCls,
       active = props.active,
+      fieldid = props.fieldid,
       operationRef = props.operationRef,
       showHour = props.showHour,
       showMinute = props.showMinute,
@@ -60,6 +61,8 @@ function TimePanel(props) {
     }
   };
   return /*#__PURE__*/React.createElement("div", {
+    // @ts-ignore
+    fieldid: fieldid && "".concat(fieldid, "-time-panel"),
     className: classNames(panelPrefixCls, _defineProperty({}, "".concat(panelPrefixCls, "-active"), active))
   }, /*#__PURE__*/React.createElement(TimeHeader, _extends({}, props, {
     format: format,
diff --git a/node_modules/rc-picker/es/panels/YearPanel/YearHeader.d.ts b/node_modules/rc-picker/es/panels/YearPanel/YearHeader.d.ts
index f3966b8..aca20c7 100644
--- a/node_modules/rc-picker/es/panels/YearPanel/YearHeader.d.ts
+++ b/node_modules/rc-picker/es/panels/YearPanel/YearHeader.d.ts
@@ -8,6 +8,7 @@ export declare type YearHeaderProps<DateType> = {
     onPrevDecade: () => void;
     onNextDecade: () => void;
     onDecadeClick: () => void;
+    sourceModeCopy: string;
 };
 declare function YearHeader<DateType>(props: YearHeaderProps<DateType>): JSX.Element;
 export default YearHeader;
diff --git a/node_modules/rc-picker/es/panels/YearPanel/index.d.ts b/node_modules/rc-picker/es/panels/YearPanel/index.d.ts
index 06168dc..0c19dbb 100644
--- a/node_modules/rc-picker/es/panels/YearPanel/index.d.ts
+++ b/node_modules/rc-picker/es/panels/YearPanel/index.d.ts
@@ -2,6 +2,8 @@
 import type { PanelSharedProps, PanelMode } from '../../interface';
 export declare type YearPanelProps<DateType> = {
     sourceMode: PanelMode;
+    headerSelect?: any;
+    showSelectMask?: boolean;
 } & PanelSharedProps<DateType>;
 export declare const YEAR_DECADE_COUNT = 10;
 declare function YearPanel<DateType>(props: YearPanelProps<DateType>): JSX.Element;
diff --git a/node_modules/rc-picker/es/panels/YearPanel/index.js b/node_modules/rc-picker/es/panels/YearPanel/index.js
index 0bcb2e9..a5c8836 100644
--- a/node_modules/rc-picker/es/panels/YearPanel/index.js
+++ b/node_modules/rc-picker/es/panels/YearPanel/index.js
@@ -1,4 +1,5 @@
 import _extends from "@babel/runtime/helpers/esm/extends";
+import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
 import * as React from 'react';
 import YearHeader from './YearHeader';
 import YearBody, { YEAR_COL_COUNT } from './YearBody';
@@ -14,7 +15,10 @@ function YearPanel(props) {
       viewDate = props.viewDate,
       sourceMode = props.sourceMode,
       _onSelect = props.onSelect,
-      onPanelChange = props.onPanelChange;
+      onPanelChange = props.onPanelChange,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-year-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -30,7 +34,7 @@ function YearPanel(props) {
           _onSelect(generateConfig.addYear(value || viewDate, diff * YEAR_COL_COUNT), 'key');
         },
         onEnter: function onEnter() {
-          onPanelChange(sourceMode === 'date' ? 'date' : 'month', value || viewDate);
+          onPanelChange('month', value || viewDate);
         }
       });
     }
@@ -39,9 +43,24 @@ function YearPanel(props) {
   var onDecadeChange = function onDecadeChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff * 10);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = _slicedToArray(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && ['date', 'week', 'quarter', 'year', 'halfYear', 'month'].includes(sourceMode)) {
+      setSourceModeCopy('decade');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onDecadeChange(diffValue[0]);
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
     className: panelPrefixCls
   }, /*#__PURE__*/React.createElement(YearHeader, _extends({}, props, {
@@ -54,15 +73,26 @@ function YearPanel(props) {
     },
     onDecadeClick: function onDecadeClick() {
       onPanelChange('decade', viewDate);
-    }
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(YearBody, _extends({}, props, {
     prefixCls: prefixCls,
     onSelect: function onSelect(date) {
-      onPanelChange(sourceMode === 'date' ? 'date' : 'month', date);
+      onPanelChange('month', date);
 
       _onSelect(date, 'mouse');
     }
-  })));
+  })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 export default YearPanel;
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/utils/dateUtil.d.ts b/node_modules/rc-picker/es/utils/dateUtil.d.ts
index c310a63..5c19dcf 100644
--- a/node_modules/rc-picker/es/utils/dateUtil.d.ts
+++ b/node_modules/rc-picker/es/utils/dateUtil.d.ts
@@ -4,8 +4,8 @@ export declare const WEEK_DAY_COUNT = 7;
 export declare function isNullEqual<T>(value1: T, value2: T): boolean | undefined;
 export declare function isSameDecade<DateType>(generateConfig: GenerateConfig<DateType>, decade1: NullableDateType<DateType>, decade2: NullableDateType<DateType>): boolean;
 export declare function isSameYear<DateType>(generateConfig: GenerateConfig<DateType>, year1: NullableDateType<DateType>, year2: NullableDateType<DateType>): boolean;
-export declare function getQuarter<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType): number;
-export declare function isSameQuarter<DateType>(generateConfig: GenerateConfig<DateType>, quarter1: NullableDateType<DateType>, quarter2: NullableDateType<DateType>): boolean;
+export declare function getQuarter<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType, type?: 'quarter' | 'halfYear'): number;
+export declare function isSameQuarter<DateType>(generateConfig: GenerateConfig<DateType>, quarter1: NullableDateType<DateType>, quarter2: NullableDateType<DateType>, type?: 'quarter' | 'halfYear'): boolean;
 export declare function isSameMonth<DateType>(generateConfig: GenerateConfig<DateType>, month1: NullableDateType<DateType>, month2: NullableDateType<DateType>): boolean;
 export declare function isSameDate<DateType>(generateConfig: GenerateConfig<DateType>, date1: NullableDateType<DateType>, date2: NullableDateType<DateType>): boolean;
 export declare function isSameTime<DateType>(generateConfig: GenerateConfig<DateType>, time1: NullableDateType<DateType>, time2: NullableDateType<DateType>): boolean;
diff --git a/node_modules/rc-picker/es/utils/dateUtil.js b/node_modules/rc-picker/es/utils/dateUtil.js
index bc3c857..4bd9567 100644
--- a/node_modules/rc-picker/es/utils/dateUtil.js
+++ b/node_modules/rc-picker/es/utils/dateUtil.js
@@ -32,17 +32,19 @@ export function isSameYear(generateConfig, year1, year2) {
   return generateConfig.getYear(year1) === generateConfig.getYear(year2);
 }
 export function getQuarter(generateConfig, date) {
-  var quota = Math.floor(generateConfig.getMonth(date) / 3);
+  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'quarter';
+  var quota = Math.floor(generateConfig.getMonth(date) / (type === 'halfYear' ? 6 : 3));
   return quota + 1;
 }
 export function isSameQuarter(generateConfig, quarter1, quarter2) {
+  var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'quarter';
   var equal = isNullEqual(quarter1, quarter2);
 
   if (typeof equal === 'boolean') {
     return equal;
   }
 
-  return isSameYear(generateConfig, quarter1, quarter2) && getQuarter(generateConfig, quarter1) === getQuarter(generateConfig, quarter2);
+  return isSameYear(generateConfig, quarter1, quarter2) && getQuarter(generateConfig, quarter1, type) === getQuarter(generateConfig, quarter2, type);
 }
 export function isSameMonth(generateConfig, month1, month2) {
   var equal = isNullEqual(month1, month2);
@@ -111,6 +113,7 @@ export function getClosingViewDate(viewDate, picker, generateConfig) {
     case 'year':
       return generateConfig.addYear(viewDate, offset * 10);
 
+    case 'halfYear':
     case 'quarter':
     case 'month':
       return generateConfig.addYear(viewDate, offset);
diff --git a/node_modules/rc-picker/es/utils/getRanges.d.ts b/node_modules/rc-picker/es/utils/getRanges.d.ts
index 98bf988..5aae660 100644
--- a/node_modules/rc-picker/es/utils/getRanges.d.ts
+++ b/node_modules/rc-picker/es/utils/getRanges.d.ts
@@ -2,6 +2,8 @@
 import type { Components, RangeList, Locale } from '../interface';
 export declare type RangesProps = {
     prefixCls: string;
+    fieldid?: string;
+    activePresetLabel?: string;
     rangeList?: RangeList;
     components?: Components;
     needConfirmButton: boolean;
@@ -11,4 +13,4 @@ export declare type RangesProps = {
     showNow?: boolean;
     locale: Locale;
 };
-export default function getRanges({ prefixCls, rangeList, components, needConfirmButton, onNow, onOk, okDisabled, showNow, locale, }: RangesProps): JSX.Element;
+export default function getRanges({ prefixCls, fieldid, activePresetLabel, rangeList, components, needConfirmButton, onNow, onOk, okDisabled, showNow, locale, }: RangesProps): JSX.Element;
diff --git a/node_modules/rc-picker/es/utils/getRanges.js b/node_modules/rc-picker/es/utils/getRanges.js
index d31bc83..252c723 100644
--- a/node_modules/rc-picker/es/utils/getRanges.js
+++ b/node_modules/rc-picker/es/utils/getRanges.js
@@ -1,6 +1,10 @@
+import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
+import classNames from 'classnames';
 import * as React from 'react';
 export default function getRanges(_ref) {
   var prefixCls = _ref.prefixCls,
+      fieldid = _ref.fieldid,
+      activePresetLabel = _ref.activePresetLabel,
       _ref$rangeList = _ref.rangeList,
       rangeList = _ref$rangeList === void 0 ? [] : _ref$rangeList,
       _ref$components = _ref.components,
@@ -22,8 +26,10 @@ export default function getRanges(_ref) {
           onMouseEnter = _ref2.onMouseEnter,
           onMouseLeave = _ref2.onMouseLeave;
       return /*#__PURE__*/React.createElement("li", {
+        // @ts-ignore
+        fieldid: fieldid && ''.concat(fieldid, '-', label),
         key: label,
-        className: "".concat(prefixCls, "-preset")
+        className: classNames("".concat(prefixCls, "-preset"), _defineProperty({}, "".concat(prefixCls, "-preset-active"), activePresetLabel === label))
       }, /*#__PURE__*/React.createElement(Item, {
         onClick: onClick,
         onMouseEnter: onMouseEnter,
@@ -37,15 +43,20 @@ export default function getRanges(_ref) {
 
     if (onNow && !presetNode && showNow !== false) {
       presetNode = /*#__PURE__*/React.createElement("li", {
-        className: "".concat(prefixCls, "-now")
+        className: "".concat(prefixCls, "-now") // @ts-ignore
+        ,
+        fieldid: fieldid && ''.concat(fieldid, '-now')
       }, /*#__PURE__*/React.createElement("a", {
         className: "".concat(prefixCls, "-now-btn"),
-        onClick: onNow
+        onClick: onNow,
+        title: locale.now
       }, locale.now));
     }
 
     okNode = needConfirmButton && /*#__PURE__*/React.createElement("li", {
-      className: "".concat(prefixCls, "-ok")
+      className: "".concat(prefixCls, "-ok") // @ts-ignore
+      ,
+      fieldid: fieldid && ''.concat(fieldid, '-ok')
     }, /*#__PURE__*/React.createElement(Button, {
       disabled: okDisabled,
       onClick: onOk
@@ -57,6 +68,8 @@ export default function getRanges(_ref) {
   }
 
   return /*#__PURE__*/React.createElement("ul", {
-    className: "".concat(prefixCls, "-ranges")
+    className: "".concat(prefixCls, "-ranges") // @ts-ignore
+    ,
+    fieldid: fieldid && ''.concat(fieldid, '-ranges')
   }, presetNode, okNode);
 }
\ No newline at end of file
diff --git a/node_modules/rc-picker/es/utils/uiUtil.js b/node_modules/rc-picker/es/utils/uiUtil.js
index 1ae2481..ede85fc 100644
--- a/node_modules/rc-picker/es/utils/uiUtil.js
+++ b/node_modules/rc-picker/es/utils/uiUtil.js
@@ -232,6 +232,14 @@ var getMonthNextMode = function getMonthNextMode(next) {
   return next;
 };
 
+var getHalfYearMode = function getHalfYearMode(next) {
+  if (next === 'month' || next === 'date') {
+    return 'halfYear';
+  }
+
+  return next;
+};
+
 var getQuarterNextMode = function getQuarterNextMode(next) {
   if (next === 'month' || next === 'date') {
     return 'quarter';
@@ -251,6 +259,7 @@ var getWeekNextMode = function getWeekNextMode(next) {
 export var PickerModeMap = {
   year: getYearNextMode,
   month: getMonthNextMode,
+  halfYear: getHalfYearMode,
   quarter: getQuarterNextMode,
   week: getWeekNextMode,
   time: null,
diff --git a/node_modules/rc-picker/lib/PanelContext.d.ts b/node_modules/rc-picker/lib/PanelContext.d.ts
index ea55a93..33038bc 100644
--- a/node_modules/rc-picker/lib/PanelContext.d.ts
+++ b/node_modules/rc-picker/lib/PanelContext.d.ts
@@ -6,6 +6,7 @@ export declare type ContextOperationRefProps = {
 };
 export declare type PanelContextProps = {
     operationRef?: React.MutableRefObject<ContextOperationRefProps | null>;
+    fieldid?: string;
     /** Only work with time panel */
     hideHeader?: boolean;
     panelRef?: React.Ref<HTMLDivElement>;
diff --git a/node_modules/rc-picker/lib/Picker.d.ts b/node_modules/rc-picker/lib/Picker.d.ts
index ae02d8f..0829e16 100644
--- a/node_modules/rc-picker/lib/Picker.d.ts
+++ b/node_modules/rc-picker/lib/Picker.d.ts
@@ -33,6 +33,7 @@ export declare type PickerSharedProps<DateType> = {
     /** Make input readOnly to avoid popup keyboard in mobile */
     inputReadOnly?: boolean;
     id?: string;
+    fieldid?: string;
     format?: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
     suffixIcon?: React.ReactNode;
     clearIcon?: React.ReactNode;
diff --git a/node_modules/rc-picker/lib/Picker.js b/node_modules/rc-picker/lib/Picker.js
index 4dc0042..5fd8a3c 100644
--- a/node_modules/rc-picker/lib/Picker.js
+++ b/node_modules/rc-picker/lib/Picker.js
@@ -77,6 +77,7 @@ function InnerPicker(props) {
   var _props$prefixCls = props.prefixCls,
       prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
       id = props.id,
+      fieldid = props.fieldid,
       tabIndex = props.tabIndex,
       style = props.style,
       className = props.className,
@@ -351,6 +352,7 @@ function InnerPicker(props) {
   });
   var panelNode = /*#__PURE__*/React.createElement(_PickerPanel.default, (0, _extends2.default)({}, panelProps, {
     generateConfig: generateConfig,
+    fieldid: fieldid,
     className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(prefixCls, "-panel-focused"), !typing)),
     value: selectedValue,
     locale: locale,
@@ -373,7 +375,17 @@ function InnerPicker(props) {
 
   var panel = /*#__PURE__*/React.createElement("div", {
     className: "".concat(prefixCls, "-panel-container"),
+    onClick: function onClick(e) {
+      e.stopPropagation();
+    },
+    onMouseEnter: function onMouseEnter(e) {
+      e.stopPropagation();
+    },
+    onMouseLeave: function onMouseLeave(e) {
+      e.stopPropagation();
+    },
     onMouseDown: function onMouseDown(e) {
+      e.stopPropagation();
       e.preventDefault();
     }
   }, panelNode);
@@ -443,6 +455,7 @@ function InnerPicker(props) {
   return /*#__PURE__*/React.createElement(_PanelContext.default.Provider, {
     value: {
       operationRef: operationRef,
+      fieldid: fieldid,
       hideHeader: picker === 'time',
       panelRef: panelDivRef,
       onSelect: onContextSelect,
@@ -463,7 +476,9 @@ function InnerPicker(props) {
     popupPlacement: popupPlacement,
     direction: direction
   }, /*#__PURE__*/React.createElement("div", {
-    ref: containerRef,
+    ref: containerRef // @ts-ignore
+    ,
+    fieldid: fieldid,
     className: (0, _classnames.default)(prefixCls, className, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-disabled"), disabled), (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-focused"), focused), (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames2)),
     style: style,
     onMouseDown: onMouseDown,
diff --git a/node_modules/rc-picker/lib/PickerPanel.d.ts b/node_modules/rc-picker/lib/PickerPanel.d.ts
index 53d6a33..c0ddc7d 100644
--- a/node_modules/rc-picker/lib/PickerPanel.d.ts
+++ b/node_modules/rc-picker/lib/PickerPanel.d.ts
@@ -13,10 +13,12 @@ import type { MonthCellRender } from './panels/MonthPanel/MonthBody';
 export declare type PickerPanelSharedProps<DateType> = {
     prefixCls?: string;
     className?: string;
+    fieldid?: string;
     style?: React.CSSProperties;
     /** @deprecated Will be removed in next big version. Please use `mode` instead */
     mode?: PanelMode;
     tabIndex?: number;
+    linkedPanels?: boolean;
     locale: Locale;
     generateConfig: GenerateConfig<DateType>;
     value?: DateType | null;
diff --git a/node_modules/rc-picker/lib/PickerPanel.js b/node_modules/rc-picker/lib/PickerPanel.js
index 3b2c8c5..a459824 100644
--- a/node_modules/rc-picker/lib/PickerPanel.js
+++ b/node_modules/rc-picker/lib/PickerPanel.js
@@ -41,6 +41,8 @@ var _MonthPanel = _interopRequireDefault(require("./panels/MonthPanel"));
 
 var _QuarterPanel = _interopRequireDefault(require("./panels/QuarterPanel"));
 
+var _HalfYearPanel = _interopRequireDefault(require("./panels/HalfYearPanel"));
+
 var _YearPanel = _interopRequireDefault(require("./panels/YearPanel"));
 
 var _DecadePanel = _interopRequireDefault(require("./panels/DecadePanel"));
@@ -75,6 +77,7 @@ function PickerPanel(props) {
   var _props$prefixCls = props.prefixCls,
       prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
       className = props.className,
+      fieldid = props.fieldid,
       style = props.style,
       locale = props.locale,
       generateConfig = props.generateConfig,
@@ -83,6 +86,7 @@ function PickerPanel(props) {
       pickerValue = props.pickerValue,
       defaultPickerValue = props.defaultPickerValue,
       disabledDate = props.disabledDate,
+      linkedPanels = props.linkedPanels,
       mode = props.mode,
       _props$picker = props.picker,
       picker = _props$picker === void 0 ? 'date' : _props$picker,
@@ -221,13 +225,13 @@ function PickerPanel(props) {
       sourceMode = _React$useState2[0],
       setSourceMode = _React$useState2[1];
 
-  var onInternalPanelChange = function onInternalPanelChange(newMode, viewValue) {
+  var onInternalPanelChange = function onInternalPanelChange(newMode, viewValue, type, diff) {
     var nextMode = getInternalNextMode(newMode || mergedMode);
     setSourceMode(mergedMode);
     setInnerMode(nextMode);
 
     if (onPanelChange && (mergedMode !== nextMode || (0, _dateUtil.isEqual)(generateConfig, viewDate, viewDate))) {
-      onPanelChange(viewValue, nextMode);
+      onPanelChange(viewValue, nextMode, type, diff);
     }
   };
 
@@ -308,7 +312,8 @@ function PickerPanel(props) {
     onViewDateChange: setViewDate,
     sourceMode: sourceMode,
     onPanelChange: onInternalPanelChange,
-    disabledDate: disabledDate
+    disabledDate: disabledDate,
+    showTodayBtn: !linkedPanels && mode === 'date'
   });
   delete pickerProps.onChange;
   delete pickerProps.onSelect;
@@ -350,6 +355,15 @@ function PickerPanel(props) {
       }));
       break;
 
+    case 'halfYear':
+      panelNode = /*#__PURE__*/React.createElement(_HalfYearPanel.default, (0, _extends2.default)({}, pickerProps, {
+        onSelect: function onSelect(date, type) {
+          setViewDate(date);
+          triggerSelect(date, type);
+        }
+      }));
+      break;
+
     case 'week':
       panelNode = /*#__PURE__*/React.createElement(_WeekPanel.default, (0, _extends2.default)({}, pickerProps, {
         onSelect: function onSelect(date, type) {
@@ -405,6 +419,7 @@ function PickerPanel(props) {
     extraFooter = (0, _getExtraFooter.default)(prefixCls, mergedMode, renderExtraFooter);
     rangesNode = (0, _getRanges.default)({
       prefixCls: prefixCls,
+      fieldid: fieldid,
       components: components,
       needConfirmButton: needConfirmButton,
       okDisabled: !mergedValue || disabledDate && disabledDate(mergedValue),
@@ -436,7 +451,10 @@ function PickerPanel(props) {
         if (!disabled) {
           triggerSelect(now, 'mouse', true);
         }
-      }
+      },
+      title: locale.today // @ts-ignore
+      ,
+      fieldid: fieldid && "".concat(fieldid, "_footer_today_btn")
     }, locale.today);
   }
 
@@ -444,8 +462,9 @@ function PickerPanel(props) {
     value: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, panelContext), {}, {
       mode: mergedMode,
       hideHeader: 'hideHeader' in props ? hideHeader : panelContext.hideHeader,
-      hidePrevBtn: inRange && panelPosition === 'right',
-      hideNextBtn: inRange && panelPosition === 'left'
+      hidePrevBtn: linkedPanels && inRange && panelPosition === 'right',
+      hideNextBtn: linkedPanels && inRange && panelPosition === 'left' // 左右面板隔离需求时不隐藏下翻页箭头
+
     })
   }, /*#__PURE__*/React.createElement("div", {
     tabIndex: tabIndex,
diff --git a/node_modules/rc-picker/lib/PickerTrigger.js b/node_modules/rc-picker/lib/PickerTrigger.js
index aea4708..8cbe1b1 100644
--- a/node_modules/rc-picker/lib/PickerTrigger.js
+++ b/node_modules/rc-picker/lib/PickerTrigger.js
@@ -94,7 +94,7 @@ function PickerTrigger(_ref) {
     popupClassName: (0, _classnames.default)(dropdownClassName, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(dropdownPrefixCls, "-range"), range), (0, _defineProperty2.default)(_classNames, "".concat(dropdownPrefixCls, "-rtl"), direction === 'rtl'), _classNames)),
     popupStyle: popupStyle,
     getPopupContainer: getPopupContainer
-  }, children);
+  }, children || /*#__PURE__*/React.createElement("div", null));
 }
 
 var _default = PickerTrigger;
diff --git a/node_modules/rc-picker/lib/RangeContext.d.ts b/node_modules/rc-picker/lib/RangeContext.d.ts
index 85ac246..7eb3f21 100644
--- a/node_modules/rc-picker/lib/RangeContext.d.ts
+++ b/node_modules/rc-picker/lib/RangeContext.d.ts
@@ -9,6 +9,7 @@ export declare type RangeContextProps = {
     hoverRangedValue?: RangeValue<any>;
     inRange?: boolean;
     panelPosition?: 'left' | 'right' | false;
+    fieldid?: string;
 };
 declare const RangeContext: React.Context<RangeContextProps>;
 export default RangeContext;
diff --git a/node_modules/rc-picker/lib/RangePicker.d.ts b/node_modules/rc-picker/lib/RangePicker.d.ts
index d6bd38d..bbe8ed5 100644
--- a/node_modules/rc-picker/lib/RangePicker.d.ts
+++ b/node_modules/rc-picker/lib/RangePicker.d.ts
@@ -9,6 +9,8 @@ export declare type RangeInfo = {
 export declare type RangeDateRender<DateType> = (currentDate: DateType, today: DateType, info: RangeInfo) => React.ReactNode;
 export declare type RangePickerSharedProps<DateType> = {
     id?: string;
+    fieldid?: string;
+    linkedPanels?: boolean;
     value?: RangeValue<DateType>;
     defaultValue?: RangeValue<DateType>;
     defaultPickerValue?: [DateType, DateType];
@@ -19,10 +21,9 @@ export declare type RangePickerSharedProps<DateType> = {
     separator?: React.ReactNode;
     allowEmpty?: [boolean, boolean];
     mode?: [PanelMode, PanelMode];
-    onChange?: (values: RangeValue<DateType>, formatString: [string, string]) => void;
+    onChange?: (values: RangeValue<DateType>, formatString: [string, string], label?: string) => void;
     onCalendarChange?: (values: RangeValue<DateType>, formatString: [string, string], info: RangeInfo) => void;
-    onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode]) => void;
-    onFocus?: React.FocusEventHandler<HTMLInputElement>;
+    onPanelChange?: (values: RangeValue<DateType>, modes: [PanelMode, PanelMode], type?: 'year' | 'month', diff?: number) => void;
     onBlur?: React.FocusEventHandler<HTMLInputElement>;
     onMouseDown?: React.MouseEventHandler<HTMLDivElement>;
     onMouseUp?: React.MouseEventHandler<HTMLDivElement>;
@@ -30,12 +31,19 @@ export declare type RangePickerSharedProps<DateType> = {
     onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;
     onClick?: React.MouseEventHandler<HTMLDivElement>;
     onOk?: (dates: RangeValue<DateType>) => void;
+    onPresetChange?: (label: string, values: RangeValue<DateType>) => void;
+    activePresetLabel?: string;
     direction?: 'ltr' | 'rtl';
     autoComplete?: string;
     /** @private Internal control of active picker. Do not use since it's private usage */
     activePickerIndex?: 0 | 1;
     dateRender?: RangeDateRender<DateType>;
     panelRender?: (originPanel: React.ReactNode) => React.ReactNode;
+    diffValue?: [number, number];
+    headerSelectLeft?: any;
+    headerSelectRight?: any;
+    showSelectMask?: boolean;
+    onInputFocus?: any;
 };
 declare type OmitPickerProps<Props> = Omit<Props, 'value' | 'defaultValue' | 'defaultPickerValue' | 'placeholder' | 'disabled' | 'disabledTime' | 'showToday' | 'showTime' | 'mode' | 'onChange' | 'onSelect' | 'onPanelChange' | 'pickerValue' | 'onPickerValueChange' | 'onOk' | 'dateRender'>;
 declare type RangeShowTimeObject<DateType> = Omit<SharedTimeProps<DateType>, 'defaultValue'> & {
diff --git a/node_modules/rc-picker/lib/RangePicker.js b/node_modules/rc-picker/lib/RangePicker.js
index e99081e..18558ad 100644
--- a/node_modules/rc-picker/lib/RangePicker.js
+++ b/node_modules/rc-picker/lib/RangePicker.js
@@ -101,6 +101,7 @@ function InnerRangePicker(props) {
   var _props$prefixCls = props.prefixCls,
       prefixCls = _props$prefixCls === void 0 ? 'rc-picker' : _props$prefixCls,
       id = props.id,
+      fieldid = props.fieldid,
       style = props.style,
       className = props.className,
       popupStyle = props.popupStyle,
@@ -123,6 +124,8 @@ function InnerRangePicker(props) {
       value = props.value,
       defaultValue = props.defaultValue,
       defaultPickerValue = props.defaultPickerValue,
+      _props$linkedPanels = props.linkedPanels,
+      linkedPanels = _props$linkedPanels === void 0 ? true : _props$linkedPanels,
       open = props.open,
       defaultOpen = props.defaultOpen,
       disabledDate = props.disabledDate,
@@ -151,12 +154,17 @@ function InnerRangePicker(props) {
       onClick = props.onClick,
       _onOk = props.onOk,
       _onKeyDown = props.onKeyDown,
+      onPresetChange = props.onPresetChange,
       components = props.components,
       order = props.order,
       direction = props.direction,
+      activePresetLabel = props.activePresetLabel,
       activePickerIndex = props.activePickerIndex,
       _props$autoComplete = props.autoComplete,
-      autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete;
+      autoComplete = _props$autoComplete === void 0 ? 'off' : _props$autoComplete,
+      headerSelectRight = props.headerSelectRight,
+      headerSelectLeft = props.headerSelectLeft,
+      onInputFocus = props.onInputFocus;
   var needConfirmButton = picker === 'date' && !!showTime || picker === 'time'; // We record opened status here in case repeat open with picker
 
   var openRecordsRef = (0, React.useRef)({});
@@ -202,19 +210,7 @@ function InnerRangePicker(props) {
   }),
       _useMergedState4 = (0, _slicedToArray2.default)(_useMergedState3, 2),
       mergedValue = _useMergedState4[0],
-      setInnerValue = _useMergedState4[1]; // =========================== View Date ===========================
-  // Config view panel
-
-
-  var _useRangeViewDates = (0, _useRangeViewDates3.default)({
-    values: mergedValue,
-    picker: picker,
-    defaultDates: defaultPickerValue,
-    generateConfig: generateConfig
-  }),
-      _useRangeViewDates2 = (0, _slicedToArray2.default)(_useRangeViewDates, 2),
-      getViewDate = _useRangeViewDates2[0],
-      setViewDate = _useRangeViewDates2[1]; // ========================= Select Values =========================
+      setInnerValue = _useMergedState4[1]; // ========================= Select Values =========================
 
 
   var _useMergedState5 = (0, _useMergedState11.default)(mergedValue, {
@@ -237,7 +233,19 @@ function InnerRangePicker(props) {
   }),
       _useMergedState6 = (0, _slicedToArray2.default)(_useMergedState5, 2),
       selectedValue = _useMergedState6[0],
-      setSelectedValue = _useMergedState6[1]; // ============================= Modes =============================
+      setSelectedValue = _useMergedState6[1]; // =========================== View Date ===========================
+  // Config view panel
+
+
+  var _useRangeViewDates = (0, _useRangeViewDates3.default)({
+    values: selectedValue || mergedValue,
+    picker: picker,
+    defaultDates: defaultPickerValue,
+    generateConfig: generateConfig
+  }),
+      _useRangeViewDates2 = (0, _slicedToArray2.default)(_useRangeViewDates, 2),
+      getViewDate = _useRangeViewDates2[0],
+      setViewDate = _useRangeViewDates2[1]; // ============================= Modes =============================
 
 
   var _useMergedState7 = (0, _useMergedState11.default)([picker, picker], {
@@ -251,11 +259,11 @@ function InnerRangePicker(props) {
     setInnerModes([picker, picker]);
   }, [picker]);
 
-  var triggerModesChange = function triggerModesChange(modes, values) {
+  var triggerModesChange = function triggerModesChange(modes, values, type, diff) {
     setInnerModes(modes);
 
     if (onPanelChange) {
-      onPanelChange(values, modes);
+      onPanelChange(values, modes, type, diff);
     }
   }; // ========================= Disable Date ==========================
 
@@ -270,7 +278,17 @@ function InnerRangePicker(props) {
   }, openRecordsRef.current[1], openRecordsRef.current[0]),
       _useRangeDisabled2 = (0, _slicedToArray2.default)(_useRangeDisabled, 2),
       disabledStartDate = _useRangeDisabled2[0],
-      disabledEndDate = _useRangeDisabled2[1]; // ============================= Open ==============================
+      disabledEndDate = _useRangeDisabled2[1];
+
+  var _useState = (0, React.useState)(getViewDate(0)),
+      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
+      leftDate = _useState2[0],
+      setLeftDate = _useState2[1];
+
+  var _useState3 = (0, React.useState)((0, _dateUtil.getClosingViewDate)(getViewDate(1), picker, generateConfig)),
+      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
+      rightDate = _useState4[0],
+      setRightDate = _useState4[1]; // ============================= Open ==============================
 
 
   var _useMergedState9 = (0, _useMergedState11.default)(false, {
@@ -280,6 +298,12 @@ function InnerRangePicker(props) {
       return mergedDisabled[mergedActivePickerIndex] ? false : postOpen;
     },
     onChange: function onChange(newOpen) {
+      if (newOpen) {
+        setInnerModes([picker, picker]);
+        setLeftDate(getViewDate(0));
+        setRightDate((0, _dateUtil.getClosingViewDate)(getViewDate(1), picker, generateConfig));
+      }
+
       if (onOpenChange) {
         onOpenChange(newOpen);
       }
@@ -297,10 +321,10 @@ function InnerRangePicker(props) {
   var endOpen = mergedOpen && mergedActivePickerIndex === 1; // ============================= Popup =============================
   // Popup min width
 
-  var _useState = (0, React.useState)(0),
-      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
-      popupMinWidth = _useState2[0],
-      setPopupMinWidth = _useState2[1];
+  var _useState5 = (0, React.useState)(0),
+      _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
+      popupMinWidth = _useState6[0],
+      setPopupMinWidth = _useState6[1];
 
   (0, React.useEffect)(function () {
     if (!mergedOpen && containerRef.current) {
@@ -346,16 +370,17 @@ function InnerRangePicker(props) {
     }, 0);
   }
 
-  function triggerChange(newValue, sourceIndex) {
+  function triggerChange(newValue, sourceIndex, label) {
     var values = newValue;
     var startValue = (0, _miscUtil.getValue)(values, 0);
     var endValue = (0, _miscUtil.getValue)(values, 1); // >>>>> Format start & end values
 
     if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {
       if ( // WeekPicker only compare week
-      picker === 'week' && !(0, _dateUtil.isSameWeek)(generateConfig, locale.locale, startValue, endValue) || // QuotaPicker only compare week
+      picker === 'week' && !(0, _dateUtil.isSameWeek)(generateConfig, locale.locale, startValue, endValue) || // HalfYearPicker only compare halfYear
+      picker === 'halfYear' && !(0, _dateUtil.isSameQuarter)(generateConfig, startValue, endValue, 'halfYear') || // QuotaPicker only compare quarter
       picker === 'quarter' && !(0, _dateUtil.isSameQuarter)(generateConfig, startValue, endValue) || // Other non-TimePicker compare date
-      picker !== 'week' && picker !== 'quarter' && picker !== 'time' && !(0, _dateUtil.isSameDate)(generateConfig, startValue, endValue)) {
+      picker !== 'week' && picker !== 'halfYear' && picker !== 'quarter' && picker !== 'time' && !(0, _dateUtil.isSameDate)(generateConfig, startValue, endValue)) {
         // Clean up end date when start date is after end date
         if (sourceIndex === 0) {
           values = [startValue, null];
@@ -402,7 +427,7 @@ function InnerRangePicker(props) {
       setInnerValue(values);
 
       if (onChange && (!(0, _dateUtil.isEqual)(generateConfig, (0, _miscUtil.getValue)(mergedValue, 0), startValue) || !(0, _dateUtil.isEqual)(generateConfig, (0, _miscUtil.getValue)(mergedValue, 1), endValue))) {
-        onChange(values, [startStr, endStr]);
+        onChange(values, [startStr, endStr], label || '');
       }
     } // >>>>> Open picker when
     // Always open another picker if possible
@@ -466,6 +491,13 @@ function InnerRangePicker(props) {
     var disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;
 
     if (inputDate && !disabledFunc(inputDate)) {
+      if (index === 0) {
+        // fix: 修复面板未切换到input输入日期问题
+        setLeftDate(inputDate);
+      } else {
+        setRightDate(inputDate);
+      }
+
       setSelectedValue((0, _miscUtil.updateValues)(selectedValue, inputDate, index));
       setViewDate(inputDate, index);
     }
@@ -493,16 +525,16 @@ function InnerRangePicker(props) {
       triggerEndTextChange = _useTextValueMapping4[1],
       resetEndText = _useTextValueMapping4[2];
 
-  var _useState3 = (0, React.useState)(null),
-      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
-      rangeHoverValue = _useState4[0],
-      setRangeHoverValue = _useState4[1]; // ========================== Hover Range ==========================
+  var _useState7 = (0, React.useState)(null),
+      _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
+      rangeHoverValue = _useState8[0],
+      setRangeHoverValue = _useState8[1]; // ========================== Hover Range ==========================
 
 
-  var _useState5 = (0, React.useState)(null),
-      _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
-      hoverRangedValue = _useState6[0],
-      setHoverRangedValue = _useState6[1];
+  var _useState9 = (0, React.useState)(null),
+      _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
+      hoverRangedValue = _useState10[0],
+      setHoverRangedValue = _useState10[1];
 
   var _useHoverValue = (0, _useHoverValue5.default)(startText, {
     formatList: formatList,
@@ -703,8 +735,10 @@ function InnerRangePicker(props) {
     var newValues = typeof range === 'function' ? range() : range;
     return {
       label: label,
+      activePresetLabel: activePresetLabel,
       onClick: function onClick() {
-        triggerChange(newValues, null);
+        onPresetChange(label, newValues);
+        triggerChange(newValues, null, label);
 
         _triggerOpen(false, mergedActivePickerIndex);
       },
@@ -718,6 +752,8 @@ function InnerRangePicker(props) {
   }); // ============================= Panel =============================
 
   function renderPanel() {
+    var _classNames;
+
     var panelPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
     var panelProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
     var panelHoverRangedValue = null;
@@ -745,14 +781,25 @@ function InnerRangePicker(props) {
       };
     }
 
+    var headerSelect = null;
+
+    if (panelPosition === 'left') {
+      headerSelect = panelProps.headerSelectLeft;
+    } else {
+      headerSelect = panelProps.headerSelectRight;
+    }
+
     return /*#__PURE__*/React.createElement(_RangeContext.default.Provider, {
       value: {
+        fieldid: fieldid,
         inRange: true,
         panelPosition: panelPosition,
         rangedValue: rangeHoverValue || selectedValue,
         hoverRangedValue: panelHoverRangedValue
       }
     }, /*#__PURE__*/React.createElement(_PickerPanel.default, (0, _extends2.default)({}, props, panelProps, {
+      headerSelect: showTime ? mergedActivePickerIndex === 0 ? headerSelectLeft : headerSelectRight : headerSelect,
+      fieldid: fieldid && panelPosition ? fieldid + '_' + panelPosition : panelPosition === false ? fieldid : undefined,
       dateRender: panelDateRender,
       showTime: panelShowTime,
       mode: mergedModes[mergedActivePickerIndex],
@@ -767,11 +814,12 @@ function InnerRangePicker(props) {
 
         return false;
       },
-      className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(prefixCls, "-panel-focused"), mergedActivePickerIndex === 0 ? !startTyping : !endTyping)),
+      linkedPanels: linkedPanels,
+      className: (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-panel-focused"), mergedActivePickerIndex === 0 ? !startTyping : !endTyping), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-panel-unlinked"), !linkedPanels), _classNames)),
       value: (0, _miscUtil.getValue)(selectedValue, mergedActivePickerIndex),
       locale: locale,
       tabIndex: -1,
-      onPanelChange: function onPanelChange(date, newMode) {
+      onPanelChange: function onPanelChange(date, newMode, type, diff) {
         // clear hover value when panel change
         if (mergedActivePickerIndex === 0) {
           onStartLeave(true);
@@ -781,7 +829,7 @@ function InnerRangePicker(props) {
           onEndLeave(true);
         }
 
-        triggerModesChange((0, _miscUtil.updateValues)(mergedModes, newMode, mergedActivePickerIndex), (0, _miscUtil.updateValues)(selectedValue, date, mergedActivePickerIndex));
+        triggerModesChange((0, _miscUtil.updateValues)(mergedModes, newMode, mergedActivePickerIndex), (0, _miscUtil.updateValues)(selectedValue, date, mergedActivePickerIndex), type, diff);
         var viewDate = date;
 
         if (panelPosition === 'right' && mergedModes[mergedActivePickerIndex] === newMode) {
@@ -803,9 +851,11 @@ function InnerRangePicker(props) {
   if (mergedActivePickerIndex && startInputDivRef.current && separatorRef.current && panelDivRef.current) {
     // Arrow offset
     arrowLeft = startInputDivRef.current.offsetWidth + separatorRef.current.offsetWidth; // If panelWidth - arrowWidth - arrowMarginLeft < arrowLeft, panel should move to right side.
-    // If offsetLeft > arrowLeft, arrow position is absolutely right, because arrowLeft is not calculated with arrow margin.
+    // If arrowOffsetLeft > arrowLeft, arrowMarginLeft = arrowOffsetLeft - arrowLeft
 
-    if (panelDivRef.current.offsetWidth && arrowRef.current.offsetWidth && arrowLeft > panelDivRef.current.offsetWidth - arrowRef.current.offsetWidth - (direction === 'rtl' || arrowRef.current.offsetLeft > arrowLeft ? 0 : arrowRef.current.offsetLeft)) {
+    var arrowMarginLeft = arrowRef.current.offsetLeft > arrowLeft ? arrowRef.current.offsetLeft - arrowLeft : arrowRef.current.offsetLeft;
+
+    if (panelDivRef.current.offsetWidth && arrowRef.current.offsetWidth && arrowLeft > panelDivRef.current.offsetWidth - arrowRef.current.offsetWidth - (direction === 'rtl' ? 0 : arrowMarginLeft)) {
       panelLeft = arrowLeft;
     }
   }
@@ -821,11 +871,13 @@ function InnerRangePicker(props) {
     var extraNode = (0, _getExtraFooter.default)(prefixCls, mergedModes[mergedActivePickerIndex], renderExtraFooter);
     var rangesNode = (0, _getRanges.default)({
       prefixCls: prefixCls,
+      fieldid: fieldid,
       components: components,
       needConfirmButton: needConfirmButton,
       okDisabled: !(0, _miscUtil.getValue)(selectedValue, mergedActivePickerIndex) || disabledDate && disabledDate(selectedValue[mergedActivePickerIndex]),
       locale: locale,
       rangeList: rangeList,
+      activePresetLabel: activePresetLabel,
       onOk: function onOk() {
         if ((0, _miscUtil.getValue)(selectedValue, mergedActivePickerIndex)) {
           // triggerChangeOld(selectedValue);
@@ -842,18 +894,69 @@ function InnerRangePicker(props) {
       var viewDate = getViewDate(mergedActivePickerIndex);
       var nextViewDate = (0, _dateUtil.getClosingViewDate)(viewDate, picker, generateConfig);
       var currentMode = mergedModes[mergedActivePickerIndex];
+      var modeMap = {
+        // 不同mode要格式化为不同面板开始日期
+        date: 'M',
+        week: 'M',
+        month: 'y',
+        quarter: 'y',
+        halfYear: 'y',
+        year: 'y',
+        decade: 'y'
+      };
       var showDoublePanel = currentMode === picker;
       var leftPanel = renderPanel(showDoublePanel ? 'left' : false, {
-        pickerValue: viewDate,
+        pickerValue: !linkedPanels ? leftDate : viewDate,
         onPickerValueChange: function onPickerValueChange(newViewDate) {
+          // 左右面板分离
+          if (!linkedPanels) {
+            if (
+            /** 右翻页 */
+            !generateConfig.isAfter(viewDate, newViewDate) && (generateConfig.isSame(
+            /** 左右面板要取月初，避免用户值日期不同导致月份isSame判断错误 */
+
+            /** 左面板右翻页后等于右面板 */
+            newViewDate.clone().startOf(modeMap[currentMode]), rightDate.clone().startOf(modeMap[currentMode])) || generateConfig.isAfter(
+            /** 左面板右翻页后大于右面板 */
+            newViewDate.clone().startOf(modeMap[currentMode]), rightDate.clone().startOf(modeMap[currentMode])))) {
+              // 左面板右翻页，且左面板翻页后等于右面板，则右面板也需要 +1
+              setRightDate((0, _dateUtil.getClosingViewDate)(newViewDate, picker, generateConfig));
+            } // 左面板一直可翻页
+
+
+            setLeftDate(newViewDate);
+          } // 左右面板关联
+
+
           setViewDate(newViewDate, mergedActivePickerIndex);
-        }
+        },
+        headerSelectLeft: headerSelectLeft
       });
       var rightPanel = renderPanel('right', {
-        pickerValue: nextViewDate,
+        pickerValue: !linkedPanels ? rightDate : nextViewDate,
         onPickerValueChange: function onPickerValueChange(newViewDate) {
+          // 左右面板分离
+          if (!linkedPanels) {
+            if (
+            /** 左翻页 */
+            generateConfig.isAfter(nextViewDate, newViewDate) && (generateConfig.isSame(
+            /** 左右面板要取月初，避免用户值日期不同导致月份isSame判断错误 */
+
+            /** 右面板左翻页后等于左面板 */
+            newViewDate.clone().startOf(modeMap[currentMode]), leftDate.clone().startOf(modeMap[currentMode])) || generateConfig.isAfter(
+            /** 右面板左翻页后小于左面板 */
+            leftDate.clone().startOf(modeMap[currentMode]), newViewDate.clone().startOf(modeMap[currentMode])))) {
+              // 右面板左翻页，且右面板翻页后等于左面板，则左面板也需要 -1
+              setLeftDate((0, _dateUtil.getClosingViewDate)(newViewDate, picker, generateConfig, -1));
+            } // 左面板一直可翻页
+
+
+            setRightDate(newViewDate);
+          }
+
           setViewDate((0, _dateUtil.getClosingViewDate)(newViewDate, picker, generateConfig, -1), mergedActivePickerIndex);
-        }
+        },
+        headerSelectRight: headerSelectRight
       });
 
       if (direction === 'rtl') {
@@ -975,9 +1078,26 @@ function InnerRangePicker(props) {
     }
   };
 
+  var onStartFocus = function onStartFocus(e) {
+    var startValue = startHoverValue || startText;
+
+    if (onInputFocus) {
+      onInputFocus(mergedActivePickerIndex, startValue, e);
+    }
+  };
+
+  var onEndFocus = function onEndFocus(e) {
+    var endValue = endHoverValue || endText;
+
+    if (onInputFocus) {
+      onInputFocus(mergedActivePickerIndex, endValue, e);
+    }
+  };
+
   return /*#__PURE__*/React.createElement(_PanelContext.default.Provider, {
     value: {
       operationRef: operationRef,
+      fieldid: fieldid,
       hideHeader: picker === 'time',
       onDateMouseEnter: onDateMouseEnter,
       onDateMouseLeave: onDateMouseLeave,
@@ -997,7 +1117,9 @@ function InnerRangePicker(props) {
     range: true,
     direction: direction
   }, /*#__PURE__*/React.createElement("div", (0, _extends2.default)({
-    ref: containerRef,
+    ref: containerRef // @ts-ignore
+    ,
+    fieldid: fieldid,
     className: (0, _classnames.default)(prefixCls, "".concat(prefixCls, "-range"), className, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-disabled"), mergedDisabled[0] && mergedDisabled[1]), (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-focused"), mergedActivePickerIndex === 0 ? startFocused : endFocused), (0, _defineProperty2.default)(_classNames2, "".concat(prefixCls, "-rtl"), direction === 'rtl'), _classNames2)),
     style: style,
     onClick: onPickerClick,
@@ -1020,7 +1142,8 @@ function InnerRangePicker(props) {
     placeholder: (0, _miscUtil.getValue)(placeholder, 0) || '',
     ref: startInputRef
   }, startInputProps, inputSharedProps, {
-    autoComplete: autoComplete
+    autoComplete: autoComplete,
+    onFocus: onStartFocus
   }))), /*#__PURE__*/React.createElement("div", {
     className: "".concat(prefixCls, "-range-separator"),
     ref: separatorRef
@@ -1037,7 +1160,8 @@ function InnerRangePicker(props) {
     placeholder: (0, _miscUtil.getValue)(placeholder, 1) || '',
     ref: endInputRef
   }, endInputProps, inputSharedProps, {
-    autoComplete: autoComplete
+    autoComplete: autoComplete,
+    onFocus: onEndFocus
   }))), /*#__PURE__*/React.createElement("div", {
     className: "".concat(prefixCls, "-active-bar"),
     style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, activeBarPositionStyle), {}, {
diff --git a/node_modules/rc-picker/lib/generate/dateFns.js b/node_modules/rc-picker/lib/generate/dateFns.js
index 743945a..e9ab80c 100644
--- a/node_modules/rc-picker/lib/generate/dateFns.js
+++ b/node_modules/rc-picker/lib/generate/dateFns.js
@@ -87,6 +87,9 @@ var generateConfig = {
   isAfter: function isAfter(date1, date2) {
     return (0, _dateFns.isAfter)(date1, date2);
   },
+  isSame: function isSame(date1, date2) {
+    return (0, _dateFns.isSameMonth)(date1, date2);
+  },
   isValidate: function isValidate(date) {
     return (0, _dateFns.isValid)(date);
   },
diff --git a/node_modules/rc-picker/lib/generate/dayjs.js b/node_modules/rc-picker/lib/generate/dayjs.js
index 5472d1e..d6838d5 100644
--- a/node_modules/rc-picker/lib/generate/dayjs.js
+++ b/node_modules/rc-picker/lib/generate/dayjs.js
@@ -189,6 +189,9 @@ var generateConfig = {
   isAfter: function isAfter(date1, date2) {
     return date1.isAfter(date2);
   },
+  isSame: function isSame(date1, date2) {
+    return date1.isSame(date2);
+  },
   isValidate: function isValidate(date) {
     return date.isValid();
   },
diff --git a/node_modules/rc-picker/lib/generate/index.d.ts b/node_modules/rc-picker/lib/generate/index.d.ts
index f564ef7..15b3681 100644
--- a/node_modules/rc-picker/lib/generate/index.d.ts
+++ b/node_modules/rc-picker/lib/generate/index.d.ts
@@ -19,6 +19,7 @@ export declare type GenerateConfig<DateType> = {
     setMinute: (value: DateType, minute: number) => DateType;
     setSecond: (value: DateType, second: number) => DateType;
     isAfter: (date1: DateType, date2: DateType) => boolean;
+    isSame: (date1: DateType, date2: DateType) => boolean;
     isValidate: (date: DateType) => boolean;
     locale: {
         getWeekFirstDay: (locale: string) => number;
diff --git a/node_modules/rc-picker/lib/generate/moment.js b/node_modules/rc-picker/lib/generate/moment.js
index df0f3b5..48c1487 100644
--- a/node_modules/rc-picker/lib/generate/moment.js
+++ b/node_modules/rc-picker/lib/generate/moment.js
@@ -86,6 +86,9 @@ var generateConfig = {
   isAfter: function isAfter(date1, date2) {
     return date1.isAfter(date2);
   },
+  isSame: function isSame(date1, date2) {
+    return date1.isSame(date2);
+  },
   isValidate: function isValidate(date) {
     return date.isValid();
   },
diff --git a/node_modules/rc-picker/lib/interface.d.ts b/node_modules/rc-picker/lib/interface.d.ts
index c656f45..26d3497 100644
--- a/node_modules/rc-picker/lib/interface.d.ts
+++ b/node_modules/rc-picker/lib/interface.d.ts
@@ -1,4 +1,5 @@
 /// <reference types="react" />
+import type { Moment } from 'moment';
 import type { GenerateConfig } from './generate';
 export declare type Locale = {
     locale: string;
@@ -7,6 +8,7 @@ export declare type Locale = {
     yearFormat: string;
     monthFormat?: string;
     quarterFormat?: string;
+    halfYearFormat?: (date: Moment, hasYear?: boolean) => string;
     today: string;
     now: string;
     backToToday: string;
@@ -34,12 +36,13 @@ export declare type Locale = {
     shortWeekDays?: string[];
     shortMonths?: string[];
 };
-export declare type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'year' | 'decade';
+export declare type PanelMode = 'time' | 'date' | 'week' | 'month' | 'quarter' | 'halfYear' | 'year' | 'decade';
 export declare type PickerMode = Exclude<PanelMode, 'datetime' | 'decade'>;
 export declare type PanelRefProps = {
     onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => boolean;
     onBlur?: React.FocusEventHandler<HTMLElement>;
     onClose?: () => void;
+    showSelectMask?: boolean;
 };
 export declare type NullableDateType<DateType> = DateType | null | undefined;
 export declare type OnSelect<DateType> = (value: DateType, type: 'key' | 'mouse' | 'submit') => void;
@@ -64,7 +67,10 @@ export declare type PanelSharedProps<DateType> = {
     operationRef: React.MutableRefObject<PanelRefProps>;
     onSelect: OnSelect<DateType>;
     onViewDateChange: (value: DateType) => void;
-    onPanelChange: (mode: PanelMode | null, viewValue: DateType) => void;
+    onPanelChange: (mode: PanelMode | null, viewValue: DateType, type?: string, diff?: number) => void;
+    sourceMode: any;
+    diffValue?: any;
+    showSelectMask?: boolean;
 };
 export declare type DisabledTimes = {
     disabledHours?: () => number[];
@@ -72,7 +78,7 @@ export declare type DisabledTimes = {
     disabledSeconds?: (hour: number, minute: number) => number[];
 };
 export declare type DisabledTime<DateType> = (date: DateType | null) => DisabledTimes;
-export declare type OnPanelChange<DateType> = (value: DateType, mode: PanelMode) => void;
+export declare type OnPanelChange<DateType> = (value: DateType, mode: PanelMode, type?: 'year' | 'month', diff?: number) => void;
 export declare type EventValue<DateType> = DateType | null;
 export declare type RangeValue<DateType> = [EventValue<DateType>, EventValue<DateType>] | null;
 export declare type Components = {
diff --git a/node_modules/rc-picker/lib/locale/en_US.js b/node_modules/rc-picker/lib/locale/en_US.js
index c60beae..368d041 100644
--- a/node_modules/rc-picker/lib/locale/en_US.js
+++ b/node_modules/rc-picker/lib/locale/en_US.js
@@ -24,10 +24,10 @@ var locale = {
   dayFormat: 'D',
   dateTimeFormat: 'M/D/YYYY HH:mm:ss',
   monthBeforeYear: true,
-  previousMonth: 'Previous month (PageUp)',
-  nextMonth: 'Next month (PageDown)',
-  previousYear: 'Last year (Control + left)',
-  nextYear: 'Next year (Control + right)',
+  previousMonth: 'Previous month',
+  nextMonth: 'Next month',
+  previousYear: 'Last year',
+  nextYear: 'Next year',
   previousDecade: 'Last decade',
   nextDecade: 'Next decade',
   previousCentury: 'Last century',
diff --git a/node_modules/rc-picker/lib/locale/eu_ES.d.ts b/node_modules/rc-picker/lib/locale/eu_ES.d.ts
new file mode 100644
index 0000000..002bafd
--- /dev/null
+++ b/node_modules/rc-picker/lib/locale/eu_ES.d.ts
@@ -0,0 +1,3 @@
+import type { Locale } from '../interface';
+declare const locale: Locale;
+export default locale;
diff --git a/node_modules/rc-picker/lib/locale/eu_ES.js b/node_modules/rc-picker/lib/locale/eu_ES.js
new file mode 100644
index 0000000..e08fec7
--- /dev/null
+++ b/node_modules/rc-picker/lib/locale/eu_ES.js
@@ -0,0 +1,37 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var locale = {
+  locale: 'eu_ES',
+  today: 'Gaur',
+  now: 'Orain',
+  backToToday: 'Gaur itzuli',
+  ok: 'OK',
+  clear: 'Garbitu',
+  month: 'Hilabete',
+  year: 'Urte',
+  timeSelect: 'Ordua aukeratu',
+  dateSelect: 'Eguna aukeratu',
+  weekSelect: 'Astea aukeratu',
+  monthSelect: 'Hilabetea aukeratu',
+  yearSelect: 'Urtea aukeratu',
+  decadeSelect: 'Hamarkada aukeratu',
+  yearFormat: 'YYYY',
+  dateFormat: 'YYYY/M/D',
+  dayFormat: 'D',
+  dateTimeFormat: 'YYYY/M/D HH:mm:ss',
+  monthBeforeYear: false,
+  previousMonth: 'Aurreko hilabetea (RePag)',
+  nextMonth: 'Urrengo hilabetea (AvPag)',
+  previousYear: 'Aurreko urtea (Control + ezkerra)',
+  nextYear: 'Urrento urtea (Control + eskuina)',
+  previousDecade: 'Aurreko hamarkada',
+  nextDecade: 'Urrengo hamarkada',
+  previousCentury: 'Aurreko mendea',
+  nextCentury: 'Urrengo mendea'
+};
+var _default = locale;
+exports.default = _default;
\ No newline at end of file
diff --git a/node_modules/rc-picker/lib/locale/uz_UZ.d.ts b/node_modules/rc-picker/lib/locale/uz_UZ.d.ts
new file mode 100644
index 0000000..002bafd
--- /dev/null
+++ b/node_modules/rc-picker/lib/locale/uz_UZ.d.ts
@@ -0,0 +1,3 @@
+import type { Locale } from '../interface';
+declare const locale: Locale;
+export default locale;
diff --git a/node_modules/rc-picker/lib/locale/uz_UZ.js b/node_modules/rc-picker/lib/locale/uz_UZ.js
new file mode 100644
index 0000000..0debd7d
--- /dev/null
+++ b/node_modules/rc-picker/lib/locale/uz_UZ.js
@@ -0,0 +1,37 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var locale = {
+  locale: 'uz_UZ',
+  today: 'Bugun',
+  now: 'Hozir',
+  backToToday: 'Bugunga qaytish',
+  ok: 'OK',
+  clear: 'Toza',
+  month: 'Oy',
+  year: 'Yil',
+  timeSelect: 'vaqtni tanlang',
+  dateSelect: 'sanani tanlang',
+  weekSelect: 'Haftani tanlang',
+  monthSelect: 'Oyni tanlang',
+  yearSelect: 'Yilni tanlang',
+  decadeSelect: 'O\'n yilni tanlang',
+  yearFormat: 'YYYY',
+  dateFormat: 'M/D/YYYY',
+  dayFormat: 'D',
+  dateTimeFormat: 'M/D/YYYY HH:mm:ss',
+  monthBeforeYear: true,
+  previousMonth: 'Oldingi oy (PageUp)',
+  nextMonth: 'Keyingi oy (PageDown)',
+  previousYear: 'O\'tgan yili (Control + left)',
+  nextYear: 'Keyingi yil (Control + right)',
+  previousDecade: 'Oxirgi o\'n yil',
+  nextDecade: 'Keyingi o\'n yil',
+  previousCentury: 'O\'tgan asr',
+  nextCentury: 'Keyingi asr'
+};
+var _default = locale;
+exports.default = _default;
\ No newline at end of file
diff --git a/node_modules/rc-picker/lib/locale/vi_VN.js b/node_modules/rc-picker/lib/locale/vi_VN.js
index 817840c..2f0b592 100644
--- a/node_modules/rc-picker/lib/locale/vi_VN.js
+++ b/node_modules/rc-picker/lib/locale/vi_VN.js
@@ -9,7 +9,7 @@ var locale = {
   today: 'Hôm nay',
   now: 'Bây giờ',
   backToToday: 'Trở về hôm nay',
-  ok: 'OK',
+  ok: 'Chắc chắn',
   clear: 'Xóa',
   month: 'Tháng',
   year: 'Năm',
diff --git a/node_modules/rc-picker/lib/locale/zh_CN.js b/node_modules/rc-picker/lib/locale/zh_CN.js
index e7b9bdb..befe6e3 100644
--- a/node_modules/rc-picker/lib/locale/zh_CN.js
+++ b/node_modules/rc-picker/lib/locale/zh_CN.js
@@ -16,8 +16,8 @@ var locale = {
   clear: '清除',
   month: '月',
   year: '年',
-  previousMonth: '上个月 (翻页上键)',
-  nextMonth: '下个月 (翻页下键)',
+  previousMonth: '上个月',
+  nextMonth: '下个月',
   monthSelect: '选择月份',
   yearSelect: '选择年份',
   decadeSelect: '选择年代',
@@ -25,8 +25,8 @@ var locale = {
   dayFormat: 'D日',
   dateFormat: 'YYYY年M月D日',
   dateTimeFormat: 'YYYY年M月D日 HH时mm分ss秒',
-  previousYear: '上一年 (Control键加左方向键)',
-  nextYear: '下一年 (Control键加右方向键)',
+  previousYear: '上一年',
+  nextYear: '下一年',
   previousDecade: '上一年代',
   nextDecade: '下一年代',
   previousCentury: '上一世纪',
diff --git a/node_modules/rc-picker/lib/locale/zh_TW.js b/node_modules/rc-picker/lib/locale/zh_TW.js
index ac60078..70e2188 100644
--- a/node_modules/rc-picker/lib/locale/zh_TW.js
+++ b/node_modules/rc-picker/lib/locale/zh_TW.js
@@ -16,8 +16,8 @@ var locale = {
   clear: '清除',
   month: '月',
   year: '年',
-  previousMonth: '上個月 (翻頁上鍵)',
-  nextMonth: '下個月 (翻頁下鍵)',
+  previousMonth: '上個月',
+  nextMonth: '下個月',
   monthSelect: '選擇月份',
   yearSelect: '選擇年份',
   decadeSelect: '選擇年代',
@@ -25,8 +25,8 @@ var locale = {
   dayFormat: 'D日',
   dateFormat: 'YYYY年M月D日',
   dateTimeFormat: 'YYYY年M月D日 HH時mm分ss秒',
-  previousYear: '上一年 (Control鍵加左方向鍵)',
-  nextYear: '下一年 (Control鍵加右方向鍵)',
+  previousYear: '上一年',
+  nextYear: '下一年',
   previousDecade: '上一年代',
   nextDecade: '下一年代',
   previousCentury: '上一世紀',
diff --git a/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.d.ts b/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.d.ts
index 6f025ef..a3e7b2a 100644
--- a/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.d.ts
+++ b/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.d.ts
@@ -13,6 +13,8 @@ export declare type DateHeaderProps<DateType> = {
     onNextMonth: () => void;
     onYearClick: () => void;
     onMonthClick: () => void;
+    onCurrent: () => void;
+    sourceModeCopy: string;
 };
 declare function DateHeader<DateType>(props: DateHeaderProps<DateType>): JSX.Element;
 export default DateHeader;
diff --git a/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.js b/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.js
index 7b3e220..3167007 100644
--- a/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.js
+++ b/node_modules/rc-picker/lib/panels/DatePanel/DateHeader.js
@@ -32,6 +32,7 @@ function DateHeader(props) {
       onPrevMonth = props.onPrevMonth,
       onNextYear = props.onNextYear,
       onPrevYear = props.onPrevYear,
+      onCurrent = props.onCurrent,
       onYearClick = props.onYearClick,
       onMonthClick = props.onMonthClick;
 
@@ -74,7 +75,8 @@ function DateHeader(props) {
     onSuperPrev: onPrevYear,
     onPrev: onPrevMonth,
     onNext: onNextMonth,
-    onSuperNext: onNextYear
+    onSuperNext: onNextYear,
+    onCurrent: onCurrent
   }), monthYearNodes);
 }
 
diff --git a/node_modules/rc-picker/lib/panels/DatePanel/index.d.ts b/node_modules/rc-picker/lib/panels/DatePanel/index.d.ts
index c5c5681..b17cd8f 100644
--- a/node_modules/rc-picker/lib/panels/DatePanel/index.d.ts
+++ b/node_modules/rc-picker/lib/panels/DatePanel/index.d.ts
@@ -5,8 +5,11 @@ import type { KeyboardConfig } from '../../utils/uiUtil';
 export declare type DatePanelProps<DateType> = {
     active?: boolean;
     dateRender?: DateRender<DateType>;
+    id?: string;
+    fieldid?: string;
     panelName?: string;
     keyboardConfig?: KeyboardConfig;
+    headerSelect?: any;
 } & PanelSharedProps<DateType> & DateBodyPassProps<DateType>;
 declare function DatePanel<DateType>(props: DatePanelProps<DateType>): JSX.Element;
 export default DatePanel;
diff --git a/node_modules/rc-picker/lib/panels/DatePanel/index.js b/node_modules/rc-picker/lib/panels/DatePanel/index.js
index f416282..a4e2a2d 100644
--- a/node_modules/rc-picker/lib/panels/DatePanel/index.js
+++ b/node_modules/rc-picker/lib/panels/DatePanel/index.js
@@ -13,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
 
 var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
 
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
 var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
 
 var React = _interopRequireWildcard(require("react"));
@@ -27,6 +29,8 @@ var _dateUtil = require("../../utils/dateUtil");
 
 var _uiUtil = require("../../utils/uiUtil");
 
+var _moment = _interopRequireDefault(require("moment"));
+
 function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
 
 function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -43,9 +47,15 @@ function DatePanel(props) {
       generateConfig = props.generateConfig,
       value = props.value,
       viewDate = props.viewDate,
+      id = props.id,
+      fieldid = props.fieldid,
       onViewDateChange = props.onViewDateChange,
       onPanelChange = props.onPanelChange,
-      _onSelect = props.onSelect;
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-").concat(panelName, "-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -70,16 +80,48 @@ function DatePanel(props) {
   var onYearChange = function onYearChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
   var onMonthChange = function onMonthChange(diff) {
     var newDate = generateConfig.addMonth(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'month', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+
+  var onYearMonthChange = function onYearMonthChange() {
+    var currentDate;
+
+    if (diffValue && diffValue[0] >= 0) {
+      currentDate = (0, _moment.default)(viewDate).add(diffValue[0], 'year');
+    } else {
+      currentDate = (0, _moment.default)(viewDate).subtract(-diffValue[0], 'year');
+    }
+
+    var newDate = generateConfig.addMonth(currentDate, diffValue[1]);
+    onViewDateChange(newDate);
+  };
+
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearMonthChange();
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
+    id: id ? id + '_panel' : '' // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_panel"),
     className: (0, _classnames.default)(panelPrefixCls, (0, _defineProperty2.default)({}, "".concat(panelPrefixCls, "-active"), active))
   }, /*#__PURE__*/React.createElement(_DateHeader.default, (0, _extends2.default)({}, props, {
     prefixCls: prefixCls,
@@ -103,7 +145,11 @@ function DatePanel(props) {
     },
     onYearClick: function onYearClick() {
       onPanelChange('year', viewDate);
-    }
+    },
+    onCurrent: function onCurrent() {
+      onViewDateChange(generateConfig.getNow());
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(_DateBody.default, (0, _extends2.default)({}, props, {
     onSelect: function onSelect(date) {
       return _onSelect(date, 'mouse');
@@ -112,7 +158,17 @@ function DatePanel(props) {
     value: value,
     viewDate: viewDate,
     rowCount: DATE_ROW_COUNT
-  })));
+  })), headerSelect !== undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 var _default = DatePanel;
diff --git a/node_modules/rc-picker/lib/panels/DecadePanel/index.js b/node_modules/rc-picker/lib/panels/DecadePanel/index.js
index b89566d..757f3ee 100644
--- a/node_modules/rc-picker/lib/panels/DecadePanel/index.js
+++ b/node_modules/rc-picker/lib/panels/DecadePanel/index.js
@@ -60,7 +60,7 @@ function DecadePanel(props) {
   var onDecadesChange = function onDecadesChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff * DECADE_DISTANCE_COUNT);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
   var onInternalSelect = function onInternalSelect(date) {
diff --git a/node_modules/rc-picker/lib/panels/HalfYearPanel/HalfYearBody.d.ts b/node_modules/rc-picker/lib/panels/HalfYearPanel/HalfYearBody.d.ts
new file mode 100644
index 0000000..766460d
--- /dev/null
+++ b/node_modules/rc-picker/lib/panels/HalfYearPanel/HalfYearBody.d.ts
@@ -0,0 +1,16 @@
+/// <reference types="react" />
+import type { GenerateConfig } from '../../generate';
+import type { Locale } from '../../interface';
+export declare const QUARTER_COL_COUNT = 2;
+export declare type HalfYearBodyProps<DateType> = {
+    prefixCls: string;
+    locale: Locale;
+    generateConfig: GenerateConfig<DateType>;
+    value?: DateType | null;
+    viewDate: DateType;
+    halfYear?: (date: DateType) => string;
+    disabledDate?: (date: DateType) => boolean;
+    onSelect: (value: DateType) => void;
+};
+declare function HalfYearBody<DateType>(props: HalfYearBodyProps<DateType>): JSX.Element;
+export default HalfYearBody;
diff --git a/node_modules/rc-picker/lib/panels/HalfYearPanel/HalfYearBody.js b/node_modules/rc-picker/lib/panels/HalfYearPanel/HalfYearBody.js
new file mode 100644
index 0000000..c1dee84
--- /dev/null
+++ b/node_modules/rc-picker/lib/panels/HalfYearPanel/HalfYearBody.js
@@ -0,0 +1,107 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+var _typeof = require("@babel/runtime/helpers/typeof");
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = exports.QUARTER_COL_COUNT = void 0;
+
+var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
+
+var React = _interopRequireWildcard(require("react"));
+
+var _dateUtil = require("../../utils/dateUtil");
+
+var _RangeContext = _interopRequireDefault(require("../../RangeContext"));
+
+var _useCellClassName = _interopRequireDefault(require("../../hooks/useCellClassName"));
+
+var _PanelBody = _interopRequireDefault(require("../PanelBody"));
+
+var _moment = _interopRequireDefault(require("moment"));
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+var QUARTER_COL_COUNT = 2;
+exports.QUARTER_COL_COUNT = QUARTER_COL_COUNT;
+var QUARTER_ROW_COUNT = 1;
+
+function HalfYearBody(props) {
+  var prefixCls = props.prefixCls,
+      locale = props.locale,
+      value = props.value,
+      viewDate = props.viewDate,
+      generateConfig = props.generateConfig;
+
+  var _React$useContext = React.useContext(_RangeContext.default),
+      rangedValue = _React$useContext.rangedValue,
+      hoverRangedValue = _React$useContext.hoverRangedValue;
+
+  var cellPrefixCls = "".concat(prefixCls, "-cell");
+  var getCellClassName = (0, _useCellClassName.default)({
+    cellPrefixCls: cellPrefixCls,
+    value: value,
+    generateConfig: generateConfig,
+    rangedValue: rangedValue,
+    hoverRangedValue: hoverRangedValue,
+    isSameCell: function isSameCell(current, target) {
+      return (0, _dateUtil.isSameQuarter)(generateConfig, current, target, 'halfYear');
+    },
+    isInView: function isInView() {
+      return true;
+    },
+    offsetCell: function offsetCell(date, offset) {
+      return generateConfig.addMonth(date, offset * 6);
+    }
+  }); // default format
+
+  var _format = function format(date) {
+    var hasYear = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+    if (_moment.default.isMoment(date)) {
+      var year = hasYear ? date.year() + ' ' : '';
+      return date.month() >= 0 && date.month() <= 5 ? "".concat(year, "\u4E0A\u534A\u5E74") : "".concat(year, "\u4E0B\u534A\u5E74");
+    }
+  };
+
+  var baseHalfYear = generateConfig.setDate(generateConfig.setMonth(viewDate, 0), 1);
+  return /*#__PURE__*/React.createElement(_PanelBody.default, (0, _extends2.default)({}, props, {
+    rowNum: QUARTER_ROW_COUNT,
+    colNum: QUARTER_COL_COUNT,
+    baseDate: baseHalfYear,
+    getCellText: function getCellText(date) {
+      return (0, _dateUtil.formatValue)(date, {
+        locale: locale,
+        format: function format() {
+          var _locale$halfYearForma;
+
+          return ((_locale$halfYearForma = locale.halfYearFormat) === null || _locale$halfYearForma === void 0 ? void 0 : _locale$halfYearForma.call(locale, date, false)) || _format(date, false);
+        },
+        generateConfig: generateConfig
+      });
+    },
+    getCellClassName: getCellClassName,
+    getCellDate: function getCellDate(date, offset) {
+      return generateConfig.addMonth(date, offset * 6);
+    },
+    titleCell: function titleCell(date) {
+      return (0, _dateUtil.formatValue)(date, {
+        locale: locale,
+        format: function format() {
+          var _locale$halfYearForma2;
+
+          return ((_locale$halfYearForma2 = locale.halfYearFormat) === null || _locale$halfYearForma2 === void 0 ? void 0 : _locale$halfYearForma2.call(locale, date)) || _format(date);
+        },
+        generateConfig: generateConfig
+      });
+    }
+  }));
+}
+
+var _default = HalfYearBody;
+exports.default = _default;
\ No newline at end of file
diff --git a/node_modules/rc-picker/lib/panels/HalfYearPanel/index.d.ts b/node_modules/rc-picker/lib/panels/HalfYearPanel/index.d.ts
new file mode 100644
index 0000000..9a575d9
--- /dev/null
+++ b/node_modules/rc-picker/lib/panels/HalfYearPanel/index.d.ts
@@ -0,0 +1,7 @@
+/// <reference types="react" />
+import type { PanelSharedProps } from '../../interface';
+export declare type HalfYearPanelProps<DateType> = {
+    headerSelect?: any;
+} & PanelSharedProps<DateType>;
+declare function HalfYearPanel<DateType>(props: HalfYearPanelProps<DateType>): JSX.Element;
+export default HalfYearPanel;
diff --git a/node_modules/rc-picker/lib/panels/HalfYearPanel/index.js b/node_modules/rc-picker/lib/panels/HalfYearPanel/index.js
new file mode 100644
index 0000000..b05b68e
--- /dev/null
+++ b/node_modules/rc-picker/lib/panels/HalfYearPanel/index.js
@@ -0,0 +1,118 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+var _typeof = require("@babel/runtime/helpers/typeof");
+
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+
+var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
+
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
+var React = _interopRequireWildcard(require("react"));
+
+var _QuarterHeader = _interopRequireDefault(require("../QuarterPanel/QuarterHeader"));
+
+var _HalfYearBody = _interopRequireDefault(require("./HalfYearBody"));
+
+var _uiUtil = require("../../utils/uiUtil");
+
+function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
+
+function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
+
+function HalfYearPanel(props) {
+  var prefixCls = props.prefixCls,
+      operationRef = props.operationRef,
+      onViewDateChange = props.onViewDateChange,
+      generateConfig = props.generateConfig,
+      value = props.value,
+      viewDate = props.viewDate,
+      onPanelChange = props.onPanelChange,
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
+  var panelPrefixCls = "".concat(prefixCls, "-halfYear-panel"); // ======================= Keyboard =======================
+
+  operationRef.current = {
+    onKeyDown: function onKeyDown(event) {
+      return (0, _uiUtil.createKeyDownHandler)(event, {
+        onLeftRight: function onLeftRight(diff) {
+          _onSelect(generateConfig.addMonth(value || viewDate, diff * 6), 'key');
+        },
+        onCtrlLeftRight: function onCtrlLeftRight(diff) {
+          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');
+        },
+        onUpDown: function onUpDown(diff) {
+          _onSelect(generateConfig.addYear(value || viewDate, diff), 'key');
+        }
+      });
+    }
+  }; // ==================== View Operation ====================
+
+  var onYearChange = function onYearChange(diff) {
+    var newDate = generateConfig.addYear(viewDate, diff);
+    onViewDateChange(newDate);
+    onPanelChange(null, newDate, 'year', diff);
+  };
+
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearChange(diffValue[0]);
+    }
+  }, [diffValue]);
+  return (
+    /*#__PURE__*/
+
+    /* HalfYearHeader is the same with QuarterHeader */
+    React.createElement("div", {
+      className: panelPrefixCls
+    }, /*#__PURE__*/React.createElement(_QuarterHeader.default, (0, _extends2.default)({}, props, {
+      prefixCls: prefixCls,
+      onPrevYear: function onPrevYear() {
+        onYearChange(-1);
+      },
+      onNextYear: function onNextYear() {
+        onYearChange(1);
+      },
+      onYearClick: function onYearClick() {
+        onPanelChange('year', viewDate);
+      },
+      sourceModeCopy: sourceModeCopy
+    })), /*#__PURE__*/React.createElement(_HalfYearBody.default, (0, _extends2.default)({}, props, {
+      prefixCls: prefixCls,
+      onSelect: function onSelect(date) {
+        _onSelect(date, 'mouse');
+      }
+    })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+      style: {
+        opacity: '0.5',
+        width: '100%',
+        height: '100%',
+        background: '#fff',
+        position: 'absolute',
+        left: 0,
+        zIndex: '100'
+      }
+    }) : null)
+  );
+}
+
+var _default = HalfYearPanel;
+exports.default = _default;
\ No newline at end of file
diff --git a/node_modules/rc-picker/lib/panels/Header.d.ts b/node_modules/rc-picker/lib/panels/Header.d.ts
index 61a7a50..2f7c817 100644
--- a/node_modules/rc-picker/lib/panels/Header.d.ts
+++ b/node_modules/rc-picker/lib/panels/Header.d.ts
@@ -1,4 +1,5 @@
 import * as React from 'react';
+import type { Locale } from '../interface';
 export declare type HeaderProps = {
     prefixCls: string;
     prevIcon?: React.ReactNode;
@@ -13,7 +14,14 @@ export declare type HeaderProps = {
     onSuperPrev?: () => void;
     /** Next multiple steps */
     onSuperNext?: () => void;
+    /** current date */
+    onCurrent?: () => void;
+    showTodayBtn?: boolean;
+    locale?: Locale;
+    sourceMode?: string;
+    sourceModeCopy?: string;
     children?: React.ReactNode;
+    headerSelect?: React.ReactNode;
 };
-declare function Header({ prefixCls, prevIcon, nextIcon, superPrevIcon, superNextIcon, onSuperPrev, onSuperNext, onPrev, onNext, children, }: HeaderProps): JSX.Element;
+declare function Header({ prefixCls, prevIcon, nextIcon, superPrevIcon, superNextIcon, onSuperPrev, onSuperNext, onPrev, onNext, onCurrent, showTodayBtn, locale, children, sourceMode, sourceModeCopy, headerSelect, }: HeaderProps): JSX.Element;
 export default Header;
diff --git a/node_modules/rc-picker/lib/panels/Header.js b/node_modules/rc-picker/lib/panels/Header.js
index 3cbb6ec..c4ef7eb 100644
--- a/node_modules/rc-picker/lib/panels/Header.js
+++ b/node_modules/rc-picker/lib/panels/Header.js
@@ -35,12 +35,20 @@ function Header(_ref) {
       onSuperNext = _ref.onSuperNext,
       onPrev = _ref.onPrev,
       onNext = _ref.onNext,
-      children = _ref.children;
+      onCurrent = _ref.onCurrent,
+      showTodayBtn = _ref.showTodayBtn,
+      locale = _ref.locale,
+      children = _ref.children,
+      sourceMode = _ref.sourceMode,
+      sourceModeCopy = _ref.sourceModeCopy,
+      headerSelect = _ref.headerSelect;
 
   var _React$useContext = React.useContext(_PanelContext.default),
       hideNextBtn = _React$useContext.hideNextBtn,
-      hidePrevBtn = _React$useContext.hidePrevBtn;
+      hidePrevBtn = _React$useContext.hidePrevBtn,
+      fieldid = _React$useContext.fieldid;
 
+  var sourceModeCopyVar = sourceModeCopy ? sourceModeCopy : sourceMode;
   return /*#__PURE__*/React.createElement("div", {
     className: prefixCls
   }, onSuperPrev && /*#__PURE__*/React.createElement("button", {
@@ -48,28 +56,50 @@ function Header(_ref) {
     onClick: onSuperPrev,
     tabIndex: -1,
     className: "".concat(prefixCls, "-super-prev-btn"),
-    style: hidePrevBtn ? HIDDEN_STYLE : {}
+    style: hidePrevBtn ? HIDDEN_STYLE : {},
+    title: sourceModeCopyVar === 'decade' ? locale.previousDecade : sourceModeCopyVar === 'year' ? locale.previousCentury : locale.previousYear // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_super_prev_btn")
   }, superPrevIcon), onPrev && /*#__PURE__*/React.createElement("button", {
     type: "button",
     onClick: onPrev,
     tabIndex: -1,
     className: "".concat(prefixCls, "-prev-btn"),
-    style: hidePrevBtn ? HIDDEN_STYLE : {}
+    style: hidePrevBtn ? HIDDEN_STYLE : {},
+    title: locale.previousMonth // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_prev_btn")
   }, prevIcon), /*#__PURE__*/React.createElement("div", {
-    className: "".concat(prefixCls, "-view")
-  }, children), onNext && /*#__PURE__*/React.createElement("button", {
+    className: "".concat(prefixCls, "-view") // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_view")
+  }, headerSelect != undefined ? [headerSelect, children] : children), onNext && /*#__PURE__*/React.createElement("button", {
     type: "button",
     onClick: onNext,
     tabIndex: -1,
     className: "".concat(prefixCls, "-next-btn"),
-    style: hideNextBtn ? HIDDEN_STYLE : {}
+    style: hideNextBtn ? HIDDEN_STYLE : {},
+    title: locale.nextMonth // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_next_btn")
   }, nextIcon), onSuperNext && /*#__PURE__*/React.createElement("button", {
     type: "button",
     onClick: onSuperNext,
     tabIndex: -1,
     className: "".concat(prefixCls, "-super-next-btn"),
-    style: hideNextBtn ? HIDDEN_STYLE : {}
-  }, superNextIcon));
+    style: hideNextBtn ? HIDDEN_STYLE : {},
+    title: sourceModeCopyVar === 'decade' ? locale.nextDecade : sourceModeCopyVar === 'year' ? locale.nextCentury : locale.nextYear // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_super_next_btn")
+  }, superNextIcon), showTodayBtn && /*#__PURE__*/React.createElement("button", {
+    type: "button",
+    onClick: onCurrent,
+    tabIndex: -1,
+    className: "".concat(prefixCls, "-today-btn"),
+    title: locale.today // @ts-ignore
+    ,
+    fieldid: fieldid && "".concat(fieldid, "_header_today_btn")
+  }, locale.locale === 'zh-cn' ? '今' : locale.today));
 }
 
 var _default = Header;
diff --git a/node_modules/rc-picker/lib/panels/MonthPanel/MonthHeader.d.ts b/node_modules/rc-picker/lib/panels/MonthPanel/MonthHeader.d.ts
index d6c1e8d..9cd3255 100644
--- a/node_modules/rc-picker/lib/panels/MonthPanel/MonthHeader.d.ts
+++ b/node_modules/rc-picker/lib/panels/MonthPanel/MonthHeader.d.ts
@@ -9,6 +9,7 @@ export declare type MonthHeaderProps<DateType> = {
     onPrevYear: () => void;
     onNextYear: () => void;
     onYearClick: () => void;
+    sourceModeCopy: string;
 };
 declare function MonthHeader<DateType>(props: MonthHeaderProps<DateType>): JSX.Element;
 export default MonthHeader;
diff --git a/node_modules/rc-picker/lib/panels/MonthPanel/index.d.ts b/node_modules/rc-picker/lib/panels/MonthPanel/index.d.ts
index 127375c..d308b0b 100644
--- a/node_modules/rc-picker/lib/panels/MonthPanel/index.d.ts
+++ b/node_modules/rc-picker/lib/panels/MonthPanel/index.d.ts
@@ -3,6 +3,7 @@ import type { MonthCellRender } from './MonthBody';
 import type { PanelSharedProps } from '../../interface';
 export declare type MonthPanelProps<DateType> = {
     monthCellContentRender?: MonthCellRender<DateType>;
+    headerSelect?: any;
 } & PanelSharedProps<DateType>;
 declare function MonthPanel<DateType>(props: MonthPanelProps<DateType>): JSX.Element;
 export default MonthPanel;
diff --git a/node_modules/rc-picker/lib/panels/MonthPanel/index.js b/node_modules/rc-picker/lib/panels/MonthPanel/index.js
index efe16cd..6659d1e 100644
--- a/node_modules/rc-picker/lib/panels/MonthPanel/index.js
+++ b/node_modules/rc-picker/lib/panels/MonthPanel/index.js
@@ -11,6 +11,8 @@ exports.default = void 0;
 
 var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
 
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
 var React = _interopRequireWildcard(require("react"));
 
 var _MonthHeader = _interopRequireDefault(require("./MonthHeader"));
@@ -31,7 +33,11 @@ function MonthPanel(props) {
       value = props.value,
       viewDate = props.viewDate,
       onPanelChange = props.onPanelChange,
-      _onSelect = props.onSelect;
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-month-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -56,9 +62,24 @@ function MonthPanel(props) {
   var onYearChange = function onYearChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearChange(diffValue[0]);
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
     className: panelPrefixCls
   }, /*#__PURE__*/React.createElement(_MonthHeader.default, (0, _extends2.default)({}, props, {
@@ -71,7 +92,8 @@ function MonthPanel(props) {
     },
     onYearClick: function onYearClick() {
       onPanelChange('year', viewDate);
-    }
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(_MonthBody.default, (0, _extends2.default)({}, props, {
     prefixCls: prefixCls,
     onSelect: function onSelect(date) {
@@ -79,7 +101,17 @@ function MonthPanel(props) {
 
       onPanelChange('date', date);
     }
-  })));
+  })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 var _default = MonthPanel;
diff --git a/node_modules/rc-picker/lib/panels/QuarterPanel/QuarterHeader.d.ts b/node_modules/rc-picker/lib/panels/QuarterPanel/QuarterHeader.d.ts
index 69bfc4e..d42b042 100644
--- a/node_modules/rc-picker/lib/panels/QuarterPanel/QuarterHeader.d.ts
+++ b/node_modules/rc-picker/lib/panels/QuarterPanel/QuarterHeader.d.ts
@@ -9,6 +9,7 @@ export declare type QuarterHeaderProps<DateType> = {
     onPrevYear: () => void;
     onNextYear: () => void;
     onYearClick: () => void;
+    sourceModeCopy: string;
 };
 declare function QuarterHeader<DateType>(props: QuarterHeaderProps<DateType>): JSX.Element;
 export default QuarterHeader;
diff --git a/node_modules/rc-picker/lib/panels/QuarterPanel/index.d.ts b/node_modules/rc-picker/lib/panels/QuarterPanel/index.d.ts
index a363f0c..04ae68c 100644
--- a/node_modules/rc-picker/lib/panels/QuarterPanel/index.d.ts
+++ b/node_modules/rc-picker/lib/panels/QuarterPanel/index.d.ts
@@ -1,5 +1,7 @@
 /// <reference types="react" />
 import type { PanelSharedProps } from '../../interface';
-export declare type QuarterPanelProps<DateType> = {} & PanelSharedProps<DateType>;
+export declare type QuarterPanelProps<DateType> = {
+    headerSelect?: any;
+} & PanelSharedProps<DateType>;
 declare function QuarterPanel<DateType>(props: QuarterPanelProps<DateType>): JSX.Element;
 export default QuarterPanel;
diff --git a/node_modules/rc-picker/lib/panels/QuarterPanel/index.js b/node_modules/rc-picker/lib/panels/QuarterPanel/index.js
index dd732e4..eb8f8a6 100644
--- a/node_modules/rc-picker/lib/panels/QuarterPanel/index.js
+++ b/node_modules/rc-picker/lib/panels/QuarterPanel/index.js
@@ -11,6 +11,8 @@ exports.default = void 0;
 
 var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
 
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
 var React = _interopRequireWildcard(require("react"));
 
 var _QuarterHeader = _interopRequireDefault(require("./QuarterHeader"));
@@ -31,7 +33,11 @@ function QuarterPanel(props) {
       value = props.value,
       viewDate = props.viewDate,
       onPanelChange = props.onPanelChange,
-      _onSelect = props.onSelect;
+      _onSelect = props.onSelect,
+      sourceMode = props.sourceMode,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-quarter-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -53,9 +59,24 @@ function QuarterPanel(props) {
   var onYearChange = function onYearChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && sourceMode === 'year') {
+      setSourceModeCopy('decade1');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onYearChange(diffValue[0]);
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
     className: panelPrefixCls
   }, /*#__PURE__*/React.createElement(_QuarterHeader.default, (0, _extends2.default)({}, props, {
@@ -68,13 +89,24 @@ function QuarterPanel(props) {
     },
     onYearClick: function onYearClick() {
       onPanelChange('year', viewDate);
-    }
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(_QuarterBody.default, (0, _extends2.default)({}, props, {
     prefixCls: prefixCls,
     onSelect: function onSelect(date) {
       _onSelect(date, 'mouse');
     }
-  })));
+  })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 var _default = QuarterPanel;
diff --git a/node_modules/rc-picker/lib/panels/TimePanel/TimeBody.js b/node_modules/rc-picker/lib/panels/TimePanel/TimeBody.js
index d8496a3..c3cf58a 100644
--- a/node_modules/rc-picker/lib/panels/TimePanel/TimeBody.js
+++ b/node_modules/rc-picker/lib/panels/TimePanel/TimeBody.js
@@ -203,19 +203,22 @@ function TimeBody(props) {
 
 
   addColumnNode(showHour, /*#__PURE__*/React.createElement(_TimeUnitColumn.default, {
-    key: "hour"
+    key: "hour",
+    className: "".concat(columnPrefixCls, "-hour")
   }), hour, hours, function (num) {
     onSelect(setTime(isPM, num, minute, second), 'mouse');
   }); // Minute
 
   addColumnNode(showMinute, /*#__PURE__*/React.createElement(_TimeUnitColumn.default, {
-    key: "minute"
+    key: "minute",
+    className: "".concat(columnPrefixCls, "-minute")
   }), minute, minutes, function (num) {
     onSelect(setTime(isPM, hour, num, second), 'mouse');
   }); // Second
 
   addColumnNode(showSecond, /*#__PURE__*/React.createElement(_TimeUnitColumn.default, {
-    key: "second"
+    key: "second",
+    className: "".concat(columnPrefixCls, "-second")
   }), second, seconds, function (num) {
     onSelect(setTime(isPM, hour, minute, num), 'mouse');
   }); // 12 Hours
@@ -227,7 +230,8 @@ function TimeBody(props) {
   }
 
   addColumnNode(use12Hours === true, /*#__PURE__*/React.createElement(_TimeUnitColumn.default, {
-    key: "12hours"
+    key: "12hours",
+    className: "".concat(columnPrefixCls, "-12hours")
   }), PMIndex, [{
     label: 'AM',
     value: 0,
diff --git a/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.d.ts b/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.d.ts
index 69cad3e..c63fc7e 100644
--- a/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.d.ts
+++ b/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.d.ts
@@ -6,6 +6,7 @@ export declare type Unit = {
 };
 export declare type TimeUnitColumnProps = {
     prefixCls?: string;
+    className?: string;
     units?: Unit[];
     value?: number;
     active?: boolean;
diff --git a/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.js b/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.js
index 9589fe5..95a3260 100644
--- a/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.js
+++ b/node_modules/rc-picker/lib/panels/TimePanel/TimeUnitColumn.js
@@ -25,6 +25,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
 
 function TimeUnitColumn(props) {
   var prefixCls = props.prefixCls,
+      className = props.className,
       units = props.units,
       onSelect = props.onSelect,
       value = props.value,
@@ -64,7 +65,7 @@ function TimeUnitColumn(props) {
     };
   }, [open]);
   return /*#__PURE__*/React.createElement("ul", {
-    className: (0, _classnames.default)("".concat(prefixCls, "-column"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-column-active"), active)),
+    className: (0, _classnames.default)("".concat(prefixCls, "-column"), className, (0, _defineProperty2.default)({}, "".concat(prefixCls, "-column-active"), active)),
     ref: ulRef,
     style: {
       position: 'relative'
diff --git a/node_modules/rc-picker/lib/panels/TimePanel/index.d.ts b/node_modules/rc-picker/lib/panels/TimePanel/index.d.ts
index 77cf193..00207c3 100644
--- a/node_modules/rc-picker/lib/panels/TimePanel/index.d.ts
+++ b/node_modules/rc-picker/lib/panels/TimePanel/index.d.ts
@@ -1,6 +1,7 @@
 /// <reference types="react" />
 import type { PanelSharedProps, DisabledTimes } from '../../interface';
 export declare type SharedTimeProps<DateType> = {
+    fieldid?: string;
     format?: string;
     showNow?: boolean;
     showHour?: boolean;
diff --git a/node_modules/rc-picker/lib/panels/TimePanel/index.js b/node_modules/rc-picker/lib/panels/TimePanel/index.js
index 8cb1e51..cdfeb83 100644
--- a/node_modules/rc-picker/lib/panels/TimePanel/index.js
+++ b/node_modules/rc-picker/lib/panels/TimePanel/index.js
@@ -41,6 +41,7 @@ function TimePanel(props) {
       format = _props$format === void 0 ? 'HH:mm:ss' : _props$format,
       prefixCls = props.prefixCls,
       active = props.active,
+      fieldid = props.fieldid,
       operationRef = props.operationRef,
       showHour = props.showHour,
       showMinute = props.showMinute,
@@ -82,6 +83,8 @@ function TimePanel(props) {
     }
   };
   return /*#__PURE__*/React.createElement("div", {
+    // @ts-ignore
+    fieldid: fieldid && "".concat(fieldid, "-time-panel"),
     className: (0, _classnames.default)(panelPrefixCls, (0, _defineProperty2.default)({}, "".concat(panelPrefixCls, "-active"), active))
   }, /*#__PURE__*/React.createElement(_TimeHeader.default, (0, _extends2.default)({}, props, {
     format: format,
diff --git a/node_modules/rc-picker/lib/panels/YearPanel/YearHeader.d.ts b/node_modules/rc-picker/lib/panels/YearPanel/YearHeader.d.ts
index f3966b8..aca20c7 100644
--- a/node_modules/rc-picker/lib/panels/YearPanel/YearHeader.d.ts
+++ b/node_modules/rc-picker/lib/panels/YearPanel/YearHeader.d.ts
@@ -8,6 +8,7 @@ export declare type YearHeaderProps<DateType> = {
     onPrevDecade: () => void;
     onNextDecade: () => void;
     onDecadeClick: () => void;
+    sourceModeCopy: string;
 };
 declare function YearHeader<DateType>(props: YearHeaderProps<DateType>): JSX.Element;
 export default YearHeader;
diff --git a/node_modules/rc-picker/lib/panels/YearPanel/index.d.ts b/node_modules/rc-picker/lib/panels/YearPanel/index.d.ts
index 06168dc..0c19dbb 100644
--- a/node_modules/rc-picker/lib/panels/YearPanel/index.d.ts
+++ b/node_modules/rc-picker/lib/panels/YearPanel/index.d.ts
@@ -2,6 +2,8 @@
 import type { PanelSharedProps, PanelMode } from '../../interface';
 export declare type YearPanelProps<DateType> = {
     sourceMode: PanelMode;
+    headerSelect?: any;
+    showSelectMask?: boolean;
 } & PanelSharedProps<DateType>;
 export declare const YEAR_DECADE_COUNT = 10;
 declare function YearPanel<DateType>(props: YearPanelProps<DateType>): JSX.Element;
diff --git a/node_modules/rc-picker/lib/panels/YearPanel/index.js b/node_modules/rc-picker/lib/panels/YearPanel/index.js
index a886228..3cb06d2 100644
--- a/node_modules/rc-picker/lib/panels/YearPanel/index.js
+++ b/node_modules/rc-picker/lib/panels/YearPanel/index.js
@@ -11,6 +11,8 @@ exports.default = exports.YEAR_DECADE_COUNT = void 0;
 
 var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
 
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
 var React = _interopRequireWildcard(require("react"));
 
 var _YearHeader = _interopRequireDefault(require("./YearHeader"));
@@ -35,7 +37,10 @@ function YearPanel(props) {
       viewDate = props.viewDate,
       sourceMode = props.sourceMode,
       _onSelect = props.onSelect,
-      onPanelChange = props.onPanelChange;
+      onPanelChange = props.onPanelChange,
+      diffValue = props.diffValue,
+      headerSelect = props.headerSelect,
+      showSelectMask = props.showSelectMask;
   var panelPrefixCls = "".concat(prefixCls, "-year-panel"); // ======================= Keyboard =======================
 
   operationRef.current = {
@@ -51,7 +56,7 @@ function YearPanel(props) {
           _onSelect(generateConfig.addYear(value || viewDate, diff * _YearBody.YEAR_COL_COUNT), 'key');
         },
         onEnter: function onEnter() {
-          onPanelChange(sourceMode === 'date' ? 'date' : 'month', value || viewDate);
+          onPanelChange('month', value || viewDate);
         }
       });
     }
@@ -60,9 +65,24 @@ function YearPanel(props) {
   var onDecadeChange = function onDecadeChange(diff) {
     var newDate = generateConfig.addYear(viewDate, diff * 10);
     onViewDateChange(newDate);
-    onPanelChange(null, newDate);
+    onPanelChange(null, newDate, 'year', diff);
   };
 
+  var _React$useState = React.useState(sourceMode),
+      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
+      sourceModeCopy = _React$useState2[0],
+      setSourceModeCopy = _React$useState2[1];
+
+  React.useEffect(function () {
+    if (sourceMode && ['date', 'week', 'quarter', 'year', 'halfYear', 'month'].includes(sourceMode)) {
+      setSourceModeCopy('decade');
+    }
+  }, [sourceMode]);
+  React.useEffect(function () {
+    if (diffValue) {
+      onDecadeChange(diffValue[0]);
+    }
+  }, [diffValue]);
   return /*#__PURE__*/React.createElement("div", {
     className: panelPrefixCls
   }, /*#__PURE__*/React.createElement(_YearHeader.default, (0, _extends2.default)({}, props, {
@@ -75,15 +95,26 @@ function YearPanel(props) {
     },
     onDecadeClick: function onDecadeClick() {
       onPanelChange('decade', viewDate);
-    }
+    },
+    sourceModeCopy: sourceModeCopy
   })), /*#__PURE__*/React.createElement(_YearBody.default, (0, _extends2.default)({}, props, {
     prefixCls: prefixCls,
     onSelect: function onSelect(date) {
-      onPanelChange(sourceMode === 'date' ? 'date' : 'month', date);
+      onPanelChange('month', date);
 
       _onSelect(date, 'mouse');
     }
-  })));
+  })), headerSelect != undefined && showSelectMask ? /*#__PURE__*/React.createElement("div", {
+    style: {
+      opacity: '0.5',
+      width: '100%',
+      height: '100%',
+      background: '#fff',
+      position: 'absolute',
+      left: 0,
+      zIndex: '100'
+    }
+  }) : null);
 }
 
 var _default = YearPanel;
diff --git a/node_modules/rc-picker/lib/utils/dateUtil.d.ts b/node_modules/rc-picker/lib/utils/dateUtil.d.ts
index c310a63..5c19dcf 100644
--- a/node_modules/rc-picker/lib/utils/dateUtil.d.ts
+++ b/node_modules/rc-picker/lib/utils/dateUtil.d.ts
@@ -4,8 +4,8 @@ export declare const WEEK_DAY_COUNT = 7;
 export declare function isNullEqual<T>(value1: T, value2: T): boolean | undefined;
 export declare function isSameDecade<DateType>(generateConfig: GenerateConfig<DateType>, decade1: NullableDateType<DateType>, decade2: NullableDateType<DateType>): boolean;
 export declare function isSameYear<DateType>(generateConfig: GenerateConfig<DateType>, year1: NullableDateType<DateType>, year2: NullableDateType<DateType>): boolean;
-export declare function getQuarter<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType): number;
-export declare function isSameQuarter<DateType>(generateConfig: GenerateConfig<DateType>, quarter1: NullableDateType<DateType>, quarter2: NullableDateType<DateType>): boolean;
+export declare function getQuarter<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType, type?: 'quarter' | 'halfYear'): number;
+export declare function isSameQuarter<DateType>(generateConfig: GenerateConfig<DateType>, quarter1: NullableDateType<DateType>, quarter2: NullableDateType<DateType>, type?: 'quarter' | 'halfYear'): boolean;
 export declare function isSameMonth<DateType>(generateConfig: GenerateConfig<DateType>, month1: NullableDateType<DateType>, month2: NullableDateType<DateType>): boolean;
 export declare function isSameDate<DateType>(generateConfig: GenerateConfig<DateType>, date1: NullableDateType<DateType>, date2: NullableDateType<DateType>): boolean;
 export declare function isSameTime<DateType>(generateConfig: GenerateConfig<DateType>, time1: NullableDateType<DateType>, time2: NullableDateType<DateType>): boolean;
diff --git a/node_modules/rc-picker/lib/utils/dateUtil.js b/node_modules/rc-picker/lib/utils/dateUtil.js
index 70c1acd..55f0751 100644
--- a/node_modules/rc-picker/lib/utils/dateUtil.js
+++ b/node_modules/rc-picker/lib/utils/dateUtil.js
@@ -61,18 +61,20 @@ function isSameYear(generateConfig, year1, year2) {
 }
 
 function getQuarter(generateConfig, date) {
-  var quota = Math.floor(generateConfig.getMonth(date) / 3);
+  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'quarter';
+  var quota = Math.floor(generateConfig.getMonth(date) / (type === 'halfYear' ? 6 : 3));
   return quota + 1;
 }
 
 function isSameQuarter(generateConfig, quarter1, quarter2) {
+  var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'quarter';
   var equal = isNullEqual(quarter1, quarter2);
 
   if (typeof equal === 'boolean') {
     return equal;
   }
 
-  return isSameYear(generateConfig, quarter1, quarter2) && getQuarter(generateConfig, quarter1) === getQuarter(generateConfig, quarter2);
+  return isSameYear(generateConfig, quarter1, quarter2) && getQuarter(generateConfig, quarter1, type) === getQuarter(generateConfig, quarter2, type);
 }
 
 function isSameMonth(generateConfig, month1, month2) {
@@ -149,6 +151,7 @@ function getClosingViewDate(viewDate, picker, generateConfig) {
     case 'year':
       return generateConfig.addYear(viewDate, offset * 10);
 
+    case 'halfYear':
     case 'quarter':
     case 'month':
       return generateConfig.addYear(viewDate, offset);
diff --git a/node_modules/rc-picker/lib/utils/getRanges.d.ts b/node_modules/rc-picker/lib/utils/getRanges.d.ts
index 98bf988..5aae660 100644
--- a/node_modules/rc-picker/lib/utils/getRanges.d.ts
+++ b/node_modules/rc-picker/lib/utils/getRanges.d.ts
@@ -2,6 +2,8 @@
 import type { Components, RangeList, Locale } from '../interface';
 export declare type RangesProps = {
     prefixCls: string;
+    fieldid?: string;
+    activePresetLabel?: string;
     rangeList?: RangeList;
     components?: Components;
     needConfirmButton: boolean;
@@ -11,4 +13,4 @@ export declare type RangesProps = {
     showNow?: boolean;
     locale: Locale;
 };
-export default function getRanges({ prefixCls, rangeList, components, needConfirmButton, onNow, onOk, okDisabled, showNow, locale, }: RangesProps): JSX.Element;
+export default function getRanges({ prefixCls, fieldid, activePresetLabel, rangeList, components, needConfirmButton, onNow, onOk, okDisabled, showNow, locale, }: RangesProps): JSX.Element;
diff --git a/node_modules/rc-picker/lib/utils/getRanges.js b/node_modules/rc-picker/lib/utils/getRanges.js
index 724504e..41ee02e 100644
--- a/node_modules/rc-picker/lib/utils/getRanges.js
+++ b/node_modules/rc-picker/lib/utils/getRanges.js
@@ -1,5 +1,7 @@
 "use strict";
 
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
 var _typeof = require("@babel/runtime/helpers/typeof");
 
 Object.defineProperty(exports, "__esModule", {
@@ -7,6 +9,10 @@ Object.defineProperty(exports, "__esModule", {
 });
 exports.default = getRanges;
 
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _classnames = _interopRequireDefault(require("classnames"));
+
 var React = _interopRequireWildcard(require("react"));
 
 function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -15,6 +21,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
 
 function getRanges(_ref) {
   var prefixCls = _ref.prefixCls,
+      fieldid = _ref.fieldid,
+      activePresetLabel = _ref.activePresetLabel,
       _ref$rangeList = _ref.rangeList,
       rangeList = _ref$rangeList === void 0 ? [] : _ref$rangeList,
       _ref$components = _ref.components,
@@ -36,8 +44,10 @@ function getRanges(_ref) {
           onMouseEnter = _ref2.onMouseEnter,
           onMouseLeave = _ref2.onMouseLeave;
       return /*#__PURE__*/React.createElement("li", {
+        // @ts-ignore
+        fieldid: fieldid && ''.concat(fieldid, '-', label),
         key: label,
-        className: "".concat(prefixCls, "-preset")
+        className: (0, _classnames.default)("".concat(prefixCls, "-preset"), (0, _defineProperty2.default)({}, "".concat(prefixCls, "-preset-active"), activePresetLabel === label))
       }, /*#__PURE__*/React.createElement(Item, {
         onClick: onClick,
         onMouseEnter: onMouseEnter,
@@ -51,15 +61,20 @@ function getRanges(_ref) {
 
     if (onNow && !presetNode && showNow !== false) {
       presetNode = /*#__PURE__*/React.createElement("li", {
-        className: "".concat(prefixCls, "-now")
+        className: "".concat(prefixCls, "-now") // @ts-ignore
+        ,
+        fieldid: fieldid && ''.concat(fieldid, '-now')
       }, /*#__PURE__*/React.createElement("a", {
         className: "".concat(prefixCls, "-now-btn"),
-        onClick: onNow
+        onClick: onNow,
+        title: locale.now
       }, locale.now));
     }
 
     okNode = needConfirmButton && /*#__PURE__*/React.createElement("li", {
-      className: "".concat(prefixCls, "-ok")
+      className: "".concat(prefixCls, "-ok") // @ts-ignore
+      ,
+      fieldid: fieldid && ''.concat(fieldid, '-ok')
     }, /*#__PURE__*/React.createElement(Button, {
       disabled: okDisabled,
       onClick: onOk
@@ -71,6 +86,8 @@ function getRanges(_ref) {
   }
 
   return /*#__PURE__*/React.createElement("ul", {
-    className: "".concat(prefixCls, "-ranges")
+    className: "".concat(prefixCls, "-ranges") // @ts-ignore
+    ,
+    fieldid: fieldid && ''.concat(fieldid, '-ranges')
   }, presetNode, okNode);
 }
\ No newline at end of file
diff --git a/node_modules/rc-picker/lib/utils/uiUtil.js b/node_modules/rc-picker/lib/utils/uiUtil.js
index 4edb427..e18f923 100644
--- a/node_modules/rc-picker/lib/utils/uiUtil.js
+++ b/node_modules/rc-picker/lib/utils/uiUtil.js
@@ -261,6 +261,14 @@ var getMonthNextMode = function getMonthNextMode(next) {
   return next;
 };
 
+var getHalfYearMode = function getHalfYearMode(next) {
+  if (next === 'month' || next === 'date') {
+    return 'halfYear';
+  }
+
+  return next;
+};
+
 var getQuarterNextMode = function getQuarterNextMode(next) {
   if (next === 'month' || next === 'date') {
     return 'quarter';
@@ -280,6 +288,7 @@ var getWeekNextMode = function getWeekNextMode(next) {
 var PickerModeMap = {
   year: getYearNextMode,
   month: getMonthNextMode,
+  halfYear: getHalfYearMode,
   quarter: getQuarterNextMode,
   week: getWeekNextMode,
   time: null,
