react-cm-ui
Version:
React UI for Healthy Church
119 lines (104 loc) • 4.69 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _lodash = require("lodash");
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _keyCode = _interopRequireDefault(require("../../global/keyCode.js"));
var _makeStyles = _interopRequireDefault(require("../../styles/makeStyles.js"));
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var propTypes = {
children: _propTypes["default"].node,
classes: _propTypes["default"].shape({
root: _propTypes["default"].string
}),
className: _propTypes["default"].string,
disable: _propTypes["default"].bool,
id: _propTypes["default"].string,
onClick: _propTypes["default"].func,
onKeyDown: _propTypes["default"].func,
style: _propTypes["default"].shape({}),
tabIndex: _propTypes["default"].number
};
var defaultProps = {
children: null,
classes: null,
className: null,
disable: false,
id: null,
onClick: null,
onKeyDown: null,
tabIndex: -1,
style: {}
};
var useStyles = (0, _makeStyles["default"])(function (_ref) {
var palette = _ref.palette,
typography = _ref.typography;
return {
isDisabled: {},
root: {
color: palette.cyan[500],
cursor: 'pointer',
fontWeight: typography.fontWeightMedium,
textDecoration: 'none',
'&$isDisabled': {
color: palette.text.disable,
cursor: 'default'
},
'&:focus': {
boxShadow: "0 0 0 1px ".concat(palette.active.main)
}
}
};
});
function A(props) {
var children = props.children,
className = props.className,
id = props.id,
isDisabled = props.disable,
onClickProp = props.onClick,
onKeyDownProp = props.onKeyDown,
style = props.style,
tabIndex = props.tabIndex;
var classes = useStyles(props);
var onClick = (0, _react.useCallback)(function (event) {
if ((0, _lodash.isFunction)(onClickProp) && !isDisabled) {
onClickProp(event);
}
}, [onClickProp, isDisabled]);
var onKeyDown = (0, _react.useCallback)(function (event) {
if (!isDisabled) {
if ((0, _lodash.isFunction)(onKeyDownProp)) {
onKeyDownProp(event);
} else if (event.keyCode === _keyCode["default"].Enter) {
onClick();
}
}
}, [isDisabled, onClick, onKeyDownProp]);
var onMouseDown = (0, _react.useCallback)(function (event) {
event.preventDefault();
}, []);
var bemBlockName = 'a';
var rootClasses = (0, _classnames["default"])('ui', bemBlockName, classes.root, className, _defineProperty({}, classes.isDisabled, isDisabled));
return /*#__PURE__*/_react["default"].createElement("span", {
className: rootClasses,
id: id,
onClick: onClick,
onKeyDown: onKeyDown,
onMouseDown: onMouseDown,
role: "button",
style: style,
tabIndex: tabIndex
}, children);
}
A.propTypes = propTypes;
A.defaultProps = defaultProps;
var _default = A;
exports["default"] = _default;