Выпуски Q.Palette
Начиная с версии qpalette@6.4.1
необходимо в своем проекте в папке assets/data
создать файл menu.ru.json
, если этого не было сделано ранее.
**Это необходимо для корректной работы меню рутового приложения. **. Содержимое можно скопировать из файла menu.json.
️С этого релиза чтение меню происходит именно из menu.ru.json
Актуальная версия Q.Palette 7: 7.4.2
Актуальный выпущенный образ Q.Palette: registry-new.diasoft.ru/release/qpalette:25050614
7.4.2
@diasoft/qpalette-prime
Переработаны стили типографики для компонента p-editor
:
- Компонент теперь использует отступы и стили Q.Palette вместо встроенных.
- Переработана страница документации в соответствии с новыми реалиями.
@diasoft/qpalette-visual
Исправления ошибок:
- Исправлен баг с некорректным расположением лейбла в некоторых инпутах.
- Исправлены проблемы с перескакиванием курсора на стартовую позицию.
- Устранена ошибка JSON.parse в presetValue search-box.
Новые возможности:
- Доработан компонент QCalendarMask - теперь поддерживается ввод минут и секунд по маске.
@diasoft/qpalette-auth
- Устранен баг, приводивший к некорректной работе KeyCloak.
@diasoft/qpalette-react
- Улучшен компонент QSearchbox.
- Стилизация компонентов приведена в соответствие со стилями Angular.
7.3.18
@diasoft/qpalette-visual-react
- q-filter-wrapper исправлены стили, которые изменяли вёрстку angular.
7.3.17
@diasoft/qpalette-visual
-
Доработан компонент q-side-panel. Теперь он соответствует стандартам проектирования.
- Теперь можно добавлять тултипы к свернутому состоянию q-side-panel и управлять их отображением через свойства
tooltip
иtooltipPosition
. - Если поле
tooltip
не заполнено, оно автоматически возьмется из поляlabel
. - Добавлено необязательное поле
id
. - Добавлено необязательное поле
routerLink
для навигации черезRouter
внутри компонента. - Добавлено необязательное поле
disabled
для отключения пунктов меню при необходимости. - Добавлена иконка-фоллбэк, если пользователь не указал иконку в меню q-side-panel.
- Обновлена документация компонента.
- Теперь можно добавлять тултипы к свернутому состоянию q-side-panel и управлять их отображением через свойства
-
Добавлен новый компонент q-icon-selector.
- Компонент позволяет выбирать необходимую иконку и видеть ее превью.
- Можно искать иконку в самом компоненте. Нет необходимости идти в документацию.
- Учтены разные размеры компонента: small, normal, medium, float-label (large).
- Учтены различные состояния компонента: disabled, active, focus, и тд.
7.3.16
Рутовое приложение
- Исправлено поведение кнопки главной страницы: теперь открывается пункт меню с установленным флагом
default
вместо дашборда, либо дашборд, если такого пункта меню нет.
@diasoft/qpalette-core
Исправления
- Исправлено поведение HTTP-перехватчика больших чисел: если передан
body
в виде объекта и в запросе отсутствуетContent-Type
, он будет установлен вapplication/json
. - Доработан алгоритм обработки чисел: теперь корректно распознаются как большие любые дробные числа и числа с плавающей точкой
@diasoft/qpalette-visual
- Доработан компонент Q.Drawer. Теперь доступен не только накладной режим но и "Резиновый".
- QLayout теперь умеет выстраивать интерфейс в зависимости от
@container
query. - Ограниченно доступен новый компонент Q.TaskCard
- Выпущен полностью отрефакторенный Q.Searchbox
- Переработана верстка
- Доступен мультирежим без чипсов (управление только через диалоговое окно)
- Изолирование стилей
- Проработаны все состояния (hover, focus, disable, valid, invalid, active, readonly, shapeshifted)
- Доступны все размерности
- Доступна работа фильтрм
- Доступны серчбоксы в серчбоксах
7.3.13
@diasoft/qpalette-core
Новые возможности
- Теперь доступно автоматическое преобразование больших чисел в
QBigInt
и обратно при запросах к серверу с помощьюHttpClient
в формате JSON. Также возможно ручное преобразование JSON без потерь. См. Обработка больших чисел.
@diasoft/qpalette-visual
Новые возможности
- Добавлен компонент
q-drawer
. - Добавлены классы для адаптивного поведения
q-layout
.
Исправления
- Возвращена отправка события
ready
компонентаq-web-component
для обратной совместимости.
Лукап-директива
- Исправлена ошибка:
"Cannot read properties of undefined (reading 'previousValue')"
лукап-директивы.
@diasoft/qpalette-visual-react
Новые возможности
- Доработан компонент
QIcon
, теперь реализована возможность менять фон иконок.
@diasoft/qpalette-react-wrapper
Новые возможности
- Доработан
QpaletteWebComponent
, теперь можно передавать свойства в веб-компонент.
Исправления
- Исправлен баг при передаче данных в
QWidget
.
qpalette-prime
Новые возможности
- Добавлен стиль
p-accordion__settings
для стилизации аккордеона в соответствии со стандартами проектирования.
Исправления
- Обновлён
p-editor
. Теперь он использует актуальную версию библиотекиquill
(2.0.3). Эта версия устраняет множество багов и добавляет привычные горячие клавиши при работе с WYSIWYG-редактором. - Увеличена область клика на шеврон компонента
p-tree
. - Исправлен баг состояния
required
дляp-inputnumber
. - Исправлен стилевой баг
p-tabview
.
7.3.11
Рутовое
Исправления
- Исправлен ложный вывод сообщений о наличии новой версии бандла для проксированных бандлов.
- Отключен вывод имени источника в сообщениях о наличии новой версии бандла.
@diasoft/qpalette-visual
Исправления
- Исправлена передача фильтров и других данных в лукап-директивы.
- Метод
QWebComponentDataService.getData()
больше не возвращает пустого значения при подписке. - BREAKING CHANGE:
QWebComponentModule.forRoot()
бросает исключение при повторном вызове (см. детали ниже). - BREAKING CHANGE:
QWebComponentDataService.getData()
теперь возвращает целиком тот объект, который был передан в поле[data]
компонентаq-web-component
, а не только егоpayload
(которого, к тому же, может не быть). - BREAKING CHANGE:
QWebComponentDataService.getData()
больше не возвращает данные изendpoint.properties
, только из поляdata
. Для полученияproperties
используйте либо устаревшийQWebComponentModule.endpoint.properties
, либоQWebComponentProperties
(см. детали в анонсе 7.3.9).
BREAKING CHANGES
QWebComponentModule.forRoot()
бросает исключение при повторном вызове
Если в приложении дважды вызван QWebComponentModule.forRoot()
, в консоли будет выброшено исключение,
а компонент не загрузится. По цепочке вызовов можно увидеть, какой модуль вызвал ошибку. Например:
В данном случае это библиотека @diasoft/qversionui-lib
. Для решения проблемы необходимо избавиться
от повторного вызова QWebComponentModule.forRoot()
внутри всех модулей, кроме основного модуля вашего продукта.
7.3.10
Рутовое
- Исправлен ложный вывод в рутовом сообщений о наличии новой версии бандла.
- Исправлен вывод сообщений в журнале: уровень логирования вместо цифры выводится строкой.
New Features
Динамическое включение/выключение логирования
Реализованы глобальные функции setLoggerLevel
и resetLoggerLevel
для динамической смены уровня логирования.
Чтобы включить debug-режим, можно в консоли разработчика (например, Console в Chrome (opens in a new tab)) выполнить:
qpalette.setLoggerLevel("debug")
Чтобы вернуть настройки обратно:
qpalette.resetLoggerLevel()
Как работать с журналом – см. анонс выпуска 7.3.8 ниже.
Это предпочтительный способ включения логирования по сравнению с включением через конфигурацию стенда, так как изолирован одной сессией работы в браузере и не забивает память других пользователей.
Не забудьте выключить логирование после того, как получили детальные логи, иначе память быстро засорится, что может привести к зависанию при активной работе в интерфейсе.
7.3.9
Рутовое
- Исправлен вывод тостов в области рутового.
@diasoft/qpalette-visual
- q-web-component
- Исправлена передача данных в веб-компонент (см. ниже Deprecations).
Deprecations
provideSingleBundle()
Для корректной работы в режиме Single Bundle необходимо предоставить функцию provideSingleBundle()
из пакета @diasoft/qpalette-visual
в разделе providers
главного компонента. Константа Q_WEB_COMPONENT_SERVICES
из @diasoft/qpalette-visual
больше не нужна и будет удалена в будущих версиях. Пример компонента можно посмотреть тут (opens in a new tab).
import { QWebComponent, provideSingleBundle } from '@diasoft/qpalette-visual';
@Component({
//...
providers: [
provideSingleBundle()
]
})
export class AppComponent extends QWebComponent {
//...
}
Получение данных, передаваемых в веб-компоненты
Получение данных через QWebComponentModule.endpoint.properties
является устаревшим вариантом, статическое поле endpoint
в будущем будет удалено. Более того, такой способ возвращает только первое установленное значение.
- Для однократного получения параметров используйте сервис
QWebComponentProperties
из пакета@diasoft/qpalette-visual
. - Если требуется многократное получение данных, используйте метод
getData()
сервисаQWebComponentDataService
из пакета@diasoft/qpalette-visual
.
Передача данных в веб-компонент по-прежнему доступна как через endpoint.properties
, так и через поле data
компонента q-web-component
. При этом QWebComponentProperties
возвращает данные из endpoint.properties
, а QWebComponentDataService
– как из endpoint.properties
, так и из поля data
.
Примеры:
import { QWebComponentDataService, QWebComponentProperties } from '@diasoft/qpalette-visual';
import {Component} from "@angular/core";
@Component({/*...*/})
export class GetPropertiesComponent {
constructor(
private readonly dataService: QWebComponentDataService,
private readonly properties: QWebComponentProperties,
) {
// теперь параметры стали реактивными (могут меняться в режиме реального времени)
this.dataService.inputData.subscribe(params => {
console.log(params); // { param1: 'value1', param2: 'value2' }
});
// если нужно получить параметры единоразово
console.log(this.properties) // { param1: 'value1', param2: 'value2' }
}
}
Демо-примеры разных способов получения данных можно посмотреть тут (opens in a new tab) (исходники тут (opens in a new tab)).
7.3.8
@diasoft/qpalette-visual
- q-web-component
- Исправлена загрузка бандлов устаревших версий
New Features
Логирование
Cтала доступна опция детального логирования, включить ее можно настройкой в конфигурации (config.base.json
или другой, используемый при сборке):
"common": {
"logger": {
"logLevel": "debug"
}
}
Для наиболее полного логирования также рекомендуется подключить модуль QCoreModule
на уровне главного модуля приложения. Например:
import { DoBootstrap, NgModule } from '@angular/core';
import { QCoreModule, QCoreService } from '@diasoft/qpalette-core';
@NgModule({
imports: [
QCoreModule.forRoot(QCoreService.config.common)
]
})
export class AppModule implements DoBootstrap {/**/}
На текущий момент доступно только детальное логирование процесса загрузки бандла и общения между веб-компонентами.
После включения debug-режима в консоли будет детальный журнал для отладки.
Для его получения нужно:
- Открыть Console в инструментах разработчика браузера (например, DevTools в Chrome).
- Очистить консоль.
- Перезагрузить страницу.
- Воспроизвести ошибку.
- Экспортировать журнал в файл (например, в Chrome: правой кнопкой мыши в области консоли, далее
Save as...
). - Отправить его нам (qpalette@diasoft.ru).
Мы поможем разобраться.
В связи с большой загрузкой команды Q.Palette можем не сразу рассмотреть обращение. Большая просьба попробовать разобраться самостоятельно, прежде чем обращаться к нам за помощью.
Не включайте режим "debug" без лишней надобности, так как это очень быстро засорит память, что может привести к зависанию у пользователей при активной работе в интерфейсе. Включайте только на некоторое время, чтобы отловить ошибку. После формирования журнала, сохраните его для дальнейшего анализа и выключите логирование на стенде.
Single Bundle
Router.navigate()
иRouter.navigateByUrl()
теперь работают стандартно: без указания дополнительных параметров вstate
.ActivatedRoute
лучше не использовать. Если вам нужен текущий URL, включая параметры, подписывайтесь наRouter.events
.
Полный фикс, где решены оставшиеся проблемы, уже готовится к выпуску.
7.3.6
@diasoft/qpalette-visual
- q-web-component
- Реализованы проверки окружения внутри веб-компонента.
- Исправлен мелкий баг подсветки фильтров в активном состоянии.
BREAKING CHANGES
Логика навигации вынесена в QWebComponent.ngOnInit()
. Если в вашем компоненте, который наследует QWebComponent
,
переопределен метод ngOnInit()
, убедитесь в том, что в нем есть вызов super.ngOnInit()
, иначе компонент
не отобразится.
То же самое касается других хуков Angular – убедитесь, что для каждого someHook
вызван super.someHook()
.
- QSearchBox
- Новый шаблон диалогового окна
QSearchBox
. - Новая верстка инпута
QSearchBox
. - Другие доработки верстки.
- Различные размеры
QSearchBox
(xs, sm, md, lg). - Поддержка
FloatLabel
. - Предустановка фильтров, в том числе и скрытых.
- Сортировка данных внутри таблицы по-умолчанию.
- Исправлены баги с
reset formControl
. - Переработаны фильтры, поддержка как асинхронных данных через бек, так и через статичные значения, указанные в конфиге.
- Фикс ошибки с автоматическим выпаданием календаря в фильтрах.
- Поддержка всех типов фильтров, за исключением
qLookupDirective
(поддержан как фильтр не будет). - Лоадер в таблице при запросах.
- Рефакторинг вложенных
QSearchBox
. - Оптимизация запросов и
emit
значений в прикладнойformControl
. Destroy
вложенныхQSearchBox
.
- Новый шаблон диалогового окна
- QFilterWrapper
- Исправлен баг, когда незаполненный лукап подсвечивался синим
7.3.5
@diasoft/qpalette-visual
- Исправление работы лукап-директив:
- Адаптирована инициализация загрузки бандла для корректной работы компонента
- Добавлена проверка на изменение endpoint-а перед инициализацией виджетов, чтобы избежать некорректного поведения
- Улучшена стабильность и управление visual.q-lookup
- Оптимизация веб-компонентов:
- Исправлена логика загрузки бандлов: добавлена обратная совместимость для режимов с сингл-бандлом и без него
- Реализовано отображение спиннера загрузки до получения соответствующего события, чтобы минимизировать ощущения задержки для пользователей
- Оптимизирован процесс инициализации и загрузки q-web-component для повышения скорости и более гладкой работы
BREAKING CHANGES
- Добавлена логика регистрации веб-компонента в метод
QWebComponentModule.forRoot()
. Проверьте, что в ваших продуктах и подключаемых библиотеках этот метод вызывается лишь один раз (на уровне главного модуля вашего продукта). Иначе продукт может не загрузиться!
Как понять, что метод вызван дважды?
- Закройте все продукты и перезагрузите страницу.
- Откройте страницу продукта.
- Откройте консоль разработчика в браузере и введите
qpalette.webComponentRepository
. - Если в выведенном массиве ваш компонент представлен больше, чем один раз (без учета дополнительных виджетов и библиотечных PBC) – значит,
QWebComponentModule.forRoot()
был вызван дважды.
7.3.3
Рутовое приложение
- Исправление изменения properties веб-компонента в режиме реального времени
7.3.2
Рутовое приложение
- Исправление ошибки "No provider for QRootEventsService!"
7.3.1
Рутовое приложение
- Добавлена возможность динамической подгрузки пунктов меню. Смотрите документацию тут (opens in a new tab).
- Доработана технология SSE
- Исправлена проверка версий бандлов: теперь нет ложных срабатываний.
- Исправлено дублирование сообщений в рутовом: теперь одинаковые сообщения выводятся не чаще одного раза в 5 секунд.
@diasoft/qpalette-visual
- Выбранные фильтры подсвечиваются синим
- Исправлен баг с appendTo у q-side-dialog
@diasoft/qpalette-permissions:
- Вернули флаг
enable
в конфигурациюQPermissions
. - Исправление работы в режиме ABAC, если бекенд не возвращает
serviceSysName
. В случае, если в запросе переданы объекты с разнымиserviceSysName
, а в ответеserviceSysName
не указан, будет ошибка в консоли.
@diasoft/qpalette-react-wrapper:
- Реализован механизм
Single Bundle
. - Удалён параметр
useEffect
изRoutesWrapper
. - Исправлена отписка виджетов от эвентов.
- Добавлена константа
appendToWebComponent
, которую можно использовать для ваших компонентов, которые рендерятся вbody
.
7.2.16
qpalette-visual
Серчбокс
- Исправлен непроизвольный вылет попапа при загрузке страницы.
- Исправлен баг с прокидыванием плейсхолдера в фильтр-автокомплит.
qpalette-prime
- Исправлен баг, когда кнопки в
p-dialog
были не на одной линии и имели лишний отступ.
qpalette-updater
- Исправлена публикация апдейтера.
Рутовое приложение
- Исправлен баг роутинга в библиотечных PBC.
7.2.15
Рутовое приложение
- При каждом открытии новой вкладки или добавлении веб-компонента на страницу происходит проверка обновлений бандла на сервере. Если бандл обновился, пользователю будет предложено обновить страницу. Уведомления будут всплывать до тех пор, пока страница не будет обновлена. Это сделано для того, чтобы не нарушать текущую работу пользователя и не загружать потенциально конфликтующие с предыдущими версиями бандлы в рутовое.
qpalette-visual
Серчбокс
- Исправлен
disabled
- Исправлен
float-label
, который не поднимался - Исправлена рекурсивная ошибка при использовании вложенных серчбоксов в цифровом профиле
- Исправлена проблема валидации компонента
7.2.14
- Исправлен баг, когда при открытии первой вкладки компонента в режиме Single Bundle и Keycloak страница пустая
- Breaking Change - Все бандлы, которые используют Single Bundle, должны быть переведены на последнюю версию qpalette
- При открытии первой вкладки компонента в режиме Single Bundle в некоторых случаях веб-компонент не успевал зарегистрироваться
- В режиме Single Bundle в некоторых случаях начальная навигация по маршруту не выполнялась
- Удален костыль
singleBundleModeEnabled
, который должен был поддерживать обратную совместимость с бандлами старых версий (по факту оказался нерабочим вариантом: в режиме Keycloak бандлы в режиме SB не успевали зарегистрироваться, в итоге страница была пустой при первом открытии вкладки) - Теперь веб-компоненты добавляют себя в глобальный реестр сами
7.1.3
Рутовое приложение
- Исправлен баг, когда открывался некорректный роут при перезагрузке страницы
- Исправлен баг при переключении между маршрутами продукта в режиме Single Bundle React
- Исправлено отображение SideDialog
- Исправлено визуальное отображение всех инпутов с атрибутом required
- Исправлены селекты в компоненте MultiSelect и TreeSelect
- Исправлен лоадер в компоненте Lookup
- Добавлена поддержка компонента Password
7.1.0
Рутовое приложение и все библиотеки
- Поддержан Angular 17
- Поддержан PrimeNG 17
- Поддержана технология SingleBundle
- Поддержана обратная совместимость с версиями Q.Palette 6
- Контекстное меню Основного приложения (рутового) было заменено на p-context-menu
- Устранен баг, когда лукап-директива при повторном открытии не отображалась
- Синхронизированы версии Angular и React, теперь все версии выпускаются с одинаковым индексом
- Устранены некоторые критические зависимости
- Исправлен баг, когда p-tooltip непроизвольно показывал скроллинг
- Мелкие исправления