### Install Nova Mega Filter via Composer Source: https://github.com/dcasia/nova-mega-filter/blob/main/README.md Use this command to add the package to your project's dependencies. ```shell composer require digital-creative/nova-mega-filter ``` -------------------------------- ### Use MegaFilterTrait on a Nova Lens Source: https://context7.com/dcasia/nova-mega-filter/llms.txt Integrate MegaFilter into a Nova Lens by applying `MegaFilterTrait` and returning `MegaFilter::make()` from the lens's `filters()` method. This example shows configuration for columns and initial state. ```php use DigitalCreative\MegaFilter\MegaFilter; use DigitalCreative\MegaFilter\MegaFilterTrait; use Laravel\Nova\Lenses\Lens; class ActiveUsersLens extends Lens { use MegaFilterTrait; public static function query(QueryBuilder $query, NovaRequest $request): Builder { return $request->withOrdering($request->withFilters( $query->where('status', 'active') )); } public function filters(NovaRequest $request): array { return [ MegaFilter::make([ new RoleFilter(), new CountryFilter(), ])->columns(2)->open(), ]; } } ``` -------------------------------- ### Configure Mega Filter Columns Source: https://github.com/dcasia/nova-mega-filter/blob/main/README.md Set the number of columns for displaying filters within the Mega Filter card. This example sets it to 3 columns. ```php public function filters(NovaRequest $request): array { return [ MegaFilter::make([ ... ])->columns(3), ]; } ``` -------------------------------- ### Set Initial State of Mega Filter Card Source: https://context7.com/dcasia/nova-mega-filter/llms.txt Use the `->open()` method to control the initial expanded/collapsed state of the filter card. By default, it's collapsed unless filters are applied. Pass `true` to always open it on first render. ```php public function filters(NovaRequest $request): array { return [ MegaFilter::make([ new StatusFilter(), new DateRangeFilter(), ])->open(), // Card is expanded when the page first loads ]; } ``` -------------------------------- ### Define Mega and Standard Filters in Nova Source: https://context7.com/dcasia/nova-mega-filter/llms.txt Use `MegaFilter::make([...])` for items in the card and direct filter definitions for the standard dropdown. Active filter counts are tracked independently. ```php public function filters(NovaRequest $request): array { return [ // Shown in the full-width card MegaFilter::make([ new StatusFilter(), new PlanTypeFilter(), new CountryFilter(), ])->columns(3)->open(), // Still shown in the tiny dropdown as usual new TrashedFilter(), new RecentlyViewedFilter(), ]; } ``` -------------------------------- ### Set Mega Filter to Open by Default Source: https://github.com/dcasia/nova-mega-filter/blob/main/README.md Configure the Mega Filter card to be expanded (open) when the resource page loads initially. By default, it is collapsed. ```php public function filters(NovaRequest $request): array { return [ MegaFilter::make([ ... ])->open(), ]; } ``` -------------------------------- ### Configure Mega Filter Columns Source: https://context7.com/dcasia/nova-mega-filter/llms.txt Control the number of columns for the filter grid on desktop screens using the `->columns()` method. The layout defaults to 2 columns and collapses to a single column on mobile. ```php public function filters(NovaRequest $request): array { return [ MegaFilter::make([ new CountryFilter(), new CityFilter(), new StatusFilter(), new PlanFilter(), new CreatedAtFilter(), new UpdatedAtFilter(), ])->columns(3), // Renders in a 3-column grid on desktop ]; } ``` -------------------------------- ### Basic Mega Filter Integration in Nova Resource Source: https://github.com/dcasia/nova-mega-filter/blob/main/README.md Integrate the MegaFilterTrait and use MegaFilter::make() to display custom filters within a card. Ensure your custom filters (e.g., DateOfBirthFilter, UserTypeFilter) are defined. ```php use DigitalCreative\MegaFilter\MegaFilter; use DigitalCreative\MegaFilter\MegaFilterTrait; class ExampleNovaResource extends Resource { use MegaFilterTrait; public function filters(RequestRequest $request): array { return [ MegaFilter::make([ DateOfBirthFilter::make(), UserTypeFilter::make(), ]), ]; } } ``` -------------------------------- ### Displaying Standard Filters Alongside Mega Filter Source: https://github.com/dcasia/nova-mega-filter/blob/main/README.md You can include standard Nova filters in the same filters() method. They will appear in the usual tiny filter dropdown, separate from the Mega Filter card. ```php use DigitalCreative\MegaFilter\MegaFilter; use DigitalCreative\MegaFilter\MegaFilterTrait; class ExampleNovaResource extends Resource { use MegaFilterTrait; public function filters(NovaRequest $request): array { return [ MegaFilter::make([ ... ]), // These will be rendered as normal on the usual tiny filter dropdown DateOfBirthFilter::make(), UserTypeFilter::make(), ]; } } ``` -------------------------------- ### Define Mega Filters with MegaFilter::make() Source: https://context7.com/dcasia/nova-mega-filter/llms.txt Use `MegaFilter::make()` to group filters that should be displayed in the mega filter card. Filters outside this method remain in the standard dropdown. ```php use DigitalCreative\MegaFilter\MegaFilter; public function filters(NovaRequest $request): array { return [ // Filters passed here are rendered in the mega filter card MegaFilter::make([ new CountryFilter(), new SubscriptionPlanFilter(), new AccountStatusFilter(), new RegistrationDateFilter(), ]), // Filters listed here (outside MegaFilter::make) remain in the standard dropdown new QuickSearchFilter(), ]; } ``` -------------------------------- ### Apply MegaFilterTrait to Nova Resource Source: https://context7.com/dcasia/nova-mega-filter/llms.txt Apply the MegaFilterTrait to your Nova Resource class to automatically inject the mega filter card. This trait overrides `availableCards()` to handle the integration. ```php use DigitalCreative\MegaFilter\MegaFilter; use DigitalCreative\MegaFilter\MegaFilterTrait; use Laravel\Nova\Resource; class UserResource extends Resource { use MegaFilterTrait; // Required on every resource that uses MegaFilter public static $model = \App\Models\User::class; public function filters(NovaRequest $request): array { return [ MegaFilter::make([ new StatusFilter(), new RoleFilter(), new DateOfBirthFilter(), ]), ]; } } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.