UNPKG

@age/quantum

Version:
119 lines (100 loc) 5.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _Button = _interopRequireDefault(require("../Button")); var _Icon = _interopRequireDefault(require("../Icon")); var _theme = require("../shared/theme"); 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 _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 Content = _styledComponents.default.div.withConfig({ displayName: "Alert__Content", componentId: "sc-5ru3ay-0" })(["align-items:start;display:flex;"]); var AlertIcon = (0, _styledComponents.default)(_Icon.default).withConfig({ displayName: "Alert__AlertIcon", componentId: "sc-5ru3ay-1" })([""]); var CloseButton = (0, _styledComponents.default)(_Button.default.Icon).attrs({ icon: 'close' }).withConfig({ displayName: "Alert__CloseButton", componentId: "sc-5ru3ay-2" })(["height:auto;opacity:0.8;padding:0;transition:opacity 0.4s ease;width:auto;:hover{background:none;opacity:1;}"]); CloseButton.displayName = 'CloseButton'; var Wrapper = _styledComponents.default.div.withConfig({ displayName: "Alert__Wrapper", componentId: "sc-5ru3ay-3" })(["border-radius:8px;box-sizing:border-box;", ""], function (_ref) { var skin = _ref.skin, _ref$theme = _ref.theme, baseFontSize = _ref$theme.baseFontSize, _ref$theme$spacing = _ref$theme.spacing, small = _ref$theme$spacing.small, medium = _ref$theme$spacing.medium, _ref$theme$components = _ref$theme.components.alert.skins[skin], background = _ref$theme$components.background, icon = _ref$theme$components.icon, text = _ref$theme$components.text; return "\n font-size: ".concat(baseFontSize, "px;\n background-color: ").concat(background, ";\n border: 1.5px solid ").concat(icon, ";\n color: ").concat(text, ";\n padding: ").concat(small, "px ").concat(medium, "px;\n\n ").concat(Content, " ").concat(AlertIcon, " {\n color: ").concat(icon, ";\n margin-right: ").concat(medium, "px;\n }\n\n ").concat(Content, " > ").concat(CloseButton, " {\n color: ").concat(icon, ";\n margin: 0 0 0 ").concat(medium, "px;\n min-height: 0;\n opacity: 1;\n\n ").concat(_Button.default.Icon, " {\n color: ").concat(icon, ";\n margin-left: 0;\n }\n }\n "); }); var Alert = function Alert(_ref2) { var icon = _ref2.icon, children = _ref2.children, theme = _ref2.theme, onClose = _ref2.onClose, rest = _objectWithoutProperties(_ref2, ["icon", "children", "theme", "onClose"]); return _react.default.createElement(Wrapper, _extends({ theme: theme }, rest, { role: "alert" }), _react.default.createElement(Content, { onClose: onClose }, icon && _react.default.createElement(AlertIcon, { name: icon }), children && _react.default.createElement("span", null, children), onClose && _react.default.createElement(CloseButton, { theme: theme, onClick: onClose }))); }; Alert.defaultProps = { icon: null, skin: 'neutral', theme: { colors: _theme.colors, baseFontSize: _theme.baseFontSize, spacing: _theme.spacing, breakpoints: _theme.breakpoints, components: { alert: _theme.components.alert, button: _theme.components.button } } }; Alert.propTypes = { /** At least one children is required for Alert component properly works */ children: _propTypes.default.node.isRequired, /** Icon name. The full catalogue can be found * [here](/?selectedKind=1.%20Foundation&selectedStory=Icons) */ icon: _propTypes.default.string, /** You must pass a callback that is called when close button is clicked */ onClose: _propTypes.default.func.isRequired, skin: _propTypes.default.oneOf(['primary', 'success', 'error', 'neutral', 'warning']), theme: _propTypes.default.shape({ baseFontSize: _propTypes.default.number, colors: _propTypes.default.object, spacing: _propTypes.default.object, components: _propTypes.default.shape({ alert: _propTypes.default.object, button: _propTypes.default.object }) }) }; var _default = Alert; exports.default = _default;