Skip to content

Commit a71f9f9

Browse files
authored
Merge 2e6ff53 into 13e10ec
2 parents 13e10ec + 2e6ff53 commit a71f9f9

File tree

5 files changed

+70
-94
lines changed

5 files changed

+70
-94
lines changed

src/panels/DatePanel/DateBody.tsx

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import * as React from 'react';
22
import type { GenerateConfig } from '../../generate';
3-
import {
4-
WEEK_DAY_COUNT,
5-
getWeekStartDate,
6-
isSameDate,
7-
isSameMonth,
8-
formatValue,
9-
} from '../../utils/dateUtil';
3+
import { WEEK_DAY_COUNT, getWeekStartDate, isSameDate, isSameMonth } from '../../utils/dateUtil';
104
import type { Locale } from '../../interface';
115
import RangeContext from '../../RangeContext';
126
import useCellClassName from '../../hooks/useCellClassName';
@@ -34,16 +28,8 @@ export type DateBodyProps<DateType> = {
3428
} & DateBodyPassProps<DateType>;
3529

3630
function DateBody<DateType>(props: DateBodyProps<DateType>) {
37-
const {
38-
prefixCls,
39-
generateConfig,
40-
prefixColumn,
41-
locale,
42-
rowCount,
43-
viewDate,
44-
value,
45-
dateRender,
46-
} = props;
31+
const { prefixCls, generateConfig, prefixColumn, locale, rowCount, viewDate, value, dateRender } =
32+
props;
4733

4834
const { rangedValue, hoverRangedValue } = React.useContext(RangeContext);
4935

@@ -76,7 +62,7 @@ function DateBody<DateType>(props: DateBodyProps<DateType>) {
7662
rangedValue: prefixColumn ? null : rangedValue,
7763
hoverRangedValue: prefixColumn ? null : hoverRangedValue,
7864
isSameCell: (current, target) => isSameDate(generateConfig, current, target),
79-
isInView: date => isSameMonth(generateConfig, date, viewDate),
65+
isInView: (date) => isSameMonth(generateConfig, date, viewDate),
8066
offsetCell: (date, offset) => generateConfig.addDate(date, offset),
8167
});
8268

@@ -92,13 +78,7 @@ function DateBody<DateType>(props: DateBodyProps<DateType>) {
9278
getCellText={generateConfig.getDate}
9379
getCellClassName={getCellClassName}
9480
getCellDate={generateConfig.addDate}
95-
titleCell={date =>
96-
formatValue(date, {
97-
locale,
98-
format: 'YYYY-MM-DD',
99-
generateConfig,
100-
})
101-
}
81+
titleCell={(date) => generateConfig.locale.format(locale.locale, date, locale.dateFormat)}
10282
headerCells={headerCells}
10383
/>
10484
);

src/panels/PanelBody.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import classNames from 'classnames';
33
import PanelContext from '../PanelContext';
44
import type { GenerateConfig } from '../generate';
55
import { getLastDay } from '../utils/timeUtil';
6-
import type { PanelMode } from '../interface';
6+
import type { PanelMode, Locale } from '../interface';
77
import { getCellDateDisabled } from '../utils/dateUtil';
88

99
export type PanelBodyProps<DateType> = {
@@ -23,6 +23,7 @@ export type PanelBodyProps<DateType> = {
2323
getCellNode?: (date: DateType) => React.ReactNode;
2424
titleCell?: (date: DateType) => string;
2525
generateConfig: GenerateConfig<DateType>;
26+
locale?: Locale;
2627

2728
// Used for week panel
2829
prefixColumn?: (date: DateType) => React.ReactNode;
@@ -44,6 +45,7 @@ export default function PanelBody<DateType>({
4445
getCellNode,
4546
getCellDate,
4647
generateConfig,
48+
locale,
4749
titleCell,
4850
headerCells,
4951
}: PanelBodyProps<DateType>) {
@@ -77,6 +79,10 @@ export default function PanelBody<DateType>({
7779
}
7880

7981
const title = titleCell && titleCell(currentDate);
82+
const lastDateTitle =
83+
picker === 'year'
84+
? Number(title) % 10 === 9
85+
: locale && getLastDay(generateConfig, currentDate, locale);
8086

8187
row.push(
8288
<td
@@ -86,9 +92,7 @@ export default function PanelBody<DateType>({
8692
[`${cellPrefixCls}-disabled`]: disabled,
8793
[`${cellPrefixCls}-start`]:
8894
getCellText(currentDate) === 1 || (picker === 'year' && Number(title) % 10 === 0),
89-
[`${cellPrefixCls}-end`]:
90-
title === getLastDay(generateConfig, currentDate) ||
91-
(picker === 'year' && Number(title) % 10 === 9),
95+
[`${cellPrefixCls}-end`]: title === lastDateTitle,
9296
...getCellClassName(currentDate),
9397
})}
9498
onClick={() => {

src/utils/timeUtil.ts

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { NullableDateType } from '../interface';
22
import type { GenerateConfig } from '../generate';
3+
import type { Locale } from '../interface';
34

45
export function setTime<DateType>(
56
generateConfig: GenerateConfig<DateType>,
@@ -24,22 +25,12 @@ export function setDateTime<DateType>(
2425
}
2526

2627
let newDate = date;
27-
newDate = generateConfig.setHour(
28-
newDate,
29-
generateConfig.getHour(defaultDate),
30-
);
31-
newDate = generateConfig.setMinute(
32-
newDate,
33-
generateConfig.getMinute(defaultDate),
34-
);
35-
newDate = generateConfig.setSecond(
36-
newDate,
37-
generateConfig.getSecond(defaultDate),
38-
);
28+
newDate = generateConfig.setHour(newDate, generateConfig.getHour(defaultDate));
29+
newDate = generateConfig.setMinute(newDate, generateConfig.getMinute(defaultDate));
30+
newDate = generateConfig.setSecond(newDate, generateConfig.getSecond(defaultDate));
3931
return newDate;
4032
}
4133

42-
4334
export function getLowerBoundTime(
4435
hour: number,
4536
minute: number,
@@ -60,11 +51,14 @@ export function getLowerBoundTime(
6051
return [lowerBoundHour, lowerBoundMinute, lowerBoundSecond];
6152
}
6253

63-
export function getLastDay<DateType>(generateConfig: GenerateConfig<DateType>, date: DateType) {
54+
export function getLastDay<DateType>(
55+
generateConfig: GenerateConfig<DateType>,
56+
date: DateType,
57+
locale: Locale,
58+
) {
6459
const year = generateConfig.getYear(date);
6560
const month = generateConfig.getMonth(date) + 1;
6661
const endDate = generateConfig.getEndDate(generateConfig.getFixedDate(`${year}-${month}-01`));
67-
const lastDay = generateConfig.getDate(endDate);
68-
const monthShow = month < 10 ? `0${month}` : `${month}`;
69-
return `${year}-${monthShow}-${lastDay}`;
62+
63+
return generateConfig.locale.format(locale.locale, endDate, locale.dateFormat);
7064
}

0 commit comments

Comments
 (0)