← Back to Plugins
  • Export

Export

Plugin information

by Alperen Ersoy • 30 stars

Admin panel Action

Customizable export and print functionality for Filament Admin Panel. Provides a bulk action and header action to export your tables easily.

Support

#alperenersoy-export on Discord

Views

1250

License

MIT

Documentation

Filament Export

Customizable export and print functionality for Filament Admin Panel.

This package provides a bulk action and header action to export your filament tables easily.

filament-export-3

Requirements

Dependencies

Installation

composer require alperenersoy/filament-export

Using

Simple Usage

Bulk Action

You can export selected rows with the bulk action.

$table->bulkActions([
...
FilamentExportBulkAction::make('export')
...
]);

Header Action (Experimental)

You can filter, search, sort and export your table with the header action. Header action is experimental for now, bulk action is safer to use.

$table->headerActions([
...
FilamentExportHeaderAction::make('export')
...
]);

Since ButtonAction is deprecated you may use this action with ->button() instead.

Full Usage

Both actions provide functions for configuration.

FilamentExportBulkAction::make('export')
->fileName('My File') // Default file name
->timeFormat('m y d') // Default time format for naming exports
->defaultFormat('pdf') // xlsx, csv or pdf
->defaultPageOrientation('landscape') // Page orientation for pdf files. portrait or landscape
->disableAdditionalColumns() // Disable additional columns input
->disableFilterColumns() // Disable filter columns input
->disableFileName() // Disable file name input
->disableFileNamePrefix() // Disable file name prefix
->disablePreview() // Disable export preview
->fileNameFieldLabel('File Name') // Label for file name input
->formatFieldLabel('Format') // Label for format input
->pageOrientationFieldLabel('Page Orientation') // Label for page orientation input
->filterColumnsFieldLabel('filter columns') // Label for filter columns input
->additionalColumnsFieldLabel('Additional Columns') // Label for additional columns input
->additionalColumnsTitleFieldLabel('Title') // Label for additional columns' title input
->additionalColumnsDefaultValueFieldLabel('Default Value') // Label for additional columns' default value input
->additionalColumnsAddButtonLabel('Add Column') // Label for additional columns' add button

You can also use default bulk action and header action functions to customize actions.

Configuration

Publish configuration

php artisan vendor:publish --provider="AlperenErsoy\FilamentExport\FilamentExportServiceProvider" --tag="config"

You can configure these settings:

return [
'default_format' => 'xlsx',
'time_format' => 'M_d_Y-H_i',
'default_page_orientation' => 'portrait',
'disable_additional_columns' => false,
'disable_filter_columns' => false,
'disable_file_name' => false,
'disable_preview' => false,
'use_snappy' => false,
'action_icon' => 'heroicon-o-document-download',
'preview_icon' => 'heroicon-o-eye',
'export_icon' => 'heroicon-o-download',
'print_icon' => 'heroicon-o-printer',
'cancel_icon' => 'heroicon-o-x-circle'
];

Overriding Views

Publish views

php artisan vendor:publish --provider="AlperenErsoy\FilamentExport\FilamentExportServiceProvider" --tag="views"

This package has two views:

  1. "components\table_view.blade.php" view is used for preview and as print template.

  2. "pdf.blade.php" view is used as pdf export template.

Using Custom Variables In Templates

FilamentExportBulkAction::make('export')
->extraViewData([
'myVariable' => 'My Variable'
])

or use closures

FilamentExportHeaderAction::make('export')
->extraViewData(fn ($action) => [
'recordCount' => $action->getRecords()->count()
])

Then use them in the templates as regular blade variables:

{{ $myVariable }}

Using Snappy

By default, this package uses dompdf as pdf generator.

If you want to use Snappy instead you need to install barryvdh/laravel-snappy to your project and configure it yourself. (See barryvdh/laravel-snappy for more information.)

To use snappy for PDF exports:

  1. You can simply add ->snappy() to your actions.
FilamentExportBulkAction::make('export')
->snappy()

or

FilamentExportHeaderAction::make('export')
->snappy()
  1. You can update the config file to use it as default.
[
...
'use_snappy' => true,
...
]