@difizen/mana-react
Version:
102 lines (100 loc) • 5.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MenubarItem = void 0;
var _classnames3 = _interopRequireDefault(require("classnames"));
var _react = _interopRequireWildcard(require("react"));
var React = _react;
var ReactDom = _interopRequireWildcard(require("react-dom"));
var _context = require("./context");
var _jsxRuntime = require("react/jsx-runtime");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
function stopPropagation(e) {
e.stopPropagation();
}
var MenubarItem = exports.MenubarItem = function MenubarItem(props) {
var context = React.useContext(_context.MenubarContext);
var menubarItemRef = React.useRef(null);
var text = props.text,
children = props.children,
hidden = props.hidden;
var prefixCls = context.prefixCls,
menubarActived = context.menubarActived;
var active = context.activeElementRef && context.activeElementRef.current && context.activeElementRef.current === menubarItemRef.current;
var currentMenuActived = menubarActived && active;
var baseCls = "".concat(prefixCls, "-item");
var popupClassName = "".concat(context.prefixCls, "-item-dropdown");
(0, _react.useEffect)(function () {
var element = menubarItemRef.current;
if (element) {
element.addEventListener('mousedown', stopPropagation);
}
return function () {
if (element) {
element.removeEventListener('mousedown', stopPropagation);
}
};
}, []);
var doActive = function doActive() {
context.setActiveElementRef(menubarItemRef);
};
var doDeactive = function doDeactive() {
context.setActiveElementRef();
};
var onToggleActive = function onToggleActive(e) {
e.stopPropagation();
if (!currentMenuActived) {
context.activeMenubar();
doActive();
}
};
var locatable = !!menubarItemRef.current;
var getPortalItemStyle = function getPortalItemStyle() {
var node = menubarItemRef.current;
if (!node) {
return {};
}
var offsetHeight = node.offsetHeight;
var _node$getBoundingClie = node.getBoundingClientRect(),
top = _node$getBoundingClie.top,
left = _node$getBoundingClie.left;
return {
top: top + offsetHeight,
left: left
};
};
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
ref: menubarItemRef,
className: (0, _classnames3.default)(baseCls, _defineProperty(_defineProperty(_defineProperty({}, "".concat(baseCls, "-hidden"), hidden), "".concat(baseCls, "-hover"), menubarActived), "".concat(baseCls, "-active"), currentMenuActived)),
onMouseEnter: doActive,
onClick: onToggleActive,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: (0, _classnames3.default)("".concat(baseCls, "-text"), _defineProperty({}, "".concat(baseCls, "-text-active"), currentMenuActived))
// onClick={onClick}
,
children: text
}), currentMenuActived && locatable && /*#__PURE__*/ReactDom.createPortal( /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
style: {
position: 'absolute',
top: 0,
left: 0,
width: '100%'
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
style: getPortalItemStyle(),
className: popupClassName,
children: children
})
})
}), document.body)]
});
};
// eslint-disable-next-line @typescript-eslint/no-redeclare