payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
128 lines (127 loc) • 11.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
const _reactanimateheight = /*#__PURE__*/ _interop_require_default(require("react-animate-height"));
const _Chevron = /*#__PURE__*/ _interop_require_default(require("../../icons/Chevron"));
const _Preferences = require("../../utilities/Preferences");
const _context = require("../Nav/context");
require("./index.scss");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
const baseClass = 'nav-group';
const NavGroup = ({ children, label })=>{
const [collapsed, setCollapsed] = (0, _react.useState)(true);
const [animate, setAnimate] = (0, _react.useState)(false);
const { getPreference, setPreference } = (0, _Preferences.usePreferences)();
const { navOpen } = (0, _context.useNav)();
const preferencesKey = `collapsed-${label}-groups`;
(0, _react.useEffect)(()=>{
if (label) {
const setCollapsedFromPreferences = async ()=>{
const preferences = await getPreference(preferencesKey) || [];
setCollapsed(preferences.indexOf(label) !== -1);
};
setCollapsedFromPreferences();
}
}, [
getPreference,
label,
preferencesKey
]);
if (label) {
const toggleCollapsed = async ()=>{
setAnimate(true);
let preferences = await getPreference(preferencesKey) || [];
if (collapsed) {
preferences = preferences.filter((preference)=>label !== preference);
} else {
preferences.push(label);
}
setPreference(preferencesKey, preferences);
setCollapsed(!collapsed);
};
return /*#__PURE__*/ _react.default.createElement("div", {
className: [
`${baseClass}`,
`${label}`,
collapsed && `${baseClass}--collapsed`
].filter(Boolean).join(' '),
id: `nav-group-${label}`
}, /*#__PURE__*/ _react.default.createElement("button", {
className: [
`${baseClass}__toggle`,
`${baseClass}__toggle--${collapsed ? 'collapsed' : 'open'}`
].filter(Boolean).join(' '),
onClick: toggleCollapsed,
tabIndex: !navOpen ? -1 : 0,
type: "button"
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__label`
}, label), /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__indicator`
}, /*#__PURE__*/ _react.default.createElement(_Chevron.default, {
className: `${baseClass}__indicator`,
direction: !collapsed ? 'up' : undefined
}))), /*#__PURE__*/ _react.default.createElement(_reactanimateheight.default, {
duration: animate ? 200 : 0,
height: collapsed ? 0 : 'auto'
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__content`
}, children)));
}
return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, children);
};
const _default = NavGroup;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL05hdkdyb3VwL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IEFuaW1hdGVIZWlnaHQgZnJvbSAncmVhY3QtYW5pbWF0ZS1oZWlnaHQnXG5cbmltcG9ydCBDaGV2cm9uIGZyb20gJy4uLy4uL2ljb25zL0NoZXZyb24nXG5pbXBvcnQgeyB1c2VQcmVmZXJlbmNlcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9QcmVmZXJlbmNlcydcbmltcG9ydCB7IHVzZU5hdiB9IGZyb20gJy4uL05hdi9jb250ZXh0J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICduYXYtZ3JvdXAnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgbGFiZWw6IHN0cmluZ1xufVxuXG5jb25zdCBOYXZHcm91cDogUmVhY3QuRkM8UHJvcHM+ID0gKHsgY2hpbGRyZW4sIGxhYmVsIH0pID0+IHtcbiAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFthbmltYXRlLCBzZXRBbmltYXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB7IGdldFByZWZlcmVuY2UsIHNldFByZWZlcmVuY2UgfSA9IHVzZVByZWZlcmVuY2VzKClcbiAgY29uc3QgeyBuYXZPcGVuIH0gPSB1c2VOYXYoKVxuXG4gIGNvbnN0IHByZWZlcmVuY2VzS2V5ID0gYGNvbGxhcHNlZC0ke2xhYmVsfS1ncm91cHNgXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobGFiZWwpIHtcbiAgICAgIGNvbnN0IHNldENvbGxhcHNlZEZyb21QcmVmZXJlbmNlcyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJlZmVyZW5jZXMgPSAoYXdhaXQgZ2V0UHJlZmVyZW5jZShwcmVmZXJlbmNlc0tleSkpIHx8IFtdXG4gICAgICAgIHNldENvbGxhcHNlZChwcmVmZXJlbmNlcy5pbmRleE9mKGxhYmVsKSAhPT0gLTEpXG4gICAgICB9XG4gICAgICBzZXRDb2xsYXBzZWRGcm9tUHJlZmVyZW5jZXMoKVxuICAgIH1cbiAgfSwgW2dldFByZWZlcmVuY2UsIGxhYmVsLCBwcmVmZXJlbmNlc0tleV0pXG5cbiAgaWYgKGxhYmVsKSB7XG4gICAgY29uc3QgdG9nZ2xlQ29sbGFwc2VkID0gYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0QW5pbWF0ZSh0cnVlKVxuICAgICAgbGV0IHByZWZlcmVuY2VzOiBzdHJpbmdbXSA9IChhd2FpdCBnZXRQcmVmZXJlbmNlKHByZWZlcmVuY2VzS2V5KSkgfHwgW11cbiAgICAgIGlmIChjb2xsYXBzZWQpIHtcbiAgICAgICAgcHJlZmVyZW5jZXMgPSBwcmVmZXJlbmNlcy5maWx0ZXIoKHByZWZlcmVuY2UpID0+IGxhYmVsICE9PSBwcmVmZXJlbmNlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlZmVyZW5jZXMucHVzaChsYWJlbClcbiAgICAgIH1cbiAgICAgIHNldFByZWZlcmVuY2UocHJlZmVyZW5jZXNLZXksIHByZWZlcmVuY2VzKVxuICAgICAgc2V0Q29sbGFwc2VkKCFjb2xsYXBzZWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtbYCR7YmFzZUNsYXNzfWAsIGAke2xhYmVsfWAsIGNvbGxhcHNlZCAmJiBgJHtiYXNlQ2xhc3N9LS1jb2xsYXBzZWRgXVxuICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAuam9pbignICcpfVxuICAgICAgICBpZD17YG5hdi1ncm91cC0ke2xhYmVsfWB9XG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e1tcbiAgICAgICAgICAgIGAke2Jhc2VDbGFzc31fX3RvZ2dsZWAsXG4gICAgICAgICAgICBgJHtiYXNlQ2xhc3N9X190b2dnbGUtLSR7Y29sbGFwc2VkID8gJ2NvbGxhcHNlZCcgOiAnb3Blbid9YCxcbiAgICAgICAgICBdXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAuam9pbignICcpfVxuICAgICAgICAgIG9uQ2xpY2s9e3RvZ2dsZUNvbGxhcHNlZH1cbiAgICAgICAgICB0YWJJbmRleD17IW5hdk9wZW4gPyAtMSA6IDB9XG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fbGFiZWxgfT57bGFiZWx9PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2luZGljYXRvcmB9PlxuICAgICAgICAgICAgPENoZXZyb25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pbmRpY2F0b3JgfVxuICAgICAgICAgICAgICBkaXJlY3Rpb249eyFjb2xsYXBzZWQgPyAndXAnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxBbmltYXRlSGVpZ2h0IGR1cmF0aW9uPXthbmltYXRlID8gMjAwIDogMH0gaGVpZ2h0PXtjb2xsYXBzZWQgPyAwIDogJ2F1dG8nfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY29udGVudGB9PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICAgPC9BbmltYXRlSGVpZ2h0PlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudD57Y2hpbGRyZW59PC9SZWFjdC5GcmFnbWVudD5cbn1cblxuZXhwb3J0IGRlZmF1bHQgTmF2R3JvdXBcbiJdLCJuYW1lcyI6WyJiYXNlQ2xhc3MiLCJOYXZHcm91cCIsImNoaWxkcmVuIiwibGFiZWwiLCJjb2xsYXBzZWQiLCJzZXRDb2xsYXBzZWQiLCJ1c2VTdGF0ZSIsImFuaW1hdGUiLCJzZXRBbmltYXRlIiwiZ2V0UHJlZmVyZW5jZSIsInNldFByZWZlcmVuY2UiLCJ1c2VQcmVmZXJlbmNlcyIsIm5hdk9wZW4iLCJ1c2VOYXYiLCJwcmVmZXJlbmNlc0tleSIsInVzZUVmZmVjdCIsInNldENvbGxhcHNlZEZyb21QcmVmZXJlbmNlcyIsInByZWZlcmVuY2VzIiwiaW5kZXhPZiIsInRvZ2dsZUNvbGxhcHNlZCIsImZpbHRlciIsInByZWZlcmVuY2UiLCJwdXNoIiwiZGl2IiwiY2xhc3NOYW1lIiwiQm9vbGVhbiIsImpvaW4iLCJpZCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJ0YWJJbmRleCIsInR5cGUiLCJDaGV2cm9uIiwiZGlyZWN0aW9uIiwidW5kZWZpbmVkIiwiQW5pbWF0ZUhlaWdodCIsImR1cmF0aW9uIiwiaGVpZ2h0IiwiUmVhY3QiLCJGcmFnbWVudCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFrRkE7OztlQUFBOzs7K0RBbEYyQzsyRUFDakI7Z0VBRU47NkJBQ1c7eUJBQ1I7UUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUEsWUFBWTtBQU9sQixNQUFNQyxXQUE0QixDQUFDLEVBQUVDLFFBQVEsRUFBRUMsS0FBSyxFQUFFO0lBQ3BELE1BQU0sQ0FBQ0MsV0FBV0MsYUFBYSxHQUFHQyxJQUFBQSxlQUFRLEVBQUM7SUFDM0MsTUFBTSxDQUFDQyxTQUFTQyxXQUFXLEdBQUdGLElBQUFBLGVBQVEsRUFBQztJQUN2QyxNQUFNLEVBQUVHLGFBQWEsRUFBRUMsYUFBYSxFQUFFLEdBQUdDLElBQUFBLDJCQUFjO0lBQ3ZELE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLElBQUFBLGVBQU07SUFFMUIsTUFBTUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFWCxNQUFNLE9BQU8sQ0FBQztJQUVsRFksSUFBQUEsZ0JBQVMsRUFBQztRQUNSLElBQUlaLE9BQU87WUFDVCxNQUFNYSw4QkFBOEI7Z0JBQ2xDLE1BQU1DLGNBQWMsQUFBQyxNQUFNUixjQUFjSyxtQkFBb0IsRUFBRTtnQkFDL0RULGFBQWFZLFlBQVlDLE9BQU8sQ0FBQ2YsV0FBVyxDQUFDO1lBQy9DO1lBQ0FhO1FBQ0Y7SUFDRixHQUFHO1FBQUNQO1FBQWVOO1FBQU9XO0tBQWU7SUFFekMsSUFBSVgsT0FBTztRQUNULE1BQU1nQixrQkFBa0I7WUFDdEJYLFdBQVc7WUFDWCxJQUFJUyxjQUF3QixBQUFDLE1BQU1SLGNBQWNLLG1CQUFvQixFQUFFO1lBQ3ZFLElBQUlWLFdBQVc7Z0JBQ2JhLGNBQWNBLFlBQVlHLE1BQU0sQ0FBQyxDQUFDQyxhQUFlbEIsVUFBVWtCO1lBQzdELE9BQU87Z0JBQ0xKLFlBQVlLLElBQUksQ0FBQ25CO1lBQ25CO1lBQ0FPLGNBQWNJLGdCQUFnQkc7WUFDOUJaLGFBQWEsQ0FBQ0Q7UUFDaEI7UUFFQSxxQkFDRSw2QkFBQ21CO1lBQ0NDLFdBQVc7Z0JBQUMsQ0FBQyxFQUFFeEIsVUFBVSxDQUFDO2dCQUFFLENBQUMsRUFBRUcsTUFBTSxDQUFDO2dCQUFFQyxhQUFhLENBQUMsRUFBRUosVUFBVSxXQUFXLENBQUM7YUFBQyxDQUM1RW9CLE1BQU0sQ0FBQ0ssU0FDUEMsSUFBSSxDQUFDO1lBQ1JDLElBQUksQ0FBQyxVQUFVLEVBQUV4QixNQUFNLENBQUM7eUJBRXhCLDZCQUFDeUI7WUFDQ0osV0FBVztnQkFDVCxDQUFDLEVBQUV4QixVQUFVLFFBQVEsQ0FBQztnQkFDdEIsQ0FBQyxFQUFFQSxVQUFVLFVBQVUsRUFBRUksWUFBWSxjQUFjLE9BQU8sQ0FBQzthQUM1RCxDQUNFZ0IsTUFBTSxDQUFDSyxTQUNQQyxJQUFJLENBQUM7WUFDUkcsU0FBU1Y7WUFDVFcsVUFBVSxDQUFDbEIsVUFBVSxDQUFDLElBQUk7WUFDMUJtQixNQUFLO3lCQUVMLDZCQUFDUjtZQUFJQyxXQUFXLENBQUMsRUFBRXhCLFVBQVUsT0FBTyxDQUFDO1dBQUdHLHNCQUN4Qyw2QkFBQ29CO1lBQUlDLFdBQVcsQ0FBQyxFQUFFeEIsVUFBVSxXQUFXLENBQUM7eUJBQ3ZDLDZCQUFDZ0MsZ0JBQU87WUFDTlIsV0FBVyxDQUFDLEVBQUV4QixVQUFVLFdBQVcsQ0FBQztZQUNwQ2lDLFdBQVcsQ0FBQzdCLFlBQVksT0FBTzhCOzRCQUlyQyw2QkFBQ0MsMkJBQWE7WUFBQ0MsVUFBVTdCLFVBQVUsTUFBTTtZQUFHOEIsUUFBUWpDLFlBQVksSUFBSTt5QkFDbEUsNkJBQUNtQjtZQUFJQyxXQUFXLENBQUMsRUFBRXhCLFVBQVUsU0FBUyxDQUFDO1dBQUdFO0lBSWxEO0lBRUEscUJBQU8sNkJBQUNvQyxjQUFLLENBQUNDLFFBQVEsUUFBRXJDO0FBQzFCO01BRUEsV0FBZUQifQ==