diff --git a/app/soapbox/components/ui/accordion/accordion.tsx b/app/soapbox/components/ui/accordion/accordion.tsx index f83a011be..842032242 100644 --- a/app/soapbox/components/ui/accordion/accordion.tsx +++ b/app/soapbox/components/ui/accordion/accordion.tsx @@ -21,13 +21,16 @@ interface IAccordion { menu?: Menu expanded?: boolean onToggle?: (value: boolean) => void + action?: () => void + actionIcon?: string + actionLabel?: string } /** * Accordion * An accordion is a vertically stacked group of collapsible sections. */ -const Accordion: React.FC = ({ headline, children, menu, expanded = false, onToggle = () => {} }) => { +const Accordion: React.FC = ({ headline, children, menu, expanded = false, onToggle = () => {}, action, actionIcon, actionLabel }) => { const intl = useIntl(); const handleToggle = (e: React.MouseEvent) => { @@ -35,6 +38,13 @@ const Accordion: React.FC = ({ headline, children, menu, expanded = e.preventDefault(); }; + const handleAction = (e: React.MouseEvent) => { + if (!action) return; + + action(); + e.preventDefault(); + }; + return (
+ )} { const explanationBoxExpanded = settings.get('explanationBox'); const showExplanationBox = settings.get('showExplanationBox'); - const explanationBoxMenu = () => { - return [{ text: intl.formatMessage(messages.dismiss), action: dismissExplanationBox }]; - }; - const dismissExplanationBox = () => { dispatch(changeSetting(['showExplanationBox'], false)); }; @@ -66,7 +62,9 @@ const CommunityTimeline = () => { {showExplanationBox &&
} - menu={explanationBoxMenu()} + action={dismissExplanationBox} + actionIcon={require('@tabler/icons/x.svg')} + actionLabel={intl.formatMessage(messages.dismiss)} expanded={explanationBoxExpanded} onToggle={toggleExplanationBox} >