@krowdy-ui/views
Version:
React components that implement Google's Material Design.
150 lines (134 loc) • 5.74 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _clsx = _interopRequireDefault(require("clsx"));
var _core = require("@krowdy-ui/core");
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 arrowGenerator = function arrowGenerator(spacing) {
return {
'&[x-placement*="bottom"] $arrow': {
left: 0,
marginLeft: spacing(1.5),
marginRight: spacing(1.5),
marginTop: spacing(-1),
top: 0
},
'&[x-placement*="left"] $arrow': {
marginBottom: spacing(1.5),
marginRight: spacing(-1),
marginTop: spacing(1.5),
right: 0
},
'&[x-placement*="right"] $arrow': {
left: 0,
marginBottom: spacing(1.5),
marginLeft: spacing(-1),
marginTop: spacing(1.5)
},
'&[x-placement*="top"] $arrow': {
bottom: 0,
left: 0,
marginBottom: spacing(-1),
marginLeft: spacing(1.5),
marginRight: spacing(1.5)
}
};
};
var useStyles = (0, _core.makeStyles)(function (_ref) {
var palette = _ref.palette,
spacing = _ref.spacing;
return {
arrow: {
background: function background(_ref2) {
var _background = _ref2.background;
return _background && palette[_background] && palette[_background].main ? palette[_background].main : palette.primary.main;
},
height: 20,
position: 'absolute',
transform: 'rotate(45deg)',
width: 20
},
backgroundCard: {
background: function background(_ref3) {
var _background2 = _ref3.background;
return _background2 && palette[_background2] && palette[_background2].main ? palette[_background2].main : palette.primary.main;
}
},
poperArrow: arrowGenerator(spacing),
textColor: {
color: palette.secondary[10]
},
'tooltipPlacement-bottom': {
marginTop: spacing(1),
transformOrigin: 'center top'
},
'tooltipPlacement-left': {
marginRight: spacing(1),
transformOrigin: 'right center'
},
'tooltipPlacement-right': {
marginLeft: spacing(1),
transformOrigin: 'left center'
},
'tooltipPlacement-top': {
marginBottom: spacing(1),
transformOrigin: 'center bottom'
}
};
}, {
name: 'BackgroundAlert'
});
var BackgroundAlert = function BackgroundAlert(_ref4) {
var children = _ref4.children,
_ref4$color = _ref4.color,
color = _ref4$color === void 0 ? 'primary' : _ref4$color,
anchorEl = _ref4.anchorEl,
_ref4$placement = _ref4.placement,
placement = _ref4$placement === void 0 ? 'bottom' : _ref4$placement,
_ref4$arrow = _ref4.arrow,
arrow = _ref4$arrow === void 0 ? false : _ref4$arrow,
className = _ref4.className;
var classes = useStyles({
background: color
});
var _useState = (0, _react.useState)(null),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
arrowRef = _useState2[0],
setArrowRef = _useState2[1];
return /*#__PURE__*/_react["default"].createElement(_core.Popper, {
anchorEl: anchorEl,
className: (0, _clsx["default"])(className, classes.poperArrow, classes["tooltipPlacement-".concat(placement.split('-')[0])]),
open: Boolean(anchorEl),
placement: placement,
popperOptions: {
modifiers: {
arrow: {
element: arrowRef,
enabled: Boolean(arrowRef)
}
}
}
}, /*#__PURE__*/_react["default"].createElement(_core.Card, {
className: (0, _clsx["default"])(classes.backgroundCard, classes.textColor)
}, arrow ? /*#__PURE__*/_react["default"].createElement("span", {
className: classes.arrow,
ref: setArrowRef
}) : null, children));
};
process.env.NODE_ENV !== "production" ? BackgroundAlert.propTypes = {
anchorEl: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].any, _propTypes["default"].func]),
arrow: _propTypes["default"].bool,
className: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].any]),
color: _propTypes["default"].oneOf(['default', 'inherit', 'primary', 'secondary', 'krowdy', 'error']),
placement: _propTypes["default"].string
} : void 0;
var _default = BackgroundAlert;
exports["default"] = _default;