@carbon/react
Version:
React components for the Carbon Design System
44 lines (42 loc) • 1.76 kB
JavaScript
/**
* Copyright IBM Corp. 2016, 2026
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
const require_runtime = require("../../_virtual/_rolldown/runtime.js");
const require_keys = require("../../internal/keyboard/keys.js");
const require_match = require("../../internal/keyboard/match.js");
const require_useEvent = require("../../internal/useEvent.js");
let react = require("react");
react = require_runtime.__toESM(react);
let prop_types = require("prop-types");
prop_types = require_runtime.__toESM(prop_types);
let react_jsx_runtime = require("react/jsx-runtime");
//#region src/components/UIShell/HeaderContainer.tsx
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
function HeaderContainer({ render: Children, isSideNavExpanded = false, ...rest }) {
const [isSideNavExpandedState, setIsSideNavExpandedState] = (0, react.useState)(isSideNavExpanded);
require_useEvent.useWindowEvent("keydown", (event) => {
if (require_match.match(event, require_keys.Escape)) setIsSideNavExpandedState(false);
});
const handleHeaderMenuButtonClick = (0, react.useCallback)(() => {
setIsSideNavExpandedState((prevIsSideNavExpanded) => !prevIsSideNavExpanded);
}, [setIsSideNavExpandedState]);
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Children, {
...rest,
isSideNavExpanded: isSideNavExpandedState,
onClickSideNavExpand: handleHeaderMenuButtonClick
});
}
HeaderContainer.propTypes = {
isSideNavExpanded: prop_types.default.bool,
render: prop_types.default.elementType.isRequired
};
//#endregion
exports.default = HeaderContainer;