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.

79 lines (64 loc) 2.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _AccordionContext = require("../AccordionContext"); var _useRandomId = _interopRequireDefault(require("../../hooks/useRandomId")); var _useBoundingRect = _interopRequireDefault(require("../../hooks/useBoundingRect")); var _Slide = _interopRequireDefault(require("../../utils/Slide")); var _Loading = _interopRequireDefault(require("../../Loading")); var _AccordionWrapper = _interopRequireDefault(require("../components/AccordionWrapper")); var _SectionHeader = _interopRequireDefault(require("./components/SectionHeader")); var _SectionFooter = _interopRequireDefault(require("./components/SectionFooter")); var _SectionContent = _interopRequireDefault(require("./components/SectionContent")); const AccordionSection = ({ children, header, footer, actions, dataTest, expandable = true }) => { const { expanded, onExpand, loading } = (0, _AccordionContext.useAccordion)(); const slideId = (0, _useRandomId.default)(); const isExpanded = expandable && expanded; const [{ height }, ref] = (0, _useBoundingRect.default)({ height: isExpanded ? null : 0 }); return /*#__PURE__*/React.createElement(_AccordionWrapper.default, { dataTest: dataTest }, /*#__PURE__*/React.createElement(_Loading.default, { loading: loading, type: "boxLoader", dataTest: dataTest && `${dataTest}Loading` }, header && /*#__PURE__*/React.createElement(_SectionHeader.default, { actions: actions, expanded: Boolean(isExpanded), onExpand: onExpand, expandable: expandable, dataTest: dataTest }, header), /*#__PURE__*/React.createElement(_Slide.default, { maxHeight: height, expanded: isExpanded, id: slideId, ariaLabelledBy: slideId }, /*#__PURE__*/React.createElement("div", { ref: ref }, children && /*#__PURE__*/React.createElement(_SectionContent.default, { dataTest: dataTest }, children), footer && /*#__PURE__*/React.createElement(_SectionFooter.default, { dataTest: dataTest }, footer))))); }; var _default = AccordionSection; exports.default = _default;