@gm-pc/react 1.28.0-y.0 → 1.28.1-beta.1
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.
|
|
3
|
+
"version": "1.28.1-beta.1",
|
|
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.
|
|
27
|
+
"@gm-pc/locales": "^1.28.1-beta.1",
|
|
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": "7569ceca52d7946b2d44f48bf2a43f5fcaf7d715"
|
|
52
52
|
}
|
|
@@ -23,6 +23,7 @@ import { ConfigConsumer, ConfigProvider, ConfigProviderProps } from '../config_p
|
|
|
23
23
|
import { Checkbox } from '../checkbox'
|
|
24
24
|
import { Switch } from '../switch'
|
|
25
25
|
interface MoreSelectBaseState {
|
|
26
|
+
canClear?: boolean
|
|
26
27
|
searchValue: string
|
|
27
28
|
loading: boolean
|
|
28
29
|
/* keyboard 默认第一个位置 */
|
|
@@ -212,6 +213,12 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
212
213
|
onSelect(willSelected)
|
|
213
214
|
}
|
|
214
215
|
|
|
216
|
+
private _handleClearAll = (event: MouseEvent): void => {
|
|
217
|
+
event.stopPropagation()
|
|
218
|
+
const { onSelect = _.noop } = this.props
|
|
219
|
+
onSelect([])
|
|
220
|
+
}
|
|
221
|
+
|
|
215
222
|
private _handlePopupKeyDown = (event: KeyboardEvent<HTMLDivElement>): void => {
|
|
216
223
|
const { onKeyDown } = this.props
|
|
217
224
|
let willActiveIndex = this.state.willActiveIndex as number
|
|
@@ -292,6 +299,9 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
292
299
|
? flatFilterData.filter((item) => !item.deleted)
|
|
293
300
|
: flatFilterData
|
|
294
301
|
|
|
302
|
+
// 计算总数:availableData + selected,过滤重复值
|
|
303
|
+
const totalCount = _.uniqBy([...availableData, ...selected], 'value').length
|
|
304
|
+
|
|
295
305
|
// 检查是否所有可用数据都被选中
|
|
296
306
|
const allSelected =
|
|
297
307
|
availableData.length > 0 &&
|
|
@@ -334,7 +344,7 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
334
344
|
}
|
|
335
345
|
}}
|
|
336
346
|
>
|
|
337
|
-
全选({
|
|
347
|
+
全选({totalCount})
|
|
338
348
|
</Checkbox>
|
|
339
349
|
)}
|
|
340
350
|
{isShowDeletedSwitch && (
|
|
@@ -402,36 +412,38 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
402
412
|
listHeight,
|
|
403
413
|
} = this.props
|
|
404
414
|
|
|
405
|
-
const selectedValues = new Set(selected
|
|
415
|
+
const selectedValues = new Set(selected?.map((v) => v.value))
|
|
406
416
|
|
|
407
417
|
// 分离已勾选和未勾选的数据
|
|
408
418
|
const availableGroups: MoreSelectGroupDataItem<V>[] = []
|
|
419
|
+
// 已选中区域直接使用 selected 构建,不受筛选影响
|
|
420
|
+
const selectedGroups: MoreSelectGroupDataItem<V>[] = []
|
|
409
421
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
422
|
+
if (multiple) {
|
|
423
|
+
filterData.forEach((group) => {
|
|
424
|
+
const availableChildren = group.children.filter(
|
|
425
|
+
(item) => !selectedValues.has(item.value)
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
if (availableChildren.length > 0) {
|
|
429
|
+
availableGroups.push({
|
|
430
|
+
...group,
|
|
431
|
+
children: availableChildren,
|
|
432
|
+
})
|
|
433
|
+
}
|
|
434
|
+
})
|
|
414
435
|
|
|
415
|
-
if (
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
children:
|
|
436
|
+
if (selected.length > 0) {
|
|
437
|
+
selectedGroups.push({
|
|
438
|
+
label: '',
|
|
439
|
+
children: selected,
|
|
419
440
|
})
|
|
420
441
|
}
|
|
421
|
-
})
|
|
422
|
-
|
|
423
|
-
// 已选中区域直接使用 selected 构建,不受筛选影响
|
|
424
|
-
const selectedGroups: MoreSelectGroupDataItem<V>[] = []
|
|
425
|
-
if (selected.length > 0) {
|
|
426
|
-
selectedGroups.push({
|
|
427
|
-
label: '',
|
|
428
|
-
children: selected,
|
|
429
|
-
})
|
|
430
442
|
}
|
|
431
443
|
|
|
432
444
|
return (
|
|
433
445
|
<div style={{ height: listHeight, overflow: 'auto' }}>
|
|
434
|
-
{
|
|
446
|
+
{selected.length > 0 && multiple && (
|
|
435
447
|
<>
|
|
436
448
|
<div className='gm-more-select-section-title gm-padding-5 gm-text-desc gm-text-12'>
|
|
437
449
|
已选中
|
|
@@ -445,28 +457,28 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
445
457
|
renderItem={renderListItem}
|
|
446
458
|
onSelect={this._handleSelect}
|
|
447
459
|
isScrollTo={false}
|
|
448
|
-
willActiveIndex={willActiveIndex!}
|
|
449
460
|
/>
|
|
450
461
|
</>
|
|
451
462
|
)}
|
|
452
|
-
|
|
453
|
-
|
|
463
|
+
<>
|
|
464
|
+
{multiple && (
|
|
454
465
|
<div className='gm-more-select-section-title gm-padding-5 gm-text-desc gm-text-12'>
|
|
455
466
|
未选中
|
|
456
467
|
</div>
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
468
|
+
)}
|
|
469
|
+
|
|
470
|
+
<ListBase
|
|
471
|
+
selected={selected?.map((v) => v.value)}
|
|
472
|
+
data={multiple ? availableGroups : filterData}
|
|
473
|
+
multiple={multiple}
|
|
474
|
+
isGroupList={isGroupList}
|
|
475
|
+
className='gm-border-0'
|
|
476
|
+
renderItem={renderListItem}
|
|
477
|
+
onSelect={this._handleSelect}
|
|
478
|
+
isScrollTo
|
|
479
|
+
willActiveIndex={willActiveIndex!}
|
|
480
|
+
/>
|
|
481
|
+
</>
|
|
470
482
|
</div>
|
|
471
483
|
)
|
|
472
484
|
}
|
|
@@ -635,6 +647,10 @@ class MoreSelectBase<V extends string | number = string> extends Component<
|
|
|
635
647
|
)}
|
|
636
648
|
</Flex>
|
|
637
649
|
)}
|
|
650
|
+
<SVGRemove
|
|
651
|
+
className='gm-cursor gm-more-select-clear-btn'
|
|
652
|
+
onClick={disabled ? _.noop : this._handleClearAll}
|
|
653
|
+
/>
|
|
638
654
|
</>
|
|
639
655
|
)
|
|
640
656
|
}
|