Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/devsrv/livewire-modal

Turn Laravel Livewire Component into Modal.
https://github.com/devsrv/livewire-modal

alpine-js laravel livewire livewire-component modal

Last synced: about 1 month ago
JSON representation

Turn Laravel Livewire Component into Modal.

Awesome Lists containing this project

README

        

# Livewire Modal

[![Latest Version on Packagist](https://img.shields.io/packagist/v/devsrv/livewire-modal.svg?style=flat-square)](https://packagist.org/packages/devsrv/livewire-modal)
[![Total Downloads](https://img.shields.io/packagist/dt/devsrv/livewire-modal.svg?style=flat-square)](https://packagist.org/packages/devsrv/livewire-modal)

Turn Laravel Livewire Component into Modal.

## ๐Ÿท Features
- Modal triggered by javascript i.e. opens instantly without waiting for livewire network round trip to finish ( no laggy feeling )
- Skeleton loading indicator
- Support alert message ( info, warning, success, danger )
- Trigger from Alpine Component / Vanilla JS / Livewire Class Component

## ๐Ÿงพ Requirements

| **Bootstrap** | 4 or 5 | *no bootstrap support coming soon*
|---|---|---|
| Jquery | | *for bootstrap 4 only*
| Laravel | >= 7 | |
| Livewire | >= 2.0 | |
| Alpine JS | | |

## ๐Ÿ“ฅ Installation

```shell
composer require devsrv/livewire-modal
```

#### Include the base modal component
```html

...
@livewireStyles

...
๐Ÿ‘ˆ
@livewireScripts

```

#### Publish assets
```shell
php artisan vendor:publish --provider="devsrv\LivewireModal\LivewireModalServiceProvider" --tag=public
```

#### Publish config
```shell
php artisan vendor:publish --provider="devsrv\LivewireModal\LivewireModalServiceProvider" --tag=config
```
> config support bootstrap theme: bs4 | bs5

### ๐Ÿ“Œ Updating
> **Important:** when updating the package make sure to re-publish the assets with `--force` flag
```shell
php artisan vendor:publish --provider="devsrv\LivewireModal\LivewireModalServiceProvider" --tag=public --force
```

## โš—๏ธ Usage
### Create Livewire Component
No consideration required, create livewire component as usual. Use livewire's `mount` to handle passed parameters

### โœจ Open Modal

###### โœ”๏ธ From Alpine Component
```html


open


```

###### โœ”๏ธ Via Vanilla JS

```html

open

```

###### โœ”๏ธ Via Trigger Blade Component

```html
open

```

###### โœ”๏ธ From Livewire Class

```php
$this->dispatchBrowserEvent('open-x-modal', ['title' => 'My Modal', 'modal' => 'product.order', 'args' => ['id' => 1, 'rate' => 20]]);
```

> ๐Ÿ’ก Modal size supports `sm` `lg` `xl` *// completely optional*

## ๐ŸŒˆ Bonus
you are free to put content in livewire view file in any structure, however the package provides an blade component for bootstrap modal which you can use as:

```html


...

...


...
Save

```

#### โœŒ๐Ÿผ Two reasons to use this component

๐ŸŸข a pretty line progress loading indicator which appears in the top when livewire loading state changes

๐ŸŸข alert notification message which can be triggered by:
```php
$this->info('Hi !, i am an alert'); // support `info` `warning` `success` `danger`
```

## Changelog

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

## ๐Ÿ‘‹๐Ÿผ Say Hi!
Leave a โญ if you find this package useful ๐Ÿ‘๐Ÿผ,
don't forget to let me know in [Twitter](https://twitter.com/srvrksh)