think.studio / nova-list-card
Laravel Nova card with resources list
4.3.1
2023-07-08 10:29 UTC
Requires
- php: ^8.1
- laravel/framework: ^9.0|^10.0
- laravel/nova: ^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.20
- orchestra/testbench: ^8.5
- phpunit/phpunit: ^10.2
- psalm/plugin-laravel: ^2.8
- vimeo/psalm: ^5.13
README
Install
composer require think.studio/nova-list-card
Usage
class FundsWithReportsCount extends ListCard { public function __construct($component = null) { parent::__construct($component); $this->resource(\App\Nova\Resources\Fund::class) ->heading($this->name(), 'Reports') ->withCount('reports') ->orderBy('reports_count', 'desc') ->limit(100) ->value('reports_count'); } public function cacheFor(): int|Carbon { return Carbon::now()->addMinutes(2); } }
class FundsWithReportIncomeSum extends ListCard { public function __construct($component = null) { parent::__construct($component); $this->resource(\App\Nova\Resources\Fund::class) ->heading($this->name(), 'Total Income') ->withSum('reports', 'income') ->orderBy('reports_sum_income', 'desc') ->limit(100) ->value('reports_sum_income'); } }
class FundsCustomList extends ListCard { public function __construct($component = null) { parent::__construct($component); $this->resource(\App\Nova\Resources\Fund::class) ->heading($this->name()) ->limit(100) ->timestamp('updated_at', 'm/Y') ->queryCallback(fn (Builder $q) => $q->where('publication_status', 'draft')); } public function name(): string { return 'Draft funds'; } }
class FundsWithValueFormat extends ListCard { public function __construct($component = null) { parent::__construct($component); $this->resource(\App\Nova\Resources\Fund::class) ->heading($this->name(), 'Created at') ->limit(100) ->timestamp('updated_at', 'm/Y') ->value('created_at', 'datetime', 'm/Y') ->classes('bg-yellow-300') ->noMaxHeight(); } }