epartment / nova-dependency-container by epartment

A Laravel Nova field container allowing to depend on other fields values
3,899,084
379
12
Package Data
Maintainer Username: epartment
Package Create Date: 2018-09-13
Package Last Update: 2023-10-16
Language: PHP
License: MIT
Last Refreshed: 2024-04-19 15:06:48
Package Statistics
Total Downloads: 3,899,084
Monthly Downloads: 38,913
Daily Downloads: 1,514
Total Stars: 379
Total Watchers: 12
Total Forks: 163
Total Open Issues: 81

Nova Field Dependency Container

Latest Version on Packagist Total Downloads License

Description

A container for grouping fields that depend on other field values. Dependencies can be set on any field type or value.

Demo

Demo

Installation

The package can be installed through Composer.

composer require epartment/nova-dependency-container

Usage

  1. Add the Epartment\NovaDependencyContainer\HasDependencies trait to your Nova Resource.
  2. Add the Epartment\NovaDependencyContainer\NovaDependencyContainer to your Nova Resource fields method.
class Page extends Resource
{
    use HasDependencies;

    public function fields(Request $request)
    {
        return [
            
            Select::make('Name format', 'name_format')->options([
                0 => 'First Name',
                1 => 'First Name / Last Name',
                2 => 'Full Name'
            ])->displayUsingLabels(),

            NovaDependencyContainer::make([
                Text::make('First Name', 'first_name')
            ])->dependsOn('name_format', 0),

        ];
    }
}

Dependencies

The package supports two kinds of dependencies:

  1. ->dependsOn('field', 'value')
  2. ->dependsOnNotEmpty('field')

These dependencies can be combined by chaining the methods on the NovaDependencyContainer:

NovaDependencyContainer::make(...)
    ->dependsOn('field1', 'value1')
    ->dependsOnNotEmpty('field2')
    ->dependsOn('field3', 'value3')

The fields used as dependencies can by of any of the default Laravel Nova field types.

For example a checkbox:

Demo

License

The MIT License (MIT). Please see License File for more information.