@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
99 lines (73 loc) • 3.49 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _getValidProps = _interopRequireDefault(require("@helpscout/react-utils/dist/getValidProps"));
var _Scrollable = _interopRequireDefault(require("../Scrollable"));
var _classnames = _interopRequireDefault(require("classnames"));
var _Card = require("./Card.css");
var _jsxRuntime = require("react/jsx-runtime");
function noop() {}
var Block = /*#__PURE__*/function (_React$PureComponent) {
(0, _inheritsLoose2.default)(Block, _React$PureComponent);
function Block() {
return _React$PureComponent.apply(this, arguments) || this;
}
var _proto = Block.prototype;
_proto.render = function render() {
var _this$props = this.props,
bgMuted = _this$props.bgMuted,
className = _this$props.className,
children = _this$props.children,
onScroll = _this$props.onScroll,
scrollable = _this$props.scrollable,
scrollableRef = _this$props.scrollableRef,
flex = _this$props.flex,
size = _this$props.size,
rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["bgMuted", "className", "children", "onScroll", "scrollable", "scrollableRef", "flex", "size"]);
var componentClassName = (0, _classnames.default)('c-Card__block', bgMuted && 'is-bg-muted', flex && 'is-flex', scrollable && 'is-scrollable', size && "is-" + size, className);
var scrollableClassName = (0, _classnames.default)('c-Card__block', bgMuted && 'is-bg-muted', flex && 'is-flex', scrollable && 'is-scrollableWrapper', className);
var contentMarkup = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Card.BlockUI, (0, _extends2.default)({}, (0, _getValidProps.default)(rest), {
className: componentClassName,
children: children
}));
var componentMarkup = scrollable ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scrollable.default, {
className: scrollableClassName,
onScroll: onScroll,
scrollableRef: scrollableRef,
children: contentMarkup
}) : contentMarkup;
return componentMarkup;
};
return Block;
}(_react.default.PureComponent);
Block.defaultProps = {
'data-cy': 'Block',
onScroll: noop,
scrollableRef: noop
};
Block.propTypes = {
/** Applies a muted background to the component. */
bgMuted: _propTypes.default.bool,
/** Custom class names to be added to the component. */
className: _propTypes.default.string,
/** Adds flexbox styles to the component. */
flex: _propTypes.default.bool,
/** Callback function when inner Scrollable is scrolled. */
onScroll: _propTypes.default.func,
/** Integrates `Scrollable` into the component. */
scrollable: _propTypes.default.bool,
/** Retrieves the scrollable node. */
scrollableRef: _propTypes.default.func,
/** Adjusts the size of the component. */
size: _propTypes.default.string,
/** Data attr for Cypress tests. */
'data-cy': _propTypes.default.string
};
var _default = Block;
exports.default = _default;