<!-- 该 README.md 根据 api.yaml 和 docs/*.md 自动生成，为了方便在 GitHub 和 NPM 上查阅。如需修改，请查看源文件 -->

# UCopy 复制

- [示例](#示例)
    - [基本用法](#基本用法)
    - [触发元素](#触发元素)
    - [提示内容](#提示内容)
    - [提示方式](#提示方式)
    - [提示位置](#提示位置)
    - [提示时长](#提示时长)
    - [禁用状态](#禁用状态)
- [API]()
    - [Props/Attrs](#propsattrs)
    - [Slots](#slots)
    - [Events](#events)

复制文本到剪切板。

## 示例
### 基本用法

通过`value`设置需要复制的文本。通过`text`设置链接的文本。

``` html
<u-copy value="需要 copy 的内容"></u-copy>&nbsp;
<u-copy value="密钥内容 ef709de9" text="复制密钥"></u-copy>
```

### 触发元素

在默认插槽中更换触发元素。

``` html
<u-copy value="需要 copy 的内容">
    <u-button>复制</u-button>
</u-copy>
```

也可以直接在元素上使用`v-copy`指令。

``` html
<u-button v-copy="'需要 copy 的内容'">复制</u-button>
```

### 提示内容

通过`success-text`属性设置复制成功的提示内容。

``` html
<u-copy value="需要 copy 的内容" success-text="当前项已复制成功">
    <u-button>复制</u-button>
</u-copy>
```

### 提示方式

通过`feedback`属性设置复制成功的反馈方式。

#### tooltip (默认)

``` html
<u-copy value="需要 copy 的内容">
    <u-link>复制</u-link>
</u-copy>
```

#### toast

``` html
<u-copy value="需要 copy 的内容" feedback="toast">
    <u-link>复制</u-link>
</u-copy>
```

如果是指令，可以使用`toast`修饰符：

``` html
<u-button v-copy.toast="'需要 copy 的内容'">复制</u-button>
```

#### 不提示

``` html
<u-copy value="需要 copy 的内容" feedback="none">
    <u-link>复制</u-link>
</u-copy>
```

### 提示位置

设置 tooltip 的提示位置。仅在`feedback`为`tooltip`的情况下生效。

``` html
<u-linear-layout direction="vertical" style="min-width: 300px; max-width: 550px;">
    <u-linear-layout justify="center" gap="small">
        <u-copy value="需要 copy 的内容" placement="top-start">
            <u-button>上左</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="top">
            <u-button>上边</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="top-end">
            <u-button>上右</u-button>
        </u-copy>
    </u-linear-layout>
    <u-linear-layout direction="vertical" justify="center" style="width: 150px; float: left;">
        <u-copy value="需要 copy 的内容" placement="left-start">
            <u-button>左上</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="left">
            <u-button>左边</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="left-end">
            <u-button>左下</u-button>
        </u-copy>
    </u-linear-layout>
    <u-linear-layout direction="vertical" justify="center" style="width: 150px; float: right;">
        <u-copy value="需要 copy 的内容" placement="right-start">
            <u-button>右上</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="right">
            <u-button>右边</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="right-end">
            <u-button>右下</u-button>
        </u-copy>
    </u-linear-layout>
    <u-linear-layout justify="center" gap="small" style="clear: both;">
        <u-copy value="需要 copy 的内容" placement="bottom-start">
            <u-button>下左</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="bottom">
            <u-button>下边</u-button>
        </u-copy>
        <u-copy value="需要 copy 的内容" placement="bottom-end">
            <u-button>下右</u-button>
        </u-copy>
    </u-linear-layout>
</u-linear-layout>
```

#### 指令形式

``` html
<u-linear-layout direction="vertical" style="min-width: 300px; max-width: 550px;">
    <u-linear-layout justify="center" gap="small">
        <u-button v-copy.top-start="'需要 copy 的内容'">上左</u-button>
        <u-button v-copy.top="'需要 copy 的内容'">上边</u-button>
        <u-button v-copy.top-end="'需要 copy 的内容'">上右</u-button>
    </u-linear-layout>
    <u-linear-layout direction="vertical" justify="center" style="width: 150px; float: left">
        <u-button v-copy.left-start="'需要 copy 的内容'">左上</u-button>
        <u-button v-copy.left="'需要 copy 的内容'">左边</u-button>
        <u-button v-copy.left-end="'需要 copy 的内容'">左下</u-button>
    </u-linear-layout>
    <u-linear-layout direction="vertical" justify="center" style="width: 150px; float: right">
        <u-button v-copy.right-start="'需要 copy 的内容'">右上</u-button>
        <u-button v-copy.right="'需要 copy 的内容'">右边</u-button>
        <u-button v-copy.right-end="'需要 copy 的内容'">右下</u-button>
    </u-linear-layout>
    <u-linear-layout justify="center" gap="small" style="clear: both">
        <u-button v-copy.bottom-start="'需要 copy 的内容'">下左</u-button>
        <u-button v-copy.bottom="'需要 copy 的内容'">下边</u-button>
        <u-button v-copy.bottom-end="'需要 copy 的内容'">下右</u-button>
    </u-linear-layout>
</u-linear-layout>
```

### 提示时长

通过`hide-delay`属性设置提示时长。

#### tooltip 弹框

``` html
<u-linear-layout>
    <u-copy value="需要 copy 的内容" :hide-delay="500">
        <u-button>500毫秒</u-button>
    </u-copy>
    <u-copy value="需要 copy 的内容" :hide-delay="2000">
        <u-button>2秒</u-button>
    </u-copy>
    <u-copy value="需要 copy 的内容" :hide-delay="4000">
        <u-button>4秒</u-button>
    </u-copy>
</u-linear-layout>
```

#### toast 提示

``` html
<u-linear-layout>
    <u-copy value="需要 copy 的内容" :hide-delay="500" feedback="toast">
        <u-button>500毫秒</u-button>
    </u-copy>
    <u-copy value="需要 copy 的内容" :hide-delay="2000" feedback="toast">
        <u-button>2秒</u-button>
    </u-copy>
    <u-copy value="需要 copy 的内容" :hide-delay="4000" feedback="toast">
        <u-button>4秒</u-button>
    </u-copy>
</u-linear-layout>
```

#### 指令形式

在指令形式中，使用指令参数设置提示时长。

``` html
<u-button v-copy.toast:500="'需要 copy 的内容'">复制</u-button>
```

### 禁用状态

通过`disabled`属性禁用复制功能，仅针对复制组件本身。通过插槽设置的触发元素需要自己添加禁用状态。

``` html
<u-linear-layout>
    <u-copy value="需要 copy 的内容" disabled></u-copy>
    <u-copy value="需要 copy 的内容" disabled>
        <u-button disabled>复制</u-button>
    </u-copy>
</u-linear-layout>
```

#### 指令形式

在指令形式中，直接根据元素的`disabled`属性来判断。

``` html
<u-button v-copy="'需要 copy 的内容'" disabled>复制</u-button>
```

## API
### Props/Attrs

| Prop/Attr | Type | Options | Default | Description |
| --------- | ---- | ------- | ------- | ----------- |
| value | string |  |  | 需要复制的值 |
| text | string |  | `'复制'` | 链接的文本 |
| success-text | string |  | `'已复制'` | 复制成功提示文本 |
| feedback | enum | `'tooltip'`<br/>`'toast'`<br/>`'none'` | `'tooltip'` | 复制提示反馈方式 `'tooltip'`,`'toast'`,`'none'` |
| placement | string |  | `'top'` | tooltip 提示框位置，可选值：`'top'`, `'bottom'`, `'left'`, `'right'`, `'top-start'`, `'top-end'`, `'bottom-start'`, `'bottom-end'`, `'left-start`',`'left-end'`, `'right-start'`, `'right-end'` |
| hide-delay | number |  | `3000` | 提示框显示时长 |
| disabled | boolean |  | `false` | 是否禁止复制 |

### Slots

#### (default)

插入 HTML 或组件，用于修改触发元素。

### Events

#### @copy

内容复制成功后触发

| Param | Type | Description |
| ----- | ---- | ----------- |
| $event.value | string | 复制的值 |
| senderVM | UCopy | 事件发送对象 |

