UNPKG

@ant-design/x

Version:

Craft AI-driven interfaces effortlessly

93 lines (86 loc) 2.97 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _icons = require("@ant-design/icons"); var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs")); var _antd = require("antd"); var _clsx = require("clsx"); var _react = _interopRequireDefault(require("react")); const stopPropagation = e => { e.stopPropagation(); }; const ConversationsItem = props => { const { prefixCls, info, className, direction, onClick, active, menu, ...restProps } = props; const domProps = (0, _pickAttrs.default)(restProps, { aria: true, data: true, attr: true }); // ============================= MISC ============================= const { disabled } = info; // ============================ Style ============================= const mergedCls = (0, _clsx.clsx)(className, `${prefixCls}-item`, { [`${prefixCls}-item-active`]: active && !disabled }, { [`${prefixCls}-item-disabled`]: disabled }); // ============================ Events ============================ const onInternalClick = () => { if (!disabled && onClick) { onClick(info.key); } }; // ============================ Menu ============================ const { trigger, ...dropdownMenu } = menu || {}; const getPopupContainer = dropdownMenu?.getPopupContainer; const renderMenuTrigger = conversation => { const originTriggerNode = /*#__PURE__*/_react.default.createElement(_icons.EllipsisOutlined, { onClick: stopPropagation, className: `${prefixCls}-menu-icon` }); if (trigger) { return typeof trigger === 'function' ? trigger(conversation, { originNode: originTriggerNode }) : trigger; } return originTriggerNode; }; // ============================ Render ============================ return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({ title: typeof info.label === 'object' ? undefined : `${info.label}` }, domProps, { className: mergedCls, onClick: onInternalClick }), info.icon && /*#__PURE__*/_react.default.createElement("div", { className: `${prefixCls}-icon` }, info.icon), /*#__PURE__*/_react.default.createElement(_antd.Typography.Text, { className: `${prefixCls}-label` }, info.label), !disabled && menu && /*#__PURE__*/_react.default.createElement("div", { onClick: stopPropagation }, /*#__PURE__*/_react.default.createElement(_antd.Dropdown, { menu: dropdownMenu, placement: direction === 'rtl' ? 'bottomLeft' : 'bottomRight', trigger: ['click'], disabled: disabled, getPopupContainer: getPopupContainer }, renderMenuTrigger(info)))); }; var _default = exports.default = ConversationsItem;