@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
123 lines (99 loc) • 5.33 kB
JavaScript
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;
;