Download the PHP package asignua/filament-spreadsheet-grid without Composer

On this page you can find all versions of the php package asignua/filament-spreadsheet-grid. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package filament-spreadsheet-grid

Filament Spreadsheet Grid

Stand With Ukraine Latest Version on Packagist Tests Total Downloads License Plumb score

Filament Spreadsheet Grid

Edit a Filament 5 table the way people edit a spreadsheet: move with the keyboard, type over a cell, paste a block from Excel or Google Sheets, fill a column down, then press Save all once.

Filament's own editable columns (TextInputColumn, SelectColumn, …) save one cell per request, with no keyboard navigation, no range selection and no clipboard. That is fine for a toggle and painful for "update 60 prices from a price list". This plugin keeps your table (its query, filters, search, sorting, pagination) and changes how its cells are edited:

Screenshots

Editing: dirty cells and a selected range

Save all with per-cell errors

Spreadsheet mode switched off

Requirements

Installation

The service provider is discovered automatically; there is no panel plugin to register. The stylesheet and the Alpine component are compiled and shipped in resources/dist, so your panel needs no custom theme or build step.

Usage

Three things: the trait on the Livewire component that owns the table, GridColumns instead of the plain columns you want editable, and the toolbar in the table header.

The trait also works on a relation manager and on any Livewire component that uses InteractsWithTable. Plain columns stay plain; mix them freely.

Keyboard and mouse

Key Action
Arrows, Ctrl+Arrow move / jump to the edge; with Shift extend the selection
Tab, Shift+Tab next / previous cell, wrapping to the next / previous row
Enter, F2 edit the cell (a boolean cell toggles)
any character edit and replace the content
Enter / Tab in the editor commit and move down / right (Shift reverses)
Esc cancel the edit; in navigation collapse the selection
Delete, Backspace clear the selected cells
Home, End, Ctrl+Home, Ctrl+End row start / end, grid corners
Ctrl+A select everything on the page
Ctrl+C, Ctrl+X, Ctrl+V copy, cut, paste TSV (Cmd on macOS)
Ctrl+D, Ctrl+R fill down / right from the first row / column of the selection
click, Shift+click, drag select a cell, extend, select a rectangle

Paste anchors at the top-left cell of the selection and is clipped to the rows on the page (the grid never creates rows). One pasted value over a larger selection fills the whole selection. Read-only cells are skipped and counted.

Columns

A select() closure is evaluated once per request and shared by every cell. If the options depend on the row, ask for the record (fn (Product $record) => ...): the closure then runs once per cell, so keep it cheap. Each cell then carries its own list to the browser (data-sg-options), and the column config has none.

Types normalise what comes from the clipboard: 1 250,5 and 1.250,50 are numbers, так / yes / TRUE are booleans, 02.10.2026 is a date, a select is matched by value first and by label second. One separator before exactly three digits (1,000, 1.250) is thousands in one locale and decimals in another, so it is refused as an invalid number rather than guessed; 1 000, 1.000,00 and 1,25 are unambiguous. Values the grid itself holds (an unchanged edit, fill down, its own copy pasted back) are in the machine form, where a dot is the decimal point, so a stored 1.250 keeps working. An emptied cell becomes null (emptyAs() changes that; required() makes it an error). The server repeats all of it, the browser is never trusted.

GridColumn extends Filament's Column: sortable(), searchable(), label(), toggleable(), alignEnd() … work.

Saving

By default each changed row is written with explicit attribute assignment and save():

There is no mass assignment, so models with $guarded = ['*'] work. For anything else, give the grid your own path; it receives the record and the validated, typed changes of one row:

Mode switch

By default every GridColumn is editable all the time. To keep the table an ordinary Filament table until the user asks for spreadsheet editing:

The toolbar then shows Edit as spreadsheet. While the mode is off, grid columns render as plain read-only text (row clicks and recordUrl() work) and saveSpreadsheetGrid() refuses writes. The button becomes Done, or Discard and exit (with a confirmation) when there are unsaved edits. The choice lives in the Livewire component ($spreadsheetGridActive, #[Locked], changed only through toggleSpreadsheetGrid()); persist: true also remembers it in the session per component class.

The mode switch is UX, not access control: anyone who can call the component can switch the mode on. What guards the writes is authorization (below), hidden columns and editable().

Authorization

By default the grid asks the gate Filament itself asks for the Edit action of that table:

Replace it:

A denied record renders read-only cells (selectable and copyable, not editable) and a forged request for it is rejected row by row with a message. GridColumn::editable(false | Closure) limits single columns.

Configuration

Key Default Meaning
max_rows 500 rows in one save request (also SpreadsheetGrid::maxRows())
max_cells 5000 cells in one save request (also maxCells())

Over a limit nothing is saved and every row gets a message.

Gotchas

Translations

en, uk, de, es, fr, it, nl, pl, pt_BR, tr. Publish to change them:

AI agents

The package ships Laravel Boost guidelines (resources/boost/guidelines/core.blade.php): with Boost installed, php artisan boost:install picks them up, so your coding agent knows the rules above.

Testing

Changelog

See CHANGELOG.md.

License

MIT. See LICENSE.md.


All versions of filament-spreadsheet-grid with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
filament/filament Version ^5.0
illuminate/contracts Version ^12.0|^13.0
spatie/laravel-package-tools Version ^1.16
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package asignua/filament-spreadsheet-grid contains the following files

Loading the files please wait ...