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.

105 lines (86 loc) 3.25 kB
"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;