@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.
85 lines (65 loc) • 2.96 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var React = _interopRequireWildcard(require("react"));
var _AccordionContext = require("../AccordionContext");
var _useRandomId = _interopRequireDefault(require("../../hooks/useRandomId"));
var _useBoundingRect3 = _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"));
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 = (0, _AccordionContext.useAccordion)(),
expanded = _useAccordion.expanded,
onExpand = _useAccordion.onExpand,
loading = _useAccordion.loading;
var slideId = (0, _useRandomId.default)();
var isExpanded = expandable && expanded;
var _useBoundingRect = (0, _useBoundingRect3.default)({
height: isExpanded ? null : 0
}),
_useBoundingRect2 = (0, _slicedToArray2.default)(_useBoundingRect, 2),
height = _useBoundingRect2[0].height,
ref = _useBoundingRect2[1];
return /*#__PURE__*/React.createElement(_AccordionWrapper.default, {
dataTest: dataTest
}, /*#__PURE__*/React.createElement(_Loading.default, {
loading: loading,
type: "boxLoader",
dataTest: dataTest && "".concat(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;