inspheric/nova-indicator-field

Laravel Nova 指示器字段。

v1.43 2020-01-24 12:55 UTC

This package is auto-updated.

Last update: 2024-09-17 21:44:05 UTC


README

为 Laravel Nova 提供彩色指示器字段

Latest Version on Packagist Total Downloads

安装

使用 Composer 将包安装到使用 Nova 的 Laravel 应用程序中

composer require inspheric/nova-indicator-field

使用方法

将字段添加到资源中的 fields 方法

use Inspheric\Fields\Indicator;

Indicator::make('Status'),

该字段扩展了基本 Laravel\Nova\Fields\Field 字段,因此所有常规方法都是可用的。

选项

标签

添加您想要的状态标签

Indicator::make('Status')
    ->labels([
        'banned' => 'Banned',
        'active' => 'Active',
        'invited' => 'Invited',
        'inactive' => 'Inactive',
    ])

数组键是原始字段值,数组值是所需的标签。

当然,您可以使用 Laravel 的 trans()__() 函数来翻译标签。

如果字段中出现的值没有定义标签,将使用“未知”标签(见下文)。

无标签

如果您不需要指定不同的标签,您可以直接显示原始字段值

Indicator::make('Status')
    ->withoutLabels()

未知标签

当原始字段值与您定义的标签之一不对应时,指定标签

Indicator::make('Status')
    ->unknown('Unknown')

当然,您可以使用 Laravel 的 trans()__() 函数来翻译未知标签。

如果没有设置,将显示一个破折号。

此设置在 withoutLabels() 已使用时不适用。在这种情况下,将显示带原始值的未知标签。

应隐藏

如果字段值等于给定的值或回调,则可以隐藏指示器

Indicator::make('Status')
    ->shouldHide('active')
Indicator::make('Status')
    ->shouldHide(['invited', 'requested'])
Indicator::make('Status')
    ->shouldHide(function($value) {
        return $value == 'inactive';
    })

这在您只想在网格中突出显示特定值并隐藏其他值时很有用,例如,您想显示被封禁的用户以红色指示器和标签,而对于非封禁的活跃用户,您根本不想显示指示器。

如果没有则隐藏

如果字段值是 PHP 考虑为假的所有内容,即 false0null'',则可以隐藏指示器

Indicator::make('Status')
    ->shouldHideIfNo()

这是上述 shouldHide() 方法的常见场景的快捷方式。

颜色

命名颜色

添加您想要的状态颜色

Indicator::make('Status')
    ->colors([
        'banned' => 'red',
        'active' => 'green',
        'invited' => 'blue',
        'inactive' => 'grey',
    ])

数组键是原始字段值,数组值是所需的颜色。

如果没有指定状态的颜色,它将以灰色显示。

可用的颜色是来自 Tailwind 的默认“基本”颜色,并添加了黑色。

  • 'black' #22292F
  • 'grey' 或 'gray' #B8C2CC
  • 'red' #E3342F
  • 'orange' #F6993F
  • 'yellow' #FFED4A
  • 'green' #38C172
  • 'teal' #4DC0B5
  • 'blue' #3490DC
  • 'indigo' #6574CD
  • 'purple' #9561E2
  • 'pink' #F66D9B

以及以下 Nova 变量颜色

  • 'success' var(--success)
  • 'warning' var(--warning)
  • 'danger' var(--danger)
  • 'info' var(--info)

颜色类不会与上述列表进行验证,因此如果您输入无效颜色,它将回退到灰色。

字面颜色

您还可以使用自己的十六进制、RGB/RGBA 或 HSL/HSLA 字面颜色或变量,就像在 CSS 中一样

Indicator::make('Status')
    ->colors([
        '...' => '#ff0000',
        '...' => 'rgb(0, 255, 0)',
        '...' => 'rgba(0, 0, 0, 0.5)',
        '...' => 'hsl(120, 100%, 50%)',
        '...' => 'hsla(120, 100%, 50%, 0.5)',
        '...' => 'var(--success)',
    ])

字面颜色不会进行验证,因此如果您输入无效的 CSS 颜色,它将回退到灰色。

附加颜色类

如果您想将自定义颜色作为可重用的类指定,可以使用Nova的资产功能来提供您自己的CSS文件。这些类必须以前缀 indicator- 开头。

.indicator-yourcolourname {
    background: #000000;
}

您可以在字段定义中使用它,但不带 'indicator-' 前缀,如下所示:

Indicator::make('Status')
    ->colors([
        'yourstatus' => 'yourcolourname',
    ])

外观

该字段以与内置的 Laravel\Nova\Fields\Boolean 字段类似的方式显示,具有超过真/假值的能力,以及定义不同的标签和颜色。

索引

index-field

详情

detail-field

表单

(与详情相同。)

默认情况下,指示器不会在表单上显示。如果您选择使用 showOnUpdate() 将其显示为表单字段,则指示器不可编辑,并且不会写回服务器,因为它打算来自只读或派生的模型属性。

如果您确实需要一个可编辑的状态字段,您可能想向您的资源添加自己的附加 Laravel\Nova\Fields\Select 字段,引用相同的属性名,并将 onlyOnForms() 设置。