All files / components TextDivision.tsx

0% Statements 0/8
0% Branches 0/12
0% Functions 0/3
0% Lines 0/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60                                                                                                                       
import { Partition, Division } from '../lib/graphql-utils'
import TextPartition from './TextPartition'
 
export interface TextDivisionProps {
  divisionType: string
  divisionPartitions?: Partition[]
  subDivisions?: Division[]
  aaPrefix: string
}
 
const TextDivision = ({
  divisionType,
  divisionPartitions = [],
  subDivisions = [],
  aaPrefix,
}: TextDivisionProps) => {
  const divisionContentJsx =
    divisionType === 'list'
      ? subDivisions.map((listItem: Division, index) => {
          return (
            <TextDivision
              key={index}
              divisionType={listItem.divisionType}
              divisionPartitions={listItem.divisionPartitions}
              aaPrefix={aaPrefix}
            />
          )
        })
      : divisionPartitions.map((partition: Partition, index) => {
          return (
            <TextPartition
              key={index}
              id={partition.id}
              type={partition.type}
              text={partition.text}
              css={partition.css}
              link={partition.link}
              assistiveText={partition.assistiveText}
              aaPrefix={aaPrefix}
            />
          )
        })
 
  const divisionJsx =
    divisionType === 'paragraph' ? (
      <p className="pb-4">{divisionContentJsx}</p>
    ) : divisionType === 'div' ? (
      <div className="pb-4">{divisionContentJsx}</div>
    ) : divisionType === 'list' ? (
      <ul className="list-disc pb-4 pl-4">{divisionContentJsx}</ul>
    ) : divisionType === 'list-item' ? (
      <li>{divisionContentJsx}</li>
    ) : (
      <></>
    )
 
  return <>{divisionJsx}</>
}
export default TextDivision