Laravel Community Tools by Tighten
Laravel Nova icon Nova Packages
N

Combobox Filter

Installation Instructions

composer require harrald/nova-combobox-filter

Readme

Nova Combobox Filter

Latest Version on Packagist Total Downloads Total Downloads Total Downloads

This component is based on the Headless UI Combobox component and adds a multiselect filter to Laravel Nova.

Requirements

  • php: >=7.3
  • laravel/nova: ^4.0

Installation

Install via Composer:

composer require harrald/nova-combobox-filter

Usage

The nova-combobox-filter extends the Nova select filter. And thus follows the same logic as to how to implement it.

Filter

Make a new Filter class in App/Nova/Filters and let it extend the \Harrald\NovaComboboxFilter\NovaComboboxFilter class.

Use the following format:

<?php

namespace App\Nova\Filters;

use Harrald\NovaComboboxFilter\NovaComboboxFilter;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;

class OpenPaidStateFilter extends NovaComboboxFilter
{
    /**
     * The displayable name of the filter.
     *
     * @var string
     */
    public $name = 'State';

    /**
     * The name of the column to filter on
     */
    protected function columnName(): string
    {
        return 'state';
    }

    /**
     * Get the filter's available options.
     */
    public function options(Request $request): Collection
    {
        return Collection::make([
            'Open' => 'open',
            'Paid' => 'paid',
        ]);
    }
}
  • The property $name is the displayable name of the filter.
  • The method columnName must return the name of the column to filter on
  • The options method should return a Illuminate\Support\Collection with key/value pairs.

With Dynamic options

public function options(Request $request): Collection
{
    return User::all()->pluck('id', 'name');
}

Resource

Use the new filter in you Resource. Follows the same logic as a any other Nova filter

/**
 * Get the filters available for the resource.
 *
 * @param NovaRequest $request
 * @return array
 */
public function filters(NovaRequest $request): array
{
    return [
        OpenPaidStateFilter::make(),
    ];
}

Screenshots

multi options selected

filter options by typing

Credits

This package was inspired by optimistdigital/nova-multiselect-filter

License

This project is open-sourced software licensed under the MIT license.

Screenshots

Reviews

By harraldAll4sports on April 29, 2022

Does exactly what it says on the package.

Back to Top
Added 3 years ago
Last updated 1 Year Ago
Version 1.2.0
Nova Version ^4.0|^5.0
Composer
harrald/nova-combobox-filter
GitHub stars 13
Packagist downloads 98,848

Favorites

9 users favorited

Rating

5.00
(out of 5)
★★★★★
★★★★
★★★
★★
2 ratings

Contributors

Brought to you by Tighten

Issues/Feature Requests Stats Package Ideas