Files
testing-tool/utils/clipboard.ts
T
LingandRX c039475119 Develop (#15)
* docs: 添加组件文档注释和类型导入

refactor: 统一使用 SnackbarOptions 类型
style: 优化导入语句顺序和格式

* refactor: 简化假数据生成器中的faker导入和使用

Co-authored-by: Copilot <copilot@github.com>

* feat(form-recognizer): 增强表单识别功能并优化UI交互

- 新增字段类型偏好设置功能,支持按域名保存字段类型
- 重构FieldList组件,改进字段选择和类型修改体验
- 添加字段定位闪烁功能,便于在页面上快速找到对应字段
- 优化表单填充逻辑,支持单个字段覆盖默认填充模式
- 移除独立的侧边栏页面,统一使用主页面组件
- 改进useStorageState钩子,增加加载状态管理和防抖处理

* refactor: 移除未使用的组件文件

* refactor(页面头部): 提取通用 PageHeader 组件并替换各页面头部实现

重构各页面头部为统一的 PageHeader 组件,提高代码复用性和维护性

* style(组件): 调整自动刷新开关和存储选项网格的样式

优化自动刷新开关的文本内边距,重构存储选项网格的布局结构,调整间距和边框样式

* style(ui): 调整时间戳页面和结果视图的样式

- 为时区选择器添加圆角
- 优化结果视图的布局和对齐方式
- 调整结果项的内边距和文本样式

* ci(workflow): 移除Firefox测试以简化CI流程

仅保留Chrome浏览器的构建步骤,减少CI运行时间和资源消耗
2026-04-28 08:56:47 +08:00

38 lines
1.1 KiB
TypeScript

import type { SnackbarOptions } from '@/components/GlobalSnackbar';
import { useSnackbar } from '@/components/GlobalSnackbar';
/**
* 复制文本到剪贴板
* @param text 要复制的文本
* @param showMessage 显示消息的函数
* @returns Promise<boolean> 是否复制成功
*/
export const copyToClipboard = async (
text: string,
showMessage?: (message: string, options?: SnackbarOptions) => void,
): Promise<boolean> => {
try {
await navigator.clipboard.writeText(text);
showMessage?.('已复制', { severity: 'success' });
return true;
} catch (error) {
console.error('复制失败:', error);
showMessage?.('复制失败', { severity: 'error' });
return false;
}
};
/**
* 自定义 Hook: 用于处理剪贴板操作
* @returns 包含复制函数和 snackbarProps 的对象
*/
export const useClipboard = () => {
const { snackbarProps, showMessage } = useSnackbar({ autoHideDuration: 1500 });
const copy = async (text: string): Promise<boolean> => {
return copyToClipboard(text, showMessage);
};
return { copy, snackbarProps };
};