UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

63 lines (57 loc) 2.24 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import * as React from "react"; import { useAccordion } from "../AccordionContext"; import useRandomId from "../../hooks/useRandomId"; import useBoundingRect from "../../hooks/useBoundingRect"; import Slide from "../../utils/Slide"; import Loading from "../../Loading"; import AccordionWrapper from "../components/AccordionWrapper"; import SectionHeader from "./components/SectionHeader"; import SectionFooter from "./components/SectionFooter"; import SectionContent from "./components/SectionContent"; var AccordionSection = function AccordionSection(_ref) { var children = _ref.children, header = _ref.header, footer = _ref.footer, actions = _ref.actions, dataTest = _ref.dataTest, _ref$expandable = _ref.expandable, expandable = _ref$expandable === void 0 ? true : _ref$expandable; var _useAccordion = useAccordion(), expanded = _useAccordion.expanded, onExpand = _useAccordion.onExpand, loading = _useAccordion.loading; var slideId = useRandomId(); var isExpanded = expandable && expanded; var _useBoundingRect = useBoundingRect({ height: isExpanded ? null : 0 }), _useBoundingRect2 = _slicedToArray(_useBoundingRect, 2), height = _useBoundingRect2[0].height, ref = _useBoundingRect2[1]; return /*#__PURE__*/React.createElement(AccordionWrapper, { dataTest: dataTest }, /*#__PURE__*/React.createElement(Loading, { loading: loading, type: "boxLoader", dataTest: dataTest && "".concat(dataTest, "Loading") }, header && /*#__PURE__*/React.createElement(SectionHeader, { actions: actions, expanded: Boolean(isExpanded), onExpand: onExpand, expandable: expandable, dataTest: dataTest }, header), /*#__PURE__*/React.createElement(Slide, { maxHeight: height, expanded: isExpanded, id: slideId, ariaLabelledBy: slideId }, /*#__PURE__*/React.createElement("div", { ref: ref }, children && /*#__PURE__*/React.createElement(SectionContent, { dataTest: dataTest }, children), footer && /*#__PURE__*/React.createElement(SectionFooter, { dataTest: dataTest }, footer))))); }; export default AccordionSection;