From d5282ef63139c6a3173db385d5e80fcb65fcd12f Mon Sep 17 00:00:00 2001 From: skyxchen Date: Fri, 12 Aug 2022 14:52:05 +0800 Subject: [PATCH] feat:add a prop to allow range-picker outof [begin,end] --- docs/examples/range.tsx | 13 +++++++++++++ src/PickerPanel.tsx | 2 ++ src/RangePicker.tsx | 12 ++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/docs/examples/range.tsx b/docs/examples/range.tsx index 7c00e8d34..7b129ae72 100644 --- a/docs/examples/range.tsx +++ b/docs/examples/range.tsx @@ -186,6 +186,19 @@ export default () => { disabledDate={disabledDate} /> +
+

Allow outof [begin,end]

+ + {...sharedProps} + value={undefined} + locale={zhCN} + allowClear + limitBeginAndEnd={false} + ref={rangePickerRef} + clearIcon={X} + suffixIcon={O} + /> +
); diff --git a/src/PickerPanel.tsx b/src/PickerPanel.tsx index 0f8271b16..e50d4d9ba 100644 --- a/src/PickerPanel.tsx +++ b/src/PickerPanel.tsx @@ -61,6 +61,8 @@ export type PickerPanelSharedProps = { // Date disabledDate?: (date: DateType) => boolean; + // disable outof range[begin,end]; default true + limitBeginAndEnd?:boolean // Render dateRender?: DateRender; diff --git a/src/RangePicker.tsx b/src/RangePicker.tsx index 8c1349f73..72b6026d7 100644 --- a/src/RangePicker.tsx +++ b/src/RangePicker.tsx @@ -195,6 +195,7 @@ function InnerRangePicker(props: RangePickerProps) { open, defaultOpen, disabledDate, + limitBeginAndEnd=true, disabledTime, dateRender, panelRender, @@ -329,8 +330,8 @@ function InnerRangePicker(props: RangePickerProps) { disabledDate, generateConfig, }, - openRecordsRef.current[1], - openRecordsRef.current[0], + limitBeginAndEnd&&openRecordsRef.current[1], + limitBeginAndEnd&&openRecordsRef.current[0], ); // ============================= Open ============================== @@ -405,6 +406,13 @@ function InnerRangePicker(props: RangePickerProps) { let values = newValue; let startValue = getValue(values, 0); let endValue = getValue(values, 1); + + // change startValue and endValue ,if start > end + if(startValue && endValue &&!generateConfig.isAfter(endValue,startValue,)){ + const tmp=endValue + endValue=startValue + startValue=tmp + } // >>>>> Format start & end values if (startValue && endValue && generateConfig.isAfter(startValue, endValue)) {