@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.
105 lines (86 loc) • 3.25 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 _index = _interopRequireDefault(require("../../../utils/Slide/index"));
var _index2 = _interopRequireDefault(require("../../../utils/randomID/index"));
var _TileContent = _interopRequireDefault(require("../TileContent"));
var _TileWrapper = _interopRequireDefault(require("../TileWrapper"));
var _TileHeader = _interopRequireDefault(require("../TileHeader"));
var _handleKeyDown = _interopRequireDefault(require("../../../utils/handleKeyDown"));
var _useBoundingRect3 = _interopRequireDefault(require("../../../hooks/useBoundingRect"));
var TileExpandable = function TileExpandable(_ref) {
var initialExpanded = _ref.initialExpanded,
noPadding = _ref.noPadding,
children = _ref.children,
onClick = _ref.onClick,
title = _ref.title,
description = _ref.description,
header = _ref.header,
icon = _ref.icon,
dataTest = _ref.dataTest,
htmlTitle = _ref.htmlTitle;
var _React$useState = React.useState(initialExpanded),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
expanded = _React$useState2[0],
setExpanded = _React$useState2[1];
var _useBoundingRect = (0, _useBoundingRect3.default)({
height: initialExpanded ? null : 0
}),
_useBoundingRect2 = (0, _slicedToArray2.default)(_useBoundingRect, 2),
height = _useBoundingRect2[0].height,
node = _useBoundingRect2[1];
var handleClick = function handleClick(event) {
if (onClick) {
onClick(event);
}
setExpanded(function (prevExpanded) {
return !prevExpanded;
});
};
var hasHeader = !!(title || description || icon || header);
var slideID = React.useMemo(function () {
return (0, _index2.default)("slideID");
}, []);
var labelID = React.useMemo(function () {
return (0, _index2.default)("labelID");
}, []);
return /*#__PURE__*/React.createElement(_TileWrapper.default, {
onClick: handleClick,
onKeyDown: (0, _handleKeyDown.default)(onClick, function () {
return setExpanded(function (prevExpanded) {
return !prevExpanded;
});
}),
role: "button",
ariaExpanded: expanded,
ariaControls: slideID,
tabIndex: "0",
id: labelID,
dataTest: dataTest,
htmlTitle: htmlTitle
}, hasHeader && /*#__PURE__*/React.createElement(_TileHeader.default, {
title: title,
description: description,
icon: icon,
header: header,
expanded: expanded,
expandable: true
}), /*#__PURE__*/React.createElement(_index.default, {
maxHeight: height,
expanded: expanded,
id: slideID,
ariaLabelledBy: labelID
}, /*#__PURE__*/React.createElement(_TileContent.default, {
noPadding: noPadding,
ref: node,
withBorder: hasHeader
}, children)));
};
var _default = TileExpandable;
exports.default = _default;