Skip to content
This repository was archived by the owner on Dec 18, 2024. It is now read-only.

Commit d586c1e

Browse files
mmalerbariavalon
authored andcommitted
feat(navbar): Add themepicker component with lazy loaded themes
1 parent 1bccf71 commit d586c1e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+3555
-188
lines changed

angular-cli.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919
"mobile": false,
2020
"styles": [
2121
"main.scss",
22-
"highlightjs/solarized-light.css"
22+
"highlightjs/solarized-light.css",
23+
{"input": "assets/pink-bluegrey.css", "lazy": true},
24+
{"input": "assets/deeppurple-amber.css", "lazy": true},
25+
{"input": "assets/indigo-pink.css", "lazy": true},
26+
{"input": "assets/purple-green.css", "lazy": true}
2327
],
2428
"scripts": [],
2529
"environmentSource": "environments/environment.ts",

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
"license": "MIT",
55
"angular-cli": {},
66
"scripts": {
7-
"start": "ng serve",
7+
"start": "npm run build-themes && ng serve",
88
"lint": "tslint \"src/**/*.ts\"",
99
"test": "ng test",
1010
"pree2e": "webdriver-manager update",
1111
"e2e": "protractor",
12-
"prod-build": "ng build --aot --prod && npm run prerender && cp -r tmp/prerendered/* dist/",
12+
"build-themes": "./tools/build-themes.sh",
13+
"prod-build": "npm run build-themes && ng build --aot --prod && npm run prerender && cp -r tmp/prerendered/* dist/",
1314
"postinstall": "webdriver-manager update && tools/fetch-assets.sh",
14-
"publish-prod": "ng build --aot --prod && firebase use material-angular-io && firebase deploy",
15-
"publish-dev": "ng build --aot --prod && firebase use material2-docs-dev && firebase deploy"
15+
"publish-prod": "npm run build-themes && ng build --aot --prod && firebase use material-angular-io && firebase deploy",
16+
"publish-dev": "npm run build-themes && ng build --aot --prod && firebase use material2-docs-dev && firebase deploy"
1617
},
1718
"private": true,
1819
"dependencies": {
@@ -44,6 +45,7 @@
4445
"karma-jasmine": "^1.1.0",
4546
"karma-remap-istanbul": "^0.2.1",
4647
"karma-sauce-launcher": "^1.1.0",
48+
"ng-inline-svg": "^3.0.0",
4749
"protractor": "^5.1.1",
4850
"ts-node": "^2.0.0",
4951
"tslint": "^4.4.2",

src/_app-theme.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@import '~@angular/material/theming';
1+
@import '../node_modules/@angular/material/theming';
22
@import './app/pages/homepage/homepage-theme';
33
@import './app/pages/component-sidenav/component-sidenav-theme';
44
@import './app/pages/component-viewer/component-viewer-theme';

src/app/app-module.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1+
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
12
import {BrowserModule} from '@angular/platform-browser';
23
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
34
import {NgModule} from '@angular/core';
45
import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';
56
import {FormsModule} from '@angular/forms';
67
import {HttpModule} from '@angular/http';
78
import {MaterialModule} from '@angular/material';
9+
import {InlineSVGModule} from 'ng-inline-svg';
810
import {MaterialDocsApp} from './material-docs-app';
911
import {Homepage} from './pages/homepage/homepage';
1012
import {routing} from './routes';
@@ -19,6 +21,7 @@ import {ComponentSidenav} from './pages/component-sidenav/component-sidenav';
1921
import {Footer} from './shared/footer/footer';
2022
import {ComponentPageTitle} from './pages/page-title/page-title';
2123
import {ComponentPageHeader} from './pages/component-page-header/component-page-header';
24+
import {StyleManager} from './shared/style-manager/style-manager';
2225

2326

2427
@NgModule({
@@ -32,7 +35,14 @@ import {ComponentPageHeader} from './pages/component-page-header/component-page-
3235
GuideList,
3336
GuideViewer,
3437
Homepage,
35-
Footer
38+
Footer,
39+
],
40+
schemas: [
41+
CUSTOM_ELEMENTS_SCHEMA,
42+
],
43+
exports: [
44+
MaterialDocsApp,
45+
Homepage,
3646
],
3747
imports: [
3848
BrowserModule,
@@ -43,10 +53,12 @@ import {ComponentPageHeader} from './pages/component-page-header/component-page-
4353
HttpModule,
4454
MaterialModule.forRoot(),
4555
routing,
56+
InlineSVGModule,
4657
],
4758
providers: [
4859
Location,
4960
ComponentPageTitle,
61+
StyleManager,
5062
{provide: LocationStrategy, useClass: PathLocationStrategy},
5163
],
5264
bootstrap: [MaterialDocsApp],

src/app/material-docs-app.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import {Component, ViewEncapsulation} from '@angular/core';
22
import {Router, NavigationStart} from '@angular/router';
33

4+
import {ThemeStorage} from './shared/theme-chooser/theme-storage/theme-storage';
5+
46

57
@Component({
68
selector: 'material-docs-app',
@@ -15,9 +17,20 @@ export class MaterialDocsApp {
1517
isDarkTheme = false;
1618
showShadow = false;
1719

18-
constructor(router: Router) {
20+
constructor(
21+
router: Router,
22+
_themeStorage: ThemeStorage
23+
) {
1924
router.events.subscribe((data: NavigationStart) => {
2025
this.showShadow = data.url.startsWith('/components');
2126
});
27+
28+
_themeStorage
29+
.onThemeUpdate
30+
.subscribe((theme) => this._setIsDarkTheme(theme));
31+
}
32+
33+
public _setIsDarkTheme(theme) {
34+
this.isDarkTheme = theme ? theme.isDark : this.isDarkTheme;
2235
}
2336
}

src/app/pages/component-category-list/component-category-list.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<md-card-title>{{category.name}}</md-card-title>
77
<p class="docs-component-category-list-card-summary">{{category.summary}}</p>
88
<div class="docs-component-category-list-card-image"
9-
[style.backgroundImage]="'url(\'../../../assets/img/component-categories/' + category.id +'.svg\')'">
9+
[inlineSVG]="'../../../assets/img/component-categories/' + category.id + '.svg'">
1010
</div>
1111
</md-card>
1212
</div>

src/app/pages/component-category-list/component-category-list.scss

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
.docs-component-category-list {
44
padding: 20px;
5+
display: flex;
6+
flex-wrap: wrap;
57

68
@media (max-width: $small-breakpoint-width) {
7-
display: flex;
8-
flex-wrap: wrap;
99
justify-content: center;
1010
}
1111
}
@@ -22,12 +22,9 @@
2222
}
2323
}
2424

25-
.docs-component-category-list-card-image {
26-
width: 100%;
27-
height: 160px;
28-
background-size: contain;
29-
background-repeat: no-repeat;
30-
background-position: center;
25+
:host /deep/ .docs-component-category-list-card-image svg {
26+
width: 100% !important;
27+
height: 100% !important;
3128
}
3229

3330
.docs-component-category-list-card-summary {

src/app/pages/component-category-list/component-category-list.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {async, TestBed, ComponentFixture} from '@angular/core/testing';
22
import {MaterialModule} from '@angular/material';
3+
import {InlineSVGModule} from 'ng-inline-svg';
34
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
45

56
import {DocumentationItems} from '../../shared/documentation-items/documentation-items';
@@ -12,7 +13,7 @@ describe('ComponentCategoryList', () => {
1213

1314
beforeEach(async(() => {
1415
TestBed.configureTestingModule({
15-
imports: [MaterialModule],
16+
imports: [MaterialModule, InlineSVGModule],
1617
schemas: [CUSTOM_ELEMENTS_SCHEMA],
1718
declarations: [ComponentCategoryList],
1819
providers: [

src/app/pages/component-list/component-list.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<div class="docs-component-list-category">
22
<a *ngFor="let component of category.items"
3-
class="docs-component-list-item"
4-
[routerLink]="['/components/component/', component.id]">
3+
class="docs-component-list-item"
4+
[routerLink]="['/components/component/', component.id]">
55
<div class="docs-component-list-item-icon"
6-
[attr.aria-label]="component.name"
7-
[style.backgroundImage]="'url(\'../../../assets/img/components/' + component.id + '.svg\')'">
6+
[attr.aria-label]="component.name"
7+
[inlineSVG]="'../../../assets/img/components/' + component.id + '.svg'">
88
</div>
99
{{component.name}}
1010
</a>

src/app/pages/component-list/component-list.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {async, TestBed, ComponentFixture} from '@angular/core/testing';
22
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
33
import {MaterialModule} from '@angular/material';
4+
import {InlineSVGModule} from 'ng-inline-svg';
45
import {ActivatedRoute, Router} from '@angular/router';
56
import {RouterTestingModule} from '@angular/router/testing';
67
import {Observable} from 'rxjs/Observable';
@@ -22,7 +23,7 @@ describe('ComponentList', () => {
2223

2324
beforeEach(async(() => {
2425
TestBed.configureTestingModule({
25-
imports: [MaterialModule, RouterTestingModule],
26+
imports: [MaterialModule, RouterTestingModule, InlineSVGModule],
2627
schemas: [CUSTOM_ELEMENTS_SCHEMA],
2728
declarations: [ComponentList],
2829
providers: [

0 commit comments

Comments
 (0)