@antdp/basic-layouts
Version:
113 lines (111 loc) • 4 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _icons = require("@ant-design/icons");
var _antd = require("antd");
var _react = _interopRequireDefault(require("react"));
var _max = require("@umijs/max");
var _jsxRuntime = require("react/jsx-runtime");
// @ts-ignore
var _setHideInMenu = function setHideInMenu() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
data.forEach(function (item) {
item.hideInMenu = true;
if (item.routes && item.routes.length > 0) {
_setHideInMenu(item.routes);
}
});
};
var _getRoutesList = function getRoutesList() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
data.forEach(function (item) {
if (item.hideInMenu) {
// 如果父级需要隐藏,则将所有子级 hideInMenu 属性设为 true
_setHideInMenu(item.routes);
} else if (item.routes && item.routes.length > 0) {
_getRoutesList(item.routes, list);
} else {
list.push(item);
}
});
return list;
};
var SearchMenus = function SearchMenus() {
var location = (0, _max.useLocation)();
var _useAppData = (0, _max.useAppData)(),
clientRoutes = _useAppData.clientRoutes;
var _React$useState = _react["default"].useState(false),
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
collapsed = _React$useState2[0],
setCollapsed = _React$useState2[1];
var parentPath = location.pathname;
var routes = _react["default"].useMemo(function () {
var routes = clientRoutes.find(function (item) {
return item.path === '/';
});
return (routes === null || routes === void 0 ? void 0 : routes.routes) || [];
}, [clientRoutes]);
var listRouters = _react["default"].useMemo(function () {
return _getRoutesList(routes);
}, [routes]);
var listMenus = _react["default"].useMemo(function () {
return listRouters.filter(function (item) {
return item && 'name' in item && !item.hideInMenu && item.path !== '*';
}).map(function (item) {
return {
label: item.name,
value: item.path
};
});
}, [listRouters]);
var currentValue = _react["default"].useMemo(function () {
return listMenus.find(function (item) {
return item.value === parentPath;
}) || undefined;
}, [parentPath]);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
style: {
display: 'flex',
alignItems: 'center'
},
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SearchOutlined, {
onClick: function onClick() {
return setCollapsed(!collapsed);
},
style: {
fontSize: 20,
marginRight: collapsed ? 10 : 0
}
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
style: {
display: collapsed ? 'block' : 'none'
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Select, {
value: currentValue,
placeholder: "\u8BF7\u641C\u7D22",
labelInValue: true,
showSearch: true,
optionFilterProp: "children",
filterOption: function filterOption(input, option) {
var _option$label;
return ((_option$label = option === null || option === void 0 ? void 0 : option.label) !== null && _option$label !== void 0 ? _option$label : '').toLowerCase().includes(input.toLowerCase());
},
options: listMenus,
onSelect: function onSelect(_ref) {
var value = _ref.value;
return _max.history.push(value);
},
style: {
width: 150
}
})
})]
});
};
var _default = exports["default"] = SearchMenus;
module.exports = exports.default;