webbingbrasil / filament-copyactions
Filament Admin 的易于使用的复制操作。
Requires
- php: ^8.0
- filament/filament: ^3.0
README
注意 对于 Filament 2.x 使用 2.x 分支
Filament Admin 的易于使用的复制操作
- 表格操作以实现动态复制内容
- 表单操作,可与其他任何字段一起使用
- 页面操作,在任意页面上实现动态复制按钮
- 自定义复制表列以简单地复制文本内容
注意 只有当用户浏览器支持 Clipboard API 时,复制功能才会工作。此外,用户必须在安全上下文(HTTPS)或本地主机上。
安装
composer require webbingbrasil/filament-copyactions
用法
表格列
显示带有复制按钮的文本列,该列具有 TextColumn 的所有功能,复制操作将列内容发送到剪贴板并显示成功提示。
use Webbingbrasil\FilamentCopyActions\Tables\CopyableTextColumn; CopyableTextColumn::make('brand.name') ->copyMessage('Brand copied to clipboard') ->searchable() ->sortable() ->toggleable()
该列具有显示文本上方或下方描述的选项,默认情况下不复制描述,如果您想复制描述,请使用 copyWithDescription
方法。
成功消息
您可以使用 copyMessage
方法自定义成功消息,默认消息为 Copied!
。
图标位置和颜色
您可以使用 icon
、iconPosition
和 iconColor
方法自定义图标。
仅显示复制图标
您可以通过隐藏文本内容并仅显示复制图标来显示列。
use Webbingbrasil\FilamentCopyActions\Tables\CopyableTextColumn; CopyableTextColumn::make('brand.name')->onlyIcon()
表格操作
显示表格操作按钮,您可以使用 copyable
方法设置内容。您可以使用与 Filament Action 相同的方法自定义按钮图标/颜色。
use Webbingbrasil\FilamentCopyActions\Tables\Actions\CopyAction; $table ->actions([ CopyAction::make()->copyable(fn ($record) => $record->name), ])
成功消息
操作将显示复制状态,您可以使用 successNotificationMessage
方法自定义成功消息或使用 errorNotificationMessage
方法自定义错误消息。
表单操作
如果您想复制字段值,请将 CopyAction
用于字段后缀或前缀。您可以使用与 Filament Action 相同的方法自定义按钮图标/颜色。
use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction; Forms\Components\TextInput::make('sku') ->label('SKU (Stock Keeping Unit)') ->suffixAction(CopyAction::make()) ->required(); Forms\Components\Select::make('shop_brand_id') ->relationship('brand', 'name') ->prefixAction(CopyAction::make()) ->searchable();
您可以在任何 Filament 字段中使用此表单操作,默认情况下,操作将复制字段值到剪贴板,但您可以使用 copyable
方法自定义值。
use Webbingbrasil\FilamentCopyActions\Forms\Actions\CopyAction; Forms\Components\Select::make('shop_brand_id') ->relationship('brand', 'name') ->prefixAction(CopyAction::make()->copyable(fn ($component) => $component->getOptionLabel())) ->searchable();
成功消息
操作将显示复制状态,您可以使用 successNotificationMessage
方法自定义成功消息或使用 errorNotificationMessage
方法自定义错误消息。
页面操作
您可以在 Filament 的任何页面上添加 CopyAction
按钮,只需将操作放入页面的 actions
方法中。您可以使用与 Filament Action 相同的方法自定义按钮图标/颜色。
use Webbingbrasil\FilamentCopyActions\Pages\Actions\CopyAction; protected function getActions(): array { return [ CopyAction::make()->copyable(fn () => $this->record->name), ]; }
操作将显示复制状态,您可以使用 successNotificationMessage
方法自定义成功消息或使用 errorNotificationMessage
方法自定义错误消息。
CopyAction 提示
默认情况下,CopyAction 不会触发 livewire 请求,因此在页面渲染期间它只返回在 copyable
方法中定义的值。
但是,如果需要复制的值在每次操作触发时都是动态的,您可以使用 action()
方法。
CopyAction::make()->copyable(fn () => $this->voucher)->action(fn() => $this->generateVoucher()),
您可以在表单、页面或表格的操作中使用此技术。