@danilandreev/material-docs
Version:
material-docs - react framework for easy creating documentation site in material design style.
69 lines (57 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = generateHeaderIcon;
var _react = _interopRequireDefault(require("react"));
var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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); }
/**
* generateHeaderIcon - function ,designed to generate material-ui IconButtons for Toolbar in DocsLayout.
* @function
* @param {function} changeRoute
* @param {string} key
* @param {any} icon
* @param {function} onClick
* @param {string | object} link
* @param {string} tooltip
* @param {string} className
* @return {JSX.Element}
*/
function generateHeaderIcon(changeRoute, key, icon, onClick, link, tooltip, className) {
if (! /*#__PURE__*/_react.default.isValidElement(icon)) throw new TypeError("MaterialDocs: Incorrect type of icon, expected \"node\", got \"".concat(_typeof(icon), "\"!"));
if (className && typeof className !== "string") throw new TypeError("MaterialDocs: Incorrect type of className, expected \"string\", got \"".concat(_typeof(className), "\"!"));
if (typeof changeRoute !== "function") throw new TypeError("MaterialDocs: Incorrect type of changeRoute, expected \"function\", got \"".concat(_typeof(changeRoute), "\"!"));
if (typeof key !== "string") throw new TypeError("MaterialDocs: Incorrect type of key, expected \"string\", got \"".concat(_typeof(key), "\"!"));
var styledIcon = /*#__PURE__*/_react.default.cloneElement(icon, {
className: className
});
function handleClick() {
if (typeof onClick === "function") {
onClick();
} else {
switch (_typeof(link)) {
case "string":
window.location.href = link;
break;
case "object":
changeRoute(link);
break;
default:
console.error("MaterialDocs: Incorrect type of link, expected \"string | object\", got \"".concat(_typeof(link), "\"!"));
}
}
}
if (typeof tooltip === "string") return /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
title: tooltip,
key: "header-action-item-".concat(link, "-").concat(key)
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
onClick: handleClick
}, styledIcon));
return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
onClick: handleClick,
key: "header-action-item-".concat(link, "-").concat(key)
}, styledIcon);
}