@atlaskit/dropdown-menu
Version:
A dropdown menu displays a list of actions or options to a user.
168 lines (166 loc) • 7.78 kB
JavaScript
/* dropdown-menu-item-new.tsx generated by @compiled/babel-plugin v3.0.2 */
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("./dropdown-menu-item-new.compiled.css");
var _react = _interopRequireWildcard(require("react"));
var React = _react;
var _runtime = require("@compiled/react/runtime");
var _css = require("@atlaskit/css");
var _checkMark = _interopRequireDefault(require("@atlaskit/icon/core/check-mark"));
var _chevronRight = _interopRequireDefault(require("@atlaskit/icon/core/chevron-right"));
var _fg = require("@atlaskit/platform-feature-flags/fg");
var _anchor = require("@atlaskit/primitives/compiled/anchor");
var _pressable = require("@atlaskit/primitives/compiled/pressable");
var _stack = require("@atlaskit/primitives/compiled/stack");
var _text = require("@atlaskit/primitives/compiled/text");
var _keyboardShortcut = _interopRequireDefault(require("./internal/components/keyboard-shortcut"));
var _dropdownTriggerContext = require("./internal/context/dropdown-trigger-context");
var _spacingContext = require("./internal/context/spacing-context");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var styles = {
root: "_19itglyw _12ji1r31 _1qu2glyw _12y3idpf _4bfu1r31 _1hmsglyw _ajmmnqa1 _19pkidpf _2hwxidpf _otyridpf _18u0idpf _2rko1qi0 _18zrutpp _1rjcu2gc _1e0c1txw _2lx2vrvc _gy1putpp _4cvr1h6o _1bah1yb4 _16jlkb7n _bfhksm61 _y3gnv2br _syazazsu _1bsb1osq _kqswh2mm _nt751v1w _1bg41i6y _49pcnqa1 _1hvwdkaa _f8pjazsu _mizu1v1w _1ah31i6y _ra3xnqa1 _128mdkaa _9oik1r31 _1bnxglyw _jf4cnqa1 _irr31dpa _30l3azsu _1di6fcek",
compact: "_18zru2gc _1rjc12x7 _gy1pu2gc",
beforeAfterElement: "_1e0c1txw _4cvr1h6o _1bah1h6o _1ul97vkz _1tke7vkz _1o9zidpf",
textContainer: "_y4tiutpp",
selected: "_bfhk15s3 _syazi7uo _f8pji7uo _irr3ufnl _30l3i7uo _1di6nozp",
disabled: "_80om13gf _syaz1gmx _irr3sm61 _30l31gmx _1di6sm61",
disabledAndSelected: "_80om13gf _syaz1gmx _bfhk15s3 _irr315s3 _30l31gmx _1di615s3",
danger: "_syaz1tmw _f8pj1tmw _30l31tmw"
};
function getTitleColor(_ref) {
var isLink = _ref.isLink,
isDisabled = _ref.isDisabled,
isSelected = _ref.isSelected,
isDanger = _ref.isDanger;
if (isLink) {
return isSelected ? 'color.text' : 'color.text.subtle';
}
if (isDisabled) {
return 'color.text.disabled';
}
if (isSelected) {
return 'color.text';
}
if (isDanger) {
return 'color.text.danger';
}
return 'color.text.subtle';
}
function getDescriptionColor(_ref2) {
var isLink = _ref2.isLink,
isDisabled = _ref2.isDisabled;
if (isLink || !isDisabled) {
return 'color.text.subtlest';
}
return 'color.text.disabled';
}
var NewDropdownMenuItem = /*#__PURE__*/(0, _react.memo)( /*#__PURE__*/(0, _react.forwardRef)(function (_ref3, ref) {
var title = _ref3.title,
description = _ref3.description,
elemBefore = _ref3.elemBefore,
elemAfter = _ref3.elemAfter,
shouldTitleWrap = _ref3.shouldTitleWrap,
shouldDescriptionWrap = _ref3.shouldDescriptionWrap,
isSelected = _ref3.isSelected,
isDisabled = _ref3.isDisabled,
hasNestedMenuProp = _ref3.hasNestedMenu,
shortcut = _ref3.shortcut,
appearance = _ref3.appearance,
href = _ref3.href,
onClick = _ref3.onClick,
target = _ref3.target,
rel = _ref3.rel,
testId = _ref3.testId,
id = _ref3.id,
_ref3$role = _ref3.role,
role = _ref3$role === void 0 ? 'menuitem' : _ref3$role,
ariaChecked = _ref3['aria-checked'],
ariaHasPopup = _ref3['aria-haspopup'],
ariaExpanded = _ref3['aria-expanded'];
var isDropdownTrigger = (0, _react.useContext)(_dropdownTriggerContext.DropdownTriggerContext);
var hasNestedMenu = isDropdownTrigger || hasNestedMenuProp;
var spacing = (0, _react.useContext)(_spacingContext.NewSpacingContext);
var isCompact = spacing === 'compact';
var isLink = !!href;
var isDanger = appearance === 'danger';
var titleMaxLines = shouldTitleWrap ? undefined : 1;
var descMaxLines = shouldDescriptionWrap ? undefined : 1;
var titleColor = getTitleColor({
isLink: isLink,
isDisabled: isDisabled,
isSelected: isSelected,
isDanger: isDanger
});
var descColor = getDescriptionColor({
isLink: isLink,
isDisabled: isDisabled
});
// Just to force the toggle in atlaspack workbench
// @ts-ignore
var _nothing = (0, _fg.fg)('platform-dst-tokens-finesse');
var menuItem = /*#__PURE__*/React.createElement(_react.Fragment, null, elemBefore && /*#__PURE__*/React.createElement("span", {
"data-testid": testId && "".concat(testId, "--elem-before"),
className: (0, _runtime.ax)([styles.beforeAfterElement])
}, elemBefore), /*#__PURE__*/React.createElement(_stack.Stack, {
grow: "fill",
space: "space.025",
xcss: styles.textContainer
}, /*#__PURE__*/React.createElement(_text.Text, {
weight: "medium",
color: titleColor,
maxLines: titleMaxLines,
testId: testId && "".concat(testId, "--title")
}, title), description && /*#__PURE__*/React.createElement(_text.Text, {
color: descColor,
maxLines: descMaxLines,
testId: testId && "".concat(testId, "--description")
}, description)), shortcut && /*#__PURE__*/React.createElement(_keyboardShortcut.default, {
shortcut: shortcut
}), elemAfter && /*#__PURE__*/React.createElement("span", {
"data-testid": testId && "".concat(testId, "--elem-after"),
className: (0, _runtime.ax)([styles.beforeAfterElement])
}, elemAfter), hasNestedMenu && /*#__PURE__*/React.createElement("span", {
"data-testid": testId && "".concat(testId, "--chevron"),
className: (0, _runtime.ax)([styles.beforeAfterElement])
}, /*#__PURE__*/React.createElement(_chevronRight.default, {
size: "small",
label: ""
})), isSelected && role === 'menuitem' && !hasNestedMenu && /*#__PURE__*/React.createElement("span", {
"data-testid": testId && "".concat(testId, "--selected"),
className: (0, _runtime.ax)([styles.beforeAfterElement])
}, /*#__PURE__*/React.createElement(_checkMark.default, {
label: ""
})));
if (href) {
return /*#__PURE__*/React.createElement(_anchor.Anchor, {
href: href,
target: target,
rel: rel,
onClick: onClick,
xcss: (0, _css.cx)(styles.root, isCompact && styles.compact, isSelected && styles.selected, isDanger && styles.danger),
testId: testId,
role: role,
id: id,
ref: ref,
"aria-current": isSelected ? 'page' : undefined
}, menuItem);
}
return /*#__PURE__*/React.createElement(_pressable.Pressable, {
onClick: onClick,
isDisabled: isDisabled,
xcss: (0, _css.cx)(styles.root, isCompact && styles.compact, isSelected && styles.selected, isDisabled && styles.disabled, isSelected && isDisabled && styles.disabledAndSelected, isDanger && styles.danger),
testId: testId,
role: role,
"aria-checked": ariaChecked,
"aria-haspopup": ariaHasPopup,
"aria-expanded": ariaExpanded,
id: id,
ref: ref
}, menuItem);
}));
var _default = exports.default = NewDropdownMenuItem;