webbingbrasil/filament-copyactions

Filament Admin 的易于使用的复制操作。

3.0.1 2024-04-03 12:14 UTC

This package is auto-updated.

Last update: 2024-09-03 13:08:05 UTC


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!

图标位置和颜色

您可以使用 iconiconPositioniconColor 方法自定义图标。

仅显示复制图标

您可以通过隐藏文本内容并仅显示复制图标来显示列。

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()),

您可以在表单、页面或表格的操作中使用此技术。

致谢