react-cm-ui
Version:
React UI for Healthy Church
111 lines (90 loc) • 5.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _lodash = require("lodash");
var _classnames = _interopRequireDefault(require("classnames"));
var _Snackbar = _interopRequireDefault(require("@material-ui/core/Snackbar"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireDefault(require("react"));
var _constants = require("../../global/constants");
var _makeStyles = _interopRequireDefault(require("../../styles/makeStyles"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
var propTypes = {
/**
* Override or extend the styles applied to the component.
* See [CSS API](https://material-ui.com/api/snackbar/#css) for more details.
*/
classes: _propTypes["default"].shape({}),
/**
* Assign additional class names to Snackbar.
*/
className: _propTypes["default"].string,
/**
* Props applied to the [`SnackbarContent`](/api/snackbar-content/) element.
*/
ContentProps: _propTypes["default"].shape({
classes: _propTypes["default"].shape({})
})
};
var defaultProps = {
classes: undefined,
className: undefined,
ContentProps: undefined
};
var useStyles = (0, _makeStyles["default"])(function (_ref) {
var palette = _ref.palette,
shape = _ref.shape,
spacing = _ref.spacing,
typography = _ref.typography;
return {
snackBarContentRoot: {
backgroundColor: palette.hexToRGBA(palette.grey[600], 0.7),
borderRadius: shape.borderRadius,
fontSize: typography.pxToRem(16),
minWidth: 'auto',
padding: [[spacing(1.185), spacing(1)]]
},
snackBarContentMessageRoot: {
alignItems: 'center',
display: 'flex',
justifyContent: 'flex-start',
padding: 0
}
};
});
/**
* Snackbars inform users of a process that an app has performed or will perform.
* They appear temporarily, towards the bottom of the screen. They shouldn’t interrupt the
* user experience, and they don’t require user input to disappear.
*/
function Snackbar(props) {
var className = props.className,
classes = props.classes,
ContentProps = props.ContentProps,
otherProps = _objectWithoutProperties(props, ["className", "classes", "ContentProps"]);
var contentPropsClasses = useStyles(ContentProps);
var rootClasses = (0, _classnames["default"])(_constants.UI_CLASS_NAME, _constants.BEM_SNACKBAR, className);
return /*#__PURE__*/_react["default"].createElement(_Snackbar["default"] // eslint-disable-next-line react/jsx-props-no-spreading
, _extends({}, otherProps, {
classes: classes,
className: rootClasses,
ContentProps: _objectSpread(_objectSpread({}, ContentProps), {}, {
classes: _objectSpread({
root: contentPropsClasses.snackBarContentRoot,
message: contentPropsClasses.snackBarContentMessageRoot
}, (0, _lodash.get)(ContentProps, 'contentPropsClasses'))
})
}));
}
Snackbar.propTypes = propTypes;
Snackbar.defaultProps = defaultProps;
var _default = Snackbar;
exports["default"] = _default;