khali/nova4-indicator-field

一个 Laravel Nova 4 指示字段。

1.0.0 2022-04-18 12:39 UTC

This package is auto-updated.

Last update: 2024-09-18 18:08:45 UTC


README

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

安装

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

composer require khalin/nova4-indicator-field

用法

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

use Khalin\Fields\Indicator;

Indicator::make('Status'),

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

选项

标签

添加您希望的状态标签

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

数组键是原始字段值,数组值是期望的标签。

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

如果字段中出现了未定义标签的值,将使用 "unknown" 标签(见下文)。

无标签

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

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 的默认 "base" 颜色,增加了黑色。

  • '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()设置为。