Skip to content

Commit 3364ee6

Browse files
authored
feat(cell): add clickable prop to support click style feedback (#2527)
* feat(cell): add clickable * fix: demo
1 parent 7482e17 commit 3364ee6

File tree

9 files changed

+34
-2
lines changed

9 files changed

+34
-2
lines changed

src/packages/cell/cell.scss

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,24 @@
3535
font-size: $cell-extra-font-size;
3636
color: $cell-extra-color;
3737
}
38+
&:active::before {
39+
opacity: 0.1;
40+
}
41+
&-clickable {
42+
cursor: pointer;
43+
&::before {
44+
position: absolute;
45+
top: 50%;
46+
left: 50%;
47+
width: 100%;
48+
height: 100%;
49+
background-color: $black;
50+
border: inherit;
51+
border-color: $black;
52+
border-radius: inherit;
53+
transform: translate(-50%, -50%);
54+
opacity: 0;
55+
content: ' ';
56+
}
57+
}
3858
}

src/packages/cell/cell.taro.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface CellProps extends BasicComponent {
1010
extra: ReactNode
1111
radius: string | number
1212
align: 'flex-start' | 'center' | 'flex-end'
13+
clickable: boolean
1314
onClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
1415
}
1516

@@ -20,6 +21,7 @@ const defaultProps = {
2021
extra: null,
2122
radius: '6px',
2223
align: 'flex-start',
24+
clickable: false,
2325
onClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {},
2426
} as CellProps
2527

@@ -39,6 +41,7 @@ export const Cell: FunctionComponent<
3941
align,
4042
className,
4143
style,
44+
clickable,
4245
...rest
4346
} = {
4447
...defaultProps,
@@ -63,7 +66,7 @@ export const Cell: FunctionComponent<
6366
}
6467
return (
6568
<div
66-
className={classNames(classPrefix, className)}
69+
className={`${classNames(classPrefix, className, clickable ? `${classPrefix}-clickable` : '')}`}
6770
onClick={(event) => handleClick(event)}
6871
style={baseStyle}
6972
{...rest}

src/packages/cell/cell.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface CellProps extends BasicComponent {
1010
extra: ReactNode
1111
radius: string | number
1212
align: 'flex-start' | 'center' | 'flex-end'
13+
clickable: boolean
1314
onClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void
1415
}
1516

@@ -20,6 +21,7 @@ const defaultProps = {
2021
extra: null,
2122
radius: '6px',
2223
align: 'flex-start',
24+
clickable: false,
2325
onClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {},
2426
} as CellProps
2527

@@ -31,6 +33,7 @@ export const Cell: FunctionComponent<
3133
const ctx = useContext(CellGroupContext)
3234
const {
3335
children,
36+
clickable,
3437
onClick,
3538
title,
3639
description,
@@ -63,7 +66,7 @@ export const Cell: FunctionComponent<
6366
}
6467
return (
6568
<div
66-
className={classNames(classPrefix, className)}
69+
className={`${classNames(classPrefix, className, clickable ? `${classPrefix}-clickable` : '')}`}
6770
onClick={(event) => handleClick(event)}
6871
style={baseStyle}
6972
{...rest}

src/packages/cell/demos/h5/demo1.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const Demo1 = () => {
1212
<Cell title="我是标题" extra="描述文字" />
1313
<Cell title="我是标题" description="我是描述" extra="描述文字" />
1414
<Cell
15+
clickable
1516
title="点击测试"
1617
onClick={(
1718
event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>

src/packages/cell/demos/taro/demo1.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const Demo1 = () => {
1313
<Cell title="我是标题" description="我是描述" extra="描述文字" />
1414
<Cell
1515
title="点击测试"
16+
clickable
1617
onClick={(
1718
event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>
1819
) => testClick(event)}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ The 'divider' property allows you to keep the lower edge from being displayed be
9191
| extra | Extra | `ReactNode` | `-` |
9292
| radius | Corner radius | `string` | `6px` |
9393
| align | Alignment in the vertical direction | `flex-start` \| `center` \| `flex-end` | `flex-start` |
94+
| clickable | click style feedback | `boolean` | `false` |
9495
| onClick | Emitted when cell is clicked | `onClick: (event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>) => void` | `false` |
9596

9697
## Theming

src/packages/cell/doc.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ import { Cell } from '@nutui/nutui-react'
9393
| extra | 右侧描述 | `ReactNode` | `-` |
9494
| radius | 圆角半径 | `string` | `6px` |
9595
| align | 纵轴方向上的对齐方式 | `flex-start` \| `center` \| `flex-end` | `flex-start` |
96+
| clickable | 点击的样式反馈 | `boolean` | `false` |
9697
| onClick | 点击事件 | `onClick: (event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>) => void` | `false` |
9798

9899
## 主题定制

src/packages/cell/doc.taro.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import { Cell } from '@nutui/nutui-react-taro'
9292
| extra | 右侧描述 | `ReactNode` | `-` |
9393
| radius | 圆角半径 | `string` | `6px` |
9494
| align | 纵轴方向上的对齐方式 | `flex-start` \| `center` \| `flex-end` | `flex-start` |
95+
| clickable | 点击的样式反馈 | `boolean` | `false` |
9596
| onClick | 点击事件 | `onClick: (event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>) => void` | `false` |
9697

9798
## 主题定制

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ import { Cell } from '@nutui/nutui-react'
9393
| extra | 右側描述 | `ReactNode` | `-` |
9494
| radius | 圓角半徑 | `string` | `6px` |
9595
| align | 縱軸方向上的對齊方式 | `flex-start` \| `center` \| `flex-end` | `flex-start` |
96+
| clickable | 點擊的樣式反饋 | `boolean` | `false` |
9697
| onClick | 點擊事件 | `onClick: (event: React.MouseEvent<HTMLDivElement, globalThis.MouseEvent>) => void` | `false` |
9798

9899
## 主題定製

0 commit comments

Comments
 (0)