@gm-pc/sortable 1.27.1-beta.0 → 1.27.2-beta.0

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.
@@ -1,185 +1,185 @@
1
- import React from 'react'
2
- import _ from 'lodash'
3
- import { storiesOf } from '@storybook/react'
4
- import { observable } from 'mobx'
5
- import classNames from 'classnames'
6
- import Sortable from './components/sortable'
7
- import GroupSortable from './components/sortable_group'
8
-
9
- const store = observable({
10
- data: [
11
- {
12
- value: 0,
13
- text: '大白菜',
14
- },
15
- {
16
- value: 1,
17
- text: '牛肉',
18
- },
19
- {
20
- value: 2,
21
- text: '鸡肉',
22
- },
23
- {
24
- value: 3,
25
- text: '鸭肉',
26
- },
27
- {
28
- value: 4,
29
- text: '大闸蟹',
30
- },
31
- ],
32
- disabled: true,
33
- setData(data: any) {
34
- this.data = data
35
- },
36
- groupData: [
37
- [
38
- {
39
- value: 0,
40
- text: '大白菜',
41
- },
42
- {
43
- value: 1,
44
- text: '牛肉',
45
- },
46
- ],
47
- [
48
- {
49
- value: 2,
50
- text: '鸡肉',
51
- },
52
- ],
53
- [
54
- {
55
- value: 3,
56
- text: '鸭肉',
57
- },
58
- {
59
- value: 4,
60
- text: '大闸蟹',
61
- },
62
- ],
63
- ],
64
- })
65
-
66
- // eslint-disable-next-line react/display-name
67
- const Wrap = React.forwardRef<HTMLDivElement, { className?: string }>(
68
- ({ className, ...rest }, ref) => (
69
- <div
70
- {...rest}
71
- ref={ref}
72
- className={classNames('gm-border gm-padding-10 gm-flex', className)}
73
- />
74
- )
75
- )
76
-
77
- storiesOf('Sortable/Sortable', module)
78
- .add('说明', () => <div />, {
79
- info: {
80
- text: `
81
- 说明:
82
- - 很有必要看一遍 https://github.com/SortableJS/Sortable 的文档
83
- - 请使用封装的排序组件,不直接结存 JS 用法,如果有,请沟通。
84
-
85
- 最佳实践:
86
- - 提供唯一标识 value
87
- - 排序单独UI,不要和太多业务逻辑耦合
88
- - 排序期间 data 最好不要变。拖拽期间数据变了,这不是很尴尬!
89
-
90
-
91
- 原生用法局限(指 sortablejs 和 react-sortablejs)
92
- - 通过子元素 data-id 来标识,不方便
93
- - data-id 必须是字符串
94
- - react-sortable 不支持 disabled。所以 copy 过来改了。
95
- `,
96
- },
97
- })
98
- .add('default', () => (
99
- <Sortable data={store.data} onChange={(data: any) => store.setData(data)} />
100
- ))
101
- .add('disabled', () => (
102
- <Sortable
103
- disabled={store.disabled}
104
- data={store.data}
105
- onChange={(data: any) => store.setData(data)}
106
- />
107
- ))
108
- .add('renderItem', () => (
109
- <Sortable
110
- data={store.data}
111
- onChange={(data: any) => store.setData(data)}
112
- renderItem={(item: any) => (
113
- <div className='gm-border gm-padding-10'>{item.text}</div>
114
- )}
115
- />
116
- ))
117
- .add('限定高', () => (
118
- <Sortable
119
- data={store.data}
120
- onChange={(data: any) => store.setData(data)}
121
- renderItem={(item: any) => (
122
- <div className='gm-border gm-padding-10'>{item.text}</div>
123
- )}
124
- style={{
125
- height: '100px',
126
- overflow: 'auto',
127
- }}
128
- />
129
- ))
130
- .add('指定拖动单元', () => (
131
- <Sortable
132
- data={store.data}
133
- onChange={(data: any) => store.setData(data)}
134
- options={{
135
- handle: '.b-sortable-handle',
136
- }}
137
- renderItem={(item: any) => (
138
- <div className='gm-border gm-padding-10'>
139
- <span className='b-sortable-handle gm-cursor-grab'>move</span>
140
- &nbsp;&nbsp;
141
- {item.text}
142
- </div>
143
- )}
144
- />
145
- ))
146
- .add('tag', () => (
147
- <Sortable
148
- tag={Wrap}
149
- data={store.data}
150
- onChange={(data: any) => store.setData(data)}
151
- />
152
- ))
153
-
154
- storiesOf('Sortable/GroupSortable', module).add('default', () => (
155
- <GroupSortable
156
- data={store.groupData.slice()}
157
- onChange={(newData) => {
158
- // console.log('onChange', newData)
159
- store.groupData = newData
160
- }}
161
- renderItem={(item) => (
162
- <div className='gm-border gm-margin-5 gm-padding-5'>
163
- {item.text} {item.value}
164
- </div>
165
- )}
166
- itemProps={{
167
- style: {
168
- backgroundColor: 'yellow',
169
- margin: '5px',
170
- },
171
- }}
172
- tag={Wrap}
173
- >
174
- {(items) => (
175
- <div>
176
- {_.map(items, (item, i) => (
177
- <div key={i}>
178
- {item}
179
- {i < items.length - 1 && <hr />}
180
- </div>
181
- ))}
182
- </div>
183
- )}
184
- </GroupSortable>
185
- ))
1
+ import React from 'react'
2
+ import _ from 'lodash'
3
+ import { storiesOf } from '@storybook/react'
4
+ import { observable } from 'mobx'
5
+ import classNames from 'classnames'
6
+ import Sortable from './components/sortable'
7
+ import GroupSortable from './components/sortable_group'
8
+
9
+ const store = observable({
10
+ data: [
11
+ {
12
+ value: 0,
13
+ text: '大白菜',
14
+ },
15
+ {
16
+ value: 1,
17
+ text: '牛肉',
18
+ },
19
+ {
20
+ value: 2,
21
+ text: '鸡肉',
22
+ },
23
+ {
24
+ value: 3,
25
+ text: '鸭肉',
26
+ },
27
+ {
28
+ value: 4,
29
+ text: '大闸蟹',
30
+ },
31
+ ],
32
+ disabled: true,
33
+ setData(data: any) {
34
+ this.data = data
35
+ },
36
+ groupData: [
37
+ [
38
+ {
39
+ value: 0,
40
+ text: '大白菜',
41
+ },
42
+ {
43
+ value: 1,
44
+ text: '牛肉',
45
+ },
46
+ ],
47
+ [
48
+ {
49
+ value: 2,
50
+ text: '鸡肉',
51
+ },
52
+ ],
53
+ [
54
+ {
55
+ value: 3,
56
+ text: '鸭肉',
57
+ },
58
+ {
59
+ value: 4,
60
+ text: '大闸蟹',
61
+ },
62
+ ],
63
+ ],
64
+ })
65
+
66
+ // eslint-disable-next-line react/display-name
67
+ const Wrap = React.forwardRef<HTMLDivElement, { className?: string }>(
68
+ ({ className, ...rest }, ref) => (
69
+ <div
70
+ {...rest}
71
+ ref={ref}
72
+ className={classNames('gm-border gm-padding-10 gm-flex', className)}
73
+ />
74
+ )
75
+ )
76
+
77
+ storiesOf('Sortable/Sortable', module)
78
+ .add('说明', () => <div />, {
79
+ info: {
80
+ text: `
81
+ 说明:
82
+ - 很有必要看一遍 https://github.com/SortableJS/Sortable 的文档
83
+ - 请使用封装的排序组件,不直接结存 JS 用法,如果有,请沟通。
84
+
85
+ 最佳实践:
86
+ - 提供唯一标识 value
87
+ - 排序单独UI,不要和太多业务逻辑耦合
88
+ - 排序期间 data 最好不要变。拖拽期间数据变了,这不是很尴尬!
89
+
90
+
91
+ 原生用法局限(指 sortablejs 和 react-sortablejs)
92
+ - 通过子元素 data-id 来标识,不方便
93
+ - data-id 必须是字符串
94
+ - react-sortable 不支持 disabled。所以 copy 过来改了。
95
+ `,
96
+ },
97
+ })
98
+ .add('default', () => (
99
+ <Sortable data={store.data} onChange={(data: any) => store.setData(data)} />
100
+ ))
101
+ .add('disabled', () => (
102
+ <Sortable
103
+ disabled={store.disabled}
104
+ data={store.data}
105
+ onChange={(data: any) => store.setData(data)}
106
+ />
107
+ ))
108
+ .add('renderItem', () => (
109
+ <Sortable
110
+ data={store.data}
111
+ onChange={(data: any) => store.setData(data)}
112
+ renderItem={(item: any) => (
113
+ <div className='gm-border gm-padding-10'>{item.text}</div>
114
+ )}
115
+ />
116
+ ))
117
+ .add('限定高', () => (
118
+ <Sortable
119
+ data={store.data}
120
+ onChange={(data: any) => store.setData(data)}
121
+ renderItem={(item: any) => (
122
+ <div className='gm-border gm-padding-10'>{item.text}</div>
123
+ )}
124
+ style={{
125
+ height: '100px',
126
+ overflow: 'auto',
127
+ }}
128
+ />
129
+ ))
130
+ .add('指定拖动单元', () => (
131
+ <Sortable
132
+ data={store.data}
133
+ onChange={(data: any) => store.setData(data)}
134
+ options={{
135
+ handle: '.b-sortable-handle',
136
+ }}
137
+ renderItem={(item: any) => (
138
+ <div className='gm-border gm-padding-10'>
139
+ <span className='b-sortable-handle gm-cursor-grab'>move</span>
140
+ &nbsp;&nbsp;
141
+ {item.text}
142
+ </div>
143
+ )}
144
+ />
145
+ ))
146
+ .add('tag', () => (
147
+ <Sortable
148
+ tag={Wrap}
149
+ data={store.data}
150
+ onChange={(data: any) => store.setData(data)}
151
+ />
152
+ ))
153
+
154
+ storiesOf('Sortable/GroupSortable', module).add('default', () => (
155
+ <GroupSortable
156
+ data={store.groupData.slice()}
157
+ onChange={(newData) => {
158
+ // console.log('onChange', newData)
159
+ store.groupData = newData
160
+ }}
161
+ renderItem={(item) => (
162
+ <div className='gm-border gm-margin-5 gm-padding-5'>
163
+ {item.text} {item.value}
164
+ </div>
165
+ )}
166
+ itemProps={{
167
+ style: {
168
+ backgroundColor: 'yellow',
169
+ margin: '5px',
170
+ },
171
+ }}
172
+ tag={Wrap}
173
+ >
174
+ {(items) => (
175
+ <div>
176
+ {_.map(items, (item, i) => (
177
+ <div key={i}>
178
+ {item}
179
+ {i < items.length - 1 && <hr />}
180
+ </div>
181
+ ))}
182
+ </div>
183
+ )}
184
+ </GroupSortable>
185
+ ))