open-consul/ui/packages/consul-ui/app/components/copy-button
John Cowen 5a67cccd2c
ui: Upstream CSS Tweaks (#11554)
Various CSS tweaks/HTML cleanup around upstreams (but impacts other 'rows')

- Prefer {{tooltip}} to <Tooltip>
- Removed some now unnecessary spans
- Stop using an empty class="" for styling purposes.
- Renamed any classes used to identify response properties to follow the exact property name but kebab-cased.
- Fixed up the alignment of things in the rows when used with a 'tiny copy button' (see screengrab) which was minus positioning and knocking things out (pending a proper refactor of our copy button CSS which is from the very very start of things)
2021-11-16 15:36:54 +00:00
..
chart.xstate.js
index.hbs
index.js
index.scss ui: Upstream CSS Tweaks (#11554) 2021-11-16 15:36:54 +00:00
layout.scss
README.mdx
skin.scss

# CopyButton

Button component used for copy-to-clipboard functionality so the user can easily copy specified text to their clipboard, along with tooltip-like notifications so the user has some sort of feedback to know the value has been copied.

This component is essentially a composition of our `{{with-copyable}}` modifier, our `{{tooltip}}` modifier plus specific Consul-flavored visual treatment. This is all glued together with our `<StateChart />` component to manage states.

Can be used inline to render only a small icon for the button with no other text.

```hbs preview-template
<figure>
  <figcaption>Icon only</figcaption>

  <CopyButton
    @value={{'stringToCopy'}}
    @name="Thing"
  />

</figure>

<figure>
  <figcaption>Icon and text</figcaption>

  <CopyButton
    @value={{'stringToCopy'}}
    @name="Thing"
  >
    Copy me!
  </CopyButton>
</figure>
```

## Arguments

| Argument | Type | Default | Description |
| --- | --- | --- | --- |
| `value` | `String` | | The string to be copied to the clipboard on click |
| `name` | `String` | | The 'Name' of the string to be copied. Mainly used for accessibility reasons and giving feedback to the user |


## See

- [Component Source Code](./index.js)
- [Template Source Code](./index.hbs)

---