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 ui: Move to Workspaced Structure (#8994) 2020-10-21 15:23:16 +01:00
index.hbs ui: CopyButton amends (#10511) 2021-07-06 16:56:36 +01:00
index.js ui: CopyButton amends (#10511) 2021-07-06 16:56:36 +01:00
index.scss ui: Upstream CSS Tweaks (#11554) 2021-11-16 15:36:54 +00:00
layout.scss ui: CopyButton amends (#10511) 2021-07-06 16:56:36 +01:00
README.mdx ui: CopyButton amends (#10511) 2021-07-06 16:56:36 +01:00
skin.scss ui: Replaces almost all remaining instances of SASS variables with CSS (#11200) 2021-10-07 19:21:11 +01:00

# 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)

---