UNPKG

azure-devops-ui

Version:

React components for building web UI in Azure DevOps

1 lines 1.35 kB
import"../../CommonImports";import"../../Core/core.css";import"./ClipboardButton.css";import*as React from"react";import{ObservableValue}from"../../Core/Observable";import{Button}from"../../Button";import{Observer}from"../../Observer";import*as Resources from"../../Resources.Clipboard";import{css}from"../../Util";import{copyToClipboard}from"../../Utils/ClipboardUtils";class ClipboardButton extends React.Component{constructor(){super(...arguments),this.copied=new ObservableValue(!1),this.onClick=o=>{var{getContent:e,onCopy:t}=this.props,e=(this.copied.value||(this.copied.value=!0),e());copyToClipboard(e,t),o.preventDefault(),o.stopPropagation()},this.onMouseLeave=o=>{this.copied.value&&(this.copied.value=!1),this.props.onMouseLeave&&this.props.onMouseLeave(o)}}render(){const{ariaLabel:e,onBlur:t,onFocus:s,showCopiedTooltip:r,subtle:i,tooltipProps:p}=this.props,a="string"==typeof r?r:Resources.CopiedToClipboard;return React.createElement("div",{className:css("bolt-clipboard-button",this.props.className)},React.createElement(Observer,{copied:this.copied},o=>React.createElement(Button,{ariaLabel:e||Resources.CopyToClipboard,iconProps:{iconName:"Copy"},onBlur:t,onClick:this.onClick,onFocus:s,subtle:i,tooltipProps:r&&o.copied?Object.assign(Object.assign({},p),{text:a}):p,onMouseLeave:this.onMouseLeave})))}}export{ClipboardButton};