@gm-pc/react 1.28.0-beta.2 → 1.28.0-beta.4
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.4",
|
|
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.4",
|
|
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": "6e519841a2d50177de1073e36e98c7bc3241ff48"
|
|
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') {
|
|
@@ -352,12 +356,60 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
352
356
|
)
|
|
353
357
|
}
|
|
354
358
|
|
|
359
|
+
renderContent = () => {
|
|
360
|
+
const { loading, willActiveIndex, isFilterDelete } = this.state
|
|
361
|
+
|
|
362
|
+
if (loading) {
|
|
363
|
+
return (
|
|
364
|
+
<Flex alignCenter justifyCenter className='gm-bg gm-padding-5'>
|
|
365
|
+
<Loading size='20px' />
|
|
366
|
+
</Flex>
|
|
367
|
+
)
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
let filterData = this._getFilterData()
|
|
371
|
+
|
|
372
|
+
// 如果开启了过滤已删除商品功能,需要过滤掉已删除的商品
|
|
373
|
+
if (isFilterDelete) {
|
|
374
|
+
filterData = filterData
|
|
375
|
+
.map((group) => ({
|
|
376
|
+
...group,
|
|
377
|
+
children: group.children.filter((item) => !item.deleted),
|
|
378
|
+
}))
|
|
379
|
+
.filter((group) => group.children.length > 0)
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
if (!loading && filterData.length === 0) {
|
|
383
|
+
return this._renderEmpty()
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
if (!loading && filterData.length > 0) {
|
|
387
|
+
const {
|
|
388
|
+
selected = [],
|
|
389
|
+
multiple,
|
|
390
|
+
isGroupList,
|
|
391
|
+
renderListItem,
|
|
392
|
+
listHeight,
|
|
393
|
+
} = this.props
|
|
394
|
+
return (
|
|
395
|
+
<ListBase
|
|
396
|
+
selected={selected.map((v) => v.value)}
|
|
397
|
+
data={filterData}
|
|
398
|
+
multiple={multiple}
|
|
399
|
+
isGroupList={isGroupList}
|
|
400
|
+
className='gm-border-0'
|
|
401
|
+
renderItem={renderListItem}
|
|
402
|
+
onSelect={this._handleSelect}
|
|
403
|
+
isScrollTo
|
|
404
|
+
willActiveIndex={willActiveIndex!}
|
|
405
|
+
style={{ height: listHeight }}
|
|
406
|
+
/>
|
|
407
|
+
)
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
355
411
|
private _renderList = (config: ConfigProviderProps): ReactNode => {
|
|
356
412
|
const {
|
|
357
|
-
selected = [],
|
|
358
|
-
multiple,
|
|
359
|
-
isGroupList,
|
|
360
|
-
renderListItem,
|
|
361
413
|
searchPlaceholder,
|
|
362
414
|
listHeight,
|
|
363
415
|
popupClassName,
|
|
@@ -392,28 +444,7 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
392
444
|
placeholder={searchPlaceholder}
|
|
393
445
|
/>
|
|
394
446
|
</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>
|
|
447
|
+
<div style={{ height: listHeight }}>{this.renderContent()}</div>
|
|
417
448
|
{!loading &&
|
|
418
449
|
!!filterData.length &&
|
|
419
450
|
(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
|
|