khali / nova4-indicator-field
一个 Laravel Nova 4 指示字段。
Requires
- php: >=7.1.0
- laravel/nova: ^4.0
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 认为为假值的任何内容,即 false
、0
、null
或 ''
,则可以隐藏指示器
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
字段显示方式相似,具有超过真/假值的能力,以及不同的标签和颜色定义。
索引
详情
表单
(与详情相同。)
默认情况下,指示器不会在表单上显示。如果您选择使用showOnUpdate()
将其显示为表单字段,则指示器不可编辑,并且不会写回服务器,因为它旨在来自只读或派生模型属性。
如果您需要可编辑的状态字段,您可能需要在您的资源中添加自己的附加Laravel\Nova\Fields\Select
字段,引用相同的属性名,并将onlyOnForms()
设置为。