UNPKG

@ant-design/x

Version:

Craft AI-driven interfaces effortlessly

80 lines (79 loc) 2.44 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.findItem = exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _icons = require("@ant-design/icons"); var _antd = require("antd"); var _clsx = require("clsx"); var _react = _interopRequireDefault(require("react")); var _context = require("./context"); /** Tool function: Find data item by path */ const findItem = (keyPath, items) => { const keyToFind = keyPath[0]; for (const item of items) { if (!item) return null; if (item.key === keyToFind) { if (keyPath.length === 1) return item; if (item.subItems) { return findItem(keyPath.slice(1), item?.subItems); } } } return null; }; exports.findItem = findItem; const ActionsMenu = props => { const { onClick: onMenuClick, item, dropdownProps = {} } = props; const { prefixCls, classNames = {}, styles = {} } = _react.default.useContext(_context.ActionsContext) || {}; const { subItems = [], triggerSubMenuAction = 'hover' } = item; const icon = item?.icon ?? /*#__PURE__*/_react.default.createElement(_icons.EllipsisOutlined, null); const menuProps = { items: subItems, onClick: ({ key, keyPath, domEvent }) => { if (findItem(keyPath, subItems)?.onItemClick) { findItem(keyPath, subItems)?.onItemClick?.(findItem(keyPath, subItems)); return; } onMenuClick?.({ key, keyPath: [...keyPath, item?.key || ''], domEvent, item: findItem(keyPath, subItems) }); } }; return /*#__PURE__*/_react.default.createElement(_antd.Dropdown, (0, _extends2.default)({ menu: menuProps, trigger: [triggerSubMenuAction] }, dropdownProps, { className: (0, _clsx.clsx)(`${prefixCls}-dropdown`, classNames.itemDropdown, dropdownProps?.className), styles: { root: styles.itemDropdown, ...dropdownProps?.styles } }), /*#__PURE__*/_react.default.createElement("div", { className: (0, _clsx.clsx)(`${prefixCls}-item`, `${prefixCls}-sub-item`, classNames?.item), style: styles?.item }, /*#__PURE__*/_react.default.createElement("div", { className: `${prefixCls}-icon` }, icon))); }; var _default = exports.default = ActionsMenu;