laravilt/actions

Complete action system with modal support, authorization, and Inertia.js integration. Build interactive UI components with buttons, links, and icon buttons. Includes confirmation modals, custom forms, and secure token-based execution.

Fund package maintenance!
fadymondy

Installs: 383

Dependents: 5

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:HTML

pkg:composer/laravilt/actions

1.0.6 2025-12-22 03:49 UTC

This package is auto-updated.

Last update: 2025-12-22 03:50:23 UTC


README

Actions

Laravilt Actions

Latest Stable Version License Downloads Dependabot Updates PHP Code Styling Tests

Complete action system with modal support, authorization, and Inertia.js integration for Laravilt. Build interactive UI components with buttons, links, and icon buttons. Includes confirmation modals, custom forms, password protection, and secure token-based execution.

Features

  • 🎨 Multiple Variants - Button, link, and icon button styles
  • 🔒 Authorization - Closure-based authorization with record-level checks
  • 📊 Modal Support - Confirmation modals, custom forms, slide-overs
  • 🎯 Flexible Configuration - Colors, icons, sizes, tooltips
  • 🔗 URL Handling - External URLs, internal actions, new tab support
  • âš¡ Inertia Integration - Seamless Vue 3 integration
  • 📤 Export/Import - Excel/CSV export and import with Laravel Excel
  • 🔄 Soft Delete Support - Built-in restore and force delete actions

Action Types

Type Description
Action Standard action button
BulkAction Action for multiple selected records
ViewAction Navigate to view page
EditAction Navigate to edit page
DeleteAction Soft delete record
CreateAction Navigate to create page
ReplicateAction Duplicate a record
RestoreAction Restore soft-deleted record
ForceDeleteAction Permanently delete record
ExportAction Export data to Excel/CSV
ImportAction Import data from Excel/CSV
DeleteBulkAction Bulk soft delete
RestoreBulkAction Bulk restore
ForceDeleteBulkAction Bulk permanent delete

Colors

->color('primary')  // Blue
->color('secondary') // Gray
->color('success')   // Green
->color('danger')    // Red
->color('warning')   // Yellow
->color('info')      // Light blue

Modal Types

// Confirmation modal
->requiresConfirmation()
->modalHeading('Delete User')
->modalDescription('Are you sure?')

// Form modal
->schema([
    TextInput::make('reason')->required(),
])

// Slide-over
->slideOver()

Installation

composer require laravilt/actions

The package will automatically register its service provider.

Quick Start

use Laravilt\Actions\Action;

$action = Action::make('delete')
    ->label('Delete')
    ->icon('trash-2')
    ->color('danger')
    ->requiresConfirmation()
    ->modalHeading('Delete User')
    ->modalDescription('Are you sure?')
    ->action(function ($record) {
        $record->delete();
    });

Export & Import

use Laravilt\Actions\ExportAction;
use Laravilt\Actions\ImportAction;

// Export with custom exporter class
ExportAction::make()
    ->exporter(UserExporter::class)
    ->fileName('users.xlsx');

// Import with custom importer class
ImportAction::make()
    ->importer(UserImporter::class);

Soft Delete Actions

use Laravilt\Actions\DeleteAction;
use Laravilt\Actions\RestoreAction;
use Laravilt\Actions\ForceDeleteAction;

// Auto-hidden for trashed records
DeleteAction::make();

// Auto-visible only for trashed records
RestoreAction::make();
ForceDeleteAction::make();

Replicate Action

use Laravilt\Actions\ReplicateAction;

ReplicateAction::make()
    ->excludeAttributes(['slug', 'published_at'])
    ->beforeReplicaSaved(fn ($replica) => $replica->name .= ' (Copy)')
    ->afterReplicaSaved(fn ($replica) => /* post-save logic */);

Generator Commands

# Generate an action class
php artisan make:action ExportUserAction

# Generate an exporter class for ExportAction
php artisan laravilt:exporter UserExporter
php artisan laravilt:exporter CustomerExporter --model=Customer

# Generate an importer class for ImportAction
php artisan laravilt:importer UserImporter
php artisan laravilt:importer CustomerImporter --model=Customer

Documentation

Configuration

Publish the config file:

php artisan vendor:publish --tag="laravilt-actions-config"

Assets

Publish the plugin assets:

php artisan vendor:publish --tag="laravilt-actions-assets"

Testing

composer test

Code Style

composer format

Static Analysis

composer analyse

License

The MIT License (MIT). Please see License File for more information.