diff --git a/.codeclimate.yml b/.codeclimate.yml index 477ed33ac..234037195 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -27,7 +27,7 @@ exclude_paths: - dev-scripts - scripts - src/app -- src/scss-mdl +- src/scss - typings - angular-cli.json - angular-cli-build.js diff --git a/README.md b/README.md index dec609338..240531929 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Do not take a red flag to serious. Most of the time this is a sauce lab issue an ### Status of the npm package version 1.7 (mdl version 1.2.1; angular 2.0 final) - Badges -- Buttons +- Buttons - Cards - Chips - Icons @@ -74,7 +74,7 @@ export class Angular2MdlAppModule { } ``` -There are still a lot of bugs in angular2 rc5. For example: https://github.com/angular/angular/issues/10618. +There are still a lot of bugs in angular2 rc5. For example: https://github.com/angular/angular/issues/10618. This means that prod builds are broken. You need to disable some minification options. See the comments in the mentioned ticket. ### Installation @@ -95,7 +95,7 @@ Just use it. Add the MdlModule to your NgModule imports and you are done! ### How to use the mdl components with the angular cli system js version -You need to extend the `angular-cli-build.js` file to include `angular2-mdl` as a vendor package: +You need to extend the `angular-cli-build.js` file to include `angular2-mdl` as a vendor package: ```JavaScript return new Angular2App(defaults, { @@ -142,7 +142,7 @@ You may include the material-deisgn-lite css in your html and you're done! Under https://getmdl.io/customize/index.html you'll find a customizing tool to change the theme colors. ### How to use the scss files from material-design-lite -But there is also another way. This package includes the scss files from material-design-lite. +But there is also another way. This package includes the scss files from material-design-lite. With these files you are able to change the colors and other variables in your own scss files: First of all you need to install node-sass for your project: @@ -151,7 +151,7 @@ First of all you need to install node-sass for your project: npm install node-sass --save-dev ``` -After that you need to configure the sass compiler to use the sass files from the angular2-mdl package. +After that you need to configure the sass compiler to use the sass files from the angular2-mdl package. For that the file `angular-cli-build.js` needs to be extended: ```JavaScript @@ -159,7 +159,7 @@ return new Angular2App(defaults, { sassCompiler: { includePaths: [ - `${__dirname}/node_modules/angular2-mdl/src/scss-mdl` + `${__dirname}/node_modules/angular2-mdl/src/scss` ] }, vendorNpmFiles: [ @@ -184,3 +184,17 @@ $color-accent-contrast: $color-dark-contrast; [comment]: <> (in angular-cli/lib/broccoli/angular-broccoli-bundle.js set { minify: true, mangle: false }) + + +# Contributing + +*The contributing section is a work in progress, please be aware that changes are still being suggested and your PR may need to go through a couple revisions prior to acceptance* + +* This package should only provide what is provided by material design lite so far (to keep it clean, maintainable and predictable what is included) +* Any extensions need to be things that the packaging of mdl into @angular makes it very hard to extend (to be reviewed and accepted/rejected based on merit by the owners of this repository). + +## SCSS + +* This package must work with the CSS from [the CDN](https://code.getmdl.io/1.2.1/material.indigo-pink.min.css) + * We pull the source directly with a script into app/scss/mdl + * All extensions must exist outside of the mdl directory or they will be overwritten the next time we pull from mdl diff --git a/angular-cli-build.js b/angular-cli-build.js index 058dcf8c5..c18a704b1 100644 --- a/angular-cli-build.js +++ b/angular-cli-build.js @@ -39,7 +39,7 @@ module.exports = function(defaults) { tsCompiler: {}, sassCompiler: { includePaths: [ - 'src/scss-mdl' + 'src/scss' ] }, vendorNpmFiles: [ diff --git a/dev-scripts/generate-scss-from-mdl-scss.js b/dev-scripts/generate-scss-from-mdl-scss.js index 79f07bc81..a0b930ae4 100644 --- a/dev-scripts/generate-scss-from-mdl-scss.js +++ b/dev-scripts/generate-scss-from-mdl-scss.js @@ -1,7 +1,7 @@ #!/usr/bin/env node 'use strict'; -// extract scss files and put them into scss-mdl folder. Run: npm run generate-scss-from-mdl-scss +// extract scss files and put them into scss/mdl folder. Run: npm run generate-scss-from-mdl-scss const fs = require('fs'); const path = require('path'); @@ -10,10 +10,10 @@ const ncp = require('ncp').ncp; var basePath = process.cwd(); var source = path.resolve(basePath, 'node_modules/material-design-lite/src'); -var dest = path.resolve(basePath, 'src/scss-mdl'); +var dest = path.resolve(basePath, 'src/scss/mdl'); -fs.mkdirSync('src/scss-mdl'); +fs.mkdirSync('src/scss/mdl'); ncp(source, dest, {filter: function(fileName){ if(fileName.endsWith('snippets')){ @@ -29,4 +29,3 @@ ncp(source, dest, {filter: function(fileName){ } console.log('done!'); }); - diff --git a/src/app/tabs/tabs.component.html b/src/app/tabs/tabs.component.html index d79c0601b..cedd860ce 100644 --- a/src/app/tabs/tabs.component.html +++ b/src/app/tabs/tabs.component.html @@ -3,78 +3,108 @@

The Tabs

Tabs
- active index: - + active index: +
- - - - personStarks - - -
    -
  • Eddard
  • -
  • Catelyn
  • -
  • Robb
  • -
  • Sansa
  • -
  • Brandon
  • -
  • Arya
  • -
  • Rickon
  • -
-
-
- -
    -
  • Tywin
  • -
  • Cersei
  • -
  • Jamie
  • -
  • Tyrion
  • -
-
- -
    -
  • Viserys
  • -
  • Daenerys
  • -
-
-
+ Disable Targaryens + Disable Baratheon + + + + personStarks + + +
    +
  • Eddard
  • +
  • Catelyn
  • +
  • Robb
  • +
  • Sansa
  • +
  • Brandon
  • +
  • Arya
  • +
  • Rickon
  • +
+
+
+ +
    +
  • Tywin
  • +
  • Cersei
  • +
  • Jamie
  • +
  • Tyrion
  • +
+
+ +
    +
  • Viserys
  • +
  • Daenerys
  • +
+
+ + + personBaratheon + +
    +
  • Robert
  • +
  • Renly
  • +
  • Stanis
  • +
  • Joffrey
  • +
  • Myrcella
  • +
  • Tommen
  • +
+
+
   Disable Targaryens
+Disable Baratheon
 
-      
-				
-					personStarks
-				
-				
-				
    -
  • Eddard
  • -
  • Catelyn
  • -
  • Robb
  • -
  • Sansa
  • -
  • Brandon
  • -
  • Arya
  • -
  • Rickon
  • -
-
-
- -
    -
  • Tywin
  • -
  • Cersei
  • -
  • Jamie
  • -
  • Tyrion
  • -
-
- -
    -
  • Viserys
  • -
  • Daenerys
  • -
-
-
+ + + personStarks + + +
    +
  • Eddard
  • +
  • Catelyn
  • +
  • Robb
  • +
  • Sansa
  • +
  • Brandon
  • +
  • Arya
  • +
  • Rickon
  • +
+
+
+ + + + + + + + + personBaratheon + + + + ]]> -
\ No newline at end of file + diff --git a/src/app/tabs/tabs.component.ts b/src/app/tabs/tabs.component.ts index 4ad6a1638..02fe5b425 100644 --- a/src/app/tabs/tabs.component.ts +++ b/src/app/tabs/tabs.component.ts @@ -37,6 +37,7 @@ import { AbstractDemoComponent } from './../abstract-demo.component'; export class TabsDemo extends AbstractDemoComponent { public activeIndex = 0; + public disableTargaryens = true; constructor(router: Router, route: ActivatedRoute, titleService: Title) { super(router, route, titleService); diff --git a/src/components/tabs/mdl-tab-panel.component.ts b/src/components/tabs/mdl-tab-panel.component.ts index 30e3e8b19..b6bd40ce6 100644 --- a/src/components/tabs/mdl-tab-panel.component.ts +++ b/src/components/tabs/mdl-tab-panel.component.ts @@ -29,6 +29,7 @@ export class MdlTabPanelComponent { @ContentChild(MdlTabPanelTitleComponent) public titleComponent; @Input('mdl-tab-panel-title') public title; + @Input('disabled') public disabled; public isActive = false; } diff --git a/src/components/tabs/mdl-tabs.component.spec.ts b/src/components/tabs/mdl-tabs.component.spec.ts index 8c2766daf..ae0bd0e56 100644 --- a/src/components/tabs/mdl-tabs.component.spec.ts +++ b/src/components/tabs/mdl-tabs.component.spec.ts @@ -35,7 +35,7 @@ describe('Component: MdlTabs', () => { }); let fixture = TestBed.createComponent(MdlTestComponent); fixture.detectChanges(); - + let mdlTabsComponent: MdlTabsComponent = fixture.debugElement.query(By.directive(MdlTabsComponent)).componentInstance; @@ -104,6 +104,67 @@ describe('Component: MdlTabs', () => { expect(testElement.nativeElement.nodeName).toBe('DIV'); }); + + it('should recognize enabled/disabled tabs', () => { + TestBed.overrideComponent(MdlTestComponent, { set: { + template: ` + + + + + ` } + }); + + + let fixture = TestBed.createComponent(MdlTestComponent); + fixture.detectChanges(); + let testElement = fixture.nativeElement.querySelector('.mdl-tabs__tab.disabled'); + + expect(testElement.nodeName).toBe('A'); + }); + + + it('should not bepossible to to select a disabled tab', () => { + + TestBed.overrideComponent(MdlTestComponent, { set: { + template: ` + + + + + + + Test + + + + ` } + }); + let fixture = TestBed.createComponent(MdlTestComponent); + fixture.detectChanges(); + + let testComponent = fixture.componentInstance; + + let mdlTabsComponent: MdlTabsComponent = + fixture.debugElement.query(By.directive(MdlTabsComponent)).componentInstance; + + let aDebugElements = fixture.debugElement.queryAll(By.css('a.disabled')); + + aDebugElements[0].nativeElement.click(); + + fixture.detectChanges(); + + expect(mdlTabsComponent.selectedIndex).toBe(0); + + + let titleDebugElements = fixture.debugElement.queryAll(By.css('div.disabled')); + + titleDebugElements[0].nativeElement.click(); + + fixture.detectChanges(); + + expect(mdlTabsComponent.selectedIndex).toBe(0); + }); }); diff --git a/src/components/tabs/mdl-tabs.component.ts b/src/components/tabs/mdl-tabs.component.ts index 62f16066d..2d522786a 100644 --- a/src/components/tabs/mdl-tabs.component.ts +++ b/src/components/tabs/mdl-tabs.component.ts @@ -23,18 +23,18 @@ import { MdlTabPanelComponent } from './mdl-tab-panel.component'; `
-
- {{tab.title}} + [ngClass]="{'is-active': tab.isActive, 'disabled': tab.disabled}">{{tab.title}}
@@ -68,6 +68,10 @@ export class MdlTabsComponent implements AfterContentInit, OnChanges { } protected tabSelected(tab: MdlTabPanelComponent) { + if(tab.disabled){ + return; + } + let index = this.tabs.toArray().indexOf(tab); if (index != this.selectedIndex) { this.selectedIndex = index; diff --git a/src/scss/_color-definitions.scss b/src/scss/_color-definitions.scss new file mode 100644 index 000000000..f5a70afab --- /dev/null +++ b/src/scss/_color-definitions.scss @@ -0,0 +1 @@ +@import "mdl/color-definitions"; diff --git a/src/scss/_functions.scss b/src/scss/_functions.scss new file mode 100644 index 000000000..d9f74813e --- /dev/null +++ b/src/scss/_functions.scss @@ -0,0 +1 @@ +@import "mdl/functions"; diff --git a/src/scss/_mixins.scss b/src/scss/_mixins.scss new file mode 100644 index 000000000..912fb4530 --- /dev/null +++ b/src/scss/_mixins.scss @@ -0,0 +1 @@ +@import "mdl/mixins"; diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss new file mode 100644 index 000000000..8e48b5b91 --- /dev/null +++ b/src/scss/_variables.scss @@ -0,0 +1,3 @@ +@import "mdl/variables"; + +$tab-disabled-color: unquote("rgba(#{$color-black}, 0.26)") !default; diff --git a/src/scss/extensions/main.scss b/src/scss/extensions/main.scss new file mode 100644 index 000000000..724b95a85 --- /dev/null +++ b/src/scss/extensions/main.scss @@ -0,0 +1 @@ +@import "tabs/tabs"; diff --git a/src/scss/extensions/tabs/_tabs.scss b/src/scss/extensions/tabs/_tabs.scss new file mode 100644 index 000000000..a4a601fa9 --- /dev/null +++ b/src/scss/extensions/tabs/_tabs.scss @@ -0,0 +1,8 @@ +@import "../../variables"; + +.mdl-tabs__tab { + &.disabled { + cursor: not-allowed; + color: $tab-disabled-color; + } +} diff --git a/src/scss/material-design-lite-grid.scss b/src/scss/material-design-lite-grid.scss new file mode 100644 index 000000000..b2376696e --- /dev/null +++ b/src/scss/material-design-lite-grid.scss @@ -0,0 +1,5 @@ +@import "variables"; +@import "mixins"; + +@import "mdl/material-design-lite-grid"; +@import "extensions/main"; diff --git a/src/scss/material-design-lite.scss b/src/scss/material-design-lite.scss new file mode 100644 index 000000000..9848dd851 --- /dev/null +++ b/src/scss/material-design-lite.scss @@ -0,0 +1,5 @@ +@import "variables"; +@import "mixins"; + +@import "mdl/material-design-lite"; +@import "extensions/main"; diff --git a/src/scss-mdl/_color-definitions.scss b/src/scss/mdl/_color-definitions.scss similarity index 100% rename from src/scss-mdl/_color-definitions.scss rename to src/scss/mdl/_color-definitions.scss diff --git a/src/scss-mdl/_functions.scss b/src/scss/mdl/_functions.scss similarity index 100% rename from src/scss-mdl/_functions.scss rename to src/scss/mdl/_functions.scss diff --git a/src/scss-mdl/_mixins.scss b/src/scss/mdl/_mixins.scss similarity index 100% rename from src/scss-mdl/_mixins.scss rename to src/scss/mdl/_mixins.scss diff --git a/src/scss-mdl/_variables.scss b/src/scss/mdl/_variables.scss similarity index 99% rename from src/scss-mdl/_variables.scss rename to src/scss/mdl/_variables.scss index 78be5a4ea..6fcb26e34 100644 --- a/src/scss-mdl/_variables.scss +++ b/src/scss/mdl/_variables.scss @@ -210,6 +210,7 @@ $tab-text-color: unquote("rgba(#{$color-black}, 0.54)") !default; $tab-active-text-color: unquote("rgba(#{$color-black}, 0.87)") !default; $tab-border-color: unquote("rgb(#{$palette-grey-300})") !default; + /* ========== Checkboxes ========== */ $checkbox-color: unquote("rgb(#{$color-primary})") !default; diff --git a/src/scss-mdl/animation/_animation.scss b/src/scss/mdl/animation/_animation.scss similarity index 100% rename from src/scss-mdl/animation/_animation.scss rename to src/scss/mdl/animation/_animation.scss diff --git a/src/scss-mdl/badge/_badge.scss b/src/scss/mdl/badge/_badge.scss similarity index 100% rename from src/scss-mdl/badge/_badge.scss rename to src/scss/mdl/badge/_badge.scss diff --git a/src/scss-mdl/button/_button.scss b/src/scss/mdl/button/_button.scss similarity index 100% rename from src/scss-mdl/button/_button.scss rename to src/scss/mdl/button/_button.scss diff --git a/src/scss-mdl/card/_card.scss b/src/scss/mdl/card/_card.scss similarity index 100% rename from src/scss-mdl/card/_card.scss rename to src/scss/mdl/card/_card.scss diff --git a/src/scss-mdl/checkbox/_checkbox.scss b/src/scss/mdl/checkbox/_checkbox.scss similarity index 100% rename from src/scss-mdl/checkbox/_checkbox.scss rename to src/scss/mdl/checkbox/_checkbox.scss diff --git a/src/scss-mdl/chip/_chip.scss b/src/scss/mdl/chip/_chip.scss similarity index 100% rename from src/scss-mdl/chip/_chip.scss rename to src/scss/mdl/chip/_chip.scss diff --git a/src/scss-mdl/data-table/_data-table.scss b/src/scss/mdl/data-table/_data-table.scss similarity index 100% rename from src/scss-mdl/data-table/_data-table.scss rename to src/scss/mdl/data-table/_data-table.scss diff --git a/src/scss-mdl/dialog/_dialog.scss b/src/scss/mdl/dialog/_dialog.scss similarity index 100% rename from src/scss-mdl/dialog/_dialog.scss rename to src/scss/mdl/dialog/_dialog.scss diff --git a/src/scss-mdl/footer/_mega_footer.scss b/src/scss/mdl/footer/_mega_footer.scss similarity index 100% rename from src/scss-mdl/footer/_mega_footer.scss rename to src/scss/mdl/footer/_mega_footer.scss diff --git a/src/scss-mdl/footer/_mini_footer.scss b/src/scss/mdl/footer/_mini_footer.scss similarity index 100% rename from src/scss-mdl/footer/_mini_footer.scss rename to src/scss/mdl/footer/_mini_footer.scss diff --git a/src/scss-mdl/grid/_grid.scss b/src/scss/mdl/grid/_grid.scss similarity index 100% rename from src/scss-mdl/grid/_grid.scss rename to src/scss/mdl/grid/_grid.scss diff --git a/src/scss-mdl/icon-toggle/_icon-toggle.scss b/src/scss/mdl/icon-toggle/_icon-toggle.scss similarity index 100% rename from src/scss-mdl/icon-toggle/_icon-toggle.scss rename to src/scss/mdl/icon-toggle/_icon-toggle.scss diff --git a/src/scss-mdl/layout/_layout.scss b/src/scss/mdl/layout/_layout.scss similarity index 100% rename from src/scss-mdl/layout/_layout.scss rename to src/scss/mdl/layout/_layout.scss diff --git a/src/scss-mdl/list/_list.scss b/src/scss/mdl/list/_list.scss similarity index 100% rename from src/scss-mdl/list/_list.scss rename to src/scss/mdl/list/_list.scss diff --git a/src/scss-mdl/material-design-lite-grid.scss b/src/scss/mdl/material-design-lite-grid.scss similarity index 100% rename from src/scss-mdl/material-design-lite-grid.scss rename to src/scss/mdl/material-design-lite-grid.scss diff --git a/src/scss-mdl/material-design-lite.scss b/src/scss/mdl/material-design-lite.scss similarity index 100% rename from src/scss-mdl/material-design-lite.scss rename to src/scss/mdl/material-design-lite.scss diff --git a/src/scss-mdl/menu/_menu.scss b/src/scss/mdl/menu/_menu.scss similarity index 100% rename from src/scss-mdl/menu/_menu.scss rename to src/scss/mdl/menu/_menu.scss diff --git a/src/scss-mdl/palette/_palette.scss b/src/scss/mdl/palette/_palette.scss similarity index 100% rename from src/scss-mdl/palette/_palette.scss rename to src/scss/mdl/palette/_palette.scss diff --git a/src/scss-mdl/progress/_progress.scss b/src/scss/mdl/progress/_progress.scss similarity index 100% rename from src/scss-mdl/progress/_progress.scss rename to src/scss/mdl/progress/_progress.scss diff --git a/src/scss-mdl/radio/_radio.scss b/src/scss/mdl/radio/_radio.scss similarity index 100% rename from src/scss-mdl/radio/_radio.scss rename to src/scss/mdl/radio/_radio.scss diff --git a/src/scss-mdl/resets/_h5bp.scss b/src/scss/mdl/resets/_h5bp.scss similarity index 100% rename from src/scss-mdl/resets/_h5bp.scss rename to src/scss/mdl/resets/_h5bp.scss diff --git a/src/scss-mdl/resets/_mobile.scss b/src/scss/mdl/resets/_mobile.scss similarity index 100% rename from src/scss-mdl/resets/_mobile.scss rename to src/scss/mdl/resets/_mobile.scss diff --git a/src/scss-mdl/resets/_resets.scss b/src/scss/mdl/resets/_resets.scss similarity index 100% rename from src/scss-mdl/resets/_resets.scss rename to src/scss/mdl/resets/_resets.scss diff --git a/src/scss-mdl/ripple/_ripple.scss b/src/scss/mdl/ripple/_ripple.scss similarity index 100% rename from src/scss-mdl/ripple/_ripple.scss rename to src/scss/mdl/ripple/_ripple.scss diff --git a/src/scss-mdl/shadow/_shadow.scss b/src/scss/mdl/shadow/_shadow.scss similarity index 100% rename from src/scss-mdl/shadow/_shadow.scss rename to src/scss/mdl/shadow/_shadow.scss diff --git a/src/scss-mdl/slider/_slider.scss b/src/scss/mdl/slider/_slider.scss similarity index 100% rename from src/scss-mdl/slider/_slider.scss rename to src/scss/mdl/slider/_slider.scss diff --git a/src/scss-mdl/snackbar/_snackbar.scss b/src/scss/mdl/snackbar/_snackbar.scss similarity index 100% rename from src/scss-mdl/snackbar/_snackbar.scss rename to src/scss/mdl/snackbar/_snackbar.scss diff --git a/src/scss-mdl/spinner/_spinner.scss b/src/scss/mdl/spinner/_spinner.scss similarity index 100% rename from src/scss-mdl/spinner/_spinner.scss rename to src/scss/mdl/spinner/_spinner.scss diff --git a/src/scss-mdl/styleguide.scss b/src/scss/mdl/styleguide.scss similarity index 100% rename from src/scss-mdl/styleguide.scss rename to src/scss/mdl/styleguide.scss diff --git a/src/scss-mdl/switch/_switch.scss b/src/scss/mdl/switch/_switch.scss similarity index 100% rename from src/scss-mdl/switch/_switch.scss rename to src/scss/mdl/switch/_switch.scss diff --git a/src/scss-mdl/tabs/_tabs.scss b/src/scss/mdl/tabs/_tabs.scss similarity index 100% rename from src/scss-mdl/tabs/_tabs.scss rename to src/scss/mdl/tabs/_tabs.scss diff --git a/src/scss-mdl/template.scss b/src/scss/mdl/template.scss similarity index 100% rename from src/scss-mdl/template.scss rename to src/scss/mdl/template.scss diff --git a/src/scss-mdl/textfield/_textfield.scss b/src/scss/mdl/textfield/_textfield.scss similarity index 100% rename from src/scss-mdl/textfield/_textfield.scss rename to src/scss/mdl/textfield/_textfield.scss diff --git a/src/scss-mdl/tooltip/_tooltip.scss b/src/scss/mdl/tooltip/_tooltip.scss similarity index 100% rename from src/scss-mdl/tooltip/_tooltip.scss rename to src/scss/mdl/tooltip/_tooltip.scss diff --git a/src/scss-mdl/typography/_typography.scss b/src/scss/mdl/typography/_typography.scss similarity index 100% rename from src/scss-mdl/typography/_typography.scss rename to src/scss/mdl/typography/_typography.scss