Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
134 lines
3.6 KiB
Plaintext
134 lines
3.6 KiB
Plaintext
'use client';
|
|
|
|
import { c as _c } from "react/compiler-runtime";
|
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
import { PREFERENCE_KEYS } from 'payload/shared';
|
|
import React, { useState } from 'react';
|
|
import { ChevronIcon } from '../../icons/Chevron/index.js';
|
|
import { usePreferences } from '../../providers/Preferences/index.js';
|
|
import './index.scss';
|
|
import { AnimateHeight } from '../AnimateHeight/index.js';
|
|
import { useNav } from '../Nav/context.js';
|
|
const baseClass = 'nav-group';
|
|
export const NavGroup = t0 => {
|
|
const $ = _c(21);
|
|
const {
|
|
children,
|
|
isOpen: isOpenFromProps,
|
|
label
|
|
} = t0;
|
|
const [collapsed, setCollapsed] = useState(typeof isOpenFromProps !== "undefined" ? !isOpenFromProps : false);
|
|
const [animate, setAnimate] = useState(false);
|
|
const {
|
|
setPreference
|
|
} = usePreferences();
|
|
const {
|
|
navOpen
|
|
} = useNav();
|
|
if (label) {
|
|
let t1;
|
|
if ($[0] !== collapsed || $[1] !== label || $[2] !== setPreference) {
|
|
t1 = () => {
|
|
setAnimate(true);
|
|
const newGroupPrefs = {};
|
|
if (!newGroupPrefs?.[label]) {
|
|
newGroupPrefs[label] = {
|
|
open: Boolean(collapsed)
|
|
};
|
|
} else {
|
|
newGroupPrefs[label].open = Boolean(collapsed);
|
|
}
|
|
setPreference(PREFERENCE_KEYS.NAV, {
|
|
groups: newGroupPrefs
|
|
}, true);
|
|
setCollapsed(!collapsed);
|
|
};
|
|
$[0] = collapsed;
|
|
$[1] = label;
|
|
$[2] = setPreference;
|
|
$[3] = t1;
|
|
} else {
|
|
t1 = $[3];
|
|
}
|
|
const toggleCollapsed = t1;
|
|
const t2 = `${label}`;
|
|
const t3 = collapsed && `${baseClass}--collapsed`;
|
|
let t4;
|
|
if ($[4] !== t2 || $[5] !== t3) {
|
|
t4 = [`${baseClass}`, t2, t3].filter(Boolean);
|
|
$[4] = t2;
|
|
$[5] = t3;
|
|
$[6] = t4;
|
|
} else {
|
|
t4 = $[6];
|
|
}
|
|
const t5 = t4.join(" ");
|
|
const t6 = `nav-group-${label}`;
|
|
const t7 = `${baseClass}__toggle--${collapsed ? "collapsed" : "open"}`;
|
|
let t8;
|
|
if ($[7] !== t7) {
|
|
t8 = [`${baseClass}__toggle`, t7].filter(Boolean);
|
|
$[7] = t7;
|
|
$[8] = t8;
|
|
} else {
|
|
t8 = $[8];
|
|
}
|
|
const t9 = t8.join(" ");
|
|
const t10 = !navOpen ? -1 : 0;
|
|
let t11;
|
|
if ($[9] !== animate || $[10] !== children || $[11] !== collapsed || $[12] !== label || $[13] !== t10 || $[14] !== t5 || $[15] !== t6 || $[16] !== t9 || $[17] !== toggleCollapsed) {
|
|
t11 = _jsxs("div", {
|
|
className: t5,
|
|
id: t6,
|
|
children: [_jsxs("button", {
|
|
className: t9,
|
|
onClick: toggleCollapsed,
|
|
tabIndex: t10,
|
|
type: "button",
|
|
children: [_jsx("div", {
|
|
className: `${baseClass}__label`,
|
|
children: label
|
|
}), _jsx("div", {
|
|
className: `${baseClass}__indicator`,
|
|
children: _jsx(ChevronIcon, {
|
|
className: `${baseClass}__indicator`,
|
|
direction: !collapsed ? "up" : undefined
|
|
})
|
|
})]
|
|
}), _jsx(AnimateHeight, {
|
|
duration: animate ? 200 : 0,
|
|
height: collapsed ? 0 : "auto",
|
|
children: _jsx("div", {
|
|
className: `${baseClass}__content`,
|
|
children
|
|
})
|
|
})]
|
|
});
|
|
$[9] = animate;
|
|
$[10] = children;
|
|
$[11] = collapsed;
|
|
$[12] = label;
|
|
$[13] = t10;
|
|
$[14] = t5;
|
|
$[15] = t6;
|
|
$[16] = t9;
|
|
$[17] = toggleCollapsed;
|
|
$[18] = t11;
|
|
} else {
|
|
t11 = $[18];
|
|
}
|
|
return t11;
|
|
}
|
|
let t1;
|
|
if ($[19] !== children) {
|
|
t1 = _jsx(React.Fragment, {
|
|
children
|
|
});
|
|
$[19] = children;
|
|
$[20] = t1;
|
|
} else {
|
|
t1 = $[20];
|
|
}
|
|
return t1;
|
|
};
|
|
//# sourceMappingURL=index.js.map |