Repository URL to install this package:
|
Version:
1.1.21 ▾
|
"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;