backpack-ui
Version:
Lonely Planet's Components
150 lines (119 loc) • 4.23 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require("babel-runtime/helpers/extends");
var _extends3 = _interopRequireDefault(_extends2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _radium = require("radium");
var _radium2 = _interopRequireDefault(_radium);
var _classnames = require("classnames");
var _classnames2 = _interopRequireDefault(_classnames);
var _colors = require("../../styles/colors");
var _colors2 = _interopRequireDefault(_colors);
var _timing = require("../../styles/timing");
var _timing2 = _interopRequireDefault(_timing);
var _typography = require("../../styles/typography");
var _mixins = require("../../utils/mixins");
var _propTypes3 = require("../../utils/propTypes");
var _propTypes4 = _interopRequireDefault(_propTypes3);
var _createQAHook = require("../../utils/createQAHook");
var _createQAHook2 = _interopRequireDefault(_createQAHook);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var styles = {
container: {
alignItems: "center",
backgroundColor: "transparent",
color: _colors2.default.textPrimary,
display: "flex",
flexDirection: "column",
fontSize: _typography.fontSizeHeading7 + "px",
justifyContent: "center",
lineHeight: _typography.lineHeightReset,
textAlign: "center",
":focus": (0, _mixins.outline)(4)
},
icon: {
transition: "color " + _timing2.default.fast + " ease-in-out,\n transform " + _timing2.default.fast + " ease-in-out"
},
label: {
fontSize: _typography.fontSizeUppercase + "px",
opacity: 0,
transition: "opacity " + _timing2.default.fast + " ease-in-out,\n visibility " + _timing2.default.fast + " ease-in-out",
visibility: "hidden"
}
};
var IconRevealButton = function IconRevealButton(_ref) {
var onClick = _ref.onClick,
icon = _ref.icon,
label = _ref.label,
id = _ref.id,
className = _ref.className,
style = _ref.style,
qaHook = _ref.qaHook;
return _react2.default.createElement(
"button",
{
id: id,
className: (0, _classnames2.default)("IconRevealButton", className),
onClick: onClick,
"data-testid": qaHook ? (0, _createQAHook2.default)(label, (0, _classnames2.default)("IconRevealButton", className), "btn") : null,
style: [styles.container, style]
},
_react2.default.createElement(_radium.Style, {
rules: {
".IconRevealButton:hover > svg": {
transform: "translateY(-4px) !important",
color: _colors2.default.accentGray + " !important"
},
".IconRevealButton:active > svg": {
transform: "translateY(-4px) !important",
color: _colors2.default.accentGray + " !important"
},
".IconRevealButton:focus > svg": {
transform: "translateY(-4px) !important",
color: _colors2.default.accentGray + " !important"
},
".IconRevealButton:hover > span": {
opacity: "1 !important",
visibility: "visible !important"
},
".IconRevealButton:active > span": {
opacity: "1 !important",
visibility: "visible !important"
},
".IconRevealButton:focus > span": {
opacity: "1 !important",
visibility: "visible !important"
}
}
}),
_react2.default.cloneElement(icon, {
style: (0, _extends3.default)({}, styles.icon, icon.style)
}),
label && _react2.default.createElement(
"span",
{ style: styles.label },
label
)
);
};
IconRevealButton.propTypes = {
onClick: _propTypes2.default.func.isRequired,
icon: _propTypes2.default.element.isRequired,
label: _propTypes2.default.string.isRequired,
id: _propTypes2.default.string,
className: _propTypes2.default.string,
style: _propTypes4.default.style,
qaHook: _propTypes2.default.bool
};
IconRevealButton.defaultProps = {
id: null,
className: null,
style: null,
qaHook: false
};
exports.default = (0, _radium2.default)(IconRevealButton);