react-cm-ui
Version:
React UI for Healthy Church
105 lines (88 loc) • 3.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _constants = require("../../global/constants");
var _makeStyles = _interopRequireDefault(require("../../styles/makeStyles"));
var _utils = _interopRequireDefault(require("../../utils/utils"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var propTypes = {
as: _propTypes["default"].oneOf(['div', 'header', 'main', 'section']),
children: _propTypes["default"].node,
className: _propTypes["default"].string,
/**
* Used for DOM testing. https://testing-library.com/docs/queries/bytestid/
*/
dataTestId: _propTypes["default"].string,
id: _propTypes["default"].string,
isFiltersRailOpen: _propTypes["default"].bool,
scrollable: _propTypes["default"].bool,
style: _propTypes["default"].shape({})
};
var defaultProps = {
as: 'section',
children: null,
className: null,
dataTestId: "".concat(_constants.UI_CLASS_NAME, "-drawer_content"),
id: null,
isFiltersRailOpen: false,
scrollable: false,
style: null
};
var useStyles = (0, _makeStyles["default"])(function (theme) {
var _root;
var breakpoints = theme.breakpoints;
return {
root: (_root = {
padding: '33px 22px',
position: 'relative',
transition: 'margin 200ms ease-out',
zIndex: 0,
'&.drawer--content-filters_rail_open': {
marginLeft: 250
},
'&.drawer--content-scrollable': {
overflowX: 'scroll'
}
}, _defineProperty(_root, breakpoints.down('md'), {
transition: 'margin-top 333ms ease-in-out',
'&.drawer--content-has_action_bar_mobile_search_visible': {
marginTop: 55
}
}), _defineProperty(_root, breakpoints.up('md'), {
padding: '33px 22px'
}), _root)
};
});
function DrawerContent(props) {
var _ClassNames;
var as = props.as,
children = props.children,
className = props.className,
dataTestId = props.dataTestId,
id = props.id,
isFiltersRailOpen = props.isFiltersRailOpen,
scrollable = props.scrollable,
style = props.style;
var classes = useStyles(props);
var winWidth = window.innerWidth;
var isMobile = winWidth <= 767;
var bemName = 'drawer--content';
var rootClasses = (0, _classnames["default"])('ui', classes.root, bemName, className, (_ClassNames = {}, _defineProperty(_ClassNames, "".concat(bemName, "-filters_rail_open"), !isMobile && isFiltersRailOpen), _defineProperty(_ClassNames, "".concat(bemName, "-scrollable"), scrollable), _ClassNames));
var ElementType = _utils["default"].getElementType(as, props);
return /*#__PURE__*/_react["default"].createElement(ElementType, {
className: rootClasses,
"data-testid": dataTestId,
id: id,
style: style
}, children);
}
DrawerContent.propTypes = propTypes;
DrawerContent.defaultProps = defaultProps;
var _default = DrawerContent;
exports["default"] = _default;