Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"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 = _interopRequireWildcard(require("styled-components"));

var _styledTools = require("styled-tools");

var _components = require("components");

var _jsxFileName = "_forks/arc/src/molecules/IconButton/index.js";

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }

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 = {}; 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]; } 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; }

const fadeIn = _styledComponents.keyframes`
  0% { display: none; opacity: 0; }
  1% { display: block: opacity: 0; }
  100% { display: block; opacity: 1; }
`;
const StyledButton = (0, _styledComponents.default)(_components.Button)`
  max-width: ${props => props.hasText && !props.collapsed ? '100%' : '2.5em'};
  width: ${(0, _styledTools.ifProp)('hasText', 'auto', '2.5em')};
  padding: ${(0, _styledTools.ifProp)('hasText', '0 0.4375em', 0)};
  flex: 0 0 2.5em;
  box-sizing: border-box;
  ${(0, _styledTools.ifProp)('collapsed', _styledComponents.css`
    overflow: hidden;
    transition: max-width 250ms ease-in-out;
    will-change: max-width;
    & .text {
      display: none;
    }
    &:hover {
      max-width: 100%;
      & .text {
        display: block;
        animation: ${fadeIn} 250ms;
      }
    }
  `)}
  ${(0, _styledTools.ifProp)('responsive', _styledComponents.css`
    @media screen and (max-width: ${(0, _styledTools.prop)('breakpoint')}px) {
      width: auto;
      flex: 0 !important;
    }
  `)}
`;
const Text = _styledComponents.default.span`
  padding: 0.4375em;
  @media screen and (max-width: ${(0, _styledTools.prop)('breakpoint')}px) {
    display: ${(0, _styledTools.ifProp)('responsive', 'none !important')};
  }
`;
const Wrapper = _styledComponents.default.div`
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
`;
const StyledIcon = (0, _styledComponents.default)(_components.Icon)`
  flex: none;
`;

const IconButton = (_ref) => {
  let icon = _ref.icon,
      children = _ref.children,
      props = _objectWithoutProperties(_ref, ["icon", "children"]);

  const breakpoint = props.breakpoint,
        right = props.right,
        responsive = props.responsive,
        height = props.height;

  const iconElement = _react.default.createElement(StyledIcon, {
    height: height ? height / 2.5 : undefined,
    icon: icon,
    __source: {
      fileName: _jsxFileName,
      lineNumber: 66
    },
    __self: void 0
  });

  return _react.default.createElement(StyledButton, _extends({
    hasText: !!children
  }, props, {
    __source: {
      fileName: _jsxFileName,
      lineNumber: 68
    },
    __self: void 0
  }), _react.default.createElement(Wrapper, {
    __source: {
      fileName: _jsxFileName,
      lineNumber: 69
    },
    __self: void 0
  }, right || iconElement, children && _react.default.createElement(Text, {
    className: "text",
    responsive: responsive,
    breakpoint: breakpoint,
    __source: {
      fileName: _jsxFileName,
      lineNumber: 72
    },
    __self: void 0
  }, children), right && iconElement));
};

IconButton.propTypes = {
  icon: _propTypes.default.string.isRequired,
  responsive: _propTypes.default.bool,
  breakpoint: _propTypes.default.number,
  collapsed: _propTypes.default.bool,
  right: _propTypes.default.bool,
  height: _propTypes.default.number,
  children: _propTypes.default.node
};
IconButton.defaultProps = {
  breakpoint: 420
};
var _default = IconButton;
exports.default = _default;