@react-md/menu
Version:
Create menus that auto-position themselves within the viewport and adhere to the accessibility guidelines
41 lines • 1.58 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import React, { cloneElement, isValidElement } from "react";
import { MenuItem } from "./MenuItem";
import { MenuItemLink } from "./MenuItemLink";
import { MenuItemSeparator } from "./MenuItemSeparator";
export function defaultMenuItemRenderer(item, key) {
if (item !== 0 && !item) {
return null;
}
if (item === "separator") {
return React.createElement(MenuItemSeparator, { key: key });
}
var type = typeof item;
if (type === "number" || type === "string" || type === "boolean") {
return React.createElement(MenuItem, { key: key }, item);
}
if (isValidElement(item)) {
return cloneElement(item, { key: key });
}
var separatorProps = item;
if (separatorProps.role === "separator") {
return React.createElement(MenuItemSeparator, __assign({}, separatorProps, { key: key }));
}
var linkProps = item;
if (linkProps.to || linkProps.href || linkProps.component) {
return React.createElement(MenuItemLink, __assign({ key: key }, linkProps));
}
var itemProps = item;
return React.createElement(MenuItem, __assign({ key: key }, itemProps));
}
//# sourceMappingURL=defaultMenuItemRenderer.js.map