@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
JavaScript
"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;