Если ваш проект включает в себя компонент с новой темой, вы можете настроить использование этой темы во всём проекте.
Чтобы использовать тему из компонента без изменений, просто добавьте её в свойство приложения cuba.themeConfig:
cuba.web.theme = {theme-name}
cuba.themeConfig = havana-theme.properties halo-theme.properties /com/company/{app-component-name}/{theme-name}-theme.properties
Однако, чтобы переопределить некоторые переменные из родительской темы, сначала необходимо создать расширение темы в основном проекте.
В этом примере мы вновь используем тему facebook
из предыдущего примера.
-
Создайте тему
facebook
для компонента приложения, следуя инструкции из раздела [web_theme_creation]. -
Установите компонент, используя меню Studio, как описано в разделе [app_components_sample].
-
Расширьте тему
halo
в проекте, в котором используется ваш компонент. -
В IDE переименуйте все вхождения
halo
в каталогеthemes
, включая имена файлов, вfacebook
. В итоге у вас должна получиться следующая структура:link:../../../../../../source/gui/themes/themes_28.scss[role=include]
-
Файл
app-component.scss
группирует модификации темы в конкретном компоненте приложения. В процессе сборки SCSS плагин Gradle автоматически находит компоненты и включает их в генерируемый файлmodules/web/build/themes-tmp/VAADIN/themes/{theme-name}/app-components.scss
.По умолчанию переменные темы из
{theme-name}-ext-defaults
не наследуются в проект. Чтобы изменить это поведение, вручную добавьте включение в файлapp-component.scss
:link:../../../../../../source/gui/themes/themes_29.scss[role=include]
На этом этапе тема
facebook
уже импортирована в проект из компонента приложения. -
Теперь вы можете использовать файлы
facebook-ext.scss
иfacebook-ext-defaults.scss
из пакетаcom.company.application
, чтобы переопределить переменные темы компонента и модифицировать её для конкретного проекта. -
Добавьте свойства приложения в файл
web-app.properties
, чтобы сделать темуfacebook
доступной в меню приложения Settings. Используйте относительный путь для ссылки на файлfacebook-theme.properties
.link:../../../../../../source/gui/themes/themes_30.scss[role=include]
Tip
|
Если при сборке тем возникли проблемы, проверьте каталог |