react-feather#Clipboard TypeScript Examples
The following examples show how to use
react-feather#Clipboard.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ClipboardCopy.tsx From bee-dashboard with BSD 3-Clause "New" or "Revised" License | 6 votes |
export default function ClipboardCopy({ value }: Props): ReactElement {
const { enqueueSnackbar } = useSnackbar()
const handleCopy = () => enqueueSnackbar(`Copied: ${value}`, { variant: 'success' })
return (
<div style={{ marginRight: '3px', marginLeft: '3px' }}>
<IconButton color="primary" size="small" onClick={handleCopy}>
<CopyToClipboard text={value}>
<Clipboard style={{ height: '20px' }} />
</CopyToClipboard>
</IconButton>
</div>
)
}
Example #2
Source File: ExportFeedDialog.tsx From bee-dashboard with BSD 3-Clause "New" or "Revised" License | 5 votes |
export function ExportFeedDialog({ identity, onClose }: Props): ReactElement {
const { enqueueSnackbar } = useSnackbar()
const classes = useStyles()
function onDownload() {
saveAs(
new Blob([identity.identity], {
type: 'application/json',
}),
identity.name + '.json',
)
}
function getExportText() {
return identity.type === 'V3' ? 'JSON file' : 'the private key string'
}
function onCopy() {
navigator.clipboard
.writeText(identity.identity)
.then(() => enqueueSnackbar('Copied to Clipboard', { variant: 'success' }))
}
return (
<SwarmDialog>
<Box mb={4}>
<TitleWithClose onClose={onClose}>Export</TitleWithClose>
</Box>
<Box mb={2}>
<Typography align="center">{`We exported the identity associated with this feed as ${getExportText()}.`}</Typography>
</Box>
<Box mb={4} className={classes.wrapper}>
<Code prettify>{identity.identity}</Code>
</Box>
<ExpandableListItemActions>
<SwarmButton iconType={Download} onClick={onDownload}>
Download JSON File
</SwarmButton>
<SwarmButton iconType={Clipboard} onClick={onCopy}>
Copy To Clipboard
</SwarmButton>
</ExpandableListItemActions>
</SwarmDialog>
)
}
Example #3
Source File: Share.tsx From gateway-ui with BSD 3-Clause "New" or "Revised" License | 4 votes |
SharePage = ({ uploadReference, metadata }: Props): ReactElement => {
const classes = useStyles()
const navigate = useNavigate()
const isWebsite = metadata?.isWebsite
const bzzLink = `https://${encodeManifestReference(uploadReference)}.${BZZ_LINK_DOMAIN}/`
const linkHeader = isWebsite ? 'Bzz Link' : 'Web link'
const linkUrl = isWebsite ? bzzLink : `${GATEWAY_URL}${ROUTES.ACCESS_HASH(uploadReference)}`
const [copiedToClipboard, setCopiedToClipboard] = useState<boolean>(false)
const [activeValue, setActiveValue] = useState<string>(uploadReference)
return (
<Layout
top={[
<Header
key="top1"
leftAction={
<IconButton
onClick={() => {
navigate(ROUTES.LANDING_PAGE)
}}
>
<ArrowLeft strokeWidth={1} />
</IconButton>
}
>
{text.shareHashPage.header}
</Header>,
<Typography key="top2" variant="subtitle1">
{text.shareHashPage.tagline}
</Typography>,
]}
center={[
<Tabs
key="center1"
onChange={reference => {
if (reference !== activeValue) {
setActiveValue(reference)
setCopiedToClipboard(false)
}
}}
values={[
{
label: linkHeader,
component: (
<div>
<Paper
square
elevation={0}
style={{ overflowWrap: 'break-word', textAlign: 'left', padding: 16, margin: 4 }}
>
<Typography variant="caption">{linkUrl}</Typography>
</Paper>
{isWebsite && (
<Button
variant="contained"
style={{ margin: 4, width: 'auto' }}
className={classes.button}
href={bzzLink}
target="blank"
>
<ExternalLink strokeWidth={1} />
{text.accessHashPage.openWebsite}
<ExternalLink style={{ opacity: 0 }} />
</Button>
)}
</div>
),
value: linkUrl,
},
{
label: 'Swarm hash',
component: (
<Paper
square
elevation={0}
style={{ overflowWrap: 'break-word', textAlign: 'left', padding: 16, margin: 4 }}
>
<Typography variant="caption">{uploadReference}</Typography>
</Paper>
),
value: uploadReference,
},
]}
/>,
]}
bottom={[
<Typography key="bottom1" variant="body2">
{text.shareHashPage.disclaimer}
</Typography>,
<Footer key="bottom2">
<CopyToClipboard text={activeValue}>
<Button
variant="contained"
className={classes.button}
size="large"
onClick={e => {
e.stopPropagation()
setCopiedToClipboard(true)
}}
>
{copiedToClipboard ? <Check strokeWidth={1} /> : <Clipboard strokeWidth={1} />}
{copiedToClipboard ? text.shareHashPage.copyLinkActionSuccess : text.shareHashPage.copyLinkAction}
{/* Needed to properly align icon to the right and label to center */}
<Clipboard style={{ opacity: 0 }} />
</Button>
</CopyToClipboard>
</Footer>,
]}
/>
)
}