UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

100 lines (99 loc) 4.78 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _view = _interopRequireDefault(require("../view")); var _icon2 = _interopRequireDefault(require("../icon")); var _item = _interopRequireDefault(require("./item")); var _context = _interopRequireDefault(require("./context")); var _utils = require("../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } var SubNav = function (props, ref) { var _classNames; var className = props.className, icon = props.icon, _props$label = props.label, label = _props$label === void 0 ? '' : _props$label, _props$level = props.level, level = _props$level === void 0 ? 1 : _props$level, _props$expanded = props.expanded, expanded = _props$expanded === void 0 ? false : _props$expanded, _props$itemKey = props.itemKey, itemKey = _props$itemKey === void 0 ? '' : _props$itemKey, dataSource = props.dataSource, children = props.children, others = (0, _tslib.__rest)(props, ["className", "icon", "label", "level", "expanded", "itemKey", "dataSource", "children"]); var ctx = (0, _react.useContext)(_context.default); var onItemSelect = ctx.onItemSelect, clsPrefix = ctx.clsPrefix, model = ctx.model, type = ctx.type, size = ctx.size; var _useState = (0, _react.useState)(expanded), isExpanded = _useState[0], setExpanded = _useState[1]; var keyCounter = 0; return /*#__PURE__*/(0, _react.createElement)(_react.Fragment, null, /*#__PURE__*/(0, _react.createElement)(_item.default, _extends({ ref: ref }, others, { icon: icon, label: label, level: level, onClick: function handleSelect() { setExpanded(!isExpanded); }, className: (0, _classnames.default)(className, (_classNames = {}, _classNames[clsPrefix + "--" + type + "-" + model + "-active"] = isExpanded, _classNames)), disableSelect: true, extra: /*#__PURE__*/(0, _react.createElement)(_icon2.default, { name: isExpanded ? 'arrow-up' : 'arrow-down', size: "s" }) })), isExpanded ? /*#__PURE__*/(0, _react.createElement)(_view.default, null, dataSource ? function renderChildrenByData() { if (!dataSource) { return null; } return dataSource.map(function (item) { var newLevel = level + 1; var _itemKey = item.key; var _icon = item.icon, iconUri = item.iconUri, _children = item.children; return (0, _utils.isValidArray)(_children) ? /*#__PURE__*/(0, _react.createElement)(SubNav, { key: _itemKey, itemKey: _itemKey, icon: icon, iconUri: iconUri, label: item.label, level: newLevel, dataSource: _children }) : /*#__PURE__*/(0, _react.createElement)(_item.default, { key: _itemKey, itemKey: _itemKey, level: newLevel, icon: _icon, iconUri: iconUri, label: item.label }); }); }() : _react.Children.map(children, function renderChild(child) { keyCounter++; var _key = child.key || itemKey + "-" + keyCounter; if (!(0, _react.isValidElement)(child)) { return null; } return (0, _react.cloneElement)(child, { key: _key, itemKey: _key, size: size, level: level + 1, onItemSelect: onItemSelect }); })) : null); }; SubNav.displayName = 'Nav.SubNav'; var _default = exports.default = /*#__PURE__*/(0, _react.forwardRef)(SubNav);