Skip to content

Commit 28c46fa

Browse files
author
GeorgeZhang2035
committed
temp storage
1 parent 6e34afd commit 28c46fa

File tree

5 files changed

+149
-28
lines changed

5 files changed

+149
-28
lines changed

src/components/editor/operator/sheet/SheetGroup.tsx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { Group, Operator } from '../EditorSheet'
2020
import { SheetContainerSkeleton } from './SheetContainerSkeleton'
2121
import { GroupNoData } from './SheetNoneData'
2222
import { useSheet } from './SheetProvider'
23-
import { GroupItem } from './sheetGroup/SheetGroupItem'
23+
import { GroupItem, SheetGroupItem } from './sheetGroup/SheetGroupItem'
2424

2525
export interface SheetGroupProps {}
2626

@@ -199,17 +199,18 @@ const SheetGroup: FC<SheetGroupProps> = () => {
199199
{existedGroups.length ? (
200200
<>
201201
{existedGroups.map((item) => (
202-
<GroupItem
203-
key={item.name}
204-
existedGroup={existedGroups}
205-
existedOperator={existedOperators}
206-
groupInfo={item}
207-
exist={checkGroupExisted(item.name)}
208-
pinned={checkGroupPinned(item)}
209-
groupRemoveHandle={groupRemoveHandle}
210-
groupPinHandle={groupPinHandle}
211-
groupUpdateHandle={groupUpdateHandle}
212-
/>
202+
// <GroupItem
203+
// key={item.name}
204+
// existedGroup={existedGroups}
205+
// existedOperator={existedOperators}
206+
// groupInfo={item}
207+
// exist={checkGroupExisted(item.name)}
208+
// pinned={checkGroupPinned(item)}
209+
// groupRemoveHandle={groupRemoveHandle}
210+
// groupPinHandle={groupPinHandle}
211+
// groupUpdateHandle={groupUpdateHandle}
212+
// />
213+
<SheetGroupItem groupInfo={item} itemType="selected" />
213214
))}
214215
<H6 className="my-2 text-center">
215216
已显示全部 {existedGroups.length} 个干员组

src/components/editor/operator/sheet/SheetOperatorSkillAbout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ export const SkillAboutTrigger = ({
127127
if (operator) e.stopPropagation()
128128
}}
129129
role="presentation"
130+
className="cursor-pointer"
130131
>
131132
<Popover2 content={SkillAboutForm} disabled={!operator}>
132133
{SkillAboutTrigger}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { Card } from '@blueprintjs/core'
2+
3+
import { FC } from 'react'
4+
5+
import { OperatorAvatar } from '../../EditorOperator'
6+
import { Operator } from '../../EditorSheet'
7+
import { SkillAboutTrigger } from '../SheetOperatorSkillAbout'
8+
9+
export interface OperatorInGroupItemProp {
10+
operatorInfo: Operator
11+
onOperatorSkillChange?: (operatorInfo: Operator) => void
12+
}
13+
14+
export const OperatorInGroupItem: FC<OperatorInGroupItemProp> = ({
15+
onOperatorSkillChange,
16+
operatorInfo: { name, ...restField },
17+
}) => (
18+
<Card className="flex items-center w-full h-full justify-between">
19+
<>
20+
<div className="flex items-center">
21+
<OperatorAvatar name={name} size="large" />
22+
<p className="font-bold leading-none text-center truncate ml-2 mr-auto">
23+
{name}
24+
</p>
25+
</div>
26+
{!!onOperatorSkillChange && (
27+
<SkillAboutTrigger
28+
operator={{ name, ...restField }}
29+
onSkillChange={onOperatorSkillChange}
30+
/>
31+
)}
32+
</>
33+
</Card>
34+
)

src/components/editor/operator/sheet/sheetGroup/SheetGroupItem.tsx

Lines changed: 99 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,19 @@ import {
1212
import { Popover2 } from '@blueprintjs/popover2'
1313

1414
import clsx from 'clsx'
15-
import { useRef, useState } from 'react'
15+
import { useAtom, useSetAtom } from 'jotai'
16+
import { FC, useMemo, useRef, useState } from 'react'
1617
import { useForm } from 'react-hook-form'
1718

1819
import { CardDeleteOption } from 'components/editor/CardOptions'
20+
import { favGroupAtom } from 'store/useFavGroups'
1921

2022
import { Group, Operator } from '../../EditorSheet'
2123
import { GroupListModifyProp } from '../SheetGroup'
2224
import { OperatorNoData } from '../SheetNoneData'
2325
import { OperatorItem } from '../SheetOperatorItem'
26+
import { useSheet } from '../SheetProvider'
27+
import { OperatorInGroupItem } from './OperatorInGroupItem'
2428
import {
2529
CollapseButton,
2630
SheetGroupOperatorSelectProp,
@@ -64,16 +68,20 @@ export const GroupItem = ({
6468
<div className="w-full pt-1">
6569
{groupInfo.opers?.length
6670
? groupInfo.opers?.map((item) => (
67-
<OperatorItem
68-
key={item.name}
69-
operator={item}
70-
name={item.name}
71-
selected
72-
scaleDisable
73-
interactive={false}
74-
horizontal
75-
readOnly={!exist}
76-
onSkillChange={changeGroupedOperatorSkillHandle}
71+
// <OperatorItem
72+
// key={item.name}
73+
// operator={item}
74+
// name={item.name}
75+
// selected
76+
// scaleDisable
77+
// interactive={false}
78+
// horizontal
79+
// readOnly={!exist}
80+
// onSkillChange={changeGroupedOperatorSkillHandle}
81+
// />
82+
<OperatorInGroupItem
83+
operatorInfo={item}
84+
onOperatorSkillChange={changeGroupedOperatorSkillHandle}
7785
/>
7886
))
7987
: !editable && OperatorNoData}
@@ -147,13 +155,14 @@ export const GroupItem = ({
147155

148156
const GroupTitle = ({
149157
groupTitle,
150-
editable,
158+
// editable,
151159
renameSubmit,
152160
}: {
153161
editable: boolean
154-
renameSubmit: (newName: string) => void
162+
renameSubmit?: (newName: string) => void
155163
groupTitle: string
156164
}) => {
165+
const editable = !!renameSubmit
157166
const [editName, setEditName] = useState('')
158167
const [nameEditState, setNameEditState] = useState(false)
159168
const [alertState, setAlertState] = useState(false)
@@ -200,7 +209,7 @@ const GroupTitle = ({
200209
className="flex items-center"
201210
onSubmit={handleSubmit(() => {
202211
ignoreBlur.current = true
203-
renameSubmit(editName || groupTitle)
212+
renameSubmit?.(editName || groupTitle)
204213
setNameEditState(false)
205214
inputRef.current?.blur()
206215
})}
@@ -240,3 +249,79 @@ const GroupTitle = ({
240249
</>
241250
)
242251
}
252+
253+
type ItemType = 'recommend' | 'selected' | 'fav'
254+
255+
export interface SheetGroupItemProp {
256+
groupInfo: Group
257+
itemType: ItemType
258+
}
259+
260+
export const SheetGroupItem: FC<SheetGroupItemProp> = ({
261+
groupInfo,
262+
itemType,
263+
}) => {
264+
const { selected, onGroupNameChange } = useSheetGroupItemController({
265+
groupInfo,
266+
itemType,
267+
})
268+
269+
return (
270+
<Card interactive={!selected} className="mt-1 mx-0.5">
271+
<div className="flex items-center justify-between">
272+
<GroupTitle
273+
groupTitle={groupInfo.name}
274+
editable
275+
renameSubmit={onGroupNameChange}
276+
/>
277+
<div></div>
278+
</div>
279+
</Card>
280+
)
281+
}
282+
283+
type SheetGroupItemController = {
284+
selected: boolean
285+
onGroupNameChange: ((name: string) => void) | undefined
286+
defaultOperatorCollapseOpen: boolean
287+
}
288+
289+
const useSheetGroupItemController = ({
290+
groupInfo,
291+
itemType,
292+
}: SheetGroupItemProp): SheetGroupItemController => {
293+
const { submitGroup } = useSheet()
294+
const [favGroup, setFavGroup] = useAtom(favGroupAtom)
295+
296+
switch (itemType) {
297+
case 'selected':
298+
return {
299+
selected: true,
300+
onGroupNameChange: (name: string) =>
301+
submitGroup({ ...groupInfo, name }, undefined, true),
302+
defaultOperatorCollapseOpen: true,
303+
}
304+
case 'recommend':
305+
return {
306+
selected: false,
307+
onGroupNameChange: undefined,
308+
defaultOperatorCollapseOpen: false,
309+
}
310+
case 'fav':
311+
return {
312+
selected: false,
313+
onGroupNameChange: (name: string) =>
314+
setFavGroup([
315+
...favGroup.filter(({ name: favName }) => favName !== name),
316+
{ ...groupInfo, name },
317+
]),
318+
defaultOperatorCollapseOpen: false,
319+
}
320+
default:
321+
return {
322+
selected: false,
323+
onGroupNameChange: undefined,
324+
defaultOperatorCollapseOpen: false,
325+
}
326+
}
327+
}

src/components/editor/operator/sheet/sheetGroup/SheetGroupOperatorSelect.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,10 @@ interface CollapseButtonProps extends ButtonProps {
219219
isCollapse: boolean
220220
}
221221

222-
export const CollapseButton = ({
222+
export const CollapseButton: FC<CollapseButtonProps> = ({
223223
isCollapse,
224224
...buttonProps
225-
}: CollapseButtonProps) => (
225+
}) => (
226226
<Button
227227
{...{
228228
...buttonProps,

0 commit comments

Comments
 (0)