UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

123 lines (99 loc) 5.33 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.AccordionBody = exports.classNameStrings = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _getValidProps = _interopRequireDefault(require("@helpscout/react-utils/dist/getValidProps")); var _Collapsible = _interopRequireDefault(require("../Collapsible")); var _classnames = _interopRequireDefault(require("classnames")); var _Accordion = require("./Accordion.css"); var _Accordion2 = require("./Accordion"); var _Accordion3 = require("./Accordion.Section"); var _jsxRuntime = require("react/jsx-runtime"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var classNameStrings = { baseComponentClassName: 'c-Accordion__Section__Body', isOpenClassName: 'is-open', isPageClassName: 'is-page', isSeamlessClassName: 'is-seamless', isSizeXsClassName: 'is-xs', isSizeSmClassName: 'is-sm', isSizeMdClassName: 'is-md', isSizeLgClassName: 'is-lg', isSizeXlClassName: 'is-xl' }; exports.classNameStrings = classNameStrings; var getComponentClassName = function getComponentClassName(_ref) { var className = _ref.className, isOpen = _ref.isOpen, isPage = _ref.isPage, isSeamless = _ref.isSeamless, size = _ref.size; var baseComponentClassName = classNameStrings.baseComponentClassName, isOpenClassName = classNameStrings.isOpenClassName, isPageClassName = classNameStrings.isPageClassName, isSeamlessClassName = classNameStrings.isSeamlessClassName, isSizeXsClassName = classNameStrings.isSizeXsClassName, isSizeSmClassName = classNameStrings.isSizeSmClassName, isSizeMdClassName = classNameStrings.isSizeMdClassName, isSizeLgClassName = classNameStrings.isSizeLgClassName, isSizeXlClassName = classNameStrings.isSizeXlClassName; return (0, _classnames.default)(baseComponentClassName, isOpen && isOpenClassName, isPage && isPageClassName, isSeamless && isSeamlessClassName, size && size === 'xs' && isSizeXsClassName, size && size === 'sm' && isSizeSmClassName, size && size === 'md' && isSizeMdClassName, size && size === 'lg' && isSizeLgClassName, size && size === 'xl' && isSizeXlClassName, className); }; var AccordionBody = function AccordionBody(props) { var className = props.className, preRender = props.preRender; var _ref2 = (0, _react.useContext)(_Accordion2.AccordionContext) || {}, isPage = _ref2.isPage, isSeamless = _ref2.isSeamless, duration = _ref2.duration, _onOpen = _ref2.onOpen, _onClose = _ref2.onClose, size = _ref2.size; var _ref3 = (0, _react.useContext)(_Accordion3.SectionContext) || {}, isOpen = _ref3.isOpen, uuid = _ref3.uuid; var componentClassName = getComponentClassName({ className: className, isOpen: isOpen, isPage: isPage, isSeamless: isSeamless, size: size }); var id = "accordion__section__body--" + uuid; return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Collapsible.default, { duration: duration, id: id, isOpen: isOpen, onOpen: function onOpen() { _onOpen(uuid); }, onClose: function onClose() { _onClose(uuid); }, preRenderContent: preRender, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Accordion.BodyUI, (0, _extends2.default)({}, (0, _getValidProps.default)(props), { className: componentClassName })) }); }; exports.AccordionBody = AccordionBody; AccordionBody.defaultProps = { 'data-cy': 'AccordionBody', preRender: false }; AccordionBody.propTypes = { /** Content to render. */ children: _propTypes.default.any, /** Custom class names to be added to the component. */ className: _propTypes.default.string, /** Data attr for Cypress tests. */ 'data-cy': _propTypes.default.string, /** Flag indicating if content should be pre-rendered to the DOM (otherwise the content would not be in the DOM until opened) */ preRender: _propTypes.default.bool }; var _default = AccordionBody; exports.default = _default;