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