Vaadin:如何定制Valo主题

shi*_*ahh 2 css java sass vaadin

我是SCSS的新手,我问自己如何在Vaadin应用程序中自定义Valo主题.我阅读了Vaadin书中的主题,但我找不到一个例子.我的风格结构基于Vaadin官方仪表板演示:

@import "../valo/valo";
@import "common";
@import "views/login";
@import "views/dashboardview";
@import "views/schedule";
@import "views/sales";
@import "views/transactions";
@import "views/reports";

// Optimize the CSS output
$v-included-components: remove($v-included-components, accordion);
$v-included-components: remove($v-included-components, colorpicker);
$v-included-components: remove($v-included-components, grid);
$v-included-components: remove($v-included-components, popupview);
$v-included-components: remove($v-included-components, progressbar);
$v-included-components: remove($v-included-components, slider);
$v-included-components: remove($v-included-components, splitpanel);
$v-included-components: remove($v-included-components, tree);
$v-included-components: remove($v-included-components, treetable);
$v-included-components: remove($v-included-components, twincolselect);

// Main layout padding
$view-padding: round($v-unit-size / 1.5) !default;

// Slight adjustment to menu background-color
$valo-menu-background-color: #414B56;

@mixin dashboard {
  @include valo;
  @include dashboard-common;
  @include dashboard-login-view;
  @include dashboard-dashboard-view;
  @include dashboard-schedule-view;
  @include dashboard-sales-view;
  @include dashboard-transactions-view;
  @include dashboard-reports-view;
}
Run Code Online (Sandbox Code Playgroud)

在编译SCSS之后我得到了styles.css文件,我在那里为Valo菜单定制了几个条目.例:

原版的:

.mytheme .v-menubar-user-menu  > .v-menubar-menuitem img.v-icon {
    width: 56px;
    height: 56px;

    border-radius: 29px;
    box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05);
    display: block;
    margin: 0 auto 0.3em;
    border: 1px solid #c5c5c5;
}
Run Code Online (Sandbox Code Playgroud)

定制:

.mytheme .v-menubar-user-menu  > .v-menubar-menuitem img.v-icon {
    width: 69px;
    box-shadow: 0 2px 3px rgba(0, 0, 0, 0.05);
    display: block;
    margin: 0 auto 0.3em;
    border: 1px solid #c5c5c5;
}
Run Code Online (Sandbox Code Playgroud)

现在我如何(以及在​​哪里)定义这些规则,以便SCSS编译器自动获取更改?否则每次我编译主题时我的更改都会丢失.

问候

cfr*_*ick 5

正如Vaadin书中所描述的那样,您可以在自己的末尾添加自己的代码mixin.

实际主题应定义如下,作为包含基本主题的mixin.

@import "../valo/valo.scss";

@mixin mytheme {
  @include valo;

  /* An actual theme rule */
  .v-button {
    color: blue;
  }
}
Run Code Online (Sandbox Code Playgroud)

在你的情况下,一些事情:

@mixin dashboard {
  // ...
  .v-menubar-user-menu  > .v-menubar-menuitem img.v-icon {
     width: 69px;
     height: auto;
  }
}
Run Code Online (Sandbox Code Playgroud)