3.5.9.4. Наследование тем из компонентов приложения
Если ваш проект включает в себя компонент с новой темой, вы можете настроить использование этой темы во всём проекте.
Чтобы использовать тему из компонента без изменений, просто добавьте её в свойство приложения cuba.themeConfig:
cuba.web.theme = {theme-name}
cuba.themeConfig = com/haulmont/cuba/hover-theme.properties /com/company/{app-component-name}/{theme-name}-theme.properties
Однако, чтобы переопределить некоторые переменные из родительской темы, сначала необходимо создать расширение темы в основном проекте.
В этом примере мы вновь используем тему facebook
из предыдущего примера.
-
Создайте тему
facebook
для компонента приложения, следуя инструкции из раздела Создание новой темы. -
Установите компонент, используя меню Studio, как описано в разделе Пример создания и использования компонента.
-
Расширьте тему
halo
в проекте, в котором используется ваш компонент. -
В IDE переименуйте все вхождения
halo
в каталогеthemes
, включая имена файлов, вfacebook
. В итоге у вас должна получиться следующая структура:themes/ facebook/ branding/ app-icon-login.png app-icon-menu.png com.company.application/ app-component.scss facebook-ext.scss facebook-ext-defaults.scss favicon.ico styles.scss
-
Файл
app-component.scss
группирует модификации темы в конкретном компоненте приложения. В процессе сборки SCSS плагин Gradle автоматически находит компоненты и включает их в генерируемый файлmodules/web/build/themes-tmp/VAADIN/themes/{theme-name}/app-components.scss
.По умолчанию переменные темы из
{theme-name}-ext-defaults
не наследуются в проект. Чтобы изменить это поведение, вручную добавьте включение в файлapp-component.scss
:@import "facebook-ext"; @import "facebook-ext-defaults"; @mixin com_company_application { @include com_company_application-facebook-ext; }
На этом этапе тема
facebook
уже импортирована в проект из компонента приложения. -
Теперь вы можете использовать файлы
facebook-ext.scss
иfacebook-ext-defaults.scss
из пакетаcom.company.application
, чтобы переопределить переменные темы компонента и модифицировать её для конкретного проекта. -
Добавьте свойства приложения в файл
web-app.properties
, чтобы сделать темуfacebook
доступной в меню приложения Settings. Используйте относительный путь для ссылки на файлfacebook-theme.properties
.cuba.web.theme = facebook cuba.themeConfig = com/haulmont/cuba/hover-theme.properties /com/company/{app-component-name}/facebook-theme.properties
Если при сборке тем возникли проблемы, проверьте каталог |