diff --git a/src/components/accordion/accordion-test.stories.tsx b/src/components/accordion/accordion-test.stories.tsx index c4f6f6c443..a2f4a69e20 100644 --- a/src/components/accordion/accordion-test.stories.tsx +++ b/src/components/accordion/accordion-test.stories.tsx @@ -3,10 +3,6 @@ import { action } from "@storybook/addon-actions"; import { Accordion, AccordionGroup } from "."; import Textbox from "../textbox"; import Box from "../box"; -import Button from "../button/button.component"; -import { Checkbox } from "../checkbox"; -import { Dl, Dt, Dd } from "../definition-list"; -import Link from "../link/link.component"; export default { title: "Accordion/Test", @@ -54,6 +50,11 @@ export default { type: "select", }, }, + disableContentPadding: { + control: { + type: "boolean", + }, + }, }, }; @@ -111,519 +112,3 @@ export const Grouped = ({ ...args }) => ( ); Grouped.storyName = "grouped"; - -const errorVal = "error"; -const warningVal = "warning"; -const infoVal = "info"; - -interface ValidationObject { - one: string; - two: string; - three: string; -} - -type Validations = keyof ValidationObject; - -// stories for component testing -export const AccordionComponent = ({ ...props }) => { - return ( - {}} - subTitle="Sub Title" - title="Title" - width="100%" - {...props} - > - Content - Content - Content - - ); -}; - -export const AccordionWithIcon = () => { - const [errors] = React.useState({ - one: errorVal, - }); - const [warnings] = React.useState({ - one: warningVal, - }); - - const [expanded, setExpanded] = React.useState({ - one: false, - }); - - return ( - - - setExpanded((previousState) => ({ - ...previousState, - one: !previousState.one, - })) - } - error={errors.one} - warning={warnings.one} - > - - - - ); -}; - -export const AccordionGroupWithError = () => { - const [errors] = React.useState({ - one: errorVal, - two: errorVal, - three: errorVal, - }); - - return ( - - - - - - - - - - ); -}; - -export const AccordionGroupWithWarning = () => { - const [warnings] = React.useState({ - one: warningVal, - }); - - return ( - - - - - - - - - - ); -}; - -export const AccordionGroupWithInfo = () => { - const [infos] = React.useState({ - one: infoVal, - }); - - return ( - - - - - - - - - - ); -}; - -export const AccordionGroupComponent = () => { - return ( - - {}} width="100%"> - - - - - {}} width="100%"> - - - - - {}} width="100%"> - Content - - - ); -}; - -export const DynamicContent = () => { - const [contentCount, setContentCount] = React.useState(3); - const modifyContentCount = (modifier: number) => { - if (modifier === 1) { - setContentCount(contentCount + 1); - } - if (modifier === -1 && contentCount > 0) { - setContentCount(contentCount - 1); - } - }; - return ( - <> - - - - {Array.from(Array(contentCount).keys()).map((value) => ( - Content - ))} - - - ); -}; - -// stories from storybook to import -export const AccordionDefault = ({ ...props }) => { - return ( - - Content - Content - Content - - ); -}; - -export const AccordionWithBoxAndDifferentPaddings = () => { - return ( - - - - - This is example content inside of the Box component with gray - background - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla in - ornare neque. Maecenas pellentesque et erat tincidunt mollis. Etiam - diam nisi, elementum efficitur ipsum et, imperdiet iaculis ligula. - Cras eget lorem aliquam lorem mollis fringilla a sit amet nisl. - Donec semper odio elit, tempus ultrices est molestie id. Ut sit amet - sollicitudin ipsum, eu tristique ligula. Praesent velit velit, - finibus ut odio sit amet, fringilla iaculis lacus. Aliquam facilisis - libero nec ipsum tincidunt imperdiet. Ut commodo mi ac odio blandit, - ac molestie ante dapibus. Ut molestie auctor turpis, quis ultrices - ante aliquet eu. Aenean et condimentum arcu, non malesuada elit. - Cras a magna vestibulum, semper tortor id, molestie eros. - - - - - - - This is example content inside of the Box component with gray - background - - - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla in - ornare neque. Maecenas pellentesque et erat tincidunt mollis. Etiam - diam nisi, elementum efficitur ipsum et, imperdiet iaculis ligula. - Cras eget lorem aliquam lorem mollis fringilla a sit amet nisl. - Donec semper odio elit, tempus ultrices est molestie id. Ut sit amet - sollicitudin ipsum, eu tristique ligula. Praesent velit velit, - finibus ut odio sit amet, fringilla iaculis lacus. Aliquam facilisis - libero nec ipsum tincidunt imperdiet. Ut commodo mi ac odio blandit, - ac molestie ante dapibus. Ut molestie auctor turpis, quis ultrices - ante aliquet eu. Aenean et condimentum arcu, non malesuada elit. - Cras a magna vestibulum, semper tortor id, molestie eros. - - - - - ); -}; - -export const AccordionOpeningButton = () => { - return ( - - - Content - Content - Content - -
- - Content - Content - Content - -
- - Content - Content - Content - -
- - Content - Content - Content - -
- ); -}; - -export const AccordionGroupDefault = () => { - return ( - - - - - - - - - - - - - - Content - Content - Content - - - - ); -}; - -export const AccordionGroupValidation = () => { - const [errors, setErrors] = React.useState({ - one: errorVal, - two: errorVal, - three: errorVal, - }); - const [warnings, setWarnings] = React.useState({ - one: warningVal, - two: warningVal, - three: warningVal, - }); - const [infos, setInfos] = React.useState({ - one: infoVal, - two: infoVal, - three: infoVal, - }); - const [expanded, setExpanded] = React.useState({ - one: false, - two: false, - three: true, - }); - - const handleChange = ( - id: Validations, - type: ValidationObject, - setter: React.Dispatch>, - msg: string - ) => { - const update = type[id] ? undefined : msg; - setter((previous: ValidationObject) => ({ ...previous, [id]: update })); - }; - - return ( - - - - setExpanded((previousState) => ({ - ...previousState, - one: !previousState.one, - })) - } - error={errors.one} - warning={warnings.one} - info={infos.one} - > - - handleChange("one", errors, setErrors, "error")} - checked={!!errors.one} - /> - - handleChange("one", warnings, setWarnings, "warning") - } - /> - handleChange("one", infos, setInfos, "info")} - /> - - - - setExpanded((previousState) => ({ - ...previousState, - two: !previousState.two, - })) - } - subTitle="Sub title" - error={errors.two} - warning={warnings.two} - info={infos.two} - > - - handleChange("two", errors, setErrors, "error")} - checked={!!errors.two} - /> - - handleChange("two", warnings, setWarnings, "warning") - } - /> - handleChange("two", infos, setInfos, "info")} - /> - - - - setExpanded((previousState) => ({ - ...previousState, - three: !previousState.three, - })) - } - subTitle="This is a longer sub title" - error={errors.three} - warning={warnings.three} - info={infos.three} - > - - handleChange("three", errors, setErrors, "error")} - checked={!!errors.three} - /> - - handleChange("three", warnings, setWarnings, "warning") - } - /> - handleChange("three", infos, setInfos, "info")} - /> - - - - - ); -}; - -export const AccordionWithDefinitionList = () => { - return ( - -
-
Drink
-
Coffee
-
Brew Method
-
Stove Top Moka Pot
-
Brand of Coffee
-
Magic Coffee Beans
-
Website
-
- Magic Coffee Beans Website -
-
Email
-
- magic@coffeebeans.com -
-
Main and Registered Address
-
Magic Coffee Beans,
-
In The Middle of Our Street,
-
Madness,
-
CO4 3VE
-
- -
-
-
- ); -}; diff --git a/src/components/accordion/accordion.spec.tsx b/src/components/accordion/accordion.spec.tsx index da1f2bb0b4..9e7768fb6e 100644 --- a/src/components/accordion/accordion.spec.tsx +++ b/src/components/accordion/accordion.spec.tsx @@ -655,7 +655,6 @@ describe("Accordion", () => { assertStyleMatch( { border: "none", - alignItems: "flex-start", }, wrapper.find(StyledAccordionContainer) ); diff --git a/src/components/accordion/accordion.style.ts b/src/components/accordion/accordion.style.ts index b8fb638991..0b45b338c9 100644 --- a/src/components/accordion/accordion.style.ts +++ b/src/components/accordion/accordion.style.ts @@ -27,7 +27,7 @@ const StyledAccordionContainer = styled.div` ${space} display: flex; align-items: ${({ buttonHeading, variant }) => - buttonHeading || variant === "subtle" ? "flex-start" : "stretch"}; + (!buttonHeading || variant !== "subtle") && "stretch"}; justify-content: center; flex-direction: column; box-sizing: border-box; @@ -187,6 +187,7 @@ const StyledAccordionTitleContainer = styled.div` padding-top: var(--spacing100); overflow: hidden; - ${({ disableContentPadding }) => - disableContentPadding && - css` - padding: 0; - `} - ${({ variant }) => variant === "subtle" && css` @@ -298,6 +293,12 @@ const StyledAccordionContent = styled.div` padding: var(--spacing100) var(--spacing200) var(--spacing300); border-left: 2px solid var(--colorsUtilityMajor100); `} + + ${({ disableContentPadding }) => + disableContentPadding && + css` + padding: 0; + `} `; StyledAccordionGroup.defaultProps = { diff --git a/src/components/accordion/components.test-pw.tsx b/src/components/accordion/components.test-pw.tsx index d7e53230c5..8d684227ed 100644 --- a/src/components/accordion/components.test-pw.tsx +++ b/src/components/accordion/components.test-pw.tsx @@ -7,28 +7,6 @@ import { Checkbox } from "../checkbox"; import { Dl, Dt, Dd } from "../definition-list"; import Link from "../link/link.component"; -export const Grouped = () => ( - - - - - - - - - - - - - -
Content
-
Content
-
Content
-
-
-
-); - const errorVal = "error"; const warningVal = "warning"; const infoVal = "info";