Appearance
Поле: select2
Компонент: lte3::components.select2 (викликається через Lte3::select2())
Опис
Select2 інтеграція з підтримкою autosave, tags, ajax suggest, multiple та кастомних параметрів.
Props (з blade):
name(string)selected(mixed|array)options(array) — локальні опціїattrs(array)label(string)multiple(bool)empty_value(string) — текст для пустого значенняurl_save(string) — URL для автозбереження (додає data-url-save)url_suggest/url_tags(string) — ajax-пошук / ajax-тегиmax,separators,new_tag_labelmap(array) — для відображення блоків залежно від вибору (data-map, використовується в JS)
JS-інтеграція
Ініціалізація через initSelect2() у public/main.js. Для autosave додавайте data-url-save і data-name (хелпер встановлює їх автоматично з attrs).
Приклади (з examples/components.blade.php):
blade
{!! Lte3::select2('status', 'canceled', ['new' => 'New', 'canceled' => 'Canceled', 'delivered' => 'Delivered'], ['label' => 'Status']) !!}
{!! Lte3::select2('categories', 3, [3 => 'Sport'], [
'label' => 'Categories',
'multiple' => 1,
'url_save' => route('lte3.data.save'),
'url_suggest' => route('lte3.data.tags'),
]) !!}
{!! Lte3::select2('tags', '4', ['4' => 'Auto'], [
'label' => 'Tags',
'multiple' => 1,
'url_tags' => route('lte3.data.tags'),
'separators' => "[';']",
'new_tag_label' => ' [NEW]',
'max' => 4,
]) !!}Map parameter — показ / приховування блоків по вибору
Компонент підтримує map — словник, де ключі відповідають значенням опцій, а значення — масив селекторів, які потрібно показати коли ця опція вибрана. Шаблон додає data-map у select (JSON) і клас js-map-blocks, а клієнтський JS (initSelect2 / toggleSelectableBlocks) управляє видимістю блоків.
Приклад (з examples):
blade
{!! Lte3::select2('driver', 'smtp', ['log' => 'Log', 'smtp' => 'SMTP', 'sendmail' => 'Mail'], [
'label' => 'Mail Driver',
'empty_value' => '--',
'map' => [
'smtp' => ['.block-smtp'],
'log' => ['.block-log'],
'sendmail' => ['.block-sendmail'],
],
'help' => '* Change for show block'
]) !!}
<div class="block-smtp" style="display:none"><h2>SMTP Block</h2></div>
<div class="block-sendmail" style="display: none;"><h2>SENDMAIL Block</h2></div>
<div class="block-log" style="display: none;"><h2>LOG Block</h2></div>Пояснення роботи
- Коли значення select змінюється, JS читає
data-mapі викликаєtoggleSelectableBlocks, яка ховає всі блоки, не пов'язані з поточним значенням, і показує ті, що відповідають ключу. mapкорисний для умовного відображення секцій форми в залежності від вибору (наприклад, показати додаткові налаштування для певного драйвера).
Поради
- Якщо опцій більше 6, компонент додає пошук; для ajax suggest використовуйте
url_suggest. data-fn-initsу модальних викликах може міститиinitSelect2щоб ініціалізувати плагін після вставки HTML.