fix: improve header styling in CustomCollapse component (#6449)

This commit is contained in:
Konv Suu 2025-05-26 10:10:21 +08:00 committed by GitHub
parent 676c1cbe83
commit 5dc48580a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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,