@gmfe/react 2.14.29 → 2.14.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +179 -0
- package/package.json +3 -3
- package/src/component/affix/README.md +54 -0
- package/src/component/box/README.md +142 -0
- package/src/component/button/README.md +90 -0
- package/src/component/calendar/README.md +98 -0
- package/src/component/carousel/README.md +51 -0
- package/src/component/cascader/README.md +139 -0
- package/src/component/checkbox/README.md +120 -0
- package/src/component/collapse/README.md +80 -0
- package/src/component/color_picker/README.md +50 -0
- package/src/component/date_picker/README.md +144 -0
- package/src/component/date_range_picker/README.md +126 -0
- package/src/component/dialog/README.md +149 -0
- package/src/component/divider/README.md +41 -0
- package/src/component/drawer/README.md +83 -0
- package/src/component/drop_down/README.md +105 -0
- package/src/component/drop_select/README.md +146 -0
- package/src/component/dropper/README.md +55 -0
- package/src/component/editable_text/README.md +68 -0
- package/src/component/filter_select/README.md +104 -0
- package/src/component/flex/README.md +88 -0
- package/src/component/flip_number/README.md +53 -0
- package/src/component/form/README.md +199 -0
- package/src/component/function_set/README.md +93 -0
- package/src/component/grid/README.md +93 -0
- package/src/component/icon_down_up/README.md +43 -0
- package/src/component/image_preview/README.md +57 -0
- package/src/component/img_uploader/README.md +91 -0
- package/src/component/input/README.md +49 -0
- package/src/component/input_number/README.md +93 -0
- package/src/component/layout_root/README.md +181 -0
- package/src/component/lazy_img/README.md +59 -0
- package/src/component/level_list/README.md +75 -0
- package/src/component/level_select/README.md +78 -0
- package/src/component/list/README.md +96 -0
- package/src/component/loading/README.md +116 -0
- package/src/component/mask/README.md +62 -0
- package/src/component/modal/README.md +155 -0
- package/src/component/more_select/README.md +185 -0
- package/src/component/nav/README.md +101 -0
- package/src/component/nprogress/README.md +135 -0
- package/src/component/pagination/README.md +87 -0
- package/src/component/picture_preview/README.md +50 -0
- package/src/component/popover/README.md +146 -0
- package/src/component/popup/README.md +121 -0
- package/src/component/price/README.md +72 -0
- package/src/component/progress/README.md +98 -0
- package/src/component/progress_circle/README.md +92 -0
- package/src/component/radio/README.md +101 -0
- package/src/component/recommend_input/README.md +75 -0
- package/src/component/select/README.md +120 -0
- package/src/component/selection/README.md +87 -0
- package/src/component/sheet/README.md +176 -0
- package/src/component/steps/README.md +55 -0
- package/src/component/storage/README.md +83 -0
- package/src/component/switch/README.md +85 -0
- package/src/component/table_select/README.md +92 -0
- package/src/component/tabs/README.md +85 -0
- package/src/component/time_span/README.md +112 -0
- package/src/component/tip/README.md +105 -0
- package/src/component/tool_tip/README.md +84 -0
- package/src/component/transfer/README.md +98 -0
- package/src/component/transfer_v2/README.md +85 -0
- package/src/component/tree/README.md +99 -0
- package/src/component/tree_v2/README.md +99 -0
- package/src/component/uploader/README.md +104 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Cascader
|
|
2
|
+
|
|
3
|
+
## 简介
|
|
4
|
+
级联选择组件 - 支持多级数据联动选择,可搜索过滤,提供 Cascader(基础级联)和 CascaderSelect(可选多级值)两个组件。
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
已包含在 `@gmfe/react` 中,无需额外安装。
|
|
8
|
+
|
|
9
|
+
## 使用
|
|
10
|
+
```jsx
|
|
11
|
+
import { Cascader } from '@gmfe/react'
|
|
12
|
+
|
|
13
|
+
const data = [
|
|
14
|
+
{
|
|
15
|
+
value: '110000',
|
|
16
|
+
name: '北京市',
|
|
17
|
+
children: [
|
|
18
|
+
{
|
|
19
|
+
value: '150600000000',
|
|
20
|
+
name: '东城区',
|
|
21
|
+
children: [
|
|
22
|
+
{ value: '150600800000', name: '东单' },
|
|
23
|
+
{ value: '150600900000', name: '东四' }
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
<Cascader
|
|
31
|
+
data={data}
|
|
32
|
+
value={selected}
|
|
33
|
+
onChange={ids => setSelected(ids)}
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## API
|
|
38
|
+
|
|
39
|
+
### Cascader Props
|
|
40
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
41
|
+
|------|------|------|--------|------|
|
|
42
|
+
| data | 级联数据,格式 `[{value, name, children: [{...}]}]` | `array` | - | 是 |
|
|
43
|
+
| value | 当前选中的值数组,如 `[1, 2, 3]` | `array` | - | 否 |
|
|
44
|
+
| defaultValue | 默认选中的值数组 | `array` | - | 否 |
|
|
45
|
+
| onChange | 选择变化回调,参数为选中的值数组 | `func` | `_.noop` | 否 |
|
|
46
|
+
| inputProps | 传递给内部 input 的属性(没有 children 时有效) | `object` | `{}` | 否 |
|
|
47
|
+
| valueRender | 自定义显示值的渲染函数 | `func` | - | 否 |
|
|
48
|
+
| children | 自定义触发元素 | `any` | - | 否 |
|
|
49
|
+
| disabled | 是否禁用 | `bool` | `false` | 否 |
|
|
50
|
+
| filtrable | 是否可搜索 | `bool` | - | 否 |
|
|
51
|
+
| onlyChildSelectable | 是否只允许选择末级节点(有 children 则清空输入框) | `bool` | `false` | 否 |
|
|
52
|
+
| popoverStyle | 弹出层样式 | `object` | - | 否 |
|
|
53
|
+
| className | 弹出层自定义类名 | `string` | - | 否 |
|
|
54
|
+
| style | 弹出层自定义样式 | `object` | - | 否 |
|
|
55
|
+
|
|
56
|
+
### CascaderSelect Props
|
|
57
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
58
|
+
|------|------|------|--------|------|
|
|
59
|
+
| data | 级联数据,格式同 Cascader | `array` | - | 是 |
|
|
60
|
+
| selected | 已选中的项数组(每项为完整的 value 对象数组) | `array` | - | 否 |
|
|
61
|
+
| onSelect | 选择回调,单选返回单个值,多选返回数组 | `func` | - | 是 |
|
|
62
|
+
| multiple | 是否多选 | `bool` | - | 否 |
|
|
63
|
+
| selectedRender | 自定义已选项渲染函数 | `func` | - | 否 |
|
|
64
|
+
| inputProps | 传递给内部 Cascader input 的属性 | `object` | `{}` | 否 |
|
|
65
|
+
| disabled | 是否禁用 | `bool` | `false` | 否 |
|
|
66
|
+
| valueRender | 自定义 Cascader 显示值渲染函数 | `func` | - | 否 |
|
|
67
|
+
| filtrable | 是否可搜索 | `bool` | `false` | 否 |
|
|
68
|
+
| onlyChildSelectable | 是否只允许选择末级节点 | `bool` | `false` | 否 |
|
|
69
|
+
|
|
70
|
+
## 示例
|
|
71
|
+
|
|
72
|
+
### 基础级联选择
|
|
73
|
+
```jsx
|
|
74
|
+
const data = [
|
|
75
|
+
{
|
|
76
|
+
value: '110000',
|
|
77
|
+
name: '北京市',
|
|
78
|
+
children: [
|
|
79
|
+
{
|
|
80
|
+
value: '150600000000',
|
|
81
|
+
name: '东城区',
|
|
82
|
+
children: [
|
|
83
|
+
{ value: '150600800000', name: '东单' },
|
|
84
|
+
{ value: '150600900000', name: '东四' }
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
|
|
91
|
+
<Cascader
|
|
92
|
+
data={data}
|
|
93
|
+
value={selected}
|
|
94
|
+
onChange={ids => setSelected(ids)}
|
|
95
|
+
/>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 可搜索级联
|
|
99
|
+
```jsx
|
|
100
|
+
<Cascader
|
|
101
|
+
filtrable
|
|
102
|
+
data={data}
|
|
103
|
+
value={selected}
|
|
104
|
+
onChange={ids => setSelected(ids)}
|
|
105
|
+
/>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 只允许选择末级节点
|
|
109
|
+
```jsx
|
|
110
|
+
<Cascader
|
|
111
|
+
filtrable
|
|
112
|
+
onlyChildSelectable
|
|
113
|
+
data={data}
|
|
114
|
+
value={selected}
|
|
115
|
+
onChange={ids => setSelected(ids)}
|
|
116
|
+
/>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### CascaderSelect 多选
|
|
120
|
+
```jsx
|
|
121
|
+
import { CascaderSelect } from '@gmfe/react'
|
|
122
|
+
|
|
123
|
+
<CascaderSelect
|
|
124
|
+
multiple
|
|
125
|
+
data={data}
|
|
126
|
+
selected={selectedItems}
|
|
127
|
+
onSelect={items => setSelectedItems(items)}
|
|
128
|
+
/>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## 注意事项
|
|
132
|
+
- `data` 数据格式要求每项包含 `value`、`name`,子级数据放在 `children` 中
|
|
133
|
+
- `value` 属性为各级 value 组成的数组,如选中"北京市 > 东城区 > 东单"则为 `['110000', '150600000000', '150600800000']`
|
|
134
|
+
- 启用 `filtrable` 后支持中文搜索和拼音搜索(全拼、首字母)
|
|
135
|
+
- `onlyChildSelectable` 开启后,选择有 children 的节点会清空输入框
|
|
136
|
+
- CascaderSelect 支持单选和多选模式
|
|
137
|
+
- CascaderSelect 的 `selected` 是完整的值对象数组(每项为各级对象的数组),而非简单的 value
|
|
138
|
+
- 支持键盘上下键和回车键操作
|
|
139
|
+
- 组件会深拷贝传入的 `data` 并在内部维护 `_path` 属性
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Checkbox
|
|
2
|
+
|
|
3
|
+
## 简介
|
|
4
|
+
复选框组件 - 用于多选场景,支持单个使用和分组使用(CheckboxGroup)。
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
已包含在 `@gmfe/react` 中,无需额外安装。
|
|
8
|
+
|
|
9
|
+
## 使用
|
|
10
|
+
```jsx
|
|
11
|
+
import { Checkbox, CheckboxGroup } from '@gmfe/react'
|
|
12
|
+
|
|
13
|
+
// 单个使用
|
|
14
|
+
<Checkbox checked onChange={onChange}>选项</Checkbox>
|
|
15
|
+
|
|
16
|
+
// 分组使用
|
|
17
|
+
<CheckboxGroup name='city' value={value} onChange={setValue}>
|
|
18
|
+
<Checkbox value={1}>广州</Checkbox>
|
|
19
|
+
<Checkbox value={2}>深圳</Checkbox>
|
|
20
|
+
<Checkbox value={3}>成都</Checkbox>
|
|
21
|
+
</CheckboxGroup>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## API
|
|
25
|
+
|
|
26
|
+
### Checkbox Props
|
|
27
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
28
|
+
|------|------|------|--------|------|
|
|
29
|
+
| checked | 是否选中 | `bool` | - | 否 |
|
|
30
|
+
| onChange | 变化回调 | `func` | `_.noop` | 否 |
|
|
31
|
+
| value | 选项值,配合 CheckboxGroup 使用 | `any` | - | 否 |
|
|
32
|
+
| disabled | 是否禁用 | `bool` | - | 否 |
|
|
33
|
+
| children | 显示文本 | `any` | - | 否 |
|
|
34
|
+
| indeterminate | 半选状态(仅 checked 为 false 时有效,只控制样式) | `bool` | - | 否 |
|
|
35
|
+
| inline | 是否行内显示 | `bool` | - | 否 |
|
|
36
|
+
| block | 是否整行可点击 | `bool` | - | 否 |
|
|
37
|
+
| col | 配合 group 使用,设置列数下的宽度占比 | `number` | - | 否 |
|
|
38
|
+
| name | input name 属性 | `string` | - | 否 |
|
|
39
|
+
| className | 自定义类名 | `string` | - | 否 |
|
|
40
|
+
| style | 自定义样式 | `object` | - | 否 |
|
|
41
|
+
|
|
42
|
+
### CheckboxGroup Props
|
|
43
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
44
|
+
|------|------|------|--------|------|
|
|
45
|
+
| name | 表单名称,必填 | `string` | - | 是 |
|
|
46
|
+
| value | 已选中的值数组 | `array` | - | 是 |
|
|
47
|
+
| onChange | 变化回调,参数为最新的值数组 | `func` | `_.noop` | 否 |
|
|
48
|
+
| inline | 是否行内显示 | `bool` | - | 否 |
|
|
49
|
+
| block | 是否整行可点击 | `bool` | - | 否 |
|
|
50
|
+
| col | 列数,子元素会按百分比分配宽度 | `number` | - | 否 |
|
|
51
|
+
| children | Checkbox 子组件 | `any` | - | 否 |
|
|
52
|
+
| className | 自定义类名 | `string` | - | 否 |
|
|
53
|
+
| style | 自定义样式 | `object` | - | 否 |
|
|
54
|
+
|
|
55
|
+
## 示例
|
|
56
|
+
|
|
57
|
+
### 基础用法
|
|
58
|
+
```jsx
|
|
59
|
+
<Checkbox checked>选中状态</Checkbox>
|
|
60
|
+
<Checkbox>未选中状态</Checkbox>
|
|
61
|
+
<Checkbox indeterminate>半选状态</Checkbox>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 禁用状态
|
|
65
|
+
```jsx
|
|
66
|
+
<Checkbox checked disabled>选中禁用</Checkbox>
|
|
67
|
+
<Checkbox disabled>未选中禁用</Checkbox>
|
|
68
|
+
<Checkbox indeterminate disabled>半选禁用</Checkbox>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 行内显示
|
|
72
|
+
```jsx
|
|
73
|
+
<Checkbox checked inline>选项1</Checkbox>
|
|
74
|
+
<Checkbox inline>选项2</Checkbox>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 整行可点击
|
|
78
|
+
```jsx
|
|
79
|
+
<Checkbox block checked={checked} onChange={() => setChecked(!checked)}>
|
|
80
|
+
整行都可以点击
|
|
81
|
+
</Checkbox>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 分组使用
|
|
85
|
+
```jsx
|
|
86
|
+
<CheckboxGroup
|
|
87
|
+
name='city'
|
|
88
|
+
value={[1, 4]}
|
|
89
|
+
onChange={value => console.log(value)}
|
|
90
|
+
>
|
|
91
|
+
<Checkbox value={1}>广州</Checkbox>
|
|
92
|
+
<Checkbox value={2} disabled>深圳</Checkbox>
|
|
93
|
+
<Checkbox value={3}>成都</Checkbox>
|
|
94
|
+
<Checkbox value={4} disabled>东莞</Checkbox>
|
|
95
|
+
</CheckboxGroup>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 分组带列数
|
|
99
|
+
```jsx
|
|
100
|
+
<CheckboxGroup
|
|
101
|
+
name='city'
|
|
102
|
+
value={value}
|
|
103
|
+
onChange={setValue}
|
|
104
|
+
col={2}
|
|
105
|
+
inline
|
|
106
|
+
>
|
|
107
|
+
<Checkbox value={1}>广州</Checkbox>
|
|
108
|
+
<Checkbox value={2}>深圳</Checkbox>
|
|
109
|
+
<Checkbox value={3}>成都</Checkbox>
|
|
110
|
+
<Checkbox value={4}>东莞</Checkbox>
|
|
111
|
+
</CheckboxGroup>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 注意事项
|
|
115
|
+
- `CheckboxGroup` 的 `name` 属性为必填项
|
|
116
|
+
- `CheckboxGroup` 的 `value` 属性接收的是已选值的数组(非 Checkbox 的 value 对象)
|
|
117
|
+
- `indeterminate` 半选状态只影响样式,`checked` 为 `false` 时才生效
|
|
118
|
+
- `block` 模式下整行都可以触发选中/取消选中
|
|
119
|
+
- `col` 属性与 `CheckboxGroup` 配合使用,按百分比自动分配每列宽度
|
|
120
|
+
- 非行内模式下,每个 Checkbox 独占一行
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Collapse
|
|
2
|
+
|
|
3
|
+
## 简介
|
|
4
|
+
折叠面板组件 - 通过 `in` 属性控制内容的展开和折叠,带有高度和透明度的过渡动画效果。
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
已包含在 `@gmfe/react` 中,无需额外安装。
|
|
8
|
+
|
|
9
|
+
## 使用
|
|
10
|
+
```jsx
|
|
11
|
+
import Collapse from '@gmfe/react/lib/collapse'
|
|
12
|
+
|
|
13
|
+
<Collapse in={true}>
|
|
14
|
+
<div>折叠的内容</div>
|
|
15
|
+
</Collapse>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## API
|
|
19
|
+
|
|
20
|
+
### Props
|
|
21
|
+
|
|
22
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
23
|
+
|------|------|------|--------|------|
|
|
24
|
+
| in | 控制展开/折叠状态,`true` 为展开,`false` 为折叠 | `bool` | - | 是 |
|
|
25
|
+
| children | 折叠面板中的内容 | `any` | - | 否 |
|
|
26
|
+
| className | 自定义类名 | `string` | - | 否 |
|
|
27
|
+
| style | 自定义内联样式 | `object` | - | 否 |
|
|
28
|
+
|
|
29
|
+
## 示例
|
|
30
|
+
|
|
31
|
+
### 基础用法
|
|
32
|
+
```jsx
|
|
33
|
+
import React, { useState } from 'react'
|
|
34
|
+
import Collapse from '@gmfe/react/lib/collapse'
|
|
35
|
+
|
|
36
|
+
const App = () => {
|
|
37
|
+
const [isExpanded, setIsExpanded] = useState(true)
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<div>
|
|
41
|
+
<button onClick={() => setIsExpanded(!isExpanded)}>
|
|
42
|
+
{isExpanded ? '收起' : '展开'}
|
|
43
|
+
</button>
|
|
44
|
+
<Collapse in={isExpanded}>
|
|
45
|
+
<div>这是可以折叠的内容区域</div>
|
|
46
|
+
</Collapse>
|
|
47
|
+
</div>
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 配合自定义样式
|
|
53
|
+
```jsx
|
|
54
|
+
import React, { useState } from 'react'
|
|
55
|
+
import Collapse from '@gmfe/react/lib/collapse'
|
|
56
|
+
|
|
57
|
+
const App = () => {
|
|
58
|
+
const [isExpanded, setIsExpanded] = useState(false)
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<div>
|
|
62
|
+
<button onClick={() => setIsExpanded(!isExpanded)}>
|
|
63
|
+
{isExpanded ? '收起详情' : '查看详情'}
|
|
64
|
+
</button>
|
|
65
|
+
<Collapse in={isExpanded}>
|
|
66
|
+
<div style={{ padding: '12px', background: '#f5f5f5' }}>
|
|
67
|
+
这里是详情内容,点击按钮可以切换展开和折叠状态。
|
|
68
|
+
</div>
|
|
69
|
+
</Collapse>
|
|
70
|
+
</div>
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 注意事项
|
|
76
|
+
- `in` 属性为必填项,必须由父组件手动控制展开/折叠状态
|
|
77
|
+
- 展开时过渡动画持续 0.5s,使用 ease 缓动曲线
|
|
78
|
+
- 折叠状态下 `overflow` 被设置为 `hidden`,高度为 0,透明度为 0
|
|
79
|
+
- 组件根节点会添加 `gm-collapse` 类名,可通过 `className` 进行覆盖或扩展
|
|
80
|
+
- `style` 属性会与组件内部的过渡样式进行合并,同名属性以 `style` 为准
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# ColorPicker
|
|
2
|
+
|
|
3
|
+
## 简介
|
|
4
|
+
颜色选择器组件 - 提供预设颜色和自定义颜色选择的弹出式颜色选择器
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
已包含在 `@gmfe/react` 中,无需额外安装。
|
|
8
|
+
|
|
9
|
+
## 使用
|
|
10
|
+
```jsx
|
|
11
|
+
import { ColorPicker } from '@gmfe/react'
|
|
12
|
+
|
|
13
|
+
<ColorPicker color={color} onChange={value => setColor(value)}>
|
|
14
|
+
<button>选择颜色</button>
|
|
15
|
+
</ColorPicker>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## API
|
|
19
|
+
|
|
20
|
+
### Props
|
|
21
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
22
|
+
|------|------|------|--------|------|
|
|
23
|
+
| color | 当前选中的颜色值(十六进制格式) | `string` | - | 否 |
|
|
24
|
+
| onChange | 颜色变化回调,参数为十六进制颜色值 | `function` | `_.noop` | 否 |
|
|
25
|
+
| children | 触发器元素 | `any` | - | 是 |
|
|
26
|
+
|
|
27
|
+
### 预设颜色
|
|
28
|
+
组件内置以下预设颜色:
|
|
29
|
+
- 红色 `#e02020`
|
|
30
|
+
- 橙色 `#fa6400`
|
|
31
|
+
- 黄色 `#f7b500`
|
|
32
|
+
- 绿色 `#6dd400`
|
|
33
|
+
- 蓝色 `#0091ff`
|
|
34
|
+
- 紫色 `#b620e0`
|
|
35
|
+
- 灰色 `#6d7278`
|
|
36
|
+
|
|
37
|
+
## 示例
|
|
38
|
+
|
|
39
|
+
### 基础用法
|
|
40
|
+
```jsx
|
|
41
|
+
<ColorPicker color="#ff0000" onChange={value => setColor(value)}>
|
|
42
|
+
<button>颜色选择器: {color}</button>
|
|
43
|
+
</ColorPicker>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 注意事项
|
|
47
|
+
- 组件内部使用 `Popover` 以点击方式触发弹出
|
|
48
|
+
- 支持手动输入十六进制颜色值
|
|
49
|
+
- 支持通过系统取色器选择自定义颜色
|
|
50
|
+
- 点击"确定"后触发 `onChange`,点击"取消"关闭弹窗
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# DatePicker
|
|
2
|
+
|
|
3
|
+
## 简介
|
|
4
|
+
日期选择组件 - 提供日历弹出层选择日期,支持日期范围限制、不可选日期设置、自定义展示格式和时间选择功能。
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
已包含在 `@gmfe/react` 中,无需额外安装。
|
|
8
|
+
|
|
9
|
+
## 使用
|
|
10
|
+
```jsx
|
|
11
|
+
import { DatePicker } from '@gmfe/react'
|
|
12
|
+
|
|
13
|
+
<DatePicker
|
|
14
|
+
date={date}
|
|
15
|
+
placeholder='请选择日期'
|
|
16
|
+
onChange={date => setDate(date)}
|
|
17
|
+
/>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## API
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
24
|
+
|------|------|------|--------|------|
|
|
25
|
+
| date | 当前选中的日期,Date 对象 | `object` | - | 否 |
|
|
26
|
+
| onChange | 日期选择回调,参数为 Date 对象 | `func` | - | 是 |
|
|
27
|
+
| placeholder | 占位文字 | `string` | - | 否 |
|
|
28
|
+
| disabled | 是否禁用 | `bool` | - | 否 |
|
|
29
|
+
| min | 可选的最小日期,Date 对象 | `object` | - | 否 |
|
|
30
|
+
| max | 可选的最大日期,Date 对象 | `object` | - | 否 |
|
|
31
|
+
| disabledDate | 定义不可选择的日期,参数为 Date 对象,返回 true 不可选 | `func` | - | 否 |
|
|
32
|
+
| renderDate | 自定义日期显示格式,参数为 Date 对象,返回展示内容 | `func` | - | 否 |
|
|
33
|
+
| renderBottom | 添加底部自定义组件 | `element` | - | 否 |
|
|
34
|
+
| popoverType | 弹出层触发方式 | `'focus' \| 'realFocus'` | - | 否 |
|
|
35
|
+
| enabledTimeSelect | 是否启用时间选择 | `bool` | `false` | 否 |
|
|
36
|
+
| timeLimit | 时间选择限制配置 | `object` | - | 否 |
|
|
37
|
+
| timeLimit.defaultTime | 默认时间,HH:mm 格式 | `object` | - | 否 |
|
|
38
|
+
| timeLimit.disabledSpan | 禁用时间段函数,参数为 Date 对象,返回 bool | `func` | - | 否 |
|
|
39
|
+
| timeLimit.timeSpan | 时间间隔,默认 30 分钟 | `number` | `1800000`(30分钟) | 否 |
|
|
40
|
+
| onKeyDown | 键盘事件回调 | `func` | `_.noop` | 否 |
|
|
41
|
+
| className | 自定义类名 | `string` | - | 否 |
|
|
42
|
+
| style | 自定义样式 | `object` | - | 否 |
|
|
43
|
+
| children | 自定义触发元素 | `any` | - | 否 |
|
|
44
|
+
|
|
45
|
+
### 方法(通过 ref 调用)
|
|
46
|
+
| 方法 | 说明 |
|
|
47
|
+
|------|------|
|
|
48
|
+
| apiDoFocus | 聚焦到日期选择框 |
|
|
49
|
+
| apiDoSelectWillActive | 选择键盘高亮的当前日期 |
|
|
50
|
+
|
|
51
|
+
## 示例
|
|
52
|
+
|
|
53
|
+
### 基础用法
|
|
54
|
+
```jsx
|
|
55
|
+
<DatePicker
|
|
56
|
+
date={date}
|
|
57
|
+
placeholder='请选择日期'
|
|
58
|
+
onChange={date => setDate(date)}
|
|
59
|
+
/>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 自定义显示格式
|
|
63
|
+
```jsx
|
|
64
|
+
<DatePicker
|
|
65
|
+
date={date}
|
|
66
|
+
placeholder='请选择日期'
|
|
67
|
+
onChange={date => setDate(date)}
|
|
68
|
+
renderDate={date => `${date.getMonth() + 1}月-${date.getDate()}日`}
|
|
69
|
+
/>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 禁用日期选择
|
|
73
|
+
```jsx
|
|
74
|
+
<DatePicker
|
|
75
|
+
date={date}
|
|
76
|
+
placeholder='请选择日期'
|
|
77
|
+
disabled
|
|
78
|
+
onChange={date => setDate(date)}
|
|
79
|
+
/>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 限制可选日期范围
|
|
83
|
+
```jsx
|
|
84
|
+
// 只能选择今天之后
|
|
85
|
+
<DatePicker
|
|
86
|
+
date={date}
|
|
87
|
+
placeholder='选今天之后的'
|
|
88
|
+
min={new Date()}
|
|
89
|
+
onChange={date => setDate(date)}
|
|
90
|
+
/>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 自定义禁用日期
|
|
94
|
+
```jsx
|
|
95
|
+
// 只能选择非周五的日期
|
|
96
|
+
<DatePicker
|
|
97
|
+
date={date}
|
|
98
|
+
placeholder='非周五'
|
|
99
|
+
disabledDate={m => moment(m).get('day') === 5}
|
|
100
|
+
onChange={date => setDate(date)}
|
|
101
|
+
/>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 带时间选择
|
|
105
|
+
```jsx
|
|
106
|
+
<DatePicker
|
|
107
|
+
date={date}
|
|
108
|
+
placeholder='请选择日期'
|
|
109
|
+
onChange={date => setDate(date)}
|
|
110
|
+
enabledTimeSelect
|
|
111
|
+
/>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 自定义底部内容
|
|
115
|
+
```jsx
|
|
116
|
+
<DatePicker
|
|
117
|
+
date={date}
|
|
118
|
+
placeholder='请选择日期'
|
|
119
|
+
onChange={date => setDate(date)}
|
|
120
|
+
renderBottom={
|
|
121
|
+
<div className='gm-border-top text-center gm-padding-10'>
|
|
122
|
+
说明:请随便输入时间
|
|
123
|
+
</div>
|
|
124
|
+
}
|
|
125
|
+
/>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 自定义触发元素
|
|
129
|
+
```jsx
|
|
130
|
+
<DatePicker date={date} onChange={date => setDate(date)}>
|
|
131
|
+
<span>
|
|
132
|
+
{date ? moment(date).format('YYYY-MM-DD') : '请点击选择'}
|
|
133
|
+
</span>
|
|
134
|
+
</DatePicker>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## 注意事项
|
|
138
|
+
- `date` 属性接收的是 JavaScript 原生 `Date` 对象
|
|
139
|
+
- 不设置 `renderDate` 时,默认展示格式为 `YYYY-MM-DD`;启用 `enabledTimeSelect` 时为 `YYYY-MM-DD HH:mm`
|
|
140
|
+
- `disabledDate` 的优先级高于 `min` 和 `max`
|
|
141
|
+
- `renderDate` 用于自定义已选日期在输入框中的显示格式
|
|
142
|
+
- 启用 `enabledTimeSelect` 后,`renderDate` 需要手动带上时间部分
|
|
143
|
+
- 支持键盘上下键切换日期
|
|
144
|
+
- `timeLimit.timeSpan` 的单位为毫秒,默认 30 分钟(30 * 60 * 1000)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# DateRangePicker
|
|
2
|
+
|
|
3
|
+
## 简介
|
|
4
|
+
日期范围选择组件 - 提供双日历弹出层选择日期段,支持日期范围限制、时间选择、快速选择列表等功能。
|
|
5
|
+
|
|
6
|
+
## 安装
|
|
7
|
+
已包含在 `@gmfe/react` 中,无需额外安装。
|
|
8
|
+
|
|
9
|
+
## 使用
|
|
10
|
+
```jsx
|
|
11
|
+
import { DateRangePicker } from '@gmfe/react'
|
|
12
|
+
|
|
13
|
+
<DateRangePicker
|
|
14
|
+
begin={beginDate}
|
|
15
|
+
end={endDate}
|
|
16
|
+
onChange={(begin, end) => {
|
|
17
|
+
setBeginDate(begin)
|
|
18
|
+
setEndDate(end)
|
|
19
|
+
}}
|
|
20
|
+
/>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## API
|
|
24
|
+
|
|
25
|
+
### Props
|
|
26
|
+
| 属性 | 说明 | 类型 | 默认值 | 必填 |
|
|
27
|
+
|------|------|------|--------|------|
|
|
28
|
+
| begin | 开始日期,Date 对象 | `object` | - | 否 |
|
|
29
|
+
| end | 结束日期,Date 对象 | `object` | - | 否 |
|
|
30
|
+
| onChange | 日期变化回调,参数为 (begin, end) | `func` | `_.noop` | 否 |
|
|
31
|
+
| disabled | 是否禁用 | `bool` | - | 否 |
|
|
32
|
+
| min | 可选的最小日期,Date 对象 | `object` | - | 否 |
|
|
33
|
+
| max | 可选的最大日期,Date 对象 | `object` | - | 否 |
|
|
34
|
+
| disabledDate | 自定义日期是否可选,参数为 Date 对象,返回 bool。设置后 min/max 无效 | `func` | - | 否 |
|
|
35
|
+
| renderDate | 自定义日期展示格式,参数为 (begin, end) 两个 Date 对象 | `func` | - | 否 |
|
|
36
|
+
| canClear | 是否可清除已选日期 | `bool` | - | 否 |
|
|
37
|
+
| className | 自定义类名 | `string` | - | 否 |
|
|
38
|
+
| enabledTimeSelect | 是否启用时间选择 | `bool` | `false` | 否 |
|
|
39
|
+
| timeSpan | 时间间隔,默认 30 分钟 | `number` | `1800000`(30分钟) | 否 |
|
|
40
|
+
| beginTimeSelect | 开始时间选择限制配置 | `object` | - | 否 |
|
|
41
|
+
| beginTimeSelect.defaultTime | 默认开始时间,HH:mm 格式 | `object` | - | 否 |
|
|
42
|
+
| beginTimeSelect.disabledSpan | 禁用时间段函数,参数为 Date 对象,返回时间段 | `func` | - | 否 |
|
|
43
|
+
| endTimeSelect | 结束时间选择限制配置 | `object` | - | 否 |
|
|
44
|
+
| endTimeSelect.defaultTime | 默认结束时间 | `object` | - | 否 |
|
|
45
|
+
| endTimeSelect.disabledSpan | 禁用时间段函数 | `func` | - | 否 |
|
|
46
|
+
| customQuickSelectList | 自定义左侧快速选择列表 | `array` | - | 否 |
|
|
47
|
+
| children | 自定义触发元素 | `any` | - | 否 |
|
|
48
|
+
|
|
49
|
+
### 方法(通过 ref 调用)
|
|
50
|
+
| 方法 | 说明 |
|
|
51
|
+
|------|------|
|
|
52
|
+
| apiDoFocus | 聚焦到日期范围选择框 |
|
|
53
|
+
|
|
54
|
+
## 示例
|
|
55
|
+
|
|
56
|
+
### 基础用法
|
|
57
|
+
```jsx
|
|
58
|
+
<DateRangePicker
|
|
59
|
+
begin={beginDate}
|
|
60
|
+
end={endDate}
|
|
61
|
+
onChange={(begin, end) => {
|
|
62
|
+
setBeginDate(begin)
|
|
63
|
+
setEndDate(end)
|
|
64
|
+
}}
|
|
65
|
+
/>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 带清除功能
|
|
69
|
+
```jsx
|
|
70
|
+
<DateRangePicker
|
|
71
|
+
begin={beginDate}
|
|
72
|
+
end={endDate}
|
|
73
|
+
canClear
|
|
74
|
+
onChange={(begin, end) => {
|
|
75
|
+
setBeginDate(begin)
|
|
76
|
+
setEndDate(end)
|
|
77
|
+
}}
|
|
78
|
+
/>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 启用时间选择
|
|
82
|
+
```jsx
|
|
83
|
+
<DateRangePicker
|
|
84
|
+
begin={beginDate}
|
|
85
|
+
end={endDate}
|
|
86
|
+
enabledTimeSelect
|
|
87
|
+
onChange={(begin, end) => {
|
|
88
|
+
setBeginDate(begin)
|
|
89
|
+
setEndDate(end)
|
|
90
|
+
}}
|
|
91
|
+
/>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 自定义快速选择列表
|
|
95
|
+
```jsx
|
|
96
|
+
const quickList = [
|
|
97
|
+
{
|
|
98
|
+
range: [[0, 'day'], [0, 'day']],
|
|
99
|
+
text: '今天'
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
range: [[-7, 'day'], [0, 'day']],
|
|
103
|
+
text: '最近7天'
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
<DateRangePicker
|
|
108
|
+
begin={beginDate}
|
|
109
|
+
end={endDate}
|
|
110
|
+
customQuickSelectList={quickList}
|
|
111
|
+
onChange={(begin, end) => {
|
|
112
|
+
setBeginDate(begin)
|
|
113
|
+
setEndDate(end)
|
|
114
|
+
}}
|
|
115
|
+
/>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## 注意事项
|
|
119
|
+
- `begin` 和 `end` 属性接收 JavaScript 原生 `Date` 对象
|
|
120
|
+
- 不设置 `renderDate` 时,默认展示格式为 `YYYY-MM-DD ~ YYYY-MM-DD`
|
|
121
|
+
- 启用 `enabledTimeSelect` 时,展示格式自动带上时间部分
|
|
122
|
+
- `disabledDate` 设置后,`min` 和 `max` 将失效
|
|
123
|
+
- `customQuickSelectList` 的 `range` 数组项格式为 `[距离天数, 'day']`,从当前日期推算
|
|
124
|
+
- 选择日期后需要点击"确定"按钮才会触发 `onChange`
|
|
125
|
+
- 点击"取消"会关闭弹窗且不触发回调
|
|
126
|
+
- `canClear` 为 true 时,选中状态下可以通过清除按钮清空日期范围
|