flynax escort 4.6.

Есть у кого-нибудь более-менее свежая версия нулл. Поделитесь пожалуйста?
 
Кому нужна доработка, обращайтесь. Улучшил поле Чекбокс. Теперь выглядит так:
1743979977230.png

1743980062134.png
checkbox_popup.js. Код представляет собой jQuery-скрипт, который улучшает стандартный интерфейс чекбоксов на сайте в системе Flynax, с помощью кастомного попапа. Заменил стандартное отображение списка чекбоксов на более удобный и современный интерфейс с попапом, добавили функционал поиска, управления чекбоксами и адаптивность.
Вот полное описание функционала:

Описание функционала кода checkbox_popup.js​

1. Основная цель

Код заменяет стандартное отображение полей с чекбоксами (.field.checkbox-field) на сайте, скрывая оригинальный список чекбоксов и заменяя его на интерактивный элемент управления (по умолчанию — стилизованный под выпадающий список). При клике на этот элемент открывается попап с улучшенным интерфейсом для выбора опций.

2. Основные элементы интерфейса

  • Триггер для открытия попапа:
    • По умолчанию используется элемент .flynax-select-trigger, стилизованный под выпадающий список (с текстом "Открыть список" и стрелкой вниз).
    • Альтернативный вариант (закомментирован) — кнопка .flynax-button-trigger с текстом "Открыть список".
    • Текст триггера меняется на "Закрыть список", когда попап открыт.
    • Триггер добавляется в каждый блок .field.checkbox-field вместо стандартного списка чекбоксов.
  • Попап (.flynax-checkbox-popup:(
    • Модальное окно, которое появляется по центру экрана при клике на триггер.
    • Содержит:
      • Заголовок (например, "Выберите бытовую технику").
      • Поле поиска (.flynax-checkbox-popup-search).
      • Кнопки "Выбрать все" и "Отменить все" (.flynax-checkbox-bar).
      • Список чекбоксов (.flynax-checkbox-popup-content).
      • Кнопку "Закрыть" (.flynax-checkbox-popup-close).

3. Функционал попапа

  • Список чекбоксов:
    • Оригинальный список чекбоксов из .field.checkbox-field .row клонируется и отображается в попапе.
    • Чекбоксы отображаются в виде сетки (по умолчанию) с помощью display: grid.
    • Каждый чекбокс синхронизирован с оригинальным: изменение состояния в попапе сразу отражается на оригинальном чекбоксе, и наоборот.
  • Поиск (.flynax-checkbox-popup-search:(
    • Поле ввода позволяет фильтровать чекбоксы по тексту.
    • При вводе текста:
      • Чекбоксы, не соответствующие запросу, скрываются (добавляется класс .hidden).
      • Список переключается в компактный режим (display: block вместо сетки) для удобства.
      • Совпадающие элементы сортируются: сначала те, что начинаются с введённого текста, затем остальные (по позиции совпадения).
    • При очистке поля поиска список возвращается в исходное состояние (сетка, все чекбоксы видны).
  • Кнопки управления (.flynax-checkbox-bar:(
    • "Выбрать все": Отмечает все чекбоксы в попапе и синхронизирует состояние с оригинальными чекбоксами.
    • "Отменить все": Снимает отметки со всех чекбоксов в попапе и синхронизирует с оригинальными.
  • Кнопка "Закрыть" (.flynax-checkbox-popup-close:(
    • Закрывает попап.
    • Сбрасывает поле поиска.
    • Восстанавливает исходный порядок чекбоксов (если был поиск).
    • Обновляет текст триггера на "Открыть список".

4. Синхронизация состояния

  • Состояние чекбоксов в попапе всегда синхронизировано с оригинальными чекбоксами:
    • При открытии попапа чекбоксы в нём получают состояние оригинальных.
    • При изменении чекбокса в попапе это изменение сразу применяется к оригинальному.
    • При повторном открытии попапа состояние чекбоксов обновляется в соответствии с оригинальными.

5. Мультиязычность

  • Код поддерживает мультиязычность:
    • Тексты (заголовок, плейсхолдер поиска, кнопки, текст триггера) берутся из функции rlLang (если доступна) или из локального объекта translations.
    • Поддерживаются два языка: русский (ru) и английский (en).
    • Язык определяется по:
      • Cookie (lang).
      • URL (например, /ru/ или /en/).
      • По умолчанию используется ru.
  • Тексты динамически обновляются при смене языка (без перезагрузки страницы, через setInterval).

6. Адаптивность

  • Код адаптирован для разных устройств:
    • Попап:
      • На десктопе: ширина 600px, максимальная высота 80vh.
      • На планшетах (≤768px:( ширина 90%, уменьшенные шрифты и отступы.
      • На мобильных (≤480px:( ширина 95%, список чекбоксов становится одноколоночным.
    • Триггер:
      • На десктопе: ширина 200px.
      • На планшетах (≤768px:( ширина 180px, шрифт уменьшен.
      • На мобильных (≤480px:( ширина 160px, шрифт ещё меньше.
  • Все элементы (заголовок, поле поиска, кнопки, чекбоксы) уменьшаются на меньших экранах для удобства.

7. Динамическое добавление полей

  • Код отслеживает динамическое добавление новых полей .field.checkbox-field с помощью MutationObserver.
  • Если новые поля появляются на странице (например, через AJAX), они автоматически обрабатываются и получают триггер для открытия попапа.

8. Закрытие других попапов

  • При открытии одного попапа все остальные автоматически закрываются.
  • Текст триггеров других попапов обновляется на "Открыть список".

9. Сохранение состояния при поиске

  • Перед началом поиска оригинальный порядок чекбоксов сохраняется.
  • После очистки поля поиска или закрытия попапа список возвращается в исходное состояние (с сохранением текущих отметок чекбоксов).

10. Стилизация

  • Триггер (.flynax-select-trigger:(
    • Стилизован под выпадающий список: светлый фон (#f9f9f9), рамка, стрелка вниз :):after).
    • При наведении: рамка становится жёлтой (#f1c40f), фон белым.
  • Попап:
    • Белый фон, тень, скруглённые углы.
    • Заголовок с жёлтой подчёркивающей линией.
    • Поле поиска с эффектом фокуса (жёлтая рамка).
    • Кнопки "Выбрать все / Отменить все" и "Закрыть" с жёлтым фоном (#f1c40f) и эффектом наведения.
  • Чекбоксы:
    • Отображаются в сетке (на десктопе) или списке (при поиске/на мобильных).
    • Текст чекбоксов меняет цвет на жёлтый при наведении.

11. Дополнительные особенности

  • Скрытие оригинальных элементов:
    • Оригинальные чекбоксы (.field.checkbox-field .row) и кнопки управления (.checkbox_bar) скрываются с помощью display: none !important.
    • Это сделано, чтобы пользователь взаимодействовал только с новым интерфейсом.
  • Обработка смены языка:
    • При клике на переключатель языка (.lang_switcher) страница перезагружается для применения нового языка.
    • Также есть динамическое обновление текста через setInterval (каждую секунду проверяется смена языка).
 
Назад
Сверху