diff --git a/src/dataDisplay/Accordion/accordion.stories.tsx b/src/dataDisplay/Accordion/accordion.stories.tsx index 71663c8d..d4b69ce7 100644 --- a/src/dataDisplay/Accordion/accordion.stories.tsx +++ b/src/dataDisplay/Accordion/accordion.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Accordion from './index'; +import { Accordion, AccordionSummary, AccordionDetails } from './index'; import { Card, Text, IconText } from '../../index'; export default { @@ -13,54 +13,54 @@ export default { export const SimpleAccordion = (): React.ReactElement => ( - + - } - detailsContent={ + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget. - } - /> - + + + - } - detailsContent={ + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget. - } - /> - + + + - } - detailsContent={ + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget. - } - /> + + ); @@ -73,39 +73,53 @@ export const CompactAccordion = (): React.ReactElement => ( alignItems: 'center', flexDirection: 'column', }}> - + - } - detailsContent={ + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget. - } - /> - + + + - } - detailsContent={ + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse malesuada lacus ex, sit amet blandit leo lobortis eget. - } - /> + + + + + + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. + + + ); diff --git a/src/dataDisplay/Accordion/index.tsx b/src/dataDisplay/Accordion/index.tsx index 45ba9738..8dc64ec2 100644 --- a/src/dataDisplay/Accordion/index.tsx +++ b/src/dataDisplay/Accordion/index.tsx @@ -1,16 +1,19 @@ -import React, { ReactNode, ReactElement } from 'react'; -import AccordionMUI from '@material-ui/core/Accordion'; -import AccordionSummaryMUI from '@material-ui/core/AccordionSummary'; -import AccordionDetailsMUI from '@material-ui/core/AccordionDetails'; +import React, { ReactElement } from 'react'; +import AccordionMUI, { + AccordionProps as AccordionMUIProps, +} from '@material-ui/core/Accordion'; +import AccordionSummaryMUI, { + AccordionSummaryProps as AccordionSummaryMUIProps, +} from '@material-ui/core/AccordionSummary'; import styled from 'styled-components'; import FixedIcon from '../FixedIcon'; -type AccordionProps = { +type StyledAccordionProps = AccordionMUIProps & { compact?: boolean; }; -export const StyledAccordion = styled(AccordionMUI)` +const StyledAccordion = styled(AccordionMUI)` &.MuiAccordion-root { border-radius: ${({ compact }) => (compact ? '8px' : '0')}; border: ${({ compact, theme }) => @@ -30,20 +33,23 @@ export const StyledAccordion = styled(AccordionMUI)` &.Mui-expanded { margin: ${({ compact }) => (compact ? '0 0 16px 0' : '0')}; } + + .MuiAccordionDetails-root { + padding: 16px; + } } `; -export const AccordionSummary = styled(AccordionSummaryMUI)` + +const StyledAccordionSummary = styled(AccordionSummaryMUI)` &.MuiAccordionSummary-root { &.Mui-expanded { min-height: 48px; border-bottom: 2px solid ${({ theme }) => theme.colors.separator}; - margin-bottom: ${({ compact }) => (compact ? '16px' : '0')}; background-color: ${({ theme }) => theme.colors.background}; } &:hover { background-color: ${({ theme }) => theme.colors.background}; - border-radius: ${({ compact }) => (compact ? '8px' : '0')}; } .MuiAccordionSummary-content { @@ -57,46 +63,31 @@ export const AccordionSummary = styled(AccordionSummaryMUI)` } } `; -export const AccordionDetails = styled(AccordionDetailsMUI)``; - -type Props = { - compact?: boolean; - id?: string; - onChange?: ( - event: React.ChangeEvent>, - expanded: boolean, - id?: string - ) => void; - summaryContent: ReactNode; - detailsContent: ReactNode; -}; -const Accordion = ({ +export const Accordion = ({ compact, - id, - onChange, - summaryContent, - detailsContent, + children, ...props -}: Props): ReactElement => { +}: StyledAccordionProps): ReactElement => { return ( - { - onChange?.(event, expanded, id); - }}> - } - aria-controls="panel1a-content" - id="panel1a-header"> - {summaryContent} - - {detailsContent} + + {children} ); }; -export default Accordion; +export const AccordionSummary = ({ + children, + ...props +}: AccordionSummaryMUIProps): ReactElement => { + return ( + } + {...props}> + {children} + + ); +}; + +export { default as AccordionActions } from '@material-ui/core/AccordionActions'; +export { default as AccordionDetails } from '@material-ui/core/AccordionDetails'; diff --git a/src/dataDisplay/index.ts b/src/dataDisplay/index.ts index bb6afd7c..5a38ec43 100644 --- a/src/dataDisplay/index.ts +++ b/src/dataDisplay/index.ts @@ -1,5 +1,5 @@ export { default as Card } from './Card'; -export { default as Accordion } from './Accordion'; +export * from './Accordion'; export { default as Divider } from './Divider'; export { default as Dot } from './Dot'; export { default as FixedIcon } from './FixedIcon';