Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#213 text copy feature #231

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions library_fdddf_copy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 复制文本组件库

**依赖库设计**

这个依赖库旨在提供一个复制文本的方法

**主要特性**

- **组件一/逻辑一:** 提供复制文本方法。

## copyText


**特性 1:** 支持复制文本


...

## 使用说明

### 组件(组件名)

- **attrs**
n/a

- **methods**
n/a

- **events**
n/a

### 逻辑(逻辑名)

- **copyText(text):**

复制文本

## 应用演示链接

[示例演示链接](https://dev-testdiff-qa.app.codewave.163.com/dashboard/copytest)

![img](Snipaste_2024-10-16_21-30-24.jpg)


Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions library_fdddf_copy/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import UtilsLogics from './logics';
// COMPONENT IMPORTS
export {
UtilsLogics,
// COMPONENT EXPORTS
};
5 changes: 5 additions & 0 deletions library_fdddf_copy/logics/copyText/api.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- name: copyText
description: 复制文本
type: both
belong: logic
labels: [Runtime]
36 changes: 36 additions & 0 deletions library_fdddf_copy/logics/copyText/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/**
* 复制文本到剪贴板
* @param {string} text <true> 需要复制的文本
* @returns {Promise<void | Error>}
*/
export default async function copyToClipboard(text) {
try {
if (navigator.clipboard) {
// 使用异步方法处理 navigator.clipboard.writeText,并捕获错误
await navigator.clipboard.writeText(text);
} else {
// 如果 clipboard API 不可用,使用备用方法
const textarea = getReusableTextarea();
textarea.value = text;
textarea.select();
document.execCommand('copy');
}
} catch (error) {
console.error('复制到剪贴板失败:', error);
return error;
}
}

// 创建或获取一个可复用的 textarea 元素
let reusableTextarea = null;
function getReusableTextarea() {
if (!reusableTextarea) {
reusableTextarea = document.createElement('textarea');
document.body.appendChild(reusableTextarea);
reusableTextarea.style.position = 'fixed';
reusableTextarea.style.top = '0'; // 移到屏幕外部,避免影响布局
reusableTextarea.style.left = '-9999px';
reusableTextarea.style.visibility = 'hidden'; // 使用 visibility: hidden 隐藏
}
return reusableTextarea;
}
14 changes: 14 additions & 0 deletions library_fdddf_copy/logics/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const $libraryName = 'library_fdddf_copy'

const UtilsLogics = {}
import copyText from './copyText'
// LOGIC IMPORTS

UtilsLogics.install = function (Vue, option = {}) {
Vue.prototype.$library = Vue.prototype.$library || {}
Vue.prototype.$library[`${$libraryName}`] = {}
Vue.prototype.$library[`${$libraryName}`].copyText=copyText
// LOGIC USE
}

export default UtilsLogics
6 changes: 6 additions & 0 deletions library_fdddf_copy/manifest
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Plugin-Version: 1.0.0
Library-Type: Frontend
Metadata-File: usage.json
packages/extension/[email protected]/dist-theme/demo.html: dist-theme/demo.html
packages/extension/[email protected]/dist-theme/index.js: dist-theme/index.js
packages/extension/[email protected]/dist-theme/index.js.map: dist-theme/index.js.map
Loading
Loading