@gm-pc/keyboard 1.26.2-beta.0 → 1.27.1-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.
package/src/stories.tsx CHANGED
@@ -1,308 +1,308 @@
1
- import React, { useMemo } from 'react'
2
- import { MoreSelectDataItem } from '@gm-pc/react'
3
- import _ from 'lodash'
4
- import { makeAutoObservable } from 'mobx'
5
- import { TableX, TableXUtil, selectTableXHOC, editTableXHOC } from '@gm-pc/table-x'
6
-
7
- import {
8
- KCMoreSelect,
9
- KeyboardTableXColumn,
10
- keyboardTableXHOC,
11
- KCInput,
12
- KCDatePicker,
13
- KCSelect,
14
- KCInputNumber,
15
- KCLevelSelect,
16
- } from './'
17
-
18
- const { OperationCell, OperationHeader, EditOperation, TABLE_X } = TableXUtil
19
- const SelectKeyboardTableX = selectTableXHOC(keyboardTableXHOC(editTableXHOC(TableX)))
20
-
21
- interface InitialDataItem {
22
- id: number
23
- position: MoreSelectDataItem<number> | null
24
- name: string
25
- age: number | null
26
- area: string[]
27
- date: Date | null
28
- status: number | null
29
- }
30
-
31
- const selectData: MoreSelectDataItem<number>[] = [
32
- { value: 1, text: '南山' },
33
- { value: 2, text: '福田' },
34
- { value: 3, text: '宝安' },
35
- { value: 4, text: '罗湖' },
36
- { value: 5, text: '龙岗' },
37
- { value: 6, text: '龙华' },
38
- { value: 7, text: '光明' },
39
- { value: 8, text: '盐田' },
40
- { value: 9, text: '坪山' },
41
- { value: 10, text: '大鹏新区' },
42
- ]
43
-
44
- const levelSelectData = [
45
- {
46
- value: 'A',
47
- text: '广州越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀',
48
- children: [
49
- {
50
- value: '1',
51
- text: '越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀',
52
- },
53
- { value: '2', text: '荔湾' },
54
- { value: '3', text: '天河' },
55
- { value: '4', text: '海珠' },
56
- { value: '5', text: '白云' },
57
- { value: '6', text: '黄埔' },
58
- { value: '7', text: '番禺' },
59
- { value: '8', text: '南沙' },
60
- { value: '9', text: '花都' },
61
- { value: '10', text: '增城' },
62
- { value: '11', text: '从化' },
63
- ],
64
- },
65
- {
66
- value: 'B',
67
- text: '深圳',
68
- children: [
69
- { value: '1', text: '福田' },
70
- { value: '2', text: '罗湖' },
71
- { value: '3', text: '南山' },
72
- { value: '4', text: '盐田' },
73
- { value: '5', text: '宝安' },
74
- { value: '6', text: '龙岗' },
75
- { value: '7', text: '龙华' },
76
- { value: '8', text: '坪山' },
77
- { value: '9', text: '光明' },
78
- { value: '10', text: '大鹏' },
79
- ],
80
- },
81
- ]
82
-
83
- const initialDataItem: InitialDataItem = {
84
- id: Math.floor(Math.random() * 10),
85
- name: '',
86
- position: null,
87
- area: [],
88
- age: null,
89
- date: new Date(),
90
- status: 1,
91
- }
92
-
93
- const initialData: InitialDataItem[] = _.times(1, (): InitialDataItem => initialDataItem)
94
-
95
- class Store {
96
- data = initialData
97
-
98
- selected: number[] = []
99
-
100
- constructor() {
101
- makeAutoObservable(this)
102
- }
103
-
104
- setSelected = (selected: number[]) => {
105
- this.selected = selected
106
- }
107
-
108
- handleAddRow = (index = this.data.length) => {
109
- this.data.splice(index, 0, initialDataItem)
110
- }
111
-
112
- handleDeleteRow = (index: number) => {
113
- this.data.splice(index, 1)
114
- }
115
-
116
- handleSetDataItem = (index: number, item: Partial<InitialDataItem>) => {
117
- this.data[index] = { ...this.data[index], ...item }
118
- }
119
- }
120
-
121
- const store = new Store()
122
-
123
- export const ComKeyboard = () => {
124
- const columns: KeyboardTableXColumn[] = useMemo(
125
- (): KeyboardTableXColumn[] => [
126
- {
127
- Header: '编号',
128
- id: 'no',
129
- fixed: 'left',
130
- width: TABLE_X.WIDTH_NO,
131
- Cell: (cellProps: { row: { index: number } }) => {
132
- return <div>{cellProps.row.index + 1}</div>
133
- },
134
- },
135
- {
136
- Header: OperationHeader,
137
- id: 'operation',
138
- fixed: 'left',
139
- width: TABLE_X.WIDTH_EDIT_OPERATION,
140
- Cell: (cellProps: { row: { index: number } }) => {
141
- const { index } = cellProps.row
142
- return (
143
- <OperationCell>
144
- <EditOperation
145
- onAddRow={() => {
146
- store.handleAddRow(index)
147
- }}
148
- onDeleteRow={
149
- store.data.length > 1
150
- ? () => {
151
- store.handleDeleteRow(index)
152
- }
153
- : undefined
154
- }
155
- />
156
- </OperationCell>
157
- )
158
- },
159
- },
160
- {
161
- Header: '位置',
162
- id: 'position',
163
- width: TABLE_X.WIDTH_SELECT,
164
- isKeyboard: true,
165
- Cell: (cellProps: any) => {
166
- const {
167
- original: { position },
168
- index,
169
- } = cellProps.row
170
- return (
171
- <KCMoreSelect
172
- data={selectData}
173
- selected={position}
174
- onSelect={(selected: MoreSelectDataItem<number>) => {
175
- store.handleSetDataItem(index, { position: selected })
176
- }}
177
- />
178
- )
179
- },
180
- },
181
- {
182
- Header: '区域',
183
- id: 'area',
184
- width: 200,
185
- isKeyboard: true,
186
- Cell: ({ row: { original, index } }) => {
187
- return (
188
- <KCLevelSelect
189
- data={levelSelectData}
190
- selected={original.area}
191
- onSelect={(value) => {
192
- store.handleSetDataItem(index, { area: value })
193
- }}
194
- />
195
- )
196
- },
197
- },
198
- {
199
- Header: '名字',
200
- id: 'name',
201
- width: 200,
202
- isKeyboard: true,
203
- Cell: (cellProps: any) => {
204
- const {
205
- original: { name },
206
- index,
207
- } = cellProps.row
208
- return (
209
- <KCInput
210
- value={name}
211
- onChange={(event) => {
212
- store.handleSetDataItem(index, { name: event.target.value })
213
- }}
214
- />
215
- )
216
- },
217
- },
218
- {
219
- Header: '年龄',
220
- id: 'age',
221
- width: 200,
222
- isKeyboard: true,
223
- Cell: (cellProps: any) => {
224
- const {
225
- original: { age },
226
- index,
227
- } = cellProps.row
228
- return (
229
- <KCInputNumber
230
- value={age}
231
- onChange={(value) => {
232
- store.handleSetDataItem(index, { age: value })
233
- }}
234
- />
235
- )
236
- },
237
- },
238
- {
239
- Header: '日期',
240
- id: 'date',
241
- width: 200,
242
- isKeyboard: true,
243
- Cell: (cellProps: any) => {
244
- const {
245
- original: { date },
246
- index,
247
- } = cellProps.row
248
- return (
249
- <KCDatePicker
250
- onChange={(value) => {
251
- store.handleSetDataItem(index, { date: value })
252
- }}
253
- date={date}
254
- />
255
- )
256
- },
257
- },
258
- {
259
- Header: '状态',
260
- id: 'status',
261
- width: 200,
262
- isKeyboard: true,
263
- Cell: (cellProps: any) => {
264
- const {
265
- original: { status },
266
- index,
267
- } = cellProps.row
268
- return (
269
- <KCSelect
270
- data={[
271
- { value: 0, text: '未验收' },
272
- { value: 1, text: '已验收' },
273
- ]}
274
- value={status}
275
- onChange={(value: any) => {
276
- store.handleSetDataItem(index, { status: value })
277
- }}
278
- />
279
- )
280
- },
281
- },
282
- ],
283
- []
284
- )
285
-
286
- return (
287
- <div>
288
- <SelectKeyboardTableX
289
- id='keyboard_table_x'
290
- columns={columns}
291
- onAddRow={() => {
292
- store.handleAddRow()
293
- }}
294
- data={store.data.slice()}
295
- keyField='id'
296
- selected={store.selected.slice()}
297
- onSelect={(selected: number[]) => {
298
- store.setSelected(selected)
299
- }}
300
- fixedSelect
301
- />
302
- </div>
303
- )
304
- }
305
-
306
- export default {
307
- title: 'Keyboard/Keyboard',
308
- }
1
+ import React, { useMemo } from 'react'
2
+ import { MoreSelectDataItem } from '@gm-pc/react'
3
+ import _ from 'lodash'
4
+ import { makeAutoObservable } from 'mobx'
5
+ import { TableX, TableXUtil, selectTableXHOC, editTableXHOC } from '@gm-pc/table-x'
6
+
7
+ import {
8
+ KCMoreSelect,
9
+ KeyboardTableXColumn,
10
+ keyboardTableXHOC,
11
+ KCInput,
12
+ KCDatePicker,
13
+ KCSelect,
14
+ KCInputNumber,
15
+ KCLevelSelect,
16
+ } from './'
17
+
18
+ const { OperationCell, OperationHeader, EditOperation, TABLE_X } = TableXUtil
19
+ const SelectKeyboardTableX = selectTableXHOC(keyboardTableXHOC(editTableXHOC(TableX)))
20
+
21
+ interface InitialDataItem {
22
+ id: number
23
+ position: MoreSelectDataItem<number> | null
24
+ name: string
25
+ age: number | null
26
+ area: string[]
27
+ date: Date | null
28
+ status: number | null
29
+ }
30
+
31
+ const selectData: MoreSelectDataItem<number>[] = [
32
+ { value: 1, text: '南山' },
33
+ { value: 2, text: '福田' },
34
+ { value: 3, text: '宝安' },
35
+ { value: 4, text: '罗湖' },
36
+ { value: 5, text: '龙岗' },
37
+ { value: 6, text: '龙华' },
38
+ { value: 7, text: '光明' },
39
+ { value: 8, text: '盐田' },
40
+ { value: 9, text: '坪山' },
41
+ { value: 10, text: '大鹏新区' },
42
+ ]
43
+
44
+ const levelSelectData = [
45
+ {
46
+ value: 'A',
47
+ text: '广州越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀',
48
+ children: [
49
+ {
50
+ value: '1',
51
+ text: '越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀越秀',
52
+ },
53
+ { value: '2', text: '荔湾' },
54
+ { value: '3', text: '天河' },
55
+ { value: '4', text: '海珠' },
56
+ { value: '5', text: '白云' },
57
+ { value: '6', text: '黄埔' },
58
+ { value: '7', text: '番禺' },
59
+ { value: '8', text: '南沙' },
60
+ { value: '9', text: '花都' },
61
+ { value: '10', text: '增城' },
62
+ { value: '11', text: '从化' },
63
+ ],
64
+ },
65
+ {
66
+ value: 'B',
67
+ text: '深圳',
68
+ children: [
69
+ { value: '1', text: '福田' },
70
+ { value: '2', text: '罗湖' },
71
+ { value: '3', text: '南山' },
72
+ { value: '4', text: '盐田' },
73
+ { value: '5', text: '宝安' },
74
+ { value: '6', text: '龙岗' },
75
+ { value: '7', text: '龙华' },
76
+ { value: '8', text: '坪山' },
77
+ { value: '9', text: '光明' },
78
+ { value: '10', text: '大鹏' },
79
+ ],
80
+ },
81
+ ]
82
+
83
+ const initialDataItem: InitialDataItem = {
84
+ id: Math.floor(Math.random() * 10),
85
+ name: '',
86
+ position: null,
87
+ area: [],
88
+ age: null,
89
+ date: new Date(),
90
+ status: 1,
91
+ }
92
+
93
+ const initialData: InitialDataItem[] = _.times(1, (): InitialDataItem => initialDataItem)
94
+
95
+ class Store {
96
+ data = initialData
97
+
98
+ selected: number[] = []
99
+
100
+ constructor() {
101
+ makeAutoObservable(this)
102
+ }
103
+
104
+ setSelected = (selected: number[]) => {
105
+ this.selected = selected
106
+ }
107
+
108
+ handleAddRow = (index = this.data.length) => {
109
+ this.data.splice(index, 0, initialDataItem)
110
+ }
111
+
112
+ handleDeleteRow = (index: number) => {
113
+ this.data.splice(index, 1)
114
+ }
115
+
116
+ handleSetDataItem = (index: number, item: Partial<InitialDataItem>) => {
117
+ this.data[index] = { ...this.data[index], ...item }
118
+ }
119
+ }
120
+
121
+ const store = new Store()
122
+
123
+ export const ComKeyboard = () => {
124
+ const columns: KeyboardTableXColumn[] = useMemo(
125
+ (): KeyboardTableXColumn[] => [
126
+ {
127
+ Header: '编号',
128
+ id: 'no',
129
+ fixed: 'left',
130
+ width: TABLE_X.WIDTH_NO,
131
+ Cell: (cellProps: { row: { index: number } }) => {
132
+ return <div>{cellProps.row.index + 1}</div>
133
+ },
134
+ },
135
+ {
136
+ Header: OperationHeader,
137
+ id: 'operation',
138
+ fixed: 'left',
139
+ width: TABLE_X.WIDTH_EDIT_OPERATION,
140
+ Cell: (cellProps: { row: { index: number } }) => {
141
+ const { index } = cellProps.row
142
+ return (
143
+ <OperationCell>
144
+ <EditOperation
145
+ onAddRow={() => {
146
+ store.handleAddRow(index)
147
+ }}
148
+ onDeleteRow={
149
+ store.data.length > 1
150
+ ? () => {
151
+ store.handleDeleteRow(index)
152
+ }
153
+ : undefined
154
+ }
155
+ />
156
+ </OperationCell>
157
+ )
158
+ },
159
+ },
160
+ {
161
+ Header: '位置',
162
+ id: 'position',
163
+ width: TABLE_X.WIDTH_SELECT,
164
+ isKeyboard: true,
165
+ Cell: (cellProps: any) => {
166
+ const {
167
+ original: { position },
168
+ index,
169
+ } = cellProps.row
170
+ return (
171
+ <KCMoreSelect
172
+ data={selectData}
173
+ selected={position}
174
+ onSelect={(selected: MoreSelectDataItem<number>) => {
175
+ store.handleSetDataItem(index, { position: selected })
176
+ }}
177
+ />
178
+ )
179
+ },
180
+ },
181
+ {
182
+ Header: '区域',
183
+ id: 'area',
184
+ width: 200,
185
+ isKeyboard: true,
186
+ Cell: ({ row: { original, index } }) => {
187
+ return (
188
+ <KCLevelSelect
189
+ data={levelSelectData}
190
+ selected={original.area}
191
+ onSelect={(value) => {
192
+ store.handleSetDataItem(index, { area: value })
193
+ }}
194
+ />
195
+ )
196
+ },
197
+ },
198
+ {
199
+ Header: '名字',
200
+ id: 'name',
201
+ width: 200,
202
+ isKeyboard: true,
203
+ Cell: (cellProps: any) => {
204
+ const {
205
+ original: { name },
206
+ index,
207
+ } = cellProps.row
208
+ return (
209
+ <KCInput
210
+ value={name}
211
+ onChange={(event) => {
212
+ store.handleSetDataItem(index, { name: event.target.value })
213
+ }}
214
+ />
215
+ )
216
+ },
217
+ },
218
+ {
219
+ Header: '年龄',
220
+ id: 'age',
221
+ width: 200,
222
+ isKeyboard: true,
223
+ Cell: (cellProps: any) => {
224
+ const {
225
+ original: { age },
226
+ index,
227
+ } = cellProps.row
228
+ return (
229
+ <KCInputNumber
230
+ value={age}
231
+ onChange={(value) => {
232
+ store.handleSetDataItem(index, { age: value })
233
+ }}
234
+ />
235
+ )
236
+ },
237
+ },
238
+ {
239
+ Header: '日期',
240
+ id: 'date',
241
+ width: 200,
242
+ isKeyboard: true,
243
+ Cell: (cellProps: any) => {
244
+ const {
245
+ original: { date },
246
+ index,
247
+ } = cellProps.row
248
+ return (
249
+ <KCDatePicker
250
+ onChange={(value) => {
251
+ store.handleSetDataItem(index, { date: value })
252
+ }}
253
+ date={date}
254
+ />
255
+ )
256
+ },
257
+ },
258
+ {
259
+ Header: '状态',
260
+ id: 'status',
261
+ width: 200,
262
+ isKeyboard: true,
263
+ Cell: (cellProps: any) => {
264
+ const {
265
+ original: { status },
266
+ index,
267
+ } = cellProps.row
268
+ return (
269
+ <KCSelect
270
+ data={[
271
+ { value: 0, text: '未验收' },
272
+ { value: 1, text: '已验收' },
273
+ ]}
274
+ value={status}
275
+ onChange={(value: any) => {
276
+ store.handleSetDataItem(index, { status: value })
277
+ }}
278
+ />
279
+ )
280
+ },
281
+ },
282
+ ],
283
+ []
284
+ )
285
+
286
+ return (
287
+ <div>
288
+ <SelectKeyboardTableX
289
+ id='keyboard_table_x'
290
+ columns={columns}
291
+ onAddRow={() => {
292
+ store.handleAddRow()
293
+ }}
294
+ data={store.data.slice()}
295
+ keyField='id'
296
+ selected={store.selected.slice()}
297
+ onSelect={(selected: number[]) => {
298
+ store.setSelected(selected)
299
+ }}
300
+ fixedSelect
301
+ />
302
+ </div>
303
+ )
304
+ }
305
+
306
+ export default {
307
+ title: 'Keyboard/Keyboard',
308
+ }