mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-06 21:35:52 +08:00
fix: improve header styling in CustomCollapse component (#6449)
This commit is contained in:
parent
676c1cbe83
commit
5dc48580a0
@ -1,6 +1,6 @@
|
|||||||
import { Collapse } from 'antd'
|
import { Collapse } from 'antd'
|
||||||
import { merge } from 'lodash'
|
import { merge } from 'lodash'
|
||||||
import { FC, memo } from 'react'
|
import { FC, memo, useMemo, useState } from 'react'
|
||||||
|
|
||||||
interface CustomCollapseProps {
|
interface CustomCollapseProps {
|
||||||
label: React.ReactNode
|
label: React.ReactNode
|
||||||
@ -28,28 +28,45 @@ const CustomCollapse: FC<CustomCollapseProps> = ({
|
|||||||
style,
|
style,
|
||||||
styles
|
styles
|
||||||
}) => {
|
}) => {
|
||||||
|
const [activeKeys, setActiveKeys] = useState(activeKey || defaultActiveKey)
|
||||||
|
|
||||||
const defaultCollapseStyle = {
|
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 defaultCollpaseHeaderStyle = {
|
||||||
|
padding: '3px 16px',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
background: 'var(--color-background-soft)'
|
||||||
|
}
|
||||||
|
|
||||||
|
const getHeaderStyle = () => {
|
||||||
|
return activeKeys && activeKeys.length > 0
|
||||||
|
? {
|
||||||
|
...defaultCollpaseHeaderStyle,
|
||||||
|
borderTopLeftRadius: '8px',
|
||||||
|
borderTopRightRadius: '8px'
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
...defaultCollpaseHeaderStyle,
|
||||||
|
borderRadius: '8px'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const defaultCollapseItemStyles = {
|
const defaultCollapseItemStyles = {
|
||||||
header: {
|
header: getHeaderStyle(),
|
||||||
padding: '3px 16px',
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'space-between',
|
|
||||||
background: 'var(--color-background-soft)',
|
|
||||||
borderTopLeftRadius: '8px',
|
|
||||||
borderTopRightRadius: '8px'
|
|
||||||
},
|
|
||||||
body: {
|
body: {
|
||||||
borderTop: 'none'
|
borderTop: 'none'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const collapseStyle = merge({}, defaultCollapseStyle, style)
|
const collapseStyle = merge({}, defaultCollapseStyle, style)
|
||||||
const collapseItemStyles = merge({}, defaultCollapseItemStyles, styles)
|
const collapseItemStyles = useMemo(() => {
|
||||||
|
return merge({}, defaultCollapseItemStyles, styles)
|
||||||
|
}, [activeKeys])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Collapse
|
<Collapse
|
||||||
@ -59,6 +76,7 @@ const CustomCollapse: FC<CustomCollapseProps> = ({
|
|||||||
activeKey={activeKey}
|
activeKey={activeKey}
|
||||||
destroyInactivePanel={destroyInactivePanel}
|
destroyInactivePanel={destroyInactivePanel}
|
||||||
collapsible={collapsible}
|
collapsible={collapsible}
|
||||||
|
onChange={setActiveKeys}
|
||||||
items={[
|
items={[
|
||||||
{
|
{
|
||||||
styles: collapseItemStyles,
|
styles: collapseItemStyles,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user