Экспериментальная функциональность
Обратная совместимость текущего API с последующими версиями НЕ ГАРАНТИРУЕТСЯ.
В этом разделе описывается, как использовать механизм темизации для настройки визуального оформления приложения. Вы узнаете о возможностях темизации, структуре файла темы, порядке настройки и установки пользовательской темы, а также о способах использования параметров темизации в коде.
Механизмы темизации позволяют:
Тема представляет собой файл в формате JSON. Файл темы должен содержать набор конфигурационных параметров, строго соответствующий требуемой структуре — схеме темизации.
По своей структуре тема состоит из следующих узловых элементов:
Ознакомиться со схемой темизации и полным списком параметров темы можно в разделе Параметры темизации.
В качестве примера настройки пользовательской темы зададим параметры:
#FF0000FFДля этого необходимо создать файл theme.json со следующей структурой:
{
"theme": {
"general": {
"palette": {
"danger": {
"500": {
"type": "literal",
"value": "#FF0000FF"
}
}
}
},
"platform": {
"uikit": {
"button": {
"standard": {
"default": {
"normal": {
"backgroundColor": {
"type": "link",
"path": "general.palette.danger.500"
}
}
}
}
}
},
"app": {
"favicon": {
"iconUrl": {
"type": "literal",
"value": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+PHN2ZyB2aWV3Qm94PSIwIDAgNjQgNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iMzIiIGN5PSIzMiIgcj0iMzIiIGZpbGw9InJlZCIvPjwvc3ZnPgo="
}
}
}
}
}
}
В данном случае пользовательская тема переопределяет всего 3 параметра темизации, остальные параметры будут автоматически взяты из стандартной темы.
JSON-файл с пользовательской темой необходимо смонтировать в корневую публичную директорию UI-сервиса.
Для Docker-контейнера это путь: /usr/share/nginx/html/theme.json:
docker run repository.universe-data.ru/dis/unidata-dg/frontend:v2.15.0 \
-p '80:80' \
-v ./theme.json:/usr/share/nginx/html/theme.json
-e BACKEND_ADDRESS=$BACKEND_ADDRESS
При запуске системы пользовательская тема будет применена.
В случае если какой-то из параметров пользовательской темы не будет соответствовать схеме, то такая тема не будет применена. Вместо неё будет установлена стандартная тема.
При реализации кастомизаций возможно использовать параметры темизации в пользовательских CSS-файлах.
Все параметры темизации хранятся в CSS-переменных именуемых согласно формату: --un-theme-<parameter-id>,
где <parameter-id> - это путь к параметру, с разделителем -. Например, значение для параметра
general.palette.danger.500 хранится в css-переменной --un-theme-general-palette-danger-500:
.custom-class {
background-color: var(--un-theme-general-palette-danger-500);
}