Skip to content

Commit c415f48

Browse files
authored
feat(calendarcard): 增加自定义头 (#3285)
* feat(calendarcard): 增加自定义头 * fix: 使用 view 替换
1 parent 27382ce commit c415f48

File tree

11 files changed

+108
-22
lines changed

11 files changed

+108
-22
lines changed

src/packages/calendarcard/calendarcard.taro.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export const CalendarCard = React.forwardRef<
3737
style,
3838
className,
3939
type,
40+
title,
4041
value,
4142
defaultValue,
4243
firstDayOfWeek,
@@ -455,7 +456,7 @@ export const CalendarCard = React.forwardRef<
455456

456457
return days.length > 0 ? (
457458
<View className={classNames(prefixCls, className)} style={style}>
458-
{renderHeader()}
459+
{title || renderHeader()}
459460
{renderContent()}
460461
</View>
461462
) : null

src/packages/calendarcard/calendarcard.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export const CalendarCard = React.forwardRef<
3636
style,
3737
className,
3838
type,
39+
title,
3940
value,
4041
defaultValue,
4142
firstDayOfWeek,
@@ -456,7 +457,7 @@ export const CalendarCard = React.forwardRef<
456457

457458
return days.length > 0 ? (
458459
<div className={classNames(prefixCls, className)} style={style}>
459-
{renderHeader()}
460+
{title || renderHeader()}
460461
{renderContent()}
461462
</div>
462463
) : null

src/packages/calendarcard/demo.taro.tsx

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import Demo8 from './demos/taro/demo8'
1515
import Demo9 from './demos/taro/demo9'
1616
import Demo10 from './demos/taro/demo10'
1717
import Demo11 from './demos/taro/demo11'
18+
import Demo12 from './demos/taro/demo12'
1819

1920
const CalendarDemo = () => {
2021
const [translated] = useTranslate({
@@ -32,6 +33,7 @@ const CalendarDemo = () => {
3233
select: '选择日期',
3334
confirm: '确定',
3435
ref: '使用 Ref 上的方法',
36+
title: '搭配 Ref 使用自定义头',
3537
},
3638
'zh-TW': {
3739
single: '選擇單個日期',
@@ -47,6 +49,7 @@ const CalendarDemo = () => {
4749
select: '選擇日期',
4850
confirm: '確定',
4951
ref: '使用 Ref 上的方法',
52+
title: '搭配 Ref 使用自定義头',
5053
},
5154
'en-US': {
5255
single: 'Select a single date',
@@ -62,6 +65,7 @@ const CalendarDemo = () => {
6265
select: 'Select',
6366
confirm: 'Confirm',
6467
ref: 'Use ref',
68+
title: 'Custom title',
6569
},
6670
})
6771

@@ -71,36 +75,28 @@ const CalendarDemo = () => {
7175
<ScrollView className={`demo ${Taro.getEnv() === 'WEB' ? 'web' : ''}`}>
7276
<View className="h2">{translated.single}</View>
7377
<Demo1 />
74-
7578
<View className="h2">{translated.multiple}</View>
7679
<Demo2 />
77-
7880
<View className="h2">{translated.range}</View>
7981
<Demo3 />
80-
8182
<View className="h2">{translated.week}</View>
8283
<Demo4 />
83-
8484
<View className="h2">{translated.control}</View>
8585
<Demo5 />
86-
8786
<View className="h2">{translated.renderDay}</View>
8887
<Demo6 />
89-
9088
<View className="h2">{translated.firstDay}</View>
9189
<Demo7 />
92-
9390
<View className="h2">{translated.customRange}</View>
9491
<Demo8 />
95-
9692
<View className="h2">{translated.disable}</View>
9793
<Demo9 />
98-
9994
<View className="h2">{translated.popup}</View>
10095
<Demo10 />
101-
10296
<View className="h2">{translated.ref}</View>
10397
<Demo11 />
98+
<View className="h2">{translated.title}</View>
99+
<Demo12 />
104100
</ScrollView>
105101
</>
106102
)

src/packages/calendarcard/demo.tsx

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Demo8 from './demos/h5/demo8'
1111
import Demo9 from './demos/h5/demo9'
1212
import Demo10 from './demos/h5/demo10'
1313
import Demo11 from './demos/h5/demo11'
14+
import Demo12 from './demos/h5/demo12'
1415

1516
const CalendarDemo = () => {
1617
const [translated] = useTranslate({
@@ -28,6 +29,7 @@ const CalendarDemo = () => {
2829
select: '选择日期',
2930
confirm: '确定',
3031
ref: '使用 Ref 上的方法',
32+
title: '搭配 Ref 使用自定义头',
3133
},
3234
'zh-TW': {
3335
single: '選擇單個日期',
@@ -43,6 +45,7 @@ const CalendarDemo = () => {
4345
select: '選擇日期',
4446
confirm: '確定',
4547
ref: '使用 Ref 上的方法',
48+
title: '搭配 Ref 使用自定義头',
4649
},
4750
'en-US': {
4851
single: 'Select a single date',
@@ -58,6 +61,7 @@ const CalendarDemo = () => {
5861
select: 'Select',
5962
confirm: 'Confirm',
6063
ref: 'Use ref',
64+
title: 'Custom title',
6165
},
6266
})
6367

@@ -66,36 +70,28 @@ const CalendarDemo = () => {
6670
<div className="demo">
6771
<h2>{translated.single}</h2>
6872
<Demo1 />
69-
7073
<h2>{translated.multiple}</h2>
7174
<Demo2 />
72-
7375
<h2>{translated.range}</h2>
7476
<Demo3 />
75-
7677
<h2>{translated.week}</h2>
7778
<Demo4 />
78-
7979
<h2>{translated.control}</h2>
8080
<Demo5 />
81-
8281
<h2>{translated.renderDay}</h2>
8382
<Demo6 />
84-
8583
<h2>{translated.firstDay}</h2>
8684
<Demo7 />
87-
8885
<h2>{translated.customRange}</h2>
8986
<Demo8 />
90-
9187
<h2>{translated.disable}</h2>
9288
<Demo9 />
93-
9489
<h2>{translated.popup}</h2>
9590
<Demo10 />
96-
9791
<h2>{translated.ref}</h2>
9892
<Demo11 />
93+
<h2>{translated.title}</h2>
94+
<Demo12 />
9995
</div>
10096
</>
10197
)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import React, { useRef, useState } from 'react'
2+
import { CalendarCard, CalendarCardRef } from '@nutui/nutui-react'
3+
4+
const date = new Date('2025-01-01')
5+
6+
const Demo1 = () => {
7+
const [dateStr, setDate] = useState(date.getMonth())
8+
const onPageChange = (val: any) => {
9+
console.log('onPageChange', val)
10+
setDate(val.month)
11+
}
12+
const CalendarCardRef = useRef<CalendarCardRef>(null)
13+
14+
return (
15+
<CalendarCard
16+
ref={CalendarCardRef}
17+
defaultValue={date}
18+
onPageChange={onPageChange}
19+
title={
20+
<div onClick={() => CalendarCardRef.current?.jump(-1)}>
21+
自定义头,当前2025-01-01,展示月份-1:{dateStr}
22+
</div>
23+
}
24+
/>
25+
)
26+
}
27+
export default Demo1
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React, { useRef, useState } from 'react'
2+
import { CalendarCard, CalendarCardRef } from '@nutui/nutui-react-taro'
3+
import { View } from '@tarojs/components'
4+
5+
const date = new Date('2025-01-01')
6+
7+
const Demo1 = () => {
8+
const [dateStr, setDate] = useState(date.getMonth())
9+
const onPageChange = (val: any) => {
10+
console.log('onPageChange', val)
11+
setDate(val.month)
12+
}
13+
const CalendarCardRef = useRef<CalendarCardRef>(null)
14+
15+
return (
16+
<CalendarCard
17+
ref={CalendarCardRef}
18+
defaultValue={date}
19+
onPageChange={onPageChange}
20+
title={
21+
<View onClick={() => CalendarCardRef.current?.jump(-1)}>
22+
自定义头,当前2025-01-01,展示月份-1:{dateStr}
23+
</View>
24+
}
25+
/>
26+
)
27+
}
28+
export default Demo1

src/packages/calendarcard/doc.en-US.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,22 @@ import { CalendarCard } from '@nutui/nutui-react'
9898

9999
:::
100100

101+
### Use ref and custom title
102+
103+
:::demo
104+
105+
<CodeBlock src='h5/demo12.tsx'></CodeBlock>
106+
107+
:::
108+
101109
## CalendarCard
102110

103111
### Props
104112

105113
| Property | Description | Type | Default |
106114
| --- | --- | --- | --- |
107115
| type | Type, single date `single`, multiple dates `multiple`, date range `range`, week selection `week` | `string` | `single` |
116+
| title | Custom title | `ReactNode` | `-` |
108117
| defaultValue | Default value, choose string format for date, choose Array format for interval | `Date \| Date[]` | `-` |
109118
| startDate | Limit range start date | `Date` | `-` |
110119
| endDate | Limit range end date | `Date` | `-` |

src/packages/calendarcard/doc.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,22 @@ import { CalendarCard } from '@nutui/nutui-react'
9898

9999
:::
100100

101+
### 搭配 Ref 使用自定义头
102+
103+
:::demo
104+
105+
<CodeBlock src='h5/demo12.tsx'></CodeBlock>
106+
107+
:::
108+
101109
## CalendarCard
102110

103111
### Props
104112

105113
| 属性 | 说明 | 类型 | 默认值 |
106114
| --- | --- | --- | --- |
107115
| type | 类型,单个日期 `single`,多个日期 `multiple`,日期范围 `range`,周选择 `week` | `string` | `single` |
116+
| title | 自定义标题 | `ReactNode` | `-` |
108117
| defaultValue | 默认值,单个日期 Date 格式,多个日期/范围选择 Date[] 格式 | `Date \| Date[]` | `-` |
109118
| startDate | 限制范围开始日期 | `Date` | `-` |
110119
| endDate | 限制范围结束日期 | `Date` | `-` |

src/packages/calendarcard/doc.taro.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,22 @@ import { CalendarCard } from '@nutui/nutui-react-taro'
9898

9999
:::
100100

101+
### 搭配 Ref 使用自定义头
102+
103+
:::demo
104+
105+
<CodeBlock src='taro/demo12.tsx'></CodeBlock>
106+
107+
:::
108+
101109
## CalendarCard
102110

103111
### Props
104112

105113
| 属性 | 说明 | 类型 | 默认值 |
106114
| --- | --- | --- | --- |
107115
| type | 类型,单个日期 `single`,多个日期 `multiple`,日期范围 `range`,周选择 `week` | `string` | `single` |
116+
| title | 自定义标题 | `ReactNode` | `-` |
108117
| defaultValue | 默认值,单个日期 Date 格式,多个日期/范围选择 Date[] 格式 | `Date \| Date[]` | `-` |
109118
| startDate | 限制范围开始日期 | `Date` | `-` |
110119
| endDate | 限制范围结束日期 | `Date` | `-` |

src/packages/calendarcard/doc.zh-TW.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,22 @@ import { CalendarCard } from '@nutui/nutui-react'
9898

9999
:::
100100

101+
### 搭配 Ref 使用自定義头
102+
103+
:::demo
104+
105+
<CodeBlock src='h5/demo12.tsx'></CodeBlock>
106+
107+
:::
108+
101109
## CalendarCard
102110

103111
### Props
104112

105113
| 屬性 | 說明 | 類型 | 默認值 |
106114
| --- | --- | --- | --- |
107115
| type | 類型,單個日期 `single`,多個日期 `multiple`,日期範圍 `range`,周選擇 `week` | `string` | `single` |
116+
| title | 自定义标题 | `ReactNode` | `-` |
108117
| defaultValue | 默認值,單個日期 Date 格式,多個日期/範圍選擇 Date[] 格式 | `Date \| Date[]` | `-` |
109118
| startDate | 限製範圍開始日期 | `Date` | `-` |
110119
| endDate | 限製範圍結束日期 | `Date` | `-` |

0 commit comments

Comments
 (0)