Skip to content

Commit

Permalink
Add material theme support to Flow.
Browse files Browse the repository at this point in the history
  • Loading branch information
Kirill Bulatov committed Jun 25, 2018
1 parent fb5595a commit fa2f13a
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 0 deletions.
24 changes: 24 additions & 0 deletions flow-theme-integrations/material/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.vaadin</groupId>
<artifactId>flow-theme-integrations</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>

<artifactId>vaadin-material-theme</artifactId>
<name>Material theme for Flow</name>
<description>Package with Material dependencies and setting for use with Flow
</description>
<packaging>jar</packaging>

<dependencies>
<dependency>
<groupId>org.webjars.bowergithub.vaadin</groupId>
<artifactId>vaadin-material-styles</artifactId>
<version>0.4.0</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* Copyright 2000-2017 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.flow.theme.material;

import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.slf4j.LoggerFactory;

import com.vaadin.flow.component.dependency.HtmlImport;
import com.vaadin.flow.theme.AbstractTheme;

/**
* Material component theme class implementation.
*/
@HtmlImport("frontend://bower_components/vaadin-material-styles/color.html")
@HtmlImport("frontend://bower_components/vaadin-material-styles/typography.html")
public class Material implements AbstractTheme {
public static final String LIGHT = "light";
public static final String DARK = "dark";

@Override
public String getBaseUrl() {
return "src/";
}

@Override
public String getThemeUrl() {
return "theme/material/";
}

@Override
public List<String> getHeaderInlineContents() {
return Collections.singletonList("<custom-style>\n"
+ " <style include=\"material-color-light material-typography\"></style>\n"
+ "</custom-style>");
}

@Override
public Map<String, String> getBodyAttributes(String variant) {
switch (variant) {
case LIGHT:
return Collections.singletonMap("theme", LIGHT);
case DARK:
return Collections.singletonMap("theme", DARK);
default:
if (!variant.isEmpty()) {
LoggerFactory.getLogger(getClass().getName()).warn(
"Material theme variant not recognized: '{0}'. Using no variant.",
variant);
}
return Collections.emptyMap();
}
}
}
1 change: 1 addition & 0 deletions flow-theme-integrations/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

<modules>
<module>lumo</module>
<module>material</module>
</modules>

<dependencies>
Expand Down

0 comments on commit fa2f13a

Please sign in to comment.