diff --git a/src/PickerPanel/DatePanel/index.tsx b/src/PickerPanel/DatePanel/index.tsx index 0961a38d0..fe6fe2a62 100644 --- a/src/PickerPanel/DatePanel/index.tsx +++ b/src/PickerPanel/DatePanel/index.tsx @@ -18,6 +18,7 @@ export interface DatePanelProps extends SharedPanelProp /** Used for `WeekPanel` */ mode?: PanelMode; + cellSelection?: boolean; } export default function DatePanel(props: DatePanelProps) { @@ -40,6 +41,8 @@ export default function DatePanel(props: DatePane const cellPrefixCls = `${prefixCls}-cell`; + const isWeek = mode === 'week'; + // ========================== Base ========================== const [info, now] = useInfo(props, mode); const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale); @@ -48,7 +51,7 @@ export default function DatePanel(props: DatePane // =========================== PrefixColumn =========================== const prefixColumn = - mode === 'week' || showWeek + isWeek || showWeek ? (date: DateType) => { // >>> Additional check for disabled const disabled = disabledDate?.(date, { type: 'week' }); @@ -198,6 +201,7 @@ export default function DatePanel(props: DatePane getCellText={getCellText} getCellClassName={getCellClassName} prefixColumn={prefixColumn} + cellSelection={!isWeek} /> diff --git a/src/PickerPanel/PanelBody.tsx b/src/PickerPanel/PanelBody.tsx index a1f2419a6..cb97fc124 100644 --- a/src/PickerPanel/PanelBody.tsx +++ b/src/PickerPanel/PanelBody.tsx @@ -21,6 +21,7 @@ export interface PanelBodyProps { // Used for week panel prefixColumn?: (date: DateType) => React.ReactNode; rowClassName?: (date: DateType) => string; + cellSelection?: boolean; } export default function PanelBody(props: PanelBodyProps) { @@ -35,6 +36,7 @@ export default function PanelBody(props: PanelBod getCellText, getCellClassName, headerCells, + cellSelection = true, } = props; const { @@ -92,7 +94,7 @@ export default function PanelBody(props: PanelBod let rangeStart = false; let rangeEnd = false; - if (hoverRangeValue) { + if (cellSelection && hoverRangeValue) { const [hoverStart, hoverEnd] = hoverRangeValue; inRange = isInRange(generateConfig, hoverStart, hoverEnd, currentDate); rangeStart = isSame(generateConfig, locale, currentDate, hoverStart, type); diff --git a/src/PickerPanel/WeekPanel/index.tsx b/src/PickerPanel/WeekPanel/index.tsx index 9d5becb84..82a1c74ee 100644 --- a/src/PickerPanel/WeekPanel/index.tsx +++ b/src/PickerPanel/WeekPanel/index.tsx @@ -50,5 +50,12 @@ export default function WeekPanel( }; // ============================== Render ============================== - return ; + return ( + + ); } diff --git a/tests/new-range.spec.tsx b/tests/new-range.spec.tsx index a225b9742..9cb0fa602 100644 --- a/tests/new-range.spec.tsx +++ b/tests/new-range.spec.tsx @@ -1213,4 +1213,14 @@ describe('NewPicker.Range', () => { const { container } = render(); expect(document.activeElement).toBe(container.querySelectorAll('input')[1]); }); + + it('week panel not have date cell className', () => { + const { unmount } = render(); + expect(document.querySelector('.rc-picker-cell-range-start')).toBeTruthy(); + unmount(); + + // Render with week panel + render(); + expect(document.querySelector('.rc-picker-cell-range-start')).toBeFalsy(); + }); });