UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

54 lines (53 loc) 1.79 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); Object.defineProperty(exports, 'HeaderDropdownButton', { enumerable: true, get: function () { return HeaderDropdownButton; }, }); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react')); const _DropdownMenu = require('../DropdownMenu/DropdownMenu.js'); const _index = require('../../utils/index.js'); const _HeaderBasicButton = require('./HeaderBasicButton.js'); const HeaderDropdownButton = _react.forwardRef((props, ref) => { let { menuItems, children, ...rest } = props; let [isMenuOpen, setIsMenuOpen] = _react.useState(false); let [menuWidth, setMenuWidth] = _react.useState(0); let buttonRef = _react.useRef(null); let refs = (0, _index.useMergedRefs)(ref, buttonRef); _react.useEffect(() => { if (buttonRef.current) setMenuWidth(buttonRef.current.offsetWidth); }, [children]); return _react.createElement( _DropdownMenu.DropdownMenu, { menuItems: menuItems, style: { minInlineSize: menuWidth, }, onVisibleChange: (open) => setIsMenuOpen(open), }, _react.createElement( _HeaderBasicButton.HeaderBasicButton, { ref: refs, 'aria-label': 'Dropdown', endIcon: isMenuOpen ? _react.createElement(_index.SvgCaretUpSmall, { className: 'iui-header-breadcrumb-button-dropdown-icon', 'aria-hidden': true, }) : _react.createElement(_index.SvgCaretDownSmall, { className: 'iui-header-breadcrumb-button-dropdown-icon', 'aria-hidden': true, }), ...rest, }, children, ), ); });