benjaminhansen/filament-draftable

Provides a draftable interface to save long forms as a draft in the browser's localStorage and encrypts the data using Laravel's encryption.

v1.0.5.2 2025-05-01 16:45 UTC

This package is auto-updated.

Last update: 2025-05-31 17:00:51 UTC


README

Provides a Draftable trait that you can add to your Resource pages to allow saving data as a draft. All data is stored in your browser's localStorage and is encrypted using Laravel's encryption.

Installation

Install the package via composer:

composer require benjaminhansen/filament-draftable

Usage

<?php

namespace App\Filament\Resources\PostResource\Pages;

use BenjaminHansen\FilamentDraftable\Traits\Draftable;
use Filament\Resources\Pages\CreateRecord;

class CreatePost extends CreateRecord
{
    use Draftable;

    // add exclusions to this array to prevent them from being saved in the draft
    public ?array $excludeFromDraft = ['password'];

    // add/modify this method
    protected function getFormActions(): array
    {
        return [
            // load the existing/default form actions
            ...parent::getFormActions(),

            // append the draftable actions
            // we can use all of Filament's Action methods to customize the draftable actions
            $this->saveDraftAction(),
                // ->icon('')
                // ->label('')

            $this->loadDraftAction(),
                // ->icon('')
                // ->label('')

            $this->deleteDraftAction(),
                // ->icon('')
                // ->label('')
                // ->requiresConfirmation()
        ]
    }
}