optimize override

This commit is contained in:
pompurin404 2024-09-11 23:23:41 +08:00
parent 772ea50311
commit 0da787c228
No known key found for this signature in database

View File

@ -6,14 +6,18 @@ import {
ModalFooter, ModalFooter,
Button, Button,
Input, Input,
Select, Switch,
SelectItem, Dropdown,
Switch DropdownTrigger,
DropdownMenu,
DropdownItem
} from '@nextui-org/react' } from '@nextui-org/react'
import React, { useState } from 'react' import React, { useState } from 'react'
import SettingItem from '../base/base-setting-item' import SettingItem from '../base/base-setting-item'
import { useOverrideConfig } from '@renderer/hooks/use-override-config' import { useOverrideConfig } from '@renderer/hooks/use-override-config'
import { restartCore } from '@renderer/utils/ipc' import { restartCore } from '@renderer/utils/ipc'
import { MdDeleteForever } from 'react-icons/md'
import { FaPlus } from 'react-icons/fa6'
interface Props { interface Props {
item: IProfileItem item: IProfileItem
updateProfileItem: (item: IProfileItem) => Promise<void> updateProfileItem: (item: IProfileItem) => Promise<void>
@ -92,24 +96,58 @@ const EditInfoModal: React.FC<Props> = (props) => {
</> </>
)} )}
<SettingItem title="覆写"> <SettingItem title="覆写">
<Select <div>
className="w-[200px]" {values.override?.map((i) => {
size="sm" if (!overrideItems.find((t) => t.id === i)) return null
selectionMode="multiple" return (
selectedKeys={new Set(values.override || [])} <div className="flex mb-2" key={i}>
onSelectionChange={(v) => { <Button disabled fullWidth variant="flat" size="sm">
setValues({ {overrideItems.find((t) => t.id === i)?.name}
...values, </Button>
override: Array.from(v) <Button
.map((i) => i.toString()) color="warning"
.filter((i) => overrideItems.find((t) => t.id === i)) variant="flat"
}) className="ml-2"
}} size="sm"
> onPress={() => {
{overrideItems.map((i) => ( setValues({
<SelectItem key={i.id}>{i.name}</SelectItem> ...values,
))} override: values.override
</Select> ?.filter((i) => overrideItems.find((t) => t.id === i))
.filter((t) => t !== i)
})
}}
>
<MdDeleteForever className="text-lg" />
</Button>
</div>
)
})}
<Dropdown>
<DropdownTrigger>
<Button fullWidth size="sm" variant="flat" color="default">
<FaPlus />
</Button>
</DropdownTrigger>
<DropdownMenu
emptyContent="没有可用的覆写"
onAction={(key) => {
setValues({
...values,
override: Array.from(values.override || [])
.filter((i) => overrideItems.find((t) => t.id === i))
.concat(key.toString())
})
}}
>
{overrideItems
.filter((i) => !values.override?.includes(i.id))
.map((i) => (
<DropdownItem key={i.id}>{i.name}</DropdownItem>
))}
</DropdownMenu>
</Dropdown>
</div>
</SettingItem> </SettingItem>
</ModalBody> </ModalBody>
<ModalFooter> <ModalFooter>