nova-kit/nova-field-mixins

Laravel Nova Field Mixins

v2.1.0 2023-02-14 12:27 UTC

This package is auto-updated.

Last update: 2024-04-05 07:45:33 UTC


README

tests Latest Stable Version Total Downloads Latest Unstable Version License Coverage Status

Installation

To install through composer, run the following command from terminal:

composer require "nova-kit/nova-field-mixins"

Usages

Laravel Nova Field Mixins is useful to apply set common set of configuration to Field without repeating it. E.g:

use Laravel\Nova\Fields\DateTime;

DateTime::make('Created At')->sortable()->displayUsing(fn ($d) => $d?->diffForHumans()),
DateTime::make('Updated At')->sortable()->displayUsing(fn ($d) => $d?->diffForHumans()),

By adding following class App\Nova\Fields\Mixins\StandardDateTime:

<?php 

namespace App\Nova\Fields\Mixins;

use Laravel\Nova\Fields\Field;

class StandardDateTime
{
    public function __invoke(Field $field)
    {
        $field->sortable()->displayUsing(fn ($d) => $d?->diffForHumans());
    }
}

You can now write above example as:

use App\Nova\Fields\Mixins\StandardDateTime;
use Laravel\Nova\Fields\DateTime;

DateTime::make('Created At')->apply(StandardDateTime::class),
DateTime::make('Updated At')->apply(StandardDateTime::class),

Available Mixin

Handle AsArrayobject Cast

This package provide a default implement casting for AsArrayObject.

use Laravel\Nova\Fields\Text;
use NovaKit\Fields\Mixins\AsArrayObject;

Text::make('Name', 'profile.name')->apply(new AsArrayObject()),

You can also simplify this by using fromArrayObject macro.

use Laravel\Nova\Fields\Text;

Text::make('Name', 'profile.name')->fromArrayObject(),