orcs-design-system
Version:
TeamForm's Design System, aka: ORCS
60 lines • 1.63 kB
JavaScript
import React, { createContext, useContext, useState, useMemo } from "react";
import PropTypes from "prop-types";
import { jsx as _jsx } from "react/jsx-runtime";
const SideNavStateContext = /*#__PURE__*/createContext();
export const useSideNavStateContext = () => {
const context = useContext(SideNavStateContext);
if (!context) {
throw new Error("useSideNavStateContext must be used within a SideNavStateProvider");
}
return context;
};
export const SideNavStateProvider = _ref => {
let {
children
} = _ref;
const [expandedItem, setExpandedItem] = useState(null);
const [isExpanded, setIsExpanded] = useState(false);
const [expandedWidth, setExpandedWidth] = useState(null);
const [isLocked, setIsLocked] = useState(false);
const value = useMemo(() => ({
expandedItem,
setExpandedItem,
isExpanded,
setIsExpanded,
expandedWidth,
setExpandedWidth,
isLocked,
setIsLocked
}), [expandedItem, isExpanded, expandedWidth, isLocked]);
return /*#__PURE__*/_jsx(SideNavStateContext.Provider, {
value: value,
children: children
});
};
SideNavStateProvider.propTypes = {
children: PropTypes.node.isRequired,
initialViewing: PropTypes.any
};
export default SideNavStateContext;
SideNavStateProvider.__docgenInfo = {
"description": "",
"methods": [],
"displayName": "SideNavStateProvider",
"props": {
"children": {
"description": "",
"type": {
"name": "node"
},
"required": true
},
"initialViewing": {
"description": "",
"type": {
"name": "any"
},
"required": false
}
}
};