@gmfe/react 2.14.30-alpha.0 → 2.14.31

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.
Files changed (72) hide show
  1. package/README.md +295 -0
  2. package/package.json +4 -4
  3. package/src/component/affix/README.md +54 -0
  4. package/src/component/box/README.md +142 -0
  5. package/src/component/box/box_table.js +11 -18
  6. package/src/component/button/README.md +90 -0
  7. package/src/component/calendar/README.md +98 -0
  8. package/src/component/carousel/README.md +51 -0
  9. package/src/component/cascader/README.md +139 -0
  10. package/src/component/checkbox/README.md +120 -0
  11. package/src/component/collapse/README.md +80 -0
  12. package/src/component/color_picker/README.md +50 -0
  13. package/src/component/date_picker/README.md +144 -0
  14. package/src/component/date_range_picker/README.md +126 -0
  15. package/src/component/dialog/README.md +149 -0
  16. package/src/component/divider/README.md +41 -0
  17. package/src/component/drawer/README.md +83 -0
  18. package/src/component/drop_down/README.md +105 -0
  19. package/src/component/drop_select/README.md +146 -0
  20. package/src/component/dropper/README.md +55 -0
  21. package/src/component/editable_text/README.md +68 -0
  22. package/src/component/filter_select/README.md +104 -0
  23. package/src/component/flex/README.md +88 -0
  24. package/src/component/flip_number/README.md +53 -0
  25. package/src/component/form/README.md +199 -0
  26. package/src/component/function_set/README.md +93 -0
  27. package/src/component/grid/README.md +93 -0
  28. package/src/component/icon_down_up/README.md +43 -0
  29. package/src/component/image_preview/README.md +57 -0
  30. package/src/component/img_uploader/README.md +91 -0
  31. package/src/component/input/README.md +49 -0
  32. package/src/component/input_number/README.md +93 -0
  33. package/src/component/layout_root/README.md +181 -0
  34. package/src/component/lazy_img/README.md +59 -0
  35. package/src/component/level_list/README.md +75 -0
  36. package/src/component/level_select/README.md +78 -0
  37. package/src/component/list/README.md +96 -0
  38. package/src/component/loading/README.md +116 -0
  39. package/src/component/mask/README.md +62 -0
  40. package/src/component/modal/README.md +155 -0
  41. package/src/component/more_select/README.md +185 -0
  42. package/src/component/nav/README.md +101 -0
  43. package/src/component/nprogress/README.md +135 -0
  44. package/src/component/pagination/README.md +87 -0
  45. package/src/component/picture_preview/README.md +50 -0
  46. package/src/component/popover/README.md +146 -0
  47. package/src/component/popup/README.md +121 -0
  48. package/src/component/price/README.md +72 -0
  49. package/src/component/progress/README.md +98 -0
  50. package/src/component/progress_circle/README.md +92 -0
  51. package/src/component/radio/README.md +101 -0
  52. package/src/component/recommend_input/README.md +75 -0
  53. package/src/component/select/README.md +120 -0
  54. package/src/component/selection/README.md +87 -0
  55. package/src/component/sheet/README.md +176 -0
  56. package/src/component/steps/README.md +55 -0
  57. package/src/component/storage/README.md +83 -0
  58. package/src/component/switch/README.md +85 -0
  59. package/src/component/table_select/README.md +92 -0
  60. package/src/component/tabs/README.md +85 -0
  61. package/src/component/time_span/README.md +112 -0
  62. package/src/component/tip/README.md +105 -0
  63. package/src/component/tool_tip/README.md +84 -0
  64. package/src/component/transfer/README.md +98 -0
  65. package/src/component/transfer_v2/README.md +85 -0
  66. package/src/component/tree/README.md +99 -0
  67. package/src/component/tree/index.js +1 -1
  68. package/src/component/tree_v2/README.md +99 -0
  69. package/src/component/uploader/README.md +104 -0
  70. package/src/index.js +1 -3
  71. package/LICENSE +0 -16
  72. package/src/hoc/sticky_layout.js +0 -157
@@ -0,0 +1,98 @@
1
+ # Calendar
2
+
3
+ ## 简介
4
+ 日历组件 - 提供单日期选择和日期范围选择两种模式,通过 Calendar(单选)和 RangeCalendar(范围选择)两个组件实现。
5
+
6
+ ## 安装
7
+ 已包含在 `@gmfe/react` 中,无需额外安装。
8
+
9
+ ## 使用
10
+ ```jsx
11
+ import { Calendar } from '@gmfe/react'
12
+
13
+ <Calendar
14
+ selected={date}
15
+ onSelect={date => setDate(date)}
16
+ />
17
+ ```
18
+
19
+ ## API
20
+
21
+ ### Calendar Props(单选)
22
+ | 属性 | 说明 | 类型 | 默认值 | 必填 |
23
+ |------|------|------|--------|------|
24
+ | selected | 当前选中的日期,Date 对象 | `object` | - | 否 |
25
+ | onSelect | 日期选中回调,参数为 Date 对象 | `func` | `_.noop` | 否 |
26
+ | willActiveSelected | 键盘操作时的高亮日期 | `object` | - | 否 |
27
+ | onWillActiveSelected | 高亮日期变化回调,参数为 Date 对象 | `func` | - | 否 |
28
+ | min | 可选的最小日期,Date 对象 | `object` | - | 否 |
29
+ | max | 可选的最大日期,Date 对象 | `object` | - | 否 |
30
+ | disabledDate | 自定义日期是否可选,参数为 Date 对象,返回 bool。设置后 min/max 无效 | `func` | - | 否 |
31
+ | onKeyDown | 键盘事件回调 | `func` | - | 否 |
32
+ | className | 自定义类名 | `string` | - | 否 |
33
+ | style | 自定义样式 | `object` | - | 否 |
34
+
35
+ ### RangeCalendar Props(范围选择)
36
+ RangeCalendar 继承自 Calendar,额外属性如下:
37
+
38
+ | 属性 | 说明 | 类型 | 默认值 | 必填 |
39
+ |------|------|------|--------|------|
40
+ | begin | 开始日期,Date 对象 | `object` | - | 否 |
41
+ | end | 结束日期,Date 对象 | `object` | - | 否 |
42
+ | onSelect | 选中回调,参数为 (begin, end) | `func` | - | 否 |
43
+
44
+ ## 示例
45
+
46
+ ### 基础日历
47
+ ```jsx
48
+ <Calendar
49
+ selected={date}
50
+ onSelect={date => setDate(date)}
51
+ />
52
+ ```
53
+
54
+ ### 限制日期范围
55
+ ```jsx
56
+ import moment from 'moment'
57
+
58
+ <Calendar
59
+ selected={date}
60
+ onSelect={date => setDate(date)}
61
+ min={moment().toDate()}
62
+ max={moment().add(10, 'd').toDate()}
63
+ />
64
+ ```
65
+
66
+ ### 自定义禁用日期
67
+ ```jsx
68
+ import moment from 'moment'
69
+
70
+ // 只能选择非周五的日期
71
+ <Calendar
72
+ selected={date}
73
+ onSelect={date => setDate(date)}
74
+ disabledDate={d => moment(d).get('day') === 5}
75
+ />
76
+ ```
77
+
78
+ ### 日期范围选择
79
+ ```jsx
80
+ import { RangeCalendar } from '@gmfe/react'
81
+
82
+ <RangeCalendar
83
+ begin={beginDate}
84
+ end={endDate}
85
+ onSelect={(begin, end) => {
86
+ setBeginDate(begin)
87
+ setEndDate(end)
88
+ }}
89
+ />
90
+ ```
91
+
92
+ ## 注意事项
93
+ - Calendar 用于单日期选择,RangeCalendar 用于日期范围选择
94
+ - `selected`/`begin`/`end` 属性接收 JavaScript 原生 `Date` 对象
95
+ - `disabledDate` 设置后,`min` 和 `max` 将失效
96
+ - Calendar 组件内部基于 RangeCalendar 实现
97
+ - 该组件通常作为 DatePicker 和 DateRangePicker 的内部组件使用,一般不需要直接使用
98
+ - 支持键盘上下键切换日期
@@ -0,0 +1,51 @@
1
+ # Carousel
2
+
3
+ ## 简介
4
+ 轮播组件 - 支持淡入淡出切换、自动轮播、鼠标悬浮暂停的图片/内容轮播
5
+
6
+ ## 安装
7
+ 已包含在 `@gmfe/react` 中,无需额外安装。
8
+
9
+ ## 使用
10
+ ```jsx
11
+ import { Carousel } from '@gmfe/react'
12
+
13
+ <Carousel style={{ width: '1000px', height: '200px' }}>
14
+ <div style={{ backgroundColor: 'red', height: '100%', width: '100%' }}>内容1</div>
15
+ <div style={{ backgroundColor: 'green', height: '100%', width: '100%' }}>内容2</div>
16
+ <div style={{ backgroundColor: 'blue', height: '100%', width: '100%' }}>内容3</div>
17
+ </Carousel>
18
+ ```
19
+
20
+ ## API
21
+
22
+ ### Props
23
+ | 属性 | 说明 | 类型 | 默认值 | 必填 |
24
+ |------|------|------|--------|------|
25
+ | children | 轮播内容,支持 element 元素数组 | `arrayOf(element)` | - | 否 |
26
+ | defaultIndex | 初始展示的索引 | `number` | `0` | 否 |
27
+ | delay | 轮播间隔时间(毫秒) | `number` | `3000` | 否 |
28
+ | transitionTime | 切换动画时长(毫秒) | `number` | `1000` | 否 |
29
+ | onIndexChange | 索引变化回调 | `function` | - | 否 |
30
+ | className | 自定义类名 | `string` | - | 否 |
31
+ | isStopByHoverContent | 鼠标悬浮在内容区域时是否暂停轮播 | `bool` | `true` | 否 |
32
+
33
+ ## 示例
34
+
35
+ ### 基础用法
36
+ ```jsx
37
+ <Carousel
38
+ style={{ width: '1000px', height: '200px' }}
39
+ onIndexChange={index => console.log(index)}
40
+ >
41
+ <div style={{ backgroundColor: 'red', height: '100%', width: '100%' }}>内容1</div>
42
+ <div style={{ backgroundColor: 'green', height: '100%', width: '100%' }}>内容2</div>
43
+ <div style={{ backgroundColor: 'yellow', height: '100%', width: '100%' }}>内容3</div>
44
+ <div style={{ backgroundColor: 'blue', height: '100%', width: '100%' }}>内容4</div>
45
+ </Carousel>
46
+ ```
47
+
48
+ ## 注意事项
49
+ - 子元素支持动态添加,组件会自动适应子元素数量变化
50
+ - 鼠标离开轮播区域后会自动恢复轮播
51
+ - 底部有圆点指示器,支持鼠标悬停切换
@@ -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)