UNPKG

@cainiaofe/cn-ui-m

Version:
47 lines (46 loc) 2.27 kB
import React, { useCallback } from 'react'; import cx from 'classnames'; export var MenuActionSheet = function (props) { var clsPrefix = props.clsPrefix, options = props.options, onClick = props.onClick, onClose = props.onClose, disabledIndexes = props.disabledIndexes; var len = options ? options.length : 0; var disabled = disabledIndexes; var handleOptionClick = useCallback(function (option, index, e) { if (onClick) { onClick(option, index, e); } if (onClose) { onClose(index, e); } }, [onClick, onClose]); // 渲染单个按钮 var renderButton = function (button, index) { var _a; return (React.createElement("div", { key: "".concat(clsPrefix, "-option-").concat(index), onClick: function (e) { if (!disabled) { handleOptionClick(button, index, e); } }, className: cx("".concat(clsPrefix, "-option"), (_a = {}, _a["".concat(clsPrefix, "-option--last")] = index === len - 1, _a["".concat(clsPrefix, "-option--disabled")] = disabled, _a)) }, React.createElement("div", { className: cx("".concat(clsPrefix, "-option-text"), "".concat(clsPrefix, "-option--left")) }, button))); }; // 渲染分组 var renderLabel = function (label) { return (React.createElement("div", { className: cx("".concat(clsPrefix, "-option"), "".concat(clsPrefix, "-option--no-line")) }, React.createElement("div", { className: cx("".concat(clsPrefix, "-option-text"), "".concat(clsPrefix, "-option-label")) }, label))); }; var renderMenus = function () { var preLabel = ''; return options.map(function (option, index) { if (option.props.label && preLabel !== option.props.label) { preLabel = option.props.label; return (React.createElement(React.Fragment, null, renderLabel(option.props.label), renderButton(option.props.children, index))); } else { return renderButton(option.props.children, index); } }); }; return React.createElement(React.Fragment, null, renderMenus()); };