4
4
Card ,
5
5
Collapse ,
6
6
Icon ,
7
- IconName ,
8
7
Intent ,
9
8
Menu ,
10
9
MenuItem ,
@@ -24,15 +23,11 @@ import { Group, Operator } from '../../EditorSheet'
24
23
import { GroupListModifyProp } from '../SheetGroup'
25
24
import { OperatorNoData } from '../SheetNoneData'
26
25
import { useSheet } from '../SheetProvider'
26
+ import { CollapseButton , SheetGroupOperatorSelectProp } from './CollapseButton'
27
27
import {
28
28
OperatorInGroupItem ,
29
29
OperatorInGroupItemProp ,
30
30
} from './OperatorInGroupItem'
31
- import {
32
- CollapseButton ,
33
- SheetGroupOperatorSelectProp ,
34
- SheetGroupOperatorSelectTrigger ,
35
- } from './SheetGroupOperatorSelect'
36
31
import { SheetOperatorEditor } from './SheetOperatorEditor'
37
32
38
33
export interface GroupItemProps
@@ -42,111 +37,6 @@ export interface GroupItemProps
42
37
pinned : boolean
43
38
}
44
39
45
- export const GroupItem = ( {
46
- groupInfo,
47
- exist,
48
- pinned,
49
- groupAddHandle,
50
- groupRemoveHandle,
51
- groupPinHandle,
52
- groupUpdateHandle,
53
- ...rest
54
- } : GroupItemProps ) => {
55
- const editable = typeof groupRemoveHandle === 'function'
56
- const [ showOperators , setShowOperators ] = useState ( editable )
57
-
58
- const renameEventHandle = ( name : string ) =>
59
- groupUpdateHandle ?.( { ...groupInfo , name } )
60
-
61
- const changeGroupedOperatorSkillHandle = ( value : Operator ) => {
62
- // deep copy
63
- const groupInfoCopy = JSON . parse ( JSON . stringify ( groupInfo ) )
64
- groupInfoCopy . opers ! [
65
- groupInfoCopy . opers ! . findIndex ( ( { name } ) => name === value . name )
66
- ] = value
67
- groupUpdateHandle ?.( groupInfoCopy )
68
- }
69
-
70
- const OperatorsPart = (
71
- < Collapse isOpen = { showOperators } >
72
- < div className = "w-full pt-1" >
73
- { groupInfo . opers ?. length
74
- ? groupInfo . opers ?. map ( ( item ) => (
75
- < OperatorInGroupItem
76
- key = { item . name }
77
- operatorInfo = { item }
78
- onOperatorSkillChange = { changeGroupedOperatorSkillHandle }
79
- />
80
- ) )
81
- : ! editable && OperatorNoData }
82
- { editable && (
83
- < SheetGroupOperatorSelectTrigger
84
- groupInfo = { groupInfo }
85
- groupUpdateHandle = { groupUpdateHandle }
86
- { ...rest }
87
- />
88
- ) }
89
- </ div >
90
- </ Collapse >
91
- )
92
-
93
- const pinText = pinned ? `从收藏分组中移除` : `添加至收藏分组`
94
- const pinIcon : IconName = pinned ? 'star' : 'star-empty'
95
-
96
- return (
97
- < Card interactive = { ! exist } className = "mt-1 mx-0.5" >
98
- < div className = "flex items-center" >
99
- < GroupTitle
100
- groupTitle = { groupInfo . name }
101
- editable = { editable }
102
- renameSubmit = { renameEventHandle }
103
- />
104
- < div className = "ml-auto flex items-center" >
105
- < CollapseButton
106
- isCollapse = { showOperators }
107
- onClick = { ( ) => setShowOperators ( ! showOperators ) }
108
- />
109
- { editable ? (
110
- < CardDeleteOption
111
- className = "cursor-pointer"
112
- onClick = { ( ) => groupRemoveHandle ?.( groupInfo . _id || '' ) }
113
- />
114
- ) : (
115
- < Button
116
- minimal
117
- icon = { exist ? 'tick' : 'arrow-left' }
118
- title = { exist ? '已选择' : '使用该推荐分组' }
119
- onClick = { ( ) => groupAddHandle ?.( groupInfo ) }
120
- />
121
- ) }
122
- { ( editable || pinned ) && (
123
- < Popover2
124
- disabled = { ! pinned }
125
- content = {
126
- < Menu className = "p-0" >
127
- < MenuItem
128
- text = { pinText }
129
- icon = { pinIcon }
130
- onClick = { ( ) => groupPinHandle ?.( groupInfo ) }
131
- />
132
- </ Menu >
133
- }
134
- >
135
- < Button
136
- minimal
137
- icon = { pinIcon }
138
- title = { pinText }
139
- onClick = { pinned ? undefined : ( ) => groupPinHandle ?.( groupInfo ) }
140
- />
141
- </ Popover2 >
142
- ) }
143
- </ div >
144
- </ div >
145
- { OperatorsPart }
146
- </ Card >
147
- )
148
- }
149
-
150
40
const GroupTitle = ( {
151
41
groupTitle,
152
42
// editable,
0 commit comments