mountainclans/livewire-ui

Set of UI components for Livewire 3

Fund package maintenance!
Mountain Clans

Installs: 23

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:Blade

1.3.1 2025-09-23 15:24 UTC

This package is auto-updated.

Last update: 2025-09-23 15:24:31 UTC


README

Установка

Установите пакет при помощи Composer:

composer require mountainclans/livewire-ui

Обратите внимание, что для корректной стилизации в вашем проекте должен использоваться TailwindCSS.

Добавьте в tailwind.config.js в секцию content:

'./vendor/mountainclans/livewire-ui/resources/views/**/*.blade.php'

Опционально, вы можете опубликовать views для их переопределения:

php artisan vendor:publish --tag="livewire-ui-views"

Использование

Form

<x-ui.form wire:submit="login"
           id="login"
           wire:recaptcha
           class="grid sm:grid-cols-2 gap-4 text-sm py-4"
           :indicate-loading="false"
>
Контент формы
</x-ui.form>

Атрибут wire:submit обязателен для корректной работы формы.

id рекомендуется.

Атрибуты wire:recaptcha, class, indicate-loading опциональны.

Если установлен :indicate-loading="false", форма не будет "мигать" при ajax-запросах.

Форма поддерживает обработку ошибок при использовании пакета Livewire Recaptcha.

Использование представленных ниже компонентов НЕ требует обязательного использования компонента <form>!

Input

Компонент может использоваться в качестве <translatable> поля.

<x-ui.input wire:model="firstName"
            name="firstName"
            id="firstName"
            :label="__('First name')"
            :placeholder="__('Enter your name')"
            :prefix="__('mr.')"
            offset-class="mb-4"
/>

Атрибут type может принимать любые варианты, доступные для обычного html-инпута. Опционально, вы можете передать type="textarea" для того, чтобы вместо input`а рендерился тег textarea.

Атрибут offset-class задаёт класс для обёртки компонента.

Если вы не передадите name или id, они будут автоматически сгенерированы на основе wire:model.

Также атрибуты prefix, placeholder, offset-class опциональны.

Рендер ошибок выполняется автоматически.

Multiselect

<x-ui.multiselect wire:model="modelArray"
                  wire:key="w"
                  name="attributeValues.{{ $attribute->id }}"
                  :label="__('Label')"
                  :placeholder="__('Placeholder')"
                  :values="$valuesArray"
/>

wire:key опционален.

В примере используется запись значений в массив modelArray.

Radio

<x-ui.radio wire:model.live.debounce="statusFilter"
            name="filter"
            :values="$filterValues"
/>

В примере wire:model.live.debounce, но использовать можно и просто через wire:model.

Toggle

<x-ui.toggle wire:model="allowBackorder"
             id="allowBackorder"
             name="allowBackorder"
             :vertical="true"
             :label="__('Allow backorder?')"
/>

Атрибуты wire:model, label обязательны.

Атрибут vertical со значением true меняет внешний вид компонента, располагая лейбл и переключатель вертикально.

Submit Button

Кнопка визуализирует процесс отправки формы.

<x-ui.submit-button>{{ __('Save') }}</x-ui.submit-button>

Modal

<x-ui.modal wire:model="isModalOpen"
            id="brandModal"
            :title="__('Edit category')"
            size="max-w-md"
>
    Контент модального окна
</x-ui.modal>

Атрибуты size, title опциональны.

Confirm delete

Модальное окно с запросом подтверждения выполнения действия. Чаще всего используется при удалении записей.

<x-ui.confirm-delete id="brandModalDelete"
                     control-attribute="isDeleteModalOpen"
                     submit-action="deleteBrand('{{ $brandId }}')"
                     :question-text="__('Are you sure you want to delete this brand?')"
                     :submitText="__('Yes, I'm sure')"
                     :cancelText="__('No, cancel')"
                     
/>

Для использования в родительском компоненте нужно задать bool-атрибут и передать его имя в prop control-attribute. В момент необходимости показа данного окна установить этот контрольный атрибут в true.

Form tabs

DEPRECATED, вместо этого компонента используйте пакет от Spatie.

Добавляет визуальные "вкладки", среди которых представлены нужные компоненты. Текущая страница будет подсвечена.

Внимание! Данный компонент не занимается менеджментом переходов между вкладками.

<x-ui.form-tabs :model-id="$modelId" :tabs="$tabs" />

В родительском компоненте:

public string $modelId = '';
public array $tabs = [];

public function mount(?string $modelId = null) {
    $this->modelId = $modelId;
    $this->tabs = [
            [
                'title' => __('General'),
                'title_long_before' => '',
                'title_long_after' => '',
                'match_routes' => ['purchases.create', 'purchases.edit'],
                'route' => $modelId ? route('purchases.edit', $modelId) : null,
            ],
            [
                'title' => __('Items'),
                'title_long_before' => __(''),
                'title_long_after' => __(' & Publish'),
                'match_routes' => ['purchases.items'],
                'route' => $modelId ? route('purchases.items', $modelId) : null,
            ],
        ];
}

Авторы

License

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