2022-02-28 15:29:19 +01:00
|
|
|
<script>
|
2023-03-01 11:48:24 +01:00
|
|
|
import Input from "../Form/Input.svelte"
|
|
|
|
import Icon from "../Icon/Icon.svelte"
|
|
|
|
import { notifications } from "../Stores/notifications"
|
2022-02-28 15:29:19 +01:00
|
|
|
|
|
|
|
export let label = null
|
|
|
|
export let value
|
|
|
|
|
|
|
|
const copyToClipboard = val => {
|
|
|
|
const dummy = document.createElement("textarea")
|
|
|
|
document.body.appendChild(dummy)
|
|
|
|
dummy.value = val
|
|
|
|
dummy.select()
|
|
|
|
document.execCommand("copy")
|
|
|
|
document.body.removeChild(dummy)
|
2023-01-18 14:56:53 +01:00
|
|
|
notifications.success(`Copied to clipboard`)
|
2022-02-28 15:29:19 +01:00
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
2024-02-22 14:19:29 +01:00
|
|
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
|
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
2023-02-01 09:20:46 +01:00
|
|
|
<div>
|
2022-02-28 15:29:19 +01:00
|
|
|
<Input readonly {value} {label} />
|
2022-05-12 20:46:13 +02:00
|
|
|
<div class="icon" on:click={() => copyToClipboard(value)}>
|
2022-02-28 15:29:19 +01:00
|
|
|
<Icon size="S" name="Copy" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
div {
|
|
|
|
position: relative;
|
|
|
|
}
|
|
|
|
|
|
|
|
.icon {
|
|
|
|
right: 1px;
|
|
|
|
bottom: 1px;
|
|
|
|
position: absolute;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: row;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-left: 1px solid var(--spectrum-alias-border-color);
|
|
|
|
border-top-right-radius: var(--spectrum-alias-border-radius-regular);
|
|
|
|
border-bottom-right-radius: var(--spectrum-alias-border-radius-regular);
|
|
|
|
width: 31px;
|
|
|
|
color: var(--spectrum-alias-text-color);
|
|
|
|
background-color: var(--spectrum-global-color-gray-75);
|
|
|
|
transition: background-color
|
|
|
|
var(--spectrum-global-animation-duration-100, 130ms),
|
|
|
|
box-shadow var(--spectrum-global-animation-duration-100, 130ms),
|
|
|
|
border-color var(--spectrum-global-animation-duration-100, 130ms);
|
|
|
|
height: calc(var(--spectrum-alias-item-height-m) - 2px);
|
|
|
|
}
|
|
|
|
.icon:hover {
|
|
|
|
cursor: pointer;
|
|
|
|
color: var(--spectrum-alias-text-color-hover);
|
|
|
|
background-color: var(--spectrum-global-color-gray-50);
|
|
|
|
border-color: var(--spectrum-alias-border-color-hover);
|
|
|
|
}
|
|
|
|
</style>
|