Skip to content

Commit 5391bb3

Browse files
authored
fix: week panel should not have date cls (#736)
1 parent 0660402 commit 5391bb3

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

src/PickerPanel/DatePanel/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export interface DatePanelProps<DateType extends object> extends SharedPanelProp
1818

1919
/** Used for `WeekPanel` */
2020
mode?: PanelMode;
21+
cellSelection?: boolean;
2122
}
2223

2324
export default function DatePanel<DateType extends object = any>(props: DatePanelProps<DateType>) {
@@ -40,6 +41,8 @@ export default function DatePanel<DateType extends object = any>(props: DatePane
4041

4142
const cellPrefixCls = `${prefixCls}-cell`;
4243

44+
const isWeek = mode === 'week';
45+
4346
// ========================== Base ==========================
4447
const [info, now] = useInfo(props, mode);
4548
const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);
@@ -48,7 +51,7 @@ export default function DatePanel<DateType extends object = any>(props: DatePane
4851

4952
// =========================== PrefixColumn ===========================
5053
const prefixColumn =
51-
mode === 'week' || showWeek
54+
isWeek || showWeek
5255
? (date: DateType) => {
5356
// >>> Additional check for disabled
5457
const disabled = disabledDate?.(date, { type: 'week' });
@@ -198,6 +201,7 @@ export default function DatePanel<DateType extends object = any>(props: DatePane
198201
getCellText={getCellText}
199202
getCellClassName={getCellClassName}
200203
prefixColumn={prefixColumn}
204+
cellSelection={!isWeek}
201205
/>
202206
</div>
203207
</PanelContext.Provider>

src/PickerPanel/PanelBody.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export interface PanelBodyProps<DateType = any> {
2121
// Used for week panel
2222
prefixColumn?: (date: DateType) => React.ReactNode;
2323
rowClassName?: (date: DateType) => string;
24+
cellSelection?: boolean;
2425
}
2526

2627
export default function PanelBody<DateType extends object = any>(props: PanelBodyProps<DateType>) {
@@ -35,6 +36,7 @@ export default function PanelBody<DateType extends object = any>(props: PanelBod
3536
getCellText,
3637
getCellClassName,
3738
headerCells,
39+
cellSelection = true,
3840
} = props;
3941

4042
const {
@@ -92,7 +94,7 @@ export default function PanelBody<DateType extends object = any>(props: PanelBod
9294
let rangeStart = false;
9395
let rangeEnd = false;
9496

95-
if (hoverRangeValue) {
97+
if (cellSelection && hoverRangeValue) {
9698
const [hoverStart, hoverEnd] = hoverRangeValue;
9799
inRange = isInRange(generateConfig, hoverStart, hoverEnd, currentDate);
98100
rangeStart = isSame(generateConfig, locale, currentDate, hoverStart, type);

src/PickerPanel/WeekPanel/index.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,5 +50,12 @@ export default function WeekPanel<DateType extends object = any>(
5050
};
5151

5252
// ============================== Render ==============================
53-
return <DatePanel {...props} mode="week" panelName="week" rowClassName={rowClassName} />;
53+
return (
54+
<DatePanel
55+
{...props}
56+
mode="week"
57+
panelName="week"
58+
rowClassName={rowClassName}
59+
/>
60+
);
5461
}

tests/new-range.spec.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,4 +1213,14 @@ describe('NewPicker.Range', () => {
12131213
const { container } = render(<DayRangePicker disabled={[true, false]} autoFocus />);
12141214
expect(document.activeElement).toBe(container.querySelectorAll('input')[1]);
12151215
});
1216+
1217+
it('week panel not have date cell className', () => {
1218+
const { unmount } = render(<DayRangePicker value={[dayjs(), dayjs().add(21, 'days')]} open />);
1219+
expect(document.querySelector('.rc-picker-cell-range-start')).toBeTruthy();
1220+
unmount();
1221+
1222+
// Render with week panel
1223+
render(<DayRangePicker picker="week" value={[dayjs(), dayjs().add(21, 'days')]} open />);
1224+
expect(document.querySelector('.rc-picker-cell-range-start')).toBeFalsy();
1225+
});
12161226
});

0 commit comments

Comments
 (0)