fenextjs-component
Version:
43 lines • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ItemMenu = void 0;
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const fenextjs_hook_1 = require("fenextjs-hook");
const Simple_1 = require("../../Collapse/Simple");
const fenextjs_hook_2 = require("fenextjs-hook");
const Arrow_1 = require("fenextjs-svg/cjs/Arrow");
const Link_1 = require("../../Link");
const ItemMenu = ({ className = "", classNameA = "", classNameIcon = "", classNameText = "", text, url, icon = react_1.default.createElement(react_1.default.Fragment, null), subItems = [], defaultActive = false, iconArrow = react_1.default.createElement(Arrow_1.SvgArrow, null), nameNumber = 1, typeCollapse, isLink = true, onClick, useRouterCustom = fenextjs_hook_1.useRouter, ...props }) => {
const { _t } = (0, fenextjs_hook_2.use_T)({ ...props });
const router = useRouterCustom();
const urlInter = (0, react_1.useMemo)(() => {
const nlLink = router?.asPath.split("/");
const nlUrl = url.split("/");
const common = nlLink.filter((x) => nlUrl.indexOf(x) !== -1);
return common.length;
}, [router?.asPath, url]);
const urlActive = (0, react_1.useCallback)((url) => {
return (router?.asPath?.indexOf?.(url) == 0 &&
((router?.asPath != "/" && url != "/") ||
(url == "/" && router?.asPath == "/")));
}, [router?.asPath]);
const subItemsActive = (0, react_1.useCallback)((sub) => {
return sub?.some((e) => {
return (urlActive(e?.url) ||
(e?.subItems && subItemsActive(e?.subItems)));
});
}, [router?.asPath]);
const contentSubItemAtive = (0, react_1.useMemo)(() => subItemsActive(subItems), [subItems, router?.asPath]);
const Tag = isLink ? Link_1.Link : "div";
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { className: `fenext-menu-item ${className}` },
react_1.default.createElement(Simple_1.Collapse, { key: router?.asPath ?? "", name: `fenext-menu-item-${nameNumber}`, defaultActive: defaultActive || contentSubItemAtive, type: typeCollapse, header: react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement(Tag, { href: url, className: `fenext-menu-item-a ${classNameA} ${urlActive(url)
? `fenext-menu-item-a-active fenext-menu-item-a-url-inter-${urlInter}`
: ""}`, "data-url": url, onClick: onClick },
react_1.default.createElement("div", { className: `fenext-menu-item-a-icon ${classNameIcon}` }, icon),
react_1.default.createElement("div", { className: `fenext-menu-item-a-text ${classNameText}` }, _t(text)))), iconArrow: iconArrow }, subItems?.map((sub, i) => (react_1.default.createElement(exports.ItemMenu, { key: i, ...sub, _t: _t, iconArrow: sub?.iconArrow ?? iconArrow, nameNumber: nameNumber + 1 })))))));
};
exports.ItemMenu = ItemMenu;
//# sourceMappingURL=index.js.map