azure-devops-ui
Version:
React components for building web UI in Azure DevOps
1 lines • 1.69 kB
JavaScript
import"../../CommonImports";import"../../Core/core.css";import"./Menu.css";import"./MenuButton.css";import*as React from"react";import{ExpandableButton}from"../../Button";import{ContextualMenu}from"./Menu";let buttonId=1;class MenuButton extends React.Component{constructor(t){super(t),this.dropdownButton=React.createRef(),this.expand=()=>{this.dropdownButton.current&&this.dropdownButton.current.expand()},this.collapse=()=>{this.dropdownButton.current&&this.dropdownButton.current.collapse()},this.renderMenu=(n,t,o,e,r,s,u)=>{const i="function"==typeof this.props.contextualMenuProps?this.props.contextualMenuProps():this.props.contextualMenuProps;return React.createElement(ContextualMenu,{anchorElement:o,anchorOffset:i.anchorOffset||e,anchorOrigin:i.anchorOrigin||r,anchorPoint:i.anchorPoint||s,fixedLayout:i.fixedLayout,menuOrigin:i.menuOrigin||u,menuProps:i.menuProps,className:i.className,onActivate:(t,o)=>{i.onActivate&&i.onActivate(t,o),n.collapse()},onDismiss:n.collapse})},this.state={id:this.props.id||"menu-button-"+buttonId++}}render(){var t=this.props["hideDropdownIcon"],o="function"==typeof this.props.contextualMenuProps?this.props.contextualMenuProps():this.props.contextualMenuProps;return React.createElement(ExpandableButton,Object.assign({},Object.assign(Object.assign({},this.props),{menuProps:o.menuProps}),{dropdownId:null==(o=null==o?void 0:o.menuProps)?void 0:o.id,hideDropdownIcon:t,id:this.state.id,ref:this.dropdownButton,renderCallout:this.renderMenu}),this.props.children)}focus(){this.dropdownButton.current&&this.dropdownButton.current.focus()}setTabIndex(t){this.dropdownButton.current&&this.dropdownButton.current.setTabIndex(t)}}export{MenuButton};