feat(CustomCollapse): enhance component with customizable styles and improve usage in EditModelsPopup
This commit is contained in:
parent
8eb6632620
commit
d4bf8da225
@ -1,4 +1,5 @@
|
|||||||
import { Collapse } from 'antd'
|
import { Collapse } from 'antd'
|
||||||
|
import { merge } from 'lodash'
|
||||||
import { FC, memo } from 'react'
|
import { FC, memo } from 'react'
|
||||||
|
|
||||||
interface CustomCollapseProps {
|
interface CustomCollapseProps {
|
||||||
@ -9,6 +10,11 @@ interface CustomCollapseProps {
|
|||||||
defaultActiveKey?: string[]
|
defaultActiveKey?: string[]
|
||||||
activeKey?: string[]
|
activeKey?: string[]
|
||||||
collapsible?: 'header' | 'icon' | 'disabled'
|
collapsible?: 'header' | 'icon' | 'disabled'
|
||||||
|
style?: React.CSSProperties
|
||||||
|
styles?: {
|
||||||
|
header?: React.CSSProperties
|
||||||
|
body?: React.CSSProperties
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const CustomCollapse: FC<CustomCollapseProps> = ({
|
const CustomCollapse: FC<CustomCollapseProps> = ({
|
||||||
@ -18,14 +24,17 @@ const CustomCollapse: FC<CustomCollapseProps> = ({
|
|||||||
destroyInactivePanel = false,
|
destroyInactivePanel = false,
|
||||||
defaultActiveKey = ['1'],
|
defaultActiveKey = ['1'],
|
||||||
activeKey,
|
activeKey,
|
||||||
collapsible = undefined
|
collapsible = undefined,
|
||||||
|
style,
|
||||||
|
styles
|
||||||
}) => {
|
}) => {
|
||||||
const CollapseStyle = {
|
const defaultCollapseStyle = {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
background: 'transparent',
|
background: 'transparent',
|
||||||
border: '0.5px solid var(--color-border)'
|
border: '0.5px solid var(--color-border)'
|
||||||
}
|
}
|
||||||
const CollapseItemStyles = {
|
|
||||||
|
const defaultCollapseItemStyles = {
|
||||||
header: {
|
header: {
|
||||||
padding: '8px 16px',
|
padding: '8px 16px',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
@ -38,17 +47,21 @@ const CustomCollapse: FC<CustomCollapseProps> = ({
|
|||||||
borderTop: '0.5px solid var(--color-border)'
|
borderTop: '0.5px solid var(--color-border)'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const collapseStyle = merge({}, defaultCollapseStyle, style)
|
||||||
|
const collapseItemStyles = merge({}, defaultCollapseItemStyles, styles)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Collapse
|
<Collapse
|
||||||
bordered={false}
|
bordered={false}
|
||||||
style={CollapseStyle}
|
style={collapseStyle}
|
||||||
defaultActiveKey={defaultActiveKey}
|
defaultActiveKey={defaultActiveKey}
|
||||||
activeKey={activeKey}
|
activeKey={activeKey}
|
||||||
destroyInactivePanel={destroyInactivePanel}
|
destroyInactivePanel={destroyInactivePanel}
|
||||||
collapsible={collapsible}
|
collapsible={collapsible}
|
||||||
items={[
|
items={[
|
||||||
{
|
{
|
||||||
styles: CollapseItemStyles,
|
styles: collapseItemStyles,
|
||||||
key: '1',
|
key: '1',
|
||||||
label,
|
label,
|
||||||
extra,
|
extra,
|
||||||
|
|||||||
@ -199,7 +199,8 @@ const PopupContainer: React.FC<Props> = ({ provider: _provider, resolve }) => {
|
|||||||
return (
|
return (
|
||||||
<CustomCollapse
|
<CustomCollapse
|
||||||
key={i}
|
key={i}
|
||||||
defaultActiveKey={i >= 5 ? [] : ['1']}
|
defaultActiveKey={['1']}
|
||||||
|
styles={{ body: { padding: '0 10px' } }}
|
||||||
label={
|
label={
|
||||||
<Flex align="center" gap={10}>
|
<Flex align="center" gap={10}>
|
||||||
<span style={{ fontWeight: 600 }}>{group}</span>
|
<span style={{ fontWeight: 600 }}>{group}</span>
|
||||||
@ -233,13 +234,15 @@ const PopupContainer: React.FC<Props> = ({ provider: _provider, resolve }) => {
|
|||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
}>
|
}>
|
||||||
<FlexColumn>
|
<FlexColumn style={{ margin: '10px 0' }}>
|
||||||
{modelGroups[group].map((model) => (
|
{modelGroups[group].map((model) => (
|
||||||
<FileItem
|
<FileItem
|
||||||
style={{
|
style={{
|
||||||
backgroundColor: isModelInProvider(provider, model.id)
|
backgroundColor: isModelInProvider(provider, model.id)
|
||||||
? 'rgba(0, 126, 0, 0.06)'
|
? 'rgba(0, 126, 0, 0.06)'
|
||||||
: 'rgba(255, 255, 255, 0.04)'
|
: 'rgba(255, 255, 255, 0.04)',
|
||||||
|
border: 'none',
|
||||||
|
boxShadow: 'none'
|
||||||
}}
|
}}
|
||||||
key={model.id}
|
key={model.id}
|
||||||
fileInfo={{
|
fileInfo={{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user