Unpoly, как фронтенд-фреймворк для прогрессивного улучшения веб-приложений, постоянно развивается. При обновлениях могут появляться breaking changes — изменения, которые нарушают совместимость с предыдущими версиями. Понимание этих изменений критически важно при обновлении приложений на Unpoly.
up.layerВ старых версиях доступ к слоям выполнялся через
up.layer.get(), возвращавший объект слоя. Начиная с версии
2.x:
up.layer.get() теперь возвращает
null, если слой не найден. Ранее возвращался
пустой объект.up.layer.open() и up.layer.close()
требуют теперь явного указания селектора слоя или объекта конфигурации.
Если передавался простой идентификатор, поведение стало строгим и
вызовет ошибку при некорректном значении.Пример корректного использования:
up.layer.open({
url: '/posts/1',
target: '#post-layer'
});
Ранее можно было написать:
up.layer.open('/posts/1', '#post-layer');
Теперь это приведет к исключению.
Механизм событий up.on также претерпел изменения:
up:layer:opened и up:layer:closed
больше не вызываются для скрытых или предварительно загруженных
слоев.'up:layer:opened' допустим только
'up.layer:opened'.up.onLayerOpen(callback)
удалены. Необходимо использовать новую форму:up.on('up.layer:opened', (event) => {
console.log(event.layer);
});
up.renderМетод up.render с версии 2.x имеет следующие ключевые
изменения:
animation теперь по умолчанию
отключён. Старые приложения, где не задавался
animation, могут потерять плавные переходы.up.render с селектором, который не
существует в DOM, метод больше не создаёт автоматически контейнер.
Необходимо явно создать элемент или использовать существующий
селектор.focus теперь не выполняет автоматическое
смещение курсора на первый вводный элемент формы. Для восстановления
старого поведения нужно передавать { focus: true }
явно.Пример нового вызова:
up.render('#comments', {
url: '/posts/1/comments',
animation: 'fade',
focus: true
});
up.submitUnpoly всегда обеспечивал AJAX-поддержку форм. В новых версиях изменения затронули:
up.submit больше не выполняет автоматическую
сериализацию файлов через FormData при старом
синтаксисе. Нужно явно указывать { files: true }:up.submit('#upload-form', { files: true });
success и error теперь передаются
через объект конфигурации, а не через позиционные аргументы:up.submit('#form', {
url: '/posts',
success: (response) => console.log('OK', response),
error: (response) => console.log('Ошибка', response)
});
Старые версии Unpoly позволяли использовать нестрогие
селекторы, например, '#layer, .extra'. Теперь:
target приводит к исключению.up.render для каждого.Глобальная конфигурация up.options претерпела следующие
изменения:
up.options.animation теперь может быть только
false или строкой с именем анимации ('fade',
'slide'). Старые boolean-параметры вроде
{ animation: true } больше не поддерживаются.up.options.scroll больше не принимает числовое
смещение. Теперь поддерживаются только значения 'top',
'center', 'bottom' или функция, возвращающая
координату.up.layer стали строгими в аргументах и
возвращаемых значениях.up.render и up.submit требуют явного
указания параметров, ранее задававшихся по умолчанию.Эти изменения требуют внимательной проверки существующего кода при переходе на новые версии Unpoly, чтобы избежать неожиданных ошибок и некорректного поведения интерфейса.