UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

84 lines (83 loc) 2.46 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); Object.defineProperty(exports, 'HeaderSplitButton', { enumerable: true, get: function () { return HeaderSplitButton; }, }); const _interop_require_default = require('@swc/helpers/_/_interop_require_default'); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _classnames = /*#__PURE__*/ _interop_require_default._( require('classnames'), ); 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 HeaderSplitButton = _react.forwardRef((props, forwardedRef) => { let { menuItems, className, menuPlacement = 'bottom-end', children, disabled, ...rest } = props; let [isMenuOpen, setIsMenuOpen] = _react.useState(false); let [menuWidth, setMenuWidth] = _react.useState(0); let ref = _react.useRef(null); _react.useEffect(() => { if (ref.current) setMenuWidth(ref.current.offsetWidth); }, [children]); return _react.createElement( _index.Box, { className: (0, _classnames.default)( 'iui-header-breadcrumb-button-wrapper', className, ), ref: ref, }, _react.createElement( _HeaderBasicButton.HeaderBasicButton, { ref: forwardedRef, disabled: disabled, ...rest, }, children, ), _react.createElement( _DropdownMenu.DropdownMenu, { placement: menuPlacement, menuItems: menuItems, style: { minInlineSize: menuWidth, }, onVisibleChange: (open) => setIsMenuOpen(open), }, _react.createElement( _index.ButtonBase, { 'aria-label': 'More', className: 'iui-header-breadcrumb-button iui-header-breadcrumb-button-split', disabled: disabled, }, 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, }), ), ), ); });