@gm-pc/react 1.28.0-beta.2 → 1.28.0-beta.6
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gm-pc/react",
|
|
3
|
-
"version": "1.28.0-beta.
|
|
3
|
+
"version": "1.28.0-beta.6",
|
|
4
4
|
"description": "观麦前端基础组件库",
|
|
5
5
|
"author": "liyatang <liyatang@qq.com>",
|
|
6
6
|
"homepage": "https://github.com/gmfe/gm-pc#readme",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@gm-common/hooks": "^2.10.0",
|
|
26
26
|
"@gm-common/tool": "^2.10.0",
|
|
27
|
-
"@gm-pc/locales": "^1.28.0-beta.
|
|
27
|
+
"@gm-pc/locales": "^1.28.0-beta.6",
|
|
28
28
|
"big.js": "^6.0.1",
|
|
29
29
|
"classnames": "^2.2.5",
|
|
30
30
|
"lodash": "^4.17.19",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"react-router-dom": "^5.2.0",
|
|
49
49
|
"react-window": "^1.8.5"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "368692a99f02f1649395b3641323775af12fe817"
|
|
52
52
|
}
|
|
@@ -172,8 +172,14 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
172
172
|
event: ChangeEvent<HTMLInputElement>,
|
|
173
173
|
isInitSearch?: boolean
|
|
174
174
|
): void => {
|
|
175
|
+
const { onSearch } = this.props
|
|
175
176
|
const searchValue = event.target.value
|
|
176
177
|
this.setState({ searchValue })
|
|
178
|
+
if (onSearch && !this._isUnmounted) {
|
|
179
|
+
this.setState({
|
|
180
|
+
loading: true,
|
|
181
|
+
})
|
|
182
|
+
}
|
|
177
183
|
this._debounceDoSearch(searchValue)
|
|
178
184
|
setTimeout(() => {
|
|
179
185
|
// eslint-disable-next-line no-unused-expressions
|
|
@@ -187,14 +193,12 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
187
193
|
private _doSearch = (query: string): void => {
|
|
188
194
|
const { onSearch, data = [] } = this.props
|
|
189
195
|
if (!this._isUnmounted && onSearch) {
|
|
190
|
-
const result = onSearch(query, data)
|
|
191
|
-
if (!result) {
|
|
192
|
-
return
|
|
193
|
-
}
|
|
194
196
|
this.setState({ loading: true })
|
|
195
|
-
|
|
197
|
+
const result = onSearch(query, data)
|
|
196
198
|
Promise.resolve(result).finally(() => {
|
|
197
|
-
|
|
199
|
+
setTimeout(() => {
|
|
200
|
+
this.setState({ loading: false })
|
|
201
|
+
}, 50)
|
|
198
202
|
})
|
|
199
203
|
}
|
|
200
204
|
}
|
|
@@ -243,9 +247,9 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
243
247
|
}
|
|
244
248
|
|
|
245
249
|
private _getFilterData = () => {
|
|
246
|
-
const { data = [], renderListFilter, renderListFilterType } = this.props
|
|
250
|
+
const { data = [], renderListFilter, renderListFilterType, onSearch } = this.props
|
|
247
251
|
const { searchValue } = this.state
|
|
248
|
-
let filterData: MoreSelectGroupDataItem<V>[]
|
|
252
|
+
let filterData: MoreSelectGroupDataItem<V>[] = []
|
|
249
253
|
if (renderListFilter) {
|
|
250
254
|
filterData = renderListFilter(data, searchValue)
|
|
251
255
|
} else if (renderListFilterType === 'pinyin') {
|
|
@@ -313,10 +317,20 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
313
317
|
if (isChecked) {
|
|
314
318
|
// 全选当前过滤后的可用数据
|
|
315
319
|
const valuesToSelect = availableData.map((item) => item.value)
|
|
316
|
-
|
|
320
|
+
const prevSelectedValue = selected.map((item) => item.value)
|
|
321
|
+
// console.log(valuesToSelect, selected)
|
|
322
|
+
const newSelected = Array.from(
|
|
323
|
+
new Set([...prevSelectedValue, ...valuesToSelect])
|
|
324
|
+
)
|
|
325
|
+
this._handleSelect(newSelected)
|
|
317
326
|
} else {
|
|
318
|
-
// 取消全选
|
|
319
|
-
this.
|
|
327
|
+
// 取消全选 - 只反勾选availableData的数据
|
|
328
|
+
const { selected = [] } = this.props
|
|
329
|
+
const availableValues = availableData.map((item) => item.value)
|
|
330
|
+
const newSelected = selected.filter(
|
|
331
|
+
(item) => !availableValues.includes(item.value)
|
|
332
|
+
)
|
|
333
|
+
this._handleSelect(newSelected.map((item) => item.value))
|
|
320
334
|
}
|
|
321
335
|
}}
|
|
322
336
|
>
|
|
@@ -352,12 +366,60 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
352
366
|
)
|
|
353
367
|
}
|
|
354
368
|
|
|
369
|
+
renderContent = () => {
|
|
370
|
+
const { loading, willActiveIndex, isFilterDelete } = this.state
|
|
371
|
+
|
|
372
|
+
if (loading) {
|
|
373
|
+
return (
|
|
374
|
+
<Flex alignCenter justifyCenter className='gm-bg gm-padding-5'>
|
|
375
|
+
<Loading size='20px' />
|
|
376
|
+
</Flex>
|
|
377
|
+
)
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
let filterData = this._getFilterData()
|
|
381
|
+
|
|
382
|
+
// 如果开启了过滤已删除商品功能,需要过滤掉已删除的商品
|
|
383
|
+
if (isFilterDelete) {
|
|
384
|
+
filterData = filterData
|
|
385
|
+
.map((group) => ({
|
|
386
|
+
...group,
|
|
387
|
+
children: group.children.filter((item) => !item.deleted),
|
|
388
|
+
}))
|
|
389
|
+
.filter((group) => group.children.length > 0)
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (!loading && filterData.length === 0) {
|
|
393
|
+
return this._renderEmpty()
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
if (!loading && filterData.length > 0) {
|
|
397
|
+
const {
|
|
398
|
+
selected = [],
|
|
399
|
+
multiple,
|
|
400
|
+
isGroupList,
|
|
401
|
+
renderListItem,
|
|
402
|
+
listHeight,
|
|
403
|
+
} = this.props
|
|
404
|
+
return (
|
|
405
|
+
<ListBase
|
|
406
|
+
selected={selected.map((v) => v.value)}
|
|
407
|
+
data={filterData}
|
|
408
|
+
multiple={multiple}
|
|
409
|
+
isGroupList={isGroupList}
|
|
410
|
+
className='gm-border-0'
|
|
411
|
+
renderItem={renderListItem}
|
|
412
|
+
onSelect={this._handleSelect}
|
|
413
|
+
isScrollTo
|
|
414
|
+
willActiveIndex={willActiveIndex!}
|
|
415
|
+
style={{ height: listHeight }}
|
|
416
|
+
/>
|
|
417
|
+
)
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
355
421
|
private _renderList = (config: ConfigProviderProps): ReactNode => {
|
|
356
422
|
const {
|
|
357
|
-
selected = [],
|
|
358
|
-
multiple,
|
|
359
|
-
isGroupList,
|
|
360
|
-
renderListItem,
|
|
361
423
|
searchPlaceholder,
|
|
362
424
|
listHeight,
|
|
363
425
|
popupClassName,
|
|
@@ -392,28 +454,7 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
392
454
|
placeholder={searchPlaceholder}
|
|
393
455
|
/>
|
|
394
456
|
</div>
|
|
395
|
-
<div style={{ height: listHeight }}>
|
|
396
|
-
{loading && (
|
|
397
|
-
<Flex alignCenter justifyCenter className='gm-bg gm-padding-5'>
|
|
398
|
-
<Loading size='20px' />
|
|
399
|
-
</Flex>
|
|
400
|
-
)}
|
|
401
|
-
{!loading && !filterData.length && this._renderEmpty()}
|
|
402
|
-
{!loading && !!filterData.length && (
|
|
403
|
-
<ListBase
|
|
404
|
-
selected={selected.map((v) => v.value)}
|
|
405
|
-
data={filterData}
|
|
406
|
-
multiple={multiple}
|
|
407
|
-
isGroupList={isGroupList}
|
|
408
|
-
className='gm-border-0'
|
|
409
|
-
renderItem={renderListItem}
|
|
410
|
-
onSelect={this._handleSelect}
|
|
411
|
-
isScrollTo
|
|
412
|
-
willActiveIndex={willActiveIndex!}
|
|
413
|
-
style={{ height: listHeight }}
|
|
414
|
-
/>
|
|
415
|
-
)}
|
|
416
|
-
</div>
|
|
457
|
+
<div style={{ height: listHeight }}>{this.renderContent()}</div>
|
|
417
458
|
{!loading &&
|
|
418
459
|
!!filterData.length &&
|
|
419
460
|
(renderCustomizedBottom
|
|
@@ -93,7 +93,7 @@ interface MoreSelectBaseProps<V extends string | number = string>
|
|
|
93
93
|
onSelect(selected: MoreSelectDataItem<V>[]): void
|
|
94
94
|
|
|
95
95
|
/** 搜索回调 */
|
|
96
|
-
onSearch?(searchWord: string, data: MoreSelectGroupDataItem<V>[]): Promise<
|
|
96
|
+
onSearch?(searchWord: string, data: MoreSelectGroupDataItem<V>[]): Promise<any> | any
|
|
97
97
|
/** 点击回调 */
|
|
98
98
|
onClick?(selected: MoreSelectSelected<V>[]): void
|
|
99
99
|
|
|
@@ -128,7 +128,7 @@ interface MoreSelectProps<V extends string | number = string>
|
|
|
128
128
|
onSelect?(selected?: MoreSelectSelected<V>): void
|
|
129
129
|
onChange?(value: V | V[]): void
|
|
130
130
|
/** 搜索回调 */
|
|
131
|
-
onSearch?(searchWord: string, data: MoreSelectData<V>): Promise<void> |
|
|
131
|
+
onSearch?(searchWord: string, data: MoreSelectData<V>): Promise<void | any> | any
|
|
132
132
|
/** 点击回调 */
|
|
133
133
|
onClick?(selected: MoreSelectSelected<V>[]): void
|
|
134
134
|
|