diff --git a/packages/unity-bootstrap-theme/src/js/collapse.js b/packages/unity-bootstrap-theme/src/js/collapse.js new file mode 100644 index 0000000000..f13aa19984 --- /dev/null +++ b/packages/unity-bootstrap-theme/src/js/collapse.js @@ -0,0 +1,23 @@ +import { adjustShrinkingElementIfAboveViewport } from "@shared"; + +import { EventHandler } from "./bootstrap-helper"; + +function initCollapse() { + function accordionClick({target}) { + const targetHref = target.getAttribute("href"); + if (target.getAttribute("data-bs-toggle") !== "collapse" || !targetHref || !targetHref.includes("#")) { + return; // Exit the function - not a collapse link + } + + /** + * Find the first accordion that is currently collapsing or expanding + * Function will determine if scroll adjustment is needed + */ + adjustShrinkingElementIfAboveViewport(document.querySelector(".collapsing")); + } + EventHandler.on(document, "click.uds.collapse", accordionClick); +} + +EventHandler.on(window, "load.uds.collapse", initCollapse); + +export { initCollapse }; diff --git a/packages/unity-bootstrap-theme/src/js/unity-bootstrap.js b/packages/unity-bootstrap-theme/src/js/unity-bootstrap.js index b3783e3931..a74bdc8747 100644 --- a/packages/unity-bootstrap-theme/src/js/unity-bootstrap.js +++ b/packages/unity-bootstrap-theme/src/js/unity-bootstrap.js @@ -5,6 +5,7 @@ import { initCalendar } from "./calendar.js"; import { initCardBodies } from "./card-bodies.js"; import { initRankingCard } from "./card-ranking.js"; import { initChart } from "./charts-and-graphs.js"; +import { initCollapse } from "./collapse.js"; import { initDataLayer } from "./data-layer.js"; import { initGlobalHeader } from "./global-header.js"; import { initHeroesVideo } from "./heroes-video.js"; @@ -19,6 +20,7 @@ const unityBootstrap = { initAnchorMenu, initBlockquoteAnimation, initCalendar, + initCollapse, initChart, initDataLayer, initFixedTable, diff --git a/packages/unity-bootstrap-theme/src/scss/extends/_cards.scss b/packages/unity-bootstrap-theme/src/scss/extends/_cards.scss index d165381a1c..165321cce5 100644 --- a/packages/unity-bootstrap-theme/src/scss/extends/_cards.scss +++ b/packages/unity-bootstrap-theme/src/scss/extends/_cards.scss @@ -691,6 +691,13 @@ Cards - Table of Contents 7. Accordion --------------------------------------------------------------------*/ .accordion { + &:focus { + outline: none!important; + box-shadow: 0 0 0 1px $uds-color-base-gray-7 !important; + border: 1px solid $uds-color-base-gray-7 !important; + margin: 4px; + width: -webkit-fill-available; + } .accordion-item { border-bottom: 1px solid $uds-color-base-gray-3; border-top: 1px solid $uds-color-base-gray-3; diff --git a/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.examples.stories.js b/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.examples.stories.js index 78db067aba..c246c9b023 100644 --- a/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.examples.stories.js +++ b/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.examples.stories.js @@ -8,484 +8,11 @@ export default { parameters: { controls: { disable: true } }, }; -export const FoldableCardDefaultOpen = () => +export const Default = () => -
-
-
-

- -

-
-
-
-

This is a quaternary headline

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor -

-
-
-
-
-
-
; - - -export const ColorAccents = () => - - -
-
-
-

- -

-
- {/* end .accordion-header */} -
-
-

Quatrenary Headline

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
-
- {/* end .accordion-body */} -
- {/* end .card */} - -
-
-

- -

-
-
-
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor -

-
-
- {/* end .accordion-body */} -
- {/* end .card */} - -
-
-

- -

-
-
-
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
-
- {/* end .accordion-body */} -
- {/* end .card */} - -
-
-

- -

-
- {/* end .accordion-header */} -
-
-

Quatrenary Headline

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
-
- {/* end .accordion-body */} -
- {/* end .card */} -
-
-
; - -export const IncludedIcons = () => - - -
-
-
-

- -

-
- {/* end .accordion-header */} -
-
-

Quatrenary Headline

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
-
- {/* end .accordion-body */} -
- {/* end .card */} + Accordion has moved to @asu/unity-react-core -
-
-

- -

-
-
-
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor -

-
-
- {/* end .accordion-body */} -
- {/* end .card */} -
; -export const DisableFold = () => - - -
-
-
-

- -

-
-
-
-

- This uses the .desktop-disable-lg class. -

-

- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - Aenean commodo ligula eget dolor. Aenean massa. Cum sociis - natoque penatibus et magnis dis parturient montes, nascetur - ridiculus mus. Donec quam felis, ultricies nec, pellentesque - eu, pretium quis, sem. -

-
-
-
- -
-
-

- -

-
-
-
-

- This uses the .desktop-disable-xl class. -

-

- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - Aenean commodo ligula eget dolor. Aenean massa. Cum sociis - natoque penatibus et magnis dis parturient montes, nascetur - ridiculus mus. Donec quam felis, ultricies nec, pellentesque - eu, pretium quis, sem. -

-
-
-
-
-
-
- diff --git a/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.templates.stories.js b/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.templates.stories.js deleted file mode 100644 index c511eec88d..0000000000 --- a/packages/unity-bootstrap-theme/stories/atoms/accordion/accordion.templates.stories.js +++ /dev/null @@ -1,91 +0,0 @@ -import React from "react"; - -import { defaultDecorator } from "../../../../../shared/components/Layout.js"; -export default { - title: "Atoms/Accordions/Templates", - decorators: [defaultDecorator], -}; - - -const Template = ({ - accordionID = "", - linkID = "", - bodyID = "" -}) => ( -
-
-
-

- -

-
-
-
-

This is a quaternary headline

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-
- This is a level five headline. There's a fancy word for that too. -
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim - ad minim veniam, quis nostrud -

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do - eiusmod tempor -

-
-
-
-
-); - -export const FoldableCard = Template.bind({}); -FoldableCard.args = { - linkID: "card", - bodyID: "cardBody", -} - -export const Accordion = () => -
-