UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

171 lines (154 loc) 9.03 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.StyledButtonPrimitive = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var React = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _defaultTheme = _interopRequireDefault(require("../../defaultTheme")); var _Loading = _interopRequireWildcard(require("../../Loading")); var _getSpacingToken = _interopRequireDefault(require("../../common/getSpacingToken")); var _ButtonPrimitiveContent = _interopRequireDefault(require("./components/ButtonPrimitiveContent")); var _ButtonPrimitiveIconContainer = _interopRequireWildcard(require("./components/ButtonPrimitiveIconContainer")); var _ButtonPrimitiveContentChildren = _interopRequireDefault(require("./components/ButtonPrimitiveContentChildren")); var _mediaQuery = _interopRequireDefault(require("../../utils/mediaQuery")); var _createRel = _interopRequireDefault(require("./common/createRel")); var iconContainerColor = function iconContainerColor(color) { var important = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; return (0, _styledComponents.css)(["", "{color:", " ", ";}"], _ButtonPrimitiveIconContainer.StyledButtonPrimitiveIconContainer, color, important && "!important"); }; var StyledButtonPrimitive = (0, _styledComponents.default)(function (_ref) { var _ref$asComponent = _ref.asComponent, asComponent = _ref$asComponent === void 0 ? "button" : _ref$asComponent, dataTest = _ref.dataTest, submit = _ref.submit, disabled = _ref.disabled, forwardedRef = _ref.forwardedRef, ariaControls = _ref.ariaControls, ariaExpanded = _ref.ariaExpanded, ariaLabelledby = _ref.ariaLabelledby, ariaCurrent = _ref.ariaCurrent, title = _ref.title, className = _ref.className, rel = _ref.rel, href = _ref.href, target = _ref.target, external = _ref.external, tabIndex = _ref.tabIndex, onClick = _ref.onClick, role = _ref.role, props = (0, _objectWithoutProperties2.default)(_ref, ["asComponent", "dataTest", "submit", "disabled", "forwardedRef", "ariaControls", "ariaExpanded", "ariaLabelledby", "ariaCurrent", "title", "className", "rel", "href", "target", "external", "tabIndex", "onClick", "role"]); var isButtonWithHref = asComponent === "button" && href; var Component = isButtonWithHref ? "a" : asComponent; var buttonType = submit ? "submit" : "button"; return /*#__PURE__*/React.createElement(Component, { ref: forwardedRef, "data-test": dataTest, "aria-controls": ariaControls, "aria-current": ariaCurrent, "aria-expanded": ariaExpanded, "aria-label": title, "aria-labelledby": ariaLabelledby, type: !isButtonWithHref ? buttonType : undefined, className: className, disabled: disabled, href: !disabled ? href : null, target: !disabled && href && external ? "_blank" : undefined, rel: (0, _createRel.default)({ external: external, href: href, rel: rel }), tabIndex: tabIndex, onClick: !disabled ? onClick : null, role: role }, props.children); }).withConfig({ displayName: "ButtonPrimitive__StyledButtonPrimitive", componentId: "q2qrvj-0" })(["", "};"], function (_ref2) { var foreground = _ref2.foreground, disabled = _ref2.disabled, fullWidth = _ref2.fullWidth, href = _ref2.href, theme = _ref2.theme, asComponent = _ref2.asComponent, circled = _ref2.circled, padding = _ref2.padding, background = _ref2.background, fontWeight = _ref2.fontWeight, fontSize = _ref2.fontSize, height = _ref2.height, width = _ref2.width, onlyIcon = _ref2.onlyIcon, icons = _ref2.icons, foregroundHover = _ref2.foregroundHover, foregroundActive = _ref2.foregroundActive, foregroundFocus = _ref2.foregroundFocus, backgroundHover = _ref2.backgroundHover, backgroundActive = _ref2.backgroundActive, backgroundFocus = _ref2.backgroundFocus, boxShadow = _ref2.boxShadow, boxShadowHover = _ref2.boxShadowHover, boxShadowFocus = _ref2.boxShadowFocus, boxShadowActive = _ref2.boxShadowActive, underlined = _ref2.underlined; return (0, _styledComponents.css)(["height:", ";position:relative;display:", ";justify-content:space-between;align-items:center;box-sizing:border-box;appearance:none;text-align:center;text-decoration:", ";flex:", ";max-width:100%;background:", ";color:", "!important;border:0;padding:", ";border-radius:", ";font-family:", ";font-weight:", ";font-size:", ";line-height:1.4;cursor:", ";transition:all ", " ease-in-out !important;outline:0;opacity:", ";margin-bottom:", ";width:", ";box-shadow:", ";", " ", ";", "{width:", ";height:", ";}&:hover{", ";}&:active{", ";}:focus{box-shadow:", ";background:", ";color:", "!important;text-decoration:none;", ";}:focus:not(:focus-visible){box-shadow:none;background:", ";color:", "!important;text-decoration:none;", ";}:-moz-focusring,:focus-visible{box-shadow:", ";background:", ";color:", "!important;text-decoration:none;", ";}"], height, href || asComponent === "a" ? "inline-flex" : "flex", underlined ? "underline" : "none", fullWidth ? "1 1 auto" : "0 0 auto", background, foreground, padding, circled ? height : "6px", theme.orbit.fontFamily, fontWeight || theme.orbit.fontWeightMedium, fontSize, disabled ? "not-allowed" : "pointer", theme.orbit.durationFast, disabled && theme.orbit.opacityButtonDisabled, _getSpacingToken.default, fullWidth ? "100%" : width || onlyIcon && height || "auto", boxShadow, _mediaQuery.default.tablet((0, _styledComponents.css)(["border-radius:", ";"], circled ? height : theme.orbit.borderRadiusNormal)), iconContainerColor(icons && icons.foreground, false), _Loading.StyledSpinner, icons && icons.width, icons && icons.height, !disabled && (0, _styledComponents.css)(["background:", ";color:", "!important;box-shadow:", ";text-decoration:none;", ";"], backgroundHover, foregroundHover, boxShadowHover, iconContainerColor(icons && icons.foregroundHover)), !disabled && (0, _styledComponents.css)(["background:", ";box-shadow:", ";color:", "!important;text-decoration:none;", ";"], backgroundActive, boxShadowActive, foregroundActive, iconContainerColor(icons && icons.foregroundActive)), boxShadowFocus, backgroundFocus, foregroundFocus, iconContainerColor(icons && icons.foregroundFocus), background, foregroundFocus, iconContainerColor(icons && icons.foregroundFocus), boxShadowFocus, backgroundFocus, foregroundFocus, iconContainerColor(icons && icons.foregroundFocus)); }); exports.StyledButtonPrimitive = StyledButtonPrimitive; StyledButtonPrimitive.defaultProps = { theme: _defaultTheme.default }; var ButtonPrimitive = /*#__PURE__*/React.forwardRef(function (props, ref) { var loading = props.loading, disabled = props.disabled, children = props.children, iconLeft = props.iconLeft, iconRight = props.iconRight, _props$icons = props.icons, icons = _props$icons === void 0 ? { width: null, height: null, leftMargin: null, rightMargin: null } : _props$icons, _props$contentAlign = props.contentAlign, contentAlign = _props$contentAlign === void 0 ? "center" : _props$contentAlign, contentWidth = props.contentWidth; var width = icons.width, height = icons.height, leftMargin = icons.leftMargin, rightMargin = icons.rightMargin; var isDisabled = loading || disabled; var onlyIcon = Boolean(iconLeft && !children); return /*#__PURE__*/React.createElement(StyledButtonPrimitive, (0, _extends2.default)({ forwardedRef: ref, onlyIcon: onlyIcon }, props, { disabled: isDisabled, className: undefined }), loading && /*#__PURE__*/React.createElement(_Loading.default, { type: "buttonLoader" }), /*#__PURE__*/React.createElement(_ButtonPrimitiveContent.default, { loading: loading, contentAlign: contentAlign }, iconLeft && /*#__PURE__*/React.createElement(_ButtonPrimitiveIconContainer.default, { width: width, height: height, margin: leftMargin }, iconLeft), children && /*#__PURE__*/React.createElement(_ButtonPrimitiveContentChildren.default, { hasIcon: Boolean(iconLeft || iconRight), contentWidth: contentWidth }, children), iconRight && /*#__PURE__*/React.createElement(_ButtonPrimitiveIconContainer.default, { width: width, height: height, margin: rightMargin }, iconRight))); }); ButtonPrimitive.displayName = "ButtonPrimitive"; var _default = ButtonPrimitive; exports.default = _default;