@redocly/theme
Version:
Shared UI components lib
166 lines (154 loc) • 6.54 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DropdownMenuItem = DropdownMenuItem;
const react_1 = __importDefault(require("react"));
const styled_components_1 = __importStar(require("styled-components"));
const Link_1 = require("../../components/Link/Link");
function DropdownMenuItem(_a) {
var { children, content, active, onAction, to, dangerous, prefix, suffix, disabled, separator, dataAttributes, className, separatorLine, style, role = 'menuitem' } = _a, otherProps = __rest(_a, ["children", "content", "active", "onAction", "to", "dangerous", "prefix", "suffix", "disabled", "separator", "dataAttributes", "className", "separatorLine", "style", "role"]);
const handleClick = () => {
onAction === null || onAction === void 0 ? void 0 : onAction();
};
const handleKeyDown = (event) => {
if (event.key === 'Enter' || event.key === ' ') {
onAction === null || onAction === void 0 ? void 0 : onAction();
}
};
className = className || '' + (active ? ' active' : '');
if (to) {
return (react_1.default.createElement(DropdownMenuItemWrapper, Object.assign({ as: Link_1.Link, "data-component-name": "Dropdown/DropdownMenuItem", className: className, "$separatorLine": separatorLine, to: to, style: style, role: role }, dataAttributes, otherProps),
prefix,
children,
suffix));
}
return (react_1.default.createElement(DropdownMenuItemWrapper, Object.assign({ "data-component-name": "Dropdown/DropdownMenuItem", className: className, role: role, style: style }, dataAttributes, { onClick: handleClick, onKeyDown: handleKeyDown, tabIndex: onAction ? 0 : -1, active: active, disabled: disabled, separator: separator, dangerous: dangerous, "$separatorLine": separatorLine }),
prefix,
children || content,
suffix));
}
const DropdownMenuItemWrapper = styled_components_1.default.li `
display: flex;
flex-direction: row;
justify-content: var(--dropdown-menu-item-justify-content, flex-start);
align-items: center;
width: 100%;
border: none;
background: none;
appearance: none;
text-align: left;
gap: var(--spacing-xxs);
> * {
min-width: 0; // for flex
}
cursor: pointer;
pointer-events: auto;
padding: var(--dropdown-menu-item-padding-vertical) var(--dropdown-menu-item-padding-horizontal);
border-radius: var(--dropdown-menu-item-border-radius);
&:focus-visible {
outline: 1px solid var(--dropdown-menu-item-border-color-focused);
}
background-color: var(--dropdown-menu-item-bg-color);
color: var(--dropdown-menu-item-color);
text-decoration: none;
&:hover {
background-color: var(--dropdown-menu-item-bg-color-hover);
color: var(--dropdown-menu-item-color-hover);
}
${({ separator }) => separator &&
(0, styled_components_1.css) `
cursor: default;
pointer-events: none;
font-size: var(--dropdown-menu-item-separator-font-size);
line-height: var(--dropdown-menu-item-separator-line-height);
color: var(--dropdown-menu-item-separator-text-color);
--dropdown-menu-item-bg-color-hover: var(--dropdown-menu-item-bg-color);
`}
${({ active }) => active &&
(0, styled_components_1.css) `
background-color: var(--dropdown-menu-item-bg-color-active);
color: var(--dropdown-menu-item-color-active);
svg {
fill: var(--dropdown-menu-item-color-active);
}
`}
${({ disabled }) => disabled &&
(0, styled_components_1.css) `
cursor: default;
pointer-events: none;
background-color: var(--dropdown-menu-item-bg-color-disabled);
color: var(--dropdown-menu-item-color-disabled);
svg {
fill: var(--dropdown-menu-item-color-disabled);
}
`}
${({ $separatorLine }) => $separatorLine &&
(0, styled_components_1.css) `
border-bottom: 1px solid var(--dropdown-menu-item-separator-border-color);
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
margin-bottom: var(--dropdown-menu-item-padding-vertical);
&:empty {
padding-top: 0;
padding-bottom: 0;
margin-top: var(--dropdown-menu-item-padding-vertical);
}
`}
${({ dangerous }) => dangerous &&
(0, styled_components_1.css) `
&:hover,
& {
color: var(--dropdown-menu-item-color-dangerous);
svg {
fill: var(--dropdown-menu-item-color-dangerous);
}
}
`}
`;
//# sourceMappingURL=DropdownMenuItem.js.map